Libgdx,当阶段是输入处理器时如何捕获键

时间:2016-12-29 18:14:53

标签: libgdx scene2d

我有一个名为AbstractGameScreen的类,其名称如下:

public abstract class AbstractGameScreen extends InputAdapter implements Screen { ... }

我的所有屏幕都扩展了这个抽象类。现在我遇到的问题是在使用阶段的屏幕中我已经将阶段设置为输入处理器。但是如果我这样做,keyUp方法就不会再按下后退键执行了。如果我将屏幕设置为输入处理器,则该阶段不起作用。我该如何解决这个问题?

public class MenuScreen extends AbstractGameScreen {

 @Override
    public void show() {
        stage = new Stage(new StretchViewport(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT));
        Gdx.input.setInputProcessor(stage);
        Gdx.input.setCatchBackKey(true);
        instructionsVisible= false;
        rebuildStage();
    }

@Override
    public boolean keyUp (int keycode) {
        // Back to Menu
        if (keycode == Input.Keys.ESCAPE || (keycode == Input.Keys.BACK && instructionsVisible)) {
            instructionsVisible=false;
            layerInstruction.setVisible(false);
            layerControls.setVisible(true);
        }
        else
        {
            Gdx.app.exit();
        }
        return false;
    }

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要两个输入处理器 - StageAbstractScreen。你这样做的方法是创建一个新的InputMultiplexer object并配置如下:

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor( stage );
multiplexer.addProcessor( this ); // Your screen
Gdx.input.setInputProcessor( multiplexer );