c++ - 无法在cocos2dx中显示Menu MenuItemImage

标签 c++ cocos2d-x cocos2d-x-3.0

目前,我正在尝试在 cocos2dx 中显示 Menu(MenuItemImage),但它没有显示。 Sprite 显示正常。我用谷歌搜索但没有解决方案。我很想从你那里得到一些提示或例子!

bool GameLayer::init(int level)
{
    if (!Layer::init())
        return false;

    auto moreButton = MenuItemImage::create("more.png","more.png",[](Ref*sender){});
    moreButton->setPosition(Vec2(WINSIZE.width /2.0,WINSIZE.height / 2.0));

    this->addChild(moreButton, ZOrder::Enemy);

    auto menu = Menu::create(moreButton, NULL);
    this->addChild(menu);
    menu->setPosition(WINSIZE.width / 2.0, WINSIZE.height / 2.0);

    initBackground(); 
    return true;
}


void GameLayer::initBackground()
{
    auto bgForCharacter = Sprite::create("Background1.png");
    bgForCharacter->setAnchorPoint(Point(0, 1));
    bgForCharacter->setPosition(Point(0, WINSIZE.height));
    addChild(bgForCharacter, ZOrder::BgForCharacter);

    auto bgForPuzzle = Sprite::create("Background2.png");
    bgForPuzzle->setAnchorPoint(Point::ZERO);
    bgForPuzzle->setPosition(Point::ZERO);
    addChild(bgForPuzzle, ZOrder::BgForP);
    //TODO
}

下面是在头类中。

 enum ZOrder
    {
        BgForCharacter = 0,
        BgForPuzzle,
        Enemy,
        EnemyHp,
        Char,
        CharHp,
        Ball,
        Level,
        Result,
    };

最佳答案

您可以将 Menu 假定为不同类型的 MenuItem 的容器或父级。无需设置 MenuItem 的位置,如果您有单个 MenuItem,请设置其父级(菜单)的位置。

不在SceneLayer中添加MenuItem,传入create()方法即可菜单。当您传入 create 方法时,它将作为子项添加到该 Menu

bool GameLayer::init(int level)
{
    if (!Layer::init())
        return false;

    auto moreButton = MenuItemImage::create("more.png","more.png",[](Ref*sender){});

    auto menu = Menu::create(moreButton, NULL);        
    menu->setPosition(WINSIZE.width / 2.0, WINSIZE.height / 2.0);
    this->addChild(menu);

    initBackground(); 
    return true;
}

如果您在Menu 中有多个MenuItem,那么我们需要设置每个MenuItem 的位置。

MenuItem 位置对应于他的父 Menu,因此根据您的代码,您将 Menu 设置在屏幕中心,然后为其子项设置相同的偏移量,因此 MenuItem 位于右上角(可能不可见。)

关于c++ - 无法在cocos2dx中显示Menu MenuItemImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831954/

相关文章:

c++ - std::list of boost::shared_ptr 的迭代器问题

来自指针回溯的 C++ 段错误

c++ - 在 Cocos2dx 中加载动画中使用的相同 SpriteFrame 时速度变慢

c++ - 如何使用 C++ (curl) 发送电子邮件

android - 如何在 Cocos2d 中安装 Cygwin make 包或定义 GNUMAKE 变量指向

c++ - 所有 CC_CALLBACK_# 宏之间有什么区别?

c++ - CCArray 与 std::vector

macos - 如何更改 Cocos2d-x 3.1 for Mac 目标中的起始屏幕尺寸?

cocos2d-x - 更改播放器动画时出错

c++ - Z_DATA_ERROR 膨胀中途