Рисунок 1.15. В диалоговом окне Trace Bitmap осуществляется преобразование растрового изображения в векторное
 
   Функция Trace Bitmap заменяет растровое изображение набором закрашенных векторных областей. В большинстве случаев это приводит к ухудшению качества рисунка по сравнению с исходным, но, по крайней мере, теперь его можно масштабировать аналогично векторному изображению.
   Совет
   Многие художники преобразуют растровое изображение в векторное на одном из этапов его создания. Например, можно нарисовать что-нибудь на бумаге, отсканировать изображение в файл, а затем трассировать полученный растр в векторное изображение. Многие художники используют для преобразования не Flash, а программы типа Adobe Streamline. Затем изображение импортируется во Flash. После этого художник должен довольно много потрудиться, чтобы изображение выглядело так, как было задумано.

Звуки

   Импорт звуковых файлов во Flash осуществляется способом, аналогичным импорту растровых изображений. Flash импортирует стандартные звуковые форматы: AIFF, MP3, Sun AU и Wave.
   После того как файл импортирован во Flash, двойным щелчком мыши по его имени в библиотеке можно открыть диалоговое окно Sound Properties (Свойства звука) – см. рис. 1.16.
   Рисунок 1.16. Диалоговое окно Sound Properties позволяет задавать степень сжатия звукового файла при включении его в конечный Flash-ролик
 
   Обычно звуковые элементы перетаскивают на временную шкалу и помещают в ключевой кадр. Когда начинает воспроизводиться ключевой кадр, запускается воспроизведение соответствующего звукового файла. Параметры звукового файла, прикрепленного к кадру, можно настроить, вызвав соответствующую ему панель Sound (Звук).
   Совет
   Настройка степени сжатия звукового файла в диалоговом окне Sound Properties необходима в случае, если для вас важно качество звука в конечном ролике. Например, использование компрессии MP3 со скоростью воспроизведения 16 Кб/с даст звук среднего качества, подходящий для специальных эффектов и т. п. Однако, если вы используете качественную музыку, вам понадобится скорость 32 Кб/с или даже 64 Кб/с. Советуем поэкспериментировать с различными настройками и подобрать их таким образом, чтобы получить звук хорошего качества и одновременно занимающий как можно меньше места. При сохранении ролика вы можете также установить настройки по умолчанию, которые будут применяться для всех звуков ролика.
   Показанная на рис. 1.17 панель Properties позволяет установить способ запуска звукового файла, его повторение и даже применить эффект его постепенного исчезновения. Так как в нашу задачу не входит использование этих свойств звука, не будем рассказывать о них подробно.
   Рисунок 1.17. Панель Properties служит для настройки звуковых файлов, находящихся на временной шкале
 
   Вместо этого рассмотрим, как с помощью команд ActionScript запустить звуковой файл, а также настроить время и способ его воспроизведения.
   В случае, если на временной шкале звук отсутствует, Flash не включит его в конечный файл, и попытка ActionScript запустить его не удастся.
   Чтобы обеспечить включение звука в конечный файл, необходимо установить свойства связи (см. рис. 1.6). Для ссылок на звуковой файл в ActionScript следует использовать имя, назначенное данному файлу в диалоговом окне Linkage Properties.

Организация ролика

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

Библиотека

   Организация библиотеки осуществляется посредством создания каталогов внутри палитры Library. Каталоги выполняют такие же функции, как и каталоги (директории) вашей операционной системы. Вы можете создавать каталоги и хранить в них различные элементы библиотеки. Например, если у вас есть 52 графических изображения для представления колоды из 52 карт, вы можете поместить их в папку под названием cards (карты). Это значит, что все 52 карты будут отображаться как один элемент библиотеки (если содержащая их папка закрыта). Развернув данный элемент, вы получите доступ к имеющимся в нем графическим изображениям.
   Для того чтобы создать каталог, откройте палитру Library и из всплывающего меню в правом верхнем углу выберите команду New Folder (Новая папка). Доступ к содержимому папки осуществляется очень просто (нажатием на ее изображение мышью). При этом вам не придется ссылаться на имя каталога ни при помощи инструментов анимации, ни в программе ActionScript.
   Палитра Library включает еще несколько инструментов для организации библиотеки. Например, вы можете упорядочить ее содержимое по любому параметру, указанному в заголовках столбцов. На рис. 1.18 показана полностью развернутая палитра Library. Если вы хотите упорядочить библиотеку по дате последнего изменения (вариант Date Modified), просто щелкните мышью по заголовку столбца. Небольшая кнопка с изображением в форме пирамиды, расположенная справа от заголовков столбцов, позволяет упорядочить содержимое по возрастанию или по убыванию.
   Рисунок 1.18. Развернутый каталог в палитре Library
 
   Благодаря такой организации вы можете узнать, какие элементы библиотеки используются и как часто. Здесь, конечно, не учитывается их использование в программах ActionScript.

Кадры

   Маркировка кадров в ролике необходима программисту на ActionScript для того, чтобы задать в программе нелинейный переход ролика с одного кадра на другой. Присвоить имена кадрам можно в панели Properties.
   В ActionScript имеется возможность ссылаться на номера кадров, однако мы не советуем этого делать. Почему? Предположим, вы написали программу, задающую переход от кадра 7 на кадр 13, а затем на кадр 8. После этого решили добавить кадр перед кадром 1. Кадры, которые раньше имели номера 7, 13 и 8, получат номера 8, 14 и 9, и вам придется менять программу в трех местах.
   Присвоив кадрам имена, вы можете ссылаться на эти имена в программе. При этом вне зависимости от количества добавленных и удаленных кадров вы всегда будете уверены, что ключевой кадр сохранил свое имя.

Слои

   Хотя в большинстве случаев программы, написанные на ActionScript, не манипулируют слоями, слои являются ценным инструментом для организации ролика. Вы можете и должны использовать разные слои для меток, кода ActionScript и графических объектов. На рис. 1.19 показан пример правильной организации ролика при помощи слоев.
   Рисунок 1.19. Данное устройство временной шкалы включает один слой только для меток, еще один для ActionScript и остальные для графических объектов
 
   Двойным щелчком мыши по небольшой пиктограмме слева от каждого слоя можно вызвать диалоговое окно Layer Properties (Свойства слоя) – см. рис. 1.20. Слою можно задать, например, свойство Outline (Контур), тогда все изображения данного слоя будут отображаться в виде контуров. Данный режим действует только в процессе работы в среде Flash; при просмотре swf-файла изображение примет обычный вид.
   Рисунок 1.20. В диалоговом окне Layer Properties можно задать тип слоя
 
   Применяйте слои для организации не только главной временной шкалы, но и клипов, графических изображений и кнопок.

Сцены

   Сцены являются более высоким уровнем организации роликов во Flash. Каждый Flash-ролик состоит из одной или нескольких сцен. В большинстве примеров, рассматриваемых в данной книге, используется лишь одна сцена, поэтому вы можете просто забыть об их существовании.
   Тем не менее, сцены могут служить прекрасным организационным инструментом. Они представляют собой последовательное сочетание нескольких роликов, образующих одно целое. Каждая сцена имеет свою временную шкалу. На рис. 1.21 показана панель Scene (Сцена), которая включает три сцены. Они воспроизводятся точно в указанном порядке, хотя ActionScript может игнорировать его и воспроизводить сцены в любой последовательности и даже переходить с кадра одной сцены на кадр другой сцены.
   Рисунок 1.21. Панель Scene позволяет создавать и по-разному организовывать сцены вашего ролика

Нерабочая область

   Существует одна область интерфейса Flash, чрезвычайно полезная программисту на ActionScript, однако редко упоминаемая в книгах, подобных этой. Это область, которая находится за пределами рабочего поля. Взгляните на рис. 1.1 и обратите внимание на серую область вокруг рабочего поля, расположенного в центре окна. В эту область вы можете помещать элементы. При воспроизведении ролика в браузере пользователя или в программе Flash Player данная область не будет видна.
   В нерабочей области можно, например, разместить небольшой клип с написанным для него кодом ActionScript. В отличие от кода в главной временной шкале, выполняющегося один раз, ActionScript-код клипа будет выполняться в каждом кадре.
   Внимание!
   Вероятность того, что пользователь увидит нерабочую область, все же существует. Если изменение масштаба ролика выполняется во Flash Player, окне предварительного просмотра Flash или в браузере, ролик старается сохранить свои пропорции, и некоторые области, расположенные выше или ниже рабочего поля, могут быть видны. Этого не произойдет, если поместить ролик в Web-страницу, используя правильные тэги (об этом рассказывается ниже).
   Таким образом, поместив небольшой клип за пределы рабочей области, где он не будет виден, вы можете создать код, выполняющий повторяющиеся действия, например анимацию или движение, контролируемое пользователем.

Подготовка ролика к публикации

   Независимо от того, является ли ваш ролик простой анимацией или сложным приложением, после окончания работы над ним его необходимо экспортировать в swf-файл. Это можно сделать при помощи команды File → Publish (Файл → Опубликовать).
   Перед этим, однако, надо проверить определенные элементы ролика и, воспользовавшись командой File → Publish Settings (Файл → Настройки публикации), настроить его соответствующим образом.

Список заключительных проверок

   Вот список элементов, которые необходимо проверить перед публикацией ролика:
   • имена копий клипов – имена всех клипов, помещенных на рабочее поле, должны совпадать с именами в коде;
   • свойства связи – в случае, если клип не используется на рабочем поле, но используется кодом, необходимо настроить его свойства связи в библиотеке таким образом, чтобы он экспортировался с роликом. Имя связи должно соответствовать имени, которое используется в вашем коде. Все вышесказанное относится и к звуковым файлам, содержащимся в библиотеке;
   • имя динамического текста – имя динамического текста, используемого на рабочем поле и связанного с переменной ActionScript, должно соответствовать вашему коду;
   • шрифты – текстовое окно динамического или редактируемого текста должно содержать все символы, которые могут вам понадобиться. В противном случае при воспроизведении на машине, где установлены другие шрифты, текст будет искажен;
   • команда stop – команду ActionScript stop() необходимо поместить во все кадры, с которыми может взаимодействовать пользователь. Кадр, не содержащий команды stop(), является не более чем отдельным кадром анимации. Это также относится к клипам вашего ролика. Если они контролируются ActionScript, их первый кадр должен содержать команду stop(). Более подробную информацию об этой команде вы найдете в главе 2 «Введение в ActionScript».

Публикация

   Перед тем как применить команду File → Publish (Файл → Публиковать), вызовите диалоговое окно Publish Settings (рис. 1.22). Это большое диалоговое окно состоит из трех вкладок. Вкладка Formats (Форматы) позволяет вам выбрать формат для экспорта. Однако форматы GIF, JPEG и PNG представляют собой неподвижные изображения, а форматы QuickTime Movie и RealPlayer не поддерживают ActionScript программы Flash 8.
   Рисунок 1.22. Диалоговое окно Publish Settings дает возможность экспортировать ролик Flash в одном из нескольких форматов
 
   Поэтому единственной реальной альтернативой остается формат SWF и Projectors. Вы также можете выбрать экспорт HTML-страницы, которая будет использоваться вместе с swf-файлом.
   Вкладка Flash позволяет задать несколько настроек конечного swf-файла (рис. 1.23). При выборе опции Generate Size Report (Создать отчет о размере) программа создает краткое описание содержимого swf-файла и помешает его в окно Flash Output (Window → Output). Также создается отдельный файл отчета FileName Report.txt (где FileName – имя вашего fh-файла), который помешается в ту же директорию, что и fla-файл. Это поможет вам найти и сократить элементы, занимаюшие много места.
   Рисунок 1.23. Вкладка Flash диалогового окна Publish Settings позволяет изменять некоторые важные настройки swf-файла
 
   Опция Omit Trace Actions (Игнорировать трассировку) предназначена для того, чтобы отключать сообщения, выводимые командой trace в окно Output. Вывод сообщений происходит только при проигрывании фильма в редакторе, так что для просмотра в браузере или посредством Flash-плеера эта опция не существенна.
   Опция Protect from Import (Защита от импорта) создает защищенный от импорта фильм. При попытке импортировать такой ролик будет затребован пароль.
   Опция Debugging Permitted (Разрешить устранение неполадок) позволяет вам устранять неполадки в ролике во время его воспроизведения. Более подробно об устранении неполадок рассказано в главе 4 "Процесс создания игры".
   Следующий ряд настроек дает возможность установить значение сжатия по умолчанию для изображений и звуков. При установке флажка Override Sound Settings (Заменять настройки звука) все звуки будут сжаты с параметрами по умолчанию, независимо от ранее установленной степени сжатия.
   Опция Version (Версия) в нижней части окна, похоже, может творить чудеса. Она предлагает сохранить ролик во Flash 1, 2, 3, 4, 5, MX или 8. Получается, что создаваемые вами ролики со сложным сценарием ActionScript будут работать во Flash 3? Нет. Если ваш ролик содержит хоть какой-нибудь сценарий на ActionScript, скорее всего, его необходимо экспортировать как ролик Flash MX или 8. Если же вы используете новые команды версии 8, то ничего не остается, кроме как импортировать фильм в этой версии.
   Последняя вкладка диалогового окна Publish Settings, изображенная на рис. 1.24, позволяет задать внешний вид HTML-файла, экспортируемого с swf-файлом.
   Рисунок 1.24. Вкладка HTML диалогового окна Publish Settings позволяет задавать настройки HTML-файла, экспортируемого с swf-файлом
 
   На самом деле опции[2], показанные на рис. 1.24, не контролируют swf-файл, а только задают тэги HTML-страницы. Эти тэги мы рассмотрим в следующем разделе.

Размещение Flash-ролика в сети

   Для того чтобы поместить ролик в сети, его необходимо вставить в HTML-страницу. Конечно, вы можете поместить ролик как swf-файл, однако в этом случае он увеличится до размера окна браузера, что вам не нужно.
   При помощи двух тэгов вы можете поместить swf-файл на Web-страницу и для Internet Explorer, и для Netscape. Более того, множество настроек позволяют задавать нужный внешний вид ролика. Большинство из них автоматически применяются программой при публикации и могут быть установлены в диалоговом окне Publish Settings, показанном на рис. 1.24. Тем не менее вам не помешает знать, как выглядят эти элементы. Не знаю, как вы, а я бы скорее предпочел создать свой собственный HTML, чем использовать шаблон Flash.
   Приведенный ниже элемент содержит Flash-ролик размером 550x400 под названием Sample.swf. Воспроизведение ролика начинается сразу, уровень качества – высокий, используются шрифты устройства, фоновый цвет – белый.
 
   <Object classid="clsid:D27CDB6E-AE6D-11cf-96B8•444553540000"
   codebase="http://download.macromedia.com/pub/shockwave/
   cabs/flash/swflash.cab#version=5,0,0,0"
   WIDTH=550 HEIGHT=400>
   <PARAM NAME=movie VALUE="sample.swf">
   <PARAM NAME=play VALUE=true>
   <PARAM NAME=quality VALUE=high>
   <PARAM NAME=devicefont VALUE=true>
   <PARAM NAME=bgcolor VALUE=#FFFFFF>
   </OBJECT>
 
   Длинная строка символов, начинающаяся с classid, является обозначением Flash для Internet Explorer. Часть кода, начинающаяся с codebase, дает Internet Explorer команду загрузить Flash Plug-in (программу, встраиваемую в IE для проигрывания Flash-роликов) в случае, если он еще не загружен.
   Netscape не понимает тэг OBJECT, так как он используется для описания управляющих элементов ActiveX – технологии, предназначенной для встраивания мультимедийных элементов в Internet Explorer. Для Netscape необходим элемент EMBED, который дает команду браузеру использовать плагин Flash для запуска Flash-ролика.
 
   <EMBED src="sample.swf"
   play=false
   quality=high
   devicefont=true
   bgcolor=#FFFFFF
   WIDTH=550 HEIGHT=400
   TYPE="application/x-shockwave-flash"
   PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
   </EMBED>
 
   Как видите, эти элементы очень похожи. Параметр TYPE сообщает Netscape, что это ролик Flash, а PLUGINSPAGE подсказывает, куда направить пользователя в случае, если у него не установлена программа Flash.
   Внимание!
   В отличие от элемента OBJECT элемент EMBED не содержит номер версии Flash, необходимой для воспроизведения вашего ролика. Это значит, что Netscape с Flash 8 попытается воспроизвести ваш ролик, созданный во Flash 8, даже если не сможет понять команды ActionScript. В результате ролик не будет воспроизведен должным образом. Для того чтобы предупредить пользователей, вы можете поместить на страницу предупреждение "Для воспроизведения необходим Flash 8 Player". Информацию о новейших технологиях JavaScript для определения версии Flash, установленной у пользователя, вы найдете на сайтах, приведенных в приложении А "Internet-ресурсы для разработчика Flash".
   Однако недостаточно просто включить в код элементы OBJECT и EMBED. Все намного сложнее. Дело в том, что Internet Explorer может также использовать элемент EMBED для отображения мультимедийных элементов. Значит, существует вероятность того, что Internet Explorer использует оба тэга и Flash-ролик будет воспроизведен дважды на одной и той же странице.
   К счастью, существует простой способ не допустить этого. Если поместить элемент EMBED внутрь элемента OBJECT, Internet Explorer проигнорирует его. Таким образом, окончательная версия кода будет выглядеть следующим образом:
 
   <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
   codebase="http://download.macromedia.com/pub/shockwave/cabs/
   flash/swflash.cab#version=6,0,0,0"
   WIDTH=550 HEIGHT=400>
   <PARAM NAME=movie VALUE="sample.swf">
   <PARAM NAME=play VALUE=true>
   <PARAM NAME=quality VALUE=high>
   <PARAM NAME=devicefont VALUE=true>
   <PARAM NAME=bgcolor VALUE=#FFFFFF>
   <EMBED src="sample.swf"
   play=false
   quality=high
   devicefont=true
   bgcolor=#FFFFFF
   WIDTH=550 HEIGHT=400
   TYPE="application/x-shockwave-flash"
   PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
   </EMBED>
   </OBJECT>
 
   Приведенный выше код исполняется отлично, однако создает одну проблему: почти каждый параметр должен повторяться дважды, один раз в элементе OBJECT, второй – в элементе EMBED. Если вы вносите какие-либо изменения, не забудьте сделать это в обоих тэгах.
   Теперь, узнав, как связаны Flash и ActionScript, вы готовы стать программистом на ActionScript. В следующей главе мы начнем изучение Action-Script.

Глава 2
Введение в ActionScript

   • Урок 1. Что такое код ActionScript и где его размешать
   • Урок 2. Использование окна Actions
   • Урок 3. Ваша первая программа на ActionScript
   • Урок 4. Контроль воспроизведения ролика
   • Урок 5. Создание кнопок для пользователя
   • Урок 6. Анимация при помоши ActionScript
   • Урок 7. Возможность управления клипами пользователем
   • Урок 8. Использование переменных
   • Урок 9. Выполнение операций
   • Урок 10. Условные выражения
   • Урок 11. Циклы
   • Урок 12. Текст и строки
   • Урок 13. Создание функций
   • Урок 14. Массивы
 
   Вы сможете изучить ActionScript и научиться программировать на нем в двух случаях: если у вас есть опыт программирования на других языках или вы не имеете опыта программирования, но умеете создавать графику и анимацию во Flash.
   В начале данной главы мы опишем основные элементы ActionScript, а затем рассмотрим ряд практических примеров. За 24 простых урока вы научитесь программированию на ActionScript. Данная глава содержит первые 14 уроков, в которых рассказывается об основных командах ActionScript. Глава 3 "Элементы ActionScript для создания игр" содержит еше 10 уроков.

Урок 1. Что такое код ActionScript и где его размещать

   ActionScript – это язык программирования, используемый программой Flash MX. По сравнению с главной временной шкалой, позволяюшей создавать лишь линейную анимацию, ActionScript расширяет возможности программирования. При помоши ActionScript ваш ролик будет реагировать, например, на выбор, делаемый пользователем, или на другие события. ActionScript позволяет управлять элементами, которые видит пользователь, и вместо простой анимации показывать нелинейные презентации, интерактивные приложения или игры.
   Примечание
   ActionScript, используемый Flash 8, был создан на основе двух источников. Первый – это набор макрокоманд, взятый из предыдуших версий Flash, в основном Flash 4, который содержал схожий, но очень простой язык программирования. Другим источником оказался JavaScript – язык, используюшийся для создания небольших программ для HTML-страниц в Internet Explorer и Netscape. Новый язык стал популярен среди разработчиков Web-страниц, которые являются основными пользователями Flash 8. Для того чтобы упростить изучение ActionScript, многие новые команды и синтаксис были приведены к виду, напоминаюшему JavaScript.
   Программы ActionScript представляют собой списки инструкций, которые выполняются программой Flash и могут быть помешены в различные места Flash-ролика. Если вы знаете, куда поместить сценарий, это уже полдела. Давайте рассмотрим несколько мест, куда может быть помешен сценарий, а также в каких случаях он будет использован программой.

Сценарии кадра

   Вы можете помешать сценарии в ключевые кадры главной временной шкалы вашего ролика. Для этого выделите ключевой кадр на главной временной шкале и нажмите F9. На экране появится диалоговое окно Actions – Frame (Действия – Кадр).
   Сценарии кадра могут содержать два типа элементов. Первый – это набор команд, исполняемых при воспроизведении кадра ролика. Команды исполняются друг за другом, пока не будет достигнут конец сценария.
   Вторым типом элемента, включаемого в кадровый сценарий, является функция. Функции – это элементы кода, которые могут быть многократно использованы командами в сценариях кадра, а также другими сценариями ролика.

Сценарии для кнопок

   Вы также можете задавать сценарии для кнопок. Прежде всего вам следует создать кнопку как элемент библиотеки. Затем, если необходимо, переташите кнопку на рабочее поле. Выделите ее и нажмите F9 для того, чтобы вызвать диалоговое окно Actions. В случае, если диалоговое окно уже на экране, сценарий кнопки будет отображен при ее выделении.
   Теперь окно Actions имеет заголовок Actions – Button (Действия – Кнопка). Любой сценарий, введенный здесь, будет выполнен кнопкой. Однако вы не можете просто ввести набор команд. Вы должны запрограммировать реакцию кнопки на выполнение различных событий, например на ее нажатие, помешение над ней курсора и т. д. Код, обрабатываюший подобные события, называется программой-обработчиком. Сценарий кнопки представляет собой набор из одного или нескольких обработчиков.

Сценарии клипов

   Вы также можете назначить сценарий клипу. Для этого прежде всего создайте клип и сохраните его как элемент библиотеки. Затем поместите копию клипа на рабочее поле. Выделив копию клипа на рабочем поле, вызовите окно Actions, оно будет иметь заголовок Actions – Movie Clip (Действия – Клип).
   Аналогично сценарию кнопки вы не можете просто ввести набор команд. Команды должны быть помешены в программы-обработчики, реагируюшие на события клипов. Однако, в отличие от кнопок, клипы реагируют на совершенно другой набор событий.
   В следующих разделах мы рассмотрим примеры сценариев кадра, сценариев для кнопок, а также сценариев клипов.

Урок 2. Использование окна Actions

   Для программирования в ActionScript вы будете использовать окно Action-Script. Окно имеет два режима: обычный и эксперта. В нормальном режиме окно функционирует как окно Actions программы Flash 4. При выборе команд, функций, операторов и других элементов синтаксиса в левой части окна элемент автоматически помещается в программу ActionScript в правой части окна.
   На рис. 2.1 показан обычный режим окна Actions. Однострочная программа, содержащая команду gotoAndPlay, была помещена в программу в правой части окна двойным щелчком мыши по ее названию в списке слева. При выборе команды справа ее описание появляется в нижней части окна. Вы можете изменить эту информацию при помощи выпадающих списков и текстовых полей. В нашем примере был выбран тип Frame Label (Метка кадра) и кадр "My Frame Name". Команда в окне будет соответственно изменена.