cocos2d-js的自定義事件的兩種創(chuàng)建方法

自定義事件是當(dāng)其它事件不滿足用戶的時(shí)候可以自己定義。像傳遞值或者對(duì)象。

我們都知道創(chuàng)建一個(gè)監(jiān)聽器無非就是兩個(gè)步驟:一是創(chuàng)建Listener彤悔,二是添加到eventManage上噪服。但是EventCustom多了一個(gè)需要自己調(diào)度

dispatchCustomEvent或者dispatchEvent.

第一種方法:

首先是創(chuàng)建自定義Listener:

[java]?view plain?copy

this.listener?=?cc.EventListener.create({??

event:?cc.EventListener.CUSTOM,//事件類型---自定義??

eventName:"event_custom_name",???//事件名稱??

????????????callback:?function?(event)?{??

cc.log("event?=?"+event.getUserData());??

????????????}??

????????});??

然后是添加到eventManage上:

[java]?view plain?copy

cc.eventManager.addListener(this.listener,1);??

官方文檔是對(duì)后面那個(gè)1說是自定義事件時(shí)候的固定優(yōu)先級(jí)

最后是派發(fā),也就是調(diào)用

[java]?view plain?copy

var?event?=?new?cc.EventCustom("event_custom_name");??

event.setUserData("123");??

cc.eventManager.dispatchEvent(event);??

實(shí)例:

[java]?view plain?copy

var?EventCustomLayer?=?cc.LayerColor.extend({??

listener:null,??

????ctor:?function?()?{??

this._super();??

var?item?=new?cc.MenuItemFont("onclick",this.onclick);??

var?menu?=new?cc.Menu(item);??

this.addChild(menu);??

this.listener?=?cc.EventListener.create({??

event:?cc.EventListener.CUSTOM,//事件類型---自定義??

eventName:"event_custom_name",???//事件名稱??

????????????callback:?function?(event)?{??

cc.log("event?=?"+event.getUserData());??

????????????????event.getUserData().logHellow();??

????????????}??

????????});??

cc.eventManager.addListener(this.listener,1);??

????},??

????onclick:?function?()?{??

var?layer?=new?OtherLayer();??

var?event?=new?cc.EventCustom("event_custom_name");??

????????event.setUserData(layer);??

????????cc.eventManager.dispatchEvent(event);??

????}??

});??

var?OtherLayer?=?cc.LayerColor.extend({??

????ctor:?function?()?{??

this._super();??

????},??

????logHellow:?function(){??

cc.log("Hellow");??

????}??

});??

var?EventCustomScene?=?cc.Scene.extend({??

????ctor:?function?()?{??

this._super();??

var?layer?=new?EventCustomLayer();??

this.addChild(layer);??

????}??

})??

例子通過自定義事件把OtherLayer對(duì)象用event.setUserData傳遞到this.listener中然后用event.getUserData得到對(duì)象恨诱。并且調(diào)用對(duì)象中的方法

最后輸出:

第二種:可以攜帶多個(gè)參數(shù)的自定義事件

添加自定義事件:

[java]?view plain?copy

cc.eventManager.addCustomListener("event_custom_name",?function?(event)?{??

cc.log("hello");??

cc.log("b?=?"+?event.getUserData().b);??

????????????event.getUserData().a.logHellow()??

????????});??

派發(fā)事件:

[java]?view plain?copy

cc.eventManager.dispatchCustomEvent("event_custom_name",{a:new?OtherLayer(),b:"csdn"});??

第二個(gè)參數(shù)是用大括號(hào)括起來歇式、可以自定義個(gè)多個(gè)參數(shù),并且參數(shù)是可以是任意類型的值或者對(duì)象胡野。在接收事件的地方可以用event.getUserData().加參數(shù)名調(diào)用材失。如:event.getUserData().b

例子:

[java]?view plain?copy

var?EventCustomLayer?=?cc.LayerColor.extend({??

listener:null,??

????ctor:?function?()?{??

this._super();??

var?item?=new?cc.MenuItemFont("onclick",this.onclick);??

var?menu?=new?cc.Menu(item);??

this.addChild(menu);??

cc.eventManager.addCustomListener("event_custom_name",?function?(event)?{??

cc.log("hello");??

cc.log("b?=?"+?event.getUserData().b);??

????????????event.getUserData().a.logHellow()??

????????});??

????},??

????onclick:?function?()?{??

cc.eventManager.dispatchCustomEvent("event_custom_name",{a:new?OtherLayer(),b:"csdn"});??

????}??

});??

var?OtherLayer?=?cc.LayerColor.extend({??

????ctor:?function?()?{??

this._super();??

????},??

????logHellow:?function(){??

cc.log("Hello?World");??

????}??

});??

var?EventCustomScene?=?cc.Scene.extend({??

????ctor:?function?()?{??

this._super();??

var?layer?=new?EventCustomLayer();??

this.addChild(layer);??

????}??

})??

輸出的結(jié)果是:

刪除自定義事件:

removeAllListeners()

移除所有監(jiān)聽者

removeCustomListeners(customEventName)

移除有同樣事件名字的所有自定義監(jiān)聽者

removeListener(listener)

移除一個(gè)監(jiān)聽者。

removeListeners(listenerType, recursive)

移除有相同事件監(jiān)聽者類型的所有監(jiān)聽者硫豆,或者一個(gè)節(jié)點(diǎn)的所有監(jiān)聽者

來源http://blog.csdn.net/a641832648/article/details/50832780

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末龙巨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熊响,更是在濱河造成了極大的恐慌旨别,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汗茄,死亡現(xiàn)場離奇詭異秸弛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門递览,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叼屠,“玉大人,你說我怎么就攤上這事绞铃【涤辏” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵儿捧,是天一觀的道長荚坞。 經(jīng)常有香客問我,道長菲盾,這世上最難降的妖魔是什么颓影? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮懒鉴,結(jié)果婚禮上诡挂,老公的妹妹穿的比我還像新娘。我一直安慰自己疗我,他們只是感情好咆畏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吴裤,像睡著了一般旧找。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麦牺,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天钮蛛,我揣著相機(jī)與錄音,去河邊找鬼剖膳。 笑死魏颓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吱晒。 我是一名探鬼主播甸饱,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仑濒!你這毒婦竟也來了叹话?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤墩瞳,失蹤者是張志新(化名)和其女友劉穎驼壶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喉酌,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡热凹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年泵喘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片般妙。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纪铺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出股冗,到底是詐尸還是另有隱情霹陡,我是刑警寧澤和蚪,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布止状,位于F島的核電站,受9級(jí)特大地震影響攒霹,放射性物質(zhì)發(fā)生泄漏怯疤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一催束、第九天 我趴在偏房一處隱蔽的房頂上張望集峦。 院中可真熱鬧,春花似錦抠刺、人聲如沸塔淤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽高蜂。三九已至,卻和暖如春罕容,著一層夾襖步出監(jiān)牢的瞬間备恤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工锦秒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留露泊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓旅择,卻偏偏與公主長得像惭笑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子生真,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品沉噩,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式汇歹。簡單...
    舟漁行舟閱讀 7,726評(píng)論 2 17
  • 單例模式 適用場景:可能會(huì)在場景中使用到對(duì)象屁擅,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建产弹,需要時(shí)才創(chuàng)建 最常見的單例模式派歌,...
    Obeing閱讀 2,058評(píng)論 1 10
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容弯囊,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,046評(píng)論 0 29
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式胶果。設(shè)計(jì)者無需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性匾嘱。 1....
    LaBaby_閱讀 1,330評(píng)論 0 2
  • “寶劍鋒自磨礪出,梅花香自苦寒來” 第一次意向早抠,我是梅花霎烙,印象中那朵不折不撓在寒冬中綻放美麗的花兒像極了我,即使經(jīng)...
    簡伊_1446閱讀 436評(píng)論 0 0