Класс 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 final int |
ABORTED |
Флаг, указывающий, что загрузка медиа была прервана. |
static final int |
COMPLETE |
Флаг, указывающий, что загрузка медиа была успешно завершена. |
static final int |
ERRORED |
Флаг, указывающий, что при загрузке медиа произошла ошибка. |
static final int |
LOADING |
Флаг, указывающий, что медиа в настоящее время загружается. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MediaTracker |
Создает трекер медиа для отслеживания изображений для данного компонента. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addImage |
Добавляет изображение в список изображений, отслеживаемых этим трекером медиа. |
void |
addImage |
Добавляет масштабированное изображение в список изображений, отслеживаемых этим трекером медиа. |
boolean |
checkAll() |
Проверяет, завершили ли загрузку все изображения, отслеживаемые этим трекером медиа. |
boolean |
checkAll |
Проверяет, завершили ли загрузку все изображения, отслеживаемые этим трекером медиа. |
boolean |
checkID |
Проверяет, завершили ли загрузку все изображения, отслеживаемые этим трекером медиа, помеченные указанным идентификатором. |
boolean |
checkID |
Проверяет, завершили ли загрузку все изображения, отслеживаемые этим трекером медиа, помеченные указанным идентификатором. |
Object[] |
getErrorsAny() |
Возвращает список всей медиа, которая столкнулась с ошибкой. |
Object[] |
getErrorsID |
Возвращает список медиа с указанным ID, которая столкнулась с ошибкой. |
boolean |
isErrorAny() |
Проверяет статус ошибок всех изображений. |
boolean |
isErrorID |
Проверяет статус ошибок всех изображений, отслеживаемых этим трекером медиа, с указанным идентификатором. |
void |
removeImage |
Удаляет указанное изображение из этого трекера медиа. |
void |
removeImage |
Удаляет указанное изображение из указанного идентификатора отслеживания в этом трекере медиа. |
void |
removeImage |
Удаляет указанное изображение с указанной шириной, высотой и ID из этого трекера медиа. |
int |
statusAll |
Вычисляет и возвращает битовое включительно ИЛИ состояния всей медиа, отслеживаемой этим трекером медиа. |
int |
statusID |
Вычисляет и возвращает битовое включительно ИЛИ состояния всей медиа с указанным идентификатором, отслеживаемой этим трекером медиа. |
void |
waitForAll() |
Начинает загрузку всех изображений, отслеживаемых этим трекером медиа. |
boolean |
waitForAll |
Начинает загрузку всех изображений, отслеживаемых этим трекером медиа. |
void |
waitForID |
Начинает загрузку всех изображений, отслеживаемых этим трекером медиа, с указанным идентификатором. |
boolean |
waitForID |
Начинает загрузку всех изображений, отслеживаемых этим трекером медиа, с указанным идентификатором. |
Подробное описание полей
ЗАГРУЖАЕТСЯ
public static final int LOADING
- См. также:
ПРЕРВАНО
public static final int ABORTED
- См. также:
С ОШИБКОЙ
public static final int ERRORED
- См. также:
ЗАВЕРШЕНО
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
public boolean checkAll(boolean load)
Если значение флага load равно true, то этот метод начинает загрузку любых изображений, которые ещё не загружаются.
Если при загрузке или масштабировании изображения возникает ошибка, то считается, что загрузка изображения завершена. Используйте методы isErrorAny и isErrorID, чтобы проверить наличие ошибок.
- Параметры:
-
load- еслиtrue, начать загрузку любых изображений, которые ещё не загружаются - Возвращает:
true, если все изображения завершили загрузку, были прерваны или столкнулись с ошибкой;falseв противном случае- См. также:
isErrorAny
public boolean isErrorAny()
- Возвращает:
true, если у любого из отслеживаемых этим трекером медиа изображений произошла ошибка при загрузке;falseв противном случае- См. также:
getErrorsAny
public Object[] getErrorsAny()
- Возвращает:
- массив объектов медиа, отслеживаемых этим трекером медиа и у которых произошла ошибка, или
null, если таких нет - См. также:
waitForAll
public void waitForAll() throws InterruptedException
Если при загрузке или масштабировании изображения возникает ошибка, то считается, что загрузка изображения завершена. Используйте методы isErrorAny или isErrorID, чтобы проверить наличие ошибок.
- Исключения:
-
InterruptedException- если какой-либо поток прервал этот поток - См. также:
waitForAll
public boolean waitForAll(long ms) throws InterruptedException
ms. Если при загрузке или масштабировании изображения возникает ошибка, то считается, что загрузка изображения завершена. Используйте методы isErrorAny или isErrorID, чтобы проверить наличие ошибок.
- Параметры:
-
ms- количество миллисекунд ожидания завершения загрузки - Возвращает:
true, если все изображения были загружены успешно;falseв противном случае- Исключения:
-
InterruptedException- если какой-либо поток прервал этот поток. - См. также:
statusAll
public int statusAll(boolean load)
Возможные флаги, определённые классом MediaTracker, это LOADING, ABORTED, ERRORED и COMPLETE. Состояние изображения, которое ещё не начало загружаться, равно нулю.
Если значение load равно true, то этот метод запускает загрузку любых изображений, которые ещё не загружаются.
- Параметры:
-
load- еслиtrue, запустить загрузку любых изображений, которые ещё не загружаются - Возвращает:
- побитовое включительно ИЛИ состояния всех отслеживаемых медиа
- См. также:
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
public Object[] getErrorsID(int id)
- Параметры:
-
id- идентификатор изображений для проверки - Возвращает:
- массив объектов медиа, отслеживаемых этим трекером медиа с указанным идентификатором и имеющих ошибку, или
null, если таких нет - См. также:
waitForID
public void waitForID(int id) throws InterruptedException
Если при загрузке или масштабировании изображения произошла ошибка, это изображение считается загруженным. Используйте методы isErrorAny и isErrorID для проверки ошибок.
- Параметры:
-
id- идентификатор изображений для проверки - Исключения:
-
InterruptedException- если какой-либо поток прервал этот поток. - См. также:
waitForID
public boolean waitForID(int id, long ms) throws InterruptedException
ms. Если при загрузке или масштабировании изображения произошла ошибка, это изображение считается загруженным. Используйте методы statusID, isErrorID и isErrorAny для проверки ошибок.
- Параметры:
-
id- идентификатор изображений для проверки -
ms- время ожидания завершения загрузки в миллисекундах - Возвращает:
-
true, если загрузка завершилась вовремя; иначеfalse - Исключения:
-
InterruptedException- если какой-либо поток прервал этот поток. - См. также:
statusID
public int statusID(int id, boolean load)
Возможные флаги, определённые классом MediaTracker, — LOADING, ABORTED, ERRORED и COMPLETE. Статус изображения, которое не начало загружаться, равен нулю.
Если значение load равно true, то этот метод запускает загрузку любых изображений, которые ещё не загружаются.
- Параметры:
-
id- идентификатор изображений для проверки -
load- еслиtrue, начать загрузку любых изображений, которые ещё не загружаются - Возвращает:
- побитовое включительно ИЛИ статуса всех медиа с указанным идентификатором, которые отслеживаются
- См. также:
removeImage
public void removeImage(Image image)
- Параметры:
-
image- изображение, которое нужно удалить - С:
- 1.1
- См. также:
removeImage
public void removeImage(Image image, int id)
Image, отслеживаемые по указанному ID, удаляются независимо от масштаба.- Параметры:
-
image- изображение, которое нужно удалить -
id- ID отслеживания, из которого нужно удалить изображение - С:
- 1.1
- См. также:
removeImage
public void removeImage(Image image, int id, int width, int height)
- Параметры:
-
image- изображение, которое нужно удалить -
id- ID отслеживания, из которого нужно удалить изображение -
width- ширина для удаления (-1 для без масштаба) -
height- высота для удаления (-1 для без масштаба) - С:
- 1.1
- См. также:
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/MediaTracker.html