关于一个事件监听的菜鸟问题。

教程里面有三种监听方式:
请问这三种都是实现相同的功能吗?有什么利弊?

// 使用枚举类型来注册
node.on(cc.Node.EventType.MOUSE_DOWN, function (event) {
console.log(‘Mouse down’);
}, this);

// 使用事件名来注册
node.on(‘mousedown’, function (event) {
console.log(‘Mouse down’);
}, this);

//玩家输入事件:
var listener = {
event: cc.EventListener.MOUSE,
onMouseDown: function (event) {
cc.log('Mouse Down: ’ + event);
},
}
cc.eventManager.addListener(listener, this.node);

一和二是一样的,因为cc.Node.EventType.MOUSE_DOWN就是一个内容为mousedown的字符串。cc.Node.EventType.MOUSE_DOWN===“mousedown”
三是cocos js旧的事件监听方法,现在已经不推荐使用(Panda大神强力推荐用node.on)。我自己的一点理解是,点击鼠标的时候,mousedown事件node.on只会向第一个接收到事件的节点的父(子)节点传递,而listener会被发送到所有监听mousedown事件的节点上(因此我有些地方还用的是listener,心里感觉对不起Panda大神)。

1赞

谢谢大师的讲解!