关于targetOff的问题

  • Creator 版本:1.10.2和2.1.2

  • 目标平台: Web

  • 详细报错信息,包含调用堆栈:查看日志

  • 重现方式:
    let testNode = new cc.Node;
    testNode.addComponent(cc.Label);
    testNode.getComponent(cc.Label).string = “toutiay”;
    cc.Canvas.instance.node.addChild(testNode);
    console.log(“1.初始”, cc.Canvas.instance.node.__eventTargets);
    testNode.on(cc.Node.EventType.TOUCH_START, function(){console.log(111)}, cc.Canvas.instance.node);
    console.log(“2.加事件后”, cc.Canvas.instance.node.__eventTargets);
    testNode.targetOff(cc.Canvas.instance.node);
    console.log(“3.targetOff后”, cc.Canvas.instance.node.__eventTargets);
    testNode.off(cc.Node.EventType.TOUCH_START, function(){console.log(111)}, cc.Canvas.instance.node);
    console.log(“2.off后”, cc.Canvas.instance.node.__eventTargets);

调用node的on方法添加一个事件,如果target的有值的话,target的__eventTargets会有这个node的引用。
调用node的targetOff方法,可以去掉相应事件,但是target的__eventTargets里对node的引用还在。
调用node的off方法,可以去掉相应事件,target的__eventTargets里对node的引用也会删除。
请问这是问题,还是我的用法不对,用法在上面。

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

1赞

你好,确实是bug
已修复,详见pr:
https://github.com/cocos-creator/engine/pull/5052

好的,谢谢~