【Cocos】Cocos2d-x 3.x基础学习: 调度器、定时器更新(schedule/update)

大部分游戏中定时器是不可或缺的,因为即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面、时间、进度、敌人的指令等等。

Cocos2d-x为我们提供了定时器schedule相关的操作。其操作函数的定义在CCNode中,所以基本上大多数的引擎类都可以设置定时器,如CCLayer、CCSprite、CCMenu等。

定时器更新的方式分为三类:
(1)默认定时器 :scheduleUpdate();
(2)自定义定时器:schedule();
(3)一次性定时器:scheduleOnce();

定时器schedule、update

scheduleUpdate

默认定时器:scheduleUpdate()。

该定时器默认刷新次数与屏幕刷新频率有关。如频率为60帧每秒,那么scheduleUpdate每秒执行60次刷新。

与scheduleUpdate其对应的刷新函数体为update(),即每一帧会执行一次update()函数。

相关操作如下:

void scheduleUpdate();//开启默认定时器。刷新间隔为一帧。

void scheduleUpdateWithPriority(int priority); //给予优先级priority。priority越小,优先级越高

virtual void update(float delta); //update为scheduleUpdate定时器的刷新函数体.

schedule

自定义定时器:schedule()。

该定时器可以自定义指定的刷新函数体、刷新函数体的次数、刷新频率、以及开始刷新的时间。

函数体不一定为update(),可以自己定义。

相关操作如下:

//设置自定义定时器。默认刷新间隔为一帧。其有多个重载,相关参数意义如下

 interval : 每隔interval秒,执行一次。

 repeat : 重复次数。

 delay : 延迟时间,即创建定时器delay秒后开始执行刷新。

schedule( schedule_selector(HelloWorld::myUpdate), 1.0/60.0 );

void schedule(SEL_SCHEDULE selector); //默认刷新间隔为一帧

void schedule(SEL_SCHEDULE selector, float interval); //自定义刷新间隔,单位:秒

void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay);

scheduleOnce

一次性定时器:scheduleOnce()。

该定时器在等待delay秒延迟时间后,只执行一次刷新函数体,之后就不再刷新。

相关操作如下:

只执行一次,delay秒后执行

scheduleOnce( schedule_selector(HelloWorld::myUpdate), 5.0 );

void scheduleOnce(SEL_SCHEDULE selector, float delay);

定时器的取消、暂停、恢复。

相关操作如下:

this->unscheduleUpdate();

sprite->unscheduleAllSelectors();

void unscheduleUpdate(void); //取消默认定时器

void unschedule(SEL_SCHEDULE selector); //取消自定义函数的定时器

void unscheduleAllSelectors(void); //取消所有定时器

void pauseSchedulerAndActions(void); //暂停所有定时器和动作

void resumeSchedulerAndActions(void); //恢复所有定时器和动作

分析与总结
scheduleUpdate()和schedule(schedule_selector)的效果一样,只是schedule可以自定义刷新函数体,不一定是update()。而scheduleUpdate()的刷新函数体只能为update()。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值