toggle组件点击穿透

  • Creator 版本:2.0.9

  • 目标平台: Web

  • 详细报错信息,包含调用堆栈:

  • 重现方式:在Toggle组件的toggle节点中,设置CheckEvents,在ToggleContainer节点的同级别的节点A的脚本中,使用:this.node.on(cc.Node.EventType.MOUSE_DOWN,function(){})监听事件;运行点击Toggle,发现节点A监听事件被触发了。点击toggle组件发现点击事件被传递了,我并不想这个事件传递下去。

  • 之前哪个版本是正常的 :暂时没发现

  • 手机型号 :无

  • 手机浏览器 :无

  • 编辑器操作系统 :windows系统

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

  • 出现概率:100%

  • 额外线索:

我目前的解决办法,是在节点A中,获取togglecontainer的节点,监听:this.toggle.on(cc.Node.EventType.MOUSE_DOWN,function(e:cc.Event){
e.stopPropagation();
})
但这样很麻烦。
是否有更好的解决方案?可能类似的组件都会有这样的问题,是否提供一个设置属性设置是否穿透?

试试这个
https://docs.cocos.com/creator/manual/zh/components/block-input-events.html

1赞

感谢。刚刚去调试引擎的源码了。
Button 对于clickevents中的监听事件会传递event参数,但Toggle组件的checkevents只是传递了 togglecomp,以及customeEventData。