libgdx scene2dUI图层演员位置

时间:2015-07-25 10:56:37

标签: java libgdx scene2d

我的场景图层上的按钮配置位置有问题。我正在尝试构建菜单,并用按钮填充它,但它们似乎忽略了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);

那里什么也没发生。按钮忽略这些命令并水平地逐个定位。

有什么我可以忘记的吗?

2 个答案:

答案 0 :(得分: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();即可。这会将您添加到表格中的任何内容置于其后面的新行上。为了让事情看起来更好,你可以使用填充。

希望这有帮助

答案 1 :(得分:0)

来自libgdx Table singleplayerButton上的wiki

  

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

基本上,一旦您将layer添加到setPosition,其位置就会在表格中的位置设置。在这种情况下,Table将被忽略。如果您想手动设置按钮的位置,Table不是您的最佳选择。 BUILD SUCCESSFUL Total time: 47 seconds No emails were triggered. Starting to tag ERROR: Publisher hudson.plugins.svn_tag.SvnTagPublisher aborted due to exception java.lang.NoSuchMethodError: hudson.scm.SubversionSCM.getRevisionFile(Lhudson/model/AbstractBuild;)Ljava/io/File; at hudson.plugins.svn_tag.SvnTagPlugin.parseRevisionFile(SvnTagPlugin.java:242) at hudson.plugins.svn_tag.SvnTagPlugin.perform(SvnTagPlugin.java:97) at hudson.plugins.svn_tag.SvnTagPublisher.perform(SvnTagPublisher.java:79) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:734) at hudson.model.Build$BuildExecution.cleanUp(Build.java:192) at hudson.model.Run.execute(Run.java:1805) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:89) at hudson.model.Executor.run(Executor.java:240) Finished: SUCCESS 的重点是减轻用户需要定义孩子的位置和大小。