JavaTM Platform
Standard Ed. 6

java.awt
クラス MediaTracker

java.lang.Object
  上位を拡張 java.awt.MediaTracker
すべての実装されたインタフェース:
Serializable

public class MediaTracker
extends Object
implements Serializable

MediaTracker クラスは、いくつかのメディアオブジェクトの状態を監視するユーティリティークラスです。メディアオブジェクトには、イメージとオーディオクリップが含まれます。 ただし、現在のところイメージだけがサポートされています。

メディアトラッカーを使用するには、監視するイメージごとに MediaTracker のインスタンスを生成してから addImage を呼び出します。また、それぞれのイメージには、固有の識別子を割り当てることができます。これらの識別子は、イメージを取り出す優先順位を制御します。また、個別に待機できるイメージのサブセットを識別するためにも使用されます。低位の ID 番号を持つイメージは、高位の ID 番号を持つイメージより優先的にロードされます。

動画イメージの監視は、動画イメージのロードおよび描画のマルチパートの特性のため、常に有効であるとは限りませんが、サポートされています。MediaTracker は最初のフレームが完全にロードされたときに、動画イメージを完全にロードされたものとして扱います。その時点で MediaTracker はイメージが完全にロードされたことを待機するイメージに伝えます。最初のイメージのロードが完了したときに、ImageObserver がイメージを監視していない場合、イメージ自体がフラッシュし、リソースが節約されます (Image.flush() を参照)。

次にMediaTracker を使用した例を示します。


 import java.applet.Applet;
 import java.awt.Color;
 import java.awt.Image;
 import java.awt.Graphics;
 import java.awt.MediaTracker;

 public class ImageBlaster extends Applet implements Runnable {
        MediaTracker tracker;
        Image bg;
        Image anim[] = new Image[5];
        int index;
        Thread animator;

        // Get the images for the background (id == 0) 
        // and the animation frames (id == 1) 
        // and add them to the MediaTracker
        public void init() {
            tracker = new MediaTracker(this);
            bg = getImage(getDocumentBase(), 
                  "images/background.gif");
            tracker.addImage(bg, 0);
            for (int i = 0; i < 5; i++) {
                anim[i] = getImage(getDocumentBase(), 
                      "images/anim"+i+".gif");
                tracker.addImage(anim[i], 1);
            }
        }

        // Start the animation thread.
        public void start() {
            animator = new Thread(this);
            animator.start();
        }

        // Stop the animation thread.
        public void stop() {
            animator = null;
        }

        // Run the animation thread.
        // First wait for the background image to fully load 
        // and paint.  Then wait for all of the animation 
        // frames to finish loading. Finally, loop and 
        // increment the animation frame index.
        public void run() {
            try {
                tracker.waitForID(0);
                tracker.waitForID(1);
            } catch (InterruptedException e) {
                return;
            }
            Thread me = Thread.currentThread();
            while (animator == me) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    break;
                }
                synchronized (this) {
                    index++;
                    if (index >= anim.length) {
                        index = 0;
                    }
                }
                repaint();
            }
        }

        // The background image fills the frame so we 
        // don't need to clear the applet on repaints. 
        // Just call the paint method.
        public void update(Graphics g) {
            paint(g);
        }

        // Paint a large red rectangle if there are any errors 
        // loading the images.  Otherwise always paint the 
        // background so that it appears incrementally as it 
        // is loading.  Finally, only paint the current animation 
        // frame if all of the frames (id == 1) are done loading,
        // so that we don't get partial animations.
        public void paint(Graphics g) {
            if ((tracker.statusAll(false) & MediaTracker.ERRORED) != 0) {
                g.setColor(Color.red);
                g.fillRect(0, 0, size().width, size().height);
                return;
            }
            g.drawImage(bg, 0, 0, this);
            if (tracker.statusID(1, false) == MediaTracker.COMPLETE) {
                g.drawImage(anim[index], 10, 10, this);
            }
        }
 }
 

導入されたバージョン:
JDK1.0
関連項目:
直列化された形式

フィールドの概要
static int ABORTED
          メディアのダウンロードが打ち切られたことを示すフラグです。
static int COMPLETE
          メディアのダウンロードが正常に終了したことを示すフラグです。
static int ERRORED
          メディアのダウンロードでエラーがあったことを示すフラグです。
static int LOADING
          メディアがロードされつつあることを示すフラグです。
 
コンストラクタの概要
MediaTracker(Component comp)
          指定されたコンポーネントのイメージを監視するメディアトラッカーを作成します。
 
メソッドの概要
 void addImage(Image image, int id)
          このメディアトラッカーによって監視されているリストにイメージを追加します。
 void addImage(Image image, int id, int w, int h)
          このメディアトラッカーによって監視されているリストに、スケーリングされたイメージを追加します。
 boolean checkAll()
          このメディアトラッカーによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。
 boolean checkAll(boolean load)
          このメディアトラッカーによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。
 boolean checkID(int id)
          このメディアトラッカーによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。
 boolean checkID(int id, boolean load)
          このメディアトラッカーによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。
 Object[] getErrorsAny()
          エラーがあったすべてのメディアのリストを返します。
 Object[] getErrorsID(int id)
          指定された ID を持つメディアのうちエラーになったもののリストを返します。
 boolean isErrorAny()
          すべてのイメージのエラー状態を調べます。
 boolean isErrorID(int id)
          このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのエラー状態を調べます。
 void removeImage(Image image)
          指定されたイメージをこのメディアトラッカーから削除します。
 void removeImage(Image image, int id)
          このメディアトラッカーの指定された監視 ID から指定されたイメージを削除します。
 void removeImage(Image image, int id, int width, int height)
          指定された幅、高さ、ID を持つ指定されたイメージをこのメディアトラッカーから削除します。
 int statusAll(boolean load)
          このメディアトラッカーによって監視されるすべてのメディアの状態のビット単位の論理和を計算して返します。
 int statusID(int id, boolean load)
          このメディアトラッカーによって監視される、指定された識別子を持つすべてのメディアの状態のビット単位の論理和を計算して返します。
 void waitForAll()
          このメディアトラッカーによって監視されるすべてのイメージのロードを開始します。
 boolean waitForAll(long ms)
          このメディアトラッカーによって監視されるすべてのイメージのロードを開始します。
 void waitForID(int id)
          このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
 boolean waitForID(int id, long ms)
          このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

LOADING

public static final int LOADING
メディアがロードされつつあることを示すフラグです。

関連項目:
statusAll(boolean), statusID(int, boolean), 定数フィールド値

ABORTED

public static final int ABORTED
メディアのダウンロードが打ち切られたことを示すフラグです。

関連項目:
statusAll(boolean), statusID(int, boolean), 定数フィールド値

ERRORED

public static final int ERRORED
メディアのダウンロードでエラーがあったことを示すフラグです。

関連項目:
statusAll(boolean), statusID(int, boolean), 定数フィールド値

COMPLETE

public static final int COMPLETE
メディアのダウンロードが正常に終了したことを示すフラグです。

関連項目:
statusAll(boolean), statusID(int, boolean), 定数フィールド値
コンストラクタの詳細

MediaTracker

public MediaTracker(Component comp)
指定されたコンポーネントのイメージを監視するメディアトラッカーを作成します。

パラメータ:
comp - イメージが最終的に描画されるコンポーネント
メソッドの詳細

addImage

public void addImage(Image image,
                     int id)
このメディアトラッカーによって監視されているリストにイメージを追加します。そのイメージは、最終的にそのデフォルトの (スケーリングされていない) サイズで表されます。

パラメータ:
image - 監視されるイメージ
id - このイメージを監視するために使用する識別子

addImage

public void addImage(Image image,
                     int id,
                     int w,
                     int h)
このメディアトラッカーによって監視されているリストに、スケーリングされたイメージを追加します。そのイメージは、最終的に指定された幅と高さで表されます。

パラメータ:
image - 監視されるイメージ
id - このイメージを監視するために使用する識別子
w - イメージが描画される領域の幅
h - イメージが描画される領域の高さ

checkAll

public boolean checkAll()
このメディアトラッカーによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。

このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny または isErrorID メソッドを使うと、エラーを調べられます。

戻り値:
すべてのイメージのロードが完了した場合や、打ち切られた場合、エラーがあった場合は true、そうでない場合は false
関連項目:
checkAll(boolean), checkID(int), isErrorAny(), isErrorID(int)

checkAll

public boolean checkAll(boolean load)
このメディアトラッカーによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。

load フラグの値が true の場合、このメソッドは、まだロード中でないイメージのロードを開始します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAnyisErrorID メソッドを使うと、エラーを調べられます。

パラメータ:
load - true の場合、まだロードが開始されていないイメージがあればロードを開始する
戻り値:
すべてのイメージのロードが完了した場合や、打ち切られた場合、エラーがあった場合は true、そうでない場合は false
関連項目:
checkID(int), checkAll(), isErrorAny(), isErrorID(int)

isErrorAny

public boolean isErrorAny()
すべてのイメージのエラー状態を調べます。

戻り値:
このメディアトラッカーによって監視されるイメージのいずれかでロード中にエラーがあった場合は true、そうでない場合は false
関連項目:
isErrorID(int), getErrorsAny()

getErrorsAny

public Object[] getErrorsAny()
エラーがあったすべてのメディアのリストを返します。

戻り値:
このメディアトラッカーによって監視されるメディアオブジェクトのうちで、エラーがあったメディアオブジェクトの配列。エラーのあるオブジェクトがない場合は null
関連項目:
isErrorAny(), getErrorsID(int)

waitForAll

public void waitForAll()
                throws InterruptedException
このメディアトラッカーによって監視されるすべてのイメージのロードを開始します。このメソッドは、監視中のすべてのイメージのロードが完了するまで待機します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny または isErrorID メソッドを使うと、エラーを調べられます。

例外:
InterruptedException - 何らかのスレッドがこのスレッドに割り込んだ場合
関連項目:
waitForID(int), waitForAll(long), isErrorAny(), isErrorID(int)

waitForAll

public boolean waitForAll(long ms)
                   throws InterruptedException
このメディアトラッカーによって監視されるすべてのイメージのロードを開始します。このメソッドは、監視中のすべてのイメージのロードが完了するまでか、ms 引数によりミリ秒単位で指定された時間が経過するまで待機します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny または isErrorID メソッドを使うと、エラーを調べられます。

パラメータ:
ms - ロードが完了するまで待機する時間 (ミリ秒)
戻り値:
すべてのイメージのロードが完了した場合は true、そうでない場合は false
例外:
InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合
関連項目:
waitForID(int), waitForAll(long), isErrorAny(), isErrorID(int)

statusAll

public int statusAll(boolean load)
このメディアトラッカーによって監視されるすべてのメディアの状態のビット単位の論理和を計算して返します。

MediaTracker クラスで定義されるフラグには、LOADINGABORTEDERRORED、および COMPLETE があります。ロードを開始していないイメージの状態はゼロで表されます。

load の値が true の場合、このメソッドはまだロードが開始されていないイメージのロードを開始します。

パラメータ:
load - true の場合、まだロードが開始されていないイメージがあればロードを開始する
戻り値:
監視中のすべてのメディアの状態のビット単位の論理和
関連項目:
statusID(int, boolean), LOADING, ABORTED, ERRORED, COMPLETE

checkID

public boolean checkID(int id)
このメディアトラッカーによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。

このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny または isErrorID メソッドを使うと、エラーを調べられます。

パラメータ:
id - 調べる対象となるイメージの識別子
戻り値:
すべてのイメージのロードが完了した場合や、打ち切られた場合、エラーがあった場合は true、そうでない場合は false
関連項目:
checkID(int, boolean), checkAll(), isErrorAny(), isErrorID(int)

checkID

public boolean checkID(int id,
                       boolean load)
このメディアトラッカーによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。

load フラグの値が true の場合、このメソッドは、まだロード中でないイメージのロードを開始します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny または isErrorID メソッドを使うと、エラーを調べられます。

パラメータ:
id - 調べる対象となるイメージの識別子
load - true の場合、まだロードが開始されていないイメージがあればロードを開始する
戻り値:
すべてのイメージのロードが完了した場合や、打ち切られた場合、エラーがあった場合は true、そうでない場合は false
関連項目:
checkID(int, boolean), checkAll(), isErrorAny(), isErrorID(int)

isErrorID

public boolean isErrorID(int id)
このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのエラー状態を調べます。

パラメータ:
id - 調べる対象となるイメージの識別子
戻り値:
指定された識別子を持つイメージのいずれかでロード中にエラーがあった場合は true、そうでない場合は false
関連項目:
isErrorAny(), getErrorsID(int)

getErrorsID

public Object[] getErrorsID(int id)
指定された ID を持つメディアのうちエラーになったもののリストを返します。

パラメータ:
id - 調べる対象となるイメージの識別子
戻り値:
指定された識別子を持つこのメディアトラッカーによって監視されるメディアオブジェクトのうちで、エラーがあったメディアオブジェクトの配列。エラーのあるオブジェクトがない場合は null
関連項目:
isErrorID(int), isErrorAny(), getErrorsAny()

waitForID

public void waitForID(int id)
               throws InterruptedException
このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。このメソッドは、指定された識別子を持つすべてのイメージがロードを完了するまで待機します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAnyisErrorID メソッドを使うと、エラーを調べられます。

パラメータ:
id - 調べる対象となるイメージの識別子
例外:
InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合
関連項目:
waitForAll(), isErrorAny(), isErrorID(int)

waitForID

public boolean waitForID(int id,
                         long ms)
                  throws InterruptedException
このメディアトラッカーによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。このメソッドは、指定された識別子を持つすべてのイメージのロードが完了するまでか、ms 引数によりミリ秒単位で指定した時間が経過するまで待機します。

イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。statusIDisErrorID、および isErrorAny メソッドを使うと、エラーを調べられます。

パラメータ:
id - 調べる対象となるイメージの識別子
ms - ロードの完了を待機する時間 (ミリ秒)
例外:
InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合
関連項目:
waitForAll(), waitForID(int), statusID(int, boolean), isErrorAny(), isErrorID(int)

statusID

public int statusID(int id,
                    boolean load)
このメディアトラッカーによって監視される、指定された識別子を持つすべてのメディアの状態のビット単位の論理和を計算して返します。

MediaTracker クラスで定義されるフラグには、LOADINGABORTEDERRORED、および COMPLETE があります。ロードを開始していないイメージの状態はゼロで表されます。

load の値が true の場合、このメソッドはまだロードが開始されていないイメージのロードを開始します。

パラメータ:
id - 調べる対象となるイメージの識別子
load - true の場合、まだロードが開始されていないイメージがあればロードを開始する
戻り値:
指定された識別子を持つ監視中のすべてのメディアの状態のビット単位の論理和
関連項目:
statusAll(boolean), LOADING, ABORTED, ERRORED, COMPLETE

removeImage

public void removeImage(Image image)
指定されたイメージをこのメディアトラッカーから削除します。指定されたイメージのすべてのインスタンスは、スケールまたは ID とは無関係に削除されます。

パラメータ:
image - 削除されるイメージ
導入されたバージョン:
JDK1.1
関連項目:
removeImage(java.awt.Image, int), removeImage(java.awt.Image, int, int, int)

removeImage

public void removeImage(Image image,
                        int id)
このメディアトラッカーの指定された監視 ID から指定されたイメージを削除します。指定された ID のもとで監視中の Image のすべてのインスタンスは、スケールとは無関係に削除されます。

パラメータ:
image - 削除されるイメージ
id - イメージの削除元の監視 ID
導入されたバージョン:
JDK1.1
関連項目:
removeImage(java.awt.Image), removeImage(java.awt.Image, int, int, int)

removeImage

public void removeImage(Image image,
                        int id,
                        int width,
                        int height)
指定された幅、高さ、ID を持つ指定されたイメージをこのメディアトラッカーから削除します。指定されたインスタンス (重複を持つもの) だけが削除されます。

パラメータ:
image - 削除されるイメージ
id - イメージの削除元の監視 ID
width - 削除する幅 (スケーリングされていない場合は -1)
height - 削除する高さ (スケーリングされていない場合は -1)
導入されたバージョン:
JDK1.1
関連項目:
removeImage(java.awt.Image), removeImage(java.awt.Image, int)

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。