Смотрите http://agapas.ru экспорт Казахстан.

Macromedia Flash - Учебники - Macromedia Flash MX - Глава 11

Глава 11

Создание интерактивных фильмов

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

Интерактивность Flash-фильма обеспечивается за счет включения в него так называемых сценариев, которые представляют собой набор инструкций на языке ActionScript. Каждая инструкция инициируется при наступления определенного связанного с'ней события. События могут быть самые разнообразные: достижение считывающей головкой определенного кадра, нажатие пользователем клавиши на клавиатуре, щелчок кнопкой мыши и т.д.

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

В отличие от предшествующих версий, в Flash MX появился вполне «дееспособный» редактор сценариев, и даже имеется встроенный отладчик, который позволяет обнаружить ошибки, допущенные при использовании синтаксических конструкций языка.

ПАНЕЛЬ ACTIONS

Инструмент для работы с ActionScript реализован в виде диалоговой панели Actions (Действия), внешний интерфейс которой ничем не отличается от других панелей Flash MX, рассмотренных в предыдущих главах. Однако при более близком знакомстве с ней оказывается, что это самый настоящий редактор для создания сценариев на ActionScript. Причем работать он может в двух режимах: обычном (то есть предназначенном для «обычных» пользователей) — Normal, и в экспертном (для «продвинутых» пользователей) — Expert.

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

Рис. 11.1. Экспертный (вверху) и обычный (внизу) форматы панели Actions

ОБЩИЕ СВЕДЕНИЯ ОБ ACTIONSCRIPT

Подробное описание возможностей и особенностей ActionScript выходит за рамки данной книги. Дело в том, что в результате последних усовершенствований, внесенных в версию Flash MX, ActionScript превратился в настоящий язык программирования. Реализованные в нем возможности вполне заслуживают отдельной книги, соизмеримой по объему (а возможно, и превосходящей) с той, которая сейчас перед вами. Разумеется, с ростом возможностей увеличилась и сложность языка. И хотя его вполне по силам освоить начинающему программисту, но все же — программисту. А ведь далеко не каждый даже опытный пользователь компьютера может считать себя таковым. Поэтому мы ограничимся описанием основных концепций языка и общих правил построения сценариев на ActionScript. Практика показывает, что такого уровня знаний вполне достаточно для создания не очень сложных, но корректно работающих интерактивных фильмов.

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, во многом аналогична объектным моделям других сценарных языков (например, JavaScript). Вместе с тем, существуют и определенные различия. Основное из них состоит в том, что в ActionScript иерархия объектов строится относительно Flash-плеера, а не относительно HTML-документа, отображаемого в окне Web-броузера.

Например, если HTML-документ содержит форму Form_l, в которой имеется кнопка Input_1, то в JavaScript «подчиненность» кнопки описывается следующим образом:

Documen t. Widow. Form_1. Input_1.

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

Form_1. Input_1.

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

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

_parent. Clip_1.

Подробнее вопросы адресации объектов в ActionScript рассмотрены в следующем подразделе.

Теперь вернемся собственно к объектной модели ActionScript.

Как было сказано выше, корневым объектом, неявно присутствующим в любом сценарии, является Flash-плеер. На следующем уровне располагаются четыре класса объектов (рис. 11.2):

  • Movie (Объекты фильма);
  • Core (Объекты ядра);
  • Client/Server (Объекты клиент-серверной среды исполнения);
  • Authoring (Объекты среды разработки).

Рис. 11.2. Объектная модель ActionScript

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

  • Button (Кнопка) — объект, представляющий в сценарии кнопку; для такого объекта может динамически изменяться, например, порядок установки фокуса ввода;
  • MovieClip (Клип) - объект, представляющий в сценарии клип; для него может динамически изменяться, например, число вложенных клипов;
  • Mouse (Мышь) — объект, представляющий в сценарии указатель мыши; он позволяет управлять видимостью и стилем указателя;
  • Key (Клавиатура) — объект, представляющий в сценарии клавиши, используемые для управления фильмом;
  • Color (Цвет) — объект, представляющий в сценарии палитру клипа и, соответственно, позволяющий изменять эту палитру;
  • Sound (Звук) - объект, представляющий -в сценарии звуковой символ, связанный с кнопкой или клипом;
  • Stage (Стол) — объект, предназначенный для управления некоторыми параметрами стола (в частности, масштабом изображения);
  • TextField (Текстовое поле) - объект, представляющий в сценарии динамическое текстовое поле или поле редактирования;
  • TextFormat (Формат текста) - объект, позволяющий управлять из сценария параметрами шрифта текстового поля.

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

Замечание

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

Объекты класса 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-плеер. По умолчанию временная диаграмма основного фильма имеет нулевой уровень. Каждой вызываемой из нее временной диаграмме присваивается уровень, на единицу больший (рис. 11.3).

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

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

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

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

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

Jevel0.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. После того, как панель появится на экране, убедитесь, что создаваемый сценарий будет связан именно с тем кадром, с которым требуется. Для этого достаточно взглянуть на заголовок панели и расположенный под ним список (рис. 11.4).

Рис. 11.4. Заголовок панели Actions при создании сценария для кадра

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

  1. Выбрать соответствующий объект на столе.
  2. Открыть панель инспектора свойств.
  3. Щелкнуть кнопку Edit the action script (Редактировать сценарий действий), расположенную возле правой границы панели инспектора свойств (рис. 11.5).

Рис. 11.5. Кнопка вызова панели Actions для кнопки или клипа

Эта маленькая кнопочка обладает интересной особенностью: если сценарий для данного объекта отсутствует, она белого цвета, после создания сценария она «синеет».

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

Рис. 11.6. Заголовок панели Actions при создании сценария для кнопки (вверху) и клипа (внизу)

Замечание

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

После того, как панель будет открыта, вы можете выбрать режим работы.

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

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

Рис. 11.7. Меню для выбора режима работы панели Actions

Рис. 11.8. Основные элементы интерфейса панели Actions

  • раскрывающийся список сценариев фильма; он обеспечивает быстрый переход к другому сценарию без необходимости выбора на столе объекта, с которым связан этот сценарий;
  • кнопка Script Pin (Прикрепить сценарий) позволяет зафиксировать текущий сценарий; речь идет о том, что содержимое панели зависит от выбранного на столе объекта фильма; после фиксации сценария вы можете выбрать на столе другой объект, и содержимое панели при этом не изменится;
  • кнопка в виде книжки обеспечивает вызов встроенной справочной системы по языку ActionScript; необходимо отметить, что эта справка значительно подробнее, чем справка в формате HTML;
  • панель Action Toolbox (Комплект инструментов для действий); каждый элемент, представленный в этом подокне, соответствует определенной конструкции языка ActionScript; двойной щелчок на значке элемента обеспечивает его вставку в текст сценария;
  • окно сценария, в котором отображается текст сценария; при работе в режиме Expert Mode в этом окне можно работать как в обычном текстовом редакторе;
  • панель инструментов окна сценария; размещенные на ней кнопки повышают удобство работы с текстом сценария; состав кнопок в некоторой степени зависит от режима работы; их назначение будет рассмотрено в двух следующих подразделах;
  • строка состояния; она предназначена для вывода дополнительной информации относительно компонентов, включенных в сценарий; в частности, в строке состояния выводится краткое сообщение об ошибке.
  • Список Action Toolbox содержит перечень следующих компонентов языка ActionScript, которые могут быть использованы при создании сценария (рис. 11.9):
  • Actions (Действия) - процедуры языка ActionScript, имеющие «универсальный» характер, то есть не зависящие от особенностей класса объектов (в отличие от методов объектов, принадлежащих конкретному классу); в эту же категорию входят традиционные для большинства языков программирования высокого уровня операторы логического управления (проверки логических условий, организации цикла и т. п.);

Рис. 11.9. Категории компонентов языка ActionScript

  • Operators (Операторы) — операторы логических и арифметических операций (сложение, вычитание, сравнение и т. п.);
  • Functions (Функции) — предопределенные (библиотечные) функции (например, в их число входит функция проверки номера версии Flash-плеера);
  • Properties (Свойства) - свойства объектов, не зависящие от класса (например, уровень прозрачности изображения);
  • Objects (Объекты) — предопределенные объекты, которые могут быть использованы в сценарии (например, существует объект для работы с датой и временем); в этот же раздел включаются пользовательские классы объектов;
  • Deprecated (Осуждаемые) — конструкции, которые не рекомендуется использовать в сценариях (как устаревшие);
  • Flash UI Components (Компоненты пользовательского интерфейса).

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

Режим Normal Mode

Формат панели Action при работе в этом режиме показан на рис. 11.10.

Рис. 11.10. Формат панели Action в режиме Normal Mode

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

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

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

Рис. 11.11. Панель инструментов окна сценария в режиме Normal

Рис. 11.12. Вставка компонента с помощью кнопки Add new item

  • кнопка, помеченная символом «-», обеспечивает удаление из текста сценария выбранного в окне компонента;
  • кнопка Find (Поиск) вызывает на экран диалоговое окно, в котором вы можете ввести искомую последовательность символов;
  • кнопка Replace (Замена) позволяет открыть диалоговое окно для установки параметров замены строки (последовательности символов);
  • кнопка Insert a target path (Добавить путь назначения) обеспечивает вывод на экран диалогового окна, с помощью которого вы можете описать путь назначения для адресации необходимого элемента фильма; формат окна 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 — это объединение (группирование) действий, связанных с данным событием. Формат обработчика показан на рис. 11.13.

Рис. 11.13. Формат обработчика события

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

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

  • Press — пользователь нажимает кнопку мыши, когда указатель находится над изображением кнопки (фильма).
  • Release — пользователь нажимает и затем отпускает кнопку мыши (указатель находится над изображением кнопки);
  • Release Outside — пользователь отпускает кнопку мыши, когда указатель не находится над изображением кнопки;
  • Key Press — пользователь нажимает определенную клавишу на клавиатуре; для данного события необходимо дополнительно указать клавишу;
  • Roll Over — пользователь перемещает указатель над изображением кнопки;
  • Roll Out — пользователь перемещает указатель за пределы изображения кнопки;
  • Drag Over — пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, выводит его за пределы кнопки, и затем опять устанавливает над кнопкой;
  • Drag Out — пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, и затем выводит его за пределы кнопки.

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

Сделанный выбор сразу же отображается в окне сценария.

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

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

Это окно содержит следующие основные элементы интерфейса:

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

Рис. 11.14. Индикация ошибочной конструкции

Рис. 11.15. Формат окна Insert a target path

  • многострочное текстовое поле Target (Назначение), предназначенное для ввода и корректировки пути назначения; если выбрать в дереве фильма некоторый элемент, то в поле Target появится соответствующий маршрут, который может быть изменен или дополнен вручную;
  • пара переключателей Mode (Режим), которые позволяют выбирать способ адресации (относительный — Relative или абсолютный — Absolute); по умолчанию используется относительная адресация;
  • пара переключателей Notation (Нотация), которые позволяют выбирать формат записи пути назначения:
    • вариант Dotes (Точки) означает применение точечной нотации (см. подраздел «Объектная модель ActionScript»);
    • вариант Slashes (Слэши) соответствует записи с использованием слэшей (это «устаревший» стиль, используемый для совместимости с предыдущими версиями ActionScript); при использовании слэшей формат записи аналогичен тому, который применяется для записи URL в HTML-документах; например, чтобы подняться на один уровень вверх, применяется конструкция ../.

Режим Expert Mode

Экспертный режим позволяет совмещать два способа формирования сценария: непосредственный ввод конструкций языка ActionScript с клавиатуры и вставку их в окно сценария из списка Actions Toolbox.

Окно параметров при работе в экспертном режиме не отображается. В этом режиме не могут также использоваться кнопки удаления и перемещения строк сценария (рис. 11.16):

Рис. 11.16. Формат панели Action в режиме Expert Mode

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

Вместе с тем, уровень поддержки пользователя, реализованный в Flash MX, позволяет самостоятельно создавать сценарии различного уровня сложности. Для этого в составе редактора сценариев имеются следующие средства:

  • динамическая подсказка по конструкциям языка, реализованная в виде всплывающего списка параметров (рис. 11.17);
  • встроенная утилита проверки синтаксиса Check Syntax.

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

Замечание

Обратите внимание, что в режиме Expert Mode кнопка Insert а target path доступна постоянно.

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

Рис. 11.17. Динамическая подсказка по конструкциям языка

Рис. 11.18. Панель инструментов окна сценария в режиме Expert Mode

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

Рис. 11.19. Диалоговое окно утилиты Check Syntax

Рис. 11.20. Окно отладчика сценариев

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

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

СОЗДАНИЕ СЦЕНАРИЯ ДЛЯ КНОПКИ

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

Рис. 11.21. Пример применения кнопок в интерактивном фильме

Управление воспроизведением фильма

Простейшими командами управления фильмом являются запуск и прерывание его воспроизведения. Эти команды реализуются с помощью предопределенных действий Play и Stop. Процедуру назначения этих действий двум кнопкам рассмотрим на примере фильма, в котором шарик прокатывается столу, падает и разбивается. Вернемся к последней версии фильма, в которой используется фон в виде стола и стоящих на нем предметов (см. рис. 9.10). В качестве кнопок используем экземпляры символов из общей библиотеки Buttons.

Итак, для включения в фильм интерактивных кнопок необходимо выполнить следующие действия:

  1. Добавьте в фильм новый слой, который будет использоваться в качестве дополнительного фона; именно в фоновый слой следует добавить кнопки, чтобы они присутствовали на сцене на всем протяжении фильма.
  2. Щелкните мышью в ячейке первого ключевого кадра в «кнопочном» слое.
  3. Перетащите поочередно из окна библиотеки на стол две кнопки, которые вы решили использовать в фильме; в результате окно Flash будет выглядеть примерно так, как показано на рис. 11.22.

Рис. 11.22. Окно фильма после добавления кнопок

  1. Выберите первую из кнопок, с помощью которой фильм должен приостанавливаться.
  2. С помощью инспектора свойств кнопки откройте панель Actions и щелкните в списке Actions Toolbox на значке раздела Actions.
  3. Откройте подраздел Movie Control, отыщите в нем действие Stop и дважды щелкните на нем мышью; в результате в окне сценария появится текст сценария, содержащий обработчик onfrelease); он обеспечивает инициализацию действия stop() при наступлении события release (то есть при щелчке на кнопке); пустые скобки после имени процедуры означают, что данная процедура используется без параметров; соответствующее сообщение выводится и в окне параметров, как показано на рис. 11.23.
  4. Не закрывая панель Actions, выберите на столе вторую кнопку и назначьте ей действие play, повторив описанную выше процедуру.

В отличие от обычной анимации, протестировать многие сценарии в режиме редактирования невозможно. Чтобы проверить, как работают созданные кнопки, следует выбрать в меню Control команду Test Movie или Test Scene. В результате фильм будет Экспортирован в формат SWF и затем воспроизведен с помощью Flash-плеера. Чтобы вернуться в режим редактирования, достаточно просто закрыть окно плеера.

Рис. 11.23. Панель Actions после назначения кнопке действия stop

Переход по заданному URL

Действие getURL входит в подраздел Browser/Network. Это действие позволяет загрузить в броузер документ, расположенный по указанному URL, либо переслать значения некоторых переменных (например, данных из формы) в приложение, размещенное по определенному URL. При этом следует учитывать, что действие getURL обеспечивает пересылку данных только для текущего фильма.

Замечание

Для тестирования действия getURL требуется, чтобы адрес запрошенного файла был указан в виде абсолютного URL.

Чтобы создать кнопку, обеспечивающую переход по заданному URL, требуется выполнить следующие действия:

  1. Добавьте в фильм новый «фоновый» слой.
  2. Поместите на него кнопку, которой будет назначено действие getURL.
  3. Откройте панель Actions.
  4. В списке Actions Toolbox откройте раздел Actions, затем -- подраздел Browser/Network и дважды щелкните в строке getURL; в результате в окне сценария появится соответствующая конструкция на языке ActionScript, а в панели параметров — параметры действия getURL (рис. 11.24).

Рис. 11.24. Панель Actions после назначения кнопке действия getURL

  1. Введите требуемые значения параметров.
  2. По умолчанию действие getURL выполняется по щелчку на кнопке событие (release); если требуется добавить или изменить событие, щелкните в окне сценария в строке селектора и с помощью панели параметров измените перечень событий.

Рассмотрим подробнее параметры действия getURL.

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

При указании относительного URL для поиска требуемого документа Flash перемещается по иерархии файлы/папки/каталоги и обратно, начиная с того файла, в котором содержится процедура getURL.

Чтобы получить URL как результат вычисления некоторого выражения, установите флажок Expression, расположенный справа от поля URL, и введите требуемое выражение.

Параметр Window задает окно или фрейм, в который должен быть загружен запрошенный документ. Значение параметра выбирается с помощью раскрывающегося списка, который содержит следующие варианты (они аналогичны значениям атрибута TARGET тэга <А> в языке HTML):

_self — документ будет загружен в текущее окно, или фрейм;

_ blank — документ будет загружен в новое окно;

_parent -- документ будет загружен в родительский или текущий фрейм;

_top — документ будет загружен во фрейм более высокого уровня иерархии или в текущее окно.

При необходимости значение данного параметра может быть получено как результат вычисления выражения. В этом случае следует установить флажок Expression, расположенный справа от списка Window.

Параметр Variables позволяет указать способ пересылки данных по заданному URL. Значение параметра выбирается из раскрывающегося списка, который содержит три варианта:

  • Don't send (He отправлять) — пересылка данных не требуется;
  • Send using GET (Отправить, используя GET) — для пересылки данных будет использован метод GET;
  • Send using POST (Отправить, используя POST) — для пересылки данных будет использован метод POST.

Замечание

Напомним, что различие в использовании методов GET и POST для пересылки данных на сервер состоит в том, что при первом из них пересылаемые данные присоединяются к строке адреса. Поскольку длина адреса ограничена 256 символами, то ограничен также и объем пересылаемых данных.

Загрузка дополнительных фильмов

С помощью действий loadMovie и unloadMovie можно обеспечить динамическую загрузку дополнительных фильмов или их выгрузку без повторной инициализации Flash-плеера.

Такая технология обеспечивает эффективное решение следующих задач:

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

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

  1. Добавьте новый «фоновый» слой.
  2. Поместите на него кнопку, которой будет назначено действие loadMovie.
  3. Откройте панель Actions.
  4. В списке Actions Toolbox откройте раздел Actions, затем -- подраздел Browser/Network и дважды щелкните в строке loadMovie; в результате в окне сценария появится соответствующая конструкция на языке ActionScript, а в панели параметров — параметры действия loadMovie (рис. 11.25).

Рис. 11.25. Панель Actions после назначения кнопке действия loadMovie

  1. Введите требуемые значения параметров.

По умолчанию действие loadMovie выполняется по щелчку на кнопке (событие release); если требуется добавить или изменить событие, щелкните в окне сценария в строке обработчика и с помощью панели параметров измените перечень событий.

Рассмотрим подробнее параметры действия loadMovie.

Параметр URL определяет адрес загружаемого фильма (SWF-файла); значение параметра может быть задано в виде абсолютного или относительного URL, либо в виде вычисляемого выражения.

Параметр Location (Расположение) определяет «место» загружаемого фильма или клипа в иерархии. Для фильма его положение определяется относительным уровнем (Level), для клипа — положением клипа-предшественника (Target), который он должен заместить.

Относительный уровень фильма — это целое положительное число от 0 и до... Верхний уровень ограничен только вашей фантазией и объемом оперативной памяти компьютера.

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

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

Загрузка нового фильма на уровень 0 приводит не только к замене прежнего фильма этого уровня, но и к выгрузке фильмов всех других уровней.

Параметр Variables имеет тот же смысл, что и для действия getURL.

Замечание

Для просмотра последовательности связанных фильмов в Flash-плеере или для их тестирования во Flash, все SWF-файлы должны быть сохранены в одной папке; в поле URL имя файла должно быть указано без папки или спецификаций дисковода, но обязательно с расширением swf.

Применение действия loadMovie проиллюстрируем небольшим примером. Пусть первым загружаемым фильмом (расположенным на нулевом уровне) будет фильм, содержащий только кнопку, которой назначено действие loadMovie (рис. 11.26). Предположим, что с его помощью требуется дополнительно загрузить фильм «про шарик» с двумя кнопками (см. рис. 11.22). Для решения указанной задачи необходимо:

  • 1. Экспортировать фильм «про шарик» в формат SWF и сохранить (например, под именем Interact.swf) в той же папке, что и фильм нулевого уровня.
  • 2. Для действия loadMovie установить следующие параметры:

URL = Interact.swf

Location: Level=l Variable = Don't send.

После загрузки фильма нулевого уровня в режиме Test Movie и щелчка на кнопке «Продолжение просмотра» кадр будет выглядеть, как показано на рис. 11.27. При этом все кнопки сохраняют свою интерактивность.

Рис. 11.26. Фильм нулевого уровня

Рис. 11.27. Вид окна Flash-плеера после загрузки дополнительного фильма

Чтобы выгрузить фильм из Flash-плеера, необходимо назначить какой-либо кнопке или кадру фильма действие unloadMovie. Для него должен быть установлен единственный параметр — Location, определяющий уровень фильма (Level), который следует выгрузить.

СОЗДАНИЕ СЦЕНАРИЯ ДЛЯ КАДРА

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

Как правило, все кадры, которым назначены действия, стараются поместить в отдельном слое временной диаграммы. Это облегчает тестирование и редактирование фильма.

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

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

Имейте в виду, что действия, назначенные кадру, в режиме редактирования не работают. Чтобы протестировать фильм, необходимо в меню Control выбрать команду Test Movie (или Test Scene).

В качестве примера рассмотрим назначение кадру действия goto, входящего в подраздел Movie Control. Результатом его выполнения является переход к заданному кадру или сцене. Переход к одному из предыдущих кадров фильма обеспечивает циклическое повторное воспроизведение соответствующего фрагмента фильма.

Замечание

На самом деле действия goto как такового не существует, в ActionScript используются два действия, реализующие

два варианта перехода на требуемый кадр или сцену: gotoAndPlay (Перейти и воспроизвести) и gotoAndStop (Перейти и остановить).

Для обоих вариантов перехода предусмотрены следующие параметры (рис. 11.28):

  • Scene (Сцена) - задает сцену, на которую требуется перейти, или на которой расположен кадр, на который требуется перейти; значение параметра выбирается с помощью раскрывающегося списка, который содержит четыре основных пункта:
    • <current scene> — текущая сцена;
    • <next scene> — следующая сцена; переход возможен только на первый кадр следующей сцены;
    • <previous scene> - предыдущая сцена; переход возможен только на первый кадр предыдущей сцены;
    • Scene 1 — имя, используемое по умолчанию для первой сцены фильма; если фильм содержит более одной сцены, то в список автоматически добавляются их имена;

Рис. 11.28. Вид панели Actions при назначении кадру действия goto

  • Туре (Тип) — задает способ указания кадра, на который требуется перейти; значение параметра выбирается с помощью раскрывающегося списка, который содержит пять пунктов:
    • Frame Number (Номер кадра) — кадр задается его порядковым номером на временной диаграмме; номер кадра должен быть указан в расположенном ниже поле Frame;
    • Frame Label (Метка кадра) — кадр задается его меткой (именем); метка для кадра должна быть предварительно указана в поле Label панели инспектора свойств;
    • Expression (Выражение) - номер или метка кадра определяются как результат вычисления выражения; выражение должно быть введено в расположенном ниже поле Frame;
    • Next Frame (Следующий кадр) - переход выполняется на следующий кадр той же сцены;
    • Previous Frame (Предыдущий кадр) — переход выполняется на предыдущий кадр той же сцены.

Пара переключателей Go to and Play (Перейти и воспроизвести) и Go to and Stop (Перейти и остановить) определяет операцию, выполняемую после перехода на заданную сцену или кадр: после перехода воспроизведение фильма либо продолжается (возобновляется), либо приостанавливается.

Замечание

При указании номера кадра следует иметь в виду, что он должен лежать в диапазоне от 1 до 16000.

 

СОЗДАНИЕ СЦЕНАРИЯ ДЛЯ КЛИПА

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

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

  1. Щелкнуть правой кнопкой на клипе, которому вы хотите назначить действие (имейте в виду, что двойной щелчок левой кноп кой на изображении клипа обеспечивает переход в режим редактирования символа).
  2. В контекстном меню выбрать команду Actions.
  3. В разделе Actions выбрать требуемое действие и перенести его в окно сценария.
  4. В поле параметров ввести требуемые значения (если для данного действия они предусмотрены).
  5. В окне сценария щелкнуть на строке с обработчиком onClipEvent; при этом в поле параметров появится перечень допустимых типов событий, которые могут инициализировать действие (рис. 11.29).
  6. Выберите тип события, при наступлении которого введенные данные должны быть переданы на сервер; обратите внимание, что, в отличие от кнопок, для клипа может быть выбран только один из типов событий; перечень типов событий также отличается от предусмотренного для кнопок:
    • load — действие инициализируется, как только экземпляр клипа появляется на столе;
    • unload — действие инициализируется при переходе к первому кадру после выгрузки клипа;
    • enterFrame - действие инициализируется при переходе к каждому очередному кадру;
    • mouseMove — действие инициализируется при каждом перемещении мыши;
    • mouseDown — действие инициализируется при нажатии левой кнопки мыши;
    • mouseUp - действие инициализируется, когда левая кнопка мыши освобождается;
    • keyDown — действие инициализируется при нажатии заданной клавиши на клавиатуре;
    • keyUp — действие инициализируется, когда нажатая клавиша освобождается;
    • data — действие инициализируется, когда закончена загрузка данных с сервера.

Рис. 11.29. Перечень допустимых событий для клипа

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

Предположим, что создаваемая маска должна не только перемещаться вдоль маскированного слоя, но вращаться вокруг своей оси.

Замечание

Разумеется, указанный эффект может быть получен с помощью операций трансформации, однако в данном случае нас интересует не столько «сила» визуального эффекта, сколько способ его достижения.

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

Итак, для решения поставленной задачи выполните следующие действия:

Рис. 11.30. Пример использования клипа в качестве

  1. Создайте клип, который будет использован в качестве маски (в соответствии с условиями рассматриваемого примера, «пропеллер» должен просто вращаться вокруг центральной точки).
  2. Поместите экземпляр клипа на стол, в первый слой фильма.
  3. С помощью инспектора свойств дайте экземпляру клипа имя (например, mask).
  4. Создайте для маски анимацию движения (чтобы «пропеллер» перемещался вдоль стола).
  5. Добавьте в фильм слой, который будет использоваться в качестве фона (то есть будущий маскированный слой).
  6. Поместите на фоновый слой изображение и преобразуйте его в символ-клип, выбрав в меню Insert команду Convert to Symbol.
  7. С помощью инспектора свойств дайте экземпляру клипа имя (например, Fon).
  8. Преобразуйте слой с клипом mask в слой-маску, выбрав в его контекстном меню команду Mask.
  9. Щелкните правой кнопкой мыши на первом кадре слоя-маски и в контекстном меню выберите команду Action, чтобы открыть панель Action.
  10. В списке Action Toolbox откройте раздел Objects, а в нем -последовательно подразделы Movie -> MovieClip -> Methods.
  11. В подразделе Methods отыщите метод setMask и дважды щелкните на нем мышью, чтобы копировать его в окно сценария; после вставки метода панель Action будет выглядеть приблизительно так, как показано на рис. 11.31.

Рис. 11.31. Формат панели Action после вставки в сценарий метода setMask

  1. В поле установки параметров введите имена экземпляров клипов: в поле Object - имя фонового клипа (Fon), в поле Parameters — имя клипа-маски (mask).

В результате выполнения последнего шага панель Action должна выглядеть приблизительно так, как показано на рис. 11.32.

Рис. 11.32. Формат панели Action после настройки параметров метода setMask

КОМПОНЕНТЫ

В предыдущих версиях Flash использовалось понятие Smart Clip, то есть «сложный клип». Это специальный тип символов-клипов, на основе которых в Flash-фильмах создавались элементы пользовательского интерфейса (кнопки, флажки, переключатели и т. д.). Так вот «компоненты» (Components) — это «прямые наследники» Smart Clip.

В состав Flash MX включены семь типов компонентов:

  • CheckBox — флажок;
  • ComboBox — комбинированный список (то есть раскрывающийся список с возможностью редактирования пунктов);
  • ListBox - список;
  • PushButton - кнопка;
  • RadioButton — переключатель;
  • ScrollBar — полоса прокрутки;
  • ScrollPane - окно.

С точки зрения программирования, на ActionScript компоненты представляют собой как бы подкласс объектов MovieClip, для которого предусмотрены специальные параметры и некоторые дополнительные методы. Параметры компонентов могут устанавливаться как во время разработки фильма, так и во время его воспроизведения, с помощью сценария. Методы, применимые к компонентам, собраны в специальном разделе списка Action Toolbox, который называется Flash UI Components (рис. 11.33).

Рис. 11.33. Раздел Flash UI Components списка Action Toolbox

Наиболее распространенный вариант применения компонентов — это создание на их основе аналога формы, помещаемой на Web-странице. Вместе с тем, на основе компонентов вы можете создать для своего Flash-фильма «традиционный» для Windows-приложений пользовательский интерфейс. В этом случае работа пользователя с фильмом будет мало чем отличаться от работы с обычным приложением.

При использовании компонентов в качестве элементов формы Flash обеспечивает:

  • пересылку введенных в форму данных на сервер по заданному адресу;
  • обработку введенных данных на клиентской машине средствами языка ActionScript.

Другими словами, возможности Flash по работе с формами ни в чем не уступают возможностям HTML. Более того, в отличие от HTML страниц, Flash-фильм может оставаться загруженным в броузере при обмене информацией с сервером, без необходимости перезагрузки. Сохранение информации в базе данных на сервере и ее выдача по запросу из фильма позволяет создавать динамически обновляемое и персонализированное содержание фильма. Например, на основе форм Flash-фильма могут быть созданы «доска объявлений», или тележка в электронном магазине, которая «помнит», какой товар пользуется спросом у данного пользователя. При этом серверное приложение может быть написано на любом из применяемых для этого языков программирования (например, на Perl, ASP или PHP).

Особенность Flash-форм по сравнению с формами, созданными с помощью HTML, состоит в следующем.

В HTML все элементы формы объединяются явным образом в едином контейнере с помощью тэга <FORM>. Во Flash таким контейнером служит сам фильм. Это означает, что все интерактивные элементы интерфейса (кнопки, текстовые поля ввода, списки) воспринимаются Flash как элементы одной формы.

Благодаря этому для пересылки данных на сервер может быть создана единственная кнопка — аналог стандартной HTML-кнопки Submit. Этой кнопке следует назначить действие getURL с указанием используемого метода пересылки (см. подраздел «Создание сценария для кнопки»).

С другой стороны, если в фильме используется какой-либо один элемент интерфейса, он также интерпретируется Flash как законченная самостоятельная форма. В этом случае действие getURL следует назначить непосредственно данному элементу.

Вставку компонентов в фильм удобнее всего выполнять с помощью специальной панели, которая так и называется — Components. Ее формат приведен на рис. 11.34.

Рис.11.34. Формат панели Components

Замечание

Напомним, что первое упоминание в книге о панели Components было связано с созданием прокручиваемого текстового поля (см. главу «Работа с текстом»).

Для установки исходных параметров экземпляра компонента, включенного в фильм, целесообразно воспользоваться инспектором свойств. Его формат для компонентов несколько отличается от используемого для других элементов фильма. Основное отличие состоит в том, что панель инспектора свойств компонента имеет две вкладки (рис. 11.35):

Рис. 11.35. Формат инспектора свойств компонента

  • Properties (Свойства), с помощью элементов которой устанавливаются свойства компонента как экземпляра символа-клипа; эта вкладка одинакова для всех компонентов;
  • Parameters (Параметры), предназначенная для установки параметров компонента как элемента пользовательского интерфейса; для каждого типа компонента набор параметров различен.

Ниже рассмотрены особенности применения в фильме компонентов различных типов.

Флажки

Для флажка (Checkbox) могут быть заданы следующие параметры (см. рис. 11.35, вверху):

  • Label — текстовая метка, отображаемая на странице в качестве имени флажка; чтобы изменить метку, следует дважды щелкнуть на ней мышью и отредактировать;
  • Initial Value — исходное состояние флажка; параметр принимает значение true или false: true (или 1) — если он установлен, и false (0) - если снят; чтобы установить требуемое значение, следует щелкнуть в строке параметра и выбрать его в появившемся списке (см. рис. 11.35, вверху);
  • Label Placement (Расположение текстовой метки) — определяет положение текстовой метки относительно изображения флажка;

Рис. 11.36. Пример использования флажков значение выбирается из списка, который содержит два варианта: right (справа) и left (слева);

  • Change Handler (Изменить обработчик) — имя функции, вызываемой при изменении состояния флажка; вызываемая функция должна быть определена в сценарии, связанном с той же временной диаграммой, к которой относится флажок; данный параметр является необязательным и применяется только в том случае, если вы хотите активизировать некоторое действие, когда пользователь изменяет состояние флажка.

Пример использования флажков в фильме приведен на рис. 11.36.

Тереключатели

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

Рис. 11.37. В этом слое может быть включен только один переключатель

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

Для переключателя может быть задан почти тот же набор параметров, что и для флажка, за исключением двух дополнительных (рис. 11.38):

  • Group Name (Имя группы) — наименование группы, к которой относится данный переключатель;
  • Data (Данные) — данные, подлежащие пересылке на сервер (или обработке с помощью локального сценария), если данный переключатель установлен; параметр является не обязательным.

Рис. 11.38. Формат инспектора свойств переключателя

Кнопки

В обычных Windows-приложениях кнопки (PushButton или просто Button) используются для инициализации тех или иных действий. Кнопки, входящие в форму, размещенную на HTML-странице, обычно служат для инициализации пересылки введенных данных (кнопка Submit), либо для сброса введенных значений (кнопка Reset). Кнопки, реализованные в виде компонентов и помещаемые в Flash-фильм, могут применяться для инициализации любых действий. Фактически, они ничем не отличаются от символов-кнопок, рассмотренных выше, за исключением того, что для кнопки-компонента определены лишь два визуальных образа: для исходного состояния и когда она «нажата». Соответственно, кнопка-компонент не «реагирует» на перемещение указателя.

Для кнопки-компонента предусмотрен метод setClickHandler, который позволяет назначить кнопке функцию-обработчика единственного события — щелчка на кнопке (Click). Например, если в фильме имеется кнопка button_1, то в сценарии вы можете написать такую конструкцию: button_1.setClickHandler(«onClick»); здесь onClick — это имя функции-обработчика, которая должна быть определена для той же временной диаграммы, к которой относится кнопка button_1.

  • помощью инспектора свойств для кнопки могут быть заданы два параметра (рис. 11.39):
  • Label — текстовая метка, отображаемая на кнопке в качестве ее имени;
  • Change Handler — имя функции-обработчика (то есть значение параметра метода setClickHandler).

Рис. 11.39. Формат инспектора свойств кнопки

Списки

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

Рис. 11.40. Пример использования списка единичного выбора

Для списка может быть задан следующий набор параметров х(рис. 11.41):

  • Labels (Метки) - перечень наименований пунктов списка;
  • Data (Данные) — перечень значений, соответствующих каждому из пунктов списка;
  • Select Multiple (Множественный выбор) — если параметр имеет значение true, то для списка разрешена возможность множественного выбора;
  • Change Handler (Изменить обработчика) — имеет тот же смысл, что и для других компонентов.

Рис. 11.41. Формат инспектора свойств списка

Чтобы задать количество и наименования элементов списка, следует щелкнуть мышью в строке Labels, затем — на появившейся справа кнопке и внести необходимые изменения в открывшемся диалоговом окне (рис. 11.42).

Рис. 11.42. Диалоговое окно для редактирования элементов списка

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

Аналогично выполняется и ввод значений, связанных с пунктами списка. Соответствующее диалоговое окно показано на рис. 11.43.

Рис.11.43. Диалоговое окно для редактирования значений, связанных с элементами списка

Комбинированный список

Данный вид списка (ComboBox) отличается от рассмотренного выше тем, что для просмотра списка его необходимо открыть, щелкнув на кнопке списка. Кроме того, для него не предусмотрена возможность множественного выбора. Вместе с тем, для комбинированного списка может быть разрешено его редактирование пользователем. Пример комбинированного списка показан на рис. 11.44.

Для комбинированного списка предусмотрены следующие параметры (рис. 11.45):

  • Editable (Редактируемый) — если параметр имеет значение true, то для списка разрешена возможность редактирования;
  • Labels (Метки) - перечень наименований пунктов списка;
  • Data (Данные) — перечень значений, соответствующих каждому из пунктов списка;

Рис. 11.44. Пример комбинированного списка

Рис. 11.45. Формат инспектора свойств комбинированного списка

  • Row Count (Число строк) — количество пунктов списка, отображаемых в окне списка, когда он открыт; если это число меньше длины списка, то он дополняется вертикальной полосой прокрутки.

Прокручиваемая область

Прокручиваемая область (ScrollPane) -- это подокно (или панель) внутри окна Flash-фильма, предназначенное для отображения некоторой относительно самостоятельной информации. Например, вы можете использовать такое подокно для вывода на экран дополнительного иллюстративного материала. Прокручиваемая область по умолчанию снабжена вертикальной и горизонтальной полосами прокрутки.

Особенность применения подокна в Flash состоит в том, что в качестве его содержимого может использоваться только символ-клип.

Пример использования подокна показан на рис. 11.46.

С помощью инспектора свойств для подокна могут быть заданы следующие параметры (рис. 11.47):

Рис. 11.46. Пример использования подокна

Рис. 11.47. Формат инспектора свойств подокна

  • Scroll Content (Прокручиваемое содержимое) — имя экземпляра клипа, подлежащего отображению в подокне;
  • Horizontal Scroll (Горизонтальная прокрутка) — логический параметр, определяющий один из трех вариантов использования горизонтальной полосы прокрутки:
    • Auto - при необходимости;
    • False — никогда;
    • True — всегда;
  • Vertical Scroll (Вертикальная прокрутка) - логический параметр, определяющий один из трех вариантов использования,вертикальной полосы прокрутки;

Drag Content (Перетаскивание содержимого) — логический параметр, определяющий возможность перемещения пользователем содержимого внутри подокна.

Замечание

Чтобы проверить работоспособность компонентов, включенных в фильм, необходимо перейти в режим тестирования фильма или сцены, выбрав команду Test Movie или Test Scene. Для тестирования реального обмена данными с сервером требуется предварительно экспортировать фильм в формат HTML (см. раздел «Публикация фильма»).

Редактирование компонентов

При включении в фильм экземпляра компонента в библиотеку фильма добавляется не только собственно символ данного типа, но и его «составные части», формирующие внешний вид компонента — Component Skins (Оболочка компонента). Фрагменты каждого компонента помещаются в отдельную одноименную папку. Например, фрагменты флажка находятся в папке FCheckBox Skins (рис. 11.48).

Рис. 11.48. Библиотека фильма, использующего компоненты

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

  1. В окне библиотеки фильма открыть папку FCheckBox Skins, отыскать в ней требуемый фрагмент и перетащить его на стол.
  2. Перейти в режим редактирования символа (поскольку все фрагменты компонентов являются символами-клипами), как показано на рис. 11.49.
  3. Изменить внешний вид или «поведение» фрагмента.

Рис. 11.49. Редактирование фрагмента флажка

ОЗВУЧИВАНИЕ ФИЛЬМА

Озвучивание фильма не связано непосредственно с обеспечением его интерактивности, однако на практике чаще всего звуковое сопровождение делают «управляемым» со стороны посетителя сайта. Это и понятно — ведь интересы и предпочтения посетителя должны быть для Web-дизайнера превыше всего. Не хочет он разделить с вами радость общения с музыкой (или какими-то другими звуками) — и не надо. Поэтому прежде, чем приступить к озвучиванию фильма, поместите в него кнопку с названием «Отключить звук» (или аналогичным). Процедура создания такой кнопки ничем не отличается от рассмотренной в подразделе «Назначение действий кнопке». Действие, которое следует связать с кнопкой, входит в раздел Actions и называется Stop All Sounds (Отключить все звуки).

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

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

Flash не располагает средствами создания звуков, но позволяет импортировать звуковые файлы в различных форматах (в том числе WAV и МРЗ) и затем корректировать параметры звука в соответствии с требованиями фильма.

Чтобы добавить звук к фильму, необходимо выполнить следующие действия:

  1. Импортируйте в фильм один или несколько звуковых файлов; для этого в меню File выберите команду Import, а с помощью стандартного окна Windows - требуемый файл; в результате содержимое файла будет автоматически добавлено в библиотеку фильма в качестве специального символа.
  2. Добавьте во временную диаграмму фильма новый слой, который будет использоваться в качестве звукового (использование Отдельного звукового слоя облегчает тестирование и модификацию фильма); разрешается создавать несколько звуковых слоев, и каждый из них будет работать подобно отдельному звуковому каналу; это означает, что при воспроизведении фильма звуки на разных слоях, совпадающие во времени, воспроизводятся одновременно.
  3. Выберите в звуковом слое кадр, с которого вы хотите начать воспроизведение звука; если данный кадр не является ключевым, выполните для него команду Insert -> Keyframe.
  4. Щелкните в ячейке первого озвучиваемого кадра и в панели инспектора свойств выберите в раскрывающемся списке Sound (Звук) требуемый звуковой символ; на панели появятся (или станут доступны) элементы управления, используемые для установки параметров звука, а также его исходные параметры: ширина полосы частот, моно/стерео, разрядность, длительность, занимаемый объем памяти (рис. 11.50).

Рис. 11.50. Формат инспектора свойств кадра при озвучивании кадра

  1. Если это требуется, с помощью указанных элементов интерфейса скорректируйте параметры звука (подробнее о том, как это сделать, будет сказано ниже).
  2. В раскрывающемся списке Sync (от Synchronization — синхронизация) выберите способ синхронизации звука:
    • Event - звук синхронизируется посредством привязки его к определенным событиям фильма; звук, управляемый событием, воспроизводится с момента перехода к соответствующему ключевому кадру, и продолжается независимо от временной диаграммы, даже если фильм будет остановлен (если, конечно, звук достаточно продолжителен);
    • Start — вариант аналогичен предыдущему, за исключением того, что при очередном наступлении заданного события начинается воспроизведение нового экземпляра звука, даже если воспроизведение предыдущего еще не закончено;
    • Stop — прекращается воспроизведение указанного звука;
    • Stream — потоковый звук; Flash обеспечивает «насильственную» синхронизацию анимации и потокового звука: например, если кадры анимации не успевают воспроизводиться на Web-странице с той же скоростью, что и потоковый звук, Flash-плеер пропускает некоторые кадры; воспроизведение потокового звука всегда прекращается при завершении анимации; кроме того, потоковый звук никогда не продолжается дольше, чем воспроизводятся связанные с ним кадры анимации.
  3. Установите длительность звучания; она определяется как число повторений звука; это число следует ввести в поле Loops (Циклы); например, если 3-секундный звук должен быть слышен в течение 30 секунд, следует ввести в поле Loops число 10.

Непосредственно после выбора в списке Sound одного из звуковых символов его амплитудная характеристика отображается на временной диаграмме (рис. 11.51).

Рис. 11.51. Представление на временной диаграмме озвученного кадра

Обратите внимание, что изображение звука на временной диаграмме масштабируется в соответствии с установленной частотой кадров фильма. Например, при частоте кадров, равной 12, звук длительностью в 2 секунды займет 6 кадров на диаграмме.

Вы можете связывать звуки с различными состояниями символа кнопки. Поскольку звуки сохраняются вместе с символом кнопки, Они будут работать для всех ее экземпляров.

Чтобы добавить звук кнопке, выполните следующие действия:

  1. Выберите символ кнопки в окне библиотеки и перетащите его на стол.
  2. На временной диаграмме кнопки добавьте звуковой слой.
  3. В этом слое создайте ключевой кадр, соответствующий тому состоянию кнопки, которое вы хотите озвучить.
  4. Щелкните правой кнопкой мыши в созданном ключевом кадре и с помощью элементов управления, имеющихся на панели инспектора свойств кадра, установите параметры звука, как было описано выше.

Для озвучивания других состояний кнопки необходимо повторить описанную выше процедуру.

Обратите внимание, что изображение звука, назначенного конкретному состоянию кнопки, на временной диаграмме занимает только тот кадр, который соответствует этому состоянию (рис. 11.52).

Замечание

Чтобы проверить работу озвученной кнопки, не забудьте перейти в режим тестирования кнопки, выбрав в меню Control команду Enable Simple Buttons.

Рис. 11.52. Временная диаграмма «озвученной» кнопки

Глава 10 <    Macromedia Flash MX    > Глава 12

Copyright © 2006-09.