Общие сведения об ActionScript

ActionScript позволяет создавать сценарий для клипа, кнопки или кадра. Каждый такой сценарий жестко связан с соответствующим элементом фильма. При публикации фильма текст сценария, как и другие элементы фильма, экспортируется в SWF-файл. Тем не менее, при желании вы можете сохранить его в отдельном файле с расширением .as, чтобы впоследствии использовать в каком-либо другом фильме.

Из сценария вы можете обратиться к любому другому объекту фильма (из числа кнопок, клипов и кадров) и даже к другому фильму или какому-либо внешнему сетевому ресурсу. Например, можно указать, что при достижении считывающей головкой кадра с номером 10 необходимо загрузить звуковой файл, расположенный на сайте www.sound.ru. Поэтому Flash должен знать, в каких «отношениях» состоят объекты, фигурирующие в сценарии. Некорректное обращение к объекту обязательно приведет к ошибке в сценарии. Скажем, запрошенный звуковой файл будет воспроизведен в 10-м кадре временной диаграммы фильма, вместо того, чтобы озвучить 10-й кадр конкретного клипа.

В связи с указанными выше обстоятельствами перед началом работы с ActionScript полезно разобраться с двумя понятиями: объектная модель языка и контекст выполнения сценария.

Объектная модель ActionScript. Под объектной моделью понимается совокупность типов объектов, которые могут использоваться в сценарии, и отношения подчиненности между ними.

Напомним, что в языках программирования объект описывается набором атрибутов (свойств) и перечнем методов (процедур), которые могут быть применены к этому объекту. Для каждого класса объектов определен свой набор атрибутов и методов. Например, для объекта «Кнопка» в качестве атрибутов могут использоваться метка, геометрические размеры, координаты, а в качестве метода - реакция на нажатие кнопки. Конкретный объект - это экземпляр соответствующего класса. Два экземпляра одного и того же класса могут отличаться один от другого значениями атрибутов.

Для описания действий над объектами, а также для указания подчиненности объекта обычно применяется так называемая «точечная нотация». Например, чтобы указать, что к кнопке Button_l следует применить метод onPress(), используется конструкция

Button_1. onPress().

Если же требуется указать на принадлежность кнопки Button_1 клипу Сliр_2, то запись может выглядеть так:

Clip_2. Button_1.

Объектная модель, применяемая в ActionScript, во многом аналогична объектным моделям других сценарных языков. Следует отметить, что в ActionScript иерархия объектов строится относительно Flash-плеера, а не относительно HTML-документа, отображаемого в окне броузера.

Например, чтобы обратиться к клипу, непосредственно вставленному в кадр основного фильма, можно записать: _root. Clip_l.

Ключевое слово _ root используется в качестве имени основного фильма и в данном случае может быть опущено. Если же клип является частью другого,

«родительского», клипа, то для указания его подчиненности может использоваться ключевое слово _parent, например:

_parent. Clip_1.

Подробнее вопросы адресации объектов в ActionScript рассмотрим ниже. Теперь вернемся собственно к объектной модели ActionScript. Как было сказано выше, корневым объектом, неявно присутствующим в любом сценарии, является Flash-плеер. На следующем уровне располагаются четыре класса объектов: Movie (Объекты фильма); Core (Объекты ядра); Client/Server (Объекты клиент-серверной среды исполнения); Authoring (Объекты среды разработки).

Объекты класса Movie позволяют представить в сценарии взаимоотношения между элементами фильма, а также управлять параметрами и поведением элементов фильма. К этому классу относятся следующие объекты:

· Button (Кнопка) - объект, представляющий в сценарии кнопку. Для такого объекта может динамически изменяться, например, порядок установки фокуса ввода;

· MovieClip (Клип) - объект, представляющий в сценарии клип. Для него может динамически изменяться, например, число вложенных клипов;

· Mouse (Мышь) - объект, представляющий в сценарии указатель мыши. Он позволяет управлять видимостью и стилем указателя;

· Key (Клавиатура) - объект, представляющий в сценарии клавиши, используемые для управления фильмом;

· Color (Цвет) - объект, представляющий в сценарии палитру клипа и, соответственно, позволяющий изменять эту палитру;

· Sound (Звук) - объект, представляющий в сценарии звуковой символ, связанный с кнопкой или клипом;

· Stage (Стол) - объект, предназначенный для управления параметрами стола;

· TextField (Текстовое поле) - объект, представляющий в сценарии динамическое текстовое поле или поле редактирования;

· TextFormat (Формат текста) - объект, позволяющий управлять из сценария параметрами шрифта текстового поля.

Между объектами классов Button и MovieClip в ActionScript весьма сложно определить отношения подчиненности. Они могут изменяться от одного фильма к другому и даже от одной сцены к другой. Например, в одной сцене кнопка может входить в состав клипа, а в другой - клип может использоваться для «оживления» изображения кнопки, остальные же объекты класса Movie (за исключением, пожалуй, TextField ) можно считать подчиненными по отношению к объектам Button и MovieClip, поскольку они могут входить в их состав, но не наоборот.

Объекты класса Core предназначены для работы с объектами фильма и играют вспомогательную роль. Их следует использовать в том случае, если стандартных методов оказывается недостаточно для управления (изменения свойств) объектами фильма. В класс Core входят, в частности, следующие объекты:

· Math (Математика) - объект, используемый в сценарии для работы с числовыми величинами. В отличие от всех других классов языка ActionScript, объект Math является и единственным экземпляром этого класса, то есть методы данного класса могут применяться непосредственно к объекту Math. Например, чтобы получить значение косинуса с помощью метода cos, можно записать: Math.cos(3);

· Number (Число) - объект, предусмотренный для выполнения некоторых специальных операций с числовыми величинами; например, с его помощью можно определить наибольшее число в некотором диапазоне;

· String (Строка) - объект, используемый в сценарии для работы со строками;

· Date (Дата) - объект, используемый в сценарии для работы с календарными датами и временем.

Объекты класса Client/Server предназначены для работы с документами (Web- страницами), написанными на языке XML. Некоторые из этих объектов обеспечивают загрузку, обработку и пересылку XML-документов, другие - обслуживают соединения через сокеты. Тем самым ActionScript реализует поддержку серверной обработки XML- документов, содержащих Flash-фильмы.

Объект класса Authoring предназначен для управления параметрами среды разработки Flash-фильмов. Для него предусмотрены два основных метода: install и uninstall.

Контекст выполнения сценария. Контекст выполнения сценария определяет доступность и относительные адреса объектов и других программных величин (переменных), используемых в сценарии. Необходимость учитывать контекст появляется в том случае, если в сценарии используется несколько объектов или переменных с одинаковыми именами. Например, если вы создадите переменную framePS для хранения скорости воспроизведения основного фильма, а затем — переменную с таким же именем (чего не бывает) для конкретного клипа, то рано или поздно сценарий сработает не так, как предполагалось.

В связи с эти необходимо учитывать следующую особенность ActionScript. Область видимости переменной в нем определяется временной диаграммой, активной в настоящий момент. Например, если в 10-м кадре основного фильма имеется клип, с которым связан сценарий, то все переменные, имеющиеся в этом сценарии, будут влиять на поведение временной диаграммы этого клипа, а не основного фильма. При условии, что в обращении к переменным отсутствует ссылка на временную диаграмму более высокого уровня.

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

Рис. 1. Иерархия временных диаграмм, загруженных в Flash-плеер

Таким образом, область действия переменных в Flash-фильме распространяется сверху вниз: имя переменной, созданной в сценарии временной диаграммы основного фильма, «видно» в сценарии следующего уровня, если в нем нет своей переменной с таким же именем.

Кроме того, внутри программного блока сценария, ограниченного фигурными скобками, могут объявляться локальные переменные, которые «видны» только в пределах этого блока.

Для управления областью видимости переменных в ActionScript используется понятие «путь назначения» - target path. Путь назначения позволяет указать принадлежность объекта или переменной конкретной временной диаграмме, загруженной в Flash-плеер.

Чтобы правильно записать путь назначения, необходимо учитывать объектную модель ActionScript и взаимное положение временных диаграмм. Например, если вы хотите указать, что требуется перейти к 10-му кадру основного фильма и воспроизвести его, вы можете записать такую конструкцию: level0.gotoAndPlay(l 0).

Возможны два варианта указания пути назначения: абсолютный и относительный. Абсолютный путь вычисляется, как правило, на основе уровня временной диаграммы (как в приведенном выше примере). Указав в качестве отправной точки уровень диаграммы, вы можете быть уверены, что Flash-плеер правильно отыщет адресата, даже после того, как вы переместите фрагмент сценария, из которого выполнено обращение.

Относительный путь вычисляется с учетом положения той диаграммы, из которой выполняется обращение. Такой вариант более компактен, но менее надежен. Например, чтобы обратиться к кадру диаграммы, расположенной двумя уровнями выше текущей, можно записать такую конструкцию:

_parent._parent.muClip.

Однако после перемещения клипа, например, на более высокий уровень, относительная ссылка станет некорректной.

Итак, при создании сценариев на ActionScript возможно использование трех типов переменных, различающихся областью видимости:

· глобальные (Global variables), которые доступны в сценарии любой временной диаграммы;

· переменные временной диаграммы (Timeline variables), которые доступны из любой временной диаграммы при условии, что для обращения к ним используется путь назначения (target path);

· локальные (Local variables), которые «видны» только в пределах того программного блока, в котором они объявлены.

Интерфейс панели Actions

Как было сказано в начале, панель Actions обеспечивает два режима работы. В обычном режиме (Normal Mode) описание действий выполняется путем заполнения соответствующих полей параметров. В экспертном режиме (Expert Mode) вы можете записывать и корректировать действия непосредственно в окне сценария, работая в нем как в обычном текстовом редакторе. По умолчанию при первом обращении к панели установлен режим Normal Mode.

Вызов панели Actions. Существует несколько способов вызова на экран панели Actions. Однако наиболее надежный и корректный способ состоит в том, чтобы вызывать панель «от имени» того элемента фильма, для которого вы собираетесь создать сценарий. Чтобы открыть панель Actions для создания сценария кадра, необходимо щелкнуть правой кнопкой мыши на временной диаграмме в ячейке соответствующего ключевого кадра и в контекстном меню выбрать команду Actions. После того, как панель появится на экране, убедитесь, что создаваемый сценарий будет связан именно с тем кадром, с которым требуется. Для этого достаточно взглянуть на заголовок панели и расположенный под ним список.

Чтобы открыть панель Actions для создания сценария, связанного с кнопкой или с клипом, необходимо:

1. Выбрать соответствующий объект на столе.

2. Открыть панель инспектора свойств.

3. Щелкнуть кнопку Edit the action script (Редактировать сценарий действий), расположенную возле правой границы панели инспектора свойств. Кнопка имеет белый цвет, если сценарий для данного объекта отсутствует, после создания сценария она меняет цвет на синий.

При вызове панели Actions для кнопки или клипа в ее заголовке отображается соответствующая информация.

Сценарий может быть сопоставлен только конкретному экземпляру кнопки или клипа, помещенному на стол, но не собственно символу, хранящемуся в библиотеке. Назначение сценария экземпляру кнопки или клипа не влияет на свойства других экземпляров.

После открытия панели можно выбрать режим работы. Выбор режима выполняется с помощью соответствующих команд меню View Options (Настройка формата), которое открывается щелчком на одноименной кнопке панели.

Независимо от выбранного режима, панель содержит следующие основные элементы интерфейса:

· раскрывающийся список сценариев фильма, который обеспечивает быстрый переход к другому сценарию без необходимости выбора на столе объекта, с которым связан этот сценарий;

· кнопка Script Pin (Прикрепить сценарий) позволяет зафиксировать текущий сценарий, то есть содержимое панели зависит от выбранного на столе объекта фильма. После фиксации сценария можно выбрать на столе другой объект, и содержимое панели при этом не изменится;

· кнопка в виде книжки обеспечивает вызов встроенной справочной системы по языку ActionScript;

· панель Action Toolbox (Комплект инструментов для действий), где каждый элемент соответствует определенной конструкции языка ActionScript; двойной щелчок на значке элемента обеспечивает его вставку в текст сценария;

· окно сценария, в котором отображается текст сценария. При работе в режиме

Expert Mode в этом окне можно работать как в обычном текстовом редакторе;

· панель инструментов окна сценария. Размещенные на ней кнопки повышают удобство работы с текстом сценария;

· строка состояния предназначена для вывода дополнительной информации относительно компонентов, включенных в сценарий, также в строке состояния выводится краткое сообщение об ошибке.

Список Action Toolbox содержит перечень следующих компонентов

Языка ActionScript, которые могут быть использованы при создании сценария:

· Actions (Действия) - процедуры языка ActionScript, имеющие «универсальный» характер, то есть не зависящие от особенностей класса объектов (в отличие от методов объектов, принадлежащих конкретному классу). В данную категорию входят традиционные для большинства языков программирования высокого уровня операторы логического управления (проверки логических условий, организации цикла и т. п.);

· Operators (Операторы) - операторы логических и арифметических операций

(сложение, вычитание, сравнение и т. п.);

· Functions (Функции) - предопределенные (библиотечные) функции (например, в их число входит функция проверки номера версии Flash-плеера);

· Properties (Свойства) - свойства объектов, не зависящие от класса (например,

уровень прозрачности изображения);

· Objects (Объекты) - предопределенные объекты, которые могут быть использованы в сценарии (например, существует объект для работы с датой и временем), а также в этот же раздел включаются пользовательские классы объектов;

· Deprecated (Осуждаемые) - конструкции, которые не рекомендуется использовать в сценариях (как устаревшие);

· Flash UI Components (Компоненты пользовательского интерфейса).

Кроме перечисленных разделов, в списке Action Toolbox имеется также раздел

Index, который содержит алфавитный перечень всех компонентов языка.

Режим Normal Mode. Область ввода параметров предназначена для указания параметров, необходимых для корректного выполнения конструкции, помещенной в текст сценария. Формат области зависит от синтаксиса конструкции, выбранной (выделенной) в тексте сценария. Некоторые конструкции вообще не имеют параметров. В этом случае область ввода параметров пуста.

На панели инструментов окна сценария имеются следующие кнопки:

· кнопка Add new item (Добавить новый элемент), помеченная символом «+», обеспечивает вызов системы каскадных меню, отражающих иерархию компонентов языка ActionScript. Выбор пункта меню самого нижнего уровня обеспечивает вставку в сценарий соответствующего компонента;

· кнопка, помеченная символом «-», обеспечивает удаление из текста сценария, выбранного в окне компонента;

· кнопка Find (Поиск) вызывает на экран диалоговое окно, в котором можно ввести искомую последовательность символов;

· кнопка Replace (Замена) позволяет открыть диалоговое окно для установки параметров замены строки (последовательности символов);

· кнопка Insert a target path (Добавить путь назначения) обеспечивает вывод на экран диалогового окна, с помощью которого можно описать путь назначения для адресации необходимого элемента фильма. Данная кнопка становится доступна в том случае, если в окне сценария выбран компонент, в котором предполагается использование пути назначения, и если фокус ввода установлен в соответствующем поле окна установки параметров;

· кнопка Debug Options (Параметры отладки) открывает меню, содержащее команды, с помощью которых выполняется расстановка и удаление контрольных точек (или точек прерывания Breakpoints). Использование контрольных точек позволяет проследить выполнение сценария по шагам, величина которых определяется расстоянием между точками (числом строк сценария между точками);

· кнопки, обозначенные стрелками, позволяют перемещать компоненты сценария относительно друг друга (если компонент состоит, например, из трех строк, то одним щелчком перемещаются все три строки).

Одним из важнейших достоинств режима Normal Mode является то, что он позволяет добавлять в сценарий предопределенные действия из раздела Actions, не прибегая к ручному программированию. Всего таких действий более десятка:


· Go To — переход к заданному кадру или сцене;

· Play и Stop — соответственно запуск и остановка воспроизведения фильма;

· Toggle High Quality — управление качеством воспроизведения фильма;

· Stop All Sounds — выключение звукового сопровождения;

· Q Get URL — переход по заданному URL;

· FSCommand — управление Flash-плеером в процессе воспроизведения фильма;

· Load Movie и Unload Movie — соответственно загрузка и выгрузка фильма броузером читателя;

· Tell Target — управление навигацией между Flash-фильмами и клипами.

Для того чтобы в режиме Normal Mode создать сценарий или добавить в него некоторую компоненту, необходимо выполнить следующие действия:

1. Выбрать на столе экземпляр кнопки или клипа (либо кадр на временной диаграмме), с которым должен быть связан сценарий.

2. Открыть в списке Action Toolbox требуемый раздел, щелкнув на нем левой кнопкой мыши.

3. Скопировать выбранный элемент в окно сценария, дважды щелкнув на имени или на значке элемента, или просто перетащив его мышью. При этом в окне отображается соответствующий фрагмент сценария на языке ActionScript.

4. Ввести в соответствующих полях требуемые значения параметров.

Когда назначаются действия кнопке или клипу, Flash автоматически генерирует специальную управляющую процедуру (handler), которая во многих объектно- ориентированных языках называется «обработчик события» (или «селектор»). Обработчик проверяет, произошло ли событие определенного типа, и если да, то инициирует соответствующую последовательность действий. Дополнительная роль обработчика в ActionScript - это объединение (группирование) действий, связанных с данным событием.

Для кнопок обработчик имеет имя on, а для клипов - onСlipEvent. Имя обработчика предшествует списку событий, на которые обработчик должен реагировать. Например, конструкция on(release, KeyPress:«A») означает, что обработчик должен реагировать на события двух типов: release (кнопка мыши отжата) и KeyPress:«A» (на клавиатуре нажата клавиша «А»).

Вообще для кнопок в языке ActionScript предусмотрены следующие типы событий:

· Press - пользователь нажимает кнопку мыши, когда указатель находится над изображением кнопки (фильма);

· Release - пользователь нажимает и затем отпускает кнопку мыши (указатель находится над изображением кнопки);

· Release Outside - пользователь отпускает кнопку мыши, когда указатель не находится над изображением кнопки;

· Key Press - пользователь нажимает определенную клавишу на клавиатуре;

· Roll Over - пользователь перемещает указатель над изображением кнопки;

· Roll Out - пользователь перемещает указатель за пределы изображения кнопки;

· Drag Over - пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, выводит его за пределы кнопки, и затем опять устанавливает над кнопкой;

· Drag Out - пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, и затем выводит его за пределы кнопки.

Чтобы изменить перечень событий, на которые должен реагировать элемент фильма, необходимо щелкнуть мышью в строке сценария, в которой записано имя обработчика. При этом изменится формат окна параметров, и в нем появится группа флажков, с помощью которых можно выбрать требуемые события. Сделанный выбор сразу же отображается в окне сценария.

Если добавление в сценарий некоторой конструкции приводит к ошибке или для нее требуется указать обязательный параметр, то конструкция выделяется в окне сценария красным цветом, так же она дублируется и в строке состояния.

Формат окна Insert a target path позволяет описать путь назначения некоторого элемента фильма. Это окно содержит следующие основные элементы интерфейса:

· дерево фильма, отражающее иерархию объектов фильма, к которым возможно обращение из сценария. Поскольку при обращении к объекту используется имя соответствующего экземпляра (кнопки, клипа, текстового поля), то в дерево включаются только поименованные экземпляры. Корневой элемент дерева зависит от способа адресации: для абсолютного адреса - это ключевое слово _root (то есть основной фильм), для относительной - слово this;

· многострочное текстовое поле Target (Назначение), предназначенное для ввода и корректировки пути назначения; если выбрать в дереве фильма некоторый элемент, то в поле Target появится соответствующий маршрут, который может быть изменен или дополнен вручную;

· пара переключателей Mode (Режим), которые позволяют выбирать способ адресации (относительный - Relative или абсолютный - Absolute);

· пара переключателей Notation (Нотация), которые позволяют выбирать формат записи пути назначения:

· вариант Dotes (Точки) означает применение точечной нотации;

· вариант Slashes (Слэши) соответствует записи с использованием слэшей (это

«устаревший» стиль, используемый для совместимости с предыдущими версиями

ActionScript).

Режим Expert Mode. Экспертный режим позволяет совмещать два способа формирования сценария: непосредственный ввод конструкций языка ActionScript с клавиатуры и вставку их в окно сценария из списка Actions Toolbox. Окно параметров при работе в экспертном режиме не отображается. В этом режиме не могут также использоваться кнопки удаления и перемещения строк сценария. Экспертный режим предназначен в первую очередь для тех, кто знаком с программированием на ActionScript. Поэтому, чтобы воспользоваться преимуществами данного режима, необходимо освоить основные приемы программирования на ActionScript. Вместе с тем, уровень поддержки пользователя, реализованный в Flash, позволяет самостоятельно создавать сценарии различного уровня сложности. Для этого в составе редактора сценариев имеются следующие средства:

· динамическая подсказка по конструкциям языка, реализованная в виде всплывающего списка параметров;

· встроенная утилита проверки синтаксиса Check Syntax.

Активизация обоих инструментов выполняется с помощью соответствующих кнопок, расположенных на панели инструментов окна сценария.

Щелчок на кнопке Check Syntax непосредственно активизирует процесс поиска синтаксических ошибок. В случае их обнаружения на экран выводится специальное диалоговое окно. С его помощью можно получить не только исчерпывающую информацию о характере, причинах и месте положения обнаруженной ошибки, но и настроить параметры работы утилиты Check Syntax. Такая установка выполняется с помощью команд раскрывающегося меню окна.

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

Чтобы перейти в режим отладки фильма, достаточно в меню Control основного окна выбрать команду Debug Movie (Отладка фильма). Предварительно, как было отмечено выше, полезно расставить в сценарии контрольные точки.

Поскольку работа в экспертном режиме предполагает наличие определенных навыков в программировании на ActionScript, то все последующие примеры создания сценариев рассматриваются применительно к режиму Normal Mode.