cocox2d-x CCMenuItemFon

来源:互联网 发布:迈科技 知乎 编辑:程序博客网 时间:2024/05/21 12:10

转自:http://blog.csdn.net/xiaoxiangp/article/details/7697099

最近发现了一个相当不错的博客  Bugs Bunny的博客..讲的特别详细,比小满的不知道详细了多少..很值得大家一看..

http://www.cnblogs.com/cocos2d-x/


其中有一篇是介绍菜单的..我在这里加入注释的和大家分析一下吧..





[cpp] view plaincopy


  1. bool HelloWorld::init()  
  2. {  
  3.     bool bRet = false;  
  4.     do   
  5.     {  
  6.         CC_BREAK_IF(! CCLayer::init());  
  7.   
  8.         //设置菜单字体和大小  
  9.         CCMenuItemFont::setFontName("American Typewriter");  
  10.         CCMenuItemFont::setFontSize(18);  
  11.   
  12.         CCMenuItemFont *title1 = CCMenuItemFont::itemFromString("Sound");  
  13.         CC_BREAK_IF(!title1);  
  14.         title1->setIsEnabled(false);//设置成无效,看起来就像静态文字一样,不可点击  
  15.   
  16.         //同样设置菜单的字体和大小,用于区分标题和选项  
  17.         CCMenuItemFont::setFontName("Marker Felt");  
  18.         CCMenuItemFont::setFontSize(26);  
  19.   
  20.         //创建一个多选项菜单项  
  21.         CCMenuItemToggle *item1 = CCMenuItemToggle::itemWithTarget(NULL,NULL,  
  22.             CCMenuItemFont::itemFromString("On"),CCMenuItemFont::itemFromString("Off"),NULL);  
  23.         CC_BREAK_IF(!item1);  
  24.   
  25.         CCMenuItemFont::setFontName("American Typewriter");  
  26.         CCMenuItemFont::setFontSize(18);  
  27.         CCMenuItemFont *title2 = CCMenuItemFont::itemFromString("Music");  
  28.         CC_BREAK_IF(!title2);  
  29.         title2->setIsEnabled(false);  
  30.   
  31.         CCMenuItemFont::setFontName("Marker Felt");  
  32.         CCMenuItemFont::setFontSize(26);  
  33.         //创建多选项  
  34.         CCMenuItemToggle *item2 = CCMenuItemToggle::itemWithTarget(NULL,NULL,  
  35.             CCMenuItemFont::itemFromString("On"),CCMenuItemFont::itemFromString("Off"),NULL);  
  36.         CC_BREAK_IF(!item2);  
  37.   
  38.         CCMenuItemFont::setFontName("American Typewriter");  
  39.         CCMenuItemFont::setFontSize(18);  
  40.         CCMenuItemFont *title3 = CCMenuItemFont::itemFromString("AI");  
  41.         CC_BREAK_IF(!title3);  
  42.         title3->setIsEnabled(false);  
  43.   
  44.         CCMenuItemFont::setFontName("Marker Felt");  
  45.         CCMenuItemFont::setFontSize(26);  
  46.         CCMenuItemToggle *item3 = CCMenuItemToggle::itemWithTarget(NULL,NULL,  
  47.             CCMenuItemFont::itemFromString("Attack"),CCMenuItemFont::itemFromString("Defense"),NULL);  
  48.         CC_BREAK_IF(!item3);  
  49.   
  50.         CCMenuItemFont::setFontName("American Typewriter");  
  51.         CCMenuItemFont::setFontSize(18);  
  52.         CCMenuItemFont *title4 = CCMenuItemFont::itemFromString("Mode");  
  53.         CC_BREAK_IF(!title4);  
  54.         title4->setIsEnabled(false);  
  55.   
  56.         CCMenuItemFont::setFontName("Marker Felt");  
  57.         CCMenuItemFont::setFontSize(26);  
  58.         //下面这一段有些复杂,首先创建一个多选项..里面只放一个内容  
  59.         CCMenuItemToggle *item4 = CCMenuItemToggle::itemWithTarget(NULL,NULL,  
  60.             CCMenuItemFont::itemFromString("Easy"),NULL);  
  61.         CC_BREAK_IF(!item4);  
  62.   
  63.         //r然后创建一个选项数组,这里用到了模板,并使用从对象获得数据,然后加入数据,NULL结束  
  64.         CCMutableArray<CCMenuItem*> *more_Items =   
  65.             CCMutableArray<CCMenuItem*>::arrayWithObjects(  
  66.             CCMenuItemFont::itemFromString("Normal"),  
  67.             CCMenuItemFont::itemFromString("Hard"),  
  68.             CCMenuItemFont::itemFromString("Nightmare"),NULL);  
  69.         CC_BREAK_IF(!more_Items);  
  70.   
  71.         //调用获得选项函数,使用添加对象数组,把刚才创建的选项数组加入item4  
  72.         item4->getSubItems()->addObjectsFromArray(more_Items);  
  73.   
  74.         //设置索引为0,这个时候的0是Easy,1是Normal....  
  75.         item4->setSelectedIndex(0);  
  76.   
  77.         //创建菜单对象,把菜单项加入菜单对象中....  
  78.         CCMenu *menu = CCMenu::menuWithItems(title1,title2,item1,item2,title3,title4,item3,item4,NULL);  
  79.         CC_BREAK_IF(!menu);  
  80.         //设置菜单显示的排列方式,这样一来就是4排2列  
  81.         menu->alignItemsInColumns(2,2,2,2,NULL);  
  82.   
  83.         this->addChild(menu);  
  84.   
  85.         bRet = true;  
  86.     } while (0);  
  87.     return bRet;  
  88. }  
原创粉丝点击