2016-06-19 67 views
1

我有發起與3個細胞的表填充像這樣一類:使用LibGDX中的ImageButton更新表格單元格?

[leftButton] [ImageButton的] [rightButton],創建


的ImageButton &加入characterSelection數組:

Texture characters2 = TrafficGame.res.getTexture("chevy"); 
characterImageStyle = new ImageButton.ImageButtonStyle(); 
car = new TextureRegion(characters2, 32, 32); 
characterImageStyle.imageUp = new TextureRegionDrawable(new TextureRegion(car)); 
characterImageChevy = new ImageButton(characterImageStyle); 
characterSelection.add(characterImageChevy); 

玩家選擇開始時加入表格:

table.add(characterSelection.pop()); 

現在,當用戶點擊左/右按鍵,moveLeft /右()被調用:

public void moveLeft(){ 
    table.getChildren().get(1).clear(); 
} 

這其中,我堅持。它顯然清除了單元格,但我不知道如何從數組中添加ImageButton。

回答

1

表不支持將角色交換到同一個單元格中。您應該隱藏它,而不是清除圖像按鈕。當您準備好顯示其他圖像時,請更改圖像並顯示它。

characterImageChevy.hide(); 

((TextureRegionDrawable)characterImageChevy.getStyle().imageUp).setTexture(...); 
characterImageChevy.show(); 
+0

感謝您的快速解釋。我正在編碼,就好像我必須爲每個字符創建一個ImageButton,我應該想到它只是一個TextureRegion的佔位符,我想。 '((TextureRegionDrawable)characterImage.getStyle()。imageUp).setRegion(characterSelection.peek());' 對我來說就像一個魅力。 – Spacemudd

+0

表支持在同一單元中交換元素,但不直接使用「交換」方法。但是你可以得到演員的細胞,然後清除它,並設置一個新的演員。我在下面寫了一個單獨的答案來證明它。 – middlehut

+1

你說得對。我誤解了你不能插入單元格的事實。 – Tenfour04

0

您可以直接更改Scene2D單元格的內容。您可以通過要求表格返回特定演員的單元格來獲取單元格。之後,您可以清除單元格併爲其內容設置新的主角。

// first, grab the Actor that you wish to replace 
ImageButton actor = characterImageChevy; // you know where to get it from 

// next, take the Cell where it's at 
Cell<Table> cell = table.getCell(characterImageChevy); 

// remove the actor 
cell.clearActor(); 

// set new Actor 
cell.setActor(characterImageChevy); 
相關問題