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僅僅執行一次后就被移除了。

然后調用了我們需要在未來某個時刻需要調用執行的函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM