计时器
使用计时器可以快速简单的实现定时回调
,重复执行
,延迟执行
,间隔执行
等一系列和计时相关的功能。
获取计时器管理器
var timerManager = App.Make<ITimerManager>();
创建一个定时器
您可以通过计时器管理器的Make()
方法来创建计时器。
Make()
函数实质上在内部构建了一个匿名的定时器队列,而队列中只有一个定时器。
var timer = timerManager.Make(()=>
{
// 计时器需要执行的任务
});
延迟执行
延迟指定秒数后执行
您可以使用Delay()
来延迟指定的秒数后执行定时器的任务。
timer.Delay(3.25f);
延迟指定帧数执行
您可以使用DelayFrame()
来延迟指定的帧数后执行定时器的任务。
timer.DelayFrame(3);
循环执行
在指定时间内循环执行
您可以使用Loop()
在指定的时长内,每帧都执行定时器任务。
timer.Loop(3.25f);
循环执行,直到函数返回false
您可以使用Loop()
来定义一个循环执行,每帧都执行,直到函数返回false。
timer.Loop(()=>
{
return false;
});
循环执行指定帧数
您可以使用LoopFrame()
来定义一个循环执行,每帧都执行,直到到达指定帧数后停止。
timer.LoopFrame(10);
间隔执行
如果您要取消间隔执行,那么请使用句柄来取消任务。
每隔指定秒数执行一次
每次间隔指定秒数后执行一次定时器任务。通过第二个参数可以指定最大执行次数。
timer.Interval(3.25f);
// timer.Interval(3.25f, 3);
每隔指定帧数执行一次
每次间隔指定帧数后执行一次定时器任务。通过第二个参数可以指定最大执行次数。
timer.IntervalFrame(10);
// timer.IntervalFrame(10, 3);
定时器队列
定时器队列是将多个定时器串联起来依次执行。只有前一个定时器完成任务后后一个定时器才会被执行。
您可以传入一个优先级
来决定定时器队列在全局中执行的顺序。
timerManager.MakeQueue(()=>
{
timerManager.Make(()=>
{
//定时器1的任务
}).Delay(3);
timerManager.Make(()=>
{
//定时器2的任务
}).Loop(5);
},100);
取消执行
撤销定时器(队列)的执行。撤销后队列状态可不恢复。
var handler = timerManager.MakeQueue(()=>
{
// todo
});
timerManager.Cancel(handler);
暂停执行
暂时停止定时器(队列)的执行。
var handler = timerManager.MakeQueue(()=>
{
// todo
});
timerManager.Pause(handler);
恢复执行
恢复定时器(队列)的执行。
var handler = timerManager.MakeQueue(()=>
{
// todo
});
timerManager.Play(handler);