如何将菜单项位置引用到同一菜单中的另一个菜单项?
例如,我有菜单对象和2个菜单项。我想要第二个菜单项,指的是第一个的位置,如下所示:
menu_item_2->setPosition(Point(menu_item1.width/2, visibleSize.height/3));
但这实际上并不奏效。
这是我现在的代码:
Size visibleSize = Director::getInstance()->getVisibleSize();
auto menu_item_1 = MenuItemFont::create("Play", CC_CALLBACK_1(MenuScene::Play, this));
auto menu_item_2 = MenuItemFont::create("abc", CC_CALLBACK_1(MenuScene::Play, this));
mainMenu = Menu::create(menu_item_1,menu_item_2, NULL);
mainMenu -> setPosition(visibleSize.width/4, visibleSize.height/4);
menu_item_1->setPosition(Point(visibleSize.width/2, visibleSize.height/2));
menu_item_2->setPosition(Point(visibleSize.width/2, visibleSize.height/3));
this->addChild(mainMenu);
CCLOG("Play");
CCLOG("Play %f", screen.width/2);
CCLOG("Play %f", screen.height/2);
CCLOG("Play %f", visibleSize.width/2);
CCLOG("Play %f", visibleSize.height/2);
答案 0 :(得分:1)
您可以通过访问其边界框来引用其他项目菜单的宽度属性
menu_item_2->setPosition(Point(menu_item_1->getBoundingBox().size.width/2.0f, m_visibleSize.height/3));
本质上,MenuItemFont是一个Node类,然后你可以使用节点类中的所有getter:
Point pos = menu_item_1->getPosition();
float xpos = menu_item_1->getPositionX();
float ypos = menu_item_1->getPositionY();
但要小心:所有这些坐标都与主菜单对象有关。