您的位置:首页 > 产品设计 > UI/UE

MenuItemToggle的使用

2015-07-24 09:07 441 查看
在使用Mneu的时候,我们通常会使用MenuItem来创建Menu,而MenuItem的子类有很多,如下图:



我们经常会使用到的就是MenuItemImage和MenuItemSprite,在这里,就讲讲MenuItemToggle的用处和用法。

MeniItemToggle:它在内部拥有一个MenuItem数组,用来负责展示不同的按钮状态。因为使用了一个菜单按钮的数组,所以此类的对象可以实现状态切换。

//通过容器来创建一个MenuItemToggle

static MenuItemToggle * createWithCallback(const ccMenuCallback& callback, constVector<MenuItem*>& menuItems);

//通过一系列MenuItem来创建一个MenuItemToggle,最后要以NULL结尾

static MenuItemToggle* createWithCallback(const ccMenuCallback& callback, MenuItem*item, ...) CC_REQUIRES_NULL_TERMINATION;

MenuItemToggle实现了显示内容的切换,所切换之后显示的内容由你在创建时所添加的MenuItem的内容和顺序有关,默认显示第一个MenuItem。

既然MenuItemToggle能够显示内容的切换,那么我们可以用它来实现单选按钮或者多选按钮之类的功能,点击显示选中状态,再次点击显示未选中状态。

在有些游戏的设置界面中,就有点击切换选中与没选中状态来实现是否开启或关闭音乐的功能,那么这个控件就可以通过MenuItemToggle来实现,如下图:



下面我们来实现这种控件:

首先创建MenuItemToggle,然后通过其创建Menu

//选中状态精灵

auto musicOnSpr=Sprite::createWithSpriteFrameName("Hook.png");

//未选中状态精灵

auto musicOffSpr=Sprite::createWithSpriteFrameName("unchecked.png");

//将精灵包装成MenuItem,以便创建MenuItemToggle

auto musicOn=MenuItemSprite::create(musicOnSpr, musicOnSpr);

auto musicOff=MenuItemSprite::create(musicOffSpr, musicOffSpr);

//创建MenuItemToggle,第一个参数是回调函数 后面依次是要显示的MenuItem,最后必须为NULL

MenuItemToggle* musicItemToggle=MenuItemToggle::createWithCallback(CC_CALLBACK_1(SetLayer::menuCallBack, this), musicOn,musicOff, NULL);

musicItemToggle->setPosition(Vec2(320, 457));
//通过MenuItemToggle创建Menu

auto menu=Menu::create(musicItemToggle,NULL);

menu->setPosition(Vec2(0, 0));

this->addChild(menu);

我们再来看看回调函数void SetLayer::menuCallBack(Ref* ref)

参数Ref表示被点击的MenuItem

void SetLayer::menuCallBack(Ref* ref)

{

//将ref转换为MenuItemToggle对象

auto item=(MenuItemToggle*)ref;

/*获取当前显示内容的下标,可以通过下标知道当前控件所显示的内容,在创建MenuItemToggle时,第一个被添加到MenuItemToggle的MenuItem的下标为0,第二个被添加到MenuItemToggle的MenuItem的下标为1,以此类推,在这里,显示musicOn时,getSelectedIndex的值为0,显示musicOff时,getSelectedIndex的值为1*/

item->getSelectedIndex();

//再根据显示内容实现不同操作

........

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: