[英]How to manage back button with multiple screens in Libgdx?
If there is some way how to manage back button in Libgdx? 如果有一些方法可以管理Libgdx中的后退按钮?
for example in Andengine I have implemented this like that: 例如在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;
...
...
}
}
}
I don't have idea how to do it here, because ApplicationListener has only create, show, render... I tryed this: 我不知道如何在这里做,因为ApplicationListener只有create,show,render ...我试过这个:
if (Gdx.input.isButtonPressed(Keys.BACK)){
new ScreenChangeTask(MyScreen.SPLASH);
}
but it still closes my application. 但它仍然关闭我的申请。
FYI: I have class Controller extends Game
and I use public void setScreen (Screen screen)
to switch between screens. 仅供参考:我有
class Controller extends Game
,我使用public void setScreen (Screen screen)
在屏幕之间切换。
In order to do this properly you need to tell LibGDX to catch the back key: 为了正确地执行此操作,您需要告诉LibGDX捕获后退键:
Gdx.input.setCatchBackKey(true);
You should do this somewhere early in the application. 您应该在应用程序的早期某处执行此操作。 And set it to false when you want the user to be able to use the back key.
如果希望用户能够使用后退键,请将其设置为false。
set 组
Gdx.input.setCatchBackKey(true);
then implement below code on keyUp... 然后在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;
}
}
}
Hope this will help you 希望这个能对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.