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,如果有错误请高手指出,谢谢。

posted @ 2013-11-02 15:37  ben_2012  阅读(300)  评论(0编辑  收藏  举报