2015-07-19 61 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