cocos2d-x定时器机制(更新完毕)
来源:互联网 发布:微店和淘宝店发展趋势 编辑:程序博客网 时间:2024/05/21 10:33
http://blog.csdn.net/baoming_wang
问题1:定时器回调函数,添加到cocos2d-x框架哪里去了。
问题2:定时器回调函数是如何被cocos2d-x回调用起来的
问题3:cocos2d-x框架式如何管理定时器的。
定时器的应用基础cocos2d-x
Cocos2d-x提供两种定时器
1)update定时器,每帧被调用,使用scheduleUpdate方法启用。
2)schedule定时器,可设置时间间隔来触发,使用schedule方法启用。
框架与应用界面接口如下:
voidscheduleUpdate(void);
voidunscheduleUpdate(void);
voidschedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, floatdelay);
voidschedule(SEL_SCHEDULE selector, float interval);
voidscheduleOnce(SEL_SCHEDULE selector, float delay);
voidschedule(SEL_SCHEDULE selector);
voidunschedule(SEL_SCHEDULE selector);
voidunscheduleAllSelectors(void);
问题1:定时器回调函数,添加到cocos2d-x框架哪里去了?
1) CCNode类注入了调度器对象;
2) 通过schedule()函数,上层应用对象及对象的回调函数入口地址,被添加到调度器CCScheduler中。
3) 调度器为每一个定时器设置CCTimer对象,并保存定时器类目标、回调函数、触发周期,重复次数;在把对应信息保存到m_pHashForTimers链表中。以便后续调度。
代码如下:
问题2:定时器回调函数是如何被调用起来的
顺序如下:
1)AppDelegate对象run函数,按照帧频率调用voidCCDisplayLinkDirector::mainLoop(void)
2)mainLoop函数调用,void CCDirector::drawScene(void)
3)调度器的update函数发起如下调度
同时,如果在调度过程中,有删除定时器操作时,在调度完毕以后再删除。
删掉定时器,只做标记。结论1:普通定时器调用顺序:1、系统的事件驱动游戏主循环;2、游戏主循环调用CCScheduler的update方法。3、CCScheduler调用普通定时器对应的CCTimeer对象的update方法;4、CCTime类的updata方法调用定时器对应的回调函数。
结论2:updata定时器,调用顺序比较简单,直接在CCScheduler的update方法中调用。
- cocos2d-x定时器机制(更新完毕)
- cocos2d-x定时器机制(更新完毕) .
- cocos2d-x核心类剖析-cocos2d-x定时器机制
- Cocos2d-x 3.x基础总结 -- 定时器更新schedule/update
- cocos2d-x schedule 定时器
- cocos2d-x 定时器 schedule
- COCOS2D-X全局定时器
- cocos2d-x 定时器 schedule
- cocos2d-x schedule 定时器
- cocos2d-x定时器
- cocos2d-x schedule 定时器
- cocos2d-x的定时器
- cocos2d-x 定时器schedule
- cocos2d-x lua 定时器
- cocos2d-x定时器
- Cocos2d-x-------------------------定时器schedule
- 11.cocos2d-x定时器
- [cocos2d-x]关于定时器
- 雅虎14条-Best Practices for Speeding Up Your Web Site
- ZOJ-2095
- Hibernate中使用Threadlocal创建线程安全的Session
- HTTP协议
- Two Sum
- cocos2d-x定时器机制(更新完毕)
- javascript继承
- 堆内存的分配和回收步骤
- JavaScript 创建数组的方法和基本操作
- 第二周作业
- 给定一个带通配符问号的数W,问号可以代表任意数字。 再给定一个整数X,和W具有同样的长度。 问有多少个整数符合W的形式并且比X大?
- Linux知识笔记
- 分页机制
- Java反射