触摸的问题

简单描述一下:
scene里有个LayerA,点击layerA后在scene里添加一个LayerB,LayerA的zorder比LayerB大,那么问题来了

本来正常的情况是LayerA会拦截所有的触摸事件(因为A在最上层),但是如果你在添加LayerB的一瞬间点击屏幕,LayerB还是能接收到触摸事件的。

请问是为什么?

我觉得触摸的截断不是由zorder来实现的,zorder只是处理在纵轴上的显示层级,而触摸是由监听来管理的,当你需要屏蔽底层的layer时,应该关掉底层的触摸监听。或者设置优先级,用上一层的优先级吞吃下层的。我之前也遇到过这样的问题,不过我的是在3.2版本里,优先级有一些问题,吞吃没效果。所以我的解决思路就是在每一层都添加一个按钮、窗口滑动或者滚动的屏蔽函数。需要时就开启,不需要时就关闭。这样也实现了多层之间的触摸截断问题。

关于 “不过我的是在3.2版本里,优先级有一些问题,吞吃没效果” 这个大概是你调用了layer的 setTouchSwallow(),这个方法已经被不推荐使用了,除非你不是使用监视器模式(用旧版本的回调模式,才起作用),如果是监视器,请调用监视器自己的 setTouchSwallow(),测试下来是有效的。