gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:09:22 25 4
gpt4 key购买 nike

目前,我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com