有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java场景2D在表的顶部添加参与者

我有一个可滚动的表格,包含我的菜单、按钮、标题等的所有主要功能。现在我想要一个不滚动的“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);

给出的结果如下所示:

image

所有这些都可以工作,主工作台滚动,HUD保持静止,而我滚动,输入工作,但定位是关闭的,我不知道如何解决这个问题,使HUD在顶部。有什么想法吗?我走错方向了吗


共 (1) 个答案

  1. # 1 楼答案

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

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

    stage类已经实现了InputProcessor参见Javadocshttp://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

    编辑 下面的图片也展示了同样的情况 Battle Screen Image