Фильмом, загруженным в уровень, можно без проблем управлять, как с его собственного монтажного стола, так и с любого другого. Из урока 3 вы должны помнить, что адрес такого фильма – это просто-напросто номер уровня. Предположим, мы загрузили фильм в Уровень 5. Мы можем задать для него поворот на 45 градусов (с любого монтажного стола), используя следующий синтаксис:
_level5._rotation = 45;
Все просто и понятно.
Можно также поместить действия в кадр 1 загружаемого фильма, чтобы они были выполнены сразу после его загрузки в уровень. Оба случая мы рассмотрим в этом упражнении, где запрограммируем перемещение фильма-баннера в отведенное для него место, а также подключим к делу кнопку включения/выключения баннеров – banner On/Off.
Это тот самый файл, над которым мы поработали в предыдущем упражнении. Сейчас обратите внимание на белый прямоугольник: это экземпляр клипа под названием bannerBack. Положение регистрационной точки этого экземпляра (левый верхний угол) будет иметь важнейшее значение в нашем скрипте, перемещающем фильм-баннер после его загрузки в Уровень 1. Поскольку скрипт этот будет помещаться внутри самих фильмов-баннеров, нам нужно будет поочередно открыть каждый фильм-баннер в среде разработки.
Простенький анимационный фильм, состоящий из пяти слоев; самый верхний слой называется Actions. В кадр 1 этого слоя мы поместим две строчки скрипта – он будет выполняться сразу после загрузки фильма.
_x = _level0.bannerBack._x; _y = _level0.bannerBack._y;
Эти две строки устанавливают координаты X и Y данного фильма в соответствие с координатами экземпляра клипа bannerBack из фильма Уровня 0. В результате фильм-баннер сразу после загрузки расположится точно поверх экземпляра bannerBack.
Вновь загружается случайно выбранный баннер. Однако на сей раз он расположился точно там, где нам надо. Если вы подождете десять секунд, загрузится новый баннер – и тоже окажется точно поверх bannerBack.
Поскольку присоединить обработчик onClipEvent() к фильму, загруженному в уровень, нельзя, предложенное нами решение является лучшим для выполнения каких-либо действий сразу после загрузки такого фильма.
Из этого фильма тоже легко можно управлять фильмом-баннером, загруженным в Уровень 1. Мы продемонстрируем это следующим скриптом, который присоединим к кнопке.
on(release){ _level1._visible = !_level1._visible; bannerBack._visible = !bannerBack._visible; }
Этот скрипт будет переключать состояние видимости фильма-баннера, загруженного в Уровень 1 и экземпляра клипа bannerBack. Здесь использован логический оператор НЕ (!) – он позволяет легко и просто менять булевы значения переменных на противоположные.
Для проверки нажмите несколько раз кнопку On/Off. Подождите 10 секунд до смены баннера. Кнопка продолжает работать, поскольку она управляет любым фильмом, загруженным в Уровень 1, а не каким-то конкретным фильмом-баннером.
Это упражнение закончено. С файлом мы продолжим работу в следующих упражнениях.
Примечание При загрузке файлов из разных доменов в одно окно 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-разработчик знает, что графика – это только часть настоящего мультимедийно-го проекта. Нужен еще и звук. Но за звук приходится платить значительным увеличением размеров файла, и значит, умение правильно управлять звуком приобретает ключевое значение. Поэтому в следующих двух упражнениях мы покажем примеры применения звукового оформления проектов.