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