Lua定时器
Cocos2d-x C++中的定时器网上有很多,也很容易找,所以我就不写了,直接Lua吧
在Lua中用定时器的地方很多,我是深有体会啊,比如说我们需要一个函数每帧都执行,那么就可以用定时器来解决啦
(旁白:好哇!好哇!终于可以解决我的麻烦啦)
那我们就开始吧
首先需要写一个定时器的目标函数,就是每隔一段时间你想在这个函数里做什么时事!
function TimerUpdata()
print( " 哇哈哈 " )
end
然后在你想开启定时器的地方执行下面这条语句
Timer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(TimerUpdata, 1/60, false)
把定时器记在变量 Timer 中是为了方便后面不用的时候删除掉,比如我们要删除掉这个场景层的时候就要先删掉定时器
参数一: 目标函数
参数二: 时间, 1/60 大略表示每帧的时间,每秒 60 帧嘛, ( 也可以直接是 0 )
参数三: 是否暂停,一段都设置为 false
删除定时器
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(Timer)
参数就直接是这个定时器了
差不多就这点吧,其他的暂停定时器啊这些就自己查查吧
(旁白:)
quick lua 中的文件
--[[--
全局计时器、计划任务
«该模块在框架初始化时不会自动载入»
加载方式: local scheduler = require(cc.PACKAGE_NAME .. ".scheduler")
]]
local scheduler = {}
local sharedScheduler = cc.Director:getInstance():getScheduler()
-- start --
--------------------------------
-- 计划一个全局帧事件回调,并返回该计划的句柄。
-- @function [parent=#scheduler] scheduleUpdateGlobal
-- @param function 回调函数
-- @return mixed#mixed ret (return value: mixed) schedule句柄
--[[--
计划一个全局帧事件回调,并返回该计划的句柄。
全局帧事件在任何场景中都会执行,因此可以在整个应用程序范围内实现较为精确的全局计时器。
该函数返回的句柄用作 scheduler.unscheduleGlobal() 的参数,可以取消指定的计划。
]]
-- end --
function scheduler.scheduleUpdateGlobal(listener)
return sharedScheduler:scheduleScriptFunc(listener, 0, false)
end
-- start --
--------------------------------
-- 计划一个以指定时间间隔执行的全局事件回调,并返回该计划的句柄。
-- @function [parent=#scheduler] scheduleGlobal
-- @param function listener 回调函数
-- @param number interval 间隔时间
-- @return mixed#mixed ret (return value: mixed) schedule句柄
--[[--
计划一个以指定时间间隔执行的全局事件回调,并返回该计划的句柄。
~~~ lua
local function onInterval(dt)
end
-- 每 0.5 秒执行一次 onInterval()
local handle = scheduler.scheduleGlobal(onInterval, 0.5)
~~~
]]
-- end --
function scheduler.scheduleGlobal(listener, interval)
return sharedScheduler:scheduleScriptFunc(listener, interval, false)
end
-- start --
--------------------------------
-- 取消一个全局计划
-- @function [parent=#scheduler] unscheduleGlobal
-- @param mixed schedule句柄
--[[--
取消一个全局计划
scheduler.unscheduleGlobal() 的参数就是 scheduler.scheduleUpdateGlobal() 和 scheduler.scheduleGlobal() 的返回值。
]]
-- end --
function scheduler.unscheduleGlobal(handle)
sharedScheduler:unscheduleScriptEntry(handle)
end
-- start --
--------------------------------
-- 计划一个全局延时回调,并返回该计划的句柄。
-- @function [parent=#scheduler] performWithDelayGlobal
-- @param function listener 回调函数
-- @param number time 延迟时间
-- @return mixed#mixed ret (return value: mixed) schedule句柄
--[[--
计划一个全局延时回调,并返回该计划的句柄。
scheduler.performWithDelayGlobal() 会在等待指定时间后执行一次回调函数,然后自动取消该计划。
]]
-- end --
function scheduler.performWithDelayGlobal(listener, time)
local handle
handle = sharedScheduler:scheduleScriptFunc(function()
scheduler.unscheduleGlobal(handle)
listener()
end, time, false)
return handle
end
return scheduler