Libgdx,当stage为input Processor时如何抓回键

Libgdx, how to catch back key, when stage is the input Processor

我有一个名为 AbstractGameScreen 的 class,签名如下:

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

我所有的屏幕都扩展了这个摘要class。现在我遇到的问题是,在使用阶段的屏幕中,我已经将阶段设置为输入处理器。但是,如果我这样做,则 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;
    }

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

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