多个阶段 - 按钮没有反应?

问题描述 投票:0回答:1

我的游戏有 2 个阶段,每个阶段都有一个带有按钮的桌子。第一个存储带有游戏内按钮的表格:向上/向下移动和暂停。第二个存储代表暂停菜单的表。如果单击“暂停”(游戏暂停),我想绘制现在可以处理输入的第二阶段。

我初始化了2个阶段:

public void create(){

...
mainStage = new Stage(viewport,batch);
menuStage = new Stage(viewport,batch);
Gdx.input.setInputProcessor(mainStage);
...

暂停按钮有一个监听器,将(枚举)状态设置为暂停 (与暂停菜单中的“恢复”按钮相同,将状态设置为“正在运行”)

pause.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
        thisState = STATE.PAUSE;
        Gdx.input.setInputProzessor(menuStage);

        }
    });

然后在渲染方法中

switch (gameState) {
            case RUNNING:

                deltaTime = Gdx.graphics.getDeltaTime();
                stateTime += deltaTime; // for the animations

                Gdx.gl.glClearColor(0, 0, 0, 1);
                Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

                batch.setProjectionMatrix(camera.combined);

                update(deltaTime);

                batch.begin(); 
                ... draws the characters
                batch.end();

                mainStage.act(deltaTime);
                mainStage.draw();
                break;

            case PAUSE:
                Gdx.gl.glClearColor(0, 0, 0, 0.6f); I want the background to become slightly darker.
                Gdx.app.log("Game State","Game is PAUSED");
                menuStage.act(deltaTime);
                menuStage.draw();

        }

如果我启动 mainStage 按钮,则会出现,但不可单击。如果我点击屏幕中间,游戏就会停止。然而,“暂停”按钮的侦听器显然甚至没有对此做出反应,因为控制台上没有通知游戏已暂停,也没有单击该按钮。

我的开始屏幕仅使用一个阶段,并且可以在相同的设置下完美运行。

我认为原因可能是:

  • 我错误地使用了setInputProcessor
  • 我错误地使用了视口(并调整了大小)
  • 在绘制新阶段之前我必须以某种方式让第一个阶段消失
java android button libgdx stage
1个回答
0
投票

根据您的代码,gdx 仅处理 mainStage 的输入,您可以在显示菜单时交换输入处理器或使用输入多路复用器,如下所示:

public void create(){

[...]
mainStage = new Stage(viewport,batch);
menuStage = new Stage(viewport,batch);
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(mainStage);
multiplexer.addProcessor(menuStage);
Gdx.input.setInputProcessor(multiplexer);
[...]

}
© www.soinside.com 2019 - 2024. All rights reserved.