在Cocos2d-x中添加一个简单的Button链接

时间:2013-05-08 23:14:24

标签: iphone ios ipad cocos2d-iphone cocos2d-x

我希望在菜单屏幕上添加一个按钮,它不需要任何复杂的事实,事实上,越容易越好!

该项目是一个Cocos2d-x项目,这是现有的开始按钮代码;

 fileName = (CCString*)sc->imageDict->objectForKey("GUI_StartButton-image");
    CCSprite *startGameSprite = CCSprite::createWithSpriteFrameName( fileName->m_sString.c_str() );
    CCSprite *startGameSpriteClick = CCSprite::createWithSpriteFrameName( fileName->m_sString.c_str() );
    startGameSpriteClick->setColor( ccc3(128, 128, 128) );
    CCMenuItemSprite *startGameItem = CCMenuItemSprite::create(startGameSprite, startGameSpriteClick, NULL, this, menu_selector(MainMenu::menuStartGameCallback));

    startGameItem->setPosition( GameController::sharedGameController()->getPositionOfUIItem( "GUI_StartButton-image" ) );

    pMenu = CCMenu::create(startGameItem, NULL);

我想要做的就是添加另一个按钮并将其命名为“信息”

我可以为它创建image.png没问题,但是如果有人可以协助我帮我输入要显示的按钮,那么,让我们使用硬编码值,例如,如果可能的话,把它放在屏幕的左上角?

我想它需要一个动作告诉它在按下时该怎么做,我有代码可以放进去,但我不知道我需要把它称为动作,通常它会是一个空白或者IBAction,但这是Cocos,所以我不熟悉它。 非常感谢任何帮助!谢谢 :) 克里斯

1 个答案:

答案 0 :(得分:3)

您是否已将菜单作为孩子添加到您的比例/当前图层?

在将其添加为子节点之前,它将不会被渲染。

我会创建一个菜单如下:

// create the sprites for button up and button down
CCSprite* startGameSprite = CCSprite::createWithSpriteFrameName("start_button_up.png");  
CCSprite* startGameSpriteClick = CCSprite::createWithSpriteFrameName("start_button_down.png");  
// create a menu item (button) with the up/down sprites
CCMenuItemSprite* startGameItem = CCMenuItemSprite::create(startGameSprite, startGameSpriteClick, this, menu_selector(MainMenu::menuStartGameCallback));  

// create a menu to hold the buttons (remembering to NULL terminate the list)
CCMenu *menu = CCMenu::create(startGameItem, NULL);
// position the entire menu
menu->setPosition(0,0);  
// add it as a child (so it appears
this->addChild(menu);  

注意:

menu_selector(MainMenu::menuStartGameCallback)

这告诉CCMenuItemSprite检测到触摸时要调用的函数,并且应该是以下结构的类MainMenu中的函数:

void MainMenu::menuStartGameCallback(CCObject* sender)
{
    CCLOG("Hello!");
}

请记住在MainMenu.h

中声明此功能

现在,要在此菜单中添加另一个按钮,您只需要添加上述代码:

// NEW /////////
CCSprite* informationSprite = CCSprite::createWithSpriteFrameName("info_button_up.png");  
CCSprite* informationSpriteClick = CCSprite::createWithSpriteFrameName("info_button_down.png"); 
CCMenuItemSprite* infoGameItem = CCMenuItemSprite::create(informationSprite, informationSpriteClick, this, menu_selector(MainMenu::menuInfoCallback)); 
// END NEW //////

CCSprite* startGameSprite = CCSprite::createWithSpriteFrameName("start_button_up.png");  
CCSprite* startGameSpriteClick = CCSprite::createWithSpriteFrameName("start_button_down.png"); 
// create a menu item (button) with the up/down sprites
CCMenuItemSprite* startGameItem = CCMenuItemSprite::create(startGameSprite, startGameSpriteClick, this, menu_selector(MainMenu::menuStartGameCallback));  

// create a menu to hold the buttons (remembering to NULL terminate the list)
// NEW - we include the new info item
CCMenu *menu = CCMenu::create(startGameItem, infoGameItem, NULL);
// position the entire menu
menu->setPosition(0,0);  
// add it as a child (so it appears
this->addChild(menu);  

记住要创建回调函数:

void MainMenu::menuInfoCallback(CCObject* sender)
{
    CCLOG("Information!");
}