Дострочное пересдача экзамена
|
Адресация
Обращение к экземплярам фильмов-символов в уровнях
Обратиться к экземпляру фильма-символа, находящемуся в SWF-фильме, загруженном в уровень, проще простого: нужно просто указать номер уровня, в котором находится SWF, а затем имя нужного экземпляра. Например, путь (для фильмов из других уровней) к экземпляру под названием cuteDog внутри SWF, загруженного в Уровень 42, будет выглядеть так:
_level42.cuteDog
Если cuteDog сам содержит экземпляр фильма-символа с именем tail, путь к этому последнему будет таким:
_level42.cuteDog.tail
В обоих примерах использован абсолютный путь – ведь мы обращаемся к монтажным столам другого уровня; для обращения же к этим монтажным столам из того же уровня можно, как обычно, использовать относительные пути.
В этом упражнении мы продолжим работу над проектом нашей "операционной системы". Вы потренируетесь в обращении к экземплярам фильмов-символов, находящимся в SWF-фильмах, загруженных в уровни, а также узнаете, как использовать данные из одного уровня в фильме другого уровня.
- Откройте файл levelTarget2.fla из папки Lesson03/Completed.
Файл такой же, как тот, к которому мы добавили скрипты в предыдущем упражнении – с единственным исключением: здесь на монтажном столе имеется еще один слой, под названием Colors Clip.
- Щелкните на значке Показать слой (красный X) слоя Colors Clip, чтобы отобразить содержимое этого слоя.
Теперь вы видите лиловый прямоугольник, покрывающий всю сцену. Этот прямоугольник есть экземпляр фильма-символа с именем colors. Он будет работать как цветной фильтр, наложенный поверх разноцветного текстурного фона нашего "рабочего стола". При изменении цвета и прозрачности этого экземпляра будет казаться, что меняется этот фон. Мы напишем скрипт для фильма, загруженного в Уровень 1 (backgroundColor.swf) для управления цветом и прозрачностью этого экземпляра.
- Двойным щелчком на экземпляре фильма-символа colors откройте его для редактирования на месте.
Вы видите монтажный стол фильма-символа colors. Он состоит из единственного слоя, в котором имеется несколько кадров с метками. На каждой из этих меток прямоугольник на сцене окрашен цветом, соответствующим названию метки. Мы будем управлять цветом этого клипа, переходя к той или иной метке на его монтажном столе. Изначально клип лиловый – это цвет кадра 1, и в этом кадре содержится действие stop(), предотвращающее воспроизведение монтажного стола до получения особых инструкций.
- Вернитесь на основной монтажный стол. Откройте инспектор Параметры (Property), выделите текстовое поле в левой нижней части сцены, рядом с надписью "Enter text:".
Взгляните на инспектор Параметры. Как видите, это текстовое поле относится к типу Input text (поле для ввода), имя экземпляра – inputText. Сюда пользователь может ввести любой текст, и этот текст будет использован в фильме, загружаемом в Уровень 2 (textBox.swf). Сейчас мы создадим скрипт, обеспечивающий эту возможность.
- Откройте панель Действия, выделите на "рабочем столе" кнопку в виде бумажного свитка и добавьте новую строку скрипта – сразу после строки _level2._visible = true;:
_level2.inputText.text = _level0.inputText.text;
В фильме, загружаемом в уровень 2, тоже имеется текстовое поле, и тоже с именем inputText. При нажатии на эту кнопку добавленное нами действие поместит в текстовое поле фильма Уровня 2 тот же текст, который введен в текстовое поле этого фильма. Это – простейший пример обмена данными между монтажными столами.
- Выделите кадр 1 основного монтажного стола и добавьте новую строку скрипта – сразу после строки loadMovieNum ("textBox.swf", 2);:
_level0.colors._alpha = 50;
Данное действие устанавливает для экземпляра фильма-символа colors (который находится в слое Colors Clip ) 50-процентную прозрачность сразу после начала воспроизведения фильма. Мы указали здесь путь _level0, хотя это и не требовалось – просто чтобы освежить вашу память, лишний раз напомнив, что этот первый фильм будет автоматически загружаться в Уровень 0.
- Экспортируйте проект под именем levelTarget.swf в папку Lesson03/Assets.
В конце упражнения мы воспроизведем этот фильм.
- Сохраните файл как levelTarget3.fla.
Написание скриптов для этого файла завершено.
- Откройте файл backgroundControl2.fla из папки Lesson03/Assets.
Это тот же файл, который мы использовали в предыдущем упражнении – тот, что предназначен для загрузки в Уровень 1. В предыдущем упражнении мы запрограммировали его: сразу после загрузки он становится невидимым, "закрывается" при щелчке на кнопке "выход" (круглая, с крестом), его можно перетаскивать при нажатой невидимой кнопке, расположенной поверх "полосы заголовка". Теперь мы расширим функциональность этого "диалогового окна", дав ему возможность управлять экземпляром фильма-символа colors, находящегося в Уровне 0. Мы присоединим скрипты к этим многочисленным цветным квадратикам-кнопкам, которые вы видите.
Прежде чем начать программирование, давайте познакомимся поближе с элементами сцены. Слева, под надписью Transparency, вы видите динамическое текстовое поле, имеющее имя alphaAmount. Оно найдет у нас два применения: будет отображать текущее значение прозрачности экземпляра фильма-символа colors из Уровня 0, а также показывать, какому значению прозрачности соответствует каждая из кнопок, управляющих прозрачностью (при наведении указателя на эти кнопки). Эти пять кнопок – небольших, квадратных – расположены левее; мы запрограммируем их для изменения прозрачности экземпляра фильма-символа colors. Под этими кнопками имеется еще девять цветных квадратных кнопочек. Они будут изменять цвет экземпляра colors (перемещая его монтажный стол к той или иной метке). Ниже этих кнопок вы видите экземпляр фильма-символа currentColor, представляющий собой, по сути, уменьшенную версию фильма-символа colors. Этот экземпляр будет отображать текущий цвет, примененный к фону "рабочего стола". В самом низу имеется еще одно текстовое поле, оно называется colorName и будет отображать название цвета при наведении указателя на ту или иную цветовую кнопку.
- Из квадратных кнопок, расположенных возле текстового поля alphaAmount, выделите крайнюю слева, откройте панель Действия и введите следующий скрипт:
on (rollOver) { alphaAmount.text = 0; } on (release) { _level0.colors._alpha = 0; } on (release, rollOut) { alphaAmount.text = _level0.colors._alpha; }
Эта кнопка будет устанавливать на 0 значение прозрачности экземпляра фильма-символа colors в Уровне 0.
Первое действие отображает 0 в текстовом поле alphaAmount при наведении указателя на кнопку – это подсказка пользователю. Следующее действие выполняется, если кнопка нажата и отпущена: свойству _alpha экземпляра фильма-символа colors присваивается нулевое значение, в результате он становится полностью прозрачным. Обратите внимание на адресацию: все просто – уровень, а за ним имя экземпляра. Следующее действие отображает в текстовом поле alphaAmount текущее значение прозрачности экземпляра фильма-символа colors; действие выполняется, если кнопка отпущена или с нее убран указатель.
Самостоятельно присоедините такой же скрипт к остальным кнопкам, управляющим прозрачностью, только вместо значения 0 подставьте, соответственно, 25, 50, 75 и 100.
- Выделите лиловую кнопку смены цвета (крайнюю слева) и поместите в панель Действия следующий скрипт:
on (rollOver) { colorName.text = "Purple"; } on (release) { currentColor.gotoAndStop ("Purple"); _level0.colors.gotoAndStop ("Purple"); } on (release, rollOut) { colorName.text = "Выберите цвет"; }
Эта кнопка устанавливает цвет экземпляра фильма-символа colors в Уровне 0, перемещая его монтажный стол к кадру с нужной меткой.
Первое действие при наведении указателя на кнопку отображает в текстовом поле colorName слово "Purple" – это подсказка пользователю, какому цвету соответствует данная кнопка. По нажатию и отпусканию кнопки выполняются два действия. Первое из них отсылает экземпляр фильма-символа currentColor к кадру с меткой Purple. Тем самым изменится цвет прямоугольника, расположенного ниже кнопок смены цветов – он станет лиловым. Следующее действие отсылает к кадру с меткой Purple экземпляр фильма-символа colors в Уровне 0, приводя к тому, что фон Уровня 0 приобретает лиловый оттенок (его насыщенность будет зависеть от текущего значения прозрачности). Последнее действие выводит в текстовое поле colorName надпись "Выберите цвет".
Точно такой же скрипт присоедините к остальным кнопкам смены цвета, только замените "Purple" на одно из следующих значений (для кнопок слева направо): "Maroon", "Lavender", "SkyBlue", "DeepBlue", "Orange", "GrassGreen", "SeaGreen" и "Pink".
- Экспортируйте фильм как backgroundColor.swf в папке Lesson03/Assets.
Мы создали из нашего проекта SWF-фильм, предназначенный для загрузки в Уровень 1, перезаписав предыдущую версию файла, созданную в предыдущем упражнении.
- Сохраните свою работу как backgroundControl.swf.
Работу с этим файлом мы закончили.
- Найдите файл levelTarget.swf, который вы создали. Двойным щелчком откройте его.
Как только начнется воспроизведение файла, backgroundControl.swf будет загружен в Уровень 1, а textBox.swf – в Уровень 2; оба сразу же станут невидимыми. Экземпляр фильма-символа colors, который накладывается на текстурный фон, имеет лиловый оттенок при прозрачности 50 процентов.
Введите любой текст в текстовое поле внизу экрана, затем щелкните на "значке" в виде бумажного свитка. Эта кнопка делает видимым Уровень 2, и, как видите, введенный вами текст отобразился в текстовом поле фильма Уровня 2.
Теперь нажмите кнопку-значок в виде компьютерного монитора – станет видимым фильм в Уровне 1. Этот фильм управляет цветом и прозрачностью экземпляра фильма-символа colors в Уровне 0. Понажимайте кнопки изменения прозрачности и цвета, посмотрите, как изменяется этот экземпляр.
Важный совет В начале этого урока мы говорили о том, что монтажные столы могут содержать собственные данные, функции и объекты. Мы их пока что не касались, поэтому будет разумно вкратце рассказать об указании путей к этим динамическим элементам, ведь проект может быть построен таким образом, что один монтажный стол может обращаться к этим динамическим элементам, расположенным на другом монтажном столе.
Предположим, имеется переменная с именем myVariable. Пусть эта переменная находится в экземпляре фильма-символа myMovieClip, который находится в фильме, загруженном в уровень 74. Тогда, чтобы воспользоваться этой переменной в скрипте на любом монтажном столе, достаточно указать правильный путь к ней:
_level27.displayText = _level74.myMovieClip.myVariable;
То же самое и для вызовов функций:
_root.anotherMovieClip.myFunction();
И для объектов любого типа:
_parent.myObject;
Конечно, прямо сейчас мы это не используем, но в последующих уроках эти сведения окажутся очень полезными.