2 回答

TA貢獻1780條經驗 獲得超4個贊
解決。您不應該在每次單擊屏幕時使用 table.add(單擊圖像)。add() 創建一個新單元格。相反,請在初始布局期間僅添加一次占位符圖像,并保留對它的引用。在我的ClickListener中,我使用clickedImage.setDrawable()來更改顯示的圖像。

TA貢獻1796條經驗 獲得超4個贊
我發現了問題,查看LibGDX Wiki表 - 添加單元格,似乎您正在使用的方法不會替換單元格中的上一個actor,它只會在行中添加另一個actor。相反,您應該將顯示的圖像保存在add()List
public class PlayerInventory {
[..........................]
Item clickedItem; // This will save your clicked item
Image clickedImage; // This will save your clicked image;
[..........................]
inventory.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
if (clickedItem == null && clickedImage == null) {
clickedItem = inventory.getSelected(); // This line changed
clickedImage = clickedItem.getImage(); // This line changed
table.add(clickedImage);
} else {
clickedItem = inventory.getSelected(); // This line changed
clickedImage = clickedItem.getImage(); // This line changed
}
System.out.println(clickedItem.getName());
}
}
如果之前沒有圖像,這將添加圖像,如果以前有圖像,則替換圖像。希望這有幫助!
添加回答
舉報