[0]鼠标 mouseMove移动被上层控件截获问题

我在一个box 上监听 mosemove 事件当移动到 在这个 box 层上面且监听鼠标事件的控件时会导致 move 事件监听不到被截获掉,但是 如果我在 stage 上监听,就发现上层 全屏 view 反而不能截获鼠标事件
已邀请:

Laya_Fred

赞同来自:

您好,我这里按照您说的设置没有复现出您说的情况,您提供一个可以复现的demo吧,这样方便定位问题。

Laya_Fred

赞同来自:

您好,我这里设置的层级如下:

Snipaste_2021-10-29_16-13-47.png

监听效果如下:

1.gif

没有出现您说的情况。

187*****344

赞同来自:

视频不知道咋上传,看这张图跟下面的日志吧, 当鼠标移动到按钮上的时候 三角形已经不跟着动了,而且 touchNode 的日志以不在打印,也就是说 同时bt 按钮的触摸日志一直在打印.你那个视频你是不是 监听鼠标事件的事 stage 或者直接挂到根节点上的,这种情况下不会被其他的截获

Laya_Fred

赞同来自:

您好,您上传的图片与日志没有看到,您上传一个描述您问题的demo吧,这样可以更直观的查看问题。

187*****344

赞同来自:

这是demo 代码,跟层级结构跟监听。testBox 拖动的精灵,当拖动到任何监听鼠标事件的控件时,他的move 事件就会被截获。如果把鼠标事件挂在到 场景或者stage 上那全屏的遮照就 不能截获鼠标事件

187*****344

赞同来自:

1636357904295.jpg


1636357807463.jpg


1636357755427.jpg

 

Laya_Fred

赞同来自:

您好,在您的场景层级中,bg是在最上层,当quickStart与bg同时监听时,由于quickStart的层级更高,且quickStart的mouseThrough属性为false,不会进行穿透,所以此时quickStart截获了监听事件。如果需要穿透quickStart的话,可以在ide内设置quickStart的mouseThrough属性为true。
以MOUSE_MOVE事件举例,您可以断点调试,看事件派发的处理:
在laya.core.js内的class MouseMananger内的check函数

1.png

 
在laya.core.js内派发到onMouseMove事件:

2.png

 

要回复问题请先

商务合作
商务合作