在libgdx中,如何从后退按钮获取输入?

Dmi*_*ers 42 android libgdx

对于我的游戏,我希望Android后退按钮带你进入暂停菜单,而不是最小化游戏.从我用谷歌搜索,我知道我需要打电话

Gdx.input.setCatchBackKey(true);
Run Code Online (Sandbox Code Playgroud)

但是我如何实际检查按钮按下?input.isKeyDown(Keys.BACK)似乎没有做任何事情.

小智 76

我解决了这个问题:

public class MyApplication implements ApplicationListener, InputProcessor {
   // !! Remember to override all other required methods !!
   ...

   @Override
   public void create() {
        Gdx.input.setInputProcessor(this);
        Gdx.input.setCatchBackKey(true);
        // rest of your stuff...
   }

   ...

   @Override
   public boolean keyDown(int keycode) {
        if(keycode == Keys.BACK){
           // Do your optional back button handling (show pause menu?)
        }
        return false;
   }

   ...
}
Run Code Online (Sandbox Code Playgroud)

不是copypasta的东西,但希望这可以帮助你.:)

  • 2022 使用:Gdx.input.setCatchKey(Input.Keys.BACK, true) (3认同)
  • 如果你想在屏幕上处理它,http://gamedev.stackexchange.com/questions/114972/handling-back-button-in-android-without-implementing-inputprocessor/114985#114985 (2认同)

小智 28

您可以使用Gdx.input.isKeyPressed方法.

if (Gdx.input.isKeyPressed(Keys.BACK)){
  // Do something
}
Run Code Online (Sandbox Code Playgroud)

  • 当然,这是在render()方法中进行的. (2认同)
  • @MilanG您可以使用多路复用器设置多个输入处理器,请参见此示例http://stackoverflow.com/a/20048019/22194 (2认同)

she*_*tan 19

首先创建一个InputProcessor来处理后退键操作,然后将其添加到多路复用器,以便其他组件仍然接收类似的事件.

      InputProcessor backProcessor = new InputAdapter() {
            @Override
            public boolean keyDown(int keycode) {

                if ((keycode == Keys.ESCAPE) || (keycode == Keys.BACK) )

                // Maybe perform other operations before exiting
                Gdx.app.exit();
                return false;
            }
        };


        InputMultiplexer multiplexer = new InputMultiplexer(mStage,
                backProcessor);
        Gdx.input.setInputProcessor(multiplexer);
Run Code Online (Sandbox Code Playgroud)


并启用捕获后退键.

Gdx.input.setCatchBackKey(true);
Run Code Online (Sandbox Code Playgroud)


这就是全部.祝好运!