2015-07-19 59 views
3

我有一个SelectBox可以获取基本上封装了图像和一些更多细节的对象列表。我想显示那个TextureRegion,而不是显示文本。在Libgdx/Scene2D中查看图像SelectBox

我怎么会去吗?就我所见,默认情况下,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而不是文本?

+0

您是否找到解决方案? –

+0

@BillLin:我不再在这个项目上工作了,但也许看看可用的一个答案 – Sorona

回答

2

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

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

这是不是包含并管理其孩子你平时的演员:它基本上有数据容器的列表,将它们转换为字符串(同时让你重写它的转换方法通过扩展类)。渲染方法并不期望数据容器是角色:它只是使用字体来渲染它们转换成的文本。您基本上必须实现一个自定义选择参与者,可能使用Table(或其他容器)在ScrollPane中存储当前值并打开菜单。

虽然你可以尝试使用VisUI扩展名。其菜单小部件具有类似的下拉行为,并允许您为每个菜单条目添加图标。另外,VisUI 1.0.0增加了功能强大的ListView小部件,它允许您创建自定义actor来显示值的集合。

+0

请注意,VisUI 1.0.0增加了强大的ListView小部件,它允许您创建自定义actor以显示值的集合。我更新了答案。 – JustACluelessNewbie