- 所有已实现的接口:
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
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void将图像添加到此媒体跟踪器正在跟踪的图像列表中。void将缩放图像添加到此媒体跟踪器正在跟踪的图像列表中。booleancheckAll()检查此媒体跟踪器跟踪的所有图像是否已完成加载。booleancheckAll(boolean load) 检查此媒体跟踪器跟踪的所有图像是否已完成加载。booleancheckID(int id) 检查此媒体跟踪器跟踪的所有标记有指定标识符的图像是否已完成加载。booleancheckID(int id, boolean load) 检查此媒体跟踪器跟踪的所有标记有指定标识符的图像是否已完成加载。Object[]返回遇到错误的所有媒体的列表。Object[]getErrorsID(int id) 返回遇到错误的具有指定 ID 的媒体列表。boolean检查所有图像的错误状态。booleanisErrorID(int id) 检查此媒体跟踪器跟踪的具有指定标识符的所有图像的错误状态。voidremoveImage(Image image) 从此媒体跟踪器中删除指定的图像。voidremoveImage(Image image, int id) 从此媒体跟踪器的指定跟踪 ID 中删除指定图像。voidremoveImage(Image image, int id, int width, int height) 从此媒体跟踪器中删除具有指定宽度、高度和 ID 的指定图像。intstatusAll(boolean load) 计算并返回按位包含OR此媒体跟踪器跟踪的所有媒体的状态。intstatusID(int id, boolean load) 计算并返回按位包含OR此媒体跟踪器跟踪的具有指定标识符的所有媒体的状态。void开始加载此媒体跟踪器跟踪的所有图像。booleanwaitForAll(long ms) 开始加载此媒体跟踪器跟踪的所有图像。voidwaitForID(int id) 开始加载此媒体跟踪器跟踪的具有指定标识符的所有图像。booleanwaitForID(int id, long ms) 开始加载此媒体跟踪器跟踪的具有指定标识符的所有图像。
-
字段详细信息
-
LOADING
public static final int LOADING指示当前正在加载媒体的标志。- 参见:
-
ABORTED
public static final int ABORTED指示媒体下载已中止的标志。- 参见:
-
ERRORED
public static final int ERRORED指示媒体下载遇到错误的标志。- 参见:
-
COMPLETE
public static final int COMPLETE指示媒体下载已成功完成的标志。- 参见:
-
-
构造方法详细信息
-
MediaTracker
创建一个媒体跟踪器来跟踪给定组件的图像。- 参数:
comp- 最终将在其上绘制图像的组件
-
-
方法详情
-
addImage
将图像添加到此媒体跟踪器正在跟踪的图像列表中。图像最终将以其默认(未缩放)大小呈现。- 参数:
image- 要跟踪的图像id- 用于跟踪此图像的标识符
-
addImage
将缩放图像添加到此媒体跟踪器正在跟踪的图像列表中。图像最终将以指定的宽度和高度呈现。- 参数:
image- 要跟踪的图像id- 可用于跟踪此图像的标识符w- 渲染图像的宽度h- 渲染图像的高度
-
checkAll
public boolean checkAll()检查此媒体跟踪器跟踪的所有图像是否已完成加载。如果图像尚未加载,则此方法不会开始加载图像。
如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny或isErrorID方法检查错误。- 返回:
true如果所有图像都已完成加载、已中止或遇到错误;false否则- 参见:
-
checkAll
public boolean checkAll(boolean load) 检查此媒体跟踪器跟踪的所有图像是否已完成加载。如果
load标志的值为true,则此方法开始加载任何尚未加载的图像。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny和isErrorID方法检查错误。- 参数:
load- 如果是true,则开始加载任何尚未加载的图像- 返回:
true如果所有图像都已完成加载、已中止或遇到错误;false否则- 参见:
-
isErrorAny
public boolean isErrorAny()检查所有图像的错误状态。- 返回:
true如果此媒体跟踪器跟踪的任何图像在加载过程中出现错误;false否则- 参见:
-
getErrorsAny
返回遇到错误的所有媒体的列表。- 返回:
-
此媒体跟踪器跟踪的遇到错误的媒体对象数组,如果没有错误则返回
null - 参见:
-
waitForAll
开始加载此媒体跟踪器跟踪的所有图像。此方法会等到所有被跟踪的图像都完成加载。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny或isErrorID方法检查错误。- 抛出:
InterruptedException- 如果任何线程中断了该线程- 参见:
-
waitForAll
开始加载此媒体跟踪器跟踪的所有图像。此方法会一直等待,直到所有被跟踪的图像都完成加载,或者直到ms参数以毫秒为单位指定的时间长度已经过去。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny或isErrorID方法检查错误。- 参数:
ms- 等待加载完成的毫秒数- 返回:
true如果所有图像都已成功加载;false否则- 抛出:
InterruptedException- 如果有任何线程中断了该线程。- 参见:
-
statusAll
public int statusAll(boolean load) 计算并返回按位包含OR此媒体跟踪器跟踪的所有媒体的状态。MediaTracker类定义的可能标志是LOADING、ABORTED、ERRORED和COMPLETE。尚未开始加载的图像的状态为零。如果
load的值为true,则此方法开始加载任何尚未加载的图像。- 参数:
load- 如果是true,则开始加载任何尚未加载的图像- 返回:
- 按位包含OR所有被跟踪媒体的状态
- 参见:
-
checkID
public boolean checkID(int id) 检查此媒体跟踪器跟踪的所有标记有指定标识符的图像是否已完成加载。如果图像尚未加载,则此方法不会开始加载图像。
如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny或isErrorID方法检查错误。- 参数:
id- 要检查的图像的标识符- 返回:
true如果所有图像都已完成加载、已中止或遇到错误;false否则- 参见:
-
checkID
public boolean checkID(int id, boolean load) 检查此媒体跟踪器跟踪的所有标记有指定标识符的图像是否已完成加载。如果
load标志的值为true,则此方法开始加载任何尚未加载的图像。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny或isErrorID方法检查错误。- 参数:
id- 要检查的图像的标识符load- 如果是true,则开始加载任何尚未加载的图像- 返回:
true如果所有图像都已完成加载、已中止或遇到错误;false否则- 参见:
-
isErrorID
public boolean isErrorID(int id) 检查此媒体跟踪器跟踪的具有指定标识符的所有图像的错误状态。- 参数:
id- 要检查的图像的标识符- 返回:
true如果具有指定标识符的任何图像在加载过程中出现错误;false否则- 参见:
-
getErrorsID
返回遇到错误的具有指定 ID 的媒体列表。- 参数:
id- 要检查的图像的标识符- 返回:
-
此媒体跟踪器跟踪的具有遇到错误的指定标识符的媒体对象数组,如果没有错误则返回
null - 参见:
-
waitForID
开始加载此媒体跟踪器跟踪的具有指定标识符的所有图像。此方法会一直等待,直到具有指定标识符的所有图像都完成加载。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
isErrorAny和isErrorID方法检查错误。- 参数:
id- 要检查的图像的标识符- 抛出:
InterruptedException- 如果有任何线程中断了该线程。- 参见:
-
waitForID
开始加载此媒体跟踪器跟踪的具有指定标识符的所有图像。此方法会一直等待,直到具有指定标识符的所有图像都完成加载,或者直到ms参数指定的时间长度(以毫秒为单位)已经过去。如果在加载或缩放图像时出现错误,则认为该图像已完成加载。使用
statusID、isErrorID和isErrorAny方法检查错误。- 参数:
id- 要检查的图像的标识符ms- 等待加载完成的时间长度(以毫秒为单位)- 返回:
true如果装载及时完成;否则false- 抛出:
InterruptedException- 如果有任何线程中断了该线程。- 参见:
-
statusID
public int statusID(int id, boolean load) 计算并返回按位包含OR此媒体跟踪器跟踪的具有指定标识符的所有媒体的状态。MediaTracker类定义的可能标志是LOADING、ABORTED、ERRORED和COMPLETE。尚未开始加载的图像的状态为零。如果
load的值为true,则此方法开始加载任何尚未加载的图像。- 参数:
id- 要检查的图像的标识符load- 如果是true,则开始加载任何尚未加载的图像- 返回:
- 按位包含OR正在跟踪的具有指定标识符的所有媒体的状态
- 参见:
-
removeImage
从此媒体跟踪器中删除指定的图像。指定图像的所有实例都将被删除,无论比例或 ID 是什么。- 参数:
image- 要删除的图像- 自从:
- 1.1
- 参见:
-
removeImage
从此媒体跟踪器的指定跟踪 ID 中删除指定图像。无论规模如何,在指定 ID 下跟踪的所有Image实例都将被删除。- 参数:
image- 要删除的图像id- 要从中删除图像的跟踪 ID- 自从:
- 1.1
- 参见:
-
removeImage
从此媒体跟踪器中删除具有指定宽度、高度和 ID 的指定图像。仅删除指定的实例(包括任何重复项)。- 参数:
image- 要删除的图像id- 要从中删除图像的跟踪 IDwidth- 要移除的宽度(-1 表示未缩放)height- 要移除的高度(-1 表示未缩放)- 自从:
- 1.1
- 参见:
-