18c0693f

Слежение за процессом загрузки


Если вы хотя бы раз видели, как изображение загружается из Internet, то заметили, что оно появляется на экране по частям по мере загрузки. Это происходит в том случае, когда системное свойство awt.image. incrementalDraw имеет значение true.

При поступлении каждой порции изображения браузер вызывает логический метод imageUpdate () интерфейса ImageObserver. Аргументы этого метода содержат информацию о процессе загрузки изображения img. Рассмотрим их:

imageUpdate(Image img, int status, int x, int y, int width, int height);

Аргумент status содержит информацию о загрузке в виде одного целого числа, которое можно сравить со следующими константами интерфейса

ImageObserver:

WIDTH

— ширина уже загруженной части изображения известна, и может быть получена из аргумента width;

HEIGHT

— высота уже загруженной части изображения известна, и может быть получена из аргумента height;'

PROPERTIES

— свойства изображения уже известны, их можно получить методом getProperties{) класса Image;

SOMEBITS

— получены пикселы, достаточные для рисования масштабированной версии изображения; аргументы x, y, width, height определены;

FRAMEBITS

— получен следующий кадр изображения, содержащего несколько кадров; аргументы x, y, width, height не определены;

ALLBITS

— все изображение получено, аргументы x, y, width, height не содержат информации;

ERROR

— загрузка прекращена, рисование прервано, определен бит

ABORT

;

ABORT

— загрузка прервана, рисование приостановлено до прихода следующей порции изображения.

Вы можете переопределить этот метод в своем апплете и использовать его аргументы для слежения за процессом загрузки и определения момента полной загрузки.

Другой способ отследить окончание загрузки — воспользоваться методами класса MediaTracker. Они позволяют проверить, не окончена ли загрузка, или приостановить работу апплета до окончания загрузки. Один экземпляр класса MediaTracker может следить за загрузкой нескольких зарегистрированных в нем изображений.





Все публикации раздела