在 Libgdx/Scene2D SelectBox 中显示图像
Show images in Libgdx/Scene2D SelectBox
我有一个 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
用这个方法转换它的 children:
protected String toString (T obj) {
return obj.toString();
}
这不是您通常包含和管理其 children 的 actor:它基本上有一个数据容器列表,将它们转换为字符串(同时允许您通过扩展 class).呈现方法并不期望数据容器成为参与者:它只是使用一种字体来呈现它们转换成的文本。您基本上必须实现一个自定义选择 actor,可能在 ScrollPane
中使用 Table
(或其他容器),并使用 TextButton
/ImageTextButton
存储当前值并打开菜单。
不过,您可以尝试使用 VisUI
扩展名。它的菜单小部件具有类似 drop-down 的行为,并允许您为每个菜单条目添加图标。此外,VisUI 1.0.0
添加了强大的 ListView
小部件,它允许您创建自定义角色来显示值集合。
我有一个 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
用这个方法转换它的 children:
protected String toString (T obj) {
return obj.toString();
}
这不是您通常包含和管理其 children 的 actor:它基本上有一个数据容器列表,将它们转换为字符串(同时允许您通过扩展 class).呈现方法并不期望数据容器成为参与者:它只是使用一种字体来呈现它们转换成的文本。您基本上必须实现一个自定义选择 actor,可能在 ScrollPane
中使用 Table
(或其他容器),并使用 TextButton
/ImageTextButton
存储当前值并打开菜单。
不过,您可以尝试使用 VisUI
扩展名。它的菜单小部件具有类似 drop-down 的行为,并允许您为每个菜单条目添加图标。此外,VisUI 1.0.0
添加了强大的 ListView
小部件,它允许您创建自定义角色来显示值集合。