cocos2d-js的自定义事件的两种创建方法

自定义事件是当其它事件不满足用户的时候可以自己定义。像传递值或者对象。

我们都知道创建一个监听器无非就是两个步骤:一是创建Listener,二是添加到eventManage上。但是EventCustom多了一个需要自己调度

dispatchCustomEvent或者dispatchEvent.
第一种方法:

首先是创建自定义Listener:

this.listener = cc.EventListener.create({  
            event: cc.EventListener.CUSTOM,   //事件类型---自定义  
            eventName: "event_custom_name",   //事件名称  
            callback: function (event) {  
                cc.log("event = "+event.getUserData());  
            }  
        });  

然后是添加到eventManage上:

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

官方文档是对后面那个1说是自定义事件时候的固定优先级
最后是派发,也就是调用

var event = new cc.EventCustom("event_custom_name");  
event.setUserData("123");  
cc.eventManager.dispatchEvent(event);  

实例:

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对象用event.setUserData传递到this.listener中然后用event.getUserData得到对象。并且调用对象中的方法
最后输出:

event = [object,object]
Hellow

删除自定义事件:

removeAllListeners()
移除所有监听者
removeCustomListeners(customEventName)
移除有同样事件名字的所有自定义监听者
removeListener(listener)
移除一个监听者。
removeListeners(listenerType, recursive)
移除有相同事件监听者类型的所有监听者,或者一个节点的所有监听者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值