2013-03-14 10 views
6

Libgdxで戻るボタンを管理する方法がある場合は、私はそのようにこれを実装したAndengineで例えばLibgdxで複数の画面で戻るボタンを管理する方法は?

@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); 
} 

しかし、それでも私のアプリケーションは終了します。

FYI:私はclass Controller extends Gameを持っていて、私はpublic void setScreen (Screen screen)を使って画面を切り替えます。あなたが早期適用でこのどこかを行う必要があります

Gdx.input.setCatchBackKey(true); 

:あなたが戻ってキーをキャッチするLibGDXを指示する必要があり、適切にこれを行うために

答えて

9

。ユーザーがバックキーを使用できるようにする場合はfalseに設定します。

+2

にfalseに設定する代わりに役立ちます

@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; } } } 

希望がちょうどGdx.appを呼び出すことで、その後

Gdx.input.setCatchBackKey(true); 

を設定しました実際にユーザーが終了できるようにする場合は、.exit()を使用します。 –

+0

ありがとう、それは役に立ちました。しかし、もう一つ質問があります: 'if(Gdx.input.isKeyPressed(Keys.BACK)){ \t System.out.println("戻るキーが押されました "); \t新しいTimer()。スケジュール(新しいScreenChangeTask(MyScreen.SOME_SCREEN)、1); \t \t} '私はこのコードをレンダリングメソッドに入れました。また、Backボタンを押すと別の叫びに戻り、その画面で別の画面に切り替わります。なぜなら、このコードの平和は指を離すまで数回トリガされるからです。この問題を解決するにはどうすればよいですか? – Aleksandrs

+0

あなたがする必要があるのは、ifステートメントでブール変数を使用し、そのキーが押された場合にブール値をfalseに設定することです。 – Jyro117

1

は、keyUpイベントにコードの下に実装...これはあなた

関連する問題