天天看點

Cocos2d-x學習筆記(六) 定時器Schedule的簡單應用



Cocos2d-x中的定時器使用很簡單,共有3種:schedule、scheduleUpdate和scheduleOnce。簡單介紹一下三種的差別:

schedule,每隔指定時間執行某個自定義的函數

schedule(schedule_selector(自定義函數名),間隔時間);

scheduleUpdate,每幀執行一次Update函數(隻能是以Update命名的函數,需要調用其他函數則使用schedule)

scheduleOnce,在指定時間後執行某個自定義函數,且隻會執行一次

scheduleOnce(schedule_selector(自定義函數名),間隔時間);

今天将會學習schedule的用法,這個學會了其他兩種就很簡單了。首先來個簡單的例子,顯示目前系統時間,并使用schedule重新整理目前時間。

//label
	pLabel = CCLabelTTF::create(CCString::createWithFormat("%d:%d:%d", now->tm_hour, now->tm_min, now->tm_sec)->getCString(), "Thonburi", 34);
	CCSize s = CCDirector::sharedDirector()->getWinSize();
	pLabel->setPosition(ccp(s.width / 2, s.height / 2));
	addChild(pLabel);
	schedule(schedule_selector(Schedule::showTimebyLabel), 1.0f);
           

建立label并預設顯示系統目前時間,然後使用schedule函數每秒調用我們的自定義函數

void Schedule::showTimebyLabel(float dt){
	time(&tt);
	now = localtime(&tt);
	pLabel->setString(CCString::createWithFormat("%d:%d:%d",now->tm_hour,now->tm_min,now->tm_sec )->getCString());
}
           

運作之後就可以看到螢幕中間不停跳動的時間了。其實到這裡schedule函數的學習就差不多了,但我想試着實作很多遊戲裡都會有的美術字倒計時,于是結合上一篇精靈類的知識做了一個用美術字實作的系統時間,能實作動态顯示系統時間,倒計時就是小意思了。

實作原理跟在label中顯示差不多,用schedule每秒調用給精靈更換圖檔的函數就可以了。重複代碼比較多,我就不貼上來了,來兩張效果圖吧。

Cocos2d-x學習筆記(六) 定時器Schedule的簡單應用
Cocos2d-x學習筆記(六) 定時器Schedule的簡單應用

然後是用到的數字素材,網上找半天沒找到,很多生成工具都必須在MAC下使用,沒辦法就自己用PS随便弄了下。本來想把這數字素材的plist放上來的但是沒找到哪裡可以傳附件……貌似不能的樣子……

Cocos2d-x學習筆記(六) 定時器Schedule的簡單應用