cocos2dx 定時器

cocos2dx中有三種定時器:schedule,scheduleUpdate,scheduleOnce。


1、scheduleUpdate
加入當前節點後,程序會每幀都會自動執行一次默認的Update函數。(注:一定是Update函數哦,若想調用其他自己命名的函數則使用schedule)
看例子,走起。
首先在HelloWord類的頭文件中聲明Update函數:
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
void Update(float dt); //注意參數類型 
然後在HelloWorld類源文件中實現函數Update:
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
void HelloWorld::Update(float dt) 
{ 
CCLOG("baibai"); 
} 
現在我們可以調用了,在需要他不斷執行的地方加入調用的代碼就ok:
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
this->scheduleUpdate(); //this是當前節點,如layer,所以可以省略啦。 
運行之後你將會看到不斷有baibai被打印出來
2、scheduleUpdate
可以沒隔幾秒執行某個自定義的函數,來看代碼:
首先還是在HelloWorld中聲明所要執行的函數:
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
void Move(float dt); 
然後在源文件實現:
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
void HelloWorld::Move(float dt) 
{ 
CCLOG("baibai"); 
} 
現在去執行他,注意參數哦
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
scheduleOnce(schedule_selector(HelloWorld::Move), 1.0f); //每隔1.0f執行一次,省略參數則表示每幀都要執行 
運行之後,baibai每隔1.0f纔會被打印一次。
3、scheduleOnce
功能:在幾秒之後執行,並且只會執行一次。
我們就執行上面所寫的Move函數吧。
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
this->scheduleOnce(schedule_selector(HelloWorld::Move), 1.0f); //在1.0f之後執行,並且只執行一次。 
運行一下,baibai只是被打印了一次就完了。。。
ok,定時器的調用已經講完了,大家不妨自己寫一些函數體驗一下。
但是怎麼停止定時器呢?
1、停止執行自己定義的函數定時器
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
this->unschedule(schedule_selector(HelloWorld::Move)); 
2、停止默認定時器
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
this->unscheduleUpdate(); 
3、停止所有定時器
[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
this->unscheduleAllSelectors(); 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章