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

时间:2014-05-14 04:40:16

标签: c++ cocos2d-x

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

例如,我有菜单对象和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);

1 个答案:

答案 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();

但要小心:所有这些坐标都与主菜单对象有关。