Libgdx: SelectBoxをクリックして展開しても、TextFieldはフォーカスを失いません。

作成日 2014年07月28日  ·  3コメント  ·  ソース: libgdx/libgdx

OS: Windows 8.1、x64
gdxVersion: 1.2.0
ターゲティング:デスクトップのみ(他のプラットフォームではテストされていません)

SelectBoxをクリックしてドロップダウンリストを表示すると、 隣接するテーブルセルのTextFieldはフォーカスを失うはずですが、そうではありません。 これらのコンポーネントは、テーブルとステージを共有します。 相互ステージは入力を処理します。

これは実際には何も壊しませんが、それは望ましくない動作であり、ゲームをプロフェッショナルではないように見せることができます。

再現する関連コード:

    import com.badlogic.gdx.scenes.scene2d.ui.*;

    final Label titleLabel = new Label(
            "Title: ", skin, "heading");

    final Label typeLabel = new Label(
            "Type: ", skin, "heading");

    final TextField textField = new TextField("", skin);

    final SelectBox<String> contextSelector = new SelectBox<String>(skin);
    contextSelector.setItems("Weapon", "Tool", "Crop", "Machine", "World Rule");

    table.row();
        table.add(titleLabel).right();
        table.add(textField).fill().prefWidth(Gdx.graphics.getWidth() / 5.0f).space(1.0f);
    table.row();
        table.add(typeLabel).right();
        table.add(contextSelector).fill().prefWidth(Gdx.graphics.getWidth() / 5.0f).space(1.0f);
    table.row().height(15.0f); table.add().fill();
    table.row();
        table.add(placeHolderLabel1);
        table.add(startButton).right();

最も参考になるコメント

別のアクターをクリックしたときにTextFieldのフォーカスを常に失ってほしいかどうかはわかりません。 動作は自分で簡単にカスタマイズできます。

stage.getRoot().addCaptureListener(new InputListener() {
    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
        if (!(event.getTarget() instanceof TextField)) stage.setKeyboardFocus(null);
        return false;
    }
}

全てのコメント3件

別のアクターをクリックしたときにTextFieldのフォーカスを常に失ってほしいかどうかはわかりません。 動作は自分で簡単にカスタマイズできます。

stage.getRoot().addCaptureListener(new InputListener() {
    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
        if (!(event.getTarget() instanceof TextField)) stage.setKeyboardFocus(null);
        return false;
    }
}

まあ、それは確かに問題を解決します。 乾杯。 :-)

もう一度、私は自分の問題に対するエレガントな解決策を見つけました。 Scene2dは素晴らしいです:)

このページは役に立ちましたか?
0 / 5 - 0 評価