Cocos2d x之定時器

2022-08-22 00:54:10 字數 4300 閱讀 2388

|每乙個遊戲程式都有乙個迴圈在不斷執行,它是由導演物件來管理與維護。如果需要場景中的精靈運動起來,可以在遊戲迴圈中使用定時器對精靈等物件進行操作。因為node類封裝了scheduler類,所以也可以直接使用node中呼叫函式。

定時器的兩種實現方式:

>>.

scheduleupdate();

是定時器更新函式,如果定時器更新了,就會呼叫update();來執行update();函式繼承自node類;每個node物件只要呼叫該函式,那麼這個node物件就會定時的每幀**用一次自己的update(float delat)函式

void update(float dt);

dt的預設頻率是:1/60

>>.

schedule(schedule_selector(selector));

void myupdate(float dt);

schedule_selector();這是指定定時器的乙個**方法,這個方法我們可以自己去定義。

例項:

.h files

#ifndef _timertest_scene_h_

#define _timertest_scene_h_

#include "cocos2d.h"

using_ns_cc;

class timertest : public cocos2d::layer

;#endif // _timertest_scene_h_

.cpp files

#include "timertest.h"

float timecount = 0;

scene* timertest::createscene()

bool timertest::init()

//啟動定時器,呼叫scheduleupdate()來執行定時器

//scheduleupdate();

//two tips

schedule(schedule_selector(timertest::schedule_twotips_test), 2);

return true;

}//delta是重新整理的幀頻率;在預設的情況下,預設值為: 1/60s重新整理一次

scheduler類常用函式方法

1

void

scheduler(

2const ccschedulerfun& callback, //

**方法

3void* target, //

目標執行者

4float interval, //

間隔時間,如果為0每幀都執行

5 unsigned int repeat, //

重複執行動作

6float delay, //

延遲執行

7bool paused, //

如果為true暫停執行

8const std::string& key //

鍵值標識該定時器9);

10//

取消key所對應的定時器

11void unschedule(const std::string& key, void*target)

12//

取消selector定時器

13void unschedule(sel_schedule selector, ref*target)

14//

取消更新update方法

15void unscheduleupdate(void*target);

16//

取消所有target定時器(可能有多個圖層)

17void unscheduleallfortarget(void*target);

18//

取消所有定時器

19void unscheduleall(void

);20

//暫停定時器

21void pausetarget(void*target);

22//

恢復定時器

23void resumetarget(void* target);

例項:

.h files

#ifndef _schedulertest_scene_h_

#define _schedulertest_scene_h_

#include "cocos2d.h"

using_ns_cc;

//scheduler類的常用函式

class schedulertest : public cocos2d::layer

;#endif //_schedulertest_scene_h_

.cpp files

#include "scheduler_test.h"

scene* schedulertest::createscene()

bool schedulertest::init()

visible = director::getinstance()->getwinsize();

auto item1 = menuitemfont::create("start", cc_callback_1(schedulertest::start, this));

auto item2 = menuitemfont::create("pause", cc_callback_1(schedulertest::pause, this));

auto item3 = menuitemfont::create("resume", cc_callback_1(schedulertest::resume, this));

auto item4 = menuitemfont::create("stop", cc_callback_1(schedulertest::stop, this));

auto menu = menu::create(item1, item2, item3, item4, null);

menu->setposition(vec2(visible.width / 2, visible.height / 2));

menu->alignitemsverticallywithpadding(20.0f);

this->addchild(menu);

return true;

}void schedulertest::update(float delta)

//自己定義定時器**的方法

cocos2d x 關於定時器

定時器的作用就是每隔一段時間,就執行一段自定義的動作,比如飛機向前方移動,子彈的移動等等。該函式定義在ccnode標頭檔案中,基本上cocos2dx中所有的東西都能夠使用定時器。第一種 scheduleupdate 預設定時器 該定時器開啟函式與update 函式配套使用,update方法是每一幀執...

cocos2dx定時器事件

update定時器 schedule定時器 其他事件 除了定時器會不斷地提供觸發事件外,cocos2d x還為我們提供了一些其他與流程控制相關的事件 方法名稱 描述 onenter 當此節點所在場景即將呈現時,會呼叫此方法 onentertransitiondidfinish 當此節點所在場景的入場...

cocos2dx定時器的用法

cocos2dx中有三種定時器 schedule,scheduleupdate,scheduleonce。1.schedule 的用法 先定義乙個函式 void updatetime float ft 開啟自定義定時器 schedule schedule selector helloworld up...