| |
e не нужны
return !fAllLoaded;
}
// -------------------------------------------------------
// paint
// Метод paint, выполняющий рисование в окне аплета
// -------------------------------------------------------
public void paint(Graphics g)
{
// Определяем текущие размеры окна аплета
Dimension dimAppWndDimension = size();
// Выбираем в контекст отображения белый цвет
g.setColor(Color.white);
// Закрашиваем внутреннюю область окна аплета
g.fillRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
// Выбираем в контекст отображения черный цвет
g.setColor(Color.black);
// Рисуем рамку вокруг окна аплета
g.drawRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
if(fAllLoaded == false)
{
// Рисуем сообщение о начале загрузки
g.drawString("Подождите, идет загрузка...",
20, dimAppWndDimension.height / 2);
}
// Рисуем изображение фона
g.drawImage(BkgImg, 1, 1,
dimAppWndDimension.width - 2,
dimAppWndDimension.height - 2, this);
}
}
В листинге 4.6 вы найдете исходный текст документа HTML, созданного
автоматически для нашего аплета.
Листинг 4.6. Файл DrawImageObserver\DrawImageObserver.html
DrawImageObserver
The source.
Описание исходных текстов
Наше приложение переопределяет метод imageUpdate, в котором отслеживает
процесс загрузки фонового изображения.
Опишем основные методы, определенные в приложении DrawImageObserver.
Метод init
В процессе инициализации аплета метод init создает объект класса Image,
соответствующий изображению фона:
public void init()
{
BkgImg = getImage(getCodeBase(), "bkg.gif");
}
Как вы уже знаете, при этом реальная загрузка файла изображения не
выполняется.
Метод paint
Свою работу метод paint начинает с раскрашивания окна аплета и рисования
рамки вокруг окна. Затем метод проверяет флаг fAllLoaded, начальное значение
которого равно false:
if(fAllLoaded == false)
{
g.drawString("Подождите, идет загрузка...",
20, dimAppWndDimension.height / 2);
}
Флаг fAllLoaded служит индикатором полной загрузки изображения и
устанавливается методом imageUpdate, отслеживающим загрузку. Пока значение
этого флага равно false, метод paint отображает в окне аплета сообщение о том,
что идет процесс загрузки.
Когда изображение будет полностью загружено, метод imageUpdate устанавливает
значение флага fAllLoaded, равное true, а затем принудительно перерисовывает
окно аплета, вызывая метод repaint. При этом метод paint рисует в окне аплета
полностью загруженное изображение фона:
g.drawImage(BkgImg, 1, 1,
dimAppWndDimension.width - 2,
dimAppWndDimension.height - 2, this);
Метод imageUpdate
Метод imageUpdate периодически вызывается в процессе загрузки изображения,
конструируя каждый раз значение флага полной загрузки fAllLoaded следующим
образом:
fAllLoaded = ((flags & ALLBITS) != 0);
Когд изображение будет полностью загружено, в параметре flags метода
imageUpdate будет установлен флаг ALLBITS, после чего флаг fAllLoaded будет
установлен в значение true.
Как только это произойдет, метод imageUpdate вызовет метод repaint, выполнив
принудительную перерисовку окна аплета:
if(fAllLoaded)
repaint();
При этом метод paint нарисует в окне аплета изображение фона, закрасив им
сообщение о ходе процесса загрузки изображения.
Метод imageUpdate должен возвратить значение false или true. Если
изображение еще не загружено, возвращается значение true:
return !fAllLoaded;
При этом метод imageUpdate будет вызываться еще раз для отслеживания
процесса загрузки.
Когда загрузка будет завершена, метод imageUpdate возвратит значение false,
после чего этот метод вызываться больше не будет.
Видео в окне аплета
Наиболее динамичные страницы сервера Web содержат анимационные изображения в
виде небольших видеофильмов. Как мы рассказывали в 29 томе “Библиотеки
системного программиста”, который называется “Сервер Web своими руками”, вы
можете п
|
|