| |
------------------------------------------
// stop
// Метод вызывается, когда окно аплета исчезает с экрана
// -------------------------------------------------------
public void stop()
{
if (m_CDRotation != null)
{
m_CDRotation.stop();
m_CDRotation = null;
}
}
// -------------------------------------------------------
// run
// Метод, который работает в рамках отдельной задачи
// Он рисует в окне аплета изображения - кадры
// клипа "вращающийся компакт-диск"
// -------------------------------------------------------
public void run()
{
// Инициализируем номер текущего изображения
m_nCurrImage = 0;
// Проверяем, все ли изображения загружены.
// Если нет, загружаем их
if (!m_fAllLoaded)
{
// Перерисовываем окно аплета
repaint();
// Получаем контекст отображения для окна
m_Graphics = getGraphics();
// Создаем массив изображений
m_Images = new Image[NUM_IMAGES];
// Создаем объект MediaTracker для контроля
// загружки изображений
MediaTracker tracker = new MediaTracker(this);
// Переменная для хранения имени файла изображения
String strImage;
// Цикл загрузки изображений
for (int i = 0; i < NUM_IMAGES; i++)
{
// Записываем в строку strImage имя текущего файла
// с изображением
strImage = "images/cdimg0" +
((i < 10) ? "0" : "") + i + ".gif";
// Инициируем получение изображения
m_Images[i] = getImage(getDocumentBase(), strImage);
// Добавляем изображение в объект MediaTracker
tracker.addImage(m_Images[i], 0);
}
// Ожидаем окончание загрузки всех изображений
try
{
tracker.waitForAll();
// Если не было ошибок, устанавливаем флаг
// окончания загрузки
m_fAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
}
// Если при загрузке изображений произошла ошибка,
// останавливаем задачу и рисуем сообщение об
// ошибке
if (!m_fAllLoaded)
{
stop();
m_Graphics.drawString(
"При загрузке изображений произошла ошибка",
10, size().height / 2);
return;
}
// Сохраняем ширину и высоту первого изображения
m_nImgWidth = m
|
|