请问各位大神,怎么样能同事注册监听多个事件

请问各位大神,怎么样能同事注册监听多个事件节点,并能判断监听的节点调用相应的方法,
像棋这类多个节点注册监听多个。大神有没有好的方法?
我是新手。谢谢各位大神!!
this.key0.on(Node.EventType.TOUCH_START,this.TouchStart,this,true);

    this.key01.on(Node.EventType.TOUCH_START,this.TouchStart01,this,true);

    this.key02.on(Node.EventType.TOUCH_START,this.TouchStart02,this,true);

    this.key03.on(Node.EventType.TOUCH_START,this.TouchStart03,this,true);

    this.key04.on(Node.EventType.TOUCH_START,this.TouchStart04,this,true);

    this.key05.on(Node.EventType.TOUCH_START,this.TouchStart05,this,true);

    this.key06.on(Node.EventType.TOUCH_START,this.TouchStart06,this,true);

    this.key07.on(Node.EventType.TOUCH_START,this.TouchStart07,this,true);

    this.key08.on(Node.EventType.TOUCH_START,this.TouchStart08,this,true);

    this.key09.on(Node.EventType.TOUCH_START,this.TouchStart09,this,true);

    this.keyReset.on(Node.EventType.TOUCH_START,this.TouchStartReset,this,true);

    this.ok.on(Node.EventType.TOUCH_START,this.TouchStartok,this,true);

嫌写法难看?
不用嫌弃,整整齐齐的也是一种美 :rofl:

或许咱们能不能 用个遍历方法 给所有象棋添加监听呢?三十多个象棋 你得这样子写三十多个监听,这也太长了

哈哈,我就是想把代码变精简些。

遍历之后能监听到,但好像监听到的对象永远就一个。

:rofl:为啥不用按钮

可以就用一个回调啊, 回调函数可以获取到是哪个节点,然后就可以分辨谁是谁了

请问大神用哪个方法分辨?还是

新手,哈哈,没尝试过按钮。

看下官方文档先, 我建议没事就抓着官方文档看,有不懂的先去做实验或者搜别人的blog,优先自己查资料搞懂
https://docs.cocos.com/creator/manual/zh/engine/event/event-node.html#事件对象

请问这是 3.x 的吗 ?
如果都是差不多的事件的话, 是否可以考虑这样写 ?
就是把公共的点击事件抽离到公共代码里面去,
然后把这个代码挂载在节点上 ?

你先看看下面这个方法可行不 ?
如果是要根据不同的节点来处理不同的事情,
也是可以在公共代码里面做处理的, 类似于加个 switch case 判断之类的.

1. 公共点击事件的代码

import { _decorator, Component, Node } from 'cc';
const { ccclass, property, executeInEditMode } = _decorator;

@ccclass('com_event_clickTs')
@executeInEditMode
export class com_event_clickTs extends Component {
    @property({ displayName: "事件节点", tooltip: "触发点击事件的按钮节点", type: Node })
    com_event_clickNode: Node = null;
    onLoad() {
        this.com_event_clickNode = this.node;
    };
    start() {
        this.com_event_clickNode.on(Node.EventType.TOUCH_START, this.TouchStart01, this, true);
    };

    /**
     * 公共的点击事件
     */
    TouchStart01(event: any, data: any): void {
        // console.log("User Click Node =>", [this.com_event_clickNode.name, event, data]);
        console.log("已点击节点名称为 =>" + ` ${this.com_event_clickNode.name} 的节点, 触发 event 事件=>`, event);
    };

    // update(deltaTime: number) {
    // };
};

2. 这样使用

2.1 批量绑定公共代码到多个节点上

鼠标左键选中第一个节点, 按住 Shift + 鼠标左键点击最后一个节点, 就批量选中了

2.2 运行后点击图片节点查看效果

1赞

非常的感谢!这个一定是可以的。

1赞

好的,我也是这样的。