Cocos2dx之定時器schedule,scheduleUpdate,scheduleOnce的使用

君墨痕發表於2014-03-05


cocos2dx中有三種定時器:schedulescheduleUpdatescheduleOnce。功能分別是 每隔幾秒呼叫自定義函式、呼叫系統預設的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); //在1.0f之後執行,並且只執行一次。

執行一下,baibai只是被列印了一次就完了。。。

ok,定時器的呼叫已經講完了,大家不妨自己寫一些函式體驗一下。

4、停止所有計時器

this->unscheduleAllSelectors();

原文出處:http://blog.csdn.net/u010229677/article/details/14107903

相關文章