您好,登錄后才能下訂單哦!
正文:
1. scheduleUpdate
我們現(xiàn)在來新建一個Cocos2d-x的項目,然后把HelloWorldScene的init函數(shù)的多余代碼刪掉,然后我們敲一行代碼:
bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); this->scheduleUpdate(); bRet = true; } while (0); return bRet; }
然后大家運行項目,有沒有發(fā)現(xiàn)?神奇的事情發(fā)生了!
(小若:哪里?什么都沒有!黑屏?。?/span>
別著急,還差一步(小若:你有妹妹嗎?幫我問候一下?),我們要繼承一個函數(shù),在頭文件里加入一句:
class HelloWorld : public cocos2d::CCLayer { public: virtual bool init(); static cocos2d::CCScene* scene(); void menuCloseCallback(CCObject* pSender); CREATE_FUNC(HelloWorld); /* update函數(shù) */ virtual void update(float fDelta); };
然后在函數(shù)里打印日志:
void HelloWorld::update( float fDelta ) { CCLOG("update"); }
最后,用調試模式運行,我們將看到一串串的日志輸出:
update
update
update
update
update
update
update
update
Update
(小若:?。。。?/span>
2. 輕微解釋原理
這倒底是什么情況?我們已經(jīng)實現(xiàn)了定時器了,就是這么簡單。我稍微解釋一下,不會太深入。
(小若:你也沒有那個水平= =)
this->scheduleUpdate()函數(shù)是為了把當前節(jié)點(比如CCLayer)添加到隊列里,也許不是隊列,總是一個隊列。
(小若:算了,你別解釋了。。。)
只要把節(jié)點添加到隊列里(或許是其它結構,總之可以存放節(jié)點),那么這個節(jié)點就會在游戲運行的每一幀被調用一次update函數(shù)。
我們也看到,update函數(shù)里有一個float fDelta參數(shù),這個參數(shù)的意思是,上一次調用這個函數(shù)到本次調用這個函數(shù),中間間隔了多少秒。
好了,只是介紹性的教程,就不說得太多了。
(小若:等等!這根本就不像定時器!一點都不定時?。。?/span>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。