菜单类(CCMenu)可以由图片,系统文字或者自定义文字组成。继承CCLayer,
CCCopy---->object---->node----->layer---->menu而CCMenuItem并不继承CCMenu,(而是继承自CCNode类)需要注意
CCMenu可以看成一个菜单层类容器,专门盛放CCMenuItem类对象
node----->CCMenuItem---->MenuItemLabel ---->atlasFont
----->ItemFont
----->MenuItemSprite ---->MenuItemImage
----->MenuItemToggle
1.CCMenuItemImage//适合做前进/后退按钮,鼠标离开后恢复原状
注:每次点击image图片时候,无论它是否加入到Toggle中,总会先变换自己的第二种图片状态,再换成其他图片
意:继承自CCMenuItemSprite,包含三个对象,分别表示未选中、选中和禁止三个状态的图像。
(禁止状态的图像怎么用? item1 ->setEnabled(false);)
CCMenuItemImage* item1 = CCMenuItemImage::create("PlayMenu.png", "PlayMenu.png");
item1->setTarget(this, menu_selector(MainLayer::menuPlayGmaeCallback));
CCMenu* menu = CCMenu::create(item1, NULL);
menu->setPosition(ccp(130, 225));
this->addChild(menu);
2.CCMenuItemToggle//适合做开关,可以有无数种状态,鼠标每次点击后改变状态图片。
注:无论增加多少中图片,最后一定加上NULL(内部由MenuItem数组负责展示不同的状态)
CCMenuItemImage* image4 = CCMenuItemImage::create("Icon.png", "Icon.png");
CCMenuItemToggle* item1 = CCMenuItemToggle::createWithTarget(this, menu_selector(MainScene::clickBtnMusic), image, image2, image4,image3, NULL);
CCMenu* menu = CCMenu::create(item1, NULL);
menu->setPosition(ccp(240, 160));
this->addChild(menu,0);
3.CCMenuItemFont//以字体转换成itemfont,点击会变大 -------这是一个可以设置字体的菜单项
注:添加文字的三种方式中没有它,一方面font虽然能setString,但是它已经不单单以文字形式出现了,而是以Lable形式,(它的默认属性为CCMenuItemFont)
意:可以把它理解为一个节点,上面有个文字,文字在节点的左下角。
CCMenuItemFont* font1 = CCMenuItemFont::create("abc中文", this, menu_selector(MainScene::clickBtnMusic));
//font1->setContentSize(CCSizeMake(300, 10));
CCMenu* menu = CCMenu::create( font1,NULL);
menu->setPosition(ccp(240, 160));
menu->setColor(ccc3(255, 0, 0));
menu->alignItemsInColumns(1);
menu->alignItemsVerticallyWithPadding(50);
this->addChild(menu,1);
//font1->setString("001");
4.设置文字的三种方式
@1.CCLabelAtlas//自定义字体,需要一个图片,最多只能显示12个数字
注:最后的参数为ASCLL值,
CCLabelAtlas* diceCount=CCLabelAtlas::create("12340123456546541321", "set1_player_hud3.png", 14, 21, '0');
CCMenuItemLabel* label = CCMenuItemLabel::create(diceCount, this, menu_selector(MainScene::clickBtnMusic));
CCMenu* menu = CCMenu::create(label, NULL);
menu->setPosition(ccp(240, 160));
this->addChild(menu);
label->setString("120h1:2");