Часть IV
Интерактивность
Глава 18
Основы программирования во Flash
Вот мы и добрались до программирования. Путь был долог и тяжел, но мы его преодолели, расправившись по дороге со статичной и анимированной графикой, импортированным видео и звуком. Перед нами высятся неприступные стены и грозные башни крепости под названием ActionScript. Могучие воины-действия натачивают мечи, а грозные маги-объекты извлекают из тайников древние артефакты… Однако пора заканчивать со стратегическими играми!
В четвертой части книги мы научимся создавать сценарии — небольшие программы, являющиеся неотъемлемой частью документа Flash и описывающие поведение какого-либо элемента изображения Flash или самого этого изображения. Мы научимся также привязывать сценарии к кадрам анимации, клипам и кнопкам и, разумеется, научимся создавать сами кнопки.
Сценарии Flash пишутся на языке программирования ActionScript, разработанном в фирме Macromedia специально для пакета Macromedia Flash. Этот язык очень прост в освоении и, вместе с тем, имеет достаточно средств для того, чтобы добавить фильмам Flash "жизни". На нем можно даже писать настоящие программы — так называемые Flash-приложения. И те из вас, кто продолжит изучение Flash 8 по его интерактивной справке или другим книгам, смогут стать настоящими Flash-программистами.
С помощью сценариев с фильмом и его элементами можно сделать все, что душе угодно. Например, можно остановить воспроизведение на каком-то кадре, а продолжить только после нажатия кнопки. Можно заставить фрагмент изображения двигаться по рабочему листу, не пользуясь стандартными средствами создания анимации, описанными в части IIIэтой книги. Можно заставить Flash открыть при щелчке на кнопке какую-либо Web-страницу. Можно… Да много чего можно сделать с помощью сценариев!
Начнем мы, как уже повелось, с теории. Нам нужно поближе познакомиться со сценариями и выяснить, как (или, точнее — когда) они работают. А заодно познакомиться с понятием события.
Как работают сценарии. События
Любой сценарий, который мы создаем в документе Flash, должен быть привязан к какому-то его элементу. Привязать сценарий во Flash можно:
□ к кадру анимации (внешней или внутренней, принадлежащей какому-либо образцу);
□ к клипу (в смысле — к экземпляру образца-клипа). О клипах и их создании см. главу 8;
□ к кнопке (к экземпляру образца-кнопки). О кнопках будет рассказано далее в этой главе.
Чтобы привязать к элементу изображения, нужно сначала выделить этот элемент. Далее мы просто открываем панель Actions и пишем в ней текст (или, как говорят профессиональные программисты, — код) сценария. Так, если был выделен кадр анимации, то написанный в панели Actions сценарий будет привязан к нему. Если же был выделен элемент, к которому нельзя привязать сценарий (например, "обычная" графика или экземпляр графического образца), панель Action будет недоступна.
Все сценарии Flash, привязанные к кнопке или клипу, выполняются в ответ на какое-либо событие, произошедшее в фильме Flash или операционной системе. Таким событием может быть щелчок на кнопке, "касание" мышью клипа и пр.; набор событий, к которым можно привязать сценарий, весьма обширен. Сценарии, привязанные к событиям, называются также обработчиками событий.
Сценарии же, привязанные к кадру анимации, выполняются при воспроизведении данного кадра. Поэтому они называются просто сценариями.
А теперь давайте выясним, как написать сценарий и привязать его к нужному событию нужного элемента документа Flash. Первый наш сценарий будет привязан к кадру фильма; заодно мы познакомимся с панелью Actions и научимся с ней работать. А потом перейдем к более сложным случаям — привязке сценариев к клипам и кнопкам. Ну и, конечно, узнаем, как создаются эти самые кнопки.
Привязка сценариев к кадрам анимации
Привязать сценарий к кадру проще простого. Откроем фильм, демонстрирующий деление клетки, который мы создали в главе 11, и выделим второй ключевой кадр второй сцены. Мы привяжем к этому кадру сценарий, запускающий воспроизведение данной сцены с первого кадра, и таким образом зациклим наш фильм.
На заметку
При воспроизведении фильма в отдельном окне Flash по умолчанию его зацикливает. Но фильм, сохраненный в формате Shockwave/Flash, может и не быть зациклен. Поэтому для зацикливания фильмов часто применяют сценарии, наподобие того, какой мы сейчас напишем.
Этот небольшой сценарий будет выглядеть вот так:
gotoAndPlay(1);
Здесь gotoAndPlay — особая команда языка ActionScript, выполняющая переход на кадр текущей сцены, номер которого указан в скобках, и запускающая воспроизведение фильма уже с этого кадра. В нашем случае она выполняет переход на кадр № 1.
Команды такого типа воздействуют на фильм Flash или часть изображения на рабочем листе, причем результат этого воздействия проявляется немедленно. В терминологии Flash они называются действиями (actions). А номер кадра, указанный в скобках, называется параметром.
Очень часто действия принимают не один параметр, а несколько. В этом случае значения этих параметров разделяются запятыми.
В совокупности действие gotoAndPlay с параметром составляют выражение — минимальную единицу сценария ActionScript. Символ "точка с запятой" служит признаком конца выражения ActionScript и является обязательным.
Наш первый сценарий очень короток — в нем всего одно выражение. Сложные же сценарии могут содержать тысячи, а то и десятки тысяч выражений.
Знакомство с панелью Actions
Теперь нам осталось привязать наш сценарий к кадру. А значит, нам понадобится панель Actions. Чтобы вывести ее на экран, нужно:
□ либо включить пункт-выключатель Actions меню Window;
□ нажать клавишу <F9>;
□ нажать кнопку, расположенную в правой части панели Properties:
Панель Actions показана на рис. 18.1. Она разделена на три части, которые мы сейчас рассмотрим.
В левой части панели Actions находится большой иерархический список доступных в языке ActionScript команд (действий, операторов, методов и пр.; с ними мы познакомимся в главе 19), которые мы можем использовать в своих сценариях. Таких команд очень много — так много, что они разбиты на несколько групп, и каждой такой группе соответствует определенное "дерево" иерархического списка. Если в сценарии нельзя использовать какую-либо команду, соответствующий ей пункт списка показан серым цветом и недоступен для выбора.
В данный момент панель Actions показывает все сценарии, привязанные к тому элементу фильма (кадру, кнопке или клипу), который сейчас выделен. Чтобы выяснить, какие сценарии привязаны к другому элементу фильма, достаточно просто выделить его на рабочем листе (для кнопки или клипа) или временной шкале (для кадра).
Есть и другой способ "путешествовать" по элементам фильма и привязанным к ним сценариям — использование другого иерархического списка, расположенного в левом нижнем углу панели Actions. Этот список представляет все элементы страницы, к которым уже были привязаны сценарии. Чтобы просмотреть код сценария, привязанный к тому или иному элементу, достаточно просто выбрать в списке соответствующий ему пункт.
В правой части панели находится большая область редактирования, в которую вводится собственно код сценария. При этом мы можем пользоваться всеми приемами, знакомыми нам по работе с программами текстовых редакторов, такими как перемещение курсора, выделение текста, работа с буфером обмена Windows и пр.
Начинающие программисты смогут получить более подробную информацию о командах языка ActionScript. Для этого им сначала нужно будет либо выбрать соответствующий пункт в иерархическом списке доступных команд (верхняя левая часть панели Actions), либо в области редактирования кода установить на нужную команду курсор мыши. После этого им останется нажать кнопку, расположенную в правом верхнем углу панели Actions:
Или выбрать в дополнительном меню панели пункт Help. Также они могут щелкнуть по нужному пункту иерархического списка команд правой кнопкой мыши и выбрать в появившемся на экране контекстном меню пункт View Help. После этого на экране появится панель Help (см. рис. 2.24) с текстом справки по выбранной команде.
Левая (оба иерархических списка) и правая (область редактирования кода) части панели Actions отделены друг от друга тонкой серой линией. Мы можем перетаскивать ее мышью, меняя относительные размеры частей. Можно также дважды щелкнуть на этой линии или нажать расположенную на ней небольшую кнопку с изображением черной стрелки, чтобы убрать с экрана оба списка. Повторный щелчок на этой кнопке восстановит левую часть панели.
Кроме того, толстой серой линией отделены друг от друга оба иерархических списка, расположенные в левой части панели. При двойном щелчке на линии или при нажатии расположенной на ней кнопки с изображением стрелки будет убран верхний список (список доступных команд).
Написание сценария
Итак, с панелью Actions мы вкратце познакомились. Конечно, полностью ее возможности (кстати, весьма широкие) мы не рассмотрели, но сейчас нам важнее написать наш первый сценарий, чем выяснять, чем богата эта панель. Позже мы займемся ей более подробно.
Выше уже говорилось, что для перемещения бегунка на другой кадр нужно использовать действие gotoAndPiay. Все действия находятся в "дереве" Global Functions иерархического списка доступных команд (см. рис. 18.1). В этом "дереве" нам нужно раскрыть "ветвь" Timeline Control (в ней содержатся действия, управляющие воспроизведением анимации) и найти пункт gotoAndPiay, "отвечающий" за одноименное действие. Теперь нам нужно добавить это действие в код нашего сценария, который пока что пуст.
Чтобы добавить какую-либо из перечисленных в иерархическом списке команд языка ActionScript в код сценария, следует выполнить любое из перечисленных ниже действий:
□ перетащить соответствующий пункт иерархического списка мышью в область редактирования кода. Нужно только проследить, чтобы он попал в нужное место;
□ дважды щелкнуть на пункте списка;
□ выбрать пункт Add to Script в контекстном меню выбранного пункта;
□ нажать расположенную над областью редактирования кода кнопку со знаком "плюс", раскрытое меню которой показано на рис. 18.2, "проследовать" по иерархии подменю и выбрать соответствующий пункт;
□ нажать комбинацию клавиш, соответствующую требуемому пункту упомянутого выше меню (рис. 18.2).
О комбинациях клавиш, служащих для добавления в сценарий команд языка ActionScript, нужно рассказать подробнее. Эти комбинации состоят из трех клавиш: двух алфавитно-цифровых и клавиши <Esc>. Нажимать их нужно так: сначала — клавишу <Esc>, затем — первую клавишу, потом — вторую. И еще: перед тем как пользоваться этими комбинациями, необходимо переключиться в область редактирования кода сценария — в обоих иерархических списках панели Actions эти комбинации не действуют.
Комбинации клавиш — очень полезная вещь. Только по умолчанию они почему-то не отображаются в иерархическом списке доступных команд — наверно, разработчикам Flash это показалось излишним. Чтобы все-таки заставить Flash отображать эти комбинации прямо в этом списке, достаточно включить пункт-выключатель Esc Shortcut Keys в дополнительном меню панели Actions.
Итак, мы выбрали действие gotoAndPlay и добавили его в код сценария одним из описанных выше способов. Это действие тотчас появится в области редактирования кода:
gotoAndPlay()
Осталось ввести значение параметра действия gotoAndPlay, равное 1, возможно, поставить точку с запятой — и первый наш сценарий готов. Он будет таким:
gotoAndPlay(1);
А кадр, к которому мы привязали сценарий, будет выглядеть так, как показано на рис. 18.3. Хорошо заметна буква а — она обозначает, что кадр содержит сценарий, который будет выполнен при достижении этого кадра.
В этом примере мы поместили свой сценарий в тот же слой, в котором находится наша анимация. Но если таких сценариев много, рекомендуется помещать их в отдельный слой под названием сценарии или Actions. Так нам будет проще управляться со всеми созданными нами сценариями, которых в сложном фильме может быть не один десяток.
На этом создание нашего первого сценария можно считать законченным. Проверим его в действии.
Воспроизведение фильмов, кадры которых содержат сценарии
Есть одна тонкость, которую необходимо учитывать при воспроизведении фильмов, кадры которых содержат сценарии. Дело в том, что Flash способен выполнять такие сценарии прямо во время воспроизведения, и это обстоятельство может очень помочь при их отладке. Правда, наше замечание касается только простейших сценариев, наподобие того, что мы только что написали.
Если мы сейчас начнем воспроизведение нашего фильма, выбрав пункт Play меню Control или нажав клавишу <Enter>, то Flash корректно обработает наш сценарий и выполнит переход на первый кадр сцены Фильм по достижении ее последнего кадра. Если же он этого не сделает, нужно проверить, включен ли пункт-выключатель Enable Simple Frame Actions меню Control. Как раз этот пункт при включении предписывает Flash выполнять сценарии, привязанные к кадрам.
Привязка сценариев к клипам
Привязать сценарий к кадру, как мы только что убедились, несложно. А как насчет клипа?
Чтобы привязать сценарий к клипу, нам будет нужно дать ему имя. Для этого достаточно его выделить и ввести нужное имя в поле ввода, расположенное в левой части панели Properties, под раскрывающимся списком доступных типов экземпляра.
Для экспериментов возьмем фильм, в котором демонстрировались возможности составной анимации (см. главу 13). (Помните этот фильм: прямоугольник, кувыркаясь, летит по рабочему листу?) Загрузим содержащий его документ. И выполним подготовительные действия.
1. Преобразуем экземпляр графического образца в экземпляр-клип, если не сделали этого раньше. Для чего выберем в раскрывающемся списке, расположенном в верхнем левом углу панели Properties, пункт Movie Clip.
2. Дадим клипу имя, например, clip.
Теперь все готово для написания сценария.
Давайте сделаем так, чтобы при щелчке мышью на вложенном клипе он останавливал свое воспроизведение, переставая крутиться. Конечно, пользы от такой интерактивности никакой, но, по крайней мере, это будет наш первый опыт привязки сценария к клипу. Мы ведь пока только учимся писать сценарии…
Итак, к делу! Выделим клип clip на рабочем листе. И вспомним то, что говорилось в начале этой главы о событиях.
В случае кадра нам было достаточно просто выделить его и написать сценарий, который выполнится при достижении этого кадра. Клип же поддерживает множество событий: щелчок мышью, "касание" мышью, буксировка и др.
Так что нам придется указать, к какому из поддерживаемых клипов событий мы привязываем наш сценарий. Это указание производится с помощью особого действия onclipEvent, в качестве параметра которого задается событие, в ответ на которое будет выполняться сценарий.
Полный "шаблон" для написания сценария-обработчика события будет иметь такой вид:
onClipEvent(<Обозначение события>)
{
<Код сценария-обработчика>
}
Первая строка этого "шаблона" задает событие, на которое "откликается" обработчик, и называется заголовком. Сам же код обработчика помещается в фигурных скобках после заголовка и называется телом.
Давайте же, поглядывая на приведенный выше "шаблон", напишем свой сценарий. Он будет таким:
onClipEvent(mouseDown)
{
stop();
}
В качестве параметра мы передаем действию onclipEvent обозначение события mouseDown. Это событие возникает, когда посетитель щелкает на клипе мышью. А действие stop вызывает немедленную остановку воспроизведения анимации клипа, к которому привязан содержащий это действие сценарий.
Здесь нужно сказать вот еще что. Все действия, помещенные нами в привязанные к клипу сценарии, будут управлять анимацией именно этого клипа. Поэтому действие stop в приведенном выше сценарии остановит внутреннюю анимацию клипа clip, а не анимацию самого фильма.
Теперь выделим наш клип, если еще не сделали этого, и вызовем на экран панель Actions. Введем в область редактирования кода приведенный выше код сценария-обработчика события. И запустим готовый фильм на воспроизведение.
Выше говорилось, что Flash при воспроизведении фильмов может выполнять простейшие сценарии, привязанные к кадрам. Сейчас же мы привязали сценарий к клипу, а не к кадру, а такие сценарии Flash выполнить не сможет. Поэтому нам придется выбрать пункт Test Movie меню Control или нажать комбинацию клавиш < Ctrl>+< Enter>, чтобы запустить воспроизведение фильма в отдельном окне.
Давайте, после того как начнется воспроизведение фильма, попробуем щелкнуть мышью на вращающемся прямоугольнике. Если нам все-таки удастся это сделать, он тотчас прекратит "разваливаться" пополам и "застынет" в таком виде, пока анимация не закончится.
Ура, наш первый обработчик события работает! Давайте его немного усложним. Снова выделим клип clip, откроем панели Actions и допишем в сценарий еще одно выражение. Наш сценарий примет такой вид (добавленное выражение выделено полужирным шрифтом):
onClipEvent(mouseDown)
{
stop();
_parent.stop();
Специальная команда языка ActionScript _parent обозначает клип, в который вложен клип, к которому привязан этот сценарий — в нашем случае это будет основной фильм. (Такие команды, кстати, называются ключевыми словами.) Ну, а записанное после этого слова и отделенное от него точкой действие stop нам уже знакомо.
Что же мы получим в результате? А вот что. Проигрыватель Flash прочитает сначала ключевое слово _parent, а потом — действие stop. И поймет, что действие stop нужно распространить на основной фильм — ведь именно в него вложен клип clip. Так что добавленное нами выражение остановит внешнюю анимацию.
Привязка сценариев к кнопкам
Кнопки Flash мы пока еще подробно не рассматривали, не считая краткого упоминания в главе 8. Настала пора поговорить о них подробно.
Кнопки (или экземпляры образцов-кнопок) Flash ведут себя подобно обычным кнопкам, которые мы встречаем практически во всех приложениях Windows. Они могут быть нажаты, в результате чего всегда выполняется какой-либо сценарий.
Используются кнопки обычно для того, чтобы предоставить зрителю (в частности, посетителю Web-сайта) возможность выполнить какое-то действие: запустить или остановить воспроизведение анимации, открыть Web-обозреватель и загрузить в него какую-то Web-страницу и пр. В интерактивных фильмах Flash кнопки встречаются очень часто.
Создание кнопок
Прежде чем привязывать к кнопке сценарий, ее нужно создать. Займемся этим.
Давайте продолжим эксперименты с фильмом, показывающим вращающийся прямоугольник. А именно, добавим к нему кнопку, останавливающую анимацию. Ведь остановить анимацию, щелкнув по неподвижной кнопке, проще, чем пытаться "поймать" мышью движущийся клип.
Сначала нам нужно создать образец-кнопку. Делается это уже знакомым нам из главы 8 способом. Выберем пункт New Symbol меню Insert, в поле Name диалогового окна Create New Symbol (см. рис. 8.2) введем имя создаваемого образца-кнопки (дадим ему имя Кнопка), включим переключатель Button в группе Behavior и нажмем кнопку ОК. После этого Flash откроет вновь созданный, пока еще "пустой" образец в режиме правки. Нам останется только нарисовать нашу кнопку.
Но не будем спешить это делать. Посмотрим лучше на временную шкалу (рис. 18.4). Она содержит всего четыре позиции, и весьма странных — все они имеют имена: Up, Over, Down и Hit. В позиции Up уже создан ключевой кадр.
Дело в том, что эти в этих позициях создаются ключевые кадры, которые содержат четыре разных изображения, используемых Flash для отображения различных состояний кнопки. Давайте их перечислим:
□ изображение, находящееся в кадре Up, выводится, когда кнопка не нажата и курсор мыши не установлен над ней;
□ изображение, находящееся в кадре Over, выводится, когда курсор мыши установлен над кнопкой, но сама кнопка не нажата;
□ изображение, находящееся в кадре Down, выводится в тот момент, когда пользователь нажимает кнопку;
□ изображение, находящееся в кадре Hit, задает область, которая будет откликаться на касания и щелчки мышью ("горячую область" кнопки). Это изображение никогда не выводится на экран.
Заметим, что обязательным является только изображение в кадре up. Без остальных можно обойтись. Их отсутствие восполнят следующие правила.
□ Если отсутствует кадр Hit, "горячую область" определяет изображение в кадре Up.
□ Если отсутствует кадр Down, для отображения нажатой кнопки Flash возьмет изображение из кадра Over.
□ Если отсутствует кадр Over, для отображения кнопки, которой "коснулся" курсор мыши, Flash позаимствует изображение из кадра Up.
Кнопки Flash имеют еще одну интересную особенность. Дело в том, что "горячая" область кнопки совсем не обязательно должна совпадать с самой кнопкой. Так, иная кнопка может сработать, если пользователь щелкнет совсем в другом месте рабочего листа. Это обстоятельство позволяет создавать весьма забавные и полезные вещи вроде подсказок, "всплывающих" при наведении мыши на какой-либо фрагмент изображения, и пр.
Но давайте все-таки нарисуем нашу кнопку. Не станем особенно мудрить — нарисуем в кадре Up обычный синий прямоугольник. На первый раз этого будет достаточно.
Следующий шаг — рисование изображения в кадре Over. Пусть это будет красный прямоугольник. Создадим в делении Over новый ключевой кадр; Flash автоматически поместит туда изображение из кадра up, и нам останется только перекрасить его в красный цвет.
Нарисуем содержимое остальных двух кадров кнопки. В кадре Down прямоугольник пусть будет темно-синим. А цвет изображения в кадре Hit роли не играет.
Все — образец-кнопка готов. Вернемся в режим правки фильма и откроем панель Library. Создадим новый слой и назовем его Кнопка — именно в него мы и поместим нашу кнопку, иначе анимация в первом слое окажется "оборванной". Найдем в списке образцов только что созданную нами кнопку и поместим в нижний правый угол рабочего листа ее экземпляр. И, наконец, проверим ее в действии.
Воспроизведение фильмов, содержащих кнопки
Воспроизведение фильмов, содержащих кнопки, также имеет некоторые особенности. Flash способен сделать так, что мы сможем нажимать кнопки прямо во время работы над фильмом (конечно, привязанные к ним сценарии работать не будут). Это поможет проверить правильность всех наших действий.
Чтобы задействовать режим обработки кнопок на рабочем листе, нам нужно будет включить пункт-выключатель Enable Simple Buttons меню Control. Также можно нажать комбинацию клавиш <Ctrl>+<Alt>+<B>. После этого,
если мы поместим курсор мыши над кнопкой, она сменит свой цвет на красный. Мы даже сможем ее нажать (правда, привязанный к кнопке сценарий в этом случае не будет выполнен).
Единственный недостаток такой кнопки: мы не сможем ее выделить. Для этого нам придется отключить пункт-переключатель Enable Simple Buttons меню Control.
Естественно, при воспроизведении фильма в отдельном окне кнопки будут работать всегда. Также в этом случае будут работать и все привязанные к ним сценарии.
Добавление звуков к кнопкам
Мы имеем возможность, кроме всего прочего, привязывать к кнопкам звуки. Звуки могут быть привязаны к разным состояниям кнопки, в результате чего, например, при наведении курсора мыши на кнопку будет воспроизведен один звук, а при щелчке на кнопке — другой. Сейчас мы выясним, как это делается.
Прежде всего, импортируем требуемые звуки в библиотеку. (О том, как это делается, было подробно рассказано в главе 17.) Дадим получившимся в результате импорта образцам-звукам "говорящие" имена, например: касание и нажатие. Все — можно приступать к "озвучке" кнопки.
Откроем нужный образец-кнопку в режиме правки. Создадим новый слой для звуков и назовем его Звук-касание. После этого выделим деление over временной шкалы, создадим в нем ключевой кадр и поместим на рабочий лист экземпляр образца-звука Касание. Результат этих действий показан на рис. 18.5.
Чтобы привязать звук к состоянию Down кнопки, нам нужно будет создать еще один слой — Звук-нажатие. После этого останется только создать ключевой кадр в делении Down и поместить в него звук Нажатие.
Теперь можно вернуться в основной фильм и проверить "озвученную" кнопку в действии. Проще всего это сделать, запустив воспроизведение фильма в отдельном окне.
Написание сценариев, привязанных к кнопкам
Уф! Наконец-то кнопка создана. Теперь можно заняться собственно привязкой к ней сценария.
Сценарии привязываются к кнопке точно так же, как и к клипу. Мы выделяем на рабочем листе нужную кнопку, даем ей имя (скажем, button), воспользовавшись панелью Properties, вызываем на экран панель Actions и пишем в ее области редактирования код нужного сценария. Различия имеются только в наименовании событий и синтаксисе заголовков их обработчиков.
Так, "шаблон" для написания сценария-обработчика события кнопки имеет следующий вид:
on(< Обозначение события>)
{
<Код сценария-обработчика>
}
Обратим внимание, что вместо действия onclipEvent в этом случае используется действие on. Это первое отличие. Второе же отличие заключается в том, что для обозначения события нажатия кнопки нам будет нужно использовать Слово press, а не mouseDown.
Учитывая сказанное, напишем сценарий для кнопки. Он будет таким:
on (press)
{
stop();
}
Выражение, записанное в теле этого сценария, нам давно знакомо. Оно остановит анимацию в основном фильме, так как сценарии, привязанные к кнопке, действуют на тот клип, в котором эта кнопка находится (в нашем случае — это основной фильм). Это третье отличие сценариев, привязанных к кнопкам, от сценариев, являющихся "собственностью" клипов.
Введем этот сценарий в область редактирования кода панели Actions и запустим воспроизведение фильма в отдельном окне. После этого щелкнем по кнопке, и вся анимация — и внешняя, и внутренняя — остановится.
Работа с панелью Actions
С панелью Actions мы уже знакомы. (Еще бы — сколько сценариев с ее помощью мы уже написали!.. Целых четыре!) Давайте посмотрим, что она нам еще может предложить, продолжим знакомство, так сказать.
Как уже говорилось, мы можем использовать при вводе кода в область редактирования этой панели любые приемы, знакомые нам по работе в программах редактирования текста, в частности — операции с буфером обмена Windows, "откат" последнего совершенного действия и "откат отката".
Кроме того, панель Actions предоставляет нам дополнительные инструменты, которые сильно облегчат наш труд. Рассмотрим самые полезные из них.
Подсказка по коду. Когда мы открываем круглую скобку, готовясь ввести значение параметра какого-либо действия (например, gotoAndPlay), чуть ниже текстового курсора появляется небольшое светло-желтое окошко с текстом, описывающим назначение этого параметра (рис. 18.6). После того как мы введем значение этого параметра и поставим запятую, подсказка выдаст описание следующего параметра, и т. д. Щелкая на небольших стрелках, находящихся в окне подсказки и направленным вправо и влево, можно просмотреть описания соответственно следующего и предыдущего параметров.
Подсказки-списки. Если мы откроем скобку, чтобы задать параметр, значения которого должны выбираться из ограниченного списка, на экране появится этот самый список со значениями (рис. 18.7). Нам останется только выбрать в списке нужное значение либо щелчком мыши, либо выделив его клавишами-стрелками и нажав клавишу <Enter>.
Любую из этих подсказок можно вызвать на экран, поставив в нужное место кода текстовый курсор и нажав кнопку, расположенную над областью редактирования кода:
Также можно выбрать пункт Show Code Hint в дополнительном меню панели или, что проще всего при работе с клавиатурой, нажать комбинацию клавиш < Ctrl>+<пробел>.
Автоматическое создание отступов при вводе строк кода. (Отступы очень часто применяются, например, для выделения тела обработчика события.) Если мы ввели строку с отступом от ее начала, то при нажатии клавиши <Enter> новая строка будет иметь такой же отступ. Отступы формируются также, если предыдущая строка заканчивается круглой или фигурной скобкой.
Можно установить отступ вручную, для чего достаточно целиком выделить нужные строки кода и нажать клавишу <Таb>. Чтобы убрать отступ, нужно также выделить строки и нажать комбинацию клавиш <Shift>+<Tab>.
Проверка набранного кода на предмет синтаксических ошибок. Чтобы включить проверку, нужно нажать кнопку, расположенную над областью редактирования кода:
Также можно выбрать пункт Check Syntax в дополнительном меню панели или нажать комбинацию клавиш <Ctrl>+<T>. Flash проверит введенный нами код на правильность и выведет окно-предупреждение с текстом "The script contains no errors" (если сценарий не содержит ошибок) или "This script contains errors. The errors encountered are listed in Output Panel" (если сценарий содержит ошибки).
Если сценарий содержит ошибки, Flash также выведет на экран небольшую панель Output, в которой будут приведены описания всех найденных ошибок (рис. 18.8). Правда, эти описания будут даны по-английски…
Встроенные средства поиска и замены подстрок в коде сценария. Рекомендуются к использованию в случае, когда сценарий очень велик, а нам нужно быстро найти и заменить параметр какого-либо действия.
Для выполнения поиска подстроки нужно нажать кнопку, расположенную над областью редактирования кода:
Можно также выбрать в дополнительном меню панели пункт Find and Replace или нажать комбинацию клавиш <Ctrl>+<F>. В результате этого на экране появится диалоговое окно Find and Replace (рис. 18.9).
В поле ввода Find what зададим искомую подстроку, включим флажок Match case, если желаем, чтобы Flash учитывал при поиске регистр символов, и нажмем кнопку Find Next. Flash выделит первую строку кода, в которой имеется заданная нами подстрока. Если подстрока так и не будет найдена, Flash выведет окно-предупреждение с текстом "Cannot find the string "<Искомая подстрока>"".
Чтобы продолжить поиск введенной подстроки далее по тексту сценария, мы снова нажмем кнопку Find Next диалогового окна Find. Если мы уже закрыли это окно (для чего достаточно нажать кнопку Close), то выберем в дополнительном меню панели пункт Find Again или нажмем клавишу <F3>.
Для выполнения замены искомой подстроки на другую служит все то же окно Find and Replace. В этом случае после задания искомой подстроки нужно будет ввести в поле Replace with подстроку, которая заменит искомую. Опять же, можно установить флажок Match case, чтобы Flash учитывал при поиске регистр символов. Замена запускается нажатием кнопки Find Next. Flash выделит первую строку кода, в которой встретилась искомая подстрока. После этого мы можем нажать кнопку Replace, чтобы выполнить замену. Для продолжения поиска нужно снова нажать кнопку Find Next.
Мы можем выполнить замену сразу всех найденных в коде подстрок. Для этого сразу же после ввода значений в поля ввода окна Replace следует нажать кнопку Replace All.
Автоматическая нумерация строк сценария. Чтобы воспользоваться этим средством, достаточно включить пункт-выключатель Line Numbers в дополнительном меню панели или нажать комбинацию клавиш <Ctrl>+ +<Shift>+<L>.
Быстрый переход на строку кода с заданным номером. Выбираем пункт Go to Line дополнительного меню панели или нажимаем комбинацию клавиш <Ctrl>+<G>, вводим номер нужной строки в поле ввода Line number диалогового окна Go to Line (рис. 18.10) и нажимаем кнопку ОК:
Автоматический перенос слишком длинных строк. От него можно избавиться, отключив пункт-выключатель Word Wrap дополнительного меню панели или нажав комбинацию клавиш <Ctrl>+<Shift>+<W>. Правда, в этом случае нам придется часто пользоваться горизонтальной полосой прокрутки, чтобы просмотреть слишком длинные строки кода.
Печать всех сценариев, созданных в документе. Выбираем пункт Print дополнительного меню панели. На экране появится стандартное диалоговое окно задания параметров печати Windows; задаем эти параметры и нажимаем кнопку ОК.
Поведения Flash и их использование
Специально для начинающих программистов Flash представляет набор так называемых поведений (behaviors). Это набор сценариев ActionScript, которые мы можем привязать к кадру, клипу или кнопке без необходимости набирать их вручную в панели Actions. Таких поведений в составе Flash поставляется довольно много; они служат для управления анимацией, клипами, звуком и пр.
Работа с поведениями — создание, правка и удаление — выполняется с помощью панели Behaviors (рис. 18.11). Чтобы вывести эту панель на экран, нужно включить пункт-выключатель Behaviors меню Window или нажать комбинацию клавиш <Shift>+<F3>.
Большую часть этой панели занимает список поведений, уже привязанных к выделенному элементу фильма: кадру, клипу или кнопке. (На рис. 18.11 этот список пуст.) Он организован в виде таблицы из двух колонок: Event (событие, которое обрабатывает поведение) и Action (поведение, выполняемое в ответ на событие).
Чтобы создать поведение, привязанное к какому-либо элементу фильма, нужно выделить этот элемент (его имя, равно как и имя образца, на основе которого он был создан, появятся над списком поведений) и нажать на кнопку с изображением знака "плюс" панели Behaviors. На экране появится небольшое меню (рис. 18.12), содержащее все доступные поведения, сгруппированные в категории. Категории представляют собой подменю, а сами поведения — пункты этих подменю.
После выбора пункта, соответствующего нужному поведению, на экране появится диалоговое окно, где нужно будет задать параметры этого поведения. Поведение будет создано после нажатия кнопки ОК этого окна. А в списке панели Behaviors появится соответствующая этому поведению строка.
Если поведение было привязано к клипу или кнопке, нужно будет задать событие, в ответ на которое будет выполняться сценарий этого поведения. Для этого достаточно выбрать нужную строку в списке панели Behaviors и щелкнуть внутри колонки Event этой строки. После этого там появится небольшой раскрывающийся список (рис. 18.13), в котором и выбирается нужное событие.
Для правки параметров поведения достаточно дважды щелкнуть на соответствующей ей строке списка, после чего на экране появится диалоговое окно задания параметров этого поведения. А чтобы удалить ненужное поведение, следует выбрать соответствующую ему строку списка и нажать кнопку с изображением знака "минус".
Хоть поведения и создавались для помощи начинающим программистам, но для понимания принципов их создания нужно все же познакомиться с языком программирования ActionScript. Так что мы не будем здесь подробно знакомиться со всеми этими поведениями, а лучше перейдем к рассмотрению этого языка. После знакомства с ActionScript понять, что делает и как создается то или иное поведение, не составит никакого труда.
Что дальше?
Ну что ж, мы сделали самый первый шаг в мире Flash-программирования. Мы усвоили новые термины, изучили новые инструменты и были потрясены открывшимися перед нами новыми возможностями. И мы написали целых четыре сценария! Хоть они и очень просты, но ведь это все-таки наш первый шаг…
Для продолжения занятий по программированию во Flash нам не хватает знания самого языка ActionScript. Поэтому всю следующую главу мы посвятим изучению этого весьма мощного языка. А попутно множество других сценариев, на этот раз — более сложных.