CocosCreator按钮隐藏或禁用之后,还能被点击到的原因及解决方法

按钮隐藏后还能被点击到,相信不少CocosCreator开发者遇到过这种情况。

出现这种情况的原因有很多种,鉴于今日又发现一种, 觉得有必要写篇文章记录一下。

目前已知的原因:

  1. 使用 node.pauseSystemEvent() 然后又 resumeSystemEvent() 的情况下,此时如果node.active == false, 还是能在相应位置触发事件。
  2. 执行 node.active = true 的同一帧也执行了pauseSystemEvent, 那么这个 pauseSystemEvent就不生效。
  3. 在执行 (node/node.parent).active = false 同一帧又 node.on(TouchEnd), 也会在看不见的地方触发事件。

解决方案

  • 要么从父node移除需要隐藏的node,要么不要在同一帧执行相关操作。
  • 如果不需要做h5游戏、微信小游戏,或者不在乎内置代码热更新,又喜欢ECS架构,可以考虑换Unity,因为Unity没有遇到过这种问题。