Java 如何在Libgdx中管理具有多个屏幕的后退按钮?
如果有办法管理Libgdx中的后退按钮 例如,在Andengine中,我实现了如下内容:Java 如何在Libgdx中管理具有多个屏幕的后退按钮?,java,libgdx,back,Java,Libgdx,Back,如果有办法管理Libgdx中的后退按钮 例如,在Andengine中,我实现了如下内容: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { switch (currentScen
@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只有创建、显示、渲染。。。
我试着这样做:
if (Gdx.input.isButtonPressed(Keys.BACK)){
new ScreenChangeTask(MyScreen.SPLASH);
}
但它仍然关闭了我的应用程序
仅供参考:我有
类控制器扩展游戏
,我使用公共无效设置屏幕(屏幕屏幕)
在屏幕之间切换。为了正确执行此操作,您需要告诉LibGDX抓住后退键:
Gdx.input.setCatchBackKey(true);
您应该在应用程序的早期某处执行此操作。当您希望用户能够使用back键时,将其设置为false。set
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()。谢谢,这很有帮助。但我还有一个问题:
if(Gdx.input.isKeyPressed(Keys.BACK)){System.out.println(“BACK键被按下”);new Timer().schedule(new ScreenChangeTask(MyScreen.SOME_SCREEN),1);
-我把这段代码放在render方法中。当我按下“后退”按钮时,它会切换回另一个尖叫,在那个屏幕上它会切换回另一个,因为这种代码的平静会被触发好几次,直到我移开手指。如何解决这个问题?您只需在if语句中使用一个布尔变量,然后在按下键时将布尔值设置为false,这样下次游戏循环就不会进入它。非常感谢。还可以使用静态方法计算上次单击和当前单击之间的时间差(返回布尔值),例如,如果超过0.5秒,则可以单击,否则不能。