zoukankan      html  css  js  c++  java
  • 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仅仅执行一次后就被移除了。

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

  • 相关阅读:
    Java的代码风格
    哪些你容易忽略的C语言基础知识
    Java基础学习笔记第二章
    Java代码性能优化总结
    Java并发编程(2):线程中断(含代码)
    C语言代码训练(一)
    数控G代码编程详解大全
    PLC编程算法
    博客转移到新地址
    一些吐槽
  • 原文地址:https://www.cnblogs.com/vokie/p/3657069.html
Copyright © 2011-2022 走看看