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

Posted

技术标签:

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

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

Gdx.input.setCatchBackKey(true);

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

【问题讨论】:

【参考方案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 您可以使用多路复用器设置多个输入处理器,请参阅此处的示例***.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);

【讨论】:

以上是关于在 libgdx 中,如何从后退按钮获取输入?的主要内容,如果未能解决你的问题,请参考以下文章

使用后退按钮退出应用程序后,我只能从共享偏好中获取值

如何在后退按钮中获取自定义图标?

如何在没有导航控制器的情况下获取导航栏后退按钮

在Objective C中点击后退按钮时如何将界面方向从横向更改为纵向

如何以编程方式获取操作栏后退按钮宽度?

如何从iOS中保留后退图标的LeftNavigation Bar按钮中删除后退文本[重复]