在 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 中,如何从后退按钮获取输入?的主要内容,如果未能解决你的问题,请参考以下文章