グラフィックスを扱う |
前のページの例に見られたフラッシングは、動画 (と場合によっては動画ではないグ ラフィックスでも) で起こりやすい問題の 1 つである。 フラッシング作用は次の 2 つのことから引き起こされる。
- デフォルトでは、動画の背景は、paint() メソッドが呼び出され る前にクリアされる (動画の領域全体が背景色で描き直される)。
- 前の例の paint() メソッドでの演算は複雑であり、動画の各フ レームを計算し描画するための時間が、ビデオ画面のリフレッシュレートより長くか かっている。 したがって、フレームの初めの一部はビデオの 1 回のリフレッシュパスで描か れ、フレームの残りの部分は次回のパス (またはそれ以降のパス) で描かれる。 この結果、フレームの初めの一部は (通常は) スムーズに動画表示されるが、2 番目の部分は 2 番目のパスまでブランクなため、初めと 2 番目の間の途切れが見え てしまうのである。
フラッシングを排除するには、update() メソッドを上書きする方法と、ダブルバッファリングを実装する方法がある。
update() メソッドを上書きする
フラッシングを排除するには、ダブルバッファリングを使用するかどうかにかかわら ず、update() メソッドを上書きしなければならない。 これが必要なのは、Component の背景全体が Component の描画のたびにクリアされるのを防ぐにはこの方法しかないからである。
ダブルバッファリングを実装する
ダブルバッファリング には、表示されないグラフィックスバッファで複数 のグラフィックス操作を実行することと、その後、結果のイメージを画面上に 表示することが含まれる。 ダブルバッファリングは、完成前のイメージが画面に描かれないようにするものである。
グラフィックスを扱う |