Как создать кнопку в Libgdx?
Я хочу создать кнопку, которая изменяется при наведении, или щелкнув его. Я создал следующую переменную
Button buttonPlay = new Button();
Я не знаю, что делать сейчас, как загрузить изображения? Как написать текст в кнопку? Как реализовать события / эффекты (наведите курсор, щелкните)?
было бы очень полезно, если кто-то может написать пример кода для кнопки.
2 ответов
кнопка-это просто актер в 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();
}
}
Так что здесь происходит? Я создаю сцену, шрифт и textureatlas со всеми текстурами для кнопок в "кнопках.пакет." Затем я инициализирую пустой TextButtonStyle и и я добавляю шрифт и текстуры для состояний up, down и checked. шрифт, вверх, вниз и проверил все статические переменные выигрышного типа, так что вы можете действительно передать его какой-либо рисунков (текстуры, 9-патч и т. д.). Затем просто добавьте кнопку на сцену.
сейчас в чтобы сделать что-то, когда кнопка фактически нажата, вы должны добавить слушателя к кнопке, ChangeListener.
button.addListener(new ChangeListener() {
@Override
public void changed (ChangeEvent event, Actor actor) {
System.out.println("Button Pressed");
}
});
конечно, вместо того, чтобы добавлять кнопку непосредственно на сцену, вы должны добавить ее в таблицу и добавить таблицу на сцену, но я не хотел делать этот пост слишком запутанным. здесь - хороший учебник по таблицам в libgdx.
кнопки.pack-это файл, созданный из libGDX texture packer, texture packer-это инструмент , который может использоваться для создания атласа текстур, то есть нескольких изображений, которые вы можете загрузить в GUI с помощью одного файла . это также поможет сохранить некоторую память, пожалуйста, обратитесь к этой ссылке'https://code.google.com/p/libgdx-texturepacker-gui/downloads/list, https://github.com/libgdx/libgdx/wiki/Texture-packer