官方提供了一个延时方法:
$.Schedule(time, callback)
其中,time
表示延时的时长,以秒为单位,callback
是回调函数,表示在N秒后调用这个函数。
我个人感觉打这个$
符号很别扭,所以自己封装了两个方法(TypeScript代码):
/**
* 定义一个计时器,回调函数返回true时停止
* @param t 间隔时长
* @param callback 回调函数
*/
function Timer(t:number, callback:()=>(boolean|void)){
$.Schedule(t, ()=>{
__timer(t, callback);
});
}
/** 计时器循环函数 */
function __timer(t:number, callback:()=>(boolean|void)){
let re = callback();
if(!re){
$.Schedule(t, ()=>{
__timer(t, callback);
});
}
}
/**
* 延迟调用函数
* @param t 时间
* @param callback 回调函数
*/
function TimeOut(t:number, callback:()=>void){
$.Schedule(t, ()=>{
callback();
});
}
使用方法:
// 1.5秒后调用
TimeOut(1, ()=>{
// 1.5秒后执行此处
});
// 每0.2秒调用
Timer(0.2, ()=>{
// 每0.2秒执行此处
if( ... ){
// 满足某条件时,返回true,表示此计时器不再执行
return true;
}
});