チラツキをなくせ! -- その3 --

ダブルバッファリング

------------------------------------

ごめんなさい。
Java対応ブラウザだとここにアプレットが表示されます。



Source(MovingBall.java)
------------------------------------

このアプレットではクリッピングをすればチラツキはほとんど気にならないのではないかと思います。

でもまあ乗りかかった船なので、チラツキをなくす究極の方法「ダブルバッファリング」も試してみましょう。

実際は、ダブルバッファリングは普通の方法と比べてメモリを余分に必要とし、描画速度も落ちるので、どうしても必要な場合だけ用いることにした方が良いとのことです。

------------------------------------

「ダブルバッファリング」とはなにかというと、フフフフフ・・・・・・。実は私もよう知らんのですよ。

まあ知らないなりに説明を試みると「ダブルバッファリング」というのは

黒板に何か書いた後、全部消してまた書くと、書き直したことがはっきり解ってしまう。

黒板の裏側にもう一枚黒板を用意し、予めその黒板に書き直したものを書いておいて、エイヤで表の黒板と入れ換えると、書き直したことがはっきりとは解らない。

というものです。

私の理解はこの程度ですので、詳しくは市販の書籍をお読みくださるか、メーリングリストJava Houseのホームページから関連事項を探してみて下さい。

------------------------------------

init()メソッドで

if (off_g == null) {
    off_im = createImage(width, height);
    off_g = off_im.getGraphics();
}

として、裏側の黒板を作ります。

そしてpaint()メソッドで

off_g.setColor(getBackground());
off_g.fillRect(0, 0, width, height);
off_g.setColor(getForeground());
off_g.fillOval(x, y, r, r);

のように裏側の黒板に書き直したものを書いておき、最後に

g.drawImage(off_im, 0, 0, this);

で表の黒板と入れ換えます。

------------------------------------

前の項目へ次の項目へ

「リメイキング・オブ・MovingBall」のページへ