Дострочное пересдача экзамена
|
Загрузка внешних материалов
Загрузка фильмов на монтажные столы
Загружая материалы из внешнего источника, необходимо указать для них место внутри основного фильма (будем называть его принимающим фильмом). Для внешних файлов SWF и JPG это может быть либо монтажный стол, либо уровень.
Примечание Файлы MP3 нельзя загрузить ни на монтажный стол, ни в уровень. С ними дело обстоит совершенно иначе; это описано в одном из следующих разделов этого урока – Динамическая загрузка MP3.
Примечание О загрузке фильмов в уровень рассказано в одном из следующих разделов урока – Загрузка фильмов в уровень.
В качестве монтажного стола для загрузки может выступать любой существующий в принимающем фильме экземпляр клипа. Собственно, любой экземпляр клипа в принимающем фильме является потенциальным адресом для внешних SWF и JPG.
Синтаксис загрузки фильма на монтажный стол выглядит следующим образом:
loadMovie ("myExternalMovie.swf", "_root.myPlaceholderClip");
Примечание Путь к внешнему источнику (или URL) может быть прописан в абсолютном или относительном виде, в зависимости от того, где находится фильм.
Приведенное здесь действие загрузит myExternalMovie.swf в экземпляр клипа по адресу _root.myPlaceholderClip ; в результате текущий монтажный стол по этому адресу будет замещен загруженным. Таким образом, экземпляр клипа, предназначенный для загрузки внешнего носителя, есть не что иное, как пустая оболочка с монтажным столом – независимо от того, был ли создан этот экземпляр клипа в процессе разработки проекта (то есть вручную помещен на сцену) или загружен динамически по ходу воспроизведения фильма.
При загрузке внешнего файла на адресный монтажный стол важно помнить следующие моменты.
- Регистрационная точка загружаемого внешнего файла должна соответствовать регистрационной точке экземпляра, в который производится загрузка.
- Если целевой экземпляр, в который загружен внешний файл, каким-либо образом трансформируется (например, вращается), те же трансформации претерпевает и загруженный файл.
- После того, как внешний файл загружен в адресный экземпляр, им можно управлять посредством ActionScript, ссылаясь на адрес экземпляра, в который он загружен. Иными словами, внешний загруженный файл сам становится этим экземпляром. Например, если мы загрузили внешний фильм в экземпляр с адресом _root.myPlaceholderClip, то можем управлять этим загруженным фильмом, ссылаясь на этот самый адрес.
Примечание Подробнее о системе адресации см. Урок 3.
Внешние SWF файлы, загружаемые в адресные монтажные столы, могут быть очень простыми, вроде анимированных баннеров, а могут быть и очень сложными, сравнимыми с самостоятельными проектами.
- Откройте файл 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.
- В своем файловом менеджере (Проводнике 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-проигрывателе. Запомните имена файлов.
- Вернитесь во Flash. Откройте панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт:
backgrounds = new Array ("background0.swf", "background1.swf", "background2.swf");
Этой строкой будет создан новый массив с именем backgrounds, содержащий ссылки на наши фоновые фильмы. Учтите, что в нашем случае указывать полный путь к файлам не требуется лишь потому, что основной SWF нашего проекта будет находиться в том же каталоге, что и загружаемые файлы.
Теперь создадим функцию, случайным образом выбирающую один из этих фильмов и загружающую его в наш проект.
- После предыдущей строки скрипта добавьте описание функции:
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), внешний фоновый фильм покроет всю сцену.
- После описания функции добавьте вызов функции:
randomBackground();
Поскольку этот вызов функции находится в кадре 1 нашего фильма, он будет осуществлен сразу после начала воспроизведения фильма.
Совет При большом размере файла внешнего загружаемого фильма (как, впрочем и любого другого фильма) может потребоваться предзагрузчик. О том, как создать и запрограммировать предзагрузчик, см. Урок 15 – Привязка динамики к времени или кадрам.
- Выполните команду Управление > Проверить фильм (Control > Test Movie).
Сразу после начала воспроизведения в проект в качестве фона будет загружен один из трех внешних фильмов.
Примечание Экземпляр клипа background (в который загружается внешний фильм) находится в самом нижнем слое основного фильма; прочее содержимое сцены располагается поверх него. Загруженный в этот экземпляр внешний фильм останется на той же глубине, то есть будет находиться в самом нижнем слое, под всем остальным.
- Закройте тестовый фильм. Сохраните файл под именем virtualaquarium2.fla.
Это упражнение закончено! Файл можно не закрывать, мы продолжим работу с ним в следующих упражнениях.
В нашем проекте загружается случайно выбранный внешний фильм, для нормального же веб-сайта может понадобиться панель навигации или что-то вроде того. Другими словами, по нажатию, например, кнопки Продукты в клип content будет загружаться фильм products.swf. В общем, тут может быть множество вариантов.