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

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

问题描述:

对于我的游戏,我希望Android后退按钮带您进入暂停菜单,而不是最小化游戏。从我google搜索,我知道我需要拨打在libgdx中,如何从后退按钮获取输入?

Gdx.input.setCatchBackKey(true); 

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

我解决了这样的问题:

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; 
    } 

    ... 
} 

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

+0

会试试这个!非常感谢你! –

+1

我宁愿做这在我的屏幕类,它会给我更好的控制 – basilisk

+1

如果你要处理它的屏幕, http://gamedev.stackexchange.com/questions/114972/handling-back-button-in -Android - 没有 - 实施 - inputprocessor/114985#114985 – kingAm

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

if (Gdx.input.isKeyPressed(Keys.BACK)){ 
    // Do something 
} 
+2

这也同样在渲染()方法,当然。 –

+0

这是生活的救星。很奇怪,为什么InputProcessor在用于检测键盘的时候返回“按钮”的事件 - 对于桌面设备。在GestureListener类中获取此事件会更符合逻辑。 更不用说您只能设置一个InputProcessor。 – MilanG

+2

@MilanG您可以使用多路复用器设置多个inputprocessors,这里http://*.com/a/20048019/22194 – codeulike

您可以使用Gdx.input.isKeyPressed(Keys.BACK),但如果你想要的活动不关闭,你可以处理这个为:

Gdx.input.setCatchBackKey(true); 

首先创建一个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); 


而且能够捕捉返回键。

Gdx.input.setCatchBackKey(true); 


这是所有有。祝你好运!

+0

不当键盘被激活,虽然工作。 –