zoukankan      html  css  js  c++  java
  • [cocos2dx笔记015]关于cocos2dx Button三种状态说明

    经过几天的填坑,最终将现有的项目由cocos2dx 2.2.2移到cocos2dx 3.2,差点放弃3.2了,但在最后一刻,又把坑填平了。
    cocos2dx 2.x到3.x是一个巨大的变化,能够算是全然不同。曾经的类名,全是CC开头的,如今所有去掉了。非常多enum都改用enum class了
    所以,你知道2.x,对不起,你比小白学习3.x更难。你用2.x的做法用在3.x,那就全是坑了...




    言归正传,
    2.x的时候,button设置为Disabled的时候,是看不见。3.x的是没有禁用状态的,可是不会响应touch事件。
    在cocostudio UI编辑的时候,button是三种状态的(有三个不同状态的图片),但没有对应改变状态的函数
    于是,就分析源代码,发现它是在onPressStateChangedToDisabled();更改为禁用状态的图片。再找,是于
    在其基类的ui:Widget的setBright和setHighlight有调用这个onPressStateChangedToDisabled,可是setEnabled不过改为了一个成员变化,
    所以你在这里设置disabled,就不会有不论什么效果。除了上面两个函数之后,另一个函数setBrightStyle是设置button是普通状态还是高亮状态
    以下是BrightStyle的定义
        enum class BrightStyle
        {
            NONE = -1,
            NORMAL,
            HIGHLIGHT
        };
    以下是一个包装的禁用启用的函数
    //设置button禁用启用状态
    inline void SetButtonEnabled(ui::Button * paramButton, bool paramEnabled)
    {
    if (isNULL(paramButton)) return;
    if (paramEnabled)
    {
    paramButton->setBright(true);
    paramButton->setEnabled(true);
    paramButton->setTouchEnabled(true);
    }
    else
    {
    paramButton->setBright(false);
    paramButton->setEnabled(false);
    paramButton->setTouchEnabled(false);
    }
    }

  • 相关阅读:
    元组类型内置方法
    列表类型内置方法
    字符串类型内置方法
    转:【英语学习材料】
    转:【15年学不会英语的原因】
    转:【Java动态编程(Javassist研究)】
    转:【进制转换-概念】
    c语言学习笔记
    virtualbox虚拟机桥接方式网络设置
    navicat连接mysql8报错,错误提示为1251,原因及解决步骤
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4095609.html
Copyright © 2011-2022 走看看