昨天同事提供了另一条思路,让我也实作个Demo:
点击的同时,让触摸事件的对象 active=false ,当前的对象消失后再点别的按钮,就能触发类似错误。
但基本上这是另一种触发bug 的方法,事实上先前测连点的bug 时小弟在 line 492 下断点触发,也无须连点即可触发错误。
( 上述两种方法 listener._claimedTouches.length 都为0)
希望这个简单的Demo能有帮助。assets.zip (4.6 KB)
昨天同事提供了另一条思路,让我也实作个Demo:
点击的同时,让触摸事件的对象 active=false ,当前的对象消失后再点别的按钮,就能触发类似错误。
但基本上这是另一种触发bug 的方法,事实上先前测连点的bug 时小弟在 line 492 下断点触发,也无须连点即可触发错误。
( 上述两种方法 listener._claimedTouches.length 都为0)
希望这个简单的Demo能有帮助。assets.zip (4.6 KB)
在CANVAS绑定了点击事件, 正常慢点,可以看下控制台,有打印信息。
如果这时狂点方块,, CANVAS上点击时间就无效了, 也就是所有操作都失效了
方块的点击事件会触发:方块所在的父级用tween的方式消失/失效,并没有对CANVAS做任何操作
PS: 如果把 cc.macro.ENABLE_MULTI_TOUCH = false; 删除,则不会有这个BUG出现
感谢反馈,我们已经复现问题。会尽快修复。
辛苦了
你好,问一下哈,2.3.0 以后的版本 视频组件如何隐藏上边的控件 比如暂停播放以及进度条。4444444
辛苦了,感谢引擎大佬们~
目前这个问题是否已经修复了呀? 我这边使用的2.3.2版本上设置 ENABLE_MULTI_TOUCH = false之后 mask上的手势点击还是无效的
请问手势点击是什么操作?能否提供 demo 给我们测试?
修复合并到2.3.3版本了,你用2.3.3版本测试看下吧
2.4.2 也遇到了 ENABLE_MULTI_TOUCH = false后, 点快的时候 同时设置node.active 导致所有touch事件无效. 基本就是 CCEventManager.js 493行, 在这里直接 return false.
if (!cc.macro.ENABLE_MULTI_TOUCH && eventManager._currentTouch) {
let node = eventManager._currentTouchListener._node;
if (node && node.activeInHierarchy) {
return false;
}
}
不是100%复现…
2.4.3 也有这个问题, 测试环境是 mac 上google浏览器
查看我框出来的代码,在_currentTouchListener被赋值之后,且在关闭多点触控下,永远只会响应最上层的触摸事件
@huanxinyin
在最顶层的节点触摸事件被触发时,_currentTouchListener会被记录,else if 中的 eventManager._clearCurTouch() 并不会被执行,之后后续的所有事件都会走 3 这个逻辑,导致 最顶层节点事件的swallowTouches 参数并未起到 作用
请问解决了吗 是怎么样解决的呢?我的2.4.3最新版还是出了同样的问题
我2.4.4最新版还是会出这个问题 用H5很容易测试出来 按住一个按钮 疯狂点击其他按钮就有几率触发
你可以试试在组件销毁的时候把注册的事件给 off 掉,这个开关就是在点击时标记有点击,松开时清除标记,可能是你的操作标记了有点击,在某种情况下销毁了 node, 导致无法响应松开,也就无法清除标记,后面的点击就再也无法响应了, off 好像可以清空标记,我是碰见过这种情况
不好意思挖个坟啊,我在2.4.5也遇到了类似的,首先不是必先,其次我没有销毁组件,只是在点击后先播了个spine然后隐藏了该节点,然后就会偶发性在该节点再次显示的时候就会导致所有的节点的点击事件都无法触发了,我也不是很好复现不清楚是不是类似的问题