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

时间:2013-03-14 20:01:06

标签: java libgdx back

如果在某种程度上如何管理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)在屏幕之间切换。

2 个答案:

答案 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;
        }
    }
    }

希望这会对你有所帮助