Creator中如何控制触摸吞噬

Creator中没有setTouchEnabled和setSwallowTouches方法,如何控制层与层之间的触摸吞噬?
当开启吞噬时不往下层传递触摸事件,关闭触摸吞噬时需要将触摸事件传递到下层。

两层之间不是父子节点关系,不在事件冒泡的范畴,所以也不能用冒泡来处理。

2赞

Creator 中始终吞噬,只要你的上层节点注册了 touch / mouse 事件,下面的节点接收不到(除非是父节点通过冒泡)

你需要的是暂时关闭上层节点的事件监听器,或者使用 cc.eventManager.pauseTarget

cc.eventManager.pauseTarget在1.4版本中不起作用的问题我看到已经有人反馈了,使用this.node.on注册的触摸事件得用this.node.off关闭,想要再次开启只能再次使用this.node.on注册一次吗?还是通过cc.eventManager.pauseTarget也能控制this.node.on注册的事件?

可不可以在不关闭上一层触摸事件的同时让它的触摸事件穿透到下层?

可以看一下我的回复

http://forum.cocos.com/t/creator-v1-4-eventmanager-pausetarget/44021/7?u=panda

需要用 this.node.on 重新注册,pauseTarget 不会取消注册,只是暂停节点的事件响应,所以你要的不关闭并穿透,就只能依靠 pauseTarget 了

目前Creator好像还没有同级节点及其他非父子节点的事件派发机制,看来去中心化和原来2dx统一的消息中心各有利弊,这个cc.eventManager是全局唯一的吗?可以代替节点的事件派发机制在各种关系的节点间传递信息吗?

不建议使用 cc.eventManager,暂时只有 pauseTarget 和 resumeTarget 还没有挪出来,不过也只是时间问题

mark

我看现在引擎提示cc.eventManager会在2.0中移除掉,我们项目中需要一个功能,就是可以触摸穿透。而CCC的 节点派发时间 on 和 off都是默认吞噬的,那么我只能使用cc,eventManager来实现,所以到了2.0以后我该怎么实现触摸穿透呢

1赞

把上层节点的注册事件node.off即可,零点几秒后再node.on回来,根据需求

我这样试了,可是第一次点击的时候决定要不要穿透,要的话就this.node.off,但是这个时候下面的节点还没被点到,要点击第二次才点到

mark

mask

mark.