web-dev-qa-db-ja.com

Libgdxでボタンを作成する方法は?

ユーザーがボタンをホバーまたはクリックすると変化するボタンを作成したい。次の変数を作成しました

Button buttonPlay = new Button();

今何をすべきか、画像をロードする方法がわかりませんか?ボタンにテキストを書き込む方法は?イベント/効果を実装する方法(ホバー、クリック)?

誰かがボタンのサンプルコードを書くことができれば、非常に役立ちます。

29
julian

ボタンはlibgdxの単なるアクターです。アクターをレンダリングするには、画面のすべてのアクターを含むステージを使用し、それらをレンダリングして更新します。テキスト付きのボタンが必要だと想定しているので、TextButtonクラスを使用してステージに追加する必要があります。 TextButtonは、レンダリングする文字列とButtonStyle、この場合はTextButtonStyleを受け取ります。この場合、これは基本的にボタンに関するすべての情報(フォント、押されていないときにレンダリングする描画可能、押されている間にレンダリングする描画可能など)を含むクラスです。

   public class ButtonExample extends Game{

    Stage stage;
    TextButton button;
    TextButtonStyle textButtonStyle;
    BitmapFont font;
    Skin skin;
    TextureAtlas buttonAtlas;

    @Override
    public void create() {      
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);
        font = new BitmapFont();
        skin = new Skin();
        buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
        skin.addRegions(buttonAtlas);
        textButtonStyle = new TextButtonStyle();
        textButtonStyle.font = font;
        textButtonStyle.up = skin.getDrawable("up-button");
        textButtonStyle.down = skin.getDrawable("down-button");
        textButtonStyle.checked = skin.getDrawable("checked-button");
        button = new TextButton("Button1", textButtonStyle);
        stage.addActor(button);
    }

    @Override
    public void render() {      
        super.render();
        stage.draw();
    }
}

ここで何が起こっているのでしょうか? 「buttons.pack」内のボタンのすべてのテクスチャを使用して、ステージ、フォント、およびテクスチャアトラスを作成しています。次に、空のTextButtonStyleを初期化し、up、down、checked状態のフォントとテクスチャを追加します。 font、up、down、checkedはすべてDrawable型の静的変数であるため、あらゆる種類のDrawable(テクスチャ、9パッチなど)を実際に渡すことができます。次に、ボタンをステージに追加します。

ボタンが実際にクリックされたときに何かをするために、ボタンにリスナー、ChangeListenerを追加する必要があります。

    button.addListener(new ChangeListener() {
        @Override
        public void changed (ChangeEvent event, Actor actor) {
            System.out.println("Button Pressed");
        }
    });

もちろん、ボタンをステージに直接追加する代わりに、テーブルに追加してテーブルにステージを追加する必要がありますが、この投稿をあまりにも混乱させたくありませんでした。 ここ はlibgdxのテーブルに関する優れたチュートリアルです。

70
danielz

buttons.packはlibgdxテクスチャパッカーから生成されたファイル、texture packerはテクスチャアトラスを生成するために使用できるツールです。これは、単一のファイルを使用してGUIにロードできる複数の画像です。メモリを節約するのにも役立ちます。このリンクを参照してください ` https://code.google.com/p/libgdx-texturepacker-gui/downloads/listhttps:// github .com/libgdx/libgdx/wiki/Texture-packer

2