2.3 关闭多点控制时,快速连点造成屏幕触控失效

NewProject.zip (746.1 KB)

做了一个简单的DEMO,可以测试一下,很容易就复现

在CANVAS绑定了点击事件, 正常慢点,可以看下控制台,有打印信息。

如果这时狂点方块,, CANVAS上点击时间就无效了, 也就是所有操作都失效了

方块的点击事件会触发:方块所在的父级用tween的方式消失/失效,并没有对CANVAS做任何操作

PS: 如果把 cc.macro.ENABLE_MULTI_TOUCH = false; 删除,则不会有这个BUG出现

感谢反馈,我们已经复现问题。会尽快修复。

辛苦了

你好,问一下哈,2.3.0 以后的版本 视频组件如何隐藏上边的控件 比如暂停播放以及进度条。4444444

辛苦了,感谢引擎大佬们~

多谢反馈,问题已修复,下个版本更新。

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

目前这个问题是否已经修复了呀? 我这边使用的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 参数并未起到 作用

然后还有一个疑惑,这边selTouch 在needsMutableSet为true的情况下会是一个索引么

argsObj.touches.splice(selTouch, 1);

请问解决了吗 是怎么样解决的呢?我的2.4.3最新版还是出了同样的问题

我2.4.4最新版还是会出这个问题 用H5很容易测试出来 按住一个按钮 疯狂点击其他按钮就有几率触发

1赞

你可以试试在组件销毁的时候把注册的事件给 off 掉,这个开关就是在点击时标记有点击,松开时清除标记,可能是你的操作标记了有点击,在某种情况下销毁了 node, 导致无法响应松开,也就无法清除标记,后面的点击就再也无法响应了, off 好像可以清空标记,我是碰见过这种情况

不好意思挖个坟啊,我在2.4.5也遇到了类似的,首先不是必先,其次我没有销毁组件,只是在点击后先播了个spine然后隐藏了该节点,然后就会偶发性在该节点再次显示的时候就会导致所有的节点的点击事件都无法触发了,我也不是很好复现不清楚是不是类似的问题

2.4.4碰到这个问题了,偶现卡死,各种按钮都点不动,有没有大佬给个解决方案