cocos creator基础-(七)cc.Button使用

本文围绕游戏开发中cc.Button按钮展开,介绍了添加按钮的方法,包括直接创建带Button组件的节点和先创建节点再添加组件。还阐述了按钮组件的响应事件、过渡效果(如颜色、精灵、缩放过渡等)、禁用操作、添加响应事件及传递自定义参数等内容,同时说明了代码中使用cc.Button的相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1: 掌握按钮的使用;

 

cc.Button

 

1:添加按钮的方法

(1)直接创建带Button组件的节点;

(2) 先创建节点,再添加组件;

2:按钮组件, 按钮是游戏中最常用的组件, 点击然后响应事件;

3: 按钮的过渡效果:

过渡: 普通状态, 鼠标滑动到物体上, 按下状态, 禁用状态

  (1)没有过渡,只有响应事件;

  (2)颜色过渡, 过渡效果中使用颜色;

  (3)精灵过渡,使用图片过渡;

  (4)缩放过渡, 选项,在disable的时候是否置灰;

4: 按钮禁用;

5: 按钮添加响应事件 --> 节点-->组件 --> 代码的函数;

6: 按钮传递自定义参数; ---> 字符串对象;

7: Button响应这个触摸点击,所以Button所挂的这个节点,一定要有大小,如果你向大小(0, 0)的节点上,挂一个Button,这个是无法响应点击事件;+

 

代码使用cc.Button

1: 代码添加/获取cc.Button组件;

2: 代码里面添加按钮的响应事件;

3: 代码触发按钮指定的回掉函数;

4: Component.EventHandler

  var eventHandler = new cc.Component.EventHandler();

  eventHandler.target = newTarget;

  eventHandler.component = "MainMenu";

  eventHandler.handler = "OnClick";

  eventHandler.customEventData = "my data";

  eventHandler.emit(["param1", "param2", ....]);

cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //    default: null,      // The default value will be used only when the component attaching
        //                           to a node for the first time
        //    url: cc.Texture2D,  // optional, default is typeof default
        //    serializable: true, // optional, default is true
        //    visible: true,      // optional, default is true
        //    displayName: 'Foo', // optional
        //    readonly: false,    // optional, default is false
        // },
        // ...
        // 直接在编辑器里面绑定
        button: {
            type: cc.Button, // 
            default: null,
        },
    },

    // use this for initialization
    onLoad: function () {
        // 获取button组件
        this.start_button = this.node.getChildByName("ks_up").getComponent(cc.Button); 


        // 添加button组件
        this.red_button = this.node.getChildByName("red_button").addComponent(cc.Button);
        // 添加一个响应函数
        var click_event = new cc.Component.EventHandler();
        click_event.target = this.node;
        click_event.component = "game_scene";
        click_event.handler = "on_red_button_click";
        click_event.customEventData = "red_button_data_77777";
        // this.red_button.clickEvents = [click_event];
        this.red_button.clickEvents.push(click_event);
        // end 

        // 代码触发按钮的响应事件,而不用自己去触摸
        this.scheduleOnce(function() {
            var click_events = this.red_button.clickEvents;
            for(var i = 0; i < click_events.length; i ++) {
                var comp_env_handle = click_events[i];
                // 在代码里面触发按钮的响应函数
                comp_env_handle.emit(["", "red_button_data_77777"]);
            }
        }.bind(this), 3);
        // end 
    },

    on_red_button_click: function(e, custom) {
        console.log("on_red_button_click: ", custom);
    },
    // 关卡按钮1-10, 第几关
    //  e 本次触摸的触摸事件
    // customEventData is String;
    on_button_click: function(e, level) {
        level = parseInt(level);
        console.log("on_button_click called:", level);
    },

    // called every frame, uncomment this function to activate update callback
    // update: function (dt) {

    // },
});

 

Cocos Creator中,`cc.find` 是一种通过节点路径查找指定节点的方式。如果你想通过 `cc.find` 访问一个 Button 节点,并对其操作(例如更改状态、绑定点击事件等),可以按照以下步骤进行: ### 使用 cc.find 查找按钮并设置回调函数 ```javascript // 假设场景中有一个名为 "Button" 的节点,它是 Canvas 的直接子节点 var buttonNode = cc.find("Canvas/Button"); if (buttonNode) { // 获取该节点上的 Button 组件 var buttonComponent = buttonNode.getComponent(cc.Button); if (buttonComponent) { // 设置按钮点击事件 buttonComponent.node.on('click', function () { console.log("按钮被点击了!"); }); } } ``` #### 解释: 1. **cc.find**:这是一个全局静态方法,用于按层级路径名查找节点。注意路径大小写敏感。 - 如果路径无效或找不到对应节点,则返回值为 null 或 undefined。 2. **getComponent**:获取目标节点上挂载的组件实例,在这里是 `cc.Button` 类型的 UI 按钮组件。 3. **node.on('click')**:监听按钮点击事件,并将自定义逻辑放入回调函数内处理。 --- ### 注意事项: - 确保传入给 `cc.find()` 的路径准确无误。如果路径错误或者目标节点未加载完成,则会返回空值导致脚本出错。 - 推荐尽量减少对 `cc.find` 的依赖,因为它会在整个场景树递归搜索,效率较低。取而代之的是通过属性引用拖拽分配所需节点变量更为高效安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值