0

私はゲームを作成しようとしています。多くの方法を使用しましたが、悪い結果が得られました。

for (Sprite sprite : sprites) {
    sprite.onDraw(canvas);             
}

このコードを使用して、スプライト イメージを作成します。私が望むのは、同じコードを 8 秒ごとに何度も実行することです。私が使用した:

for (int me = 0; me < 10; me++){
    for (Sprite sprite : sprites) {
        sprite.onDraw(canvas);             
    }
    Thread.sleep(8000);
}

これにより、forループの実行が遅くなると思いました。しかし、何が起こったのかというと、私のスプライトも非常にゆっくりと動き始めました.2秒ごとに位置が変わります..私は2000ミリ秒の睡眠を取っているので:(

よろしくお願いします。

4

1 に答える 1

0

あなたがしたいのは、高速なスプライト描画ですが、1 秒あたりのフレーム数は一定です。:) 問題を解決するには、OS のリアルタイム クロックを使用して、正確な時間を待ちます。

何かのようなもの:

while(1)
{
    t1 = now();
    draw_screen();
    game_logic();
    get_user_input();
    t2 = now();

    sleep(); // here wait for ((1/fps)-(t2-t1)) sec.
}

これにより、ゲームが特定の fps レートで強制的に実行されます。明らかに、このアプローチは、描画ルーチンが実際の 1/fps 時間ウィンドウよりも長くかかる場合には対応していません。ある種のフレームドロップ技術を実装する必要があります

于 2013-10-11T13:06:40.347 に答える