计时器

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

获取计时器管理器

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