cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。
今天白白跟大家分享一下cocos2dx中定时器的使用方法。
首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你想让他每隔几秒执行一次,ok,这些都可以统统交给定时器来解决。
cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce。了解其功能便会发现定时器真是太方便了,废话不多说,我们逐一学习一下。
1、scheduleUpdate
加入当前节点后,程序会每帧都会自动执行一次默认的Update函数。(注:一定是Update函数哦,若想调用其他自己命名的函数则使用schedule)
看例子,走起。
首先在HelloWord类的头文件中声明Update函数:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
void Update(float dt); //注意参数类型
然后在HelloWorld类源文件中实现函数Update:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
void HelloWorld::Update(float dt)
{
CCLOG("baibai");
}
现在我们可以调用了,在需要他不断执行的地方加入调用的代码就ok:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
this->scheduleUpdate(); //this是当前节点,如layer,所以可以省略啦。
运行之后你将会看到不断有baibai被打印出来
2、scheduleUpdate
可以没隔几秒执行某个自定义的函数,来看代码:
首先还是在HelloWorld中声明所要执行的函数:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
void Move(float dt);
然后在源文件实现:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
void HelloWorld::Move(float dt)
{
CCLOG("baibai");
}
现在去执行他,注意参数哦
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
scheduleOnce(schedule_selector(HelloWorld::Move), 1.0f); //每隔1.0f执行一次,省略参数则表示每帧都要执行
运行之后,baibai每隔1.0f才会被打印一次。
3、scheduleOnce
功能:在几秒之后执行,并且只会执行一次。
我们就执行上面所写的Move函数吧。
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
this->scheduleOnce(schedule_selector(HelloWorld::Move), 1.0f); //在1.0f之后执行,并且只执行一次。
运行一下,baibai只是被打印了一次就完了。。。
ok,定时器的调用已经讲完了,大家不妨自己写一些函数体验一下。
但是怎么停止定时器呢?
1、停止执行自己定义的函数定时器:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
this->unschedule(schedule_selector(HelloWorld::Move));
2、停止默认定时器:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
this->unscheduleUpdate();
3、停止所有定时器:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
this->unscheduleAllSelectors();
好啦,定时器是不是很有趣呢?大家试着使用一下吧。
cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。的更多相关文章
- cocos2dx三种定时器使用
cocos2dx三种定时器的使用以及停止schedule.scheduleUpdate.scheduleOnce 今天白白跟大家分享一下cocos2dx中定时器的用法. 首先,什么是定时 ...
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...
- C#中三种定时器对象的比较 【转】
https://www.cnblogs.com/zxtceq/p/5667281.html C#中三种定时器对象的比较 ·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.W ...
- C#三种定时器
三个定时器分别是 实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer 提供以指定的 ...
- C#中三种定时器对象的比较
·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.Windows.Forms里2.定义在System.Threading.Timer类里3.定义在System.Timers ...
- C#三种定时器的实现
http://www.coridc.com/archives/2253.html c#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Ti ...
- NSTimer、CADisplayLink、GCD 三种定时器的用法 —— 昉
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法.在这个时候,我们就需要用到定时器. 在iOS中有很多方法完成定时器的任务,例如 NSTimer.CADisp ...
- iOS三种定时器的用法NSTimer、CADisplayLink、GCD
一,NSTimer //创建方式1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector: ...
- android 三种定时器的写法
//两秒后执行new Handler().postDelayed(new Runnable() { @Override public void run() { --todo }}, 2000); -- ...
随机推荐
- Java设计模式の观察者模式(推拉模型)
目录: 一.观察者定义 二.观察者模式的结构(推模式实现) 三.推模型和拉模型(拉模式实现) 四.JAVA提供的对观察者模式的支持 五.使用JAVA对观察者模式的支持(自带推模式实现实例) 一.观察者 ...
- 2015/8/26 Python基础(1):基本规则及赋值
Python有如下的基本规则: #后表示注释 \n是行分隔符 \是继续上一行,将过长语句分开 :分号将两个语句连接在一行中 :冒号将代码头和体分开 代码块用缩进块的方式体现 不同缩进深度分隔不同的代码 ...
- 【Codeforces370E】Summer Reading [构造]
Summer Reading Time Limit: 20 Sec Memory Limit: 512 MB Description Input Output Sample Input 7 0 1 ...
- 【BZOJ1221】【HNOI2001】软件开发 [费用流]
软件开发 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 某软件公司正在规划一项n天的软件开 ...
- [BZOJ2754] [SCOI2012]喵星球上的点名解题报告|后缀数组
a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串来点名,每次读出一个串的 ...
- 第八周 yukun 20155335
- Java并发—— 关键字volatile解析
简述 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,当一个变量定义为volatile,它具有内存可见性以及禁止指令重排序两大特性,为了更好地了解volatile关键字,我们可以 ...
- 【洛谷 P2513】 [HAOI2009]逆序对数列(DP)
题目链接 这种求方案数的题一般都是\(dp\)吧. 注意到范围里\(k\)和\(n\)的范围一样大,\(k\)是完全可以更大的,到\(n\)的平方级别,所以这暗示了我们要把\(k\)写到状态里. \( ...
- 【自己练习】linux常见命令——(六)
菜鸟教程命令大全 http://www.runoob.com/linux/linux-command-manual.html 命令大全: http://man.linuxde.net/ ta ...
- bind类成员函数
首先描述一个情景: 先贴出代码: class Solution { public: bool compare(int a, int b) { return a > b; } int functi ...