33

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

Button buttonPlay = new Button();

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

誰かがボタンのサンプル コードを書いてくれると非常に助かります。

4

3 に答える 3

81

ボタンは、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 を初期化し、アップ、ダウン、およびチェック状態のフォントとテクスチャを追加します。font、up、down、checked はすべて Drawable 型の静的変数なので、実際にはあらゆる種類の Drawable (テクスチャ、9-patch など) を渡すことができます。次に、ボタンをステージに追加するだけです。

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

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

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

于 2014-02-01T05:09:54.947 に答える