cocos2d-x游戏循环与调度
每一個游戲程序都有一個循環(huán)在不斷運行,它是有導(dǎo)演對象來管理很維護。如果需要場景中的精靈運動起來,我們可以在游戲循環(huán)中使用定時器(Scheduler)對精靈等對象的運行進行調(diào)度。因為Node類封裝了Scheduler類,所以我們也可以直接使用Node中調(diào)用函數(shù)。
Node中調(diào)用函數(shù)主要有:
void scheduleUpdate ( void )。每個Node對象只要調(diào)用該函數(shù),那么這個Node對象就會定時地每幀回調(diào)用一次自己的update(float dt)函數(shù)。
void schedule ( SEL_SCHEDULE?selector,? float? interval )。與scheduleUpdate函數(shù)功能一樣,不同的是我們可以指定回調(diào)函數(shù)(通過selector指定),也可以更加需要指定回調(diào)時間間隔。
void unscheduleUpdate ( void )。停止update(float dt)函數(shù)調(diào)度。
void unschedule ( SEL_SCHEDULE?selector )。可以指定具體函數(shù)停止調(diào)度。
void unscheduleAllSelectors ( void )。可以停止調(diào)度。
?
為了進一步了解游戲循環(huán)與調(diào)度的使用,我們修改HelloWorld實例。
修改HelloWorldScene.h代碼,添加update(float dt)聲明,代碼如下:
?
[html]?view plaincopy?
?
為了能夠在init函數(shù)之外訪問標(biāo)簽對象label,我們需要為標(biāo)簽對象設(shè)置Tag屬性,其中的第①行代碼就是設(shè)置Tag屬性為123。第⑤行代碼是通過Tag屬性獲得重新獲得這個標(biāo)簽對象。
為了能夠開始調(diào)度還需要在init函數(shù)中調(diào)用scheduleUpdate(見第②行代碼)或schedule(見第③行代碼)。
代碼第④行的HelloWorld::update(floatdt)函數(shù)是在調(diào)度函數(shù),精靈等對象的變化邏輯都是在這個函數(shù)中編寫的。我們這個例子很簡單只是讓標(biāo)簽對象動起來,第⑥行代碼就是改變它的位置。
為了省電等目的,如果不再使用調(diào)度,一定不要忘記停止調(diào)度。第⑦行代碼unscheduleUpdate()就是停止調(diào)度update,如果是其他的調(diào)度函數(shù)可以采用unschedule或unscheduleAllSelectors停止。
轉(zhuǎn)載于:https://www.cnblogs.com/iOS-Blog/p/3711263.html
總結(jié)
以上是生活随笔為你收集整理的cocos2d-x游戏循环与调度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第四章:4.2MySQL 权限系统介绍
- 下一篇: Linux入门-shell使用技巧