Cocos2d-x的菜单中提供了多种菜单项的生成方式,他们都继承于MenuItem,如下图
1CcmenuItemLable
包括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",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,menu_selector(MenuLayerMainMenu::menuCallbackConfig));
// Testing issue #500
item5->setScale( 0.8f );
// Events
CcmenuItemFont::setFontName("Marker Felt");
CcmenuItemFont *item6 = CcmenuItemFont::create("Priority Test",menu_selector(MenuLayerMainMenu::menuCallbackPriorityTest));
// Bugs Item
CcmenuItemFont *item7 = CcmenuItemFont::create("Bugs",menu_selector(MenuLayerMainMenu::menuCallbackBugsTest));
// Font Item
CcmenuItemFont* item8 = CcmenuItemFont::create("Quit",menu_selector(MenuLayerMainMenu::onQuit));
CcmenuItemFont* item9 = CcmenuItemFont::create("Remove menu item when moving",
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,23*1,23));
CCSprite* spritedisabled = CCSprite::create(s_MenuItem,23*0,23));
CcmenuItemSprite* item1 = CcmenuItemSprite::create(spritenormal,spriteSelected,spritedisabled,menu_selector(MenuLayerMainMenu::menuCallback) );
// Image Item
CcmenuItem* item2 = CcmenuItemImage::create(s_Sendscore,s_PressSendscore,menu_selector(MenuLayerMainMenu::menuCallback2) );
2.CcmenuItemToggle
CcmenuItemToggle可以将任意的CcmenuItem封装进去,作为一个按钮式的开关
CcmenuItemToggle* item1 = CcmenuItemToggle::createWithTarget(this,menu_selector(MenuLayer4::menuCallback),CcmenuItemFont::create( "On" ),CcmenuItemFont::create( "Off"),NULL );