当前位置: 代码迷 >> java >> 在Libgdx / Scene2D SelectBox中显示图像
  详细解决方案

在Libgdx / Scene2D SelectBox中显示图像

热度:49   发布时间:2023-08-02 10:42:33.0

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

SelectBox使用List来显示其值。 List使用此方法转换其子项:

protected String toString (T obj) {
    return obj.toString();
}

这不是您通常的包含和管理其子代的actor:它基本上有一个数据容器列表,将它们转换为字符串(同时允许您通过扩展类来覆盖其转换方法)。 渲染方法不期望数据容器是actor:它只是使用字体来呈现它们被转换成的文本。 您基本上必须实现自定义选择actor,可能使用ScrollPaneTable (或其他容器), TextButton / ImageTextButton存储当前值并打开菜单。

但是,您可以尝试使用VisUI扩展。 其菜单小部件具有类似的下拉行为,允许您为每个菜单项添加图标。 此外, VisUI 1.0.0添加了强大的ListView小部件,它允许您创建自定义actor以显示值集合。