2017-05-07 58 views
0

目前,我试图在cocos2dx中显示菜单(MenuItemImage),但它不显示。雪碧正常显示。我搜索周围,但没有解决方案。我很乐意提供一些提示或例子!无法在cocos2dx中显示菜单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 
} 

以下是头文件类。

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

'WINSIZE'的价值是什么? – Aryan

+0

这是“#define WINSIZE Director :: getInstance() - > getWinSize()” – user3264924

回答

1

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

不添加MenuItemSceneLayer,只是通过在Menucreate()方法。当你通过创建方法时,它将作为子女添加到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; 
} 

如果你已经超过一个MenuItemMenu那么我们需要设置每个MenuItem的位置。

菜单项位置,所以要根据你的代码中,位于屏幕中心设置菜单,然后使菜单项变为在右上角你设定相同的弥补了他的孩子与他的父菜单(可能是不可见的。)

+0

我更新了代码。菜单不显示。也许是因为我添加到其他Sprites的ZOrder? – user3264924

+0

你的代码在'auto menu = Menu :: create(moreButton,NULL);'给我运行时异常',因为已经添加了moreButton。它不能再次添加。 – Aryan

+0

你正在使用哪个版本的cocos2d-x?我正在使用v3.15 – Aryan