舞台对象不会在每个屏幕上居中并缩放为相同

时间:2016-12-04 19:21:49

标签: java android android-studio libgdx

我有2个问题,看起来应该很容易。

首先,我正在开发一个LibGDX游戏,但我的一个Table对象不会居中

Table table = new Table();
    table.setFillParent(true);
    table.add(preview).size(preview.getWidth(), preview.getHeight()).center().padBottom(40);
    table.row();
    table.add(last).size(last.getWidth(), last.getHeight()).center().left().padLeft(250);
    table.add(next).size(next.getWidth(), next.getHeight()).center().right().padRight(250);

我尝试了上面的代码,但事实证明(我希望以Level Preview为中心)

enter image description here

问题2

在我的手机上,这些图像完全吻合。但是在这款手机上它们更小,如何在每部手机上将它缩放到相同的尺寸,是否适合FitViewPort?

1 个答案:

答案 0 :(得分:1)

要使预览图像居中,它的单元格需要跨越所有列。如果您希望图像完全适合,则无需尝试将单元格调整为图像大小。

如果你想让两个按钮位于中间位置,那么让它们的每个单元格尽可能宽,并将它们偏向中间单元格的一侧。

这样做:

table.setFillParent(true);
table.add(preview).colSpan(2).expandX().center().padBottom(40);
table.row();
table.add(last).expandX().right();
table.add(next).expandX().left();

ScreenViewport适用于UI阶段,因为它可以产生漂亮的文本。但缺点是您需要准备加载多个UI资产大小,具体取决于设备分辨率。

或者,您可以将ExtendViewport用于UI,这样您只需要一个资产规模。

其余的视口类是垃圾(IMO):

  • FitViewport会创建黑条(您的用户不会喜欢这样,因为手机屏幕太小了)。如果您将其用于UI图层,则可以,但在绘制UI之前,您需要使用其他视口来应用其他所有内容。也许如果您正在进行可以原谅黑条的过场动画,您可以暂时使用它。
  • StretchViewport会导致难看的变形拉伸。
  • FillViewport导致部分虚拟视口大小被裁剪掉,因此您必须进行各种数学计算,以确保您的场景在所有设备上完全可见。