cocos添加节点事件的3种方式

news2025/1/20 3:55:43

我们以button为例来说明一下cocos怎样为节点添加事件:

直接通过cocos熟悉检查器绑定

cocos绑定事件

添加事件脚本

import { _decorator, Component, Node, input, Input, Button, EventKeyboard } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Attack')
export class Attack extends Component {

    attackBegin(event: Event, customEventData: string) {
        console.log(event);
        console.log(customEventData);
        console.log("攻击选中");
    }
}

点击事件Event的类型是:EventTouch(手机、浏览器手机模式)或者EventMouse(电脑)

这样绑定,可以捕获到单击和双击事件,双击事件会被当场2次单击。

cocos绑定事件结果

cocos中绑定Button节点、代码组件中为Button节点添加事件

import { _decorator, Component, Node, input, Input, Button, EventKeyboard } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Attack')
export class Attack extends Component {

    @property(Button)
    button: Button | null = null;
    
    onLoad () {
        this.button.node.on(Button.EventType.CLICK, this.attackBegin, this);
    }

    attackBegin (button: Button) {
        console.log(button);
        console.log("攻击选中");
    }
}

这样绑定,也可以捕获到单击和双击事件,双击事件会被当场2次单击。

但是没有办法自定义事件数据,事件的参数也是button本身。
cocos绑定节点
绑定button方式结果

完全代码中实现绑定

import { _decorator, Component, Node, input, Input, Button, EventKeyboard } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Attack')
export class Attack extends Component {

    onLoad() {
        let button = this.node.getComponent(Button);
        // 手动创建一个事件
        let handler = new Component.EventHandler();
        // 要响应事件的节点
        handler.target = this.node;
        // 脚本的名字,注意大小写,检查文件名和class名是否一直
        handler.component = "Attack";
        // 自定义事件数据
        handler.customEventData = "EventHandler customer data";
        // 事件回调方法
        handler.handler='attackBegin';
        // 将事件添加到点击事件列表中
        button.clickEvents.push(handler);
    }


    attackBegin(event: Event, customEventData: string) {
        console.log(event);
        console.log(customEventData);
        console.log("攻击选中");
    }
}

这种方式,就不需要在cocos中绑定了,只需要给button添加脚本组件即可。

其实,这种方式就是第1中的代码实现方式,手动在clickEvents添加了事件,而不是再cocos属性检查器中配置。
手动绑定脚本

手动绑定结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【笔试常见编程题01】删除公共字符串、组队竞赛、倒置字符串、排序子序列

1. 删除公共字符串 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” 输入描述 每个测试输入包含2个字符串 输出描述 输出删除后的…

事务:分布式事务与本地事务的区别

分布式事务章节 分布式事务:2PC与3PC的区别-CSDN博客 分布式事务:X/Open DTP分布式事务处理模型与分布式事务处理XA规范-CSDN博客 事务简介 事务(Transaction)是操作数据库中某个数据项的一个程序执行单元(unit)。事务是由一组操作构成的可靠的独立的…

【Linux】Linux中的日志查询方法

文章目录 linux日志与日志的查询方法更多journalctl用法journalctl用法案例部分日志路径说明推荐阅读 linux日志与日志的查询方法 在Linux系统中,日志文件用于记录系统的各种运行信息和错误消息。常见的日志文件包括但不限于/var/log/下的各种日志,如me…

foxmail开启不能自动启动解决办法

1、不要以管理员权限启动,不勾选管理员权限。 2、在foxmail设置里勾选“开机自动启动”

微信小程序(二十)Vant组件库的配置

教程很详细,直接上过程 上一篇 官方文档也有,但是因为版本的更新,官方文档并没有跟着改变,这里我写一份最新版能用的教程 (口头禅还是不能少的🤣🤣🤣) 灵魂拷问&#xf…

增加/调整硬盘空间有效的 8 款管理磁盘分区软件分享

适用于电脑的最佳分区管理器是一个出色的工具,可以增加硬盘空间并确保最有效地管理磁盘分区。因此,请继续阅读以详细了解它们。 电脑上的存储问题并不是什么新鲜事。然而,随着最新 电脑的出现,情况有所改善。但似乎没有足够的空间…

数据监控-Prometheus/Grafana

一、数据监控Prometheus 1、什么是Prometheus Prometheus是由SoundCloud开源监控告警解决方案,从2012年开始编写代码,到2015年github上开源以来,吸引不少用户以及公司的使用。Prometheus作为新一代的开源解决方案,很多理念与Google SRE的运维之道不谋而合。 2、Promet…

如何使用数据恢复软件恢复已删除的文件

在计算机时代之前,数据一直以物理方式存储在纸张上。然后通过收集论文,创建了一个大数据库。收集到的论文存放在大房间或数据收集中心。笔和纸系统的一个很大的缺点是,如果你想找到特定的数据,就像在沙子里找到一根针一样。 计算…

2023 IoTDB Summit:Dr. Feinauer《Apache IoTDB在德国工业和关键基础设施中的应用》

12 月 3 日,2023 IoTDB 用户大会在北京成功举行,收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题,多位学术泰斗、企业代表、开发者,深度分享了工业物联网时序数据库 IoTDB 的技术创新…

幻兽帕鲁的搭建和幻兽帕鲁需要什么配置的服务器

前言 大家好,今天教大家如何快速搭建幻兽帕鲁,并能满足8-32人游玩 第一步 购买服务器 1.CPU:4核(最低需要4核起,当然可以选择更高的)CPU的选择更看重单核性能,尽量选择主频2.5GHz以上的&#…

goland课程管理(6)

项目目录结构如下图所示: core包下面: class.go package coreimport "github.com/gin-gonic/gin"func Class1(ctx *gin.Context) {}course.go package coreimport (. "cookie/database". "cookie/model""fmt"…

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么?

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么? 硬件互助,资源共享 分布式软总线 分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发…

TCP半链接和全链接队列实验(下)

TCP半链接和全链接队列实验(上)-CSDN博客 实战 - TCP 半连接队列溢出 如何查看 TCP 半连接队列长度? 很遗憾,TCP 半连接队列长度的长度,没有像全连接队列那样可以用 ss 命令查看。 但是我们可以抓住 TCP 半连接的特点,就是服务端…

Linux之进程间通信(system V 共享内存)

目录 一、共享内存 1、基本原理 2、共享内存的创建 3、共享内存的释放 4、共享内存的关联 5、共享内存的去关联 6、查看IPC资源 二、完整通信代码 三、共享内存的特点 四、信号量 1、相关概念 2、信号量概念 进程间通信的本质就是让不同的进程看到同一个资源。而前…

vit细粒度图像分类(四)BT-Net学习笔记

1.摘要 为了改进在细粒度图像分类过程中类别差异难以提取的问题,本文提出了一种基于 Transformer 双线性网络的细粒度网络分类优化方法(BT-Net)。 首先,将输入图像通过不同卷积处理成不同长度的二维向量,然后,构建重复次数不同的…

JVM内存问题排查

本文又名《对JVM一窍不通的我快速开始排查应用内存问题》。主要系统性地整理了排查思路,为大家遇到问题时提供全面的排查流程,不至于漏掉某些可能性误入歧途浪费时间。 基本原则 由于本文的定位是Cookbook,基本原则是让整个流程能够系统化规范化的同时将…

少儿编程:让孩子在数字世界中自由翱翔

在这个信息爆炸的时代,计算机和互联网已经成为我们生活中不可或缺的一部分。从智能手机到智能家居,从网络游戏到在线教育,数字技术已经渗透到我们生活的方方面面。因此,掌握编程技能,就像学习阅读和写作一样&#xff0…

RNN预测下一句文本简单示例

根据句子前半句的内容推理出后半部分的内容,这样的任务可以使用循环的方式来实现。 RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的强大神经网络模型。与传统的前馈神经网络不同,RNN能够通过其…

深度推荐模型之DeepFM

一、FM 背景:主要解决大规模稀疏数据下的特征组合遇到的问题:1. 二阶特征参数数据呈指数增长 怎么做的:对每个特征引入大小为k的隐向量,两两特征的权重值通过计算对应特征的隐向量内积 而特征之间计算点积的复杂度原本为 实际应…

橘子学ES实战操作01之集群模式如何实现快照备份

我们知道ES中通过副本在一定意义上实现了数据的备份和高可用。但是我们说万一副本数据丢失了,不小心被rm -f了,你就说逆天不逆天吧,此时要实现数据真正意义上的备份就要使用到快照机制,来把数据持久化备份起来,万一数据…