更改为libgdx中的结束游戏屏幕

时间:2014-03-29 20:32:20

标签: java android libgdx

当我的游戏结束时,我试图将屏幕更改为最终游戏屏幕,但不会这样做,只会闪烁当前的游戏屏幕。

我相信它正在清理舞台,但是再次绘制它而不移动到下一个屏幕?好像它仍然循环渲染调用。

您能否建议如何正确切换屏幕。

   @Override
public void render(float v) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    if (state == gamestate.PAUSED) {
        // draw pause screen
    }
    else if (state == gamestate.GAMEOVER || score <= 0) {
        game.setScreen(new endGameScreen(game, score));
        stage.clear();
        return;
    }
    else {
        player.update();

        stage.draw();
        batch.begin();
        mBtn.setPosition((cam.position.x - (Gdx.graphics.getWidth() / 2)) + 10, (cam.position.y - (Gdx.graphics.getHeight() / 2)) + 10);
        pBtn.setPosition((cam.position.x + (Gdx.graphics.getWidth() / 2)) - pauseWidth, (cam.position.y - (Gdx.graphics.getHeight() / 2)) + 10);

        batch.draw(player.getCurrentFrame(), player.getPosition().x, player.getPosition().y);

        cam.position.set(player.getPosition().x, Gdx.graphics.getHeight() / 2, 0);
        batch.setProjectionMatrix(cam.combined);
        cam.update();

        batch.end();

        if(player.getPosition().x >= finishLine.getX()) {
            System.out.println("End Game!!!");
            endGame();
        }
    }
}

好的,所以渲染方法的完整代码现在已经启动了。我将输入处理器的设置移到show()方法。

这个问题可能是因为game.setScreen的方法在render方法中,但是我不确定如何在show方法中实现它,因为当actor到达某个位置时会发生这种情况,所以我无法听取输入触摸或其他任何内容。

结束游戏画面

public class endGameScreen implements Screen {

int score = 0;
String scoreTxt = "";
Stage stage;
SpriteBatch batch;
BitmapFont font;
Game game;

public endGameScreen(Game game, int score){
    this.score = score;
    this.game = game;
}

@Override
public void render(float v) {
    batch.begin();
    font.setColor(1.0f, 1.0f, 1.0f, 1.0f);
    font.draw(batch, scoreTxt, 25, 100);
    batch.end();
}

@Override
public void show() {
    batch = new SpriteBatch();
    font = new BitmapFont(Gdx.files.internal("font.fnt"));
    stage = new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),true);
}

1 个答案:

答案 0 :(得分:1)

这很可能是由于最终游戏画面中缺少屏幕清除造成的。根据我的经验,这会导致未定义的行为,在台式机和某些手机上工作正常,而在其他手机上则会出现疯狂的黄白色浮华。您仍然可以看到上一个屏幕,因为您没有通过清除将其从设备的硬件屏幕中删除。

所以只需像在其他类中一样添加glClear行。