3.3之前的版本可以通过 eventManager.addListener(listener) 创建一个全局监听 但是3.3版本无法获取eventManager 所以目前没有办法做这个功能 官方能出个解决方案吗?
要实现的效果就是 当用户触摸点击任意位置时都能收到相关事件 和节点无关
目前只能做到 将节点放在最上层 然后使用 this.node.eventProcessor.touchListener.setSwallowTouches(false) 来做穿透实现
但是!这就必须要保证这个节点必须在最上层
systemEvent.on(SystemEvent.EventType.TOUCH_START, this.onTouchStart, this);
这样监听也无法做到 点击任意位置收到事件 会被按钮吞掉事件
创建个最高层级的节点,然后做事件穿透也可以达到点击任意位置收到事件的效果
我的意思是说 和节点无关 就是在某个脚本里监听点击事件 不需要考虑监听的脚本节点是否在最高层 我说的是常驻节点上想全局监听点击事件 之前是可以通过eventManager来做到的 现在官方把这个给废弃掉了 目前无解 我认为3.3版本现有API压根就实现不了这个功能
有没有官方的大佬给解答一下?
你在最高层挂个脚本,监听点击,做穿透,然后把点击事件转发到全局就行了
嗯 目前只能这么做了 只要保证常驻节点是最高层就可以了
我也遇到了这个问题,touch事件可以这么解决,mouse事件不行。
“mouse-down”与“mouse-up”姑且可以用touch事件代替。
只有“mouse-move”这个事件我没有找到有什么办法可以处理。
姑且可以这么写:
this.node.on(Node.EventType.MOUSE_MOVE, (e: EventMouse) => {
e.isStopped = () => {
if (e.target === this.node) {
return false;
}
return e.propagationStopped || e.propagationImmediateStopped;
};
}, this);
有bug。