Cocos2dx之定時器schedule,scheduleUpdate,scheduleOnce的使用
cocos2dx中有三種定時器:schedule,scheduleUpdate,scheduleOnce。功能分別是 每隔幾秒呼叫自定義函式、呼叫系統預設的update()函式、只調用一次自定義函式
1、scheduleUpdate
加入當前節點後,程式會每幀都會自動執行一次預設的Update函式。(注:一定是Update函式哦,若想呼叫其他自己命名的函式則使用schedule)
看例子,走起。
首先在HelloWord類的標頭檔案中宣告Update函式:
void Update(float dt); //注意引數型別
然後在HelloWorld類原始檔中實現函式Update:
voidHelloWorld::Update(float dt)
{
CCLOG("baibai");
}
現在我們可以呼叫了,在需要他不斷執行的地方加入呼叫的程式碼就ok:
this->scheduleUpdate(); //this是當前節點,如layer,所以可以省略啦。
執行之後你將會看到不斷有baibai被打印出來
停止方法:
this->unscheduleUpdate();
2、schedule
功能:每隔幾秒執行一次函式
首先還是在HelloWorld中宣告所要執行的函式:
void Move(float dt);
然後在原始檔實現:
void HelloWorld::Move(floatdt)
{
CCLOG("baibai");
}
現在去執行他,注意引數哦
this->schedule(schedule_selector(HelloWorld::Move),1.0f); //每隔1.0f執行一次,省略引數則表示每幀都要執行
執行之後,baibai每隔1.0f才會被列印一次。
停止方法:
this->unschedule(schedule_selector(HelloWorld::Move));
3、scheduleOnce
功能:在幾秒之後執行,並且只會執行一次。
我們就執行上面所寫的Move函式吧。
this->scheduleOnce(schedule_selector(HelloWorld::Move),1.0f);
執行一下,baibai只是被列印了一次就完了。。。
ok,定時器的呼叫已經講完了,大家不妨自己寫一些函式體驗一下。
4、停止所有計時器
this->unscheduleAllSelectors();