【问题标题】:scene2d ui - how to make a grid / table?scene2d ui - 如何制作网格/表格?
【发布时间】:2014-02-04 17:20:19
【问题描述】:

我正在尝试为我的游戏制作库存,为此我需要制作一个网格。
我正在尝试用桌子完成这项工作-

table = new Table();
table.setFillParent(true);
stage.addActor(table);

我应该从这里去哪里? 我希望我的网格/库存看起来与此类似 -

【问题讨论】:

    标签: java libgdx scene2d


    【解决方案1】:

    在我看来,最好的方法是创建一个 Actor 数组(你可以决定你想要什么类型的 Actor,比如你想要一个 Image 按钮等),然后循环遍历数组并将 Actor 添加到表中。

    你可以在运行时计算actor的宽度和高度,例如你想填满整个屏幕并且你知道水平和垂直需要多少个按钮,那么:

    int actorWidth = Gdx.graphics.getWidth() / rowActors;
    int actorHeight = Gdx.graphics.getHeight() /  columnActors;
    Actor[] actors = new Actor[rowActors * columnActors];
    

    现在用你想要的任何类型的 Actor(图像、按钮等)填充数组并遍历数组并将其添加到表中,如下所示:

    for (int i = 0; i < rowActors; i++){
      for (int j = 0; j < columnActors; j++){
        Actor actor = actors[(i * columnActors) + j];
        table.add(actor).width(actorWidth).height(actorHeight);
       }
       table.row();
    }
    

    这应该创建一个占据整个屏幕的演员网格。

    【讨论】:

      【解决方案2】:

      这是一个很好的起点,https://github.com/EsotericSoftware/tablelayout。此外,如果您主要使用屏幕属性/像素,您可能希望将场景坐标设置为像素(或者如果您想自动缩放,则设置为像素的固定比率),在您的 resize 方法(缩放 1: 1):

      @Override public void resize(int width, int height) {
          ...
          stage.setViewport(width, height,
                            false, 0, 0, width, height);
      }
      

      【讨论】:

      • 那个方法从何而来? stage.setViewport() 在我的 0.9.8 版本中只有 3 个参数...
      • 我正在逃避夜间工作,1.0-SNAPSHOT。不确定旧版本,但如果您使用可变尺寸的屏幕和宽高比,关键是设置世界宽度和高度以匹配屏幕尺寸。您应该也可以在旧版本中执行此操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2018-11-10
      • 2020-11-30
      • 2021-10-08
      相关资源
      最近更新 更多