cocos2d 事件處理

2021-08-20 13:30:43 字數 1632 閱讀 5030

定義事件分發器

使用系統自帶事件(觸控螢幕,鍵盤響應等)或者是自己定義事件

定義事件***監聽相關事件

定義響應函式,作為事件觸發後***做出的反應

定義事件分發器

auto dispatcher = director::getinstance()->geteventdispatcher();

//或者

_eventdispatcher

使用系統自帶事件建立***
auto touchlistener = eventlistenertouchonebyone::create();
定義響應函式

方式1

bool thunder::ontouchbegan(touch *touch, event *unused_event) 

auto touchlistener = eventlistenertouchonebyone::create();

touchlistener->ontouchbegan = cc_callback_2(thunder::ontouchbegan, this);

方式2
touchlistener->ontouchbegan = (touch *touch, event *unused_event)
將***註冊到分發器上
_eventdispatcher->addeventlistenerwithscenegraphpriority(touchlistener, sprite1);

_eventdispatcher->addeventlistenerwithscenegraphpriority(touchlistener->clone(), sprite2);//假如重複使用某個listener,要用clone,因為每一次註冊***都會被分配乙個獨特的標記

移除***
_eventdispatcher->removeeventlistener(listener);

_eventdispatcher->removealleventlisteners();

定義分發器和自定義事件***

方法1

void thunder::meet(eventcustom* event)  //響應函式

auto meetlistener = eventlistenercustom::create("meet", cc_callback_1(thunder::meet, this));

//"meet"是自定義的事件名字,thunder::meet是響應函式

_eventdispatcher->addeventlistenerwithfixedpriority(meetlistener, 1);

方法2
_eventdispatcher->addcustomeventlistener("meet", (eventcustom* event));
發布事件
eventcustom e("meet"); //自定義事件

int a =

1;e->setuserdata(&a);

_eventdispatcher->dispatchevent(&e);

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

cocos2d 的touch事件要點

在使用cocos2d開發遊戲時,免不了要涉及到touch事件。使用cclayer時,可以簡單的設定self.istouchenable yes,然後改寫 void cctouchesbegan nsset touches withevent uievent event 方法,即可實現觸控事件的接收及...

批處理處理美術資源 cocos2d

echo off color 0a rmdir s q f fonts atlas rmdir s q 2x mkdir 2x mkdir 2x icons mkdir 2x icons item mkdir 2x icons spell mkdir 2x fonts mkdir 2x fonts ...