如何在Libgdx中创建一个按钮?

我想创建一个按钮,当用户将其hover或单击时,该按钮会发生变化。 我创建了以下变量

Button buttonPlay = new Button(); 

我现在不知道该怎么办,如何加载图片? 如何在按钮中写入文字? 如何实现事件/效果(hover,点击)?

如果有人可以为按钮编写一些示例代码,那将非常有用。

按钮只是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-patch等)。 然后只需将按钮添加到舞台。

现在,为了在实际单击按钮时执行某些操作,您必须向按钮添加一个侦听器,即ChangeListener。

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

当然不是直接将按钮添加到舞台上,而是应该将它添加到表中并将表添加到舞台中,但我不想让这个post太混乱。 这是关于libgdx中表的一个很好的教程。

buttons.pack是从libgdx纹理打包器生成的文件,纹理打包器是可用于生成纹理图集的工具,即可以使用单个文件加载到GUI的多个图像。 它还有助于节省一些内存请参考此链接` https://code.google.com/p/libgdx-texturepacker-gui/downloads/list,https://github.com/libgdx/libgdx/wiki/Texture-打包机