我如何使演员在LibGDX scene2d中暂时移到前景?

问题描述 投票:0回答:1

我有一个库存UI,它是scene2d中的一个表。然后,表格中有一堆容器,这些容器基本上是库存槽。它们具有透明的灰色背景色。然后在每个容器中是一个ItemStack,其中包含一个项目的图片和一个stacksize。当我将这个ItemStack拉到稍后创建的容器上时,它将移到该容器的后面,而透明的灰色背景将位于该项目图片的前面。我如何临时(或永久)将其移至前景,所以在拖动哪个容器之前都无所谓?

发生的情况的示例:https://i.imgur.com/yq4njex.gifv

这是我创建容器的方式:

// Create inventory slots
table.row();
inventorySlots.clear();
for (int i = 0; i < inventory.getInventorySize(); i++) {
    if (i % SLOTS_PER_ROW == 0) table.row();

    Container cont = new Container();
    cont.fill();
    cont.background(Utils.createDrawable(1, 1, new Color(0, 0, 0, 0.4f)));

    inventorySlots.add(cont);
    table.add(cont).prefHeight(50).prefWidth(50).pad(5);
}

此后,我将每个ItemStack添加到这样的容器/库存槽列表中:

// Add ItemStacks from Items to their respective slot
ArrayList<Item> items = inventory.getItems();
for(Container slot : inventorySlots) {
    Item item = items.get(inventorySlots.indexOf(slot));

    if(item != null) {
        ItemStack itemStack = new ItemStack(item);
        addInventoryEvent(itemStack, items);
        slot.pad(5);
        slot.setActor(itemStack);
    }
}
java user-interface libgdx inventory scene2d
1个回答
0
投票

您可以使用Actor.setZindex()将演员移到最前面。

设置此角色的z索引。 z索引是父母的孩子的索引,其中较低的索引低于较高的索引。将z索引设置为高于子代数将使子代向前移动。将z索引设置为小于零是无效的

一个解决方案可能是

image.addListener(new InputListener(){
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
        image.setZIndex(stage.getActors().size);
        return true;
    }
});

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.