|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object | +--java.awt.MediaTracker
MediaTracker クラスは、いくつかのメディアオブジェクトの状態を監視するユーティリティクラスです。メディアオブジェクトには、イメージとオーディオクリップが含まれます。ただし、現在のところイメージだけがサポートされています。
メディアトラッカーを使用するには、監視するイメージごとに MediaTracker のインスタンスを生成してから addImage を呼び出します。また、それぞれのイメージには、固有の識別子を割り当てることができます。これらの識別子は、イメージを取り出す優先順位を制御します。また、個別に待機できるイメージのサブセットを識別するためにも使用されます。低位の ID 番号を持つイメージは、高位の ID 番号を持つイメージより優先的にロードされます。
次はその例です。
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)
このメディアトラッカーによって監視されるすべてのメディアの状態のビット単位の論理和を計算して返します。 |
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 |
| フィールドの詳細 |
public static final int LOADING
statusAll(boolean),
statusID(int, boolean)public static final int ABORTED
statusAll(boolean),
statusID(int, boolean)public static final int ERRORED
statusAll(boolean),
statusID(int, boolean)public static final int COMPLETE
statusAll(boolean),
statusID(int, boolean)| コンストラクタの詳細 |
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)
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.