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

转载于:https://www.cnblogs.com/ben-android/p/3403832.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值