亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新表中的映像

更新表中的映像

蕭十郎 2022-08-03 15:10:22
我目前正在創建一個清單系統,用戶可以在其中從其清單列表集合中選擇一個項目,右側的圖標將更新。截至目前,我已經實現了一個 ClickListener 來從清單列表中獲取當前選定的項,并調用了我創建的 .getImage() 方法來獲取選定項的圖標。我用了 table.add(image);將圖標添加到表格中。但是,當圖標添加到表中時,它將填滿該空間,并且當用戶選擇另一個項目時,將在右側創建另一列。這就是問題所在。如何讓圖像區域在用戶選擇另一個項目時更新,而不是在右側創建另一列?目前的情況是這樣的:https://imgur.com/a/O6SW8gi我希望使用用戶單擊的最新項目更新劍的區域。這是我的代碼:package com.sps.game.inventory;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.Input;import com.badlogic.gdx.InputProcessor;import com.badlogic.gdx.graphics.OrthographicCamera;import com.badlogic.gdx.graphics.g2d.SpriteBatch;import com.badlogic.gdx.scenes.scene2d.*;import com.badlogic.gdx.scenes.scene2d.ui.*;import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;import com.badlogic.gdx.utils.viewport.FitViewport;import com.badlogic.gdx.utils.viewport.Viewport;import com.sps.game.controller.InventoryController;import com.sps.game.controller.PlayerController;import java.util.ArrayList;public class PlayerInventory {    public Stage stage;    public SpriteBatch sb;    private Viewport viewport;    private Skin skin = new Skin(Gdx.files.internal("core/assets/pixthulhuui/pixthulhu-ui.json"));    private List<Item> inventory;    private List<Image> itemImages;    private InventoryController inventoryController;    private InputProcessor oldInput;    Table table = new Table(skin);    public PlayerInventory(SpriteBatch sb, PlayerController playerController) {        this.sb = sb;        viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), new OrthographicCamera());        stage = new Stage(viewport, sb);        inventoryController = new InventoryController();        inventory = inventoryController.getInventoryList();       // itemImages = inventoryController.getImageList();    }
查看完整描述

2 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

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


查看完整回答
反對 回復 2022-08-03
?
慕的地8271018

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());

            }

}

如果之前沒有圖像,這將添加圖像,如果以前有圖像,則替換圖像。希望這有幫助!


查看完整回答
反對 回復 2022-08-03
  • 2 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號