v1.7.0-rc.1MOUSE_ENTER后立刻触发MOUSE_LEAVE

在1.6.2上是没问题的
未测试rc.2

能不能提供一个 demo?谢谢!

MouseEventBug.rar (167.8 KB)
DEMO复现了一下,发现问题是在监听了Mouse事件的元素底下添加一层shadow,并用了blockinputevents组件或者cc.Button组件导致的BUG。
这种shadow用法在1.6.2没有问题,在1.7.0-rc.1会有问题。
有些老项目没用blockinputevents,用的还是cc.Button来阻止点击,不过这两个组件在1.7.0-rc.1都有BUG,表现还不一致,请看下是写法问题,还是引擎BUG。

不知道有没有回复,已提供DEMO。

可以确定是1.7鼠标事件逻辑改动引起的问题,希望能给一个有效的解决方案

这个问题的表象是啥?
我看都有进入enter1和leave1啊,但是item.scale不生效。

1.6.2就能生效啊,但是在rc1中鼠标移动enter完同时就leave了,scale相当于没变。

正常的表现不应该是移入时enter,移出时leave吗?现在hover的时候移动就不断的触发enter和leave。而且和scale没有任何关系,写这个只是为了显眼一点罢了,主要问题是1.7里面mouse事件逻辑改动,导致mouse事件和shadow交互时产生了问题。

看了下rc2也是一样的问题,我看1.7的代码里面鼠标事件主要的逻辑改动是不再直接stopPropagation了,虽然这个改动挺合理的,但是现在的问题是如果一个监听了鼠标事件的节点A叠在另一个监听鼠标事件的节点B之上时,当鼠标在节点A范围内每移动一下都会连续触发leaveB,enterA,leaveA,enterB,这应该是有问题的吧?

嗯,问题就在这里,需要把 stopPropagation 放到最后调用就 ok 了,后面会修复

修复方法:

https://github.com/cocos-creator/engine/pull/2135/