我正在尝试在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是一个表。
感谢。
答案 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();