节点显隐导致按钮事件无响应

  • Creator 版本: 3.4.1

  • 目标平台: 任意平台

  • 重现方式:附件demo

  • 首个报错:

  • 重现概率:必现

复现步骤
使用3.4.1启动demo
网页预览下,demo会自动生成预制体root,root内部逻辑使用对象池nodePool管理子节点cellItem。cellItem上有2个按钮事件,一个绑定在根节点,一个绑定在点击按钮。点击会有响应log打印

  1. 等待场景生成。此时点击cellltem,log响应正常
  2. 点击右下角关闭按钮,将设置实例化root节点隐藏。
  3. 点击右下角刷新按钮,将设置实例化root节点显示,并且在同一帧内对root节点内content下的子节点执行一次removeFromParent setParent行为,此时在进行响应按钮点击,按钮无响应,bug复现

总结,复现出现bug的时机。 只要父节点active从隐藏设置为显示,并且在这一帧内,对该父节点下子节点执行removeFromParent和setParent行为,就会导致该子节点上按钮事件响应消失。

@jare @panda @shrinktofit @EndEvil

removeFromParentBug.zip (1.8 MB)

还会出现吗,好像3.4.1解决了

必然的吧 active = false; 这一帧都不会渲染和相应事件了 可以控制透明度(opacity)属性

还是会有。可以看看后面写的说明

resources\resources\3d\engine\cocos\2d\event\pointer-event-dispatcher.ts
addPointerEventProcessor
removePointerEventProcessor
else里面的js.array.remove 挪到括号外

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。