在同一个node上多次添加重复事件, 会被重复添加, 并被重复调用。 添加事件中的防止重复添加的代码并没有起作用, 同时node.off也不能正常移出已添加的事件。
调试了下原码, 应该是CallbacksHandler.prototype.has函数的问题, index = list.indexOf(callback); 这段代码虽然list中已经存在该callback, 但是indexOf仍然返回-1,导致不能生效
在同一个node上多次添加重复事件, 会被重复添加, 并被重复调用。 添加事件中的防止重复添加的代码并没有起作用, 同时node.off也不能正常移出已添加的事件。
调试了下原码, 应该是CallbacksHandler.prototype.has函数的问题, index = list.indexOf(callback); 这段代码虽然list中已经存在该callback, 但是indexOf仍然返回-1,导致不能生效
能提供代码样例吗?我估计是你添加事件的写法有问题,比如:
this.node.on('xxx', function () { ... });
这样是没办法防止重复的,因为你每次添加事件,实际上回调函数都是重新创建了一个匿名方法。你也没办法 off 这样一个匿名方法。
function onEvent (event) {
}
this.node.on(cc.Node.EventType.MOUSE_DOWN, onEvent, this.node);
所以这里只能写成成员方法喽?
看你需求咯,不需要off的方法,就不用写成成员方法