/****************************************************************** * * 主題入口樣式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(); }, } );