Comment créer un bouton dans Libgdx?

je veux créer un bouton qui change quand l'utilisateur le survole, ou le cliquer. J'ai créé la variable suivante

Button buttonPlay = new Button();

je ne sais pas quoi faire maintenant, comment charger les images? Comment écrire un texte dans le bouton? Comment mettre en œuvre les événements / effets (hover, click)?

Il serait très utile si quelqu'un pouvait écrire un exemple de code pour un bouton.

28
demandé sur Matsemann 2014-01-31 23:19:48

2 réponses

un bouton est simplement un acteur de libgdx. Pour rendre un acteur que vous utilisez une scène qui contient tous les acteurs de l'écran, rend et mises à jour. Je suppose que vous voulez un bouton avec du texte, donc vous devriez utiliser le bouton de classe de Text et l'ajouter à une étape. Un Textutton prend une chaîne de caractères pour rendre et un ButtonStyle, dans ce cas un Textttonstyle, qui est essentiellement une classe qui contient toutes les informations sur le bouton (Police, tirable pour rendre alors qu'il n'est pas pressé, tirable pour rendre alors qu'il est pressée etc).

   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();
    }
}

Donc ce qui se passe ici? Je crée une scène, une police et un texturereatlas avec toutes les textures pour les boutons dans "buttons.pack." Puis j'initialise un style de texte vide et et j'ajoute la police et les textures pour les États up, down et checked. font, up, down and checked sont toutes les variables statiques de type Drawable de sorte que vous pouvez vraiment passer n'importe quel type de Drawable (texture, 9-patch etc). Ensuite, il suffit d'ajouter le bouton à la scène.

Maintenant, dans ordre pour faire quelque chose quand le bouton est cliqué, vous devez ajouter un auditeur au bouton, un ChangeListener.

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

bien sûr au lieu d'ajouter le bouton directement à la scène vous devriez l'ajouter à une Table et ajouter la Table à la scène mais je ne voulais pas rendre ce post trop confus. Ici est un bon tutoriel sur les tables dans libgdx.

68
répondu danielz 2016-05-09 16:31:04

boutons.pack est le fichier généré à partir de libgdx texture packer, texture packer est l'outil qui peut être utilisé pour générer l'atlas de Textures , C'est-à-dire plusieurs images que vous pouvez charger dans l'interface graphique à l'aide d'un seul fichier . il aide aussi à sauver de la mémoire s'il vous plaît renvoyer ce lien'https://code.google.com/p/libgdx-texturepacker-gui/downloads/list, https://github.com/libgdx/libgdx/wiki/Texture-packer

1
répondu gokul sreenivasan 2015-11-19 09:57:53