LibGDX - 如何使文本居中?

时间:2014-08-29 01:46:09

标签: java libgdx

我是LibGDX的新手,我慢慢接受它。我仍然试图了解大多数事情,这就是为什么谷歌搜索通常由于它们过于复杂而无法提供帮助。我有一个主菜单,无论屏幕大小是什么,都有我想要居中的文字。这是我对该菜单的代码。

public class Menu implements Screen {

SlingshotSteve game;

OrthographicCamera camera;

public Menu(final SlingshotSteve gam) {
    this.game = gam;

    camera = new OrthographicCamera();
    camera.setToOrtho(false, 800, 480);
}

@Override
public void render(float delta) {

    Gdx.gl.glClearColor(0, 0, 0.2f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    camera.update();
    game.batch.setProjectionMatrix(camera.combined);

    game.batch.begin();
    game.font.draw(game.batch, "Welcome to Slingshot Steve!!! ", 100, 150);
    game.font.draw(game.batch, "Tap anywhere to begin!", 100, 100);
    game.batch.end();

    if (Gdx.input.isTouched()) {
        game.setScreen((Screen) new GameScreen(game));
        dispose();
    }
}

@Override
public void resize(int width, int height) {

}

@Override
public void show() {

}

@Override
public void hide() {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {

}

}

2 个答案:

答案 0 :(得分:1)

我来这里救你!

要从使用BitmapFont绘制的String获取宽度/高度,您可以使用这个超级好的方法:

game.font.getBounds(String string)

要在你的情况下使用它,它将是这样的:

game.font.getBounds("Tap anywhere to begin!").width / 2;

干杯!

答案 1 :(得分:1)

可以按 Nine Magics 建议的方式进行,但通常可以通过Stage进行,Actorscene2d的一部分。

更具体地说,可以使用scene2d.ui Button,如ImageLabelClickListener等。您可以附加{Button例如,1}}到Actor并对此事件作出反应。

此外,对于布局,有一个非常强大的// do this once, in create() or show() Skin skin = new Skin("uiskin.json"); // get the demo skin from the libgdx test resources Stage stage = new Stage(); Table table = new Table(skin); table.add("Welcome to Slingshot Steve!!!"); table.row(); table.add("Tap anywhere to begin!"); stage.addActor(table); // do this in your render loop stage.act(); stage.draw(); ,即Table,您可以非常轻松地将其用于屏幕上的内容。

一些极简主义的代码:

{{1}}

您可以找到“默认”皮肤资源here。你需要获得所有的uiskin。*文件。