Cocos2d-x学习(4) - cocos2d-x中的定时器
来源:互联网 发布:雅思培训网络课程 编辑:程序博客网 时间:2024/06/05 13:29
1.Cocos2d-x定时器简介
Cocos2d-x中一共有三种定时器:
- 1、帧循环定时器
- 2、一次性定时器
- 3、自定义定时器
三种定时器中帧循环的实时性最高,帧循环定时器是在Cocos2d-x程序界面每帧图像显示时运行的定时器。帧循环定时器常常用于游戏中物体的碰撞检测。
一次性定时器比较好理解,就是定时完之后开始计时,到时间后运行时间处理函数。自定义定时器是用的最多的一种定时器,他可以根据我们自己的实际需要来设置成不同的工作模式。
2、帧循环定时器
使用方法:在init中使用帧循环定时器打开帧循环定时器,打开帧循环定时器的函数是:
scheduleUpdate(); //打开帧循环定时器,需要重载一个update()回调函数
帧循环定时器运行时,会在每一帧重绘的时候去调用一个名字为update的回调函数,所以在Layer类中需要重写update函数。
void update(float delta) override;
完成上述工作时候,在运行过程中就会在每一帧图像重绘的时候调用这个update函数了。有些时候可能还需要关闭帧循环定时器,这时候就需要使用一个函数:
unscheduleUpdate(); //停止帧循环定时器
该函数运行后,帧循环定时器就会被关闭,也就是说不会再去调用update回调函数。
的最多的一种定时器,他可以根据我们自己的实际需要来设置成不同的工作模式。
3、一次性定时器
一次性定时器就是在运行过程中只会调用依次回调函数的定时器。使用示例如下:
//一次性定时器, 2s中后开始执行scheduleOnce(schedule_selector(T03Schedual::mySchedual), 2);
该函数有两个参数,第一个参数包装一个类的成员函数(这个成员函数就是回调函数),第二个参数表示在定时后的x s后执行回调函数。
4、自定义定时器
自定义定时器有三个重载的形式:
<1> schedule(schedule_selector(T03Schedual::mySchedual));<2> schedule(schedule_selector(T03Schedual::mySchedual), 2);<3> schedule(schedule_selector(T03Schedual::mySchedual), 2.0, 10, 2);
- <1>形式和帧循环定时器的作用相同,都是在每一帧图像重绘的时候调用回调函数。不同的是,因为自定义定时器的第一个参数包装的是一个类成员函数,所以该成员函数是自定义的名称。
- <2>在<1>的基础上添加了一个参数,该参数表示的是调用的时间间隔。
- <3>在<2>的基础上增加两个参数,依次表示,重复调用的次数(该次数+1),延时x s后开始定时。
5、定时器的使用
游戏动画的本质就是界面的重新绘制。使用定时器,在定时器中完成精灵的移动就可以完成动画的效果。代码涉及到 getChildByTag(),该函数的功能是从渲染树上获取Tag为固定值得精灵。下面代码实现使用定时器绘制在界面上左右移动的精灵,精灵的添加是在init函数中完成。
- (1)添加精灵
CCSprite *spr = CCSprite::create("woman.png"); spr->setScale(0.3); CCSize sz = CCDirector::sharedDirector()->getWinSize(); spr->setPosition(ccp(100, sz.height / 2)); spr->setTag(100); addChild(spr);
- (2)定时器完成精灵的移动
void T03Schedual::mySchedual(float dt){ CCSprite *spr = (CCSprite*)(getChildByTag(100)); float v = 300 / 2; static bool flag = true; //向右走 if (flag) { spr->setPositionX(spr->getPositionX() + v*dt); if (spr->getPositionX() >= 400) flag = !flag; } else { spr->setPositionX(spr->getPositionX() - v*dt); if (spr->getPositionX() <= 100) flag = !flag; } //CCLog("Once Timer %g\n", dt);}
运行结果:
- Cocos2d-x学习(4) - cocos2d-x中的定时器
- Cocos2d-x lua中的定时器
- Cocos2d-x 3.x lua中的定时器
- 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]关于定时器
- Cocos2d-x 3.0 lua中的定时器
- 远程连接查看Linux日志乱码问题
- 程序设计实习递归练习 矩阵快速幂求斐波那契数列
- LeetCode 45. Jump Game II
- 《JAVA语言程序设计》(四)|JAVA 获得当前系统时间
- [Android Studio 权威教程]断点调试和高级调试
- Cocos2d-x学习(4) - cocos2d-x中的定时器
- composer 的相关问题(1)
- 计算每月天数
- 测试
- 搜索引擎-倒排索引基础知识
- 人生四大悲
- jdbc连接数据库基本代码
- 初学NodeJs的小Demo
- Python入门:实例Django实现登录、注册