// 自定义事件
创建侦听,当接受到"MY_AIRCRAFT"事件时,用全局变量_sp接住传入的东西
cc.eventManager.addCustomListener("MY_AIRCRAFT",this._receive.bind(this))
_receive: function (event){ this._sp = event.getUserData() },
"MY_AIRCRAFT" : 事件名
抛出一个名为
"MY_AIRCRAFT"的自定义事件 ,给接受到的地方传去this_sp
cc.eventManager.dispatchCustomEvent("MY_AIRCRAFT",this._sp)
// 举个栗子
var tempLayer = cc.Layer.extend({
id:0,
money:0,
ctor:function (id,offset) {
this._super();
this.id = id
var sp = new cc.Sprite('res/tu.jpg')
sp.setPosition(offset,offset)
this.addChild(sp)
},
showMoney:function(){
cc.log(this.id,' money :', this.money)
},
})
var HelloWorldLayer = cc.Layer.extend({
ctor:function () {
this._super();
var temp1 = new tempLayer(1,100)
var temp2 = new tempLayer(2,200)
this.addChild(temp1)
this.addChild(temp2)
cc.eventManager.addCustomListener(USER_CLICK_SHRED_EVENT,function(event){
var data = event.getUserData();
cc.log('获得了数据',data)
})
},
onExit:function(){
cc.eventManager.removeCustomListeners(USER_CLICK_SHRED_EVENT)
}
});
var USER_CLICK_SHRED_EVENT = "USER_CLICK_SHRED_EVENT";
var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super();
var layer = new HelloWorldLayer();
this.addChild(layer);
var temp1 = new tempLayer(3,300)
this.addChild(temp1)
temp1.money = 9999
cc.eventManager.dispatchCustomEvent(USER_CLICK_SHRED_EVENT, temp1.money)
}
});
"MY_AIRCRAFT" :
事件名
自定义事件是在你需要的时候抛出,然后去在合适的地方接受
比如你飞机发子弹,是飞机在需要发子弹的时候去抛出一个自定义事件,
告诉子弹,"我需要发射子弹",子弹接受到了再去发出子弹
自定义事件你抛出了多少次,接收的地方会自动接受