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;
}