web-dev-qa-db-fra.com

Comment créer un bouton dans Libgdx?

Je veux créer un bouton qui change lorsque l'utilisateur le survole ou clique dessus. J'ai créé la variable suivante

Button buttonPlay = new Button();

Je ne sais pas quoi faire maintenant, comment charger les images? Comment écrire du texte dans le bouton? Comment implémenter les événements/effets (survoler, cliquer)?

Il serait très utile que quelqu'un écrive un exemple de code pour un bouton.

29
julian

Un bouton est simplement un acteur dans libgdx. Pour rendre un acteur, vous utilisez une scène qui contient tous les acteurs de l'écran, les rend et les met à jour. Je suppose que vous voulez un bouton avec du texte, vous devez donc utiliser la classe TextButton et l'ajouter à une étape. Un TextButton prend une chaîne à restituer et un ButtonStyle, dans ce cas un TextButtonStyle, qui est fondamentalement une classe qui contient toutes les informations sur le bouton (police, dessinable pour restituer sans être pressé, dessinable pour restituer quand pressé, 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();
    }
}

Alors que se passe-t-il ici? Je crée une scène, une police et un textureatlas avec toutes les textures des boutons dans "buttons.pack". Ensuite, j'initialise un TextButtonStyle vide et j'ajoute la police et les textures pour les états haut, bas et vérifié. font, up, down et coché sont toutes des variables statiques de type Drawable pour que vous puissiez vraiment lui passer n'importe quel type de Drawable (texture, 9 patch etc.). Ajoutez ensuite simplement le bouton à la scène.

Maintenant, pour faire quelque chose lorsque le bouton est réellement cliqué, vous devez ajouter un écouteur 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 devez l'ajouter à une table et ajouter la table à la scène, mais je ne voulais pas rendre ce message trop confus. Ici est un bon tutoriel sur les tables dans libgdx.

70
danielz

buttons.pack est le fichier généré à partir du pack de texture libgdx, le pack de texture est l'outil qui peut être utilisé pour générer l'atlas de texture, c'est-à-dire plusieurs images que vous pouvez charger dans l'interface graphique à l'aide d'un seul fichier. cela aide également à économiser de la mémoire, veuillez consulter ce lien` https://code.google.com/p/libgdx-texturepacker-gui/downloads/list , https: // github .com/libgdx/libgdx/wiki/Texture-packer

2
gokul sreenivasan