Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4621 / 581 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 17:

Загрузка внешних материалов

< Урок 16 || Урок 17: 12345678

Загрузка фильмов в уровни

До сих пор мы с вами загружали внешний контент (файлы SWF и JPG) в существующие экземпляры клипов. Однако существует и другая возможность – эти материалы можно загружать в уровни ( levels ). Уровни – это как бы "слои" фильмов (SWF), одновременно воспроизводимых в окне Flash-проигрывателя. Например: вы просматриваете HTML-страницу, содержащую Flash-фильм. Создается окно Flash Player и в него загружается начальный фильм (заданный тегами <object> и <embed> ). Этот фильм располагается в окне проигрывателя в Уровне 0. В уровни, находящиеся выше, можно загрузить дополнительные SWF-фильмы.

Используется для этого несколько модифицированное действие loadMovie(), которым мы пользовались доселе:


loadMovieNum("myExternalMovie.swf", 1);

Как видите, тут два отличия от того синтаксиса, которым мы пользовались при загрузке внешних материалов в экземпляр клипа: во-первых, здесь применен метод loadMovieNum() вместо loadMovie(), а во-вторых – вместо адреса целевого экземпляра здесь указывается номер уровня. Приведенное действие загрузит myExternalMovie.swf в Уровень 1 окна Flash-проигрывателя.

Относительно загрузки фильмов в уровни важно помнить следующее.

  • В каждый момент времени в каждом уровне может находиться не более одного SWF (или JPG).
  • Не обязательно при загрузке соблюдать последовательность уровней (можно загрузить фильм в Уровень 50, оставив уровни с 1 по 49 пустыми).
  • Содержимое фильмов высших уровней перекрывает содержимое расположенных ниже (то есть содержимое фильма в Уровне 10 перекроет содержимое уровней с номерами 9 и меньше).
  • Частота кадров фильма, загруженного в Уровень 0 (начального фильма) является главенствующей; остальные фильмы ускоряются или замедляются до этой частоты. Например, если фильм в Уровне 0 имеет частоту 24 кадра в секунду, а внешний загруженный фильм – 12, то внешний фильм будет проигрываться с частотой основного фильма, то есть вдвое быстрее. Создавая проект, сверяйте частоту кадров всех используемых фильмов, иначе окончательный результат может выглядеть весьма неожиданно.
  • Если вы загрузите фильм в Уровень 0, то все остальные уровни Flash Player автоматически выгрузит (удалит), останется только новый фильм в Уровне 0.

В этом упражнении мы "научим" наш проект загружать в уровни случайно выбранные фильмы-баннеры.

  1. Откройте файл virtualaquarium4.fla из папки Lesson17/Assets.

Это тот самый файл, над которым мы работали в предыдущем упражнении. В этом упражнении мы добавим скрипты в кадр 1. Поскольку мы будем загружать наши фильмы-баннеры в уровни, а не в экземпляры, никакие элементы проекта трогать нам не понадобится. Прямоугольник в левом верхнем углу (имя экземпляра bannerback ) помещен в сцену просто из соображений дизайна.

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

  1. В своем файловом менеджере откройте папку Lesson17/Assets.

Найдите три фильма:

  • banner0.swf
  • banner1.swf
  • banner2.swf

Это несложные анимационные фильмы (каждый размером 200 на 60 пикселей). Наш проект будет загружать один из них (случайно выбранный) в уровень.

  1. Вернитесь во Flash. Открыв панель Действия, выделите кадр 1 слоя Actions и вставьте после строки скрипта, создающей массив slides (см. предыдущее упражнение) добавьте следующую строку:
banners = new Array("banner0.swf", "banner1.swf", "banner2.swf");

Этот скрипт создает новый массив, под названием banners, который будет содержать пути к нашим внешним фильмам-баннерам.

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

  1. После описания функции changeSlide() вставьте описание новой функции:
function randomBanner() {
  randomNumber = random(banners.length);
  loadMovieNum (banners[randomNumber], 1);
}

Этим мы создали функцию randomBanner() –работает она подобно функции randomBackground(), которую мы создали в первом упражнении урока. Различие в том, что здесь выполняется действие loadMovieNum(), и загрузка фильма происходит в Уровень 1. При каждом вызове этой функции в Уровень 1 будет загружаться случайно выбранный баннер, заменяя тот, что был в этом уровне.

  1. После вызова функции changeSlide() вставьте вызов новой функции:
randomBanner();

Этот вызов функции нужен для загрузки первого баннера сразу после начала воспроизведения основного фильма. Мы сделаем еще кое-что: применим действие setInterval(), чтобы эта функция выполнялась регулярно, через определенный промежуток времени.

  1. После вызова функции changeSlide() вставьте вызов новой функции:
setInterval(randomBanner, 10000);

Действием setInterval() мы запрограммировали вызов функции randomBanner() через каждые 10000 миллисекунд (10 секунд). Таким образом, в нашем проекте будет происходить автоматическая ротация баннеров. Кстати, точно так же можно применить действие setInterval() для вызова любой функции или метода объекта.

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie).

Сразу после начала воспроизведения фильма в проект будет загружен один из баннеров. Основной фильм автоматически загрузился в Уровень 0, а баннер – в Уровень 1, так что он окажется поверх всего, что есть в основном фильме. Если перезапустить фильм, возможно, загрузится другой баннер. Однако вы, наверное, заметили одну неправильность: баннер всякий раз располагается не там, где мы хотели – задумано-то было, чтобы он помещался поверх белого прямоугольника.


Дело в том, что левый верхний угол фильма-баннера (его регистрационная точка) по умолчанию располагается в точке с координатами 0 и 0 – там, где находится регистрационная точка фильма в Уровне 0. Вот и получается, что левый верхний угол загружаемого фильма автоматически совмещается с левым верхним углом фильма в Уровне 0. Между прочим, так будет со всяким фильмом, загруженным в любой уровень.

Баннер, естественно, не перекрывает весь основной фильм – ведь его размер 200 на 60, а главный фильм – 550 на 400. А ошибочку с положением баннера мы исправим в следующем упражнении; он у нас таки будет находиться точно над белым прямоугольником.

  1. Закройте тестовый фильм и сохраните файл под именем virtualaquarium5.fla.

Это упражнение закончено. Файл можно не закрывать, мы продолжим работу с ним в следующих упражнениях.

< Урок 16 || Урок 17: 12345678
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт: