quick-cocos2d-x游戏开发【7】——scheduler 定时器
定时器用的地方还是比較多的,游戏中的逻辑推断非常多都是採用每帧运行。quick对于schedule的封装在scheduler这个lua文件里。假设是第一次接触quick的话,可能依照官方的api来写一个定时器被报错,提示schedule是一个nil值,这是由于其它的模块在初始化时都是被载入的,只有这个scheduler没有载入,所以在使用的时候,第一件事是引入这个模块,
local scheduler = require("framework.scheduler")
剩下的就能够看着api来写了,在写quick的定时器之前还是再复习一下cocos2dx原生lua对于定时器的写法。
每帧调用的,
void scheduleUpdateWithPriority (int priority)
void scheduleUpdateWithPriorityLua (int nHandler,int priority)
指定调用间隔时间的,
unsigned int scheduleScriptFunc (unsigned int nHandler, float fInterval, bool bPaused)
还有取消定时器事件
void unscheduleScriptEntry (unsigned int uScheduleScriptEntryID)
quick的scheduler主要是对后面两个函数的封装。在c++的cocos使用中,我们使用定时器,无非就是每帧调用,间隔时间调用无数次,间隔时间调用指定次数,间隔时间调用一次,取消调用这几个。
我们依次来看下,
每帧调用,
local time = 0
local function update(dt)
time = time + 1
label:setString(string.format("%d", time))
end scheduler.scheduleUpdateGlobal(update)
间隔一定时间调用,
local time = 0
local function onInterval(dt)
time = time + 1
label:setString(string.format("%d", time))
end scheduler.scheduleGlobal(onInterval, 1)
间隔时间调用一次,这个封装的不错,非经常常使用
local time = 0
local function onInterval(dt)
time = time + 1
label:setString(string.format("%d", time))
print("over")
end scheduler.performWithDelayGlobal(onInterval, 1)
能够看下这个是怎么实现的,
function scheduler.performWithDelayGlobal(listener, time)
local handle
handle = sharedScheduler:scheduleScriptFunc(function()
scheduler.unscheduleGlobal(handle)
listener()
end, time, false)
return handle
end
事实上就是在间隔一定时间后,将其停止,然后运行一次回调函数就能够了。
封装的最后一个是停止这些定时器,
scheduler.unscheduleGlobal()
它的參数是前面那些定时器返回的句柄,所以假设须要在后面停止掉,记得在创建的留一个返回值就好了。
只是在游戏中,我们可能会做一个倒计时,也就是间隔一定时间调用指定的次数,这个是在quick中没有封装的,可是我们还是能够自己动手实现一下,原理也非常easy,每次运行一次就计个数,达到指定的次数就停止定时器,
local handle
local interval = 1
local repeatIndex = 3
local index = 0
local sharedScheduler = CCDirector:sharedDirector():getScheduler()
handle = sharedScheduler:scheduleScriptFunc(function()
index = index + 1
label:setString(string.format("%d", index))
if index >= repeatIndex then
scheduler.unscheduleGlobal(handle)
print("over")
end
end, interval, false)
效果如图

这样就ok了,大家能够自己试一试哈。
定时器就是这样子了。
quick-cocos2d-x游戏开发【7】——scheduler 定时器的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- 【Cocos2D研究院之游戏开发】
http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Co ...
- 2、Cocos2dx 3.0游戏开发找小三之引擎简单介绍
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 引擎简单介绍 Cocos2d-x 的 ...
- Cocos2d-x 3.2 学习笔记(十六)保卫萝卜 游戏主循环与定时器
保卫萝卜~想法一直存在于想法,实战才是硬道理!有想法就去实现,眼高手低都是空谈. 一.游戏主循环GameSchedule 主循环是游戏处理逻辑,控制游戏进度的地方,处理好主循环是很重要的 ...
- MVC模式在游戏开发的应用
原地址: http://www.cocoachina.com/gamedev/2012/1129/5212.html MVC是三个单词的缩写,分别为:模型(Model).视图(View)和控制Cont ...
- 《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型&障碍物判定
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9394465 作者:七十一雾央 新浪微博:http:// ...
随机推荐
- Delphi 10.1 柏林更新内容简译
新的 SDKTransform.exe 支持转换 Object-C 或 C++ 头文件到Delphi. 修改了对话框的接口,分成了同步和异步两种: http://blog.qdac.cc/?p=380 ...
- Delphi Socket的最好项目——FastMsg IM(还有一些IM控件),RTC,RO,Sparkle等等,FileZilla Client/Server,wireshark,NSClient
https://www.nsclient.org/nsclient/ 好好学习,天天向上
- Nginx设置alias实现虚拟目录 alias与root的用法区别
Nginx 貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的.如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较"像",干脆来说说alias ...
- 14.2.2 InnoDB Multi-Versioning InnoDB 多版本
14.2.2 InnoDB Multi-Versioning InnoDB 多版本: InnoDB 是一个多版本的存储引擎: 它保留信息关于改变数据的老版本,为了支持事务功能 比如并发和回滚. 这些信 ...
- 14.2.5.7 Physical Row Structure 物理数据结构:
14.2.5.7 Physical Row Structure 物理数据结构: InnoDB物理记录结构依赖行格式 在表创建的时候, 默认, InnoDB 使用Antelope 文件存储格式和它的压缩 ...
- 卸载QTP
卸载QTP11.5 1.首先需要卸载QTP11.5,点击exe文件,不点击重启 2.然后删除C:"Program Files"下的Mercury Interactive文件夹.(默 ...
- winDbg 命令使用帮助
srv*C:/symbol*http://msdl.microsoft.com/download/symbols;D:\Desktop\CMS_Dump symck //检查pdblm //显示pdb ...
- 理解Windows内核模式与用户模式
1.基础 执行 Windows 的计算机中的处理器有两个不同模式:"用户模式"和"内核模式". 依据处理器上执行的代码的类型,处理器在两个模式之间切换.应 ...
- [Android学习笔记]设置Activity方向
1.设置Activity方向 在AndroidMainfest.xml里设置Activity默认方向 <activity android:name=".myActivity" ...
- 利用Perf4j 对java项目进行性能监控
Perf4j 可以对自定义监控范围的java代码进行日志记录,再经统计分析生成所需性能数据.Perf4j 提供了对常用日志工具log4j的扩展以方便与产品集成,它产生的性能数据可被用于生成可视化的性能 ...