将菜单项位置引用到同一菜单中的另一个菜单项

reference a menu item position to another menu item in the same menu

本文关键字:菜单项 菜单 另一个 位置 引用      更新时间:2023-10-16

如何将菜单项位置引用到同一菜单中的另一个菜单项?

例如,我有一个菜单对象和两个菜单项。我想要第二个菜单项,指的是第一个的位置,像这样:

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);

您可以通过访问其他项目菜单的边界框来引用其宽度属性

menu_item_2->setPosition(Point(menu_item_1->getBoundingBox().size.width/2.0f, m_visibleSize.height/3));

MenuItemFont本质上是一个Node类,然后你可以使用Node类中存在的所有getter:

Point pos = menu_item_1->getPosition();
float xpos = menu_item_1->getPositionX();
float ypos = menu_item_1->getPositionY();

但是要注意:所有这些坐标都是相对于主菜单对象的