web-dev-qa-db-ja.com

libgdxでは、戻るボタンから入力を取得するにはどうすればよいですか?

私のゲームでは、ゲームを最小化する代わりに、Android戻るボタンを使用して一時停止メニューに移動します。グーグルで調べたところ、

Gdx.input.setCatchBackKey(true);

しかし、実際にボタンが押されたことを確認するにはどうすればよいですか? input.isKeyDown(Keys.BACK)は何もしないようです。

42
Dmiters

私はこのような問題を解決しました:

public class MyApplication implements ApplicationListener, InputProcessor {
   // !! Remember to override all other required methods !!
   ...

   @Override
   public void create() {
        Gdx.input.setInputProcessor(this);
        Gdx.input.setCatchBackKey(true);
        // rest of your stuff...
   }

   ...

   @Override
   public boolean keyDown(int keycode) {
        if(keycode == Keys.BACK){
           // Do your optional back button handling (show pause menu?)
        }
        return false;
   }

   ...
}

コピーパスタのものではありませんが、うまくいけばこれがあなたを助けます:)

76
raaste

Gdx.input.isKeyPressedメソッドを使用できます。

if (Gdx.input.isKeyPressed(Keys.BACK)){
  // Do something
}
28
ilhami

最初にバックキーアクションを処理するInputProcessorを作成してから、マルチプレクサに追加して、他のコンポーネントが同様のイベントを受信できるようにします。

      InputProcessor backProcessor = new InputAdapter() {
            @Override
            public boolean keyDown(int keycode) {

                if ((keycode == Keys.ESCAPE) || (keycode == Keys.BACK) )

                // Maybe perform other operations before exiting
                Gdx.app.exit();
                return false;
            }
        };


        InputMultiplexer multiplexer = new InputMultiplexer(mStage,
                backProcessor);
        Gdx.input.setInputProcessor(multiplexer);


そして、バックキーのキャッチを有効にします。

Gdx.input.setCatchBackKey(true);


これですべてです。幸運を!

19
sheitan

Gdx.input.isKeyPressed(Keys.BACK)を使用できますが、アクティビティが閉じないようにするには、次のように処理できます。

Gdx.input.setCatchBackKey(true);
2