Files
2026-05-23 22:10:14 +08:00

184 lines
5.2 KiB
JavaScript

/******************************************************************
*
* 主題入口樣式2
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const NxSpine = require( "nx.fx.spine" );
const TDefine = require( "trace.define" );
const TTT = TDefine.TraceType;
cc.Class( {
extends: BridgeWindow,
properties: {
spBG: { default: null, type: NxSpine },
imgLogo: { default: null, type: cc.Node },
nodClose: { default: null, type: cc.Node },
nodDate: { default: null, type: cc.Node },
lstEntries: { default: [], type: cc.Node },
},
// 载入
onLoad: function() {
nx.gui.setActive( this.imgLogo, "", false );
nx.gui.setActive( this.nodClose, "", false );
nx.gui.setActive( this.nodDate, "", false );
nx.gui.setActive( this.spBG, "", false );
this.lstEntries.forEach( _entry => {
nx.gui.setActive( this.nodDate, "", false );
} );
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
// 信息构建
this.buildData( _params );
// 背景动画
this.doStart();
// 埋点
if( nx.mTrace ) {
nx.mTrace.trace( TTT.actThemeOpened, _params.theme_id );
}
},
// 信息构建
buildData: function( _params ) {
// 无效参数
if( nx.dt.objEmpty( _params ) ||
!nx.dt.numPositive( _params.theme_id, false ) ||
nx.dt.arrEmpty( _params.theme_holiday_list ) ) {
this.delayClose();
return;
}
this.theme = _params;
// 活动日期
let secs = this.theme.end_time - client.socket.getTime();
if( nx.dt.numPositive( secs, false ) ) {
nx.gui.setColor( this.nodDate, "txt", cc.color().fromHEX( "#05F515" ) );
nx.gui.setCdTxt( this.nodDate, "txt", secs );
} else {
nx.gui.setString( this.nodDate, "txt", nx.text.getKey( "已过期" ) );
nx.gui.setColor( this.nodDate, "txt", cc.Color.RED );
}
// 重建入口
this.buildEntries( _params.theme_holiday_list );
},
// 背景动画
doStart: function() {
let self = this;
let show = function() {
nx.gui.setActive( self.imgLogo, "", true );
nx.gui.setActive( self.nodClose, "", true );
nx.gui.setActive( self.nodDate, "", true );
};
let doEvent = function( _key ) {
nx.debug( `%doStart:${ _key }` );
let node = null;
switch( _key ) {
case "zi_5": { node = self.lstEntries[4]; } break;
case "zi_4": { node = self.lstEntries[3]; } break;
case "zi_3": { node = self.lstEntries[2]; } break;
case "zi_2": { node = self.lstEntries[1]; } break;
case "zi_6": { node = self.lstEntries[5]; } break;
case "zi_1": { node = self.lstEntries[0]; } break;
case "zi_7": { node = self.lstEntries[6]; } break;
case "title": { node = self.imgLogo; } break;
case "time": { node = self.nodDate; } break;
case "close": { node = self.nodClose; } break;
default: break;
}
if( !node ) {
return;
}
// 淡进显示
node.active = true;
nx.tween.fadeIn( node, "", 0.5 );
};
nx.gui.setActive( this.spBG, "", true );
this.spBG.action( "action", false, ( _event ) => {
// 展示事件
doEvent( _event );
// 完毕
if( _event == "complete" ) {
this.spBG.action( "action2", true );
}
} );
},
// -------------------------------------------------------
// 入口相关
// -------------------------------------------------------
// 重建入口
buildEntries: function( _acts ) {
// 活动重建
for( let i = 0; i < this.lstEntries.length; ++i ) {
let info = _acts[ i ];
let node = this.lstEntries[ i ];
if( nx.dt.objEmpty( info ) ) {
node.active = false;
node.ainfo = null;
continue;
}
node.ainfo = info;
node.active = false;
nx.gui.setString( node, "txt", nx.text.getKey( info.name ) );
let tip = nx.gui.getComponent( node, "tip", "nx.vb.visible" );
if( tip ) {
tip.setTarget( nx.mTip, `acts.${ this.theme.theme_id }.${ info.cate }.${ info.camp_id }` );
}
}
},
// 点击入口
onTouchEntry: function( _item ) {
let entry = _item ? _item.parent.ainfo : null;
if( nx.dt.objEmpty( entry ) ) {
return;
}
let time = new Date();
let showtime = entry.end_time - ( time / 1000 );
if( showtime < 0 ){
nx.tbox( "StepUpDone" );
return;
}
nx.debug( `$ThemeEntry:活动点击!${ entry.name }` );
nx.bridge.jumper.jump2Window( entry.source, {
theme: this.theme,
entry: entry } );
this.close();
},
} );