Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 17:

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

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

Загрузка фильмов на монтажные столы

Загружая материалы из внешнего источника, необходимо указать для них место внутри основного фильма (будем называть его принимающим фильмом). Для внешних файлов SWF и JPG это может быть либо монтажный стол, либо уровень.

Примечание Файлы MP3 нельзя загрузить ни на монтажный стол, ни в уровень. С ними дело обстоит совершенно иначе; это описано в одном из следующих разделов этого урока – Динамическая загрузка MP3.

Примечание О загрузке фильмов в уровень рассказано в одном из следующих разделов урока – Загрузка фильмов в уровень.

В качестве монтажного стола для загрузки может выступать любой существующий в принимающем фильме экземпляр клипа. Собственно, любой экземпляр клипа в принимающем фильме является потенциальным адресом для внешних SWF и JPG.

Синтаксис загрузки фильма на монтажный стол выглядит следующим образом:

loadMovie ("myExternalMovie.swf", "_root.myPlaceholderClip");

Примечание Путь к внешнему источнику (или URL) может быть прописан в абсолютном или относительном виде, в зависимости от того, где находится фильм.

Приведенное здесь действие загрузит myExternalMovie.swf в экземпляр клипа по адресу _root.myPlaceholderClip ; в результате текущий монтажный стол по этому адресу будет замещен загруженным. Таким образом, экземпляр клипа, предназначенный для загрузки внешнего носителя, есть не что иное, как пустая оболочка с монтажным столом – независимо от того, был ли создан этот экземпляр клипа в процессе разработки проекта (то есть вручную помещен на сцену) или загружен динамически по ходу воспроизведения фильма.

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

  • Регистрационная точка загружаемого внешнего файла должна соответствовать регистрационной точке экземпляра, в который производится загрузка.
  • Если целевой экземпляр, в который загружен внешний файл, каким-либо образом трансформируется (например, вращается), те же трансформации претерпевает и загруженный файл.
  • После того, как внешний файл загружен в адресный экземпляр, им можно управлять посредством ActionScript, ссылаясь на адрес экземпляра, в который он загружен. Иными словами, внешний загруженный файл сам становится этим экземпляром. Например, если мы загрузили внешний фильм в экземпляр с адресом _root.myPlaceholderClip, то можем управлять этим загруженным фильмом, ссылаясь на этот самый адрес.

Примечание Подробнее о системе адресации см. Урок 3.

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

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

Этот файл (c которым мы будем работать на протяжении всего урока) не содержит скриптов, хотя кадр с системой клипов уже создан, чтобы мы могли сразу сосредоточиться на ActionScript. Сейчас проект выглядит скучновато, но к концу урока он обогатится материалами из внешних источников.

Фильм состоит из девяти слоев. Самый нижний слой, Loaded Background, содержит два элемента: текстовое поле в левом нижнем углу с надписью "loading background…" и пустой экземпляр клипа (без графического содержания) под названием background, помещенный в точку с координатами 0 по X и 0 по Y. В дальнейшем этот самый экземпляр будет содержать фоновое оформление нашего проекта – оно будет загружаться из внешнего источника. Второй слой, banner back, содержит экземпляр клипа (под именем bannerBack ) в виде белого прямоугольника с надписью "loading banner…", а также кнопку, подписанную Banner On/Off. Этим слоем мы займемся в другом упражнении. В третьем слое, nextprev buttons, находятся две кнопки-стрелки, которые мы запрограммируем в следующем упражнении. Четвертый слой, panel, содержит картинку, изображающую серую прямоугольную панель в центре. В пятом слое, placeholder, находится еще один пустой экземпляр клипа, под названием placeholder (он понадобится нам в следующем упражнении), а также экземпляр клипа maskClip – он находится слева от сцены и выглядит как большой черный квадрат. Следующий слой, paneltop, содержит динамическое текстовое поле с именем title, а также изображение черной прямоугольной панели – то и другое расположено в правом верхнем углу серой панели. В слое progress bar находится экземпляр клипа под названием progress, он нам пригодится в одном из следующих упражнений. И наконец, слой logo – он содержит просто картинку, логотип нашего проекта, а в традиционный наш слой Action мы будем помещать большую часть скриптов, обеспечивающих работу проекта.

В этом упражнении нас будет интересовать главным образом пустой экземпляр клипа под названием background, что находится в левом верхнем углу сцены. Мы начнем наш проект с того, что запрограммируем загрузку в этот экземпляр одного (из трех) случайно выбранного SWF.


  1. В своем файловом менеджере (Проводнике Windows или другом) откройте папку Lesson17/Assets.

В этом каталоге вы найдете файлы, которые будут динамически загружаться в наш проект. Перечислим их: background0.swf, background1.swf, background2.swf, banner0.swf, banner1.swf, banner2.swf, image0.jpg, image1.jpg, image2.jpg, music0.mp3, music1.mp3 и music2.mp3.

В этом упражнении мы будем иметь дело с первыми тремя файлами из перечисленных. Они представляют собой несложные анимационные фильмы, которые послужат фоном для нашего проекта (размер каждого из этих фильмов – 550 на 400, такой же, как у нашего принимающего фильма). Можете открыть эти файлы и просмотреть во Flash-проигрывателе. Запомните имена файлов.

  1. Вернитесь во Flash. Откройте панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт:
backgrounds = new Array ("background0.swf", "background1.swf", "background2.swf");

Этой строкой будет создан новый массив с именем backgrounds, содержащий ссылки на наши фоновые фильмы. Учтите, что в нашем случае указывать полный путь к файлам не требуется лишь потому, что основной SWF нашего проекта будет находиться в том же каталоге, что и загружаемые файлы.

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

  1. После предыдущей строки скрипта добавьте описание функции:
function randomBackground () {
  randomNumber = random (backgrounds.length);
  loadMovie (backgrounds[randomNumber], "_root.background");
}

Мы создали функцию randomBackground(). Давайте посмотрим, как она работает.

Первая строка генерирует случайное число – от нуля до числа, равного длине массива backgrounds. Поскольку в массиве backgrounds три элемента, переменной randomNumber будет присвоено одно из трех возможных значений: 0, 1 или 2. В следующей строке функции эта переменная используется для определения фонового фильма, который следует загрузить. Если, например, будет генерировано и присвоено переменной randomNumber значение 1, действие loadMovie() будет выглядеть так:

loadMovie (backgrounds[1], "_root.background");

Поскольку элемент 1 массива backgrounds имеет значение "background1.swf", эта строка будет подставлена и мы получим

loadMovie ("background1.swf", "_root.background");

Таким образом, в этом сценарии развития событий внешний фильм с именем background1.swf будет загружен в экземпляр клипа по адресу _root.background. Это, как вы помните, ссылка на пустой экземпляр клипа в левом верхнем углу сцены. Поскольку внешний загружаемый фильм и принимающий фильм имеют один и тот же размер (550 на 400), внешний фоновый фильм покроет всю сцену.

  1. После описания функции добавьте вызов функции:
randomBackground();

Поскольку этот вызов функции находится в кадре 1 нашего фильма, он будет осуществлен сразу после начала воспроизведения фильма.

Совет При большом размере файла внешнего загружаемого фильма (как, впрочем и любого другого фильма) может потребоваться предзагрузчик. О том, как создать и запрограммировать предзагрузчик, см. Урок 15 – Привязка динамики к времени или кадрам.

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

Сразу после начала воспроизведения в проект в качестве фона будет загружен один из трех внешних фильмов.

Примечание Экземпляр клипа background (в который загружается внешний фильм) находится в самом нижнем слое основного фильма; прочее содержимое сцены располагается поверх него. Загруженный в этот экземпляр внешний фильм останется на той же глубине, то есть будет находиться в самом нижнем слое, под всем остальным.


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

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

В нашем проекте загружается случайно выбранный внешний фильм, для нормального же веб-сайта может понадобиться панель навигации или что-то вроде того. Другими словами, по нажатию, например, кнопки Продукты в клип content будет загружаться фильм products.swf. В общем, тут может быть множество вариантов.

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

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

 

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

Вот задание:

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

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003