Java のアニメーション手法


Java でのアニメーションの方法とその高速化手法を説明します。

概要 / デモについて / 戻る / トップページ


概要

アニメーションの方法とその高速化手法を説明します。 ImageFilter クラスライブラリ の応用例にもなっています。
 
ImageFilter のパラメーター値を少しずつ変化させて作った画像を 連続させて表示することで面白い効果が得られます。 例えば、net.antun.lib.awt.image.WaveImageFilter を使うと画像が波打っているアニメーションを させる事が出来ます。 (方法 1)
 
ところが、この ImageFilter クラスライブラリは パラメーターはすべてコンストラクタ中に指定するようになっているので アニメーション用画像 1 コマごとに ImageFilter オブジェクトを生成しなければならず、 効率が悪くなります。 そこで、パラメーター設定用のメソッドを追加します。 (方法 2)
 
その方法でもリアルタイムに処理すると処理速度の遅さから アニメーションがぎこちなくなってしまいます。 その対処方法として前もって アニメーション用画像の全コマを作っておいて表示する方法が 思い付きます。 ただし、メモリ消費の激しさや前処理の時間がかかる欠点があります。 (方法 3)
 
そこで Java 1.1 から使用可能になった java.awt.image.MemoryImageSource クラスのアニメーション機能を利用すると かなりそれらの問題を解決できるようになります。 (方法 4)

デモについて

方法 1 〜方法 4 の解説のページには それぞれの方法で net.antun.lib.awt.image.WaveImageFilter を実際にアニメーションさせたデモがあります。 処理速度の違いを比べてみてください。
 
そのソースコードを公開しますが、 ライブラリーではないのでパッケージ名は net.antun では始めていませんので、 ご注意ください。 ソースコードはご自由に使って頂いて結構です。
 
animation.AnimationDemo
デモ本体のアプレットです。
 
animation.AnimationCanvas
アニメーション表示をする Canvas で ダブルバッファリングをしています。
 
animation.Animation
各アニメーションクラスのスーパークラスです。
 
animation/image/baseImage.jpg
デモに使われている画像です。

戻る