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

标签 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 没问题,但是如果有人可以帮助我解决我需要输入的内容才能显示按钮,那么目前,让我们使用硬编码值,例如,如果可能,将其放在屏幕的左上角?

我想它需要一个 Action 来告诉它按下时要做什么,我有代码可以放在里面,但我不确定我需要放什么来调用这个 Action ,通常它会是一个 void 或IBAction 但这是 Cocos 所以我不熟悉它。 将不胜感激任何帮助!谢谢 :) 克里斯

最佳答案

您是否已将菜单作为子级添加到您的缩放/当前层?

除非您将它添加为子节点,否则它不会被渲染。

我会创建一个菜单如下:

// 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!");
}

关于iphone - 在 Cocos2d-x 中添加一个简单的 Button 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451759/

相关文章:

ios - Key Value 观察包含点的 NSMutableDictionary 中的键?

iphone - 我为使用 makefile 构建的 iO 寻找库项目

ios - 如何在按下 Ctrl 键时在 XCode 中滚动 Storyboard

ipad - iPad 上显示的 UIDocumentMenuViewController 给出 "Unable to simultaneously satisfy constraints"

iphone - 键盘、方向和 UITextView

ios - iPhone 上的自定义大小 UIModalPresentationPopover

iphone - 如何在不执行 alloc 的情况下获取 NSNumber,以便它响应 initWithInt?

iphone - 使用 Xcode 的 All Exceptions 断点时忽略某些异常

ios - 单击按钮后跳转到该详细信息时,如何为 UITableViewCell 创建详细信息?

ios - "Collection View"的框架在运行时会有所不同 Swift3 iOS10 StoryBoard