184 lines
5.2 KiB
JavaScript
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();
|
|
},
|
|
|
|
} );
|