无法在cocos2dx中显示Menu MenuItemImage

Unable to display Menu MenuItemImage in cocos2dx

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

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
}

以下是在headerclass.

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

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

不在SceneLayer中添加MenuItem,只是传入Menucreate()方法。当您传入 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 位于右上角(可能不可见。)