|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.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;否则返回 falsecheckAll(boolean),
checkID(int),
isErrorAny(),
isErrorID(int)public boolean checkAll(boolean load)
如果此 load 标志的值为 true,则此方法将开始加载任何尚未加载的图像。
如果在加载或缩放图像时出错,则该图像被视为已完成加载。使用 isErrorAny 和 isErrorID 方法检查错误。
load - 如果为 true,则开始加载任何尚未加载的图像
true;否则返回 falsecheckID(int),
checkAll(),
isErrorAny(),
isErrorID(int)public boolean isErrorAny()
true;否则返回 falseisErrorID(int),
getErrorsAny()public Object[] getErrorsAny()
nullisErrorAny(),
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,
COMPLETEpublic boolean checkID(int id)
如果图像尚未完成加载,则此方法不能开始加载图像。
如果在加载或缩放图像时出错,则认为该图像已完成加载。使用 isErrorAny 或 isErrorID 方法检查错误。
id - 要检查的图像标识符
true;否则返回 falsecheckID(int, boolean),
checkAll(),
isErrorAny(),
isErrorID(int)
public boolean checkID(int id,
boolean load)
如果此 load 标志的值为 true,则此方法将开始加载任何尚未加载的图像。
如果在加载或缩放图像时出错,则该图像被视为已完成加载。使用 isErrorAny 或 isErrorID 方法检查错误。
id - 要检查的图像标识符load - 如果为 true,则开始加载任何尚未加载的图像。
true;否则返回 falsecheckID(int, boolean),
checkAll(),
isErrorAny(),
isErrorID(int)public boolean isErrorID(int id)
id - 要检查图像的标识符
true;否则返回 falseisErrorAny(),
getErrorsID(int)public Object[] getErrorsID(int id)
id - 要检查图像的标识符
nullisErrorID(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,
COMPLETEpublic 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 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。