| |
Images[0].getWidth(this);
m_nImgHeight = m_Images[0].getHeight(this);
}
// Перерисовываем окно аплета
repaint();
// Запускаем цикл рисования изображений
while (true)
{
try
{
// Рисуем текущее изображение
displayImage(m_Graphics);
// Увеличиваем номер текущего изображения
m_nCurrImage++;
// Если достигли максимального номера,
// начинаем с самого начала
if(m_nCurrImage == NUM_IMAGES)
m_nCurrImage = 0;
// Выполняем задержку в 30 миллисекунд
Thread.sleep(30);
}
// Если в процессе рисования возникло
// исключение, останавливаем задачу
catch (InterruptedException e)
{
stop();
}
}
}
}
Листинг 4.8 содержит исходный текст документа HTML, созданного для аплета
CDRotation.
Листинг 4.8. Файл CDRotation\CDRotation.html
CDRotation
The source.
Описание исходных текстов
Рассмотрим наиболее важные методы нашего приложения.
Метод start
В задачу метода start, который получает управление при отображении окна
аплета, входит создание и запуск задачи, отображающий кадры видеофильма с
изображением вращающегося компакт-диска:
if (m_CDRotation == null)
{
m_CDRotation = new Thread(this);
m_CDRotation.start();
}
Задача создается как объект класса Thread, причем конструктору передается
ссылка на главный класс аплета. Поэтому при запуске задачи управление получит
метод run, определенный в классе аплета.
Метод stop
Метод stop останавливает работу задачи, когда окно аплета исчезает с экрана:
if(m_CDRotation != null)
{
m_CDRotation.stop();
m_CDRotation = null;
}
Для остановки вызывается метод stop.
Метод paint
Сразу после получения управления, метод paint закрашивает окно аплета белым
цветом и рисует вокруг него черную рамку.
Затем метод проверяет содержимое флага m_fAllLoaded. Этот флаг установлен в
значение true, когда все кадры видеофильма загружены и сброшен в значение false,
когда загрузка кадров еще не завершена. Последняя ситуация возникает всегда
при первом вызове метода paint.
Если все изображения загружены, метод paint вызывает метод displayImage,
определенный в нашем приложении:
if(m_fAllLoaded)
{
displayImage(g);
}
Этот метод, о котором мы еще расскажем подробнее, отображает в окне аплета
текущий кадр видеофильма.
Если же кадры видеофильма еще не загружены, в окне аплета отображается
соответствующее сообщение:
else
g.drawString("Подождите, идет загрузка...",
10, dimAppWndDimension.height / 2);
Метод run
Метод run работает в рамках от
|
|