如何避免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作为精灵。如果我说错了什么,请纠正我。
我把overlayWindowItem作为菜单的背景,它会自动获取动画,但为了避免这个问题,我用一个Sprite替换了MenuItemImage,并且我用runAction为这个sprite重复了相同的菜单动画。 – iLyas