cocos2dx中的定时器及其分类
cocos2dx中的定时器分三大类:
1.帧循环定时器
2.一次性定时器
3.自定义定时器
一.帧循环定时器,顾名思义,每一帧都会执行一次,用于实时性要求比较高的场合,如碰撞检测
void scheduleUpdate(void);//其实是schedule+Update的组合,即定时执行Update函数的意思 --------启动定时器
virtual void update(float delta);//这是需要自己实现的虚函数,我们重载(override),update方法以执行我们自己的代码,但是函数名和参数不可更改,float dt是一个没有使用的参数,通过cclog(delta)打印可知,dt=0.016,即刚好是一帧的时间. ---------重载实现自己的代码的函数
void unscheduleUpdate(void); //取消定时器, ---------终止定时器
二.一次性定时器,
void scheduleOnce(SEL_SCHEDULE selector, float delay);//只定时一次,第一个参数表示要回调用函数,第二个参数表示延时
typedef void (CCObject::*SEL_SCHEDULE)(float);
#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR) //回调函数的类型
例如我们可以自定为:void updateOnce(float dt);//代表只定时更新一次的意思,此时的参数float dt代表延时,和scheduleOnce中的float delay相等
void CCNode::unschedule(SEL_SCHEDULE selector);//终止定时器,参数为要终止的定时器回调函数
三.自定义定时器
自定义定时器有3 个重载函数,底层都默认调用了scheduleSelector,他的几个参数分别表示,scheduleSelector 回调函数,interval 时间间隔,repeat 重复次数,delay 延时执行。
void CCNode::schedule(SEL_SCHEDULE selector)
{
this->schedule(selector, 0.0f, kCCRepeatForever, 0.0f);
}//本质同scheduleUpdate 但是可以自己写回调函数,定时间隔也是一帧的时间:0.016s
void CCNode::schedule(SEL_SCHEDULE selector, float interval)
{
this->schedule(selector, interval, kCCRepeatForever, 0.0f);
}
void CCNode::schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
{
m_pScheduler->scheduleSelector(selector, this, interval , repeat,delay, !m_bRunning);
}
总结:
1.帧循环定时器是系统规定好了的,只可以通过重载(override)update函数来执行自定义的内容,且定时间隔也是定死的,即0.016s,一帧的时间,取消定时器用unscheduleUpdate(void);
2.一次性定时器,scheduleOnce(float dt)只能定时一次,回调函数需要自己定义,只能设置延时的参数
3.自定义定时器,schedule()有三种重载的形式,参数很灵活,可以根据需要来设置.
cocos2dx中的定时器及其分类的更多相关文章
- Cocos2dx中零散知识点
cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce.功能分别是 每隔几秒调用自定义函数.调用系统默认的update()函数.只调用一次自定义函数 ...
- cocos2dx三种定时器使用
cocos2dx三种定时器的使用以及停止schedule.scheduleUpdate.scheduleOnce 今天白白跟大家分享一下cocos2dx中定时器的用法. 首先,什么是定时 ...
- cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。
今天白白跟大家分享一下cocos2dx中定时器的使用方法. 首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你想让他每隔几秒执行一次,ok,这些都可以统统交给定时器 ...
- cocos2dx中帧循环的伪代码实现
1.在游戏开发中,帧率很大程度上体现了游戏的流畅度,帧循环是游戏中一个很重要的概念 2.下面用伪代码实现了cocos2dx中的帧循环 /*main函数调用*/ CCApplication::share ...
- cocos2dx中的坐标系统
一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...
- 让你提前认识软件开发(21):C程序中的定时器
版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议.欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...
- java web 项目中 简单定时器实现 Timer
java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报 分类: JAVA(24) 版权声明:本文为博 ...
- Cocos2d-X中的ProgressTimer
ProgressTimer即进度条,进度条在游戏开发中运用很广泛,比如在一些格斗游戏中,显示血液的变化,还有游戏载入进度,等都离不开进度条 Cocos2d-X中使用CCProgressTimer ...
- Cocos2dx中线程优先级
Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...
随机推荐
- img 元素无法获取高度的问题
项目里有这么一个功能,需要 ajax 从服务器端获取数据,然后本地生成 DOM 结构再 append 到页面上. 其中的图片是直接拿到的图像数据,而不是 url,所以据此生成 dataURI 赋值给 ...
- An instance 0x172b8600 of class UITableView was deallocated while key value
从带有tableview并且使用Mj下拉刷新的视图调用popViewControllerAnimated的时候,控制台打印这个: An instance 0x15d7aa00 of class UIT ...
- C++之时间统计
1.最精确 QueryPerformanceFrequency(&nFreq); cout <<nFreq.QuadPart<<endl;//获得计数频率 QueryP ...
- 基于ASP.Net +easyUI框架上传图片,实现图片上传,提交表单
<body> <link href="../../Easyui/themes/easyui.css" rel="stylesheet" typ ...
- 解决方案:Default Activity Not Found !
在Android Studio 中按 Ctrl+F11运行工程的时候,突然弹出一个Edit Configuration 对话框,让选择一个默认的Activity,之前默认情况下是直接编译到虚拟机运行的 ...
- 每天一道LeetCode--371. Sum of Two Integers
alculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Examp ...
- Python Tool Visual Studio简单使用
由于一直在做.NET的开发,一直用的IDE是VS系列的,所以想用VS也能开发Python,刚好微软提供一个插件PTVS(Python Tool Visual Studio)专门应用于Python开发的 ...
- 1 对WinMain的理解
就像C语言的main是它的程序路口一样,windows的程序入口是WinMain,WinMain的定义可以查看winbase.h文件. Hello Windows(c语言中的Hello world!) ...
- XML DOM 循环(foreach)读取PHP数据 和 PHP 编写 XML DOM 【转载】
用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖.实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务.首先,需要学习一点关于 XM ...
- Pure-ftpd无法连接到服务器 425错误
今天是五一假期的前一天,闲来没事,打开自己的博客,发现很久没有备份数据了,由于工作方面的原因,自己慢慢的退出了技术界,但本人还是依然向往技术界啊!各位技术宅们,加油! 问题发现 当我打开FTP客户端软 ...