目前,我正在尝试在 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,请设置其父级(菜单)的位置。
不在Scene
或Layer
中添加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/