Cocos2dx 菜单项控件-Menu

来源:互联网 发布:淘宝一元拍是真的吗 编辑:程序博客网 时间:2024/04/30 09:32

除了标签以外,按钮也是很重要的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)



0 0