クラスMediaTracker

java.lang.Object
java.awt.MediaTracker
すべての実装されたインタフェース:
Serializable

public class MediaTracker extends Object implements Serializable
MediaTrackerクラスは、いくつかのメディア・オブジェクトのステータスを追跡するためのユーティリティ・クラスです。 メディア・オブジェクトには、イメージとオーディオ・クリップが含まれます。ただし、現在のところイメージだけがサポートされています。

メディア・トラッカを使用するには、監視するイメージごとにMediaTrackerのインスタンスを生成してからaddImageを呼び出します。 また、それぞれのイメージには、固有の識別子を割り当てることができます。 これらの識別子は、イメージを取り出す優先順位を制御します。 また、個別に待機できるイメージのサブセットを識別するためにも使用されます。 低位のID番号を持つイメージは、高位のID番号を持つイメージより優先的にロードされます。

動画イメージの監視は、動画イメージのロードおよび描画のマルチパートの特性のため、常に有効であるとは限りませんが、サポートされています。 MediaTrackerは最初のフレームが完全にロードされたときに、動画イメージを完全にロードされたものとして扱います。 その時点でMediaTrackerはイメージが完全にロードされたことを待機者に伝えます。 最初のイメージのロードが完了したときに、ImageObserverがイメージを監視していない場合、イメージ自体がフラッシュし、リソースが節約されます(Image.flush()を参照してください)。

次にMediaTrackerを使用した例を示します。

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.MediaTracker;
import java.awt.Panel;
import java.awt.Toolkit;

public class MediaTrackerExample extends Panel 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 static void main(String[] args) throws Exception {
         MediaTrackerExample mte = new MediaTrackerExample();
         EventQueue.invokeAndWait(() -> {
             Frame frame = new Frame("MediaTrackerExample");
             frame.setSize(400, 400);
             frame.add(mte);
             frame.setVisible(true);
         });
         mte.startAnimation();
     }

     public MediaTrackerExample() {
         Toolkit tk = Toolkit.getDefaultToolkit();
         tracker = new MediaTracker(this);
         // Note : actual images not provided as part of this code example
         bg = tk.getImage("background.gif");
         tracker.addImage(bg, 0);
         for (int i = 0; i < 5; i++) {
             anim[i] = tk.getImage("anim" + i + ".gif");
             tracker.addImage(anim[i], 1);
         }
     }

     public void startAnimation() {
         animator = new Thread(this);
         animator.start();
     }

     // 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 component background 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, getSize().width, getSize().height);
             return;
         }
         g.drawImage(bg, 0, 0, this);
         if (tracker.statusID(1, false) == MediaTracker.COMPLETE) {
             g.drawImage(anim[index], 10, 10, this);
         }
     }
}

導入されたバージョン:
1.0
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final int
    メディアのダウンロードが打ち切られたことを示すフラグです。
    static final int
    メディアのダウンロードが正常に終了したことを示すフラグです。
    static final int
    メディアのダウンロードでエラーがあったことを示すフラグです。
    static final int
    メディアがロードされつつあることを示すフラグです。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    指定されたコンポーネントのイメージを監視するメディア・トラッカを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    addImage(Image image, int id)
    このメディア・トラッカによって監視されているリストにイメージを追加します。
    void
    addImage(Image image, int id, int w, int h)
    このメディア・トラッカによって監視されているリストに、スケーリングされたイメージを追加します。
    boolean
    このメディア・トラッカによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。
    boolean
    checkAll(boolean load)
    このメディア・トラッカによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。
    boolean
    checkID(int id)
    このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。
    boolean
    checkID(int id, boolean load)
    このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。
    エラーがあったすべてのメディアのリストを返します。
    getErrorsID(int id)
    指定されたIDを持つメディアのうちエラーになったもののリストを返します。
    boolean
    すべてのイメージのエラー状態を調べます。
    boolean
    isErrorID(int id)
    このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのエラー状態を調べます。
    void
    指定されたイメージをこのメディア・トラッカから削除します。
    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)
    このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

  • コンストラクタの詳細

    • 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

      public boolean checkAll(boolean load)
      このメディア・トラッカによって監視されているすべてのイメージが、ロードを完了したかどうかを判定します。

      loadフラグの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyおよびisErrorIDメソッドを使用します。

      パラメータ:
      load - trueの場合は、まだロードされていないすべてのイメージのロードを開始する
      戻り値:
      すべてのイメージがロードを完了したか、強制的に中止されたか、またはエラーを検出した場合はtrue、それ以外の場合はfalse
      関連項目:
    • isErrorAny

      public boolean isErrorAny()
      すべてのイメージのエラー状態を調べます。
      戻り値:
      このメディア・トラッカによって監視されるイメージのいずれかでロード中にエラーがあった場合はtrue、そうでない場合はfalse
      関連項目:
    • getErrorsAny

      public Object[] getErrorsAny()
      エラーがあったすべてのメディアのリストを返します。
      戻り値:
      このメディア・トラッカによって監視されるメディア・オブジェクトのうちで、エラーがあったメディア・オブジェクトの配列。エラーのあるオブジェクトがない場合はnull
      関連項目:
    • waitForAll

      public void waitForAll() throws InterruptedException
      このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。 このメソッドは、監視中のすべてのイメージのロードが完了するまで待機します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。

      スロー:
      InterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合
      関連項目:
    • waitForAll

      public boolean waitForAll(long ms) throws InterruptedException
      このメディア・トラッカによって監視されるすべてのイメージのロードを開始します。 このメソッドは、監視中のすべてのイメージのロードが完了するまでか、ms引数によりミリ秒単位で指定された時間が経過するまで待機します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。

      パラメータ:
      ms - ロードが完了するまで待機する時間(ミリ秒)
      戻り値:
      すべてのイメージのロードが完了した場合はtrue、そうでない場合はfalse
      スロー:
      InterruptedException - スレッドがこのスレッドに割り込んだ場合。
      関連項目:
    • statusAll

      public int statusAll(boolean load)
      このメディア・トラッカによって追跡されるすべてのメディアのステータスのビット単位の論理ORを計算して返します。

      MediaTrackerクラスによって定義される可能性のあるフラグは、LOADINGABORTEDERRORED、およびCOMPLETEです。 ロードを開始していないイメージの状態はゼロで表されます。

      loadの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。

      パラメータ:
      load - trueの場合は、まだロードされていないすべてのイメージのロードを開始する
      戻り値:
      監視中のすべてのメディアの状態のビット単位の論理和
      関連項目:
    • checkID

      public boolean checkID(int id)
      このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。

      このメソッドは、イメージがまだロード中でなければ、それらのロードを開始しません。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。

      パラメータ:
      id - チェックするイメージの識別子
      戻り値:
      すべてのイメージがロードを完了したか、強制的に中止されたか、またはエラーを検出した場合はtrue、それ以外の場合はfalse
      関連項目:
    • checkID

      public boolean checkID(int id, boolean load)
      このメディア・トラッカによって監視される、指定された識別子でタグ付けされたすべてのイメージが、ロードを完了したかどうかを判定します。

      loadフラグの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyまたはisErrorIDメソッドを使用します。

      パラメータ:
      id - チェックするイメージの識別子
      load - trueの場合は、まだロードされていないすべてのイメージのロードを開始する
      戻り値:
      すべてのイメージがロードを完了したか、強制的に中止されたか、またはエラーを検出した場合はtrue、それ以外の場合はfalse
      関連項目:
    • isErrorID

      public boolean isErrorID(int id)
      このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのエラー状態を調べます。
      パラメータ:
      id - チェックするイメージの識別子
      戻り値:
      指定された識別子を持つイメージのいずれかでロード中にエラーがあった場合はtrue、そうでない場合はfalse
      関連項目:
    • getErrorsID

      public Object[] getErrorsID(int id)
      指定されたIDを持つメディアのうちエラーになったもののリストを返します。
      パラメータ:
      id - チェックするイメージの識別子
      戻り値:
      指定された識別子を持つこのメディア・トラッカによって監視されるメディア・オブジェクトのうちで、エラーがあったメディア・オブジェクトの配列。エラーのあるオブジェクトがない場合はnull
      関連項目:
    • waitForID

      public void waitForID(int id) throws InterruptedException
      このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。 このメソッドは、指定された識別子を持つすべてのイメージがロードを完了するまで待機します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、isErrorAnyおよびisErrorIDメソッドを使用します。

      パラメータ:
      id - チェックするイメージの識別子
      スロー:
      InterruptedException - スレッドがこのスレッドに割り込んだ場合。
      関連項目:
    • waitForID

      public boolean waitForID(int id, long ms) throws InterruptedException
      このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。 このメソッドは、指定された識別子を持つすべてのイメージのロードが完了するまでか、ms引数によりミリ秒単位で指定した時間が経過するまで待機します。

      イメージのロードまたはスケーリング中にエラーが発生すると、そのイメージのロードは完了したと見なされます。 エラーをチェックするには、statusIDisErrorID、およびisErrorAnyメソッドを使用します。

      パラメータ:
      id - チェックするイメージの識別子
      ms - ロードの完了を待機する時間(ミリ秒)
      戻り値:
      ロードが時間内に完了した場合はtrue; そうでなければfalse
      スロー:
      InterruptedException - スレッドがこのスレッドに割り込んだ場合。
      関連項目:
    • statusID

      public int statusID(int id, boolean load)
      このメディア・トラッカによって追跡される指定された識別子を持つすべてのメディアのステータスのビット単位の論理ORを計算して返します。

      MediaTrackerクラスによって定義される可能性のあるフラグは、LOADINGABORTEDERRORED、およびCOMPLETEです。 ロードを開始していないイメージの状態はゼロで表されます。

      loadの値がtrueである場合、このメソッドは、まだロードされていないすべてのイメージのロードを開始します。

      パラメータ:
      id - チェックするイメージの識別子
      load - trueの場合は、まだロードされていないすべてのイメージのロードを開始する
      戻り値:
      指定された識別子を持つ監視中のすべてのメディアの状態のビット単位の論理OR
      関連項目:
    • removeImage

      public void removeImage(Image image)
      指定されたイメージをこのメディア・トラッカから削除します。 指定されたイメージのすべてのインスタンスは、スケールまたはIDとは無関係に削除されます。
      パラメータ:
      image - 削除されるイメージ
      導入されたバージョン:
      1.1
      関連項目:
    • removeImage

      public void removeImage(Image image, int id)
      このメディア・トラッカの指定された監視IDから指定されたイメージを削除します。 指定されたIDのもとで監視中のImageのすべてのインスタンスは、スケールとは無関係に削除されます。
      パラメータ:
      image - 削除されるイメージ
      id - イメージの削除元の監視ID
      導入されたバージョン:
      1.1
      関連項目:
    • removeImage

      public void removeImage(Image image, int id, int width, int height)
      指定された幅、高さ、IDを持つ指定されたイメージをこのメディア・トラッカから削除します。 指定されたインスタンス(重複を持つもの)だけが削除されます。
      パラメータ:
      image - 削除されるイメージ
      id - イメージの削除元の監視ID
      width - 削除する幅(スケーリングされていない場合は -1)
      height - 削除する高さ(スケーリングされていない場合は -1)
      導入されたバージョン:
      1.1
      関連項目: