cocos2dx之创建一个菜单按钮


1,在没有图片资源的情况下,如果想要创建一个只有字体的Menu按钮,看如下代码的创建步骤:

        CCLabelTTF *label = CCLabelTTF::create("Exit",  "Arial", 20); // create a exit botton
        CCMenuItemLabel *exit_game = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::menuExitGame) );
        exit_game->setPosition(CCPointZero);
        exit_game->setPosition(size.width -40, size.height - 40); // add an exit  button
               
CCMenu* pMenu = CCMenu::create( exit_game,NULL); //最后添加进去,就创建成功了

2,我需要用图片资源来创建自己风格的Menu菜单,代码如下:

 CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
            "NextLayeNormal.png", //png.jpg等图片格式都是可以的
            "NextLayeSelected.png",
            this,
            menu_selector(HelloWorld::menuCallback));
        CC_BREAK_IF(! pCloseItem);
        pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 70, 30));

CCMenu* pMenu = CCMenu::create( pCloseItem ,NULL); //最后添加进去,就创建成功了

以上是两种创建menu菜单的方式,还有另外几种方式,CCLabelAtlas,CCMenuItemFont

    CCLabelAtlas *plabelAtals = CCLabelAtlas::create("0123456789", "labelatlas.png", 16, 24, '.');
    plabelAtals->setColor(ccc3(250, 100, 0));
    CCMenuItemLabel *atalsMenu = CCMenuItemLabel::create(plabelAtals, this, menu_selector(MenuDemo::font_callBack));
    atalsMenu->setPosition(ccp(size.width / 3, size.height / 2));
    CCMenu *menu = CCMenu::create(atalsMenu, NULL);
    menu->setPosition(CCPointZero);
   

    CCMenuItemFont::setFontName("Marker Felt");
    CCMenuItemFont *menufont = CCMenuItemFont::create("My test Menu", this, menu_selector(MenuDemo::menuCallbackPriorityTest));
    menufont->setColor(ccc3(250, 100, 0));
    menufont->setPosition(ccp(size.width - 200, size.height / 2));
    menu->setPosition(CCPointZero);
    menu->addChild(menufont, 1);


     this->addChild(menu, 1);

采用CCMenuItemToggle来创建开关菜单,例子代码如下:

void MyMenuItemToggleLayer::initLayer() {
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite *bg = CCSprite::create("BG.jpg");
    bg->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
    this->addChild(bg, 1);
    CCMenuItemFont::setFontName( "Marker Felt" );
    CCMenuItemFont::setFontSize(34);
    CCMenuItemFont *on = CCMenuItemFont::create("On", this, menu_selector(MyMenuItemToggleLayer::onCallBack));
    on->setPosition(ccp(400, 400));
    CCMenuItemFont *create = CCMenuItemFont::create("Create", this, menu_selector(MyMenuItemToggleLayer::createCallBack));
    create->setPosition(ccp(500, 500));
    CCMenuItemToggle *toggle = CCMenuItemToggle::create(   this,
                                                                                        menu_selector(MyMenuItemToggleLayer::CallBack),
                                                                                        on,
                                                                                        create,
                                                                                        NULL);
    toggle->setColor(ccc3(255, 0 ,0));
    toggle->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
    CCMenu *menu = CCMenu::create(toggle, NULL);
    menu->setPosition(CCPointZero);
    this->addChild(menu, 2);
                                                                                        
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Cocos2d游戏中创建一个菜单,其中包含游戏内重启和返回选关选项的选项,你可以按照以下步骤进行操作: 1. 创建菜单项:使用Cocos2d中的MenuItem类创建菜单项。例如,你可以创建一个菜单项,用于重启游戏: ```c++ auto restartItem = MenuItemImage::create("restart_button.png", "restart_button_selected.png", CC_CALLBACK_1(GameScene::restartGame, this)); ``` 2. 创建菜单:使用Cocos2d中的Menu类创建菜单,将所有菜单项添加到该菜单中。例如: ```c++ auto menu = Menu::create(restartItem, nullptr); menu->setPosition(Vec2::ZERO); this->addChild(menu); ``` 3. 实现重启和返回选关选项的功能:在菜单项的回调函数中,你可以调用前面提到的重启游戏和返回选关选项的函数。例如: ```c++ void GameScene::restartGame(Ref* sender) { auto currentScene = Director::getInstance()->getRunningScene(); auto newScene = currentScene->create(); Director::getInstance()->replaceScene(newScene); } void GameScene::returnToLevelSelect(Ref* sender) { auto scene = LevelSelectScene::create(); Director::getInstance()->replaceScene(scene); } ``` 4. 将菜单项放置在适当的位置:你可以使用Cocos2d中的Vec2类设置菜单项的位置。例如: ```c++ restartItem->setPosition(Vec2(200, 100)); ``` 5. 在适当的时机显示菜单:例如,当玩家点击游戏中的暂停按钮时,你可以将菜单添加到场景中,并在适当的位置放置它。 ```c++ void GameScene::pauseGame() { this->addChild(menu); menu->setPosition(Vec2::ZERO); } ``` 以上代码仅供参考,具体的实现可能需要根据你的游戏逻辑进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值