MediaTracker クラス
- [内容]
- いくつかのメディアオブジェクトの状態を監視するユーティリティクラスです.メディアオブジェクトには,イメージとオーディオクリップが含まれます.ただし,現在のところイメージだけがサポートされています.
- [コンストラクタ]
- public MediaTracker(Component comp)
- 指定されたコンポーネントのイメージを監視するメディアトラッカーを作成
- [主なメソッド]
- public void addImage(Image image, int id)
- public void addImage(Image image, int id, int w, int h)
- このメディアトラッカーによって監視されているリストに,スケーリングしないで,または,スケーリングしてイメージを追加する
- public boolean checkAll()
- public boolean checkAll(boolean load)
- public boolean checkID(int id)
- public boolean checkID(int id, boolean load)
- このメディアトラッカーによって監視されているすべてのイメージ,または,指定された識別子でタグ付けされたすべてのイメージが,ロードを完了したかどうかを判定する.load フラグの値が true の場合,まだロード中でないイメージのロードを開始する.
- public void waitForAll() throws InterruptedException
- public boolean waitForAll(long ms) throws InterruptedException
- public void waitForID(int id) throws InterruptedException
- public boolean waitForID(int id, long ms) throws InterruptedException
- このメディアトラッカーによって監視されているすべてのイメージ,または,指定された識別子を持つすべてのイメージのロードを開始する.指定されたすべてのイメージのロードが完了するまで待機する.ms を指定すると,指定されたすべてのイメージのロードが完了するまでか,または,ms 引数によりミリ秒単位で指定された時間が経過するまで待機する.
- [使用例]
- プログラム例は,ファイルから MediaTracker を利用してイメージを読み込んだ後,指定したピクセルの色を取得し,その色で長方形を描くと共に,色を修正して読み込んだ図形全体を描いた例です.ここをクリックするとアプレット版が表示されます(プログラム).

- 簡単なアニメーションの場合は問題になりませんが,一度に描く量が多くなったり,描画速度を速くすると画面のちらつきが発生するようになります.下の図では,背景の上に小さな円をランダムに動かしています.通常の方法(プログラム例1)で描くとかなり画面がちらつきますが,バッファリングを利用する(プログラム例2)と,ちらつきはほとんど無くなります.なお,プログラム例2では,MediaTracker を利用してイメージを読み込んでいます.アプレット版に関しては,以下に示す箇所をクリックしてください.
- バッファ無し(プログラム)
- バッファ有り(プログラム)

- 上の例より,もう少し複雑な例を示します.プログラム例は,Java によってホームページにおけるトップページを作成した例です.最初に表示された状態では,すべての図形が停止していますが,徐々に各図形が動き出します.まず,上部にある文字の部分をクリックすると,
- 加速: 動きが少しずつ速くなります
- 加速: 動きが少しずつ遅くなります
- 総合情報学部: 総合情報学部への入り口に移動します
- といった動作を行います.
- 図形部分をクリックすると,動きが止まり,対応する説明が表示されます.説明を閉じると再び動き出し,説明を閉じずに文字や図形以外の部分をクリックすると説明に対応する図形が削除された後,他の図形は再び動き出します.また,文字や図形以外の部分をクリックすると,動きが停止します.停止した状態で,文字や図形以外の部分をクリックすると,再び動き出します.最初に設定されている速度では,各図形をクリックすることは難しいかと思いますので,減速又は停止した後にクリックしてみてください.
- [参照]
- Toolkit, PixelGrabber, MemoryImageSource, Image