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


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值