libgdx scene2dUI层演员位置
libgdx scene2dUI layer actors position
我在场景图层上配置按钮位置时遇到问题。我正在尝试构建菜单,并用按钮填充它,但它们似乎忽略了 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);
那里什么也没有发生。按钮忽略这些命令并水平放置自己。
有什么我可以忘记的吗?
从 wiki 到 libgdx
的 Table
:
Table is a WidgetGroup that sets the position and size of its children using a logical table...
所以基本上,一旦您将 singleplayerButton
添加到 layer
,它的位置由它在 Table 中的位置设置。 setPosition
在这种情况下将被忽略。如果您想手动设置按钮的位置,Table
不是您的最佳选择。 Table
的全部意义在于让用户无需定义子项的位置和大小。
LibGDX 中的表相对设置其 children 的位置。所以使用 setPosition 是行不通的。相反,您可以使用 Align
首先,您应该设置 table 的尺寸和位置,以便它知道在哪里对齐。我假设您希望 table 占据全屏,否则您可以相应地更改宽度和高度。以下将做到这一点
layer.setSize(GameEngine.VIEWPORT_GUI_WIDTH, GameEngine.VIEWPORT_GUI_HEIGHT);
layer.setPosition(0,0);
然后您可以相对于此 table 定位按钮等。
为了将按钮设置在 table 的中央,您可以使用
layer.align(Align.center);
要定位在顶部中心,您可以使用
layer.align(Align.center|Align.top);
要停止在一行中添加所有按钮,您需要向 table 添加多行。在 layer.add(singlePlayerButton);
和您要添加的任何其他按钮之间,您只需调用 layer.row();
。这会将您添加到 table 的任何内容放置在其正下方的新行上。为了让事情看起来更好一点,你可以使用填充。
希望对您有所帮助
我在场景图层上配置按钮位置时遇到问题。我正在尝试构建菜单,并用按钮填充它,但它们似乎忽略了 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);
那里什么也没有发生。按钮忽略这些命令并水平放置自己。
有什么我可以忘记的吗?
从 wiki 到 libgdx
的 Table
:
Table is a WidgetGroup that sets the position and size of its children using a logical table...
所以基本上,一旦您将 singleplayerButton
添加到 layer
,它的位置由它在 Table 中的位置设置。 setPosition
在这种情况下将被忽略。如果您想手动设置按钮的位置,Table
不是您的最佳选择。 Table
的全部意义在于让用户无需定义子项的位置和大小。
LibGDX 中的表相对设置其 children 的位置。所以使用 setPosition 是行不通的。相反,您可以使用 Align
首先,您应该设置 table 的尺寸和位置,以便它知道在哪里对齐。我假设您希望 table 占据全屏,否则您可以相应地更改宽度和高度。以下将做到这一点
layer.setSize(GameEngine.VIEWPORT_GUI_WIDTH, GameEngine.VIEWPORT_GUI_HEIGHT);
layer.setPosition(0,0);
然后您可以相对于此 table 定位按钮等。 为了将按钮设置在 table 的中央,您可以使用
layer.align(Align.center);
要定位在顶部中心,您可以使用
layer.align(Align.center|Align.top);
要停止在一行中添加所有按钮,您需要向 table 添加多行。在 layer.add(singlePlayerButton);
和您要添加的任何其他按钮之间,您只需调用 layer.row();
。这会将您添加到 table 的任何内容放置在其正下方的新行上。为了让事情看起来更好一点,你可以使用填充。
希望对您有所帮助