我有一个SelectBox,它可以获取基本上封装图像的对象列表以及更多细节。我没有显示文字,而是想显示那个TextureRegion。
我该怎么做?据我所知,SelectBox默认显示为toString()。
所以我的班级看起来像那样(有点愚蠢):
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?
答案 0 :(得分:2)
SelectBox
使用List
来显示其值。 List
使用此方法转换其子项:
protected String toString (T obj) {
return obj.toString();
}
这不是您通常的包含和管理其子代的actor:它基本上有一个数据容器列表,将它们转换为字符串(同时允许您通过扩展类来覆盖其转换方法)。渲染方法不期望数据容器是actor:它只是使用字体来呈现它们被转换成的文本。您基本上必须实现自定义选择参与者,可能使用Table
中的ScrollPane
(或其他容器),TextButton
/ ImageTextButton
存储当前值并打开菜单。
但您可以尝试使用VisUI
扩展程序。其菜单小部件具有类似的下拉行为,允许您为每个菜单项添加图标。此外,VisUI 1.0.0
添加了强大的ListView
窗口小部件,允许您创建自定义actor以显示值集合。