经过几天的填坑,最终将现有的项目由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);

}

}

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

  1. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  2. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  3. hibernate学习笔记之三 持久化的三种状态

    Hibernate持久化对象有3中状态,瞬时对象(transientObjects),持久化对象(persistentObjects),离线对象(detachedObjects) 下图显示持久化三种状 ...

  4. HIbernate学习笔记(二) hibernate对象的三种状态与核心开发接口

    1.在hibernate中持久化对象有三个状态,这个面试时可能会问到: (1)transient瞬时态:在数据库中没有与之匹配的数据,一般就是只new出了这个对象,并且在session缓存中也没有即此 ...

  5. Hibernate学习笔记2.5(Hibernate核心开发接口和三种状态)

    1.configuration(配置信息管理,产生sessionfactory) sessionfactory管理一系列的连接池 opensession 永远打开新的,需要手动close getcur ...

  6. Hibernate 系列 07 - Hibernate中Java对象的三种状态

    引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...

  7. hibernate三种状态

    转自:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transien ...

  8. Hibernate的三种状态及对象生命周期

        理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...

  9. Hibernate中Java对象的三种状态

                                                                                     Hibernate中Java对象的三种 ...

随机推荐

  1. Activity篇章参考

    附上学习这部分知识的时候收集的一些比较好的链接: Task and backStack|Android Developer adb shell dumpsys activity 单个apk多进程 Ac ...

  2. Doctype 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    Doctype:(Document Type)文档类型,它位于文档中最前面的位置,处于标签之前.如果你想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE的声明.确定了正确的Doctyp ...

  3. 第五章 Spring3.0 、Hibernate3.3与Struts2的整合 基于Annotation

    Annotation的方式是通过注解的方式把Struts2中的Action.Dao层的实现类.Service层的实现类交由Spring管理,不需要在配置文件中进行配置.但为了方便,事务的管理依然使用的 ...

  4. 截取字符串一之substring

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. grivid中切换按钮,两个按钮交替

    给grivdView不要设值 button的url和 commandName 在rowDatabound中操作变换 protected void GVData_RowDataBound(object ...

  6. 使用Spire PDF for .NET将HTML转换成PDF文档

    目录 开发环境说明 Spire PDF for .NET (free edition)体验 资源下载 开发环境说明 Microsoft Visual Studio 2013 Ultimate Edit ...

  7. Matlab中取模(mod)与取余(rem)的区别

    取模(mod)与取余(rem)是不同的,通常取模运算也叫取余运算,它们返回结果都是余数. rem和mod唯一的区别在于: 当x和y的正负号一样的时候,两个函数结果是等同的:当x和y的符号不同时,rem ...

  8. [vc]如何对radio按钮分组

    如何使用多组? 多组和一组是一样的使用,只要搞清楚哪个是哪一组的就行了.再为对话框添加Radio3和Radio4.很简单,先为这些RadioButton排个顺序,就是排列他们的TABORDER.在对话 ...

  9. 使用astyle格式化代码【脚本】

    astyle使用基础教程 http://cppblog.com/jokes000/articles/158838.html steps: (1) apt-get install astyle 或者去主 ...

  10. 开源libusb驱动的libwdi驱动安装API库和zadig.exe安装UI应用程序的编译和调试

    一.目的 二.编译环境 系统:Win7 ~ Win10 编译工具:Visual Studio 2008 或 Visual Studio 2010 或Visual Studio 2015 libwdi编 ...