无法在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
的位置,设置其父级(菜单)的位置。
不在Scene
或Layer
中添加MenuItem
,只是传入Menu
的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 位于右上角(可能不可见。)
目前,我正在尝试在 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
的位置,设置其父级(菜单)的位置。
不在Scene
或Layer
中添加MenuItem
,只是传入Menu
的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 位于右上角(可能不可见。)