如何让演员在 LibGDX scene2d 中暂时移到前台?
How do I make an actor move to the foreground temporarily in LibGDX scene2d?
我有一个清单 UI,它是 scene2d 中的一个 table。然后 table 有一堆基本上是库存槽的容器。它们具有透明的灰色背景色。然后在每个容器中都有一个 ItemStack,其中包含一个项目的图片和一个堆栈大小。当我将此 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 添加到 containers/inventoryslots 的列表中,如下所示:
// 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);
}
}
您可以使用 Actor.setZindex()
将您正在拖动的演员移动到前面。
Sets the z-index of this actor. The z-index is the index into the parent's children, where a lower index is below a higher index. Setting a z-index higher than the number of children will move the child to the front. Setting a z-index less than zero is invalid
一个解决方案可能是
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;
}
});
我有一个清单 UI,它是 scene2d 中的一个 table。然后 table 有一堆基本上是库存槽的容器。它们具有透明的灰色背景色。然后在每个容器中都有一个 ItemStack,其中包含一个项目的图片和一个堆栈大小。当我将此 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 添加到 containers/inventoryslots 的列表中,如下所示:
// 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);
}
}
您可以使用 Actor.setZindex()
将您正在拖动的演员移动到前面。
Sets the z-index of this actor. The z-index is the index into the parent's children, where a lower index is below a higher index. Setting a z-index higher than the number of children will move the child to the front. Setting a z-index less than zero is invalid
一个解决方案可能是
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;
}
});