Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
ельной задачи. Он занимается последовательным 
рисованием кадров нашего видеофильма.
   Прежде всего метод run записывает нулевое значение в поле m_nCurrImage, 
хранящее номер текущего отображаемого кадра:
m_nCurrImage = 0;
   Далее выполняется проверка, загружены ли все кадры видеофильма, для чего 
анализируется содержимое флага m_fAllLoaded.
   Если изображения не загружены (а в самом начале так оно и есть) метод run 
перерисовывает окно аплета и получает контекст отображения для этого окна. 
Затем создается массив объектов Image для хранения кадров видеофильма:
m_Images   = new Image[NUM_IMAGES];
   Метод run создает также объект класса MediaTracker для ожидания загрузки 
всех кадров видеофильма:
MediaTracker tracker = new MediaTracker(this);
   Далее метод run в цикле загружает изображения и добавляет их в объект класса 
MediaTracker для того чтобы можно было дождаться загрузки всех кадров:
for (int i = 0; i < NUM_IMAGES; i++)
{
  strImage = "images/cdimg0" + ((i < 10) ? "0" : "") +
    i + ".gif";
  m_Images[i] = getImage(getDocumentBase(), strImage);
  tracker.addImage(m_Images[i], 0);
}
   Здесь предполагается, что файлы изображений находятся в каталоге images, 
который, в свою очередь, размещен там же, где и двоичный файл аплета. 
   Имена файлов, составляющих отдельные кадры, начинаются с префикса cdimg0, 
вслед за которым идет номер кадра (00, 01, 02, и так далее), и расширение имени 
.gif.
   Ожидание загрузки кадров выполняется с помощью метода waitForAll, о котором 
мы вам уже рассказывали:
try
{
  tracker.waitForAll();
  m_fAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
}
   После окончания ожидания флаг завершения загрузки устанавливается только в 
том случае, если метод isErrorAny вернул значение false, то есть если не было 
никаких ошибок.
   Если же произошла ошибка, в окне аплета отображается соответствующее 
сообщение, после чего работа метода run (и, следовательно, работа созданной для 
него задачи) заканчивается:
if(!m_fAllLoaded)
{
  stop();
  m_Graphics.drawString(
    "При загрузке изображений произошла ошибка",
    10, size().height / 2);
  return;
}
   В случае удачной загрузки всех кадров метод run получает ширину и высоту 
первого кадра видеофильма и сохраняет эти значения в переменных m_nImgWidth и 
m_nImgHeight:
m_nImgWidth  = m_Images[0].getWidth(this);
m_nImgHeight = m_Images[0].getHeight(this);
   Далее окно аплета перерисовывается:
repaint();
   При этом метод paint отображает в окне аплета первый кадр видеофильма.
   На следующем этапе работы метода run запускается цикл отображения кадров 
фильма:
while (true)
{
  try
  {
    displayImage(m_Graphics);
    m_nCurrImage++;
    if(m_nCurrImage == N
 
<<-[Весь Текст]
Страница: из 275
 <<-