如果在某种程度上如何管理Libgdx中的后退按钮?
例如在Andengine中我实现了这样:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
switch (currentScene) {
case SPLASH:
break;
case MENU:
Process.killProcess(Process.myPid());
break;
case WORLDMENU:
start(MENU);
break;
...
...
}
}
}
我不知道如何在这里做,因为ApplicationListener只有create,show,render ... 我试过这个:
if (Gdx.input.isButtonPressed(Keys.BACK)){
new ScreenChangeTask(MyScreen.SPLASH);
}
但它仍然会关闭我的申请。
仅供参考:我有class Controller extends Game
并且我使用public void setScreen (Screen screen)
在屏幕之间切换。
答案 0 :(得分:9)
为了正确执行此操作,您需要告诉LibGDX捕获后退键:
Gdx.input.setCatchBackKey(true);
您应该在应用程序的早期某处执行此操作。如果希望用户能够使用后退键,请将其设置为false。
答案 1 :(得分:1)
设置
Gdx.input.setCatchBackKey(true);
然后在keyUp上实现以下代码...
@Override
public boolean keyUp(int keycode) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
switch (currentScene) {
case SPLASH:
break;
case MENU:
Process.killProcess(Process.myPid());
break;
case WORLDMENU:
game.setScreen(new MenuScreen(game)); //MenuScreen is your class Screen
break;
return false;
}
}
}
希望这会对你有所帮助