【问题标题】:libgdx scene2dUI layer actors positionlibgdx scene2dUI 层演员位置
【发布时间】:2015-07-25 10:56:36
【问题描述】:

我在场景层上配置按钮位置时遇到问题。我正在尝试构建菜单,并用按钮填充它,但它们似乎忽略了 setPosition() 等命令。

代码如下:

Table layerMenuControls = buildMenuControlsLayer();
stage.clear();
Stack stack = new Stack();
stage.addActor(stack);
stack.setSize(GameEngine.VIEWPORT_GUI_WIDTH, GameEngine.VIEWPORT_GUI_HEIGHT);
stack.add(layerBackground);
stack.add(layerMenuControls);


private Table buildMenuControlsLayer() {
        Table layer = new Table();
        singleplayerButton = new Button(swsSkin, "singlePlayerButton");
        singleplayerButton.setPosition((GameEngine.VIEWPORT_GUI_WIDTH / 2) - 64, 64);
        layer.add(singleplayerButton);

那里什么也没有发生。按钮会忽略这些命令并水平定位自身。

有什么我可以忘记的吗?

【问题讨论】:

    标签: java libgdx scene2d


    【解决方案1】:

    LibGDX 中的表相对设置其子级的位置。所以使用 setPosition 是行不通的。相反,您可以使用 Align

    首先,您应该设置表格的尺寸和位置,以便它知道对齐的位置。我假设您希望表格占据全屏,如果不是,您可以相应地更改宽度和高度。以下将做到这一点

    layer.setSize(GameEngine.VIEWPORT_GUI_WIDTH, GameEngine.VIEWPORT_GUI_HEIGHT); layer.setPosition(0,0);

    然后您可以相对于该表定位按钮等。 为了将按钮设置在表格的中心,您可以使用

    layer.align(Align.center);

    要定位在顶部中心,您可以使用

    layer.align(Align.center|Align.top);

    要停止在一行中添加所有按钮,您需要在表格中添加多行。在layer.add(singlePlayerButton); 和您添加的任何其他按钮之间,您只需调用layer.row();。这会将您添加到表格中的任何内容放置在其正下方的新行中。为了让事情看起来更好一点,您可以使用填充。

    希望对你有帮助

    【讨论】:

    • 感谢您的帮助,这真的很有帮助。现在一切正常! :)
    【解决方案2】:

    来自libgdx上的wikiTable

    Table 是一个 WidgetGroup,使用逻辑表设置其子项的位置和大小...

    所以基本上,一旦你将singleplayerButton 添加到layer,它的位置就会由它在表格中的位置来设置。在这种情况下,setPosition 将被忽略。如果您想手动设置按钮的位置,Table 不是您的最佳选择。 Table 的全部意义在于让用户不再需要定义孩子的位置和大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多