Cocos2d-x中的CCLayoutBox?

时间:2015-04-20 06:15:05

标签: cocos2d-x cocos2d-x-3.0

在Cocos2d-x中有类似于CCLayoutBox的东西吗?我正在寻找Cocos Studio,但一无所获。我想要一个节点,可以将其子节点放在宽度和/或高度未知的区域上 - 这样各个组件就会分散。

1 个答案:

答案 0 :(得分:0)

我不熟悉CCLayoutBox,但我认为你想要的是Layout。维基上有一些examples解释了如何使用它。这是其中之一:

// Create the layout
    Layout* layout = Layout::create();
    layout->setLayoutType(LayoutType::VERTICAL);
    layout->setContentSize(Size(280, 150));
    Size backgroundSize = background->getContentSize();
    layout->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
                              (backgroundSize.width - layout->getContentSize().width) / 2.0f,
                              (widgetSize.height - backgroundSize.height) / 2.0f +
                              (backgroundSize.height - layout->getContentSize().height) / 2.0f));
    _uiLayer->addChild(layout);


    Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png");
    layout->addChild(button);

    LinearLayoutParameter* lp1 = LinearLayoutParameter::create();
    button->setLayoutParameter(lp1);
    lp1->setGravity(LinearLayoutParameter::LinearGravity::CENTER_HORIZONTAL);
    lp1->setMargin(Margin(0.0f, 5.0f, 0.0f, 10.0f));


    Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png");
    titleButton->setTitleText("Title Button");
    layout->addChild(titleButton);

    LinearLayoutParameter* lp2 = LinearLayoutParameter::create();
    titleButton->setLayoutParameter(lp2);
    lp2->setGravity(LinearLayoutParameter::LinearGravity::CENTER_HORIZONTAL);
    lp2->setMargin(Margin(0.0f, 10.0f, 0.0f, 10.0f));


    Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png");
    button_scale9->setScale9Enabled(true);
    button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height));
    layout->addChild(button_scale9);

    LinearLayoutParameter* lp3 = LinearLayoutParameter::create();
    button_scale9->setLayoutParameter(lp3);
    lp3->setGravity(LinearLayoutParameter::LinearGravity::CENTER_HORIZONTAL);
    lp3->setMargin(Margin(0.0f, 10.0f, 0.0f, 10.0f));

"为布局设置三个参数 - LinearLayoutParameter,Gravity和Margin,然后为三个UIPanel的内部小部件设置布局参数。

这里我们使用线性垂直方案,但每个重力设置为LinearLayoutParameter::LinearGravity::CENTER_HORIZONTAL,水平显示为中心。边距显示边缘周围的间距,注意lp2的值为UIMargin(20, 20, 0, 5),这意味着左,上,右和按钮的间距。当左边距为20时,您可以看到textButton的位置向右偏移很少。除方向外,布局垂直方案的其他设置与水平方案相同。两种方案称为线性布局,它们使用相同的参数。"