Cocos2d-调度器(scheduler)

继承关系

Cocos2d-调度器(scheduler)_第1张图片

基础原理

调度器为游戏提供定时时间和定时调用服务,所有Node对象都知道如何调度和取消调度时间,使用调度器有以下几个好处:
1、每当Node不再可见或已从场景中移除时,调度器会停止。
2、Cocos2d-x暂停时,调度器也会停止;Cocos2d-x重新开始时,调度器也会自动继续启动。
3、Cocos2d-x封装了一个供各种平台使用的调度器,因此使用此调度器不用关心所设定的定时对象的销毁和停止,以及崩溃的风险。

基础用法

游戏中经常会随时间的变化做一些逻辑的判断,引入调度器就是为了更好的处理动态事件,常用的有三种调度器:
1、默认调度器:schedulerUpdate()
2、自定义调度器:schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
3、单次调度器:scheduleOnce(SEL_SCHEDULE selector, float delay)

默认调度器:schedulerUpdate()

默认调度器使用Node的刷新事件update方法,该方法在每帧绘制之前都会被调用一次。由于每帧之间的时间间隔较短,所以每帧刷新一次已足够完成大部分游戏过程中需要的逻辑判断。

自定义调度器:schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)

在游戏开发中,某些情况下可能不需要频繁的进行逻辑检测,这样可以提高游戏性能。Cocos2d-x提供了自定义调度器,可以实现以一定的时间间隔连续调用某个函数。
由于引擎的调度机制,自定义时间间隔必须大于两帧的间隔,否则两帧内的多次调用会被合并成一次调用,所以自定义时间间隔应在0.1秒以上。
调度函数的4个参数为:
1、selector为要添加的事件函数。
2、interval为事件触发时间间隔。
3、repeat为触发一次事件后还会触发的次数,默认值为kRepeatForever,表示无限触发次数。
4、delay表示第一次触发之前的延时。
取消调度器可以用unschedule(SEL_SCHEDULE selector, float delay)。

单次调度器:scheduleOnce(SEL_SCHEDULE selector, float delay)

游戏中如果只想进行一次逻辑检测,可以使用单次调度器,该调度器只会触发一次,用unschedule(SEL_SCHEDULE selector, float delay)来取消触发器。

你可能感兴趣的:(Cocos2d__学习之路)