1

我是 libgdx 的新手,我正在尝试在屏幕上显示一些文本。

我看过几个教程,他们都说我应该BitmapFont不带参数启动它,然后它将使用默认字体。但在我的安卓设备上,它只显示这些黑色矩形: 字母形状的黑色矩形

这是我的代码:

public class GameOverScreen implements Screen {
    private JumpGame game;
    private OrthographicCamera cam;

    private BitmapFont gameOverFont;
    private Label.LabelStyle labelStyle;
    private Label label;

public GameOverScreen(JumpGame game) {
    this.game = game;
    cam = new OrthographicCamera();

    gameOverFont = new BitmapFont();
    labelStyle = new Label.LabelStyle(gameOverFont, Color.BLACK);
    label = new Label("Game Over", labelStyle);
}

@Override
public void show() {
    cam.setToOrtho(false, game.getWidth() / 4, game.getHeight() / 4);
    game.batch.setProjectionMatrix(cam.combined);
}

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    game.batch.begin();
    label.draw(game.batch, 1);
    game.batch.end();
}

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

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void hide() {

}

@Override
public void dispose() {

}
}

编辑:

好的,所以我正在使用第二个线程中的文本启动屏幕。当我“正常”启动它时,它工作正常。有人可以解释为什么会这样,如果我仍然想从线程启动它,如何解决它?

4

1 回答 1

1

根据维基

要将数据从另一个线程传递到渲染线程,我们建议使用 Application.postRunnable()。这将在调用 ApplicationListener.render() 之前在下一帧的渲染线程中运行 Runnable 中的代码。


Label 是 libgdx 的 2D 场景图的一部分,因此最好与 Stage 一起使用。

如果你想绘制字体,你可以简单地在Batch.

font.draw(batch,"Hello World",100,100);
于 2017-05-08T15:10:47.677 回答