相关文章推荐
安静的包子  ·  Elian Codes | 💄 ...·  3 月前    · 
踢足球的洋葱  ·  GitHub - ...·  3 月前    · 
害羞的篮球  ·  Konva.js - ...·  3 月前    · 
玩足球的手套  ·  Disabling canvas ...·  3 月前    · 
好帅的扁豆  ·  Unity 性能规范·  3 月前    · 
潇洒的蚂蚁  ·  中国历史精神_百度百科·  1 年前    · 

如果在画布上添加一个sprite,如果这个sprite和画布都添加了鼠标点击事件,只要点击一次sprite,画布会响应两次点击事件


代码是这样的

点击后画布点击事件执行两次

sprite鼠标事件不论用MOUSE_DOWN还是MOUSE_UP都会让cavas事件执行两次,如果换成触摸事件TOUCH_START就不会出现这种问题,有哪位知道原因吗?

看下上面的引擎逻辑
3.6.2的 _handleMouseDown 和 _handleMouseUp 代码是一模一样的,且都有 event.propagationStopped = true,实测结果:mouseup正常,mousedown正常
2.4.10的 _mouseDownHandler 和 _mouseUpHandler 其它代码一模一样,只少了一行node.stopPropagation(); ,实测结果:mouseup正常,mousedown会有重复。_mouseDownHandler补上这一句之后,重新编译引擎,实测结果就正常了
确定引擎就是这样设计的?不是漏了一句?

刚对了下,你这个冒泡结果正确应该是下面这个结果,所以引擎侧是有问题的,这个版本的 mouse 事件处理有问题,如果使用 touch 事件,就没有这个问题。

onMouseDown3
onMouseDown2
onMouseDown1