0

現在、libgdx ゲームの単純なロード画面に取り組んでいますが、問題があります。読み込み画面は Android プロジェクトでは問題なく動作しますが、デスクトップ バージョンになると動作しません。現在、ロード画面には「LOADING」->「LOADING」と表示されているはずです。-> "LOADING.." -> "LOADING..." を 1 秒間隔で繰り返します。デスクトップアプリケーションにゲームをロードすると、「LOADING」と表示され(そして狂ったように点滅します)、想定どおりの期間が続きます。リフレッシュレートが高すぎるか何かのようにすべてが点滅している間ずっと、そこにあるはずのないバックグラウンドで幻の期間が表示されます。これが Android バージョンではなくデスクトップ バージョンでいつ発生するか教えてもらえますか? また、ここに私の「LoadingScreen implements Screen」の2つの関数のコードがあります

render(float delta) 関数:

float updateTextTime = 0;
@Override
public void render(float delta) {
    if (updateTextTime >= 1){                       //check to see if it has been a second
        if (periods == 0){
            Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);   //clears the buffer bit 
        }

        textBatch.begin();                          
        font.draw(textBatch,loading.substring(0,7+periods),(Gdx.graphics.getWidth()/2)-(textwidth/2),(Gdx.graphics.getHeight()/2)+(textheight/2));
        if (periods < 3){
            periods += 1;
        }else{
            periods = 0;
        }
        textBatch.end();
        updateTextTime = 0;
    }else{
        updateTextTime += delta;                    //accumlate 
    }
}

および show() 関数:

    @Override
public void show() {
    textBatch = new SpriteBatch();
    font = new BitmapFont(Gdx.files.internal("fonts/ArmyChalk.fnt"), Gdx.files.internal("fonts/ArmyChalk.png"),false);
    if (game.AppTypeMine == ApplicationType.Android){
        font.scale(2.0f);
    }
    textwidth = font.getBounds(loading).width;
    textheight = font.getBounds(loading).height;
}

最終的な解決策: render() 関数を変更しました: public void render(float delta) {

    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    textBatch.begin();                          
    font.draw(textBatch,loading.substring(0,7+periods),(Gdx.graphics.getWidth()/2)-(textwidth/2),(Gdx.graphics.getHeight()/2)+(textheight/2));
    textBatch.end();

    if (updateTextTime >= 0.5){                         //check to see if it has been a second
        if (periods < 3){
            periods += 1;
        }else{
            periods = 0;
        }
        updateTextTime = 0;
    }else{
        updateTextTime += delta;                    //accumlate 
    }
}
4

1 に答える 1