如何使用Scene2d和LibGDX将演员居中于一个组内?

5
我正在使用LibGDX和Scene2d,并且我想创建一个弹出窗口,它的外观如下面的图片所示。
到目前为止,我已经创建了一个表格并将背景设置为半透明颜色。然后我创建了一个白色背景的图像。该图像可以在x轴方向上扩展,因此它是居中的。现在我想在图像内部居中放置一个标签。为了叠加这两个演员,我创建了一个组,但我无法找到如何在组中居中放置内容的方法。我该怎么做?
以下是我的代码:
Table table = new Table();
table.top();
table.setFillParent(true);
table.setBackground(getColoredBackground(color));

labelStyle = new Label.LabelStyle(font, fontColor);
label = new Label(message, labelStyle);

Image image = new Image(whiteBackground);
image.setSize(table.getWidth() - padding, label.getHeight() + extraHeight);

Group group = new Group();
group.setSize(image.getWidth(), image.getHeight());

group.addActor(image);
group.addActor(label);
table.add(group).expandX().padTop(padTop);
1个回答

9

该组有自己的坐标系。这意味着,例如将演员位置设置为(0,0),然后将其添加到实际位于(100,100)位置的组中,则对象将相对于舞台处于(100,100)位置

你需要做的就是设置:

    label.setPosition( group.getWidth() / 2f - label.getWidth() / 2f, group.getHeight() / 2f - label.getHeight() / 2f );

设置分组大小后,请记住,我们在定义角色位置时是定义其左下角位置,因此您还需要减去标签宽度/高度的一半

当然,您可以修改y位置,它不必垂直居中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接