我在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);
这是我的图块代码:
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处渲染。但是,请看以下屏幕截图:
磁贴不在屏幕上,我不知道为什么。我想念什么?
提前致谢。
最佳答案
看起来原因是HorizontalGroup:Align.center
中的默认对齐方式。因此,Tile y位置为-25.0(这是Tile演员的高度/ 2)。因此,例如,如果您要创建一个高度为100的Tile,则该Tile在HorizontalGroup中的y位置将为-50。
我看到了两种根据需要定位图块的方法:
将HorizontalGroup的对齐方式固定到底部:submitGroup.align(Align.bottom);
通过将HorizontalGroup的y位置设置为25
而不是0
;