Cocos Creator开发中如何实现按钮节点的事件
admin
2023-02-11 16:40:06
0

Cocos Creator基于Cocos2d-x(C++方案),提出全新的编程理念。Cocos Creator是以内容创作为核心的游戏开发工具,在Cocos2d-x基础上实现了彻底脚本化(可以使用Javascript、Typescript或者Coffeescript)、组件化和数据驱动等特点。
但是,在事件处理机制上并不显得简单,至少是新手初学阶段如此。

试验目的

通过为按钮组件设置一个点击事件来实现在控制台输出一段文本。

试验步骤

在场景中Canvas节点上添加一个UI节点Button并选择此节点,注意到其事件有关属性如图所示:

Cocos Creator开发中如何实现按钮节点的事件
也就是说,Click Events属性是列表类型,默认为空,用户添加的每一个事件由节点引用,组件名称,一个响应函数及定制事件参数组件组成。
只有当我们把Click Events事件属性列表结点个数修改成大于或者等于1时,对应的事件参数才显示出来,各个参数含义如下:
Cocos Creator开发中如何实现按钮节点的事件
图形效果展示如下:

Cocos Creator开发中如何实现按钮节点的事件
上图是把Click Events事件属性列表结点个数改成1的样子。
接下来,上面几个参数的填写需要按照上面的解释进行。

为此,我们需要专门写一个相应的脚本,不妨命名为MyComponent.js(注意这里的文件名是区别大小写的,因为它还代表组件的类名),内容如下。
cc.Class({
extends: cc.Component,
properties: {},

onLoad: function () {
    var clickEventHandler = new cc.Component.EventHandler();
    clickEventHandler.target = this.node; //这个node节点是你的事件处理代码组件所属的节点
    clickEventHandler.component = "MyComponent";//这个是代码文件名
    clickEventHandler.handler = "callback";
    clickEventHandler.customEventData = "foobar";

    var button = this.node.getComponent(cc.Button);
    button.clickEvents.push(clickEventHandler);
},

callback: function (event, customEventData) {
    //这里 event 是一个 Touch Event 对象,你可以通过 event.target 取到事件的发送节点
    var node = event.target;
    var button = node.getComponent(cc.Button);
    //这里的 customEventData 参数就等于你之前设置的 "foobar"
    console.log("para is: ",customEventData);
}

});

保存上面的脚本后,通过点击场景中按钮节点对应“属性检查器”窗口中下部的“添加组件”按钮为此按钮节点添加一个“用户脚本组件”并选择上面刚刚创建的脚本。

然后,拖动层级管理器中的按钮节点到按钮事件属性对应的第一个参数处,并以此为基础,依次选择第二个已经绑定到该按钮节点上的脚本组件以及第三个回调参数(上面脚本中已经定义了,是callback)。结果如下所示:
Cocos Creator开发中如何实现按钮节点的事件

相关内容

热门资讯

上海AI产业交答卷:以生态之力... 上海人工智能产业交答卷:真实产线上淬炼硬核能力 聚合产业推进中国算力体系化 以生态之力,加速AI拐点...
“郑州造”光伏清洁机器人即将交... 7月22日,郑州航空港经济综合实验区坤达产业园内,两台C1光伏清洁机器人正在进行交付前的最后测试。作...
腾讯整合Workbuddy与Q... 快科技7月21日消息 ,据媒体报道,腾讯近日发布内部组织调整通知,将 QClaw产品中心全部相关业务...
TVB正式更名,宣布由传统电视... 7月24日,@TVB官方微博发文官宣TVB更名“无线集团”,TVB表示,由传统电视台升级为跨媒体娱乐...
2026WAIC观察丨白辰甲:... 图片来源/新华社 ■中国经济时报记者 张一鸣 王彩娜 在人工智能浪潮下,具身智能的演变之路也在加速。...
澳大利亚工党大会上,中方官员愤... 据澳大利亚广播公司(ABC)7月23日报道,中国外交官因不满台湾地区代表出席澳大利亚工党(ALP)在...
裸体在家犯法还是拍别人裸照犯法... 近日,#男子在家裸体被邻居拍照发群#一事引发热议。据报道,某小区一名男业主在家中未穿衣物,对面女业主...
“每天跟遛狗一样”,万亿资金,... 进入7月,市场波动加大,A股关于量化交易的争议再次达到顶峰。由于散户与量化机构之间的“体感温差”显著...
特朗普:对伊朗战争进展顺利 当地时间7月23日,美国总统特朗普再次称,“美国在对抗伊朗方面进展很顺利,表现得极其出色,好得超乎任...
国务院成立广西六蓝水库溃坝灾害... 7月6日,广西南宁横州市六蓝水库发生溃坝,造成重大人员伤亡。根据国家有关法律法规规定,国务院成立调查...