【问题标题】:In libgdx, how do I get input from the back button?在 libgdx 中,如何从后退按钮获取输入?
【发布时间】:2011-11-05 15:03:15
【问题描述】:

对于我的游戏,我希望 Android 后退按钮将您带到暂停菜单,而不是最小化游戏。根据我的谷歌搜索,我知道我需要打电话

Gdx.input.setCatchBackKey(true);

但是我如何实际检查按钮是否按下? input.isKeyDown(Keys.BACK) 似乎什么也没做。

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    我解决了这样的问题:

    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的东西,但希望这可以帮助你。 :)

    【讨论】:

    • 试试这个!非常感谢!
    • 我宁愿在我的 Screen 类中这样做,这样可以更好地控制
    • 如果您想在屏幕中处理它,gamedev.stackexchange.com/questions/114972/…
    • 2022 使用:Gdx.input.setCatchKey(Input.Keys.BACK, true)
    【解决方案2】:

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

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

    【讨论】:

    • 这是救命稻草。奇怪的是,当该类用于检测键盘时 InputProcessor 获取后退“按钮”的事件 - 对于桌面设备。在 GestureListener 类中获取此事件会更合乎逻辑。更何况你只能设置一个InputProcessor。
    • @MilanG 您可以使用多路复用器设置多个输入处理器,请参阅此处的示例stackoverflow.com/a/20048019/22194
    • 如果您想在屏幕中处理它,gamedev.stackexchange.com/questions/114972/…
    • 确保使用isKeyJustPressed,而不是isKeyPressed。只是在我的 Android 上尝试一下,它有时会在后者注册两次,这可能是不可取的。
    【解决方案3】:

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


    这就是全部。祝你好运!

    【讨论】:

      【解决方案4】:

      您可以使用 Gdx.input.isKeyPressed(Keys.BACK) 但如果您希望 Activity 不关闭,您可以这样处理:

      Gdx.input.setCatchBackKey(true);
      

      【讨论】:

        猜你喜欢
        • 2020-02-17
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多