public class MediaTracker extends Object implements Serializable
MediaTracker
类是一个实用类来跟踪多个媒体对象的状态。媒体对象可以包括音频剪辑和图像,但目前只支持图像。
使用媒体跟踪器,创建MediaTracker
实例称为每个图像进行跟踪,其addImage
方法。此外,每个图像都可以被分配一个唯一的标识符。此标识符控制获取图像的优先级顺序。它也可以被用来识别独特的子集的图像,可以独立地等待。具有较低的身份证的图像被加载在偏好那些具有较高的身份证号码。
跟踪一个动画图像可能并不总是有用的,由于多部分性质的动画图像加载和绘画,但它是支持。MediaTracker
对待动画形象完全加载当第一架完全加载。在这一点上,MediaTracker
信号的任何服务员的图像是完全加载。如果没有ImageObserver
s观察图像时,第一架装载完毕,图像可能会冲自己节约资源(见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); } } }
Modifier and Type | Field and Description |
---|---|
static int |
ABORTED
指示下载媒体被中止的标志。
|
static int |
COMPLETE
指示已成功下载媒体的标志的标志。
|
static int |
ERRORED
指示下载媒体遇到错误的标志。
|
static int |
LOADING
指示当前正在加载的媒体的标志。
|
Constructor and Description |
---|
MediaTracker(Component comp)
创建一个媒体跟踪来跟踪给定组件的图像。
|
Modifier and Type | Method and Description |
---|---|
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)
返回具有指定的已遇到错误的指定的媒体列表。
|
boolean |
isErrorAny()
检查所有图像的错误状态。
|
boolean |
isErrorID(int id)
检查由该媒体跟踪跟踪的所有图像的错误状态与指定的标识符。
|
void |
removeImage(Image image)
从这个媒体跟踪中移除指定的图像。
|
void |
removeImage(Image image, int id)
从该媒体跟踪的指定跟踪标识中移除指定的图像。
|
void |
removeImage(Image image, int id, int width, int height)
从这个媒体跟踪中移除指定的图像与指定的宽度、高度和身份证。
|
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)
开始加载由该媒体跟踪程序跟踪的所有图像与指定的标识符。
|
public static final int LOADING
public static final int ABORTED
public static final int ERRORED
public static final int COMPLETE
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
跟踪指定ID下的所有实例都规模删除。
image
-要删除的图像
id
-跟踪ID,删除图像
removeImage(java.awt.Image)
,
removeImage(java.awt.Image, int, int, int)
public void removeImage(Image image, int id, int width, int height)
image
-要删除的图像
id
-跟踪ID,删除图像
width
-宽度去除(1缩放)
height
-高度去除(1缩放)
removeImage(java.awt.Image)
,
removeImage(java.awt.Image, int)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.