1

横スクロールゲームを作っています。ゲームのちらつきを防ぐために、グラフィックを滑らかにするためにバックバッファーを使い始めました。ほとんどの問題は修正されましたが、キャラクターを十分長く動かすと、画面がちらつき始めます。ここで問題について読みましたが、この垂直帰線区間を修正する方法については詳しく説明していませんでした。それは実際には「ちらつき」ではなく、新しいものが古いものに描かれているため、より「引き裂かれている」ことを理解しています。この「引き裂き」を回避する方法はありますか?

ありがとう!

4

2 に答える 2

0

コメントで答えたと思いますが、詳細が多すぎます。次のコードは、現在と同じ方法でFPSを制限する必要があったアプレットからほぼ正確に取得されています(keyPressedではなくmouseMoveを使用していた場合を除く)。

private long lastDrawTime = 0;

public void keyPressed(KeyEvent e) {
    if (Calendar.getInstance().getTimeInMillis() - lastDrawTime < 20) return;
    //do whatever needs to be done before redrawing
    draw();
    lastDrawTime = Calendar.getInstance().getTimeInMillis();
}

ここで起こっていることはlastDrawTime、最後の再描画が行われた時間を格納するインスタンス変数があるということです。この変数は、描画が行われる前に発生したkeyPressedイベントの現在の時刻と比較されます。時間の差が許容間隔(この場合は20ミリ秒、つまり1秒あたり50フレーム)よりも小さい場合、関数は戻り、描画や更新は行われません。ただし、十分な時間が経過すると、通常の処理がすべて実行され、現在の時刻が変数に格納されます。

于 2013-03-25T14:41:17.573 に答える
0

可変FPSに依存しない一定のゲーム速度を実装する必要があります。この記事では、その方法について詳しく説明します。

于 2013-03-25T14:42:20.853 に答える