|
|
 |
課題
Java
簡単なアニメーション(+メディアトラッカー) |
|
1.プログラムの仕様変更
今回は前に作成した「人が歩く姿の簡単なアニメーション」の仕様変更版です。
まずは前回の課題を忘れた方はこちらを参照して下さい。
人が歩く姿のイメージ画像は15枚ありましたが、遅いコンピュータで実行した場合では、全ての画像がロードされないと、最初の描画部分で駒抜け状態になる可能性があります。
このような状態を防ぐためには、使用する画像のロード状況を監視し、全ての画像がロードされたら描画を行うといった制御をしなければなりません。
描画部分の drawImage()メソッドでは、引数でイメージオブザーバ(ImageObserver)を指定し、ロードを監視させることが出来ますが、
今回は別の方法のメディアトラッカー(MediaTracker)を利用してみます。
変更点は次のようになります。
- 人が歩く姿のイメージ画像を全てメディアトラッカー(MediaTracker)に監視させる。
- 描画するときに全てのイメージ画像がロードされていない場合は、「ただ今ロード中です!」と表示する。
|
2.メディアトラッカーの説明
通常の画像表示は getImage()メソッドでイメージのロード指示を行い、drawImage()メソッドで実際の画像の描画を行います。
ロードを指示するだけですから、ロードの完了とは無関係にすぐに次の文へ行ってしまいます。
そこで大きな画像ではロード未完了のまま drawImage()メソッドを実行し、ロードされるまで再描画(paint()メソッド)を繰り返すことになります。
インターネットのブラウザでの画像表示で、ロードが間に合わないために「X」印を表示後に、後から実表示されてくるのに似ています。
メディアトラッカーは画像毎に監視を依頼されたら、その画像のロード完了を通知してくれたり、ロード完了するまで待ってくれたりしてくれます。
「ただ今ロード中です!」と表示するには、監視を依頼したメディアトラッカーに、ロード完了したか通知してもらえば表示することが出来ます。
利用方法は次のような流れになります。
- メディアトラッカー(MediaTracker)の生成(mt)
- イメージ画像のロード指示(getImage)
- メディアトラッカーにイメージ画像の登録(mt.addImage)
- イメージ画像のロードチェック(mt.checkID,mt.checkAll)
又はチェックなしでイメージ画像のロード完了を待つ(mt.waitForID,mt.waitForAll)
- 完了ならば(true)イメージ画像の描画
- 完了でなければ(false)「ただ今ロード中です!」を表示(drawString)
|
|
| |
 |
|