【CocosCreator入门】CocosCreator组件 | Button(按钮)组件

       Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中的Button组件可以通过设置按钮的状态和点击事件,实现在游戏中添加按钮交互的功能。


目录

一、组件介绍

二、组件属性

三、点击事件

Ⅰ、通过属性检查器添加回调

Ⅱ、通过脚本添加回调 

四、脚本示例


一、组件介绍

       Button组件是Cocos Creator提供的一种交互组件,主要用于实现按钮的交互和响应。通过设置Button组件的属性和事件,可以实现按钮的样式、状态和点击效果等功能。

二、组件属性

属性功能说明
TargetNode 类型,当 Button 发生 Transition 的时候,会相应地修改 Target 节点的 SpriteFrame,颜色或者 Scale。
interactable布尔类型,设为 false 时,则 Button 组件进入禁用状态。
Enable Auto Gray Effect布尔类型,当设置为 true 的时候,如果 button 的 interactable 属性为 false,则 button 的 sprite Target 会变为灰度。
Transition枚举类型,包括 NONE、COLOR、SPRITE 和 SCALE。每种类型对应不同的 Transition 设置。详情见下方的 Button Transition 部分。
Click Event列表类型,默认为空,用户添加的每一个事件由节点引用、组件名称和一个响应函数组成。

Button Transition

       Button 的 Transition 用来指定当用户点击 Button 时的状态表现。目前主要有 NONE、COLOR、SPRITE 和 SCALE 四种类型。

Color Transition 

属性功能说明
NormalButton 在 Normal 状态下的颜色。
PressedButton 在 Pressed 状态下的颜色。
HoverButton 在 Hover 状态下的颜色。
DisabledButton 在 Disabled 状态下的颜色。
DurationButton 状态切换需要的时间间隔。

Sprite Transition 

属性功能说明
NormalButton 在 Normal 状态下的 SpriteFrame。
PressedButton 在 Pressed 状态下的 SpriteFrame。
HoverButton 在 Hover 状态下的 SpriteFrame。
DisabledButton 在 Disabled 状态下的 SpriteFrame。

Scale Transition

属性功能
DurationButton 状态切换需要的时间间隔。
ZoomScale当用户点击按钮后,按钮会缩放到一个值,这个值等于 Button 原始 scale * zoomScale,zoomScale 可以为负数。

Click Event

        详见下方点击事件

三、点击事件

        Button 可以额外添加 Click 事件,用于响应玩家的点击操作。有以下两种方法。

Ⅰ、通过属性检查器添加回调

属性功能说明
Target带有脚本组件的节点。
Component脚本组件名称。
Handler指定一个回调函数,当用户点击 Button 时会触发此函数。
CustomEventData用户指定任意的字符串作为事件回调的最后一个参数传入。

Ⅱ、通过脚本添加回调 

通过脚本添加回调有以下两种方式:

  • 这种方法添加的事件回调和使用编辑器添加的事件回调是一样的,都是通过 Button 组件实现。首先需要构造一个 cc.Component.EventHandler 对象,然后设置好对应的 targetcomponenthandler 和 customEventData 参数。
// here is your component file, file name = 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 是一个 Event 对象,你可以通过 event.target 取到事件的发送节点
         var node = event.target;
         var button = node.getComponent(cc.Button);
         // 这里的 customEventData 参数就等于你之前设置的 "foobar"
     }
 });
  • 通过 button.node.on('click', ...) 的方式来添加,这是一种非常简便的方式,但是该方式有一定的局限性,在事件回调里面无法 获得当前点击按钮的屏幕坐标点。
cc.Class({
     extends: cc.Component,

     properties: {
         button: cc.Button
     },

     onLoad: function () {
         this.button.node.on('click', this.callback, this);
     },

     callback: function (button) {
         // do whatever you want with button
         // 另外,注意这种方式注册的事件,也无法传递 customEventData
     }
 });

四、脚本示例

       下面是一个使用Button组件实现按钮交互的示例代码:

cc.Class({
    extends: cc.Component,
    properties: {
        buttonNode: cc.Node, // 按钮节点
        normalColor: cc.Color, // 正常状态下的颜色
        pressedColor: cc.Color, // 按下状态下的颜色
        hoverColor: cc.Color, // 悬停状态下的颜色
        targetSprite: cc.SpriteFrame, // 背景精灵图
    },
    onLoad () {
        let button = this.buttonNode.getComponent(cc.Button);
        button.transition = cc.Button.Transition.COLOR;
        button.normalColor = this.normalColor;
        button.pressedColor = this.pressedColor;
        button.hoverColor = this.hoverColor;
        button.targetSprite = this.targetSprite;
        button.clickEvents.push(new cc.Component.EventHandler(this.node, 'onBtnClick', 'gameCtrl'));
    },
    onBtnClick () {
        console.log('Button Clicked');
    }
    // update (dt) {},
});

       通过以上代码,我们可以动态地创建一个按钮节点,并添加Button组件和其他属性。在实际开发中,可以根据需要修改和扩展代码。


       总之,使用Cocos Creator的Button组件可以帮助我们快速实现按钮交互。通过设置按钮的状态、样式和点击事件,可以让玩家在游戏中进行交互和操作。


http://www.niftyadmin.cn/n/246508.html

相关文章

SCA技术进阶系列(二):代码同源检测技术在供应链安全治理中的应用

一、直击痛点:为什么需要同源检测 随着“数字中国”建设的不断提速,企业在数字化转型的创新实践中不断加大对开源技术的应用,引入开源组件完成应用需求开发已经成为了大多数研发工程师开发软件代码的主要手段。随之而来的一个痛点问题是&…

OpenAI-ChatGPT最新官方接口《语音智能转文本》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(六)(附源码)

Speech to text 语音智能转文本 Introduction 导言Quickstart 快速开始Transcriptions 转录python代码cURL代码 Translations 翻译python代码cURL代码 Supported languages 支持的语言Longer inputs 长文件输入Prompting 提示其它资料下载 Speech to text 语音转文本 Learn how…

OpenGL入门教程之 变化颜色的三角形

一、 知识点 (1)着色器 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通…

请收下这些软件测试学习干货,不看后悔一辈子

学习软件测试的过程中会遇到很多很多的困难和挑战,只有跨过这些困难和挑战,才有机会挑战软件测试领域的高薪offer。今天我们就来梳理一下,学习软件测试的过程中,我们一般都会遇到哪些困难,我们又当如何克服这些困难。 …

Linux如何使用宝塔面板搭建网站和内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#…

linux部署Jenkins

随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保 软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续…

java基于mvc的停车收费系统mysql

系统需要解决的主要问题有: (1)车位管理模块 添加车位、查看车位状态、车位信息查询等。 (2)客户信息管理模块 客户基本信息录入、客户信息查询等。 (3)卡业务办理 添加卡信息、查余额查询、卡充值。 (4)车辆信息管理模块 车牌信息录入等。 (5)收费管理 可以调整相应…

瀚高股份吕新杰:创新开源双驱动,躬耕国产数据库

作者 | 伍杏玲 近年来,国际形势不断变幻,也给人们带来巨大警示:关键核心技术是买不来、讨不来的,中国科技企业需寻找研发自强之路。 瀚高基础软件股份有限公司(简称瀚高股份)专注数据库十八年,始…