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

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

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

Управление фильмами загруженными в уровни

Фильмом, загруженным в уровень, можно без проблем управлять, как с его собственного монтажного стола, так и с любого другого. Из урока 3 вы должны помнить, что адрес такого фильма – это просто-напросто номер уровня. Предположим, мы загрузили фильм в Уровень 5. Мы можем задать для него поворот на 45 градусов (с любого монтажного стола), используя следующий синтаксис:

_level5._rotation = 45;

Все просто и понятно.

Можно также поместить действия в кадр 1 загружаемого фильма, чтобы они были выполнены сразу после его загрузки в уровень. Оба случая мы рассмотрим в этом упражнении, где запрограммируем перемещение фильма-баннера в отведенное для него место, а также подключим к делу кнопку включения/выключения баннеровbanner On/Off.

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

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


  1. Выполните команду Файл > Открыть (File > Open). Перейдите в папку Lesson17/Assets, найдите файл banner0.fla и откройте его во Flash.

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

  1. Открыв панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт.
_x = _level0.bannerBack._x;
_y = _level0.bannerBack._y;

Эти две строки устанавливают координаты X и Y данного фильма в соответствие с координатами экземпляра клипа bannerBack из фильма Уровня 0. В результате фильм-баннер сразу после загрузки расположится точно поверх экземпляра bannerBack.

  1. Точно такой же скрипт поместите в кадр 1 остальных фильмов-баннеров (banner1.fla и banner2.fla). После этого экспортируйте их под именами banner0.swf, banner1.swf и banner2.swf.
  1. Вернитесь к файлу virtualaquarium5.fla. Выполните команду Управление > Проверить фильм (Control > Test Movie).

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


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

  1. Закройте тестовый фильм и вернитесь в среду разработки, к файлу virtualaquarium5.fla.

Из этого фильма тоже легко можно управлять фильмом-баннером, загруженным в Уровень 1. Мы продемонстрируем это следующим скриптом, который присоединим к кнопке.

  1. Открыв панель Действия, выделите кнопку с надписью "Banner On/Off" и присоедините к ней следующий скрипт.
on(release){
  _level1._visible = !_level1._visible;
  bannerBack._visible = !bannerBack._visible;
}

Этот скрипт будет переключать состояние видимости фильма-баннера, загруженного в Уровень 1 и экземпляра клипа bannerBack. Здесь использован логический оператор НЕ (!) – он позволяет легко и просто менять булевы значения переменных на противоположные.

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

Для проверки нажмите несколько раз кнопку On/Off. Подождите 10 секунд до смены баннера. Кнопка продолжает работать, поскольку она управляет любым фильмом, загруженным в Уровень 1, а не каким-то конкретным фильмом-баннером.

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

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

Примечание При загрузке файлов из разных доменов в одно окно Flash-проигрывателя могут возникнуть проблемы, связанные с безопасностью. Вы должны знать об этих ограничениях. Например, если проигрывается фильм, расположенный по адресу www.derekfranklin.com/derekMovie.swf, и он содержит действие, загружающее в Уровень 5 фильм www.electrotank.com/jobeMovie.swf, эти два фильма не смогут обмениваться данными посредством ActionScript, поскольку загружены из разных доменов. Для фильмов, загружаемых из одного домена, такое ограничение не возникает. Впрочем, его можно обойти и для фильмов разных доменов – для этого нужно дать фильмам специальное разрешение. В данном примере, если мы поместим в кадр 1 фильма derekMovie.swf указание System.security.allowDomain("www.electrotank.com"), то фильм jobeMovie.swf (загруженный с electrotank.com) получит доступ к данным фильма derekMovie.swf. Если мы поместим в фильм jobeMovie.swf указание System.security.allowDomain("www.derekfranklin.com"), то фильм derekMovie.swf (загруженный с derekfranklin.com) получит доступ к данным фильма jobeMovie.swf.

До сих пор мы занимались исключительно загрузкой графических материалов и управлением ими. Однако хороший Flash-разработчик знает, что графика – это только часть настоящего мультимедийно-го проекта. Нужен еще и звук. Но за звук приходится платить значительным увеличением размеров файла, и значит, умение правильно управлять звуком приобретает ключевое значение. Поэтому в следующих двух упражнениях мы покажем примеры применения звукового оформления проектов.

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

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

 

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

Вот задание:

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

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989