首页 > 代码库 > [cocos2dx笔记015]关于cocos2dx Button三种状态说明
[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的时候,按钮设置为Disabled的时候,是看不见。3.x的是没有禁用状态的,但是不会响应touch事件。
在cocostudio UI编辑的时候,按钮是三种状态的(有三个不同状态的图片),但没有相应改变状态的函数
于是,就分析源码,发现它是在onPressStateChangedToDisabled();更改为禁用状态的图片。再找,是于
在其基类的ui:Widget的setBright和setHighlight有调用这个onPressStateChangedToDisabled,但是setEnabled仅仅是改为了一个成员变化,
所以你在这里设置disabled,就不会有任何效果。除了上面两个函数之后,还有一个函数setBrightStyle是设置按钮是普通状态还是高亮状态
下面是BrightStyle的定义
enum class BrightStyle
{
NONE = -1,
NORMAL,
HIGHLIGHT
};
下面是一个包装的禁用启用的函数
//设置按钮禁用启用状态
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);
}
}
cocos2dx 2.x到3.x是一个巨大的变化,可以算是完全不同。以前的类名,全是CC开头的,现在全部去掉了。很多enum都改用enum class了
所以,你知道2.x,对不起,你比小白学习3.x更难。你用2.x的做法用在3.x,那就全是坑了...
言归正传,
2.x的时候,按钮设置为Disabled的时候,是看不见。3.x的是没有禁用状态的,但是不会响应touch事件。
在cocostudio UI编辑的时候,按钮是三种状态的(有三个不同状态的图片),但没有相应改变状态的函数
于是,就分析源码,发现它是在onPressStateChangedToDisabled();更改为禁用状态的图片。再找,是于
在其基类的ui:Widget的setBright和setHighlight有调用这个onPressStateChangedToDisabled,但是setEnabled仅仅是改为了一个成员变化,
所以你在这里设置disabled,就不会有任何效果。除了上面两个函数之后,还有一个函数setBrightStyle是设置按钮是普通状态还是高亮状态
下面是BrightStyle的定义
enum class BrightStyle
{
NONE = -1,
NORMAL,
HIGHLIGHT
};
下面是一个包装的禁用启用的函数
//设置按钮禁用启用状态
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);
}
}
[cocos2dx笔记015]关于cocos2dx Button三种状态说明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。