如何避免Cocos2d-x中的MenuItemImage和MenuItemSprite之间的冲突3.15.1

问题描述:

首先我会解释我想要做的事情,然后在看到代码之前,用户可以点击按钮,点击后弹出显示菜单,则菜单包含2 MenuItemSprite与BOT或朋友玩,为MenuItemImage它显示一个小背景约2 MenuItemSprite如何避免Cocos2d-x中的MenuItemImage和MenuItemSprite之间的冲突3.15.1

问题是,当我想点击一个MenuItemSprite里面的菜单,什么都没发生,但是当我使背景全部是好的,没有任何问题,但我不希望这解决方案,因为我内部有另一个背景(几乎透明)。如果用户点击到这个背景,他可以隐藏自动菜单,所以我说设置启用背景为假它会给背景(窗口)和背景(菜单)之间的另一个问题confused

代码:

//Background (Scene) 
    background=Sprite::create(BACKGROUND); 
     background->setPosition(SonarCocosHelper::UI::GetScreenCenter()); 
     background->setOpacity(0); 
     this->addChild(background,1); 

    //Background Menu 
     MenuItemImage * overlayWindowItem=MenuItemImage::create(GAME_OVER_WINDOW,GAME_OVER_WINDOW,GAME_OVER_WINDOW,NULL); 
     //overlayWindowItem->setEnabled(false); 

     //FRIEND ITEM 
     MenuItemSprite * friendItem=MenuItemSprite::create(Sprite::create(FRIEND_BUTTON), Sprite::create(FRIEND_BUTTON),CC_CALLBACK_1(MenuScene::goToPlay,this)); 
     friendItem->setTag(PLAY_WITH_FRIEND); 
     friendItem->setPosition(Vec2(-overlayWindowItem->getContentSize().width/4,friendItem->getPositionY())); 

     //BOT ITEM 
     MenuItemSprite * botItem=MenuItemSprite::create(Sprite::create(BOT_BUTTON), Sprite::create(BOT_BUTTON),CC_CALLBACK_1(MenuScene::goToPlay,this)); 
     botItem->setTag(PLAY_WITH_BOT); 
     botItem->setPosition(Vec2(overlayWindowItem->getContentSize().width/4,botItem->getPositionY())); 

//menu 
menu=Menu::create(overlayWindowItem,friendItem,botItem,NULL); 
    menu->setPosition(Vec2(SonarCocosHelper::UI::GetScreenCenter().x,SonarCocosHelper::UI::GetScreenCenter().y+screenSize.height)); 
    this->addChild(menu,1); 

如何避免争端中MenuItemImage & MenuItemSprite之间,我想点击MenuItemSprite,MenuItemImage只是一个背景。

谢谢

正如我可以在你的代码中看到的,你为什么要采取overlayWindowItem为MenuItemImage?您没有调用任何函数(在您的代码中设置为NULL)。 只需将GAME_OVER_WINDOW作为精灵。如果我说错了什么,请纠正我。

+0

我把overlayWindowItem作为菜单的背景,它会自动获取动画,但为了避免这个问题,我用一个Sprite替换了MenuItemImage,并且我用runAction为这个sprite重复了相同的菜单动画。 – iLyas