COCOS学习笔记之定时器
2015-11-21 15:25
519 查看
定时器
一开始我以为cocos中的定时器与单片机中的定时器差不多,即它会以一定的时间间隔循环地触发某个特定的函数。然而,后来发现cocos中的定时器更加强大,它还有一个定时器可以规定系统在多少时间内触发一个函数,但该函数只运行一次。
继承关系
原理介绍
Cocos2d-x调度器为游戏提供定时事件和定时调用服务。所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处:每当Node不再可见或已从场景中移除时,调度器会停止。
Cocos2d-x暂停时,调度器也会停止。当Cocos2d-x重新开始时,调度器也会自动继续启动。
Cocos2d-x封装了一个供各种不同平台使用的调度器,使用此调度器你不用关心和跟踪你所设定的定时对象的销毁和停止,以及崩溃的风险。
在cocos中一共有三种定时器:schedule,scheduleUpdate,scheduleOnce
schedule()
功能:每隔某自定义时间执行某自定义函数标准格式:this->schedule(schedule_selector(fun),t);//fun为某自定义函数 t为时间
停止方法:停止方法:this->unschedule(schedule_selector(fun));
EG:
首先在HelloWorld.h中声明所要执行的函数:
void Test(float t);
然后在HelloWorld.cpp文件中实现:
void HelloWorld::Test(float t) { log("test"); }
然后执行
this->schedule(schedule_selector(HelloWorld::Test),1.0f); //表示每隔1.0f执行一次,省略参数则表示每帧都要执行
运行之后,test每隔1.0f才会被打印一次。
ScheduleUpdate()
功能:程序会每帧都会自动执行一次默认的Update函数。(注:可以理解为schedule的一个特例,固定时间,固定函数)标准格式:this->scheduleUpdate();
停止方法:this->unscheduleUpdate();
EG:
首先在HelloWorld.h中声明所要执行的函数:
void Update(float t);
然后在HelloWorld.cpp文件中实现:
void HelloWorld::Update(float t) { log("test"); }
然后执行
this->scheduleUpdate;
运行之后,test就会源源不断的打印出来
scheduleOnce()
功能:某特定时间后执行某特定函数标准格式:this->scheduleOnce(schedule_selector(fun),t);
EG:
首先在HelloWorld.h中声明所要执行的函数:
void Test(float t);
然后在HelloWorld.cpp文件中实现:
void HelloWorld::Test(float t) { log("test"); }
然后执行
this->scheduleOnce(schedule_selector(HelloWorld::Test),1.0f);
运行之后,test会在1.0f后打印出来、
停止所有计时器
this->unscheduleAllSelectors();相关文章推荐
- 实习小白::(转) Cocos2d-x 3.0 开发(十六)cocos2dx-3.0beta版建立新项目并加载CocoStudio导出文件
- 实习小白::(转) Cocos2d-x 3.0 开发(十五)使用UILayout布局,制作对话界面
- 实习小白::(转) Cocos2d-x 3.0 开发(十四)使用UIScrollView 实现大小不同物品拖动展示
- 实习小白::(转) Cocos2d-x 3.0开发(十三)使用CocoStudio编辑帧事件并关联到程序
- 实习小白::(转) Cocos2d-x 3.0 开发(十二)在CocoStudio中使用粒子挂载与曲线动画
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
- 实习小白::(转) Cocos2d-x 3.0 开发(十)使用CocoStudio场景编辑器关联组件
- 实习小白::(转) Cocos2d-x 3.0 开发(九)使用Physicals代替Box2D和chipmunk
- 实习小白::(转) Cocos2d-x 3.0 开发(八)骨骼动画的动态换肤
- 实习小白::(转) Cocos2d-x 3.0 开发(四)使用CocoStudio创建UI并载入到程序中
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
- 实习小白::(转) Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件
- 实习小白::(转)Cocos2d-x 3.0开发(六)使用cocoStudio创建一个骨骼动画