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, 2013, Oracle and/or its affiliates. All rights reserved.