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()
方法中的所有内容有关,但我不知道如何将其转换为该方法。
答案 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();
}