0
あるとき、私は次のシグネチャでAbstractGameScreenというクラスを持っている:Libgdx、ステージは入力プロセッサ
public abstract class AbstractGameScreen extends InputAdapter implements Screen { ... }
はすべての私の画面は、この抽象クラスを拡張します。今私が遭遇している問題は、ステージを使用するスクリーンでは、ステージがすでに入力プロセッサーに設定されていることです。しかし、そうすると、keyUpメソッドは、バックキーが押されても実行されません。代わりに画面を入力プロセッサに設定すると、ステージが機能しません。どうすればこの問題を回避できますか?あなたがStage
とあなたのAbstractScreen
InputProcessors- 2を必要とする。この場合
public class MenuScreen extends AbstractGameScreen {
@Override
public void show() {
stage = new Stage(new StretchViewport(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT));
Gdx.input.setInputProcessor(stage);
Gdx.input.setCatchBackKey(true);
instructionsVisible= false;
rebuildStage();
}
@Override
public boolean keyUp (int keycode) {
// Back to Menu
if (keycode == Input.Keys.ESCAPE || (keycode == Input.Keys.BACK && instructionsVisible)) {
instructionsVisible=false;
layerInstruction.setVisible(false);
layerControls.setVisible(true);
}
else
{
Gdx.app.exit();
}
return false;
}
ほとんどの画面クラスで完全に機能します。 MenuScreen(上のコード)でのみ、keyUpメソッドが2回実行されるため、アプリが終了します。それはなぜですか?私はすでに、イベントの委任を止めるためにドキュメントを読んだ後で戻り値をtrueに変更しようとしました。しかし、これはうまくいかなかった。 – Doflaminhgo
いいえ、気にしないでください。私は誤ってあなたの答えを貼り付けるときにcatchBackKeyメソッドを削除しました。それは今完璧に動作します。ありがとうございました! – Doflaminhgo