|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.MediaTracker
public class MediaTracker
MediaTracker
類別是一個追蹤多種媒體物件狀態的實用工具類別。媒體對象可以包括音頻剪輯和圖像,但目前僅支持圖像。
要使用媒體追蹤器,需要創建一個 MediaTracker
實例,然後對每個要追蹤的圖像調用其 addImage
方法。另外,還可以為每個圖像分派一個唯一的標識符。此標識符可控制獲取圖像的優先級順序。它還可用於標識可單獨等待的唯一圖像子集。具有較低 ID 的圖像比具有較高 ID 的圖像優先載入。
由於動畫圖像載入和繪製的多部分特性(multi-part nature),追蹤動畫圖像可能不是始終有用,但這一功能的確受支持。在完成動畫圖像的第一幀的載入之後,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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。