精灵出现一帧然后消失{LibGDX}

时间:2014-02-20 16:44:59

标签: android libgdx sprite

public void chooseLane() {
    lane = MathUtils.random(1, 3);
    System.out.println(lane);
    spawnCar();
}

public void spawnCar() {
    if(lane == 1){
        batch.begin();
        batch.draw(carsb, carP1X, carP1Y);
        batch.end();
    }
    if(lane == 2){
        batch.begin();
        batch.draw(carsb, carP2X, carP2Y);
        batch.end();
    }
    if(lane == 3){
        batch.begin();
        batch.draw(carsb, carP3X, carP3Y);
        batch.end();
    }

精灵出现几乎一帧然后消失。我猜这与render()方法中的所有内容有关,但我不知道如何将其转换为该方法。

1 个答案:

答案 0 :(得分:2)

我假设您使用chooseLane()create()show()方法拨打resume()。这意味着您将产生一辆汽车,为新车选择一条车道,然后在屏幕上绘制一次。

之后,LibGDX将进入无限循环,并将继续调用您的render()方法。可能你跟着一些教程并在你的渲染方法中得到了类似Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);的东西。然后,这将清除您的屏幕并移除您的绘制的汽车。之后不会再画画了。

您应该更改您的代码,如下所示:

public void chooseLane() {
    lane = MathUtils.random(1, 3);
    System.out.println(lane);
}

public void drawCar() {
    batch.begin();
    if(lane == 1){
        batch.draw(carsb, carP1X, carP1Y);
    }
    if(lane == 2){
        batch.draw(carsb, carP2X, carP2Y);
    }
    if(lane == 3){
        batch.draw(carsb, carP3X, carP3Y);
    }
    batch.end();
}

public void create()/show()/resume() { // choose whatever fits your case here
    chooseLane();
}

public void render(float deltaTime) {
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    drawCar();
}