我有一个 SelectBox,它获取一个对象列表,这些对象基本上封装了图像和更多细节。我不想显示文本,而是想显示那个 TextureRegion。
我该怎么做?据我所知,SelectBox 默认显示 toString()。
所以我的类(class)看起来像那样(有点笨拙):
public class Image
{
private Vector2 position;
private TextureRegion sprite;
public Image(Vector2 position) {...}
public void render(SpriteBatch batch) { batch.draw{this.sprite, this.position.x ...}
public String toString() { return "Position: " + position; }
}
SelectBox<Image> selectBox = ... // fetch data
我需要创建自己的 SelectBoxStyle 吗?如果是这样,我如何覆盖它以绘制 TextureRegion 而不是 Text?
最佳答案
SelectBox
使用 List
来显示它的值。 List
用这个方法转换它的 child :
protected String toString (T obj) {
return obj.toString();
}
这不是您通常包含和管理其子项的 actor:它基本上有一个数据容器列表,将它们转换为字符串(同时允许您通过扩展类来覆盖其转换方法)。呈现方法并不期望数据容器成为参与者:它只是使用一种字体来呈现它们转换成的文本。您基本上必须实现自定义选择 actor,可能使用 ScrollPane
中的 Table
(或其他容器)和 TextButton
/ImageTextButton
存储当前值并打开菜单。
不过,您可以尝试使用 VisUI
扩展。它的菜单小部件具有类似的下拉行为,并允许您为每个菜单条目添加图标。此外,VisUI 1.0.0
添加了强大的 ListView
小部件,它允许您创建自定义的 actor 来显示值的集合。
关于java - 在 Libgdx/Scene2D SelectBox 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31503137/