TOUCH_CANCEL 被执行两次

creator:3.8.0


问题描述:
如上图,我在一个节点上监听了触摸事件,在TouchCancel响应里设置父节点的active为false,结果这个TouchCancel响 应又执行了一次,这不正常吧?
TestInstantiateActive.rar (8.4 KB)

@dream_chou93 大佬,也帮忙看下

image

@ChiaNing 大佬看下

这样规避下

规避的方法我也有,一次touch start 对应一次touch cancel就可以,但这算bug吗?

对,是个问题 :14:

我按你这个改了后,重新编译了引擎,确实不会触发第二次TouchCancel,但我在TouchEnd里设置也会有问题,会多触发一次TouchCancel
image

再按你这类似的改一次引擎,才不会有问题
image

:sweat_smile:

我这里还有个类似的bug,不知道什么原因,晚点试着复现一个demo。大概是一个layout列表里有N个节点,双击某个节点A后,打开另外一个界面B(这是layout列表的Active会置为false),关闭B后显示列表再单击某个节点C,这时会莫名其妙的触发节点A的TouchCancel事件。

这个问题一直有,不知道是什么原因要这么设计

不是设计如此,就是bug

大佬,这个问题也别忘了后续修复哦。

https://github.com/cocos/cocos-engine/pull/16468 这个 PR 也同时修了这个问题。

image
为了解决这个bug ,我还专门 给node 新加了一个方法,手动设置dispatchingTouch 为null,就是担心是否是刻意为之,这样只有自己用到的地方设置为null,确保其他地方不出问题