Cocos2d-x的菜單中提供了多種菜單項的生成方式,他們都繼承於MenuItem,如下圖
1 CCMenuItemLable
包括CCMenuItemAtlasFont和CCMenuItemFont是兩種定義菜單項字體的方式,其中CCMenuItemFont是通過設定字體名稱來設置字體,這個字體是系統自帶的,通過官方TestCpp中的實例可以查看其用法
// Label Item (LabelAtlas)
CCLabelAtlas* labelAtlas = CCLabelAtlas::create("0123456789", "fonts/labelatlas.png", 16, 24, '.');
CCMenuItemLabel* item3 = CCMenuItemLabel::create(labelAtlas, this, menu_selector(MenuLayerMainMenu::menuCallbackDisabled) );
item3->setDisabledColor( ccc3(32,32,64) );
item3->setColor( ccc3(200,200,255) );
// Font Item
CCMenuItemFont *item4 = CCMenuItemFont::create("I toggle enable items", this, menu_selector(MenuLayerMainMenu::menuCallbackEnable) );
item4->setFontSizeObj(20);
item4->setFontName("Marker Felt");
// Label Item (CCLabelBMFont)
CCLabelBMFont* label = CCLabelBMFont::create("configuration", "fonts/bitmapFontTest3.fnt");
CCMenuItemLabel* item5 = CCMenuItemLabel::create(label, this, menu_selector(MenuLayerMainMenu::menuCallbackConfig));
// Testing issue #500
item5->setScale( 0.8f );
// Events
CCMenuItemFont::setFontName("Marker Felt");
CCMenuItemFont *item6 = CCMenuItemFont::create("Priority Test", this, menu_selector(MenuLayerMainMenu::menuCallbackPriorityTest));
// Bugs Item
CCMenuItemFont *item7 = CCMenuItemFont::create("Bugs", this, menu_selector(MenuLayerMainMenu::menuCallbackBugsTest));
// Font Item
CCMenuItemFont* item8 = CCMenuItemFont::create("Quit", this, menu_selector(MenuLayerMainMenu::onQuit));
CCMenuItemFont* item9 = CCMenuItemFont::create("Remove menu item when moving", this,
menu_selector(MenuLayerMainMenu::menuMovingCallback));
2.CCMenuItemSprite
這個菜單項的特點就是可以封裝圖片進入菜單項,用法如下
// Font Item
CCSprite* spriteNormal = CCSprite::create(s_MenuItem, CCRectMake(0,23*2,115,23));
CCSprite* spriteSelected = CCSprite::create(s_MenuItem, CCRectMake(0,23*1,115,23));
CCSprite* spriteDisabled = CCSprite::create(s_MenuItem, CCRectMake(0,23*0,115,23));
CCMenuItemSprite* item1 = CCMenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, this, menu_selector(MenuLayerMainMenu::menuCallback) );
// Image Item
CCMenuItem* item2 = CCMenuItemImage::create(s_SendScore, s_PressSendScore, this, menu_selector(MenuLayerMainMenu::menuCallback2) );
2.CCMenuItemToggle
CCMenuItemToggle可以將任意的CCMenuItem封裝進去,作爲一個按鈕式的開關
CCMenuItemToggle* item1 = CCMenuItemToggle::createWithTarget(this,
menu_selector(MenuLayer4::menuCallback),
CCMenuItemFont::create( "On" ),
CCMenuItemFont::create( "Off"),
NULL );