为什么我的MenuItem不可点击?

时间:2015-01-04 05:43:53

标签: c++ cocos2d-x cocos2d-x-3.0

我有一个带有标签和回调设置的MenuItem,它仍然无法正常工作,我需要做什么?

Menu* menu = Menu::create();

Label* lbl = Label::createWithTTF("My Label",  "fonts/Marker Felt.ttf", 25);
MenuItemLabel* item_label = MenuItemLabel::create(lbl);
item_label->setCallback(callback);

MenuItem* menu_item = MenuItem::create();
menu_item->addChild(item_label);

menu->addChild(menu_item);

myLayer->addChild(menu);

即使将回调添加到menu_item也不会改变任何内容。我需要做些什么才能让我的菜单可点击?

2 个答案:

答案 0 :(得分:0)

问题是MenuItemLabel不是MenuItem的标签,而是callback的子类。所以我想会发生的事情是,尽管在屏幕上看到你的标签是MenuItem点击并查找它自己的MenuItem,因为它没有找到NULL或者它不会试图查看它的任何子节点,谁可能拥有它,或者它的大小是0,所以你永远不能点击它。

无论如何,我不清楚详细信息,只是为了解决问题,您需要删除MenuItemLabel的实例并仅使用Menu* menu = Menu::create(); Label* lbl = Label::createWithTTF("My Label", "fonts/Marker Felt.ttf", 25); MenuItemLabel* item_label = MenuItemLabel::create(lbl); item_label->setCallback(callback); menu->addChild(item_label); myLayer->addChild(menu);

{{1}}

答案 1 :(得分:0)

You can do like this: i checked, its working in cocos2d-x 3.2 .

auto Label = Label::createWithSystemFont("My Label", "fonts/Marker Felt.ttf", 25);
auto BtnItem = MenuItemLabel::create(Label,  CC_CALLBACK_1(HelloWorld::myCallback, this));

Menu* mymenu = Menu::create(BtnItem, NULL);

mymenu->setPosition(Vec2(WinSize.width/2,WinSize.height/2));

this->addChild(mymenu,1);


void HelloWorld::myCallback(Ref* pSender)
{
 CCLOG("Your Callback ");
}