• quick-cocos-2dx学习之【scheduler.lua】


     1 local scheduler = {}
     2 
     3 local sharedScheduler = CCDirector:sharedDirector():getScheduler()
     4 
     5 function scheduler.scheduleUpdateGlobal(listener)
     6     --参数listener是需要定时执行的函数,interval这里是0(每帧执行listener)
     7     --第三个参数false,表示不暂停schedule,如果为true,schedule没有启动
     8     return sharedScheduler:scheduleScriptFunc(listener, 0, false)
     9 end
    10 
    11 function scheduler.scheduleGlobal(listener, interval)
    12     --跟上面差不多,只是它不是每帧执行,而是有一个interval间隔执行schedule
    13     return sharedScheduler:scheduleScriptFunc(listener, interval, false)
    14 end
    15 
    16 function scheduler.unscheduleGlobal(handle)
    17     --取消schedule,参数handle是我们scheduleScriptFunc的返回值
    18     sharedScheduler:unscheduleScriptEntry(handle)
    19 end
    20 
    21 function scheduler.performWithDelayGlobal(listener, time)
    22     --[[延时执行,首先是延时time秒的时间,然后调用unschedule函数,
    23     取消卸载掉自身schedule,然后执行一个我们希望延时的函数]]--
    24     local handle
    25     handle = sharedScheduler:scheduleScriptFunc(
    26     function()
    27         scheduler.unscheduleGlobal(handle)
    28         listener()
    29     end, time, false)
    30     return handle
    31 end
    32 
    33 return scheduler

    schedule的使用地方是很多的,一个游戏不可能缺少了schedule这样的组件。

    performWithDelay()的实现是值得借鉴的。

    如何通过schedule对未来某个时间需要执行的函数进行一次调用。

    首先是启动schedule本身,然后设置schedule的循环间隔interval时间为time,在schedule第一次经过time秒后执行回调函数,

    释放掉schedule定时器,这样就可以让循环往复执行的schedule仅仅执行一次后就被移除了。

    然后调用了我们需要在未来某个时刻需要调用执行的函数。

  • 相关阅读:
    ACwing(基础)--- 树状数组
    ACwing(基础)--- 快速幂
    Oracle for loop 循环
    Oracle 为表增加时间戳字段
    Oracle Materialized View 物化视图
    Splunk DBConnect使用
    Splunk 过滤接入数据
    Python 协程库 asyncio 的简单理解和使用
    Python 正则使用 备查
    Splunk 数据接入 创建索引接收数据
  • 原文地址:https://www.cnblogs.com/vokie/p/3657069.html
Copyright © 2020-2023  润新知