cocos2dx 定时调度器的用法
2015-09-22 10:49
477 查看
Cocos2dx 中常用的调度器有以下3种
1, 默认调度器(schedulerUpdate)
该调度器是使用Node刷新事件update方法, 该方法在每帧绘制之前被调用。
Cocos2d-x中Node默认是没有启用update事件的,因此你需要重载update方法来执行自己的逻辑代码。
通过执行schedulerUpdate()调度器每帧执行 update方法,如果需要停止这个调度器,可以使用
使用方法:
控制台输出如下信息:
2, 自定义调度器(scheduler)
该调度器可以实现以一定时间为间隔连续调用某个函数。
由于引擎的调度机制,自定义时间间隔必须大于两帧的间隔,否则两帧内的多次调用会被合并成一次调用。所以自定义时间间隔应在0.1秒以上。
通过scheduler(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)函数调用。
第一个参数selector即为你要添加的事件函数
第二个参数interval为事件触发时间间隔
第三个参数repeat为触发一次事件后还会触发的次数,默认值为kRepeatForever,表示无限触发次数
第四个参数delay表示第一次触发之前的延时
同样,取消该调度器可以用
使用方法
在控制台你会看到每隔1秒输出以下信息
[/code]
3, 单次调度器(schedulerOnce)
该调度器只会触发一次,
第四个参数delay表示第一次触发之前的延时
用
使用方法:
1, 默认调度器(schedulerUpdate)
该调度器是使用Node刷新事件update方法, 该方法在每帧绘制之前被调用。
Cocos2d-x中Node默认是没有启用update事件的,因此你需要重载update方法来执行自己的逻辑代码。
通过执行schedulerUpdate()调度器每帧执行 update方法,如果需要停止这个调度器,可以使用
unschedulerUpdate()方法。
使用方法:
HelloWorldScene.h void update(float dt) override
HelloWorldScene.cpp bool HelloWorld::init() { ... scheduleUpdate(); return true; } void HelloWorld::update(float dt) { static int i = 0; log("update%d", i); }
控制台输出如下信息:
update1 update2 update3 update4
2, 自定义调度器(scheduler)
该调度器可以实现以一定时间为间隔连续调用某个函数。
由于引擎的调度机制,自定义时间间隔必须大于两帧的间隔,否则两帧内的多次调用会被合并成一次调用。所以自定义时间间隔应在0.1秒以上。
通过scheduler(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)函数调用。
第一个参数selector即为你要添加的事件函数
第二个参数interval为事件触发时间间隔
第三个参数repeat为触发一次事件后还会触发的次数,默认值为kRepeatForever,表示无限触发次数
第四个参数delay表示第一次触发之前的延时
同样,取消该调度器可以用
unschedule(SEL_SCHEDULE selector, float delay)。
使用方法
HelloWorldScene.h void updateCustom(float dt);
HelloWorldScene.cpp bool HelloWorld::init() { ... schedule(schedule_selector(HelloWorld::updateCustom), 1.0f, kRepeatForever, 0); return true; } void HelloWorld::updateCustom(float dt) { static int i = 0; log("Custom%d", i); }
在控制台你会看到每隔1秒输出以下信息
Custom1 Custom2 Custom3 Custom4
[/code]
3, 单次调度器(schedulerOnce)
该调度器只会触发一次,
scheduleOnce(SEL_SCHEDULE selector, float delay);第一个参数selector即为你要添加的事件函数
第四个参数delay表示第一次触发之前的延时
用
unschedule(SEL_SCHEDULE selector, float delay)来取消该触发器。
使用方法:
HelloWorldScene.h void updateOnce(float dt);
HelloWorldScene.cpp bool HelloWorld::init() { ... scheduleOnce(schedule_selector(HelloWorld::updateOnce), 0.1f); return true; } void HelloWorld::updateOnce(float dt) { log("Once"); }
相关文章推荐
- cocos2dx从其它Activity返回cocos界面出现黑块
- cocos2d0基础知识三个音符
- cocos动画
- Quick-cocos2d-x3.3 Study (二十)--------- 音乐音效
- Quick-cocos2d-x3.3 Study (十六)--------- 碰撞检测,事件监听,设置掩码
- cocos2d-x在Android.mk中自动添加Cpp
- [寒江孤叶丶的Cocos2d-x之旅_39]Cocos骨骼动画功能解密
- cocos2d-x 3.2 2048——第六部分(最后一章)
- Cocos3.8创建新工程,添加库工程
- cocos2dx 2.2 之触摸事件
- cocos2d-x3.0 windows 环境配置
- [cocos2dx注意事项009]试用quick-cocos2dx-2.2.4
- Cocos Studio study ---------- 使用CocosStudio1.6制作 界面,并结合代码制作游戏
- cocos2d-x 把资源文件保存到本地手机上,调用JNI接口,ANdroid的
- Cocos2d-x3.0 DrawNode吸取
- Cocos2d-x 2.2.3 Android配置
- cocos2d-js 自定义事件监听派发
- Cocos2d-x从入门到精通第18节课《 Cocos Studio编辑序列帧及序列帧的使用 》
- Cocos工作两周感受
- 决定放弃 Cocos Studio