[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);

}

}

时间: 2024-08-24 11:55:57

[cocos2dx笔记015]关于cocos2dx Button三种状态说明的相关文章

cocoStudio: Button三种状态切换

我们在使用cocoStudio工具时,按钮控件Button对应的资源有三种状态, 我们可以分别针对三种状态设置不同的图片.然后在程序中通过方法显示 为不同的状态. 1.初始状态:Normal状态 bool Widget::init() { if (CCNode::init()) { setBright(true); } return false; } 2. /* Button切换到Disable状态(禁止状态),_bright默认为真, 可以调用setBright(false)把Button切换

iOS开发思路提问(系列1:一个Button的三种状态怎样切换?)

问题抽象: 现在在做一个音乐播放的模块,对于音乐播放顺序有三种状态切换,如下图所示, 顺序播放 单曲循环 随机播放 现在我只抽象出最简单的部分,以该Button操作的交互过程来描述, (1)Button默认的状态是"顺序播放"歌曲模式 (2)不断点击Button,歌曲循环模式切换顺序为"顺序播放->单曲循环->随机播放->顺序播放->...." (3)每次点击设置了一种歌曲循环模式,都将该循环模式发送给服务器,下次来到该界面的时候,从服务器读

深入hibernate的三种状态(转)

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hibernate的session的那几个特殊方法一清二楚呢?或者说大家是否能够一眼就快速看出一个测试用例在反复的调用sess

深入hibernate的三种状态

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hibernate的session的那几个特殊方法一清二楚呢?或者说大家是否能够一眼就快速看出一个测试用例在反复的调用sess

简单理解Hibernate三种状态的概念及互相转化

本文描述了Hibernate三种状态的概念及互相转化.Java对象的生命周期中有三种状态,而且互相转化.它们分别是临时状态,持久化状态,以及游离状态. AD:WOT2015 互联网运维与开发者大会 热销抢票 在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的.对于理解hibernate,JVM和sql的关系有更好的理解.对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化. Hibernate

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

Hibernate三种状态,缓存,以及update更新问题

一. Hibernate中对象的三种状态 1. 瞬时状态(transient) 当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,此时该对象只是通过JVM获得了一块内存空间,还并没有通过Session对象的save()方法保存进数据库,因此也就还没有纳入Hibernate的缓存管理中,也就是说该对象现在还自由的游荡于Hibernate缓存管理之外.所以我们可以看出自由对象最大的特点就是,在数据库中不存在一条与它对应的记录. 瞬时状态特点: I: 不和 Sess

hibernate三种状态

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hibernate的session的那几个特殊方法一清二楚呢?或者说大家是否能够一眼就快速看出一个测试用例在反复的调用sess

Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 ----转----

Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object). 瞬时态         由new命令开辟内存空间的java对象, eg. Person person = new Person(