creator鼠标事件和触摸事件的问题

我测试了发现鼠标事件确实是无法冒泡的。看底层代码
在这里会停止冒泡。而这里判断鼠标点中就会设置为停止冒泡。这些代码我没理解错吧?

然后你在看看触摸的控制,并没有阻止冒泡

这样看能不能解决:逻辑都写在Touch事件里,然后再单独添加一个Mouse事件,专门写入一个全局变量,标识当前是左键还是右键点击。保证Mouse事件先于Touch事件触发即可。

mouse事件比touch晚触发。你去看底层的代码就知道为什么了

你这种方法我之前试过。。。可是你看底层这里的代码。。。mouse时间是晚过touch事件触发的。所以并没有什么用。并不是通过节点的优先级可以解决的

除非你改底层或自己写一个触摸机制。。。前者改底层升版本很麻烦。后者更麻烦

event manager 已经是很旧的一个模块了,里面并不会停止鼠标事件的冒泡。它的 shouldStopPropagation 是用在优先级上面的,和这里的冒泡是两码事。

那Touch监听里面setTimeout(()=>{逻辑代码},0);让事件逻辑异步执行,这样的话Mouse事件就设置完毕了。

。。。那现在的鼠标确实没被下层的node接受到,我要让事件继续传递应该怎么做?

我直接去修改私有变量了。。。自己傻了。。。虽然这样做不太好

我直接把事件的_propagationStopped的私有变量改了。设置为不停止就可以。既然说触摸和鼠标除了多点之外是一样的,一个设置停止一个设置为不停止要分别处理也是醉了。

这个和冒泡没关系。鼠标只有渲染在最上层的节点会响应。如果你要下层节点也接收到,那你要把上层的鼠标监听都去掉。

抱歉前面没说清楚,这两个事件都支持冒泡。但是你点中的节点要没有接收事件才行。如果有接收事件,鼠标会拦截事件,触摸默认不会拦截。至于一个拦截一个不拦截,要问问 @panda @pandamacro

实际情况不可能全都是只监听一层把。。。感觉其实没必要这么处理。。。类似触摸那样让我们上层控制不就好了

可是我测试的时候监听了mousedown事件的确是支持冒泡的啊

按理说是接受不到的。。。看底层代码中鼠标确实是调用了event.stopPropagation()阻止下层接受事件。。。话说我理解的冒泡是不是和你们理解的不一样啊。。。

不不不,我刚刚又试了试,又不冒泡了…那天我试的时候的确是冒泡了的…

手打黑人问号脸。。。

mouseEvent.zip (519.1 KB)

支持冒泡,但是on函数要四个参数,第四个填true,我demo给你贴上来了

。。。看源码是没看出能被限制。。。我试了也不可以。。。

我的demo不冒泡吗?