LibGDX - 试图在我的游戏中显示一个可见的计时器

时间:2014-12-01 15:38:09

标签: java android timer bitmap libgdx

正如标题所示我试图在我的游戏中显示一个从0开始的计时器(理想情况下,我希望它位于屏幕的左上角)

我在这里有计时器的逻辑:

public class Timer {
SpriteBatch batch;
private BitmapFont font;
private float deltaTime = 0;
CharSequence str;

public Timer() {
    font = new BitmapFont();
    batch = new SpriteBatch();
}
public void drawTime() {
    deltaTime += Gdx.graphics.getDeltaTime();
    str = Float.toString(deltaTime);
    font.draw(batch, str, 0, 0);
}

}

我在render()方法中的主类(游戏)中调用此计时器,如下所示:

public void render() {

    player.update();
    platform1.update();
    platform2.update();

    batch.begin();

    Gdx.gl.glClearColor(135/255f, 206/255f, 235/255f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    flag.drawS(batch);
    flag.draw(batch);

    player.draw(batch);

    platform1.draw(batch);
    platform2.draw(batch);

    timer.drawTime();
    batch.end();
}
}

我收到错误“SpriteBatch begin必须在draw之前调用”,所以我尝试在render()中的不同位置移动timer.drawTime()方法,但仍然没有运气。

任何人都知道什么可能是错的?任何帮助都非常感谢:)

1 个答案:

答案 0 :(得分:3)

您不应在Timer对象中创建SpriteBatch()。 SpriteBatch应该创建一次,并由多个元素用于绘制自己。你的Timer draw()方法应该更像这样:

public void drawTime(SpriteBatch batch) {
    deltaTime += Gdx.graphics.getDeltaTime();
    str = Float.toString(deltaTime);
    font.draw(batch, str, 0, 0);
}

您遇到的具体错误是由于您在另一个SpriteBatch对象上调用batch.begin();而在drawTime()中使用的那个。