1. 程式人生 > >LayaBox中timer.once執行次數不正確問題的解決

LayaBox中timer.once執行次數不正確問題的解決

/**

* 定時執行一次。

* @param   delay   延遲時間(單位為毫秒)。

* @param   caller  執行域(this)。

* @param   method  定時器回撥函式。

* @param   args    回撥引數。

* @param   coverBefore 是否覆蓋之前的延遲執行,預設為 true

*/

once(delay: number, caller: any, method: Function, args?: Array<any>, coverBefore?: boolean): void;

如果不設定最後一個引數,則會自動覆蓋之前的延遲執行。因此需要手動設定為false;

應用的位置:

/**

* 在舞臺中央按間隔時間顯示多個字串

* @param msgs 字串陣列

* @param fontSize 字型

* @param color 顏色

* @param delTime 延時

*/

public showCenterFloatMsgsByDelTime(msgs:Array<string>,fontSize:number = 28,color:string = "#ff0000",delTime:number):void

{

             //計時器

             let timer:number = 0;

             for(let i = 0; i < msgs.length; ++i)

             {

                           timer = this._showCenterFloatMsgsByDelTime(msgs[i],fontSize,color,delTime,timer);

             }

}

/*在舞臺中央按間隔時間顯示多個字串的私有方法*/

private _showCenterFloatMsgsByDelTime(msg:string,fontSize:number = 28,color:string = "#ff0000",delTime:number,timer:number):number

{

           //延遲呼叫在舞臺中央顯示一行文字

           Laya.timer.once(timer,this,this.showCenterFloatMsg,[msg,fontSize,color],false);

           return timer + delTime;

}