我有一个带有标签和回调设置的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
也不会改变任何内容。我需要做些什么才能让我的菜单可点击?
答案 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 ");
}