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); } } }
| 修飾子と型 | フィールドと説明 |
|---|---|
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)
このメディア・トラッカによって追跡されるすべてのメディアのステータスのビット単位の論理ORを計算して返します。
|
int |
statusID(int id, boolean load)
このメディア・トラッカによって追跡される指定された識別子を持つすべてのメディアのステータスのビット単位の論理ORを計算して返します。
|
void |
waitForAll()
このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。
|
boolean |
waitForAll(long ms)
このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。
|
void |
waitForID(int id)
このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
|
boolean |
waitForID(int id, long ms)
このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
|
public static final int LOADING
public static final int ABORTED
public static final int ERRORED
public static final int COMPLETE
public MediaTracker(Component comp)
comp - イメージが最終的に描画されるコンポーネントpublic void addImage(Image image, int id)
image - 追跡されるイメージid - このイメージを監視するために使用する識別子public void addImage(Image image, int id, int w, int h)
image - 追跡されるイメージid - このイメージを監視するために使用する識別子w - イメージが描画される領域の幅h - イメージが描画される領域の高さpublic boolean checkAll()
このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。
true、それ以外の場合はfalsecheckAll(boolean), checkID(int), isErrorAny(), isErrorID(int)public boolean checkAll(boolean load)
loadフラグの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyおよびisErrorIDメソッドを使用します。
load - trueの場合は、まだロードされていないすべてのイメージのロードを開始するtrue、それ以外の場合はfalsecheckID(int), checkAll(), isErrorAny(), isErrorID(int)public boolean isErrorAny()
true、そうでない場合はfalseisErrorID(int), getErrorsAny()public Object[] getErrorsAny()
nullisErrorAny(), getErrorsID(int)public void waitForAll()
throws InterruptedException
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。
InterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合waitForID(int), waitForAll(long), isErrorAny(), isErrorID(int)public boolean waitForAll(long ms)
throws InterruptedException
ms引数によりミリ秒単位で指定された時間が経過するまで待機します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。
ms - ロードが完了するまで待機する時間(ミリ秒)true、そうでない場合はfalseInterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合。waitForID(int), waitForAll(long), isErrorAny(), isErrorID(int)public int statusAll(boolean load)
MediaTrackerクラスによって定義される可能性のあるフラグは、LOADING、ABORTED、ERRORED、およびCOMPLETEです。ロードを開始していないイメージの状態はゼロで表されます。
loadの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。
load - trueの場合は、まだロードされていないすべてのイメージのロードを開始するstatusID(int, boolean), LOADING, ABORTED, ERRORED, COMPLETEpublic boolean checkID(int id)
このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。
id - チェックするイメージの識別子true、それ以外の場合はfalsecheckID(int, boolean), checkAll(), isErrorAny(), isErrorID(int)public boolean checkID(int id,
boolean load)
loadフラグの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。
id - チェックするイメージの識別子load - trueの場合は、まだロードされていないすべてのイメージのロードを開始するtrue、それ以外の場合はfalsecheckID(int, boolean), checkAll(), isErrorAny(), isErrorID(int)public boolean isErrorID(int id)
id - チェックするイメージの識別子true、そうでない場合はfalseisErrorAny(), getErrorsID(int)public Object[] getErrorsID(int id)
id - チェックするイメージの識別子nullisErrorID(int), isErrorAny(), getErrorsAny()public void waitForID(int id)
throws InterruptedException
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、isErrorAnyおよびisErrorIDメソッドを使用します。
id - チェックするイメージの識別子InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合。waitForAll(), isErrorAny(), isErrorID(int)public boolean waitForID(int id,
long ms)
throws InterruptedException
ms引数によりミリ秒単位で指定した時間が経過するまで待機します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。エラーをチェックするには、statusID、isErrorID、およびisErrorAnyメソッドを使用します。
id - チェックするイメージの識別子ms - ロードの完了を待機する時間(ミリ秒)InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合。waitForAll(), waitForID(int), statusID(int, boolean), isErrorAny(), isErrorID(int)public int statusID(int id,
boolean load)
MediaTrackerクラスによって定義される可能性のあるフラグは、LOADING、ABORTED、ERRORED、およびCOMPLETEです。ロードを開始していないイメージの状態はゼロで表されます。
loadの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。
id - チェックするイメージの識別子load - trueの場合は、まだロードされていないすべてのイメージのロードを開始するstatusAll(boolean), LOADING, ABORTED, ERRORED, COMPLETEpublic void removeImage(Image image)
image - 削除されるイメージremoveImage(java.awt.Image, int), removeImage(java.awt.Image, int, int, int)public void removeImage(Image image, int id)
Imageのすべてのインスタンスは、スケールとは無関係に削除されます。image - 削除されるイメージid - イメージの削除元の監視IDremoveImage(java.awt.Image), removeImage(java.awt.Image, int, int, int)public void removeImage(Image image, int id, int width, int height)
image - 削除されるイメージid - イメージの削除元の監視IDwidth - 削除する幅(スケーリングされていない場合は -1)height - 削除する高さ(スケーリングされていない場合は -1)removeImage(java.awt.Image), removeImage(java.awt.Image, int) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.