Libgdx:将两个图像叠加到场景2D表中

时间:2014-04-15 10:53:39

标签: java libgdx

我正在尝试在LibGdx中创建一个进度条。我正在使用场景2D将元素放入屏幕(是一个加载屏幕)。我正在使用一张桌子,在那里我放了一个图像,一个标签(“loading ...”)和一个进度条。

进度条由两个图像组成。我的问题是我无法覆盖这两个图像。我正在使用此代码

stage.addActor(root);
root.add(image).width(200).height(200);
root.row();
root.add(new Label("Loading...", skin));
root.row();
root.add(progressBarBG).width(600);
root.add(progressBarFG).height(30).width(30);
root.pack();
Gdx.input.setInputProcessor(stage);

但progressBarBG和progressBarFG是绘制一个,然后是另一个。这是一种将一种放在另一种上的方法吗?

ProgressBarBG和ProgressBarFG从纹理图集加载。 Root是一个表。

感谢。

2 个答案:

答案 0 :(得分:4)

正如Springrbua所说,最好使用ProgressBar

但是,为了回答您的问题,您可以使用Group将图像与scene2d重叠。只需将所有图像添加到一个组,然后将该组添加到所需的父组。如果您需要偏移组中的任何图像,可以使用image.setPosition(offsetX, offsetY)。以下是您案例的一个示例:

stage.addActor(root);
root.add(image).width(200).height(200);
root.row();
root.add(new Label("Loading...", skin));
root.row();
//Use groups to overlay multiple images
Group group = new Group();
progressBarBG.setWidth(600);
progressBarFG.setSize(30, 30);
group.addActor(progressBarBG);
group.addActor(progressBarFG);
root.add(group);
root.pack();
Gdx.input.setInputProcessor(stage);

答案 1 :(得分:0)

我使用此代码在框图像上放置菱形图像:

Image boxImage = new Image(Assets.instance.gifts.box);
Image diamondImage = new Image(Assets.instance.gifts.diamond);
Stack diamondBox = new Stack();
diamondBox.addActor(boxImage);
diamondBox.addActor(diamondImage);
tbl.add(diamondBox).width(20).height(20);
tbl.row();