|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.awt.MediaTracker
public class MediaTracker
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)
このメディアトラッカーによって監視されるすべてのメディアの状態のビット単位の論理和を計算して返します。 |
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
、そうでない場合は false
checkAll(boolean)
,
checkID(int)
,
isErrorAny()
,
isErrorID(int)
public boolean checkAll(boolean load)
load
フラグの値が true
の場合、このメソッドは、まだロード中でないイメージのロードを開始します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny
と isErrorID
メソッドを使うと、エラーを調べられます。
load
- true
の場合、まだロードが開始されていないイメージがあればロードを開始する
true
、そうでない場合は false
checkID(int)
,
checkAll()
,
isErrorAny()
,
isErrorID(int)
public boolean isErrorAny()
true
、そうでない場合は false
isErrorID(int)
,
getErrorsAny()
public Object[] getErrorsAny()
null
isErrorAny()
,
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
、そうでない場合は false
InterruptedException
- なんらかのスレッドがこのスレッドに割り込んだ場合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
,
COMPLETE
public boolean checkID(int id)
このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny
または isErrorID
メソッドを使うと、エラーを調べられます。
id
- 調べる対象となるイメージの識別子
true
、そうでない場合は false
checkID(int, boolean)
,
checkAll()
,
isErrorAny()
,
isErrorID(int)
public boolean checkID(int id, boolean load)
load
フラグの値が true
の場合、このメソッドは、まだロード中でないイメージのロードを開始します。
イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。isErrorAny
または isErrorID
メソッドを使うと、エラーを調べられます。
id
- 調べる対象となるイメージの識別子load
- true
の場合、まだロードが開始されていないイメージがあればロードを開始する
true
、そうでない場合は false
checkID(int, boolean)
,
checkAll()
,
isErrorAny()
,
isErrorID(int)
public boolean isErrorID(int id)
id
- 調べる対象となるイメージの識別子
true
、そうでない場合は false
isErrorAny()
,
getErrorsID(int)
public Object[] getErrorsID(int id)
id
- 調べる対象となるイメージの識別子
null
isErrorID(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
,
COMPLETE
public 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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。