如何在Libgdx中管理多个屏幕的后退按钮?
问题描述:
如果在Libgdx中如何管理后退按钮?如何在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只创造,展示,渲染...... 我tryed这:
if (Gdx.input.isButtonPressed(Keys.BACK)){
new ScreenChangeTask(MyScreen.SPLASH);
}
但它仍然关闭我的应用程序。
供参考:我有class Controller extends Game
和我使用public void setScreen (Screen screen)
在屏幕之间切换。
答
为了做到这一点,你还是应该告诉LibGDX赶返回键:
Gdx.input.setCatchBackKey(true);
你应该在应用初期做到这一点的地方。当你希望用户能够使用后退键时,将其设置为false。
答
设置
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;
}
}
}
希望这将帮助你
的替代方法将它设置为false是刚刚打电话Gdx.app .exit()当你真的想让用户退出。 – 2013-03-14 21:36:54
谢谢,这很有帮助。但我还有一个问题:'if(Gdx.input.isKeyPressed(Keys.BACK)){System.out.println(“Back key was pressed”); (),新的ScreenChangeTask(MyScreen.SOME_SCREEN),1); \t \t}' - 我把这段代码放在渲染方法中。当我按下Back按钮时,它会切换回另一个屏幕,然后在该屏幕中切换回另一个屏幕,因为代码的和平性会触发多次,直到我移开手指。我该如何解决这个问题? – Aleksandrs 2013-03-15 09:49:46
您只需在if语句中使用布尔变量,然后将布尔值设置为false,如果按下该键,则下一个游戏循环不会输入它。 – Jyro117 2013-03-15 17:28:27