Класс MediaTracker
- java.lang.Object
-
- java.awt.MediaTracker
- Все реализованные интерфейсы:
Serializable
public class MediaTracker extends Object implements 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
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
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) | Удаляет указанное изображение из указанного идентификатора отслеживания этого трекера медиа. |
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
Флаг, указывающий на текущую загрузку медиа.
ABORTED
public static final int ABORTED
Флаг, указывающий на прерывание загрузки медиа.
ERRORED
public static final int ERRORED
Флаг, указывающий на ошибку при загрузке медиа.
COMPLETE
public static final int COMPLETE
Флаг, указывающий на успешное завершение загрузки медиа.
Подробное описание конструкторов
MediaTracker
public MediaTracker(Component comp)
Создает трекер медиа для отслеживания изображений для данного компонента.
- Параметры:
-
comp- компонент, на котором в конечном итоге будут отображаться изображения
Методы
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- ширина отображения изображения -
h- высота отображения изображения
checkAll
public boolean checkAll()
Проверяет, загрузились ли все отслеживаемые этим трекером медиа изображения.
Этот метод не начинает загрузку изображений, если они уже не загружаются.
Если при загрузке или масштабировании изображения произошла ошибка, то это изображение считается загруженным. Используйте методы isErrorAny или isErrorID для проверки ошибок.
- Возвращает:
-
trueесли все изображения завершили загрузку, прерваны или столкнулись с ошибкой;falseв противном случае - См. также:
-
checkAll(boolean),checkID(int),isErrorAny(),isErrorID(int)
checkAll
public boolean checkAll(boolean load)
Проверяет, загрузились ли все отслеживаемые этим трекером медиа изображения.
Если значение флага load равно true, тогда этот метод запускает загрузку любых изображений, которые еще не загружаются.
Если при загрузке или масштабировании изображения произошла ошибка, то это изображение считается загруженным. Используйте методы isErrorAny и isErrorID для проверки ошибок.
- Параметры:
-
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- если любой поток прервал этот поток - См. также:
-
waitForID(int),waitForAll(long),isErrorAny(),isErrorID(int)
waitForAll
public boolean waitForAll(long ms)
throws InterruptedException Начинает загрузку всех отслеживаемых этим трекером медиа изображений. Этот метод ожидает, пока все отслеживаемые изображения не завершат загрузку, или пока не пройдёт время, указанное в миллисекундах аргументом ms.
Если при загрузке или масштабировании изображения произошла ошибка, то это изображение считается загруженным. Используйте методы isErrorAny или isErrorID для проверки ошибок.
- Параметры:
-
ms- количество миллисекунд ожидания завершения загрузки - Возвращает:
-
trueесли все изображения были успешно загружены;falseв противном случае - Выбрасывает:
-
InterruptedException- если любой поток прервал этот поток. - См. также:
-
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- идентификатор изображений для проверки - Возвращает:
- массив объектов медиа, отслеживаемых этим трекером медиа, с указанным идентификатором, которые столкнулись с ошибкой, или
nullесли таких нет - См. также:
-
isErrorID(int),isErrorAny(),getErrorsAny()
waitForID
public void waitForID(int id)
throws InterruptedException Начинает загрузку всех изображений, отслеживаемых этим трекером медиа, с указанным идентификатором. Этот метод ожидает, пока все изображения с указанным идентификатором не завершат загрузку.
Если при загрузке или масштабировании изображения произошла ошибка, то это изображение считается загруженным. Используйте методы isErrorAny и isErrorID для проверки ошибок.
- Параметры:
-
id- идентификатор изображений для проверки - Выбрасывает:
-
InterruptedException- если любой поток прервал этот поток. - См. также:
-
waitForAll(),isErrorAny(),isErrorID(int)
waitForID
public boolean waitForID(int id,
long ms)
throws InterruptedException Начинает загрузку всех изображений, отслеживаемых этим трекером медиа с указанным идентификатором. Этот метод ожидает, пока все изображения с указанным идентификатором не закончат загружаться или не истечёт время, указанное в миллисекундах аргументом ms.
Если при загрузке или масштабировании изображения возникает ошибка, то это изображение считается загруженным. Используйте методы statusID, isErrorID, и isErrorAny, чтобы проверить наличие ошибок.
- Параметры:
-
id- идентификатор изображений для проверки -
ms- время ожидания завершения загрузки в миллисекундах - Возвращает:
-
trueесли загрузка завершилась вовремя; в противном случаеfalse - Исключение:
-
InterruptedException- если любой поток прервал этот поток. - См. также:
-
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- изображение для удаления - С:
- 1.1
- См. также:
-
removeImage(java.awt.Image, int),removeImage(java.awt.Image, int, int, int)
removeImage
public void removeImage(Image image,
int id) Удаляет указанное изображение из указанного идентификатора отслеживания этого трекера медиа. Все экземпляры Image, отслеживаемые под указанным ID, удаляются независимо от масштаба.
- Параметры:
-
image- изображение для удаления -
id- идентификатор отслеживания, из которого удалить изображение - С:
- 1.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- идентификатор отслеживания, из которого удалить изображение -
width- ширина для удаления (-1 для несжимаемого) -
height- высота для удаления (-1 для несжимаемого) - С:
- 1.1
- См. также:
-
removeImage(java.awt.Image),removeImage(java.awt.Image, int)
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/MediaTracker.html