モジュール java.desktop
パッケージ java.awt

クラスMediaTracker

  • すべての実装されたインタフェース:
    Serializable

    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);
              }
          }
     }
      

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

      フィールド 
      修飾子と型 フィールド 説明
      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)
      このメディア・トラッカによって監視される、指定された識別子を持つすべてのイメージのロードを開始します。
    • コンストラクタの詳細

      • 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(boolean), checkID(int), isErrorAny(), isErrorID(int)
      • checkAll

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

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

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

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

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

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

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

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

        例外:
        InterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合
        関連項目:
        waitForID(int), waitForAll(long), isErrorAny(), isErrorID(int)
      • waitForAll

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        パラメータ:
        id - チェックするイメージの識別子
        例外:
        InterruptedException - なんらかのスレッドがこのスレッドに割り込んだ場合。
        関連項目:
        waitForAll(), isErrorAny(), isErrorID(int)
      • waitForID

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

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

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

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

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

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

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

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

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

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