JavaTM Platform
Standard Ed. 6

java.awt
클래스 MediaTracker

java.lang.Object 
  상위를 확장 java.awt.MediaTracker
모든 구현된 인터페이스:
Serializable


public class MediaTracker
extends Object
implements Serializable

MediaTracker 클래스는, 몇개의 미디어 객체 상태를 감시하는 유틸리티 클래스입니다. 미디어 객체에는, 이미지와 오디오 클립이 포함됩니다. 다만, 현재로서는 이미지만이 지원되고 있습니다.  

메디아트락카를 사용하려면 , 감시하는 이미지 마다 MediaTracker 의 인스턴스를 생성하고 나서 addImage 를 호출합니다. 또, 각각의 이미지에는, 고유의 식별자를 할당할 수가 있습니다. 이러한 식별자는, 이미지를 꺼내는 우선 순위를 제어합니다. 또, 개별적으로 대기할 수 있는 이미지의 부분집합을 식별하기 위해서도 사용됩니다. 저위의 ID 번호를 가지는 이미지는, 고위의 ID 번호를 가지는 이미지보다 우선적으로 로드 됩니다.

동영상 이미지의 감시는, 동영상 이미지의 로드 및 draw의 멀티 파트의 특성이기 때문에, 항상 유효하다라고는 한정하지 않습니다만, 지원되고 있습니다. 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);
            }
        }
 }
 

도입된 버젼:
JDK1. 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)
          이 메디아트락카에 의해 감시되는 모든 미디어 상태의 비트 단위의논리합을 계산해 돌려줍니다.
 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
 

필드의 상세

LOADING

public static final int LOADING
미디어가 로드되고 있는 것을 나타내는 플래그입니다.

관련 항목:
statusAll(boolean) , statusID(int, boolean) , 정수 필드치

ABORTED

public static final int ABORTED
미디어의 다운로드가 중지된 것을 나타내는 플래그입니다.

관련 항목:
statusAll(boolean) , statusID(int, boolean) , 정수 필드치

ERRORED

public static final int ERRORED
미디어의 다운로드로 에러가 있던 것을 나타내는 플래그입니다.

관련 항목:
statusAll(boolean) , statusID(int, boolean) , 정수 필드치

COMPLETE

public static final int COMPLETE
미디어의 다운로드가 정상적으로 종료한 것을 나타내는 플래그입니다.

관련 항목:
statusAll(boolean) , statusID(int, boolean) , 정수 필드치
생성자 의 상세

MediaTracker

public MediaTracker(Component  comp)
지정된 컴퍼넌트의 이미지를 감시하는 메디아트락카를 작성합니다.

파라미터:
comp - 이미지가 최종적으로 draw 된다 컴퍼넌트
메소드의 상세

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 - 이미지가 draw 되는 영역의 폭
h - 이미지가 draw 되는 영역의 높이

checkAll

public boolean checkAll()
이 메디아트락카에 의해 감시 떠날 수 있어 모든 이미지가, 로드를 완료했는지의 여부를 판정합니다.  

이 메소드는, 이미지가 아직 로드안이 아니면, 그러한 로드를 개시하지 않습니다.  

이미지의 로드 또는 슬캘링중에 에러가 발생하면(자), 그 이미지의 로드는 완료했다고 보여집니다. isErrorAny 또는 isErrorID 메소드를 사용하면(자), 에러를 조사할 수 있습니다.

반환값:
모든 이미지의 로드가 완료했을 경우나, 중지되었을 경우, 에러가 있었을 경우는 true, 그렇지 않은 경우는 false
관련 항목:
checkAll(boolean) , checkID(int) , isErrorAny() , isErrorID(int)

checkAll

public boolean checkAll(boolean load)
이 메디아트락카에 의해 감시 떠날 수 있어 모든 이미지가, 로드를 완료했는지의 여부를 판정합니다.  

load 플래그의 값이 true 의 경우, 이 메소드는, 아직 로드안이 아닌 이미지의 로드를 개시합니다.  

이미지의 로드 또는 슬캘링중에 에러가 발생하면(자), 그 이미지의 로드는 완료했다고 보여집니다. isErrorAnyisErrorID 메소드를 사용하면(자), 에러를 조사할 수 있습니다.

파라미터:
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 - 몇개의 thread가 이 thread에 끼어들었을 경우
관련 항목:
waitForID(int) , waitForAll(long) , isErrorAny() , isErrorID(int)

waitForAll

public boolean waitForAll(long ms)
                   throws InterruptedException 
이 메디아트락카에 의해 감시되는 모든 이미지의 로드를 개시합니다. 이 메소드는, 감시중의 모든 이미지의 로드가 완료할 때까지인가,ms 인수에 의해 밀리 세컨드 단위로 지정된 시간이 경과할 때까지 대기합니다.  

이미지의 로드 또는 슬캘링중에 에러가 발생하면(자), 그 이미지의 로드는 완료했다고 보여집니다. isErrorAny 또는 isErrorID 메소드를 사용하면(자), 에러를 조사할 수 있습니다.

파라미터:
ms - 로드가 완료할 때까지 대기한다 밀리 세컨드수
반환값:
모든 이미지의 로드가 완료했을 경우는 true, 그렇지 않은 경우는 false
예외:
InterruptedException - 몇개의 thread가 이 thread에 끼어들었을 경우
관련 항목:
waitForID(int) , waitForAll(long) , isErrorAny() , isErrorID(int)

statusAll

public int statusAll(boolean load)
이 메디아트락카에 의해 감시되는 모든 미디어 상태의 비트 단위의논리합을 계산해 돌려줍니다.  

MediaTracker 클래스에서 정의되는 플래그에는,LOADING,ABORTED,ERRORED, 및 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 
이 메디아트락카에 의해 감시되는, 지정된 식별자를 가지는 모든 이미지의 로드를 개시합니다. 이 메소드는, 지정된 식별자를 가지는 모든 이미지가 로드를 완료할 때까지 대기합니다.  

이미지의 로드 또는 슬캘링중에 에러가 발생하면(자), 그 이미지의 로드는 완료했다고 보여집니다. isErrorAnyisErrorID 메소드를 사용하면(자), 에러를 조사할 수 있습니다.

파라미터:
id - 조사하는 대상이 되는 이미지의 식별자
예외:
InterruptedException - 몇개의 thread가 이 thread에 끼어들었을 경우
관련 항목:
waitForAll() , isErrorAny() , isErrorID(int)

waitForID

public boolean waitForID(int id,
                         long ms)
                  throws InterruptedException 
이 메디아트락카에 의해 감시되는, 지정된 식별자를 가지는 모든 이미지의 로드를 개시합니다. 이 메소드는, 지정된 식별자를 가지는 모든 이미지의 로드가 완료할 때까지인가,ms 인수에 의해 밀리 세컨드 단위로 지정한 시간이 경과할 때까지 대기합니다.  

이미지의 로드 또는 슬캘링중에 에러가 발생하면(자), 그 이미지의 로드는 완료했다고 보여집니다. statusID,isErrorID, 및 isErrorAny 메소드를 사용하면(자), 에러를 조사할 수 있습니다.

파라미터:
id - 조사하는 대상이 되는 이미지의 식별자
ms - 로드의 완료를 대기하는 밀리 세컨드 단위의 시간
예외:
InterruptedException - 몇개의 thread가 이 thread에 끼어들었을 경우
관련 항목:
waitForAll() , waitForID(int) , statusID(int, boolean) , isErrorAny() , isErrorID(int)

statusID

public int statusID(int id,
                    boolean load)
이 메디아트락카에 의해 감시되는, 지정된 식별자를 가지는 모든 미디어 상태의 비트 단위의논리합을 계산해 돌려줍니다.  

MediaTracker 클래스에서 정의되는 플래그에는,LOADING,ABORTED,ERRORED, 및 COMPLETE 가 있습니다. 로드를 개시하고 있지 않는 이미지 상태는 제로로 나타내집니다.  

load 의 값이 true 의 경우, 이 메소드는 아직 로드가 개시되어 있지 않은 이미지의 로드를 개시합니다.

파라미터:
id - 조사하는 대상이 되는 이미지의 식별자
load - true 의 경우, 아직 로드가 개시되어 있지 않은 이미지가 있으면 로드를 개시한다
반환값:
지정된 식별자를 가진다 감시중의 모든 미디어 상태의 비트 단위의 논리합
관련 항목:
statusAll(boolean) , LOADING , ABORTED , ERRORED , COMPLETE

removeImage

public void removeImage(Image  image)
지정된 이미지를 이 메디아트락카로부터 삭제합니다. 지정된 이미지의 모든 인스턴스는, 스케일 또는 ID (와)는 관계없는 것으로 삭제됩니다.

파라미터:
image - 삭제되는 이미지
도입된 버젼:
JDK1. 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
도입된 버젼:
JDK1. 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)
도입된 버젼:
JDK1. 1
관련 항목:
removeImage(java.awt.Image) , removeImage(java.awt.Image, int)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.