簡體   English   中英

更改為libgdx中的結束游戲屏幕

[英]Changing to end game screen in 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();
        }
    }
}

好的,現在可以使用render方法的完整代碼了。 我將輸入處理器的設置移至show()方法。

這個問題可能是因為game.setScreen的方法位於render方法中,但是我不確定如何在show方法中實現此方法,因為當演員到達某個位置時會發生這種情況,所以我聽不到進行輸入觸摸或其他操作。

結束游戲畫面

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);
}

這很可能是由於最終游戲屏幕缺少屏幕清除功能所致。 根據我的經驗,這會導致行為不確定,可以在台式機和某些手機上正常工作,而在其他手機上卻會發黃發白。 您仍會看到前一個屏幕,因為您沒有通過清除將其從設備的硬件屏幕中刪除。

因此,只需像在其他類中一樣添加glClear行即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM