溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[cocos2d-x]定時器函數(shù)scheduleUpdate

發(fā)布時間:2020-07-10 10:19:56 來源:網(wǎng)絡 閱讀:294 作者:蓬萊仙羽 欄目:游戲開發(fā)

正文:

1. scheduleUpdate

我們現(xiàn)在來新建一個Cocos2d-x的項目,然后把HelloWorldSceneinit函數(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>


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI