java - 如何使用 Scene2d 和 LibGDX 将 Actor 集中在一个组中?

标签 java layout libgdx scene2d

我正在使用 LibGDX 和 Scene2d,我想创建一个如下图所示的弹出窗口。

到目前为止,我创建了一个表格并将背景设置为半透明颜色。然后我创建了一个白色背景的图像。此图像扩展了 x,因此它居中。现在我想要一个位于图像中心的标签。为了覆盖这两个 Actor ,我创建了一个组,但我找不到如何在组中居中的东西。我该怎么做?

scene2d example

这是我的代码:

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

最佳答案

该组有自己的坐标系。这意味着当您将 actor 位置设置为 (0,0),然后将其添加到实际上位于 (100, 100) 位置的组时,对象将位于 (100, 100) 位置相对于舞台

您只需设置:

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

设置Group 大小后。请记住,设置 Actor 的位置我们是在定义其左下角位置,这就是为什么您还需要减去标签宽度/高度的一半

当然你可以修改y位置它也不必垂直居中

关于java - 如何使用 Scene2d 和 LibGDX 将 Actor 集中在一个组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567322/

相关文章:

java - 如何从 ResultSet 对象获取 COUNT?

java - 如何在 listIterator() 实现中使用父类(super class) iterator() ?

html - 使用 HTML 和 CSS 布局一个小表格

c++ - 为什么我的 QBoxLayouts 不工作?

asp.net - 如何在支持多分辨率的asp.net设计 View 中设计网页?

java - 复杂形状的碰撞检测

java - 如何在JAVA中接受REF游标而不导入Oracle包

git - sbt + Intellij IDEA : dependencies from git?

java - Libgdx : Sprite want stop moving;

java - libgdx 在操作进行时禁用触摸