【发布时间】:2011-11-05 15:03:15
【问题描述】:
对于我的游戏,我希望 Android 后退按钮将您带到暂停菜单,而不是最小化游戏。根据我的谷歌搜索,我知道我需要打电话
Gdx.input.setCatchBackKey(true);
但是我如何实际检查按钮是否按下? input.isKeyDown(Keys.BACK) 似乎什么也没做。
【问题讨论】:
对于我的游戏,我希望 Android 后退按钮将您带到暂停菜单,而不是最小化游戏。根据我的谷歌搜索,我知道我需要打电话
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的东西,但希望这可以帮助你。 :)
【讨论】:
你可以使用 Gdx.input.isKeyPressed 方法。
if (Gdx.input.isKeyPressed(Keys.BACK)){
// Do something
}
【讨论】:
isKeyJustPressed,而不是isKeyPressed。只是在我的 Android 上尝试一下,它有时会在后者注册两次,这可能是不可取的。
首先创建一个 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);
这就是全部。祝你好运!
【讨论】:
您可以使用 Gdx.input.isKeyPressed(Keys.BACK) 但如果您希望 Activity 不关闭,您可以这样处理:
Gdx.input.setCatchBackKey(true);
【讨论】: