quick-cocos2d-x中的定时器

 jvxiang   2015-03-18 10:33   459 人阅读  0 条评论

定时器用的地方还是比较多的,游戏中的逻辑判断很多都是采用每帧执行。quick对于schedule的封装在scheduler这个lua文件中。如果是第一次接触quick的话,可能按照官方的api来写一个定时器被报错,提示schedule是一个nil值,这是因为其他的模块在初始化时都是被加载的,唯独这个scheduler没有载入,所以在使用的时候,第一件事是引入模块:

local scheduler = require("framework.scheduler")

 

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 handleend

最后是停止定时器:
scheduler.unscheduleGlobal(handle)

quick的封装基本上就是这些,我们再来看下原生cocos2d-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)

 

本文地址:https://www.jvxiang.com/quick-cocos2d-x中的定时器.html
版权声明:本文为原创文章,版权归 jvxiang 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情