在之前我们介绍过菜单的类有哪些,以及部分菜单的使用方法,在这里我们学习下开关菜单的使用。主要实现MenuItemToggle菜单多种状态切换以及状态对应的功能实现。
菜单中又包含了菜单项,菜单项类是MenuItem,每个菜单项都有三个基本状态:正常、选中、禁止。
菜单分类是按照菜单项进行分类的。MenuItem的子类有
MenuItemLabel(文本)
MenuItemSprite(精灵)
MenuItemToggle(开关)
其中MenuItemLabel类有两个子类MenuItemAtlasFont和MenuItemFont;
MenuItemSprite类是精灵菜单,它的子类是MenuItemImage,是图片菜单;
MenuItemToggle是开关菜单。
创建开关按钮
//开关按钮
auto toggleItem = MenuItemToggle::createWithCallback(
CC_CALLBACK_1(RunAction::menuMusicToggleCallback,this),
MenuItemLabel::create(Label::create(str, "Arial", 48)),
MenuItemLabel::create(Label::create(FontToUTF8("英语"), "微软雅黑", 48)),
MenuItemLabel::create(Label::create(str1, "Marker Felt", 48)),
MenuItemLabel::create(Label::create(str2, "Arial", 48)),
NULL);
toggleItem->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
toggleItem->setColor(Color3B(108, 10, 200));
auto menu = Menu::create(toggleItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu);
再接着看下回调函数
void RunAction::menuMusicToggleCallback(Ref* pSender)
{
auto menuToggleItem = (MenuItemToggle*)pSender;
CCLOG("menuToggleItem %d", menuToggleItem->getSelectedIndex());//获取被选中的菜单项索引。
//默认初始的状态值是0
if (menuToggleItem->getSelectedIndex() == 1)
{
CCLOG(FontToUTF8("状态值为1时功能实现。"));
}
else if (menuToggleItem->getSelectedIndex() == 2)
{
CCLOG(FontToUTF8("状态值为2时功能实现。"));
}
else if (menuToggleItem->getSelectedIndex() == 3)
{
CCLOG(FontToUTF8("状态值为3时功能实现。"));
}
else
{
CCLOG(FontToUTF8("默认状态功能实现。"));
}
}
按钮切换效果运行输出图: