Дострочное пересдача экзамена
|
Загрузка внешних материалов
Загрузка фильмов в уровни
До сих пор мы с вами загружали внешний контент (файлы 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.
В этом упражнении мы "научим" наш проект загружать в уровни случайно выбранные фильмы-баннеры.
- Откройте файл virtualaquarium4.fla из папки Lesson17/Assets.
Это тот самый файл, над которым мы работали в предыдущем упражнении. В этом упражнении мы добавим скрипты в кадр 1. Поскольку мы будем загружать наши фильмы-баннеры в уровни, а не в экземпляры, никакие элементы проекта трогать нам не понадобится. Прямоугольник в левом верхнем углу (имя экземпляра bannerback ) помещен в сцену просто из соображений дизайна.
Прежде, чем перейти к действиям, давайте вновь обратимся к содержимому каталога, где содержатся наши внешние материалы для загрузки.
- В своем файловом менеджере откройте папку Lesson17/Assets.
Найдите три фильма:
- banner0.swf
- banner1.swf
- banner2.swf
Это несложные анимационные фильмы (каждый размером 200 на 60 пикселей). Наш проект будет загружать один из них (случайно выбранный) в уровень.
- Вернитесь во Flash. Открыв панель Действия, выделите кадр 1 слоя Actions и вставьте после строки скрипта, создающей массив slides (см. предыдущее упражнение) добавьте следующую строку:
banners = new Array("banner0.swf", "banner1.swf", "banner2.swf");
Этот скрипт создает новый массив, под названием banners, который будет содержать пути к нашим внешним фильмам-баннерам.
Теперь давайте создадим функцию, которая будет выбирать случайным образом выбирать один из фильмов-баннеров и загружать его в наш проект.
- После описания функции changeSlide() вставьте описание новой функции:
function randomBanner() { randomNumber = random(banners.length); loadMovieNum (banners[randomNumber], 1); }
Этим мы создали функцию randomBanner() –работает она подобно функции randomBackground(), которую мы создали в первом упражнении урока. Различие в том, что здесь выполняется действие loadMovieNum(), и загрузка фильма происходит в Уровень 1. При каждом вызове этой функции в Уровень 1 будет загружаться случайно выбранный баннер, заменяя тот, что был в этом уровне.
- После вызова функции changeSlide() вставьте вызов новой функции:
randomBanner();
Этот вызов функции нужен для загрузки первого баннера сразу после начала воспроизведения основного фильма. Мы сделаем еще кое-что: применим действие setInterval(), чтобы эта функция выполнялась регулярно, через определенный промежуток времени.
- После вызова функции changeSlide() вставьте вызов новой функции:
setInterval(randomBanner, 10000);
Действием setInterval() мы запрограммировали вызов функции randomBanner() через каждые 10000 миллисекунд (10 секунд). Таким образом, в нашем проекте будет происходить автоматическая ротация баннеров. Кстати, точно так же можно применить действие setInterval() для вызова любой функции или метода объекта.
- Выполните команду Управление > Проверить фильм (Control > Test Movie).
Сразу после начала воспроизведения фильма в проект будет загружен один из баннеров. Основной фильм автоматически загрузился в Уровень 0, а баннер – в Уровень 1, так что он окажется поверх всего, что есть в основном фильме. Если перезапустить фильм, возможно, загрузится другой баннер. Однако вы, наверное, заметили одну неправильность: баннер всякий раз располагается не там, где мы хотели – задумано-то было, чтобы он помещался поверх белого прямоугольника.
Дело в том, что левый верхний угол фильма-баннера (его регистрационная точка) по умолчанию располагается в точке с координатами 0 и 0 – там, где находится регистрационная точка фильма в Уровне 0. Вот и получается, что левый верхний угол загружаемого фильма автоматически совмещается с левым верхним углом фильма в Уровне 0. Между прочим, так будет со всяким фильмом, загруженным в любой уровень.
Баннер, естественно, не перекрывает весь основной фильм – ведь его размер 200 на 60, а главный фильм – 550 на 400. А ошибочку с положением баннера мы исправим в следующем упражнении; он у нас таки будет находиться точно над белым прямоугольником.
- Закройте тестовый фильм и сохраните файл под именем virtualaquarium5.fla.
Это упражнение закончено. Файл можно не закрывать, мы продолжим работу с ним в следующих упражнениях.