【Cocos2d-x】新手自学(六)文字菜单

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

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


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


【Cocos2d-x】新手自学(六)文字菜单_第1张图片


bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());

		//设置菜单字体和大小
		CCMenuItemFont::setFontName("American Typewriter");
		CCMenuItemFont::setFontSize(18);

		CCMenuItemFont *title1 = CCMenuItemFont::itemFromString("Sound");
		CC_BREAK_IF(!title1);
		title1->setIsEnabled(false);//设置成无效,看起来就像静态文字一样,不可点击

		//同样设置菜单的字体和大小,用于区分标题和选项
		CCMenuItemFont::setFontName("Marker Felt");
		CCMenuItemFont::setFontSize(26);

		//创建一个多选项菜单项
		CCMenuItemToggle *item1 = CCMenuItemToggle::itemWithTarget(NULL,NULL,
			CCMenuItemFont::itemFromString("On"),CCMenuItemFont::itemFromString("Off"),NULL);
		CC_BREAK_IF(!item1);

		CCMenuItemFont::setFontName("American Typewriter");
		CCMenuItemFont::setFontSize(18);
		CCMenuItemFont *title2 = CCMenuItemFont::itemFromString("Music");
		CC_BREAK_IF(!title2);
		title2->setIsEnabled(false);

		CCMenuItemFont::setFontName("Marker Felt");
		CCMenuItemFont::setFontSize(26);
		//创建多选项
		CCMenuItemToggle *item2 = CCMenuItemToggle::itemWithTarget(NULL,NULL,
			CCMenuItemFont::itemFromString("On"),CCMenuItemFont::itemFromString("Off"),NULL);
		CC_BREAK_IF(!item2);

		CCMenuItemFont::setFontName("American Typewriter");
		CCMenuItemFont::setFontSize(18);
		CCMenuItemFont *title3 = CCMenuItemFont::itemFromString("AI");
		CC_BREAK_IF(!title3);
		title3->setIsEnabled(false);

		CCMenuItemFont::setFontName("Marker Felt");
		CCMenuItemFont::setFontSize(26);
		CCMenuItemToggle *item3 = CCMenuItemToggle::itemWithTarget(NULL,NULL,
			CCMenuItemFont::itemFromString("Attack"),CCMenuItemFont::itemFromString("Defense"),NULL);
		CC_BREAK_IF(!item3);

		CCMenuItemFont::setFontName("American Typewriter");
		CCMenuItemFont::setFontSize(18);
		CCMenuItemFont *title4 = CCMenuItemFont::itemFromString("Mode");
		CC_BREAK_IF(!title4);
		title4->setIsEnabled(false);

		CCMenuItemFont::setFontName("Marker Felt");
		CCMenuItemFont::setFontSize(26);
		//下面这一段有些复杂,首先创建一个多选项..里面只放一个内容
		CCMenuItemToggle *item4 = CCMenuItemToggle::itemWithTarget(NULL,NULL,
			CCMenuItemFont::itemFromString("Easy"),NULL);
		CC_BREAK_IF(!item4);

		//r然后创建一个选项数组,这里用到了模板,并使用从对象获得数据,然后加入数据,NULL结束
		CCMutableArray<CCMenuItem*> *more_Items = 
			CCMutableArray<CCMenuItem*>::arrayWithObjects(
			CCMenuItemFont::itemFromString("Normal"),
			CCMenuItemFont::itemFromString("Hard"),
			CCMenuItemFont::itemFromString("Nightmare"),NULL);
		CC_BREAK_IF(!more_Items);

		//调用获得选项函数,使用添加对象数组,把刚才创建的选项数组加入item4
		item4->getSubItems()->addObjectsFromArray(more_Items);

		//设置索引为0,这个时候的0是Easy,1是Normal....
		item4->setSelectedIndex(0);

		//创建菜单对象,把菜单项加入菜单对象中....
		CCMenu *menu = CCMenu::menuWithItems(title1,title2,item1,item2,title3,title4,item3,item4,NULL);
		CC_BREAK_IF(!menu);
		//设置菜单显示的排列方式,这样一来就是4排2列
		menu->alignItemsInColumns(2,2,2,2,NULL);

		this->addChild(menu);

        bRet = true;
    } while (0);
    return bRet;
}


你可能感兴趣的:(null,menu,bugs)