如何在Libgdx中创建一个按钮?
我想创建一个按钮,当用户将鼠标悬停或单击它时,该按钮会发生变化。我创建了以下变量
Button buttonPlay = new Button();
我不知道现在该怎么办,如何加载图像?如何将文本写入按钮?如何实现事件/效果(悬停,点击)?
如果有人可以为按钮编写一些示例代码,那将是非常有帮助的。
我想创建一个按钮,当用户将鼠标悬停或单击它时,该按钮会发生变化。我创建了以下变量
Button buttonPlay = new Button();
我不知道现在该怎么办,如何加载图像?如何将文本写入按钮?如何实现事件/效果(悬停,点击)?
如果有人可以为按钮编写一些示例代码,那将是非常有帮助的。
按钮只是 libgdx 中的一个 actor。要渲染Actor,请使用包含屏幕所有Actor的舞台,呈现它们并更新它们。我假设你想要一个带有文本的按钮,所以你应该使用类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();
}
}
那么这里发生了什么呢?我正在创建一个舞台,一个字体和一个纹理,其中包含“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中表的好教程。
这就是你如何做到不添加任何皮肤
TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = yourCustomFont;
textButtonStyle.fontColor = Color.WHITE;
stage.add(new TextButton("Custom Btn ", textButtonStyle));