在之前我們介紹過菜單的類有哪些,以及部分菜單的使用方法,在這裏我們學習下開關菜單的使用。主要實現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("默認狀態功能實現。"));
}
}
按鈕切換效果運行輸出圖: