在Libgdx / Scene2D SelectBox中显示图像

时间:2015-07-19 16:01:59

标签: java libgdx scene2d

我有一个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?

1 个答案:

答案 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以显示值集合。