• 计时器
    • 获取计时器管理器
    • 创建一个定时器
    • 延迟执行
      • 延迟指定秒数后执行
      • 延迟指定帧数执行
    • 循环执行
      • 在指定时间内循环执行
      • 循环执行,直到函数返回false
      • 循环执行指定帧数
    • 间隔执行
      • 每隔指定秒数执行一次
      • 每隔指定帧数执行一次
    • 定时器队列
    • 取消执行
    • 暂停执行
    • 恢复执行

    计时器

    使用计时器可以快速简单的实现定时回调,重复执行,延迟执行,间隔执行等一系列和计时相关的功能。

    获取计时器管理器

    1. var timerManager = App.Make<ITimerManager>();

    创建一个定时器

    您可以通过计时器管理器的Make()方法来创建计时器。

    Make()函数实质上在内部构建了一个匿名的定时器队列,而队列中只有一个定时器。

    1. var timer = timerManager.Make(()=>
    2. {
    3. // 计时器需要执行的任务
    4. });

    延迟执行

    延迟指定秒数后执行

    您可以使用Delay()来延迟指定的秒数后执行定时器的任务。

    1. timer.Delay(3.25f);

    延迟指定帧数执行

    您可以使用DelayFrame()来延迟指定的帧数后执行定时器的任务。

    1. timer.DelayFrame(3);

    循环执行

    在指定时间内循环执行

    您可以使用Loop()在指定的时长内,每帧都执行定时器任务。

    1. timer.Loop(3.25f);

    循环执行,直到函数返回false

    您可以使用Loop()来定义一个循环执行,每帧都执行,直到函数返回false。

    1. timer.Loop(()=>
    2. {
    3. return false;
    4. });

    循环执行指定帧数

    您可以使用LoopFrame()来定义一个循环执行,每帧都执行,直到到达指定帧数后停止。

    1. timer.LoopFrame(10);

    间隔执行

    如果您要取消间隔执行,那么请使用句柄来取消任务。

    每隔指定秒数执行一次

    每次间隔指定秒数后执行一次定时器任务。通过第二个参数可以指定最大执行次数。

    1. timer.Interval(3.25f);
    2. // timer.Interval(3.25f, 3);

    每隔指定帧数执行一次

    每次间隔指定帧数后执行一次定时器任务。通过第二个参数可以指定最大执行次数。

    1. timer.IntervalFrame(10);
    2. // timer.IntervalFrame(10, 3);

    定时器队列

    定时器队列是将多个定时器串联起来依次执行。只有前一个定时器完成任务后后一个定时器才会被执行。

    您可以传入一个优先级来决定定时器队列在全局中执行的顺序。

    1. timerManager.MakeQueue(()=>
    2. {
    3. timerManager.Make(()=>
    4. {
    5. //定时器1的任务
    6. }).Delay(3);
    7. timerManager.Make(()=>
    8. {
    9. //定时器2的任务
    10. }).Loop(5);
    11. },100);

    取消执行

    撤销定时器(队列)的执行。撤销后队列状态可不恢复。

    1. var handler = timerManager.MakeQueue(()=>
    2. {
    3. // todo
    4. });
    5. timerManager.Cancel(handler);

    暂停执行

    暂时停止定时器(队列)的执行。

    1. var handler = timerManager.MakeQueue(()=>
    2. {
    3. // todo
    4. });
    5. timerManager.Pause(handler);

    恢复执行

    恢复定时器(队列)的执行。

    1. var handler = timerManager.MakeQueue(()=>
    2. {
    3. // todo
    4. });
    5. timerManager.Play(handler);