菜单在游戏中是非常常见的控件之一。下面来分析下在cocos2dx中有那些菜单。
一共有六种菜单。
CCMenu在创建时需要使用CCMenuItem来创建。
CCMenu继承自CCLayer,是一个菜单管理选择画面层,该画面以Menu对象为集合类,由MenuItem类实例组成各种按钮。CCMenu类提供的方法主要用来按横向、竖向或者多行列排序展示MenueItem的类实例。同时,CCMenu只支持CCMenuItem节点作为它的子节点。
注意 CCMenuItem是基础类,不能直接用来创建菜单,它的作用主要是设置按钮状态以及处理回调方法。需要使用CCMenuItem的子类来创建定制菜单项。
//----CCMenuItemFont
CCMenuItemFont* itemFont = CCMenuItemFont::create("开始游戏", this,menu_selector(HelloWorld::menuFun));
itemFont->setPosition(ccp(-120,80));
//----CCMenuItemImage
CCMenuItemImage* imageItem = CCMenuItemImage::create("CloseNormal.png","CLoseSelected.png", this,menu_selector(HelloWorld::menuFun));
imageItem->setPosition(ccp(-20,80));
//----CCMenuItemLabel
CCLabelTTF * lableTTF = CCLabelTTF::create("返回主菜单", "Helvetica", 20);
CCMenuItemLabel * labelItem =CCMenuItemLabel::create(lableTTF,this,menu_selector(HelloWorld::menuFun));
labelItem->setPosition(ccp(80,80));
//----CCMenuItemSprite
CCSprite* spNor = CCSprite::create("Icon.png");
spNor->setColor(ccc3(255, 255, 0 ));
CCSprite* spSelected =CCSprite::create("Icon.png");
CCMenuItemSprite* spriteItem = CCMenuItemSprite::create(spNor,spSelected, this,menu_selector(HelloWorld::menuFun));
spriteItem->setPosition(ccp(-80,-20));
//----CCMenuItemToggle
CCMenuItemFont * fontItem1 = CCMenuItemFont::create("音乐开");
CCMenuItemFont * fontItem2 = CCMenuItemFont::create("音乐关");
CCMenuItemToggle* toggleItem = CCMenuItemToggle::createWithTarget(this,menu_selector(HelloWorld::menuFun), fontItem1,fontItem2,NULL);
toggleItem->setPosition(ccp(20,-20));
CCMenuItemAtlasFont
CCMenuItemAtlasFont直接继承自CCMenuItemLabel,将一个CCLabelAtlas转变为一个菜单项,增加选中时的文字放大效果
CCMenu* menu = CCMenu::create(itemFont,imageItem,labelItem,spriteItem,toggleItem,NULL);
addChild(menu);