除了标签以外,按钮也是很重要的UI控件,在游戏菜单中,按钮是必不可少的控件,它可以对游戏画面进行操作,例如游戏开始菜单项、暂停菜单项和退出菜单项等。

在对菜单项进行学习时,有必要先对MenuItem类进行学习,他是所有菜单项的基类,以下是常用方法。

static MenuItem* create() //创建一个对象

static MenuItem* create(const ccMenuCallback& callback)  //创建一个对象,参数是此菜单项的回调方法。

Rect rect() //获取菜单项的矩形区域

virtual void activate() //激活此菜单项。

virtual void selected() //选中菜单项。

virtual void unselected() //取消选中。

virutal bool isEnabled() //判断此菜单项是否可用。

virtual void setEnabled(bool value) //设置菜单项是否可用。

virtual bool isSelected() //判断菜单项是否被选中。

void setCallback(const ccMenuCallback& callback)  //设置菜单项回调方法。

MenuItem是所有菜单项的基类,不会直接使用,在开发中最主要是使用它的子类:

1、文本菜单项 - MenuItemLabel

static MenuItemLabel* create(Node* label,const ccMenuCallback& callback) //创建一个对象,参数一是标签指针,参数二是回调函数。

static MenuItemLabel* create(Node * label) //创建一个对象。

Color3B& getDisabledColor() //获取文本菜单被禁用时颜色。

void settDisabledColor(Color3B& color) //设置菜单被禁用时颜色。

Node* getLabel() //获取文本菜单项包含的标签。

void setLabel(Node* node) //设置文本菜单项包含的文本标签。

2、精灵菜单项 - MenuItemSprite

static MenuItemSprite* create(Node* normalSprite,Node* selectedSprite,Node* disabledSprite = nullptr) //创建一个对象,参数一是菜单未选中时对应的精灵指针,参数二是菜单被选中时精灵指针,参数三是菜单禁用时精灵指针(可以不设置)。

static  MenuItemSprite* create(Node* normalSprite,Node* selectedSprite,const ccMenuCallback& callback) //创建一个对象,参数一是菜单未选中时对应的精灵指针,参数二是菜单被选中时精灵指针,参数三是回调函数。

static MenuItemSprite* create(Node* normalSprite,Node* selectedSprite,Node* disabledSprite = nullptr,const ccMenuCallback& callback) //创建一个对象,参数一是菜单未选中时对应的精灵指针,参数二是菜单被选中时精灵指针,参数三是菜单禁用时精灵指针,参数四是回调函数。

void [set/get]NormalImage(Node* image) //设置/获取此单项没被选中时的精灵。

void [set/get]SelectedImage(Node* image) //设置/获取此单项被选中时的精灵。

void [set/get]DisabledImage(Node* image) //设置/获取此单项被禁用时的精灵。

3、图片菜单项 - MenuItemImage(是精灵菜单的子类)

static MenuItemImage* create() //创建一个子类

static MenuItemImage* create(const std::String& normalImage,const std::string& selectedImage) //创建一个菜单项对象,参数一是未点击时图片,参数二是点击时图片。

static MenuItemImage* create(const std::String& normalImage,const std::string& selectedImage,const std::string& disableImage) //创建一个菜单项对象,参数一是未点击时图片,参数二是点击时图片,参数三是禁用时候的图片。

static MenuItemImage* create(const std::String& normalImage,const std::string& selectedImage,ccMenuCallback& callback) //创建一个菜单项对象,参数一是未点击时图片,参数二是点击时图片,参数三是此菜单项的回调方法。。

static MenuItemImage* create(const std::String& normalImage,const std::string& selectedImage,const std::string& disableImage,ccMenuCallback& callback) //创建一个菜单项对象,参数一是未点击时图片,参数二是点击时图片,参数三是禁用时候的图片,参数四是此菜单项的回调方法。

void setNormalSpriteFrame(SpriteFrame* frame) //设置菜单项未被点击时图标。

void setSelectedSpriteFrame(SpriteFrame* frame)  //设置菜单被点击时图片。

void setDdisabledSpriteFrame(SpriteFrame* frame)  //设置菜单项被禁用时图片。

4、开关菜单项 - MenuItemToggle

static MenuItemToggle* create() // 创建一个对象

static MenuItemToggle* createWithCallback(const ccMenuCallback& callback,const Vector<MenuItem*>& menuItems) 创建一个对象,参数一是回调函数,参数二是菜单项容器。

static MenuItem* create(MenuItem* tiem) //基于一个菜单项创建触发器对象。

void addSubItem(Menutiem* tiem) //给触发器添加菜单项。

Menuitem* getSelecteditem() //返回被选中菜单项。

const unsigned int getSelectedIndex() //获取被选中菜单项的索引。

void getSelectedIndex( unsigned int index) //设置被选中菜单项。

set setSubitems(const Vector<menuItem*>& items) //设定触发器包含菜单项。

virutal void setEnabled(bool enabled) //启用或禁用菜单项

除了以上四个常用的子类外,MenuItem还有其余一些比较少用的子类,基本都是文本菜单项的子类。

但直接添加到布景层中的菜单项并不能发挥它的功能,菜单项必须依附在从菜单中才能从在布景中实现其功能。这个时候菜单类-Menu尤为重要。

※Menu类的常用方法:

static Menu* create() //创建一个对象。

static Menu* create(MenuItem* item,......)创建一个对象,参数是每个菜单项对象,最后要用NULL结尾。

static Menu* createWithArray(const Vector<MenuItem*>& arrayOfItems) //创建一个对象,参数是菜单项向量指针。

static Menu* createWithItem(MenuItem* item) //使用一个菜单项创建对象。

static Menu* createWithIitems(MenuItem*firstItem,ca_list args) //创建一个对象,参数一是第一个菜单项指针,参数二是变长参数。

void alignItemsHorizontally() //水平对齐菜单中菜单项。

void alignItemsHorizontallyWithPadding(float padding) //水平对齐菜单项,参数是各菜单间隔。

void alignItemsVertically() //垂直对齐菜单中菜单项。

void alignItemsVerticallyWithPadding(float padding) //垂直对齐菜单项,参数是各菜单间隔。

在布景上添加菜单项的方法:

1、把菜单项(MenuItem)添加进菜单(Menu)

2、把菜单(Menu)添加至相应层(Layer)

Cocos2dx 菜单项控件-Menu相关推荐

  1. tkinter教程7:控件Menu

    tkinter教程7:控件Menu 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: python版本:3.5 开发环境:pyCharm 源码: ...

  2. 常用MFC控件基础使用(Edit Button Check Combo Tree 显示位图 控件大小自适应、线程、右键菜单、控件调整移动、MFC背景)

    常用MFC控件基础使用 1.Edit Control 2.Button控件 3.Check控件 4.Combo Box 5.Tree 控件 5.快捷键设置 6 显示缓冲区位图 7 窗口自适应大小 8 ...

  3. vc2008中mfc菜单、控件等汉字显示为问号或乱码的解决方法

    在vc2008中建立基于mfc的project.在向导的Application type页面中如果在resource language选项中选择"英语(美国)"(图一),那么在pr ...

  4. html ui 下拉列表,Atitit.ui控件-下拉菜单选择控件的实现select html_html/css_WEB-ITnose...

    Atitit.ui控件---下拉菜单选择控件的实现select html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& mod ...

  5. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...

    Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...

  6. ASP.NET2.0 菜单控件menu的动态静态用法

    利用 ASP.NET Menu 控件,可以开发 ASP.NET 网页的静态和动态显示菜单.您可以在 Menu 控件中直接配置其内容,也可通过将该控件绑定到数据源的方式来指定其内容. 无需编写任何代码, ...

  7. Coolite Toolkit学习笔记五:常用控件Menu和MenuPanel

    Coolite Toolkit里的Menu控件和其他的.NET Web控件不一样,如果只是设计好了Menu或是通过程序初始化菜单项,菜单是不会呈现在界面上的,因为Coolite Toolkit规定Me ...

  8. Matlab学习笔记(三)--菜单与控件

    26.菜单的创建 使用函数uimenu创建菜单. 使用示例: clear all ; clc ; rect=get(0,'screenSize');%获取屏幕尺寸 N=512;%屏幕尺寸 %创建图形窗 ...

  9. C#/Winform 右键菜单-ContextMenuStrip控件

    效果 用于TreeView的右键菜单,同样也适用于ListBox,Lable等其他控件 1.添加ContextMenuStrip.TreeView 设置一下:ContextMenuStrip的选项.T ...

最新文章

  1. Mybatis传递多个参数的4种方式
  2. 微软修复20多年的老漏洞:Win95时就存在了
  3. docker linux redis 安装
  4. 面试题: 看下面的程序是否有问题 如果有问题请指出 并说明 (关于数据类型-隐性转换的小陷阱)
  5. audio h5 src 变了之后_我在叩丁狼学H5
  6. 别在Java代码里乱打日志了,这才是正确的打日志姿势!
  7. 非常全的VS Code快捷键
  8. Web方式预览Office/Word/Excel/pdf文件解决方案
  9. Android 中关于Cursor类的介绍
  10. [7]2019-ICDM-Learning to Sample:an Active Learning Framework 论文笔记
  11. 比特币 POW 白皮书 区块篡改成功的概率计算详解
  12. python自定义类
  13. Android Netd ndc
  14. Win7原版镜像注入USB驱动
  15. idea toggle offline mode
  16. LeetCode Relative Ranks
  17. Java 正则表达式 中的 任意字符
  18. qt编译quazip静态库_Qt之QuaZip编译-使用教程
  19. 张一鸣和扎克伯格,一生之敌
  20. html 图片比例 js,js自动等比例设置图片尺寸大小

热门文章

  1. 技巧篇:常用的python代码汇总
  2. 判断dll的.netframwork的版本的两种方式
  3. 下载神器:axel aria2 mwget多线程快速下载取代curl和wget的多线程下载命令
  4. 35岁以后软测就没有出路了吗?听听京东10年测开的经验分析
  5. C语言关键字---auto
  6. 基于Android的备忘录软件,基于Android的手机备忘录软件设计
  7. Java调用arcgis导入shape,java for arcgis 之——将shapefile导入SDE
  8. 基于ssm高校科研管理系统-计算机毕业设计源码+LW文档
  9. HDU 3549 网络流水题
  10. 生物信息学——fasts格式文件合并