Dans un screen(écran) il est possible de placer des actors (acteurs) qui interagissent dans une stage (scène).
1°) Téléchargement d’une Skin
https://ray3k.wordpress.com/artwork/glassy-ui-skin-for-libgdx/
https://github.com/czyzby/gdx-skins
Placer les fichiers dans le dossier Assets
2°) Utilisation pour des boutons
Un bouton est un acteur (Actor). Pour utiliser un acteur il faut une scène (stage) qui contient tous les acteurs et qui les met à jour.
Il existe différent type de boutons (images, text…). Pour utiliser un bouton avec du texte il faut utiliser la classe TextButton et l’ajouter à la scène. Un TextButton comporte une chaîne de caractères et un ButtonStyle, le TextButtonStyle, est une classe qui comporte toute les informations concernant le bouton (font, drawable …).
Déclaration :
private Stage stage;
private Skin skin;
private TextButton button, button2;
boolean bClicked=false, bClicked2=false;
////////////////
@Override
public void create() {
//spriteBatch = new SpriteBatch();
stage = new Stage(new ScreenViewport());
Gdx.input.setInputProcessor(stage);
skin = new Skin(Gdx.files.internal("glassy-ui.json"));
//-- Add Button (Actor) to the Stage
button = new TextButton("Click 1 !", skin);
stage.addActor(button);
button2 = new TextButton("Click 2 !", skin);
stage.addActor(button2);
//-- test button click
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (!bClicked)
{button.setText("Clicked 1!");
bClicked=true;}
else
{button.setText("Click 1 !");
bClicked=false;}
}
});
button2.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (!bClicked2)
{button2.setText("Clicked 2!");
bClicked2=true;}
else
{button2.setText("Click 2 !");
bClicked2=false;}
}
});
Gdx.input.setInputProcessor(stage);
//////////////////
Render :
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//-- Stage Activation
stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
stage.draw();
}
@Override
public void dispose() {
stage.dispose();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
button.setPosition(
(width-button.getWidth()),
(height-button.getHeight())/2);
button2.setPosition(
(width-button.getWidth()),
(height-button.getHeight()));
}
Pour utiliser plusieurs boutons dans une scène il est préférable d’ajouter ces éléments à un tableau (Tab) que l’on ajoutera à la scène.
exemple
Références :
https://stackoverflow.com/questions/21488311/how-to-create-a-button-in-libgdx
https://github.com/EsotericSoftware/tablelayout