3.6 2d项目Input.EventType.MOUSE_MOVE会卡住

我用3.6做了一个2d项目,
项目里做了一个跟随鼠标的准星。
start() {
input.on(Input.EventType.MOUSE_DOWN, this.onMouseDown, this);
input.on(Input.EventType.MOUSE_MOVE, this.onMouseMove, this);
}
注册了一个系统的鼠标点击和鼠标移动事件,用来判断开枪和准星移动。
我有在场景里添加了一个lable,用来做鼠标点击的目标。
start() {
this.node.on(Node.EventType.MOUSE_DOWN, (event) => {
console.log(this.node.name + ’ Mouse down’);
}, this);
}
并监听了一个节点的鼠标点击事件。
当准星移动到lable边缘时,准星注册的MOUSE_MOVE事件就无法接收到了,准星会卡在lable边缘。
只有鼠标移出label范围才会从新获得MOUSE_MOVE回调,准星会继续移动。
不知道是我写有问题吗?求指教。

这个问题在ui组件button上也会产生。

注册鼠标点击和鼠标移动事件的节点要放到顶层,然后事件不阻止吞噬

3.8.2版本
image
查看源码是input的优先级是0,UI的1
将input的优先级调到比UI高就行了

(input as any)._inputEventDispatcher.priority = 2;

(input as any)._eventDispatcherList.sort((a, b): number => b.priority - a.priority);

1赞

这个可能就是设计问题了,要在UI上显示准星,UI要继承全局move,可以在UI的move方法里执行一下全局方法。