双指触控引发的问题

测试环境,cocos 3.4.2,android 12,小米手机,

  1. 双指依次点击,按住屏幕不放,按钮在0.5秒之后出现在双指下方,按照点击顺序依次放开双指;
  2. 双指依次点击按钮,待双指都落在屏幕之上,再依次放开双指;
  3. 重复第一步,便可发现 id 为 1 的第二次点击,其 end 事件由按钮响应了。

以上的 log 中,==> button _onTouchEnded ... 在通过 ts engine 的 button 脚本中添加了日志得到,如下,

export class Button extends Component {

    ...

    // touch event handler
    protected _onTouchBegan (event?: EventTouch) {
        console.log('==> button _onTouchBegan ', this._pressed, event?.getID(), event);

        if (!this._interactable || !this.enabledInHierarchy) { return; }

        this._pressed = true;
        this._updateState();
        if (event) {
            event.propagationStopped = true;
        }
    }

    protected _onTouchEnded (event?: EventTouch) {
        console.log('==> button _onTouchEnded ', this._pressed, event?.getID(), event);

        if (!this._interactable || !this.enabledInHierarchy) {
            return;
        }

        if (this._pressed) {
            ComponentEventHandler.emitEvents(this.clickEvents, event);
            this.node.emit(EventType.CLICK, this);
        }
        this._pressed = false;
        this._updateState();

        if (event) {
            event.propagationStopped = true;
        }
    }
   ...
}

demo 见下,

test-double-touch.zip (18.6 KB)

你好,你可以尝试修改一下引擎此处代码,添加红框内的代码,手动点击 CocosCreator 编辑器菜单栏编译引擎即可。