CCMenuItem 菜单项简单介绍
cocos2d-x提供了多种菜单项,分别为:CCMenuItemLable、CCMenuItemSprite、CCMenuItemToggle、CCMenuItemAtlasFont、CCMenuItemFont及CCMenuItemImage他们都继承CCMenuItem,继承图如下:
CCMenuItemFont* back = CCMenuItemFont::create("back", this, menu_selector(TestMenu::back)); back->setPosition(ccp(origin.x + back->getContentSize().width/2, origin.y + SCEEN_SIZE.height - back->getContentSize().height/2 )); //CCLabelTTF: //参数1:需要显示的文本 //参数2:需要显示的字体 //参数3:字体的大宿 //常用函数:setString //CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL纹理将会被创广 //这意味着setString 和创建一个新的标签一样慢 //所以,当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象⾿ //而应该使用CCLabelAtlas或者是CCLabelBMFont CCLabelTTF* label = CCLabelTTF::create(StringsMgr::instance()->getString(std::string("label")), "Thonburi", 30); CCMenuItemLabel* itemLabel = CCMenuItemLabel::create(label); itemLabel->setPosition(ccp(SCEEN_SIZE.width/2, 100)); //CCMenuItemAtlasFont: //参数1:需要显示的文本 //参数2:字符的图像文乿 //参数3:字符的宽帿 //参数4:字符的高帿 //参数5:设定图像文件的起始字窿 //在示例程帿HelloWorld)的左下角显示帧率的数字就是用的CCLabelAtlas, //因为帧率一直在变,使用CCLabelTTF的话效率太低ﺿ //因为只是数字所以也犯不上使用CCLabelBMFont 加载那么大的文字图像 CCMenuItemAtlasFont* atlasFont = CCMenuItemAtlasFont::create("9547391823", "hurtnum2.png",11, 14, '0'); atlasFont->setPosition(ccp(SCEEN_SIZE.width/2, 200)); //CCLabelBMFont //参数1:需要显示的文本 //参数2:字体坐标文件(*.fnt) const char* str = StringsMgr::instance()->getString("china"); CCLabelBMFont* pLable = CCLabelBMFont::create(str, "fonts/bitmapFontChinese.fnt"); pLable->setPosition(ccp(SCEEN_SIZE.width / 2, SCEEN_SIZE.height /2)); layer->addChild(pLable); CCLabelBMFont* bmFont = CCLabelBMFont::create("bitmap font", "fonts/bitmapFontChinese.fnt"); CCMenuItemLabel* bmItemLabel = CCMenuItemLabel::create(bmFont); bmItemLabel->setPosition(ccp(SCEEN_SIZE.width/2, 250)); //CCMenuItemImage //选中和未选中状态,还可设置disable状态,这里我没有设置回调 CCMenuItemImage* itemImage = CCMenuItemImage::create("side_button5@2x.png", "side_button6@2x.png"); itemImage->setPosition(ccp(SCEEN_SIZE.width / 2, SCEEN_SIZE.height /2+100)); //CCMenuItemToggle //开关,可以传1个或多个CCMenuItem,可以用getSelectedIndex()得到当前显示的第几个CCMenuItem CCMenuItemToggle* itemToggle = CCMenuItemToggle::createWithTarget(this, menu_selector(TestMenu::toggle), CCMenuItemFont::create("status_1"), CCMenuItemFont::create("status_2"), CCMenuItemFont::create("status_3"), NULL); itemToggle->setPosition(ccp(SCEEN_SIZE.width / 2, SCEEN_SIZE.height /2+200)); CCMenu* menu = CCMenu::create(back, itemLabel, atlasFont, bmItemLabel, itemImage, itemToggle, NULL); menu->setPosition(CCPointZero); layer->addChild(menu);
最近刚开始研究cocos2dx,如果有错误请高手指出,谢谢。