我在LibGDX中使用了一个可以正常工作的HorizontalGroup。我想创建一排瓷砖。但是当我尝试使用setPosition()方法定位组时,它并不像我希望的那样定位,也就是说,它不会使用我的“y”值进行渲染。这是代码:
a = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3);
b = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3);
c = new Tile(missingwords.getAM().get("a2.png", Texture.class), "a", 3);
a.setSize(50, 50);
b.setSize(50, 50);
c.setSize(50, 50);
submitGroup = new HorizontalGroup();
submitGroup.addActor(a);
submitGroup.addActor(b);
submitGroup.addActor(c);
submitGroup.setPosition((Gdx.graphics.getWidth() - submitGroup.getMinWidth()) / 2, 0);
stage.addActor(submitGroup);
这是我的Tile代码:
public class Tile extends Actor {
private String letter;
private int points;
private Texture texture;
public Tile(Texture tileTexture, String letter, int points) {
this.letter = letter;
this.points = points;
texture = tileTexture;
}
@Override
public void draw(Batch batch, float parentAlpha) {
batch.draw(texture, getX(), getY(), getWidth(), getHeight());
}
如您所见,我使用:
submitGroup.setPosition((Gdx.graphics.getWidth() - submitGroup.getMinWidth()) / 2, 0);
这意味着它应该在y = 0时渲染。但是,请看一下这个截图:
瓷砖不在屏幕上,我不知道为什么。我错过了什么?
提前致谢。
答案 0 :(得分:2)
看起来原因是HorizontalGroup:Align.center
中的默认对齐方式。因此,Tile y位置是-25.0(这是Tile actor的高度/ 2)。因此,例如,如果要创建高度为100的平铺,那么HorizontalGroup中平铺的y位置将为-50。
我看到两种方法可以像你想要的那样定位瓷砖:
submitGroup.align(Align.bottom);
25
而不是0
;