Lua中的定时器

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



你可能感兴趣的:(Lua)