Microsoft Visual J++. Создание приложений и аплетов на языке Java


Применение интерфейса ImageObserver - часть 2


Здесь в качестве ссылки на интерфейс ImageObserver мы передали значение this. При этом будет применен интерфейс нашего аплета. Соответственно, нам нужно определить в классе аплета метод imageUpdate, который будет вызываться в процессе загрузки изображений.

Ниже мы привели возможный вариант реализации этого метода, который позже будет описан в деталях:

public boolean imageUpdate(Image img, int flags,

  int x, int y, int w, int h)

{

  // Проверяем, все ли биты изображения загружены

  fAllLoaded = ((flags & ALLBITS) != 0);

 

  // Если все, перерисовываем окно

  if(fAllLoaded)

    repaint();

 

  // Если все биты загружены, дальнейшие вызовы

  // метода imageUpdate не нужны

  return !fAllLoaded;

}

Через первый параметр img методу imageUpdate передается ссылка на изображение, загрузка которого отслеживается.

Параметр flags отражает состояние процесса загрузки.

Через остальные параметры x, y, w и h передаются, соответственно, координаты и размеры изображения.

Основное, что должен делать метод imageUpdate для отслеживания процесса загрузки - это проверять флаги flags, дожидаясь установки нужных флагов.

Флаги определены следующим образом:

public final static int WIDTH;

public final static int HEIGHT = 2;

public final static int PROPERTIES = 4;

public final static int SOMEBITS = 8;

public final static int FRAMEBITS = 16;

public final static int ALLBITS = 32;

public final static int ERROR = 64;

public final static int ABORT = 128;

Ниже мы привели краткое описание перечисленных выше флагов.

Флаг

Описание

WIDTH

Изображение загружено настолько, что стала доступна его ширина. Значение ширины изображения можно получить из параметра w метода imageUpdate

HEIGHT

Аналогично предыдущему, но для высоты изображения. Высоту изображения можно получить из параметра h метода imageUpdate

PROPERTIES

Стали доступны свойства изображения, которые можно получить методом getProperty класса Image. В нашей книге мы опустили описание этого метода

SOMEBITS

Стали доступны биты изображения для рисования в масштабе. Через параметры x, y, h и w передаются координаты и размеры прямоугольной области, которая ограничивает загруженную часть изображения

FRAMEBITS

Загружен очередной фрейм изображения,  состоящего из нескольких фреймов. Параметры x, y, h и w следует игнорировать

ALLBITS

Изображение загружено полностью. Параметры x, y, h и w следует игнорировать

ERROR

При загрузке произошла ошибка

ABORT

Загрузка изображения была прервана или отменена

Анализируя состояние флагов, метод imageUpdate может следить за ходом загрузки изображений, отображая, например, процент завершения процесса загрузки или выполняя какие-либо другие действия.

Если вам нужно только дождаться завершения процесса загрузки, достаточно использовать флаг ALLBITS. Для проверки ошибок воспользуйтесь флагами ERROR и ABORT.




Начало  Назад  Вперед



Книжный магазин