- すべての実装されたインタフェース:
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); } } }
- 導入されたバージョン:
- 1.0
- 関連項目:
- 直列化された形式
-
フィールドのサマリー
フィールド -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void
このメディア・トラッカによって監視されているリストにイメージを追加します。void
このメディア・トラッカによって監視されているリストに、スケーリングされたイメージを追加します。boolean
checkAll()
このメディア・トラッカによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。boolean
checkAll(boolean load)
このメディア・トラッカによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。boolean
checkID(int id)
このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。boolean
checkID(int id, boolean load)
このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。Object[]
エラーがあったすべてのメディアのリストを返します。Object[]
getErrorsID(int id)
指定されたIDを持つメディアのうちエラーになったもののリストを返します。boolean
すべてのイメージのエラー状態を調べます。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)
このメディア・トラッカによって追跡されるすべてのメディアのステータスのビット単位の論理ORを計算して返します。int
statusID(int id, boolean load)
このメディア・トラッカによって追跡される指定された識別子を持つすべてのメディアのステータスのビット単位の論理ORを計算して返します。void
このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。boolean
waitForAll(long ms)
このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。void
waitForID(int id)
このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。boolean
waitForID(int id, long ms)
このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
-
フィールド詳細
-
LOADING
public static final int LOADINGメディアがロードされつつあることを示すフラグです。 -
ABORTED
public static final int ABORTEDメディアのダウンロードが打ち切られたことを示すフラグです。 -
ERRORED
public static final int ERROREDメディアのダウンロードでエラーがあったことを示すフラグです。 -
COMPLETE
public static final int COMPLETEメディアのダウンロードが正常に終了したことを示すフラグです。
-
-
コンストラクタの詳細
-
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
である場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、
isErrorAny
およびisErrorID
メソッドを使用します。- パラメータ:
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)このメディア・トラッカによって追跡されるすべてのメディアのステータスのビット単位の論理ORを計算して返します。MediaTracker
クラスによって定義される可能性のあるフラグは、LOADING
、ABORTED
、ERRORED
、および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このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。 このメソッドは、指定された識別子を持つすべてのイメージがロードを完了するまで待機します。イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、
isErrorAny
およびisErrorID
メソッドを使用します。- パラメータ:
id
- チェックするイメージの識別子- 例外:
InterruptedException
- スレッドがこのスレッドに割り込んだ場合。- 関連項目:
waitForAll()
,isErrorAny()
,isErrorID(int)
-
waitForID
public boolean waitForID(int id, long ms) throws InterruptedExceptionこのメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。 このメソッドは、指定された識別子を持つすべてのイメージのロードが完了するまでか、ms
引数によりミリ秒単位で指定した時間が経過するまで待機します。イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、
statusID
、isErrorID
、およびisErrorAny
メソッドを使用します。- パラメータ:
id
- チェックするイメージの識別子ms
- ロードの完了を待機する時間(ミリ秒)- 戻り値:
- ロードが時間内に完了した場合は
true
;そうでなければfalse
- 例外:
InterruptedException
- スレッドがこのスレッドに割り込んだ場合。- 関連項目:
waitForAll()
,waitForID(int)
,statusID(int, boolean)
,isErrorAny()
,isErrorID(int)
-
statusID
public int statusID(int id, boolean load)このメディア・トラッカによって追跡される指定された識別子を持つすべてのメディアのステータスのビット単位の論理ORを計算して返します。MediaTracker
クラスによって定義される可能性のあるフラグは、LOADING
、ABORTED
、ERRORED
、およびCOMPLETE
です。 ロードを開始していないイメージの状態はゼロで表されます。load
の値がtrue
である場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。- パラメータ:
id
- チェックするイメージの識別子load
-true
の場合は、まだロードされていないすべてのイメージのロードを開始する- 戻り値:
- 指定された識別子を持つ監視中のすべてのメディアの状態のビット単位の論理OR
- 関連項目:
statusAll(boolean)
,LOADING
,ABORTED
,ERRORED
,COMPLETE
-
removeImage
public void removeImage(Image image)指定されたイメージをこのメディア・トラッカから削除します。 指定されたイメージのすべてのインスタンスは、スケールまたはIDとは無関係に削除されます。- パラメータ:
image
- 削除されるイメージ- 導入されたバージョン:
- 1.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- 導入されたバージョン:
- 1.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
- イメージの削除元の監視IDwidth
- 削除する幅(スケーリングされていない場合は -1)height
- 削除する高さ(スケーリングされていない場合は -1)- 導入されたバージョン:
- 1.1
- 関連項目:
removeImage(java.awt.Image)
,removeImage(java.awt.Image, int)
-