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

Cocos Creator v2.3.0 测试版发布帖(正式版已发) 继续讨论:
@jare 大佬,反馈下 cc.macro.ENABLE_MULTI_TOUCH = false 问题,引用之後运行调试,再不断快速连点ccButton 组件上,就会触发屏幕触摸失效的错误,拿官方范例试也是轻易复现此错误,再烦请引擎大佬们抽空看看,感谢。

我也是这个问题,连点之后 所有的触摸和按钮事件全部都不好使了,很急,求殷勤大佬赶紧看看,好急啊,蟹蟹了

问下你解决了么

麻烦提供下测试的平台信息,我们验证下。

原本是发在安卓跟iOS 的app上,snoy XZP、vivo Y17、iPhone 6s 连点都能触发,但 cc.macro.ENABLE_MULTI_TOUCH 设回 true 前面说的几个装置怎么点都能没事,一切运作良好。

我这用苹果电脑运行2.3.0 编辑器, 拉官方范例後开 initEngine.js 塞 cc.macro.ENABLE_MULTI_TOUCH = false ,直接浏览器上运行就能复现,在按鈕上每秒能点到三、四下的话,百试百灵,在 chrome、brave、safari几个试过,应该不限浏览器就能操作。

遇到同样的问题,引擎组关注 一下吧,,很神奇的bug

现在只能测试出 和 cc.macro.ENABLE_MULTI_TOUCH = false 有关

我用的2.3.1 要demo的话我可以提供, 非常简单就能测试出来

麻烦上传下demo,我们再测试看看~ 一直是复现不了的。

开chrome 用开发者模式在 CCEventManager.js 下断点

正常单次单次点击:不会进断点

疯狂连续点击:拦住了

貌似卡在这儿,不知有无帮助,小弟继续爬code…

我吞噬遮罩节点在关闭的一瞬间连点屏幕也会失控,啥都点不了

是否和快速连点可能会无法将 eventManager._currentTouch 清除有关?

在快速连点时 ,line 503 的判断,是否因listener._claimedTouches 提早被清空?
(触发错误时,log 出 listener._claimedTouches.length 为0)


图一

普通操作时,可以看到 line 492的 eventManager._currentTouch 的值是 null


图二

快速连点时, line 492的 eventManager._currentTouch 并没有清掉


图三

成功复现错误时,都会卡在 line 493 return false

2.3.2 版本 真机 QQ浏览器 UC浏览器 测试都有这个问题;

昨天同事提供了另一条思路,让我也实作个Demo:
点击的同时,让触摸事件的对象 active=false ,当前的对象消失后再点别的按钮,就能触发类似错误。

但基本上这是另一种触发bug 的方法,事实上先前测连点的bug 时小弟在 line 492 下断点触发,也无须连点即可触发错误。
( 上述两种方法 listener._claimedTouches.length 都为0)

希望这个简单的Demo能有帮助。assets.zip (4.6 KB)

NewProject.zip (746.1 KB)

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

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

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

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

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

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

辛苦了

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