您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-调度器(scheduler)

2016-10-19 20:57 288 查看

继承关系



基础原理

调度器为游戏提供定时时间和定时调用服务,所有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-x 调度器