如何始终在屏幕中心打印字符串?

时间:2016-03-20 10:24:05

标签: java android libgdx

我正在为我的游戏使用libgdx而且我有一个360x630的视口,问题是我使用FreetypeFont作为我的字体并且大小设置为24,我不知道有多少像素是24.那么什么我做的是

width = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
font.draw(batch, wc.string, width / 2 - string.length / 2, height / 2 - string.length / 2);

但字符串长度始终更改,因为字符串也始终更改。

1 个答案:

答案 0 :(得分:1)

下面的一个解决方法我总是用来改变大小不变的文本,我不知道为此目的添加无用的sciene2D表是否是一个好习惯,无论如何这里是解决方案:

创建一个表格:

private Table table; 

在你的show / create方法中(取决于你的libgdx版本......)添加以下内容:

table = new Table(skin); // if you have a skin or you leave it empty
table.setFillParent(true);
YourText = new Label("YourText", skin, "YourFont");
table.add(YourText).colspan(3).expandX().spaceBottom(50).row(); // you change 50 depend on your screen resolution till you get to the center 

这会将你的文字放在一个单元格/行中,然后以H / V为中心取决于屏幕当然。

在create / show方法中,别忘了将表格添加到舞台:

stage.addActor(table);

现在,在您的渲染方法中添加以下内容:

stage.act(delta);
stage.draw();

最后你必须处理这个阶段,因为GC不会为你做这个(用libgdx做GC的方法),在你的配置方法中添加这个:

stage.dispose();