From b760ce345852efea19d7332e665e9ec1b2a1b823 Mon Sep 17 00:00:00 2001 From: dgflash Date: Tue, 24 Sep 2024 20:54:29 +0800 Subject: [PATCH] =?UTF-8?q?GameComponent.setButton=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=8E=A7=E5=88=B6=E6=98=AF=E5=90=A6=E5=AF=B9?= =?UTF-8?q?=E9=A2=84=E5=88=B6=E6=A0=B9=E8=8A=82=E7=82=B9=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=A7=A6=E6=91=B8=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/module/common/GameComponent.ts | 28 ++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/assets/module/common/GameComponent.ts b/assets/module/common/GameComponent.ts index 6977e67..0cb1d65 100644 --- a/assets/module/common/GameComponent.ts +++ b/assets/module/common/GameComponent.ts @@ -10,7 +10,6 @@ import { EventDispatcher } from "../../core/common/event/EventDispatcher"; import { EventMessage, ListenerFunc } from "../../core/common/event/EventMessage"; import { AssetType, CompleteCallback, ProgressCallback } from "../../core/common/loader/ResLoader"; import { ViewUtil } from "../../core/utils/ViewUtil"; -import { ButtonTouchLong } from "../../libs/gui/button/ButtonTouchLong"; const { ccclass } = _decorator; @@ -317,6 +316,7 @@ export class GameComponent extends Component { //#region 游戏逻辑事件 /** * 批量设置当前界面按钮事件 + * @param bindRootEvent 是否对预制根节点绑定触摸事件 * @example * 注:按钮节点Label1、Label2必须绑定UIButton等类型的按钮组件才会生效,方法名必须与节点名一致 * this.setButton(); @@ -324,19 +324,21 @@ export class GameComponent extends Component { * Label1(event: EventTouch) { console.log(event.target.name); } * Label2(event: EventTouch) { console.log(event.target.name); } */ - protected setButton() { + protected setButton(bindRootEvent: boolean = true) { // 自定义按钮批量绑定触摸事件 - this.node.on(Node.EventType.TOUCH_END, (event: EventTouch) => { - const self: any = this; - const func = self[event.target.name]; - if (func) { - func.call(this, event); - } - // 不触发界面根节点触摸事件、不触发长按钮组件的触摸事件 - // else if (event.target != this.node && event.target.getComponent(ButtonTouchLong) == null) { - // console.warn(`名为【${event.target.name}】的按钮事件方法不存在`); - // } - }, this); + if (bindRootEvent) { + this.node.on(Node.EventType.TOUCH_END, (event: EventTouch) => { + const self: any = this; + const func = self[event.target.name]; + if (func) { + func.call(this, event); + } + // 不触发界面根节点触摸事件、不触发长按钮组件的触摸事件 + // else if (event.target != this.node && event.target.getComponent(ButtonTouchLong) == null) { + // console.warn(`名为【${event.target.name}】的按钮事件方法不存在`); + // } + }, this); + } // Cocos Creator Button组件批量绑定触摸事件(使用UIButton支持放连点功能) const regex = /<([^>]+)>/;