cocos2d-js的自定义事件的两种创建方法
2017-08-06 18:39
225 查看
自定义事件是当其它事件不满足用户的时候可以自己定义。像传递值或者对象。
我们都知道创建一个监听器无非就是两个步骤:一是创建Listener,二是添加到eventManage上。但是EventCustom多了一个需要自己调度
dispatchCustomEvent或者dispatchEvent.
第一种方法:
首先是创建自定义Listener:
然后是添加到eventManage上:
官方文档是对后面那个1说是自定义事件时候的固定优先级
最后是派发,也就是调用
例子通过自定义事件把OtherLayer对象用event.setUserData传递到this.listener中然后用event.getUserData得到对象。并且调用对象中的方法
最后输出:
删除自定义事件:
我们都知道创建一个监听器无非就是两个步骤:一是创建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) 移除有相同事件监听者类型的所有监听者,或者一个节点的所有监听者
相关文章推荐
- cocos2d-js的自定义事件的两种创建方法
- js原生创建模拟事件和自定义事件的方法
- 【cocos2d-js系列问题】cocos2d-js创建帧动画的两种方法
- js原生创建模拟事件和自定义事件的方法
- Cocos2d-js创建构造注册事件监听回调函数
- 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法
- JS动态创建css的两种方法
- cocos2d-js html5自定义鼠标图案及设置原点方法
- JS中创建自定义对象的方法
- Cocos2d-x 处理双击事件的两种方法
- 浅析JS动态创建元素【两种方法】
- cocos2d-js在MAC系统上创建项目初始环境的方法
- 自定义Cell上的点击事件两种方法
- JS动态创建元素(两种方法)
- JS动态创建元素的两种方法
- Cocos2d-x 处理双击事件的两种方法
- JS创建 trim() 方法,此方法在IE7、IE8中不存在 需要自定义
- HTML中关于动态创建的标签无法绑定js事件的解决方法
- [转]设置textBox的响应按钮事件的js的两种方法