В этом уроке
дан обзор простейших операций языка ActionScript. Приводятся краткая характеристика
каждой операции и примеры ее использования. Основное внимание уделяется вопросам
интеграции сценариев ActionScript с объектами фильмов в формате Flash.
Подлинный
смысл использования сценариев ActionScript становится ясным лишь при их рассмотрении
в контексте фильмов Flash. Разумеется, можно, потратив несколько часов, обеспечить
кадрирование (tweening) какого-либо объекта средствами ActionScript, однако
намного эффективнее и легче использовать готовые средства кадрирования, предусмотренные
в пакете Flash. С другой стороны, во многих ситуациях ActionScript предлагает
разработчику инструменты, позволяющие избежать большого объема чрезвычайно сложной
и никому не нужной работы в стандартной среде Flash. Применение сценариев ActionScript
в фильмах Flash следует признать обоснованным в тех случаях, когда широкие возможности,
которыми располагает язык сценариев, дополняют собой прочие элементы фильма.
В данной книге фильмы Flash рассматриваются как соединение стандартных объектов
Flash с встроенными в них сценариями ActionScript. В настоящем уроке вы познакомитесь
с основными особенностями такого соединения.
В уроке 2
мы рассмотрели способы использования переменных в текстовых полях, а также в
сценариях кнопок и кадров. Кроме того, вы узнали о применении механизма описательных
комментариев, размещаемых в киноленте, которые позволяют разработчикам легко
ориентироваться в назначении сценариев, определенных для различных кадров. В
настоящем уроке основной акцент сделан на метках кадров, предназначенных
для управления очередностью воспроизведения кадров киноленты. Компоненты фильма
способны управлять поведением других компонентов, инициируя и прекращая выполнение
различных операций в том или ином кадре. Задача расстановки меток, сама по себе
тривиальная, является одной из важнейших частей задачи создания общей структуры
фильма. Сценарии, инкорпорированные в кнопки и кадры, могут инициировать и останавливать
выполнение самых разных операций в фильмах Flash. Таким образом, можно утверждать,
что проектирование общей структуры передачи управления является важнейшим этапом
подготовки эффективного фильма.
Представьте
себе карту автомобильных дорог, в которой вместо названий используются исключительно
цифровые обозначения. Скажем, вместо метки «Омаха, штат Небраска»
на такой карте будет написано «23421». Немного неудобно, на так
ли? По аналогичным соображениям кадры, адресуемые в сценариях ActionScript,
следует снабжать понятными метками. Можно, конечно, направить фильм к кадру
7 (формально подобная конструкция вполне допустима), но значительно проще все
же иметь дело с кадрами, которые снабжены «говорящими» метками типа
Right (Правильно), Wrong (Неверно) или Is that your final answer? (Это ваш окончательный
ответ?).
Чтобы снабдить
кадр меткой, необходимо выполнить следующую последовательность действий.
Рис
3.1. установка метки кадра
В уроке 2
вы узнали, как создавать комментарии к кадрам, но комментарии нельзя использовать
в сценариях для перехода к определенному кадру. Обычно эта задача решается путем
установки меток. Впрочем, в инструкциях перехода можно применять также номера
кадров, но такой сценарий будет похож на описанную выше карту автомобильных
дорог, где все названия заменены номерами. Этот механизм работает, но при чтении
подобных сценариев довольно трудно вспомнить, куда ведет тот или иной путь.
Следует также учитывать, что в ходе разработки фильма часто приходится вставлять
в киноленту обычные и ключевые кадры, что приводит к сдвигу нумерации. Скажем,
кадр 20 запросто может стать кадром 27. При работе с метками вы гарантированы
от подобных неприятностей: метка будет сдвигаться вместе с кадром.
Когда
вы выделяете неключевой кадр, следует помнить, что его меткой является метка
ближайшего слева ключевого кадра.
Пример
фильма. Переход с воспроизведением и остановкой
На компакт-диске,
прилагаемом к настоящей книге, вы можете найти файл SBLimit.fla, содержащий
образец фильма, в котором используется несколько слоев:
Чрезвычайно
важными операциями языка ActionScript являются gotoAndPl ay и gotoAndStop, осуществляющие
переход с последующим воспроизведением кадра и остановкой соответственно. Поскольку
основой фильма Flash является кинолента, возможность произвести переход к ее
определенному участку позволяет автору фильма создавать сценарии в различных
кадрах и обеспечивать запуск этих сценариев при возникновении определенной ситуации.
Названные операции отнюдь не относятся к числу сложных.
gotoAndPlay (1);
Чтобы изменить содержимое
этой инструкции, необходимо снять флажок Go to and Play (Перейти и воспроизвести),
находящийся в нижней части панели операций, предварительно выделив соответствующую
строку сценария. Когда этот флажок сброшен, инструкция автоматически заменяется
на gotoAndStop.
Чтобы проиллюстрировать
принцип действия инструкции перехода, автор составил небольшой фильм, показывающий
движение поезда из Санта-Бар-бары (Santa Barbara) в Сан-Диего (San Diego). Каждая
станция, где поезд делает остановку, представлена в фильме отдельным кадром;
кнопки обеспечивают перемещение поезда к конкретной станции. На рис. 3.2 можно
видеть структуру слоев фильма, а на рис. 3.3 показана его рабочая зона.
Зритель смотрит
на поезд спереди; в начале просмотра поезд выглядит как небольшое пятнышко.
По мере приближения к Сан-Диего представление поезда (графический символ) постепенно
увеличивается. Слой Smoke (Дым) обеспечивает вывод на экран движущихся клубов
дыма. Кнопка R/R, находящаяся
внизу в центре рабочей зоны, заключает в себе сценарий, содержащий инструкцию
Play, и позволяет произвести повторный запуск киноленты после остановки воспроизведения
в последнем кадре слоя Train (Поезд). Кнопки с названиями городов содержат сценарии,
осуществляющие переход к соответствующей станции с последующей остановкой воспроизведения.
На рис. 3.4 показан текст сценария для одной из этих кнопок; сценарии других
кнопок отличаются от данного только названием города. Обратите внимание на то
обстоятельство, что метка, переход к которой осуществляется в данном примере,
соответствует метке, введенной (см. рис. 3.1) в панели Frame (Кадр).
Рис.
3.2. Метки в слое Track используются в инструкциях перехода
Рис.
3.3. Образец фильма с инструкциями остановки в кадрах, а также с
инструкциями перехода и остановки в сценариях кнопок
Рис.
3.4. Раскрывающийся список Frame содержит имена всех ключевых кадров,
снабженных метками. Обратите внимание, что флажок Go to and Play снят
Слои
Сначала необходимо
создать фоновый слой — определить его цвет и добавить детали ландшафта. Затем
потребуется разместить в рабочей зоне фильма графическую надпись Santa Barbara
Limited. В обоих упомянутых слоях нам понадобится по 53 кадра. Поэтому нужно
щелкнуть на кадре 53 и нажать клавишу F5. После этого можно заняться слоем Track
(Путь). Здесь будут располагаться все ключевые кадры, снабженные соответствующими
метками. При вставке инструкций перехода в сценарии обработки кнопок, как показано
на рис. 3.4, в списке Frame (Кадр) должны находиться все необходимые метки.
Определяйте ключевые кадры таким образом, чтобы их метки были целиком видны
на киноленте (для этого можно использовать в качестве ключевого каждый десятый
кадр). Ни у одного из кадров в слое Track (Путь) нет сценария ActionScript.
В слое Buttons
N Labels (Кнопки и метки) создайте шесть кнопок с названиями городов и кнопку
R/R, как описано ниже.
Слой Train
(Поезд) содержит как анимационное представление поезда, так и изображение железной
дороги. Поезд являет собой графический символ, сделанный на основе символа,
входящего в один из шрифтов. Последний кадр слоя содержит сценарий ActionScript.
Чтобы создать слой Train, требуется выполнить следующую последовательность действий
Слой Smoke
(Дым) содержит представление движущихся клубов дыма в клипе. Создайте этот слой
следующим образом.
Теперь ваш
фильм должен воспроизводить поезд, который движется вперед и останавливается,
приобретая размеры, заданные для последнего кадра киноленты (рис. 3.5). При
щелчке на одной из кнопок система ActionScript изменяет размер символов поезда
и клубов дыма в соответствии с «расстоянием» до «города»
на киноленте. Описанный фильм очень прост, но он иллюстрирует отношения, возникающие
между различными объектами в фильмах Flash, и показывает, каким образом сценарии
ActionScript могут применяться для управления этими объектами.
Рис.
3.5. Сценарии, определенные для кнопок, не только перемещают фильм
к другим кадрам, но и управляют всем ходом его воспроизведения
СОВЕТ
ШРИФТЫ.
Шрифт, который мы использовали при создании поезда и меток, назы-вается CentralStation.
Он принадлежит к коллекции шрифтов Лесли Кабарга (Leslie Cabarga), которую можно
найти по адресу www.flashfonts.com. Если вы работаете с нестандартными шрифтами,
не забудьте преобразовать все текстовые объекты в графические символы, чтобы
ваш файл SWF (Shockwave Flash) корректно отображал шрифты и другие изображения
на любом компьютере. Если же вы хотите, чтобы используемые вами шрифты были
доступны на любом компьютере в файле FLA, разбейте их на составные элементы,
а затем либо используйте их как рисунки, л ибо создайте на их основе символы
(знаки шрифтов при этом будут отображаться как графика, а не как текстовые элементы).
Иногда в
сценариях ActionScript одновременно используются операции Stop и Play, которые
вступают в противоречие. Что случится, если в каком-либо сценарии фильма применяется
инструкция gotoAndStop, предписывающая необходимость перейти к кадру, содержащему
сценарий с инструкцией Play()? Будет ли воспроизведение фильма прервано? С другой
стороны, что произойдет, если инструкция gotoAndPl ay указывает на кадр, содержащий
сценарий с инструкцией Stop()? Вызовет ли инструкция gotoAndStop остановку воспроизведения
фильма в указанном кадре, если там находится другая операция перехода? Во всех
подобных ситуациях применяется следующее правило: при любой операции перехода
сценарий, определенный в целевом кадре, исполняется автоматически. Обратите
внимание на слово любой. Не имеет значения, какая именно инструкция перехода
встретилась в нашем сценарии — gotoAndStop или gotoAndPI ay. В таком подходе
есть свои неудобства: бывают ситуации, когда хочется совершить переход к определенному
кадру и приостановить воспроизведение фильма до явного вызова инструкции PI
ay. Но если вы используете инструкцию перехода с последующим воспроизведением,
задав кадр, в сценарии которого находится инструкция Stop, воспроизведение фильма
прекратится. Сходным образом, если вы используете операцию gotoAndStop, указывая
кадр, в сценарии которого находится инструкция Play, воспроизведение фильма
будет продолжаться.
Следующий
фильм призван продемонстрировать, что происходит в результате перехода к различным
кадрам.
Пример
фильма. Воспроизведение, остановка и кнопки
Рассматриваемый
нами фильм, находящийся в файле StopAtPlay.fla на прилагаемом компакт-диске,
иллюстрирует механизм исполнения сценариев, определенных в кадрах, с точки зрения
взаимосвязи, существующей между операциями воспроизведения или остановки, с
одной стороны, и перехода, с другой стороны. В этом фильме два слоя:
Слой Stop
or Play (Остановить или воспроизвести) содержит пять ключевых кадров, в которых
определены сценарии. Эти кадры снабжены метками, как показано на рис. 3.6.
Рис.
3.6. Основные кнопки фильма находятся в его начале. Внимательно проследите
за ходом воспроизведения фильма при щелчке на каждой из кнопок
Слой Stop
or Play
В первом
слое ключевые кадры снабжены указанными ниже метками; каждый кадр содержит текстовое
сообщение. Приведем список этих меток и сообщений.
Слой Buttons
В основе
организации слоя Buttons (Кнопки) лежит группировка кадров. Кнопки, представленные
на рисунке, идентифицируются расположенными под ними
функциональными
метками и адресуются в тексте сценариев именно по этим меткам. В первом кадре
(stopFirst) определены три экземпляра символа кнопки с именем ButtonUp.
Кнопка Go
to Play & Stop
on (release)
{
gotoAndStop
("PlayIt"); }
Кнопка Go
to Stop & Play
on(release)
{
gotoAndStop
("PlayIt"); }
Кнопка Go to & Stop at Go To
on(release) {
gotoAndStop
("GoAway"); }
Кнопки, находящиеся
в кадрах Stop Me (Останови меня) и Away (ушли), также являются экземплярами
символа кнопки ButtonUp. Они содержат сценарии, состоящие лишь из команды PI
ау, и снабжены метками Click to continue (Щелкните для продолжения).
Кнопка Click
to continue
on (release)
{
play (); }
Запустив
этот фильм, внимательно наблюдайте за тем, что происходит на экране. Тщательно
изучите сообщения, которые будут появляться на экране, начиная с кадра Playlt
и заканчивая кадром Stop Me. Обратите внимание на то обстоятельство, что вы
так и не увидели сообщения Go Away! (Уходите прочь!), сценарий которого представлен
на рис. 3.7. Это сообщение, несомненно, присутствует в фильме, но так и не выдается
на экран.
Рис.
3.7. Сообщение, заданное в кадре Go Away, так и не выдается на экран
Чтобы разгадать
тайну исчезнувшего сообщения, внимательно посмотрите на сценарий, определенный
в кадре Go Away:
gotoAndPlay
("Away");
Когда в ход
воспроизведения фильма включается данный ключевой кадр, система ActionScript
немедленно выполняет указанную в его сценарии операцию, не останавливаясь для
вывода на экран самого кадра. Таким образом, в кадре Go Away сразу выполняется
команда перехода с последующим воспроизведением кадра Away, а все кадры, в которых
должно отображаться сообщение Go Away! (Уходите прочь!), просто пропускаются.
Последовательное
перемещение между кадрами и сценами
Наряду с
переходом к определенному кадру по имени метки или номеру в сценариях ActionScript
используется перемещение на один кадр вперед или назад. В предыдущем разделе
вы узнали, как можно обеспечить воспроизведение и остановку фильма при переходе.
Если в кадре, к которому осуществлен переход с последующим воспроизведением,
нет никакого сценария, воспроизведение фильма продолжается обычным образом.
Если же был выбран способ перехода с последующей остановкой, воспроизведение
фильма прерывается. Однако в любом случае сценарий, находящийся в целевом (по
отношению к операции перехода) кадре будет исполнен.
Перемещение
к следующему и предыдущему кадрам
В этом разделе
мы рассмотрим операции, обеспечивающие перемещение на один кадр вперед или назад
с последующей остановкой. Во многих отношениях эти операции подобны инструкции
gotoAndStop. Если в очередном кадре нет сценария, фильм останавливается. Поскольку
рассматриваемые операции всегда перемещают указатель воспроизведения на один
кадр вперед или назад безотносительно к ключевому статусу этого кадра, оказывается
возможным перемещение к кадрам, у которых нет меток. При перемещении используется
относительный линейный порядок следования кадров в киноленте, а не конкретный
номер кадра или метка. Подобное перемещение производится чрезвычайно просто;
одна из отличительных особенностей такой методики состоит в том, что в тексте
сценария отсутствует инструкция перехода. Пример: в следующем сценарии, связанном
с некой кнопкой, используется команда перемещения к предыдущему кадру.
on(release)
{
prevFrame ();
}
Инструкция
перемещения к следующему кадру выглядит столь же просто:
nextFrame();
Эти операции
могут применяться в сценариях клипов, кнопок и кадров. В сценариях кадров подобные
инструкции имеют смысл только при использовании в составе условных конструкций,
однако в сочетании с последними предоставляют в распоряжение разработчика довольно
мощный и гибкий механизм.
Перемещение
к следующей и предыдущей сценам
Язык ActionScript
позволяет также осуществлять переход к следующей и предыдущей сценам. Соответствующие
инструкции по функции очень похожи на инструкции перемещения между кадрами,
но в данном случае переход производится между сценами фильма. Код перемещения
к следующей сцене в сценарии кнопки должен выглядеть примерно так:
on(release)
{
nextScene ();
}
Чтобы перейти к предыдущей по времени сцене фильма, используется приведенная ниже инструкция.
prevScene ();
Переход к новой сцене приводит к довольно интересным последствиям. Если вы последовательно воспроизводите кадр за кадром, то номер первого кадра очередной сцены будет на единицу больше номера последнего кадра предыдущей. Например, если номер последнего кадра сцены 1 равен 30, то первый кадр сцены 2 обладает номером 31. По этому номеру к данному кадру и следует обращаться. Следующая инструкция предписывает необходимость перейти к кадру 1 сцены 2 и воспроизвести его.
gotoAndPlay(31)
Для достижения того же результата можно также воспользоваться следующей инструкцией:
gotoAndPlay("Scene
2".1)
Однако очевидно,
что к первому кадру следующей сцены намного удобнее перейти с помощью операции
nextScene().
Все метки
кадров доступны в любой сцене, находящейся в пределах главной киноленты. Система
Flash будет искать встретившуюся в сценарии метку во всех сценах главной киноленты.
Допустим, у нас есть фильм-игра. В нем 15 сцен; в кадре 27 сцены 11 находится
сценарий, производящий подсчет очков. В ссылках вида Scene 11 или Frame 27 легко
запутаться; гораздо лучше определить метку Score (Счет), которая будет доступна
в любом кадре любой сцены нашей игры.
В следующем
разделе мы рассмотрим пример фильма, который иллюстрирует различные способы
перемещения между двумя сценами и составляющими их кадрами. В фильме демонстрируются
также различные способы адресации кадра, находящегося в определенной сцене.
Пример
фильма. Поиск нужного кадра и сцены
В рассматриваемом
фильме (файл FrameScene.fla на прилагаемом компакт-диске) две сцены. Первая
из них содержит два слоя; в другой используется один слой, как показано ниже.
Слой Output
сцены 1
Первое, что
нужно сделать как в слое Output (Вывод), так и в слое Buttons (Кнопки), — это
создать кадр с номером 15, чтобы определить границы сцены. Большинство сценариев
нашего фильма связано с кнопками, однако в слое Output есть также один сценарий,
заданный для кадра 1. Этот сценарий представляет собой команду остановки:
Stop():
Поместите
рядом с надписью Frame Number (Номер кадра) редактируемое текстовое поле, размеры
которого достаточны для вывода двух цифр (рис. 3.8). Выберите для этого поля
вариант Input Text (Набираемый текст) в раскрывающемся списке панели Text Options
(Параметры текста) и задайте имя переменной output в соответствующем поле той
же панели. В табл. 3.1 представлены необходимые характеристики создаваемого
текстового поля.
Рис.
3.8. Сцена 1 содержит кнопки, обеспечивающие последовательное перемещение
между кадрами и сценами
Таблица
3.1. Свойства текстового поля
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
||
Output |
Снят |
По правому краю |
||
Слой Buttons
сцены 1
Основная
часть обработки данных в нашем фильме находится в слое Buttons (Кнопки). Кнопки
из первой сцены будут скопированы во вторую сцену. Каждая кнопка снабжена знаком,
обозначающим направление движения, а также указанием на переход между сценами.
on(release) {
prevFrame ():
var a = _root._currentframe;
output = a; }
on(release)
{
prevScene ();
var a = _root._currentframe;
output = a; }
on(release) {
nextScene ():
var a=_root._currentframe;
output = a: }
on(release) {
gotoAndPlay ("George");
а = _root._currentframe;
output = a; }
on(release) {
gotoAndPlay ("Scene 2".8);
a=_root._currentframe;
output=a;
}
on(release) { {
gotoAndPlay (23);
a=_root._currentframe;
output=a;
}
Слой Copy
Here сцены 2
Сцена 2 в
рассматриваемом фильме была введена лишь для демонстрации механизма перехода
между сценами и отличается простотой. Эта сцена представлена на рис. 3.9.
Рис.
3.9. Сцена 2 очень похожа на сцену 1
Создать сцену
2 очень просто — все сводится к копированию и вставке ряда элементов сцены 1.
Эта операция производится следующим образом.
on(release) {
gotoAndPlay ("Scene 2", "George");
a=_root._currentframe;
output=a; }
Поскольку
в основе своей этот фильм учебный, вы можете использовать его при поиске ответов
на вопросы о том, как применять различные операции ActionScript для перемещения
между кадрами и сценами. Поэкспериментируйте, попробуйте разные комбинации и
наблюдайте, что будет происходить.
Переход
к кадрам в других кинолентах
Задача перехода
к кадрам, находящимся на той же киноленте, что и исходный, решается относительно
просто. В переходе с одной киноленты на другую также нет ничего сложного, однако
здесь нужно затратить несколько больше усилий, эта проблема требует более продуманного
подхода. У клипов есть свои киноленты, и для того чтобы перейти к определенному
кадру клипа, необходимо в первую очередь адресовать сам клип с помощью имени
экземпляра и пути. Чтобы осуществить переход к определенному кадру
другой киноленты с последующим воспроизведением или остановкой, имя соответствующей
операции должно предваряться путем к нужному объекту. Вы можете потребовать
от клипа перехода к любому кадру на киноленте этого клипа. Так, в приведенном
ниже сценарии клип с именем экземпляра Driver (Водитель) должен перейти к кадру
с именем Starting Line (Линия старта) и продолжить воспроизведение.
_root.driver.gotoAndPlay("Starting
Line")
Следующий
рассматриваемый нами фильм иллюстрирует ситуацию, когда три разные кнопки, находящиеся
на главной киноленте, требуют от клипа перехода (по номеру или по метке) к различным
кадрам с последующим их воспроизведением после остановки главной киноленты.
Обратите внимание, что при остановке главной киноленты клипы могут воспроизводиться
независимо от нее; важно также подчеркнуть, что кнопки здесь расположены в главной
киноленте, а клипы — в других кинолентах.
Пример
фильма. Управление другими кинолентами
В фильме,
содержащемся в файле Play Away, fla на компакт-диске, прилагаемом к настоящей
книге, определены кнопки, управляющие движением мячика, который является объектом
другой киноленты. В этом фильме лишь два слоя, один из которых относится к главной
киноленте, а другой — к клипу:
Рис.
3.10. Главная рабочая зона с кнопками, содержащими сценарии, которые
управляют ходом воспроизведения клипа
Фильм чрезвычайно
прост; фактически в нем нет ничего, кроме трех кнопок в слое MainTimeLine (Главная
кинолента) и клипа в слое Bouncer (Попрыгунчик). Необходимо средствами кадрирования
(tweening) создать клип с изображением движущегося мячика, разместить этот клип
на главной киноленте, а затем добавить три кнопки, которые помещают мячик в
определенное место на киноленте клипа. На рис. 3.10 показано окно главной рабочей
зоны, а на рис. 3.11 демонстрируется клип в режиме редактирования символов.
Рис.
3.11. Клип в режиме редактирования символов. Обратите внимание на
ключевой кадр с меткой Fred, а также на знаки кадрирования символов в киноленте
Слой Bouncer
Как фильм
в целом, так и клип представляют собой хорошие иллюстрации способов адресации
в ActionScript объектов, расположенных на разных кинолентах.
Слой MainTimeLine
Вернитесь
к главной киноленте, щелкнув на значке Scene 1 (Сцена 1) в верхнем левом углу
окна рабочей зоны. Затем перетащите мышью в рабочую зону экземпляр клипа Bounce
(Прыжок). Расположите его так, как показано на рис. 3.10 и 3.11. Выделите клип
и откройте панель Instance (Экземпляр) с помощью команды Window > Panels
> Instance (Окно > Панели > Экземпляр) или воспользовавшись
комбинацией клавиш Ctrl+I (Windows) либо Cmd+I (Macintosh). В поле Name (Имя)
введите имя Ball (Мяч). Это имя экземпляра будет использоваться во всех ссылках
на него.
После этого
нужно создать три кнопки. В рассматриваемом примере автор воспользовался кнопками
из общей библиотеки Buttons (Кнопки) — это кнопки Go to 1 (Переход 1), Go to
2 (Переход 2) и Go to 3 (Переход 3). Затем в режиме редактирования символов
метки кнопок были изменены и названы Frame 5 (Кадр 5), Fred (Фред) и Play (Воспроизвести)
соответственно. (Чтобы перейти в режим редактирования символов, достаточно дважды
щелкнуть на одной из кнопок.)
on(release) {
_root.ball.gotoAndStop(5);
}
on(release) {
_root.ball.gotoAndStop("Fred");
}
on(release) {
_root.ball .play ();
}
В пакете
Flash 5 перейти к другой киноленте с последующим ее воспроизведением или остановкой
стало намного легче, чем в предыдущих версиях. Как будет видно в дальнейшем
(впрочем, в первом приближении этот вопрос уже рассматривался в уроке 1), объектно-ориентированная
нотация позволяет естественным образом представлять различные пути и обеспечивает
пересылку команд другим кинолентам.
Скорее всего,
у каждого из вас есть наработанный код, который вы регулярно используете в различных
сценариях. Будет лучше, если вы запишете этот код таким образом, чтобы его не
приходилось переписывать заново всякий раз, когда он понадобится вам в очередном
сценарии. Для записи сценария Action-Script можно применять любые текстовые
редакторы, например такие, как Блокнот (Windows) или МиниТекст (Macintosh).
Допустим, вы написали на языке ActionScript чрезвычайно сложную процедуру сортировки
и не желаете тупо копировать ее всякий раз, когда она вам понадобится. В пакете
Flash 5 предусмотрена операция include, которая позволяет загружать сценарии,
находящиеся во внешних текстовых файлах. Формат использования этой операции
чрезвычайно прост. Скажем, приведенный ниже образец сценария кнопки загружает
текстовый файл remote.as (расширение .as является общепринятым, но не обязательным).
on(release)
{
#include "remote.as"
}
Путь к внешнему
файлу выглядит как обычный адрес URL. В предыдущем примере внешний файл находится
в той же папке, что и файл SWF, а поэтому нет необходимости задавать путь к
папке с файлом, содержащим текст сценария.
При использовании инструкции include в сценариях кнопок и клипов не следует включать во внешний текстовый файл обработчики событий. Все обработчики событий, такие как on(release), импортируют код сценария непосредственно из текстового файла и исполняют его. Дополнительный обработчик события предотвращает выполнение каких-либо альтернативных операций. Скажем, если вы хотите, чтобы некая кнопка отсылала фильм к кадру с именем Score, вам достаточно разместить в текстовом файле следующую строку кода:
gotoAndStop("Score");
Сценарий
для кнопки в этом случае будет включать в себя лишь обработчик соответствующего
события и инструкцию include, обеспечивающую вызов сценария, содержащегося в
текстовом файле.
Два
языка, один слой, одна кинолента
Применение
средств ActionScript для управления положением указателя воспроизведения на
киноленте позволяет создателю фильма полностью контролировать ход его воспроизведения.
В настоящем разделе мы рассмотрим учебный проект программы, перенасыщенной переходами,
выполняющимися в рамках киноленты и происходящими в пределах одного слоя. Эта
программа задумана в форме игры, позволяющей обучать детей английским и испанским
числительным.
Вначале пользователь
выбирает язык — испанский или английский. Числительные появляются в левом текстовом
поле, а их цифровое представление чисел — в правом. В начале работы программы
пользователь должен выбрать одну из двух кнопок. В дальнейшем в рабочей зоне
появляется третья кнопка, позволяющая пользователю перейти к следующему числу.
Разумеется, в такой программе было бы намного легче и логичнее сгруппировать
кадры, относящиеся к разным языкам, по отдельности, но цель нашего учебного
фильма состоит в том, чтобы продемонстрировать возможности языка Action-Script
в части управления различными компонентами фильма.
На рис. 3.12
показан макет начальной страницы — внешний вид рабочей зоны в начале фильма,
список необходимых слоев и большинство меток, приписанных кадрам.
Рис.
3.12. Макет рабочей зоны со списком слоев и меток, обеспечивающих
перемещение между кадрами
Работающую
версию рассматриваемого фильма вы можете найти на прилагаемом компакт-диске
в файле BilingualCounter.fla. Фильм представляет собой обучающую программу,
демонстрирующую методику работы с различными путями в одном фильме. Один из
путей соответствует английским числительным, другой — испанским. В фильме следует
создать три слоя:
Слой Count
Слой Count
(Счет) содержит ряд ключевых кадров, в которых применяются переменные, приписанные
к двум текстовым полям. Чтобы использовать такой подход, выполните следующую
последовательность шагов.
Аналогичный
код должен присутствовать во всех ключевых кадрах.
Рис.
3.13. Все ключевые кадры содержат три кнопки. Сценарий третьей кнопки
позволяет последовательно переходить к очередным ключевым кадрам
Слой Frame
Buttons
Создайте
новый слой и разместите его непосредственно под слоем Count (Счет). Теперь необходимо
ввести в фильм ключевые кадры и кнопки. Для этого следует выполнить следующие
шаги.
stop();
Кнопка Espacol
on(release) {
gotoAndStop("Uno")
Введите также соответствующий
сценарий для кнопки English (Английский):
Кнопка English
on(release) {
gotoAndStop("One")
on(release)
{
gotoAndStop("Quatro")
}
Выровняйте
кнопки и удостоверьтесь, что не перепутали англо- и испано-язычную версии.
СОВЕТ
ВЫРАВНИВАНИЕ
КНОПОК. Чтобы аккуратно выравнивать кнопки в кадрах, можно использовать панель
Info (Информация), позволяющую удостовериться в том, что значения координат
X или Y различных кнопок совпадают.
on (release) {
word = "" number
= "" gotoAndStop("Home")
}
Этот сценарий
очищает содержимое текстовых полей и отсылает фильм к первому кадру — Ноте (Домой).
Слой Output
(Вывод) состоит из двух текстовых полей для редактирования и двух надписей,
показанных на рис. 3.12. В табл. 3.2 вы найдете параметры указанных полей.
С помощью
инструмента Text (Текст) вставьте по центру рабочей зоны под текстовыми полями
надписи Know your numbers и Entiende los numeros (Знай свои числа). Теперь фильм
приобрел законченный вид. Протестируйте программу, выполнив команду Control
> Test Movie (Управление > Тестировать фильм) или воспользовавшись
комбинацией клавиш Ctrl+Enter (Windows) либо Cmd+Return (Macintosh). Рисунок
3.14 демонстрирует внешний вид экрана по окончании фильма.
Таблица
3.2. Свойства текстового поля
Имя переменной |
Флажок Border/Bg |
Способ выравнивания |
number |
Снят |
По центру |
word | Снят | По центру |
Рис.
3.14. В ходе выполнения сценария пользователь видит результаты его
работы на
экране. Он может щелкнуть на нижней кнопке, чтобы перейти к очередному английскому
или испанскому числительному в зависимости оттого, какой язык был выбран в начале
сеанса
По сравнению
с рассмотренной выше учебной программой данный проект весьма прямолинеен и отличается
практичностью. Мы хотим создать динамическое
меню, обеспечивающее демонстрацию ассортимента товаров, предлагаемым покупателям
через Web. Вместе с тем наше меню будет пытаться задерживать покупателей на
сайте электронного магазина. Во многих отношениях динамическое меню напоминает
обычные меню HTML, в которых используются фреймы. Полоса меню располагается
сбоку от рабочей зоны фильма, и пользователь имеет возможность быстро переключаться
между различными группами товаров. Здесь важно постоянно держать полосу меню
— инструмент навигации — в поле зрения пользователя. Реализовать подобный проект
средствами ActionScript при хорошей организации данных совсем нетрудно.
На рис. 3.15
можно видеть основные слои, кнопки, меню и начальную страницу нашего проекта.
Обратите внимание на то обстоятельство, что все ключевые кадры, заданные в верхнем
слое, содержат сценарии и метки. Все кнопки, включая кнопку Menu (Меню), находящуюся
в верхней части полосы меню, также содержат сценарии — последние обеспечивают
переход к различным ключевым кадрам. (Взгляните на маленькие флажки и буквы
а на киноленте, указывающие на факт существования меток и сценариев.)
Рис.
3.15. Начальная страница, слои, кнопки и меню воображаемого сайта
электронной коммерции
Проект.
Начальный этап создания сайта электронной коммерции
Рассматриваемый
образец фильма находится на прилагаемом компакт-диске в файле ecommerceMenu.fla.
В этом фильме меню используется как средство выбора товаров на сайте электронной
коммерции. В фильме созданы три слоя:
Слой Selections
Слой Selections
(Отобранные товары) можно назвать сердцем фильма. Вообще говоря, для этого слоя
было бы достаточно создать всего шесть кадров, но мы используем большее их число,
чтобы обеспечить видимость некоторых меток. Назначение данного слоя состоит
в том, чтобы организовать — хотя и не анимировать — фильм таким образом, чтобы
в различных кадрах на странице могли появляться разные сообщения.
ПРИМЕЧАНИЕ
В
этом учебном разделе мы будем указывать только клавиатурные соответствия команд
меню. Они намного ускоряют работу.
Чтобы создать
слой Selections (Отобранные товары), следуйте приведенным ниже инструкциям.
СОВЕТ
РАБОТА
С НЕСКОЛЬКИМИ КЛЮЧЕВЫМИ КАДРАМИ. Если вы собираетесь сгруппировать все ключевые
кадры, протащите мышь с нажатой кнопкой через представление нужных вам кадров
на киноленте и нажмите клавишу F6, чтобы создать несколько ключевых кадров одновременно.
Слой Menu
Bar Bg
В слое Menu
Bar Bg (Фон полосы меню) можно расположить черный прямоугольник, визуально отделяющий
полосу меню от содержимого страницы, как показано на рис. 3.16. Для этой операции
используется инструмент Rectangle (Прямоугольник). Нарисуйте вертикальный прямоугольник
на всю длину страницы, достаточно широкий, чтобы вместить кнопки. После этого
щелкните на кнопке с изображением замка в списке слоев в строке Menu Bar Bg.
Рис.
3.16. Меню присутствует на всех страницах фильма
Слой Buttons
Слой Buttons
(Кнопки) должен быть расположен над слоем Menu Bar Bg (Фон полосы меню), иначе
фон будет закрывать кнопки. Назначение кнопок состоит в том, чтобы обеспечить
переход к соответствующим кадрам и отображение в рабочей зоне определенного
содержимого. Для решения данной задачи можно использовать следующий алгоритм.
on(release) {
gotoAndStop("Computers")
}
on(release) {
gotoAndStop("Home")
}
Кнопка Menu
(Меню) обеспечивает пользователю возможность возврата к начальной странице.
Наличие кнопки возврата к домашней, или основной, странице крайне важно для
фильма, в котором используется меню. Не будь такой кнопки, пользователь может
решить, что он заблудился, и никогда больше не вернется на ваш сайт.
В данном
уроке мы сделали важный шаг в изучении ActionScript — изучили особенности использования
операции перехода в контексте фильмов Flash. Поработав с ActionScript, вы вскоре
обнаружите, что применяете операцию перехода чаще, чем любую другую конструкцию
этого языка. Именно переход обеспечивает управление ходом воспроизведения фильма
и в конечном счете определяет то, что видит на экране пользователь. В уроке
4 вы познакомитесь с чрезвычайно мощными структурами, применяемыми в условных
выражениях. Однако не следует забывать, что без операции перехода вся эта мощь
будет работать «вхолостую».
В этом уроке
мы научились...