【问题标题】:Scene2d adding actors on top of tableScene2d 在桌子上添加演员
【发布时间】:2015-07-03 09:52:42
【问题描述】:

我有一个可滚动的表格,其中包含我的菜单、按钮、标题等的所有主要功能。现在我想要一个不会滚动的“hud”,就像在 facebook messenger 中一样。带有“朋友”和“设置”等选项卡。问题是当我尝试在表格定位关闭后向舞台添加其他内容时,我尝试添加另一个舞台,但输入不起作用,我我尝试添加另一个表,但定位已关闭(但输入有效)

当前代码:

        //table.top();
        table.add(heading).colspan(2);
        table.getCell(heading).spaceBottom(100);
        table.row();
        table.add(buttonPlay).colspan(2);
        table.getCell(buttonPlay).spaceBottom(100);
        table.row();
        table.add(buttonExit).colspan(2);
        table.getCell(buttonExit).spaceBottom(1000); //large spacing to test so scrolling works fine
        table.row();
        table.add(buttonFriends);
        table.add(buttonSettings);
        hudTable.add(buttonHud);
        hudTable.debug();
        stage.addActor(container);
        stage.addActor(hudTable);

给出如下所示的结果:

这一切正常,主表滚动,HUD 在我滚动和输入工作时保持静止,但定位已关闭,我不知道如何解决此问题,因此 HUD 位于顶部。有任何想法吗?我是不是走错路了?

【问题讨论】:

  • 当您添加两个阶段来处理来自这两个阶段的输入时,您是否尝试过使用 inputMultiplexer。阅读这里badlogicgames.com/forum/viewtopic.php?f=11&t=11916
  • 我没有,谢谢! @Sneh 也许我很笨,但我在那个链接中没有找到关于 inputMultiplexer 的任何信息。
  • 如果它解决了您的问题,请告诉我。
  • @Sneh 该链接未提及 inputMultiplexer,我不确定您的意思。确实该线程讨论了相同的问题,但没有提供真正的解决方案?还是我错过了什么。

标签: java user-interface libgdx scene2d


【解决方案1】:

正如我在 cmets 中提到的,您可以使用 InputMultiplexer 类来处理多个阶段。

InputMultiplexer 内部有一个名为addProcessor() 的方法,它接受任何实现InputProcessor 的对象并允许处理您的输入。

舞台类已经实现了InputProcessor,请参阅Javadocs http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Stage.html

所以让我们说你有两个阶段

Stage stage1 = new Stage();
Stage stage2 = new Stage();

现在你要做的就是

InputMultiplexer multiPlexer = new InputMultiplexer();
multiPlexer.addProcessor(stage1);
multiPlexer.addProcessor(stage2);

编辑

仅供参考,这是我使用 1 阶段的方法

public class BattleScreen extends Table {
    private BattleActionScreen battleActionScreen;
    private BattlePokemonScreen battlePokemonScreen;
}

这个表的私有成员也是表。 在我的游戏中,我在舞台内添加了BattleScreen

编辑 这是演示相同的图像

【讨论】:

  • 谢谢你,我回家后会试试这个,让你知道! :)
  • 不用担心,我之前也遇到过类似的问题,虽然我没有使用多个阶段,但我制作了多个表格并将它们添加到阶段并定位它们。
  • 你是怎么做到的?我试过hudTable.setPosition(0, 0); 但这给出了与图像相同的结果。不知道为什么。
  • 不幸的是,multiPlexer 不起作用,hud 的输入似乎无法使用这种方法。你能解释一下你是如何用两张桌子解决的吗?
  • 我所做的是我有一个舞台,我只是在其中添加一个表格。但是那个 1 表是由多个表组成的。所以对于HUD,我有不同的表格,对于按钮框,我有一个不同的表格,其中包含所有按钮。我确实在我的 GUI 类中扩展了 Table 类,这样使用它们就容易多了。
猜你喜欢
  • 1970-01-01
  • 2017-04-11
  • 2013-04-23
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多