反馈一个bug cc.macro.ENABLE_MULTI_TOUCH = false 导致 node._touchListener.setSwallowTouches(false);失效

这个问题还有

2.4.3问题还有,希望官方修复,或者给一个pr @panda @jare

@panda @jare 希望看看啊,去年到今年了都还没修复多点问题,目前3.1仍然存在该问题

靠!我用了fgui发现会阻挡ccc的点击事件,然后一直调试,然后发现开了多点触碰就好了。原来是引擎bug,我裂开

@panda @jare 大佬,求修复啊

难道穿透下去算点击两个点了?这样想的话好像就没毛病。。。。。。。。

靠 卡了1天 解决了

佬,咋解决的

麻了,2.4.8也有这个问题,没想到关闭多点触摸会把点击穿透事件也取消掉

@panda 这个可以修复吗 影响好大 啊

顶一下!确实很蛋疼

@panda @jare
这个问题看看吧

补充,这个穿透节点的父节点中,不能有Blockinput的组件,否则也会造成无效。建议直接在最上层添加

怎么解决的, 打开多点触摸?

9999

333333

脚本 CCEventManager.js
在2个 if 判断后面添加 eventManager._currentTouchListener.swallowTouches 条件
修改如下
if (!cc.macro.ENABLE_MULTI_TOUCH && eventManager._currentTouch && eventManager._currentTouchListener.swallowTouches) {

if (!cc.macro.ENABLE_MULTI_TOUCH && eventManager._currentTouch && eventManager._currentTouch !== selTouch && eventManager._currentTouchListener.swallowTouches) {

在脚本 CCButton.js
给3个 event.stopPropagation(); 的地方增加 if 判断
修改如下:
if (!this.node._touchListener || this.node._touchListener.swallowTouches) {
event.stopPropagation();
}

然后重新编译引擎

按照你提供的方法貌似无效。

最后我还是打开了 cc.macro.ENABLE_MULTI_TOUCH = true

改了下最大点击数量,看引擎默认是10改成了1
if (cc.internal && cc.internal.inputManager) {
cc.internal.inputManager._maxTouches = count;
return;
}

不应该啊,我之前测试过是对的啊
那 if 明显少判断了当前的触摸对象是否吞噬事件

2025年了还有这个问题

不要用 cc.macro.ENABLE_MULTI_TOUCH

使用
//@ts-ignore
cc.internal.inputManager._maxTouches = 1

来阻止多点触摸