java - 在 Libgdx/Scene2D SelectBox 中显示图像

标签 java libgdx scene2d

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

相关文章:

java - 事务回滚后oracle undo sequence会增加吗?

java - 当元素不区分大小写时,是否可以使用单个 Xpath 表达式扫描 xml 元素

java - LibGDX 异常 : Exception in thread "LWJGL Application" java. lang.NullPointerException

java - 表格不绘制以下行

java - Libgdx |场景2d |点击隐形按钮时 touchDown 输入处理器方法不会触发

android - Scene2d如何处理触摸的 Actor ?(LibGDX)

java - 解析来自维基百科 API 的响应

java - 拖放 JLabel 的动画

java - LibGDX JSON 对象保存/序列化

android - Google Play 服务非多人邀请挑战消息