java - layouts - ¿Cómo crear un botón en libgdx?
layouts libgdx (2)
Un botón es simplemente un actor en libgdx. Para representar a un actor, se utiliza un escenario que contiene todos los actores de la pantalla, los representa y actualiza. Supongo que desea un botón con texto, por lo que debe usar la clase TextButton y agregarlo a un escenario. Un TextButton toma una cadena para renderizar y un ButtonStyle, en este caso un TextButtonStyle, que es básicamente una clase que contiene toda la información sobre el botón (fuente, dibujable para representar mientras no está presionada, dibujable para representar mientras está presionada, 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();
}
}
Entonces, ¿qué está pasando aquí? Estoy creando un escenario, una fuente y textureatlas con todas las texturas para los botones en "buttons.pack". Luego inicializo un TextButtonStyle vacío y agrego la fuente y las texturas para los estados arriba, abajo y verificados. Las fuentes, arriba, abajo y verificadas son todas variables estáticas del tipo Drawable, por lo que realmente puede pasar cualquier tipo de Drawable (textura, 9 parches, etc.). Luego simplemente agrega el botón al escenario.
Ahora, para hacer algo cuando realmente se hace clic en el botón, debe agregar un oyente al botón, un ChangeListener.
button.addListener(new ChangeListener() {
@Override
public void changed (ChangeEvent event, Actor actor) {
System.out.println("Button Pressed");
}
});
Por supuesto, en lugar de agregar el botón directamente al escenario, debe agregarlo a una tabla y agregar la tabla al escenario, pero no quise que esta publicación fuera demasiado confusa. Here hay un buen tutorial sobre tablas en libgdx.
Quiero crear un botón que cambie cuando el usuario lo coloque, o haga clic en él. He creado la siguiente variable
Button buttonPlay = new Button();
No sé qué hacer ahora, ¿cómo cargar las imágenes? ¿Cómo escribir texto en el botón? ¿Cómo implementar los eventos / efectos (hover, click)?
Sería muy útil si alguien pudiera escribir algún código de ejemplo para un botón.
buttons.pack es el archivo generado desde el empaquetador de texturas libgdx, el empaquetador de texturas es la herramienta que puede utilizarse para generar el atlas de textura. Es decir, varias imágenes que puede cargar en la GUI utilizando un solo archivo. también ayuda a ahorrar algo de memoria, consulte este enlace ` https://code.google.com/p/libgdx-texturepacker-gui/downloads/list , https://github.com/libgdx/libgdx/wiki/Texture-packer