Подтвердить что ты не робот

Как создать кнопку в Libgdx?

Я хочу создать кнопку, которая изменяется, когда пользователь ее наводит, или щелкая по ней. Я создал следующую переменную

Button buttonPlay = new Button();

Я не знаю, что делать сейчас, как загрузить изображения? Как написать текст в кнопку? Как реализовать события/эффекты (наведите указатель мыши, нажмите)?

Было бы очень полезно, если бы кто-то мог написать код примера для кнопки.

4b9b3361

Ответ 1

Кнопка - просто актер в 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 со всеми текстурами для кнопок в "buttons.pack". Затем я инициализирую пустой TextButtonStyle и и я добавляю шрифт и текстуры для состояний вверх, вниз и проверенных. font, up, down и checked - это все статические переменные типа Drawable, поэтому вы можете передать любой вид Drawable (текстура, 9-патч и т.д.). Затем просто добавьте кнопку в рабочую область.

Теперь, чтобы что-то сделать, когда кнопка нажата, вы должны добавить слушателя к кнопке, ChangeListener.

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

Конечно, вместо того, чтобы добавлять кнопку непосредственно к Сцене, вы должны добавить ее в таблицу и добавить таблицу в рабочую область, но я не хотел, чтобы этот пост был слишком запутанным. Здесь - хороший учебник по таблицам в libgdx.

Ответ 2

buttons.pack - это файл, созданный пакетом текстур libgdx, упаковщик текстур - это инструмент, который может использоваться для создания атласа текстуры. Это несколько изображений, которые вы можете загрузить в графический интерфейс, используя один файл. это также поможет сэкономить память, пожалуйста, обратитесь к этой ссылке https://code.google.com/p/libgdx-texturepacker-gui/downloads/list, https://github.com/libgdx/libgdx/wiki/Texture-packer