cocos2dx中的定时器及其分类

时间:2022-09-10 19:22:29

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中的定时器及其分类的更多相关文章

  1. Cocos2dx中零散知识点

    cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce.功能分别是 每隔几秒调用自定义函数.调用系统默认的update()函数.只调用一次自定义函数 ...

  2. cocos2dx三种定时器使用

         cocos2dx三种定时器的使用以及停止schedule.scheduleUpdate.scheduleOnce 今天白白跟大家分享一下cocos2dx中定时器的用法. 首先,什么是定时 ...

  3. cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。

    今天白白跟大家分享一下cocos2dx中定时器的使用方法. 首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你想让他每隔几秒执行一次,ok,这些都可以统统交给定时器 ...

  4. cocos2dx中帧循环的伪代码实现

    1.在游戏开发中,帧率很大程度上体现了游戏的流畅度,帧循环是游戏中一个很重要的概念 2.下面用伪代码实现了cocos2dx中的帧循环 /*main函数调用*/ CCApplication::share ...

  5. cocos2dx中的坐标系统

    一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...

  6. 让你提前认识软件开发(21):C程序中的定时器

    版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议.欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...

  7. java web 项目中 简单定时器实现 Timer

    java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报  分类: JAVA(24)  版权声明:本文为博 ...

  8. Cocos2d-X中的ProgressTimer

     ProgressTimer即进度条,进度条在游戏开发中运用很广泛,比如在一些格斗游戏中,显示血液的变化,还有游戏载入进度,等都离不开进度条 Cocos2d-X中使用CCProgressTimer ...

  9. Cocos2dx中线程优先级

    Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...

随机推荐

  1. ASP.Net MVC数据传递

    今天做了个项目,涉及到离线下载HTML,没有前后台交互,没有Ajax,JavaScript,只有第一次从控制器带参数进入,一次读取到页面所需要的全部数据,使用Razor语法绑定到前台页面,在做这个项目 ...

  2. iOS开发小技巧--纯代码自定义cell

    纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方 ...

  3. Bootstrap系列 -- 39. 导航条添加标题

    在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过“navbar-header”和“navbar-brand”来 ...

  4. LINUX系统怎么关闭防火墙?

    所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Int ...

  5. 【转】RTSP流理解

    rtsp是使用udp还是tcp,是跟服务器有关,服务器那边说使用udp,那就使用udp,服务器说使用tcp那就使用tcp rtsp客户端的创建: 1.建立TCP socket,绑定服务器ip,用来传送 ...

  6. (简单) POJ 1062 昂贵的聘礼,Dijkstra。

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家 拿不出这么多金币,便请求酋长降 ...

  7. JIT(Just in time,即时编译,边运行边编译)、AOT(Ahead Of Time,运行前编译),是两种程序的编译方式

    JIT(Just in time,即时编译,边运行边编译).AOT(Ahead Of Time,运行前编译),是两种程序的编译方式

  8. nodepad++ 标签栏无法拖放标签

    nodepad++ 标签栏无法拖放标签设置--首选项--常用--标签栏--锁定(不允许拖放) 去掉这个勾 ps:最近版本的不知道为什么这个设置不生效了,没找到原因,可能是bug,只能等待升级解决了(升 ...

  9. 对数组排序三种方式sort、asort与ksort

    关联数组是 键值(key)=>值(value)形式. sort只对值进行排序,键值不参与排序: asort对值进行排序,键值参与排序: ksort对键值进行排序,值参与排序: 实例,比如数组: ...

  10. Python 模块化 自定义模块 (四)

    自定义模块 一个.py文件就是一个模块 创建以下三个文件: 运行test.py ,查看运行结果. #test.py print("this is test module") imp ...