简体   繁体   English

如何在Libgdx中管理多个屏幕的后退按钮?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM