ActionScript краткий обзор
Что нового во Flash 5 ActionScript
Flash 5 ActionScript предоставляет новые расширенные возможности для создания интерактивных веб-сайтов со сложными играми, формами, опросами и общением в реальном времени в системах типа чата.
Flash 5 ActionScript имеет много новых возможностей и особенностей синтаксиса, которые делают его похожим на ядро языка программирования JavaScript. Это руководство объясняет основные программистские концепции, такие как функции, переменные, выражения, операторы, условия и циклы. Глава 7 этого руководства, " ActionScript Словарь, " содержит подробное описание для каждого элемента ActionScript.
Это руководство не учебник по программированию вообще. Есть много других доступных ресурсов, обеспечивающих подробной информацией об общих понятиях программирования и языке JavaScript.
Европейская Ассоциация Фирм изготовителей Компьютеров /European Computers Manufacturers Association (ECMA)/ разработала документ, называемый ECMA-262 - международный стандарт языка JavaScript. ActionScript базируется на ECMA-262 спецификации, которая доступна на http://www.ecma.ch.
Netscape DevEdge Online имеет JavaScript Developer Central (http://developer.netscape.com/tech/javascript/index.html), содержащий документацию и систему правил, полезную для понимания ActionScript. Наиболее ценный ресурс - Core JavaScript Guide, находящийся на http://developer.netscape.com/docs/manuals/js/core/jsguide/index.htm.
Dot (точечный) синтаксис
Можно использовать Dot (точечный) синтаксис, чтобы получать и устанавливать свойства и методы объектов, включая имена муви-клипов и переменных. Можно использовать Dot синтаксис вместо слеш (/) синтаксиса, как во Flash 4. Слеш синтаксис больше не предпочтителен, но еще поддерживается Флеш-Плеером.
Примечание переводчика: в данном случае речь идет о разделителях в выражениях - точке или слеше
Функции определяемые пользователем (User-defined functions)
Можно определять функции с параметрами, которые возвращают значения. Это позволяет многократно использовать одни и те же блоки кода в скриптах. Во Flash 4, можно было многократно использовать код через call команду, но нельзя было передавать туда параметры или возвращать значения.
Интеллектуальные клипы (Smart Clips)
Интеллектуальные (Smart) клипы имеют внутренние скрипты, которые Вы или другие разработчики можете изменять без использования панели команд (Actions panel). Можно передавать значения в смарт-клип через его параметры, определяемые в библиотеке.
Использование справки при написании скрипта
Flash 5 содержит контекстно-зависимую справку для каждой команды, доступной в панели команд (Actions panel). Можно получать информацию о командах, которые используете, прямо во время создания скрипта.
Для получения справки:
| 1 | В панели команд (Actions panel) выберите нужную команду в списке инструментальных средств. |
| 2 | Нажмите кнопку Help наверху панели. |
| Описание команды появится в окне броузера | |
Команды клипу (Clip actions)
Можно использовать onClipEvent команду, передающую действия непосредственно в образец муви-клипа на сцене. onClipEvent команда имеет такие события, как load, enterFrame, mouseMove и data, которые позволяют создавать новый тип более продвинутой интерактивности.
Локальные переменные
Можно объявлять локальные переменные, которые действуют только в пределах списка команд или обращения к функции. Это позволяет оптимальнее загружать память и многократно использовать одни и те же имена переменных. Во Flash 4 все переменные определялись на время действия всего клипа, даже временные переменные, типа счетчиков циклов, остались в клипе до его завершения.
Начало: Краткий обзор
ActionScript - язык создания Flash-сценария (скрипта). Вы можете использовать ActionScript для управления объектами в клипах, создавать навигацию, другие интерактивные элементы. В конечном итоге, создавать высоко качественные клипы и сетевые приложения.
Новые команды
Можно использовать новые команды, такие как do..while и for для создания сложных циклов. Другие новые команды выполнены как методы объекта MovieClip. Например, getBounds, attachMovie, hitTest, swapDepths и globalToLocal.
Отладчик
Отладчик позволяет просматривать и изменять значения переменных и свойств в клипе, играющем в режиме теста, автономном Флеш-Плеере или броузере. Это позволяет легко находить проблемы в ActionScript.
Предопределенные объекты
Можно использовать предопределенные объекты для доступа и манипулированием некоторыми типами информации. Вот несколько предопределенных объектов:
![]() |
Объект Math - набор встроенных математических констант и функций, таких как E (Константа Эйлера) cos (Косинус), atan (Арктангенс). |
![]() |
Объект Date - позволяет получить информацию о дате и времени системы, на которой запущен Флеш-Плеер. |
![]() |
Объект Sound - позволяет добавлять звуки к клипу и управлять ими во время проигрывания клипа. Например, можно регулировать громкость (setVolume), или баланс (setPan). |
![]() |
Объект Mouse - позволяет скрывать стандартный курсор, чтобы можно было использовать какой-то другой. |
![]() |
Объект MovieClip - позволяет управлять клипом без использования такой команды как tellTarget. Можно вызвать такие методы как play, loadMovie или duplicateMovieClip из имени образца (instance name), используя dot (точечный) синтаксис (например, myMovieClip.play()). |
Различия между ActionScript и JavaScript
Совершенно не обязательно знать JavaScript, чтобы научиться и использовать ActionScript. Но если Вы его знаете, то ActionScript покажется Вам знакомым. Они имеют следующие некоторые различия:
![]() |
ActionScript не поддерживает специфичные для броузеров объекты, такие как Document, Window и Anchor. |
![]() |
ActionScript полностью не поддерживает все JavaScript предопределенные объекты. |
![]() |
ActionScript поддерживает синтаксические конструкции, которые отсутствуют в JavaScript (например tellTarget и ifFrameLoaded команды и слеш ("/") синтаксис. |
![]() |
ActionScript не поддерживает некоторые синтаксические конструкции JavaScript, такие как switch, continue, try, catch, throw и statement метки. |
![]() |
ActionScript не поддерживает JavaScript конструкцию Function |
![]() |
В ActionScript, eval команда может только выполнять ссылки на переменные . |
![]() |
В JavaScript, неопределенное toString есть undefined. Во Flash 5, для совместимости с Flash 4, неопределенное toString есть " ". |
![]() |
В JavaScript, численное undefined результируется в NaN. Во Flash 5, для совместимости с Flash 4, численное undefined является 0. |
![]() |
ActionScript не поддерживает Unicode; поддерживаются ISO-8859-1 и Shift-JIS кодировки. |
Редактирование текста
Можно набирать скрипты непосредственно в панели команд (Actions) в экспертном режиме (Expert Mode). Можно также выбирать элементы из всплывающего меню, или списка инструментов, точно так же, как во Flash 4.
Типы данных
Flash 5 ActionScript поддерживает следующие типы данных: string (строка), number (число), boolean (булеан), object (объект) и movie clip (муви-клип). Множественность типов данных позволяют использовать различные типы информации в ActionScript. Например, возможно создание массивов и ассоциативных массивов.
XML поддержка
Предопределенный объект XML позволяет преобразовывать ActionScript в XML-документы и передавать их приложениям на сервере. Можно также использовать объект XML для загрузки XML-документов во флеш-клип и интерпретировать их. Предопределенный объект XMLSOCKET позволяет создавать непрерывное соединение с сервером, для передачи XML-данных приложениям в реальном времени.
Понимание ActionScript: Обзор
Использование Actions panel
Actions panel позволяет создавать и редактировать скрипты для объектов и кадров двумя различными способами. Можно выбирать заранее определенные команды из списка команд (Toolbox list), перетаскивать их в правую часть панели и использовать кнопки на панели для удаления и перестановки команд. В Normal Mode (нормальный режим) можно писать команды, используя поля параметров (аргументов), которые запрашивают у вас правильные аргументы. В Expert Mode (экспертный режим) можно писать и редактировать команды прямо в текстовом поле, как в обычном текстовом редакторе.
Включение Actions panel:
Выберите Window > Actions.
Выбрав экземпляр кнопки или муви-клипа вы делаете Actions panel активной. Заголовок Actions panel изменяется на Object Actions, если вы выбрали муви-клип или кнопку или на Frame Actions panel, если выбран кадр.
Выбор режима редактирования:
| 1 | При активной Actions panel щелкните на стрелке в правом верхнем углу панели. Откроется выпадающее меню. |
| 2 | Выберите Normal Mode или Expert Mode из меню. |
| Каждый скрипт поддерживает свой собственный режим. Например, вы можете редактировать скрипт в одном экземпляре кнопки в Normal Mode, а другой в Expert Mode. При переключении между этими кнопками будет переключаться и режим редактирования. | |
| Более детальную информацию смотри Нормальный режим и Экспертный режим. | |
Использование внешних редакторов.
Экспертный режим дает вам больше возможностей редактирования ActionScript, вы можете редактировать скрипты вне Flash. Вы можете потом использовать команду include для добавления скриптов, созданных во внешнем редакторе, к скриптам во Flash.
Например, следующая команда импортирует файл скрипта:
#include "externalfile.as"
Текст скрипта заменяет команду include. Текстовый файл должен существовать в момент экспорта клипа.
Для добавления скрипта из внешнего редактора:
| 1 | Перетащите команду include из Toolbox list в окно скриптов. |
| 2 | Введите путь к внешнему файлу. |
| Путь должен быть родительским по отношению к FLA файлу. Например, если myMovie.fla и externalfile.as лежат в одном каталоге, путь будет такой: externalfile.as. Если externalfile.as лежит в подкаталоге, который называется Scripts, то путь будет таким: scripts/externalfile.as. | |
Экспертный режим
В экспертном режиме вы создаете команды путем ввода ActionScript в текстовое поле в правой стороне панели или выбирая команды из Toolbox list слева. Вы редактируете команды, вводите параметры или удаляете команды прямо в текстовом поле, как в обычном текстовом редакторе.
Экспертный режим позволяет опытным пользователям редактировать скрипты с помощью текстового редактора, как скрипты на JavaScript или VBScript. Экспертный режим отличается от нормального режима в следующих моментах:
![]() |
Выбор команд при помощи кнопки (+) вводит их в зону редактирования. | |
![]() |
Поля параметров не появляются. | |
![]() |
Из всех кнопок на панели работает только кнопка (+). | |
![]() |
Кнопки со стрелками вверх и вниз неактивны. ![]() | |
| Actions panel в экспертном режиме |
Как выполняются скрипты
ActionScript следует логической структуре. Flash исполняет команды ActionScript начиная с первой и последовательно до последней, если ему не встретится оператор, переводящий исполнение куда-либо в другое место.
Некоторые команды, такие как if - условные переходы, do...while - циклы и команда return, переводят исполнение ActionScript куда-либо в другое место, а не на следующую команду.

Логическая структура команды if..else

Логическая структура команды do..while
Оператор if называется условным оператором или "логическим ветвлением", так как он управляет исполнением скрипта в зависимости от соблюдения некоторого условия. Например, следующий код проверяет условие - значение переменной number должно быть меньше или равно 10. Если проверка возвращает true (например, значение number равно 5), переменной alert присваивается соответствующее значение, которое можно вывести, в качестве сообщения пользователю:
if (number <= 10) { alert = "The number is less than or equal to 10"; }
Для создания более сложного условного оператора можно добавить оператор else, как показано в следующем примере. Если условие возвращает true (например значение number равно 3), то выполняется вторая строка, если false (например значение переменной number равно 117649) первый блок кода пропускается и выполняется второй, следующий после оператора else:
if (number <= 10) { alert = "The number is less than or equal to 10"; } else { alert = "The number is greater than 10"; }
За более детальной информацией обращайтесь Использование оператора "if".
Циклы повторяют команды определенное число раз или до тех пор, пока выполняется определенное условие. В следующем примере муви-клип дублируется пять раз.
i = 0; do { duplicateMovieClip ("myMovieClip", "newMovieClip" + i, i); newName = eval("newMovieClip" + i); setProperty(newName, _x, getProperty("myMovieClip", _x) + (i * 5)); i = i + 1; } while (i <= 5);
За более детальной информацией обращайтесь Повторение команд.
Написание скриптов на ActionScript
Вы можете начать писать простые скрипты не имея больших знаний ActionScript. Все что вам нужно, это цель, в конце-концов это всего лишь вопрос выбора правильных действий. Лучший способ узнать, каким простым может быть ActionScript - это создать свой скрипт. Следующие шаги назначают скрипт кнопке, которая изменяет видимость муви-клипа.
Для того, что бы изменить видимость муви-клипа:
| 1 | Выберите Window > Common Libraries > Buttons, затем выберите Window > Common Libraries > Movie Clips. Разместите кнопку и муви-клип на сцене. |
| 2 | Выделите этот муви-клип и выберите Window > Panels > Instance Properties. |
| 3 | В поле Name введите testMC. |
| 4 | Выделите кнопку на сцене и выберите Window > Actions для того что бы открыть Actions panel. |
| 5 | На панели Object Actions щелкните на категории Actions, чтобы открыть ее. |
| 6 | Дважды щелкните на команде setProperty, чтобы добавить ее в список команд (Actions list). |
| 7 | Из выпадающего меню Property (свойства) выберите _visible (видимость). |
| 8 | В поле Target (цель) введите testMC. |
| 9 | В поле Value (значение) введите 0. |
| Код должен выглядеть примерно так: | |
| on (release) { setProperty ("testMC", _visible, false); } | |
| 10 | Выберите Control > Test Movie и нажмите на кнопку, чтобы увидеть как исчезнет муви-клип. |
ActionScript - объектно-ориентированный скриптовый язык. Это означает, что команды влияют на объект тогда, когда происходит определенное событие. В данном скрипте событием является отпускание кнопки мыши, объект - муви-клип с именем testMC, команда - setProperty. Когда пользователь отпускает кнопку мыши над кнопкой на экране, происходит событие release и скрипт переключает свойство _visible объекта MC в состояние false, из-за чего объект становиться невидимым.
Вы можете использовать Actions panel для создания простых скриптов. Чтобы использовать все мощь ActionScript, важно понимать то, как язык работает, его концепцию, элементы, правила, которые язык использует для организации информации и создания интерактивных клипов.
Назначение команд кадрам
Чтобы заставить клип делать что-либо при достижении определенного кадра, вы назначаете команды кадру. Например, для того что бы сделать цикл на линейке между 10 и 20 кадрами, необходимо в кадр 20 поместить следующую команду:
gotoAndPlay (10);
Хорошим тоном является размещение команд в отдельном слое. Кадры содержащие команды помечаются маленькой буквой "a" на линейке.

Буква "a" в кадре обозначает кадр с командами.
После того, как команды назначены, используйте Control > Test Movie для тестирования работы клипа. Большинство команд не работает в режиме редактирования.
Следующие инструкции описывают, как назначить команды кадру в Actions panel в нормальном режиме. (Подробную информацию о назначении команд кнопкам или муви-клипам смотри Добавление команд или методов.)
Для назначения команд кадру:
| 1 | Выберите кадр в линейке и выберите Window > Actions. |
| Если выбранный кадр не является ключевым, команды будут назначены предыдущему ключевому кадру. Если кадр не выбран или выбрано несколько кадров, Actions panel будет тусклой (недоступной). | |
| 2 | Выберите Normal Mode из выпадающего меню в правом верхнем углу Actions panel. |
| 3 | Чтобы назначить команды сделайте одно из следующего: |
![]() |
Дважды щелкните на команде в Toolbox list в левой половине Actions panel чтобы добавить команду в список команд в правой половине Actions panel. |
![]() |
Перетащите команду из Toolbox list в список команд. |
![]() |
Нажмите кнопку (+) и выберите команду из выпадающего меню. |
![]() |
Используйте клавиши быстрого доступа для каждой команды, список которых есть в выпадающем меню. |
![]() |
В полях параметров в нижней части панели, выберите нужные параметры для команды. |
| 4 | Для назначения дополнительных команд, выберите другой ключевой кадр и повторите шаг 3. |
Для тестирования::
Выберите Control > Test Movie.
Назначение команд объектам
Вы можете назначать команды кнопкам или муви-клипам, которые будут выполняться при нажатии пользователем на кнопку или при наведении на нее курсора мыши, или когда муви-клип загружается или достигает определенного кадра. Вы можете назначить команды экземпляру муви-клипа или кнопки и это не будет оказывать никакого влияния на другие экземпляры. (О назначении команд кадрам, смотри Назначение команд кадрам.)
При назначении команды кнопке, вы должны поместить команды внутри обработчика on(mouse event) и определить события мыши или клавиатуры, на которые кнопка будет реагировать. При назначении команды кнопке в нормальном режиме, обработчик on(mouse event) добавится автоматически.
При назначении команды муви-клипу, вы должны поместить команды внутри обработчика onClipEvent и определить событие клипа, на которые он будет реагировать. При назначении команды муви-клипу в нормальном режима, управляющий элемент onClipEvent добавится автоматически.
Следующие инструкции описывают как добавить команды к объекту, используя нормальный режим.
После того, как вы добавили команды, используйте Control > Test Movie для тестирования работы клипа. Большинство команд не работает в режиме редактирования.
Для назначения команд кнопке или муви-клипу:
| 1 | Выделите экземпляр кнопки или муви-клипу и выберите Window > Actions. | |
| Если вы выделили не кнопку, муви-клип или кадр или выбрали сразу несколько объектов, то Actions panel будет тусклой (недоступной). | ||
| 2 | Выберите Normal Mode из выпадающего меню в правом верхнем углу Actions panel. | |
| 3 | Чтобы добавить команды сделайте одно из следующего: | |
![]() |
Дважды щелкните на команде в Toolbox list в левой половине Actions panel чтобы добавить команду в список команд в правой половине Actions panel. | |
![]() |
Перетащите команду из Toolbox list в список команд. | |
![]() |
Нажмите кнопку (+) и выберите команду из выпадающего меню. | |
![]() |
Используйте клавиши быстрого доступа для каждой команды, список которых есть в выпадающем меню. ![]() | |
| Выбор команд из Toolbox list в нормальном режиме редактирования. |
||
| 4 | В полях параметров в нижней части панели, выберите нужные параметры для команды. | |
| Для разных команд нужны разные параметры. Для более детальной информации о необходимых параметрах для каждой команды, смотри Словарь ActionScript: Обзор. Для ввода пути муви-клипа в поле параметров, щелкните на кнопку Target Path в нижнем правом углу Actions panel. Для более детальной информацией, смотри Работа с муви-клипами:Обзор.. | ||
| 5 | Повторите шаги 3 и 4 для назначения дополнительных команд, если это необходимо. | |
Для тестирования:
Выберите Control > Test Movie.
Нормальный режим
В нормальном режиме вы создаете скрипт путем выбора команд из списка (Toolbox list), находящемся с левой стороны панели. Список команд содержит следующие категории: Basic Actions (Базовые команды), Actions (Команды), Operators (Операторы), Functions (Функции), Properties (Свойства) и Objects (Объекты). Категория Basic Actions содержит простейшие команды Flash, доступна только в нормальном режиме. Выбранные команды отображаются в правой части панели, в Actions list. Вы можете добавлять, удалять или изменять порядок команд, а также вводить параметры (аргументы) команд в соответствующих полях внизу панели.
В нормальном режиме вы можете использовать управляющие кнопки Actions panel для удаления или изменения порядка команд. Эти кнопки особенно полезны для управлением скриптами, которые содержать несколько команд.

Actions panel в нормальном режиме.
Для выбора команды:
| 1 | Щелкните на нужной категории, для показа команд этой категории. |
| 2 | Дважды щелкните на команде или перетащите ее в окно скриптов. |
Для использования полей параметров:
| 1 | Щелкните на кнопке параметров в нижнем правом углу панели для показа полей. |
| 2 | Выберите команду и введите новые значения в полях для изменения свойств. |
Для ввода пути муви-клипа:
| 1 | Щелкните на кнопке Target Path в нижнем правом углу панели для показа Insert Target Path (панель выбора пути). |
| 2 | Выберите муви-клип из списка. |
Для перемещения команд вверх и вниз по списку:
| 1 | Выберите команду в Actions list. |
| 2 | Щелкните по кнопке Up или Down Arrow. |
Для удаления команды:
| 1 | Выберите команду в Actions list. |
| 2 | Щелкните на кнопке удаления (-). |
Для изменения параметров используемой команды:
| 1 | Выберите команду в Actions list. |
| 2 | Введите новые параметры в поле параметров. |
Для изменения размеров Toolbox или Actions list:
![]() |
Перетяните вертикальную разделяющую полосу между Toolbox и Actions list. |
![]() |
Дважды щелкните по вертикальной разделяющей полосе для того, что бы свернуть Toolbox list, следующий двойной щелчок по полосе развернет Toolbox list. |
![]() |
Щелкните по кнопкам со стрелками влево или вправо на разделяющей полосе, чтобы свернуть или развернуть список. |
Когда Toolbox list скрыт, вы все равно можете получить доступ к его элементам, путем нажатия на кнопку добавления (+) в верхнем левом углу Actions panel.
О подсвечивании ошибок
В нормальном режиме все синтаксические ошибки подсвечиваются сплошным красным фоном в окне скриптов. Это упрощает проблему нахождения ошибок. Если вы наведете курсор мыши на команду с ошибкой, появится подсказка, которая покажет сообщение об ошибке, ассоциированное с этой командой. Когда вы выберите эту команду, сообщение об ошибке также появиться в строке состояния панели параметров.
В нормальном режиме все несовместимые команды подсвечиваются сплошным желтым фоном в окне скриптов. Например, если для экспорта клипа установлена четвертая версия Flash Player'а, то команды ActionScript, поддерживаемые только пятой версией, будут подсвечены желтым цветом. Версия экспорта устанавливается в Publish Settings.
Все устаревшие команды подсвечиваются зеленым фоном. Это происходит в случае установления пятой версия Player'а для экспорта.
Для установки версии Flash Player'а при экспорте:
| 1 | Выберите File > Publish Settings. |
| 2 | Нажмите на закладку Flash. |
| 3 | Выберите версию экспорта из выпадающего меню Version. |
Примечание: Вы можете выключить подсветку синтаксиса.
Для включения подсветки несовместимых команд:
Выберите Show Deprecated Syntax из выпадающего меню Actions panel.
Полный список всех сообщений об ошибках смотри Таблица сообщений об ошибках.
Об объекте MovieClip
Предопределенные классы ActionScript называются objects (объектами). Каждый объект дает вам возможность получить доступ к определенному типу информации. Например, объект Date имеет методы (например, getFullYear,getMonth), позволяющие получать информацию от системных часов. Объект Sound имеет методы (например, setVolume, setPan), позволяющие контролировать звук в клипе. Объект MovieClip имеет методы, позволяющие управлять экземплярами муви-клипов (например play, stop, и getURL), получать и назначать информацию об их свойствах (например _alpha, _framesloaded, _visible).
Муви-клипы - наиболее важные объекты во Flash, так как у них есть хронометрические линейки (Timeline), действующие независимо друг от друга. Например, если главная линейка содержит только один кадр, а муви-клип в этом кадре содержит десять кадров, будет воспроизведен каждый кадр этого муви-клипа. Это позволяет экземплярам существовать как автономным объектам, которые могут взаимодействовать друг с другом.
Каждый экземпляр мувиклипа имеет свое уникальное имя (instance name), по которому можно к нему обращаться. Например, вы можете иметь множество экземпляров клипа на сцене (например, leftClip и rightClip) и хотите проиграть только один из них. Для команды, запускающей воспроизведение одного определенного экземпляра, необходимо использовать его имя, как это сделано в следующем примере:
leftClip.play();
Имя клипа также позволяет дублировать, удалять и перетаскивать муви-клипы во время воспроизведения. В следующем примере дублируется муви-клип с именем cartItem для раздачи карт:
onClipEvent(load) { do { duplicateMovieClip("cartItem", "cartItem" + i, i); i = i + 1; } while (i <= numberItemsPur); }
У муви-клипов есть свойства, значения которых можно устанавливать или считывать динамически при помощи ActionScript. Изменением и чтением этих свойств можно изменить вид клипа. Например, в следующем примере скрипт использует команду setProperty, для того что бы установить прозрачность муви-клипа с именем navigationBar в значение 10:
setProperty("navigationBar", _alpha, 10);
За более детальной информацией об предопределенных типах объектов смотри Использование предопределенных объектов.
Об объектно-ориентированном программировании
В объектно-ориентированном программировании информация организуется путем ее объединения в группы, называемые classes (классы). Можно создать множество экземпляров класса, которые называются objects (объекты). Вы можете использовать встроенные классы ActionScript или создавать свои.
При создании класса, вы устанавливаете все properties (свойства, характеристики) и methods (методы, поведение) каждого созданного объекта точно также как и у каждого реального объекта. Например, человек имеет такие свойства как: пол, рост и цвет волос, такие методы как: говорить, ходить и бросать. В этом примере "человек" это класс, а каждый индивидуум - объект или instance (экземпляр) этого класса.
Объекты в ActionScript могут содержать данные или они могут быть графически представлены на сцене в качестве муви-клипов. Все муви-клипы являются экземплярами предустановленного класса MovieClip. Каждый муви-клип содержит все свойства (например _height, _rotation, _totalframes) и методы (например gotoAndPlay, loadMovie, startDrag) класса MovieClip.
Чтобы определить класс, вы должны создать специальную функцию, называемую constructor function (конструктор класса), предустановленные классы уже имеют конструкторы. Например, если вы хотите иметь информацию об велосипедисте в вашем клипе, можете создать конструктор класса Biker, со свойствами time и distance и методом rate, который сообщает как быстро движется велосипедист:
function Biker(t, d) { this.time = t; this.distance = d; } function Speed() { return this.time / this.distance; } Biker.prototype.rate = Speed;
Затем можете копировать экземпляры класса. Следующий код создает экземпляры объекта Biker, которые называются emma и hamish.
emma = new Biker(30, 5); hamish = new Biker(40, 5);
Экземпляры также могут взаимодействовать друг с другом. Для объекта Biker вы можете создать метод shove, который позволит велосипедистам толкать друг друга. (Экземпляр emma может вызвать метод shove если hamish подъедет слишком близко.) Чтобы передать информацию методу, используются параметры (аргументы): например, метод shove может иметь параметры who и howFar. В следующем примере emma толкает hamish на 10 пикселей:
emma.shove(hamish, 10);
В объектно-ориентированном программировании классы могут получать свойства и методы один от другого в определенном порядке. Этот порядок называется inheritance (наследование). Вы можете использовать наследование для расширения или переопределения свойств и методов класса. Класс, который наследуется от другого класса называется subclass (подкласс, потомок). Класс, который дает свойства и методы называется superclass (надкласс, родитель). Класс может быть одновременно и потомком и родителем.
Переключение между режимами редактирования
Изменение режима редактирования во время написания скрипта может изменить его форматирование. Поэтому лучше всего использовать один режим на каждый скрипт.
Когда вы переключаетесь из нормального режима в экспертный, сохраняются отступы и форматирование. Хотя вы можете конвертировать скрипты с ошибками из нормального режима в экспертный, вы не можете их использовать до тех пор, пока не устраните ошибки.
Переключение из экспертного режима в нормальный немного сложнее:
![]() |
Когда вы переключаетесь из нормального режима в экспертный, Flash переформатирует скрипты, удаляя все пустые места. |
![]() |
Если вы переключаетесь в нормальный режим а потом в экспертный, Flash переформатирует скрипты в соответствии с их положением в нормальном режиме. |
![]() |
Скрипты, содержащие ошибки в экспертном режиме, не могут быть экспортированы в нормальный режим. Если вы попытаетесь это сделать, то увидите сообщение об ошибке. |
Для изменения режима редактирования:
Выберите Normal Mode или Expert Mode из выпадающего меню в правом верхнем углу панели. Галочка указывает на текущий режим.
Для установки режима по умолчанию:
| 1 | Выберите Edit > Preferences. |
| 2 | Выберите General tab |
| 3 | В разделе Actions Panel, выберите Normal Mode или Expert Mode из выпадающего меню. |
Планирование и отладка скриптов
Когда вы пишите скрипты для всего клипа, может возникнуть их большое разнообразие и причудливость. Решение того, какую команду использовать, какая структура скрипта будет эффективна и где он должен находиться, требует тщательного планирования и тестирования, особенно тогда, когда растет сложность вашего клипа.
Перед тем как начать написание скрипта, сформулируйте свою цель и осознайте, чего вы хотите. Это позволит сэкономить время в вашей последующей работе над клипом. Начинайте работу с записи того, какие события должны происходить в клипе, например:
![]() |
Я хочу создать весь мой сайт используя Flash. |
![]() |
У посетителей сайта будет узнаваться их имя, чтобы использовать его в сообщениях по всему сайту. |
![]() |
Этот сайт будет иметь "таскаемую" навигационную панель с кнопками, переключающими разные разделы сайта. |
![]() |
При нажатии на кнопку, в середине сцены будет проявляться новый раздел сайта. |
![]() |
Один из разделов будет иметь контактную форму для ввода имя пользователя. |
Когда вы осознаете чего хотите, можно приступать к созданию необходимых объектов и написанию скриптов для их управления.
Чтобы заставить скрипты работать так, как вам хочется, может потребоваться некоторое время часто большее чем один цикл написания, тестирования и отладки. Лучший подход - начать с простого и тестировать свою работу как можно чаще. Когда вы завершили одну часть вашей работы, выберите Save As, чтобы сохранить версию файла (например myMove01.fla) и приступайте к написанию следующей части. Такой подход облегчит поиск возможных ошибок и даст вам навык в написании более сложных скриптов.
Подсветка и проверка синтаксиса
Система подсветки синтаксиса окрашивает определенные элементы ActionScript в разные цвета. Это помогает предотвращать синтаксические ошибки, такие как ошибки с заглавными буквами в ключевых словах. Например, если ключевое слово typeof написано как typeOf, то оно не будет подсвечено синим цветом и благодаря этому вы сможете распознать ошибку. Когда подсветка синтаксиса включена, текст подсвечивается следующим образом:
![]() |
Ключевые слова и предопределенный идентификаторы (например gotoAndStop, play и stop) подсвечиваются синим цветом. |
![]() |
Свойства подсвечиваются зеленым цветом. |
![]() |
Комментарии подсвечиваются фиолетовым цветом. |
![]() |
Строки, окруженные кавычками, подсвечиваются серым цветом. |
Для включения и выключения подсветки:
Выберите Colored Syntax из выпадающего меню в правом верхнем углу Actions panel. Маркер показывает, что эта опция включена. Все скрипты будут подсвечены.
Неплохой идеей является проверка синтаксиса скрипта на наличие ошибок перед экспортом клипа. Ошибки сообщаются в Output window. Вы можете экспортировать клипы, в которых есть ошибки. Однако будете предупреждены о том, что скрипты с ошибками при этом не будут экспортированы.
Для проверки текущего скрипта на наличие ошибок:
Выберите Check Syntax из выпадающего меню в правом верхнем углу Actions panel.
Понимание ActionScript: Обзор
ActionScript, скриптовый Flash-язык, добавляет интерактивность к клипу. Вы можете так настроить свой клип, что в зависимости от действий пользователя, таких как щелчки мышью или нажатия кнопок на клавиатуре, скрипт будет давать указания клипу, какие действия выполнять. Например, можно написать скрипт, который будет указывать Flash'у загружать разные клипы во Flash Player, в зависимости от того, какие навигационные кнопки выбрал пользователь.
Думайте об ActionScript как об инструменте, позволяющем создавать клипы, которые будут вести себя в точности так, как вам этого хочется. Вам не нужно понимать все возможности использования инструмента для того, что бы начать писать скрипты, если у вас есть ясная цель, можете начать построение скрипта с простых команд. Вы можете добавлять новые элементы языка по мере его изучения, для выполнения более трудных задач.
Эта глава - введение в ActionScript, как в объектно-ориентированный скриптовый язык и предоставит вам обзор терминов ActionScript. Здесь также разъяснены простейшие скрипты, что бы вы могли представить себе общую картину.
Эта глава также познакомит вас с Actions-панелью, в которой вы можете создавать свои скрипты, выбирая элементы ActionScript или набирая текст в окне скриптов (Script window).
Разбор простого скрипта
В этом простом клипе, при переносе мухи в ловушку, муха чернеет и падает вниз ловушки. Клип имеет продолжительность в один кадр и содержит два объекта: мувик с мухой и мувик с ловушкой. Каждый из мувиков также содержит по одному кадру.
Муха и ловушка находятся на сцене в первом кадре
В этом клипе всего один скрипт. Он назначен клипу с именем bug, см. в Object Actions panel:

Object Actions panel со скриптом, назначенным клипу bug
Так как оба объекта являются мувиками, можно назначить каждому из них уникальное имя в Instance panel и управлять ими при помощи ActionScript. Имя мувика с мухой будет bug, с ловушкой - zapper. В скрипте, к мувику с мухой обращаются как к this, так как скрипт назначен непосредственно этому клипу, а зарезервированное слово this адресует к объекту, в котором вызывается скрипт.
В скрипте находятся два обработчика onClipEvent с двумя разными событиями: load и enterFrame. Команды, в блоке onClipEvent(load) выполняются только один раз при загрузке клипа. Команды в блоке onClipEvent(enterFrame) выполняются каждый раз, когда player входит в этот кадр. Так как у нас клип состоит только из одного кадра, то эти команды повторяются постоянно. Следующие команды происходят при наступлении этих событий.
onClipEvent(load). Команда startDrag делает клип с мухой перетаскиваемым. Создается экземпляр объекта Color при помощи оператора new и конструктора Color. Этому экземпляру назначается имя zap:
onClipEvent (load) { startDrag (this, true); zap = new Color(this); }
onClipEvent(enterFrame). Условный оператор if использует команду hitTest для проверки соприкосновения клипа с мухой (this) и клипа с ловушкой (_root.zapper). Возможны два результата проверки, true или false:
onClipEvent (enterFrame) { if (this.hitTest(_root.zapper)) { zap.setRGB(0); setProperty (_target, _y, _y+50); setProperty (_root.zapper, _alpha, 50); stopDrag (); } else { setProperty (_root.zapper, _alpha, 100); } }
Если команда hitTest возвращает true, объект zap, созданный в блоке load, используется для перекрашивания мухи в черный цвет. К свойству мухи (_y) прибавляется 50, таким образом кажется, что муха упала (переместилась на 50 пикселов вниз). Прозрачность ловушки (_alpha) становиться равной 50, кажется что ловушка мигнула. Команда stopDrag отключает перетаскивание клипа с мухой.
Если команда hitTest возвращает false, выполняются команды в блоке else. При этом значение _alpha ловушки становится равным начальному значению (100), а если оно до этого было равно 50, то покажется, что ловушка мигнула. Эти действия произойдут после того, как муха будет поймана и упадет.
Терминология ActionScript
Как и любой скриптовый язык, ActionScript использует специфическую терминологию, соответствующую специфическим правилам синтаксиса. Следующий список предоставляет введение в важнейшие термины ActionScript. Эти термины и их синтаксис более детально рассматриваются в Написание скриптов на ActionScript: Обзор.
Actions (Команды) - операторы, которые дают инструкции клипу, что ему делать во время воспроизведения. Например, gotoAndStop переводит воспроизведение на определенный кадр или метку.
Arguments (Аргументы), также называются параметрами, позволяют передавать значения функциям. Например, следующая функция welcome, использует два значения, которые получает с помощью аргументов firstName и hobby:
function welcome(firstName, hobby) { welcomeText = "Hello, " + firstName + "I see you enjoy " + hobby; }
Classes (Классы) - типы данных, которые можно создавать для определения новых типов объектов. Для определения класса объектов, создаются функции-конструкторы.
Constants (Константы) - неизменяемые элементы. Например, константа TAB всегда имеет определенное значение. Константы полезны для сравнения значений.
Constructors (Конструкторы) - функции, используемые для определения свойств и методов класса. Например, следующий код создает новый класс Circle с помощью конструктора Circle:
function Circle(x, y, radius){ this.x = x; this.y = y; this.radius = radius; }
Data types (Типы данных) - набор значений и операций, могущих производиться над ними. Строки, числа, true и false (Булевые) значения, объекты и муви-клипы - типы данных ActionScript. Для более детальной информации об этих элемента языка смотри О типах данных.
Events (События) - действия, происходящие во время воспроизведения клипа. Например, различные события происходят при загрузке клипа, когда плеер воспроизводит кадр, пользователь щелкает на кнопке в муви-клипе или нажимает кнопку на клавиатуре.
Expressions (Выражения) - любые части операторов, имеющих значения. Например, 2 + 2 это выражение.
Functions (Функции) блоки многократно используемого кода, которым могут быть переданы аргументы (параметры) и которые могут вернуть значения. Например, функции getProperty передаются имя свойства и имя клипа, а возвращается значение этого свойства. Функция getVersion возвращает версию Flash Player, воспроизводящего клип.
Handlers - специальные команды, управляющие событиями, такими как mouseDown или load. Например, on (onMouseEvent) и onClipEvent - ActionScript handlers.
Identifiers (Идентификаторы) - имена, используемые для обозначения переменных, свойств, объектов, функций и методов. Первый символ должен быть буквой, знаком подчеркивания (_) или знаком доллара ($). Любой следующий символ должен быть буквой, знаком подчеркивания (_), цифрой или знаком доллара ($). Например, имя переменной firstName.
Instances (Экземпляры) - объекты, принадлежащие к определенному классу. Каждый экземпляр класса содержит все свойства и методы этого класса. Все муви-клипы - экземпляры со свойствами (например, _alpha и _visible) и методами (например, gotoAndPlay и getURL) класса MovieClip.
Instance names - уникальные имена, позволяющие указывать экземпляр муви-клип в скриптах. Например, исходный символ в Библиотеке может быть назван counter, а его два экземпляра могут иметь имена scorePlayer1 и scorePlayer2. Следующий код назначает переменной score внутри каждого экземпляра при помощи instance names:
_root.scorePlayer1.score += 1 _root.scorePlayer2.score -= 1
Keywords (Ключевые слова) - зарезервированные слова, имеющие специальное значения. Например, var - ключевое слово, используемое для объявления локальных переменных.
Methods (Методы) - функции, присущие объекту. После того, как функция определена, она может быть вызвана, как метод этого объекта. Например, в следующем коде clear становиться методом объекта controller.
function Reset(){ x_pos = 0; x_pos = 0; } controller.clear = Reset; controller.clear();
Objects (Объекты) - коллекции свойств, каждый из которых имеет свое имя и значение. Объекты обеспечивают доступ к различным типам данных. Например, предопределенный объект Date предоставляет информацию от системных часов.
Operators (Операторы) - вычисляют новые значения из одного или более значений. Например, оператор сложения (+) складывает два или более значения для получения нового значения.
Target paths (Пути) иерархические адреса имен экземпляров муви-клипов, переменных, объектов в клипе. Вы можете назвать муви-клип в его Instance panel. Главная линейка всегда имеет имя _root. Можно использовать путь для указания команды муви-клипа, для получения или назначения переменных. Например, следующий оператор - путь к переменной volume которая находится внутри муви-клипа stereoControl:
_root.stereoControl.volume
Properties (Свойства) - атрибуты, определяющие объект. Например, _visible - свойство всех клипов, которое определят видим клип или нет.
Variables (Переменные) - идентификаторы, которые содержат значение любых типов данных. Переменные могут быть созданы, изменены и обновлены. Значения, которые они содержат, могут быть запрошены для использования в скрипте. В следующем примере, идентификаторы с левой стороны являются переменными.
x = 5; name = "Lolo"; customer.address = "66 7th Street"; c = new Color(mcinstanceName);
Управление во время работы ActionScript
При написании скрипта вы используете Actions panel. Actions panel позволяет назначить скрипт кадру на главной линейке или линейке любого муви-клипа, а также любой кнопке или муви-клипу на сцене.
Flash выполняет команды в разное время, в зависимости от их местонахождения (присоединения):
![]() |
Команды назначенные кадру выполняются когда воспроизведение доходит до этого кадра. |
![]() |
Команды назначенные кнопкам, включаются в команду-обработчик on. |
![]() |
Команды назначенные муви-клипу, включаются в команду-обработчик onClipEvent. |
Команды onClipEvent и on называются обработчиками, так как они "обрабатывают" события. (События - это то что происходит на сцене, например движение мыши, нажатие кнопки на клавиатуре, загрузка мувиклипа). Команды муви-клипов и кнопок выполняются тогда, когда случаются события, описанные в обработчике. Вы можете присоединять более одного обработчика к объекту, если хотите чтобы команды выполнялись при различных событиях. Для более детальной информации смотри Главу 3 Создание интерактивности при помощи ActionScript: Обзор.

Мувиклипу на сцене назначено несколько обработчиков onClipEvent.
Выбор опций Actions panel
Actions panel позволяет работать со скриптами различными путями. Вы можете изменить размер шрифта в окне скриптов, можете импортировать текстовый файл, содержащий ActionScript в Actions panel и экспортировать команды как текстовый файл, искать и заменять фрагменты текста в скрипте, использовать подсветку синтаксиса для облегчения чтения скрипта и обнаружения ошибок. Actions panel предупреждающе подсвечивает ошибки и несовместимости с Flash Player'ом. Также подсвечиваются нерекомендованные или менее предпочтительные команды.
Эти опции Actions panel доступны как в нормальном, так и в экспертном режимах редактирования, если это специально не оговорено.
Для изменения размера шрифта в окне скриптов:
| 1 | Из выпадающего меню в правом верхнем углу панели выберите Font Size (размер шрифта). |
| 2 | Выберите Small (маленький), Normal (нормальный) или Large (большой). |
Для импорта текстового файла содержащего ActionScript:
| 1 | Из выпадающего меню в правом верхнем углу панели выберите Import from File (импорт из файла). |
| 2 | Выберите текстовый файл, содержащий ActionScript и нажмите Open. |
Примечание: Скрипты с синтаксическими ошибками можно импортировать только в экспертном режиме. В нормальном режиме вы получите сообщение об ошибке.
Для экспорта команд в текстовый файл:
| 1 | Из выпадающего меню в правом верхнем углу панели выберите Export as File (экспорт в файл). |
| 2 | Выберите место расположения файла и нажмите Save. |
Для печати команд:
| 1 | Из выпадающего меню в правом верхнем углу панели выберите Print. |
| Появится диалоговое окно печати. | |
| 2 | Выберите опции и нажмите Print. |
Примечание: Напечатанный файл не будет содержать информацию об оригинальном Flash-файле. Можно включить эту информацию в команду comment .
Для поиска текста в скрипте, выберите из выпадающего меню в правом верхнем углу панели:
![]() |
Goto Line для перехода к определенной строке скрипта. |
![]() |
Find для поиска текста. |
![]() |
Find Again для дальнейшего поиска. |
![]() |
Replace для поиска и замены текста. |
| В экспертном режиме Replace сканирует все тело скрипта. В нормальном режиме Replace ищет и заменяет только значения в полях параметров. Например, вы не сможете заменить все команды gotoAndPlay на gotoAndStop в нормальном режиме. |
Примечание: Используйте Find и Replace для поиска в текущей Actions list. Для поиска во всех скриптах клипа, используйте Movie Explorer. Для более детальной информацией смотри Flash Help.
Создание интерактивности на ActionScript
Абсолютные и относительные пути
Путь (target path) ? это указатель на интересующую вас линейку. Список (disply list) линеек во Flash очень похож на иерархию файловой структуры Web-сервера.

Movie Explorer отображает список клипов во время создания исходного FLA-файла (Authoring Mode).
Как и в примере с Web-сервером, каждая линейка во Flash может быть адресована двумя способами: с помощью абсолютного или относительного путей. Абсолютный путь каждого элемента никогда не меняется, независимо от того, какая линейка вызывает текущую команду; например, абсолютный путь к элементу california всегда _level0.westCoast.california. Относительный путь всегда зависит от того, откуда он строится; например, относительный путь к california из sanfrancisco будет _parent, но из portland, он станет _parent._parent.california.
Замечание: Для более подробной информации о Movie Explorer, см. Flash Help.
Абсолютный путь начинается с имени слоя, на который загружен клип. Его продолжение можно проследить с помощью выводимого списка (display list) вплоть до достижения указанного элемента.
Первый открываемый ролик во Flash-плейере загружается на нулевой слой (level 0). Необходимо назначать каждому дополнительно загружаемому ролику номер слоя. Указывающее имя (target name) для слоя: _levelX, где X ? номер слоя, на который загружается клип. Например, первый открываемый во Flash-плейере ролик называется _level0, ролик загруженный на третий слой ? _level3.
В следующем примере два ролика загружены в плейер: TargetPaths.swf на слой 0 и EastCoast.swf на слой 5. Слои указываются в отладчике (Debugger), слой 0 имеет обозначение _root.

Отладчик показывает абсолютные пути всех линеек в листе в режиме Test-Movie.
Элемент всегда имеет один и тот же абсолютный путь, вызывается ли он командой от элемента того же слоя или командой из другого слоя. Например, элемент bakersfield в слое 0 всегда имеет следующий абсолютный путь в дот-синтаксисе:
_level0.california.bakersfield
С помощью слэшей абсолютный путь будет выглядеть следующим образом (точки заменены на слэши):
_level0/california/bakersfield
Для взаимодействия между роликами на разных слоях нужно указывая путь, использовать имя слоя. Например, элемент portland будет адресовать элемент atlanta следующим образом:
_level5.georgia.atlanta
В точечном синтаксисе можно использовать ключевое слово _root для ссылки на главную линейку текущего уровня. Для главной линейки или _level0, обозначение _root соответствует _level0, если указывается клипом, также расположенном на _level0. Для ролика, загруженного в _level5, _root соответствует _level5 , если указывается клипом, также размещённом в слое 5. Например, команда вызываемая элементом southcarolina может использовать следующий абсолютный путь для указания элемента florida:
_root.eastCoast.florida
В слэш-синтаксисе можете использовать / для ссылки на главную линейку текущего слоя, так, как сделано в этом случае:
/eastCoast/florida
В дот-синтаксисе либо в режиме Absolute либо в Relative можно использовать те же правила формирования пути, чтобы идентифицировать переменную на линейке или свойство объекта. Например, в следующем выражении имени элемента form присваивается значение "Gilbert":
_root.form.name = "Gilbert";
В слэш-синтаксисе либо в режиме Absolute либо в Relative идентификация переменной осуществляется с помощью двоеточия (:) перед её именем:
/form:name = "Gilbert";
Относительный путь зависит от взаимосвязей между управляющей и указываемой линейками. Можете использовать относительный путь для повторного использования команд, потому что одна и та же команда может указывать на разные линейки, в зависимости от расположения команды. Относительные пути могут адресовать объекты только внутри одного определённого уровня во Flash-плейере; они не могут адресовать ролики загруженные в другие уровни. Например, нельзя использовать относительный путь в команде в слое _level0, указывающей на уровень _level5.
В дот-синтаксисе можете использовать ключевое слово this в относительном пути для адресации текущей линейки. Также можно использовать _parent для обозначения родительской линейки по отношению к текущей линейке. _parent может использоваться многократно для того, чтобы подняться на одну ступень вверх в иерархии клипов внутри одного уровня Flash-плейера. Например, _parent._parent управляет клипом, расположенным на две ступени выше в иерархической структуре.
В следующем примере каждый город (charleston, atlanta и staugustine) является дочерним по отношению к элементу "штат" и каждый штат (southcarolina, georgia и florida) ? потомок элемента eastCoast.

Movie Explorer показывает отношения клипов "родители-дети".
Команда на линейке элемента charleston может использовать следующий путь для указания элемента southcarolina:
_parent
Чтобы указать элемент eastCoast из команды в charleston, возможен следующий относительный путь:
_parent._parent
В слэш-синтаксисе для перехода на одну ступень иерархии вверх, используется две точки (..). Чтобы указать eastCoast из команды в charleston, относительный путь примет вид:
../..
Чтобы указать на элемент atlanta из команды на линейке charleston, в дот-синтаксисе относительный путь будет следующим:
_parent._parent.georgia.atlanta
Относительные пути полезны для многократного использования скриптов. Например, можете подключить к клипу скрипт, увеличивающий до 150% геометрические размеры клипа, расположенного на одну ступень выше текущего:
onClipEvent (load) { _parent._xscale = 150; _parent._yscale = 150; }
Вы можете затем многократно использовать этот скрипт, помещая его на линейку любого клипа.
Для более подробной информации об адресации и точечном синтаксисе см. Главу 2, "Написание скриптов с помощью ActionScript".
Для более подробной информации о дот-синтаксисе (Dot) и слэш-синтаксисе (Slash) см. Использование синтаксиса ActionScript.
Дублирование и удаление клипов
Можно создать или удалить элементы в виде мувиклипов во время воспроизведения вашего Flash-клип, используя duplicateMovieClip или removeMovieClip соответственно. Команда и метод duplicateMovieClip динамически создают новый элемент клипа, присваивая ему новое имя и задавая его глубину (depth) местонахождения. Скопированный таким образом клип всегда стартует с кадра 1, даже если клип-оригинал находился на другом кадре во время дублирования, и всегда расположен поверх всех определённых заранее клипов на текущей линейке. Переменные не копируются в клип-дубликат.
Чтобы удалить клип, созданный посредством duplicateMovieClip, воспользуйтесь removeMovieClip. Все копии будут также уничтожены, если удалить родительский клип.
Иерархические связи линеек
Когда вы размещаете элемент мувиклип на линейке другого клипа, возникает ситуация, в которой один клип, содержит в качестве элемента другой клип ? в том случае первый мувик будет родительским (parent), второй дочерним (child). Главная линейка Flash-клипа является родительской для всех клипов на данном слое.
Взаимосвязи клипов по схеме parent-child образуют иерархическую структуру. Для лучшего её понимания рассмотрим подобную структуру на примере компьютера: жесткий диск имеет корневую директорию (или папку) и поддиректории. Корневая директория аналогична основной Timeline Flash-клипа: она является родительской для всех последующих структур. Поддиректории соответствуют мувиклипам (movie clips). Можно использовать подкаталоги для создания связанного контента (содержимого).
Аналогично можете использовать иерархию клипов во Flash, чтобы организовать взаимосвязь визуальных объектов часто путём использования аналогов их поведения в реальном мире. Все изменения, вносимые в родительский клип, также повлияют на все его дочерние объекты.
Например, можете создать Flash-ролик в виде машины, перемещающейся по сцене. Вы можете использовать символ клипа, представляющий автомобиль, и настроить анимацию движения (motion tween) для его перемещения.

Анимация перемещает клип машины на основной линейке
Перед нами изображение автомобиля сбоку, видны лишь два колеса. Если уж вы заставили автомобиль двигаться, стоит подумать о вращении его колёс. Вы делаете клип для колеса и создаёте два элемента этого клипа, называющиеся соответственно frontWheel и backWheel. Теперь вы помещаете колёса на линейку машины ? не на главную линейку. Как потомки car, frontWheel и backWheel подвержены всем изменениям, вносимым в car. Это означает, что они будут двигаться вместе с автомобилем.

Элементы frontWheel и backWheel размещаются на линейке клипа car.
Чтобы заставить колёса вращаться, вы можете настроить анимацию на вращение символа колеса и, таким образом, заставить крутиться оба элемента (переднее и заднее колёса). Даже если вы измените frontWheel и backWheel, они будут продолжать находиться под влиянием анимации их родительского клипа car, колёса будут вращаться, а также двигаться вместе с родительским клипом car.

Символ колеса в режиме редактирования ? Edit Symbol
Иерархия линеек
Любой Flash-клип имеет основную монтажную линейку (Timeline), расположенную на уровне 0 (level 0) во Flash-плейере. Можно использовать команду loadMovie для загрузки других Flash-клипов (SWF-файлов) во Flash-плейер на любой уровень над нулевым (например, уровень 1, уровень 2, уровень 15). Любой такой загружаемый клип имеет свою линейку.
Flash-клипы на любом уровне могут содержать на своей линейке мувиклипы (movie clips). Каждый такой клип, в свою очередь, имеет свою временную шкалу и также может включать в себя другие клипы, также имеющие свою собственную линейку. Все линейки клипов и уровни во Flash-плейере образуют иерархическую структуру, что позволяет легко манипулировать ими и управлять объектами вашего клипа.

Иерархия уровней и клипов во Flash-плейере
Во Flash, такая иерархия называется display list. Этот список можно просматривать в Movie Explorer (проводник) во время создания исходного файла (FLA) во Flash. Он отображается также и в Debugger (отладчик), если вы воспроизводите клип в режиме Test Movie, в автономном Flash-плейере или в Web-браузере.

Movie Explorer показывает иерархическую структуру линеек, называемую "display list"
Линейки во Flash-ролике - это объекты, имеющие свойства (properties) и методы (methods) встроенного объекта MovieClip. Все они связаны между собой в зависимости от их местоположения в display list. На вложенные линейки влияют изменения, применяемые к родительским линейкам. Например, если объект portland является дочерним по отношению к объекту oregon и вы измените характеристику _xscale объекта oregon, portland также претерпит изменения в масштабе.
Линейки могут обмениваться данными. Например, команда в последнем кадре одного клипа может вызвать воспроизведение другого клипа.
Использование команд и методов для управления линейками
Вы можете использовать определённые команды и методы объекта MovieClip, чтобы указать (target) клип или загруженный слой, или провести необходимые действия по отношению к ним. Например, команда setProperty присваивает свойству (например, _width) линейки какое-либо значение (например, 100). Некоторые объектные методы MovieClip дублируют функцию всех команд, указывающих ту или иную линейку. Существуют также дополнительные методы, такие как hitTest и swapDepths. В случае использования вами команды или метода, адресуемая линейка должна быть загружена во Flash-плейер, когда эта команда или метод вызываются.
Следующие команды могут адресовать клипы: loadMovie, unloadMovie, setProperty, startDrag, duplicateMovieClip и removeMovieClip. Чтобы использовать эти команды, вы должны ввести путь в параметр Target используемой команды для указания объекта, к которому данная команда применяется. Некоторые из этих команд могут адресовать клипы или слои, остальные же ? только клипы.
Ниже перечисленные объектные методы MovieClip могут управлять клипами или загруженными слоями и не имеют эквивалентных команд: attachMovie, getBounds, getBytesLoaded, getBytesTotal, globalToLocal, localToGlobal, hitTest и swapDepths.
Если команда и метод имеют схожую функциональность, вы вольны выбирать любой из возможных способов для управления клипами. Выбор зависит от того, что вы предпочитаете и насколько знакомы с написанием скриптов ActionScript.
Для более подробной информации о методах объекта MovieClip и информации о каждой команде см. Главу 7 "Словарь ActionScript".
Использование нескольких методов или команд для определённой линейки
Вы можете использовать команду with для однократной адресации того или иного клипа и затем выполнять целые серии команд по отношению к этому клипу. Действие команды with распространяется на все объекты ActionScript (например, Array (массив), Color (цвет) и Sound (звук)) за исключением клипов (movie clips). Команда tellTarget похожа на команду with. Однако tellTarget не работает со всеми объектами ActionScript и несовместима с ECMA-262.
В качестве параметра команды with выступает объект. Заданный вами объект добавляется в конец пути. Все команды внутри тела команды with выполняются только по отношению указанного пути или области (scope). Например, в приведённом ниже скрипте на основной линейке команде with передаётся объект donut.hole , чтобы изменить характеристику hole:
with (donut.hole){ _alpha = 20; _xscale = 150; _yscale = 150; }
Это то же самое, как если бы выражения внутри команды with вызывались непосредственно с линейки элемента hole.
В следующем примере заметьте "экономичность" использования команды with и методов MovieClip для выполнения нескольких инструкций:
with (myMovieClip) { _x -= 10; _y += 10; gotoAndPlay(3); }
Для более подробной информации о команде tellTarget см. Flash Help.
Изменение позиции клипа и его вида
Для изменения свойств клипа во время его воспроизведения можно использовать команду setProperty или написать выражение, присваивающее какое-либо значение требуемому свойству. Если вы загружаете клип в объект (target), загруженный клип наследует свойства указываемого клипа. Как только ролик загружен, вы можете изменить его свойства.
Некоторые свойства, называемые read-only (только чтение), имеют значения, которые можно только считывать, но не устанавливать. Вы можете задавать любые свойства, не входящие в эту группу. Следующее выражение управляет свойством _alpha символа wheel, являющегося потомком элемента car:
car.wheel._alpha = 50;
Кроме этого, можно записывать выражения, получающие значение того или иного свойства. Например, следующая строка получает значение свойства _xmouse на главной линейке и присваивает это значение свойству _x элемента customCursor:
onClipEvent(enterFrame){ customCursor._x = _root._xmouse; }
Можете также использовать функцию getProperty для получения свойств клипов.
Свойства _x, _y, _rotation, _xscale, _yscale, _height, _width, _alpha и _visible изменяются вместе с преобразованиями родительского клипа, также трансформируют клип и любой его дочерний клип. Свойства _focusrect, _highquality, _quality и _soundbuftime являются глобальными, они принадлежат только линейке в слое 0. Все остальные принадлежат каждому клипу или загруженному слою. Таблица, приведённая ниже, содержит все свойства клипа:
_alpha
Методы или команды?
Метод вводится следующим образом. Сначала указывается путь к элементу (его имя), затем после точки применяемый метод и его аргументы:
myMovieClip.play();
parentClip.childClip.gotoAndPlay(3);
В первой строке метод play включает воспроизведение элемента myMovieClip. Во второй строке метод gotoAndPlay переносит "воспроизводящую головку" элемента childClip (дочерний по отношению к элементу parentClip) в третий кадр и продолжает воспроизведение с этого места.
Команды, управляющие линейкой, имеют параметр Target, в котором указывается путь. Например, в следующем скрипте команда startDrag указывает на элемент customCursor и делает возможным его перемещение (draggable):
on(press){ startDrag("customCursor"); }
Если вы используете метод, он вызывается после указания пути к элементу. Например, следующее выражение реализует эту же возможность (startDrag) :
customCursor.startDrag();
Выражения, записанные с помощью методов MovieClip обычно более краткие, потому что не требуют команды tellTarget. Не рекомендуется использовать команду tellTarget по причине её несовместимости со стандартом ECMA-262.
Например, для того чтобы начать воспроизведение клипа myMovieClip посредством объектных методов MovieClip, вы используете следующий код:
myMovieClip.play();
Приведённый ниже код проделывает ту же операцию с помощью команды tellTarget:
tellTarget ("myMovieClip") {
play();
}
Настройка параметров
Вы можете вызывать в смарт-клипе команды, которые используют заданные параметры, чтобы изменить поведение смарт-клипа. Вот простой пример: если вы определили параметр клипа с именем Frame, то можете написать следующий скрипт для смарт-клипа, использующий параметр Frame:
onClipEvent(load){ gotoAndStop(Frame); }
Затем вы можете установить значение параметра Frame в панели Clip Parameters, чтобы изменить воспроизводимый кадр.

Установка параметров смарт-клипа:
| 1 | Выберите элемент смарт-клипа на сцене. |
| Смарт-клипы ? это мувиклипы. Таким образом, только первый кадр будет отображён в момент создания исходника. | |
| 2 | Выберите Window > Panels > Clip Parameters, чтобы появилась панель Clip Parameters. |
| 3 | В этой панели сделайте одно из следующих действий: |
![]() |
Двойной щелчок мыши на поле Value для выбора и введения значений для каждого параметра. |
| Если параметр был определён как List, появиться выпадающее меню. | |
![]() |
Если был определён настраиваемый интерфейс, используйте его предусмотренные элементы. |
| 4 | Выберите Control > Test Movie, чтобы увидеть изменение в поведении смарт-клипа. |
Обмен сообщениями между линейками
Вы можете посылать сообщения между линейками. При этом одна линейка содержит команду (action), называемую controller (диспетчер), а вторая ? команду, называемую target (цель). Вы можете назначить эту команду какому-либо кадру или кнопке на линейке, а если линейка является мувиклипом (movie clip), то непосредственно ему.
Для того чтобы указать определённую линейку, вы можете использовать команды из категории Actions или методы объекта MovieClip из категории Objects в панели Actions. Например, вы можете использовать команду duplicateMovieClip для указания и копирования мувиклипа в качестве элемента во время воспроизведения вашего ролика.

Для указания линейки используйте команды из категории Actions.

Для указания линейки используйте методы объекта MovieClip.
Для выполнения нескольких команд по отношению к выбранному объекту можете использовать команду with. Подобно состоянию with в JavaScript, команда with позволяет при однократной ссылке на определённую линейку, применить к ней несколько команд, при этом нет необходимости указывать каждый раз (в каждой команде) интересующую вас линейку.
Также можете использовать команду tellTarget для достижения этой цели.
Для того чтобы осуществить взаимодействие между линейками, сделайте следующее:
![]() |
Введите имя элемента для клипа, который вы хотите указать. |
| Чтобы присвоить имя клипу-элементу, используйте панель Instance (Window > Panels > Instance). Линейка, загруженная на соответствующий уровень, использует номер этого уровня в качестве имени элемента, например, _level6. | |
![]() |
Введите путь (target path) к выбранному элементу в панели Actions. |
| Вы можете сделать это вручную или использовать диалоговое окно Insert Target Path. См. Определение пути. |
Примечание: Во время воспроизведения клипа линейка должна быть доступна (находиться на сцене), для того чтобы на неё можно было указать.
Обнаружение пересечений
Можно использовать hitTest метод объекта MovieClip для обнаружение пересечений в клипе. Метод hitTest определяет пересекается ли объект с другим муви-клипом и возвращает булеановское (Boolean) значение true или false. Можно использовать параметры метода hitTest для определения x и y hit-координат (области нажатия) или использовать target path (путь до цели - прямее ничего не придумалось) другого муви-клипа как hit-область.
Каждый муви-клип во флеш-клипе есть копия (instance - образец) объекта MovieClip. Это позволяет вызывать методы объекта из любого мувика, как указано ниже:
myMovieClip.hitTest(target);
Возможно использование метода hitTest для проверки пересечения муви-клипа с отдельной точкой.
Подвигайте мышом по поверхности клипа. Результат работы hitTest смотрите в текстовом поле.
Также можно использовать метод hitTest для проверки пересечения двух мувиков.
Потаскайте сферу, результат работы hitTest см. в текстовом поле.
Проверка на пересечение муви-клипа и отдельной точки:
| 1 | Выделить мувик на рабочем поле. |
| 2 | Выбрать Window > Actions для открытия панели команд. |
| 3 | Дважды щелкнуть на команде trace расположенной в категории Actions списка команд. |
| 4 | Поставить галочку в Expression check box и ввести следующее выражение в строку Expression (Выражение): |
| trace (this.hitTest(_root._xmouse, _root._ymouse, true); | |
| Этот пример использует _xmouse и _ymouse свойства как x и y координаты hit-области и в режиме теста клипа отсылает полученный результат в окно Output. Можно положить в клип текстовое поле и отображать результаты в нем или анализировать их при помощи if оператора. | |
| 5 | Выбрать Control > Test Movie и подвигать мышом по клипу, чтобы увидеть результат теста. |
Проверка на пересечение двух муви-клипов:
| 1 | Расположить два мувика на рабочем поле и присвоить им имена mcHitArea и mcDrag. |
| 2 | Создать текстовое поле и в строке Variable (переменная) панели Text Options, присвоить ему имя status. |
| 3 | Выделить mcHitArea и выбрать Window > Actions. |
| 4 | Дважды щелкнуть на команде evaluate в списке команд. |
| 5 | Ввести следующий код в строку Expression (выражение), выбирая нужные составляющие из верхнего списка: 1 |
| _root.status=this.hitTest(_root.mcDrag); | |
| 6 | Выбрать команду onClipEvent и задать ей enterFrame как событие. |
| 7 | Выделить mcDrag и выбрать Window > Actions. |
| 8 | Дважды щелкнуть startDrag в списке команд. |
| 9 | Включить опцию Lock Mouse to Center. |
| 10 | Выбрать команду onClipEvent и задать ей событие Mouse down. |
| 11 | Дважды щелкнуть stopDrag в списке команд. |
| 12 | Выбрать onClipEvent и задать ей событие Mouse up. |
| 13 | Запустить в режиме теста Control > Test Movie и подвигать мышом, чтобы посмотреть на результат. |
Для получения большей информации о методе hitTest, см. соответствующий подраздел ActionScript Словаря.
Oт переводчика:
- Можно просто напечатать эту строку на клавиатуре, еще лучше скопировать с этой страницы и вставить через буфер обмена :)
Совет: если вставлять через буфер, то не следует копировать закрывающие выражение точку с запятой (";"). Скриптовый флеш-редактор вставляет их автоматом.
Определение параметров клипа
Параметры клипа ? это часть данных, передаваемых клипу, когда он загружается в ролик. Можно определить параметры клипа в режиме создания исходника. Можно использовать эти параметры в командах, чтобы изменить вид и поведение смарт-клипа во время воспроизведения. Специальный значок в окне библиотеки отображает клипы с заданными параметрами.

Определение параметров для клипа:
| 1 | Выберите символ клипа в вашей библиотеке клипов и сделайте одно из следующих действий для появления окна диалога Clip Parameters: | |
![]() |
Щелчок по правой кнопке мыши (Windows) или Control-click (Macintosh), затем выберите Define Clip Parameters из контекстного меню. | |
![]() |
Выберите Define Clip Parameters из меню Options справа вверху окна Library. ![]() | |
| 2 | Используйте управление в диалоговом окне Clip Parameters следующим образом: | |
![]() |
Нажмите кнопку Плюс (+), чтобы добавить новую пару имя/значение или дополнительные параметры для выбранной пары. | |
![]() |
Нажмите кнопку Минус (-), чтобы удалить пару имя/значение. | |
![]() |
Используйте кнопки со стрелками для изменения порядка следования параметров в списке. | |
![]() |
Выберите поле с помощью двойного щелчка мыши на нём и введите затем значение. | |
| 3 | В качестве Name (имя) введите уникальный идентификатор для параметра. | |
| 4 | В качестве Type (тип) выберите из выпадающего меню тип данных, которые будет содержать параметр: | |
![]() |
Выберите Default (по умолчанию), чтобы использовать строковую или численную величину. | |
![]() |
Выберите Array (массив) для динамического списка элементов, которые могут возрастать или уменьшаться. | |
![]() |
Выберите Object (объект), чтобы декларировать несколько связанных элементов с именами и значениями, например, объект Point с элементами x и y. | |
![]() |
Выберите List (список), чтобы ограничить выбор несколькими возможными вариантами, например, true или false, Красный, Серый или Синий. | |
| 5 | В качестве Value (значение) выберите из выпадающего меню значение параметра по умолчанию. | |
| 6 | Если вы хотите использовать настраиваемый интерфейс для панели Clip Parameters, сделайте одно из следующих действий: | |
![]() |
Введите относительный путь к SWF-файлу настраиваемого интерфейса в поле Custom UI. | |
![]() |
Нажмите на папку Custom UI и выберите SWF-файл интерфейса. | |
| См. Создание настраиваемого интерфейса. | ||
| 7 | В качестве описания (Description) введите примечания, которые будут появляться в панели Clip Parameters и описывать назначение параметра. | |
| Вы можете включить любую информацию, которую считаете нужной, в поле Description. Например, объяснение используемых методов. | ||
| 8 | Выберите Lock in Instance (закрыть символ) во избежание переименования параметров пользователем в панели Clip Parametersl. | |
| Рекомендуется оставлять имена параметров закрытыми. | ||
| 9 | Нажмите OK. | |
Определение позиции мыши
Можно использовать _xmouse и _ymouse свойства для определения местонахождения позиции курсора в клипе. Каждая монтажная линейка (Timeline) имеет _xmouse и _ymouse свойство, возвращающее значение позиции мыши в собственной системе координат.
См. _xmouse и _ymouse свойства в основной линейке (Timeline) и линейке муви-клипа, перемещая курсор по клипу.
Следующее выражение можно поместить в любую линейку (Timeline) в _level0 клипа для получения _xmouse позиции в основной линейке:
x_pos = _root._xmouse;
Для определения позиции курсора внутри муви-клипа, используется его имя (instance name). Например, следующее выражение может быть помещено в любое место _level0 клипа для получения _ymouse позиции в муве-клипе myMovieClip:
y_pos = _root.myMovieClip._ymouse
Можно также определять позицию мыши внутри муви-клипа, используя _xmouse и _ymouse свойства в команде клипа, как это сделано ниже:
onClipEvent(enterFrame){ xmousePosition = _xmouse; ymousePosition = _ymouse; }
Переменные x_pos и y_pos используются в качестве контейнеров для сохранения значения позиций мыши. Вы могли бы использовать эти переменные в любом скрипте вашего клипа. В следующем примере значения x_pos и y_pos обновляются каждый раз при перемещении мыши.
onClipEvent(mouseMove){ x_pos = _root._xmouse; y_pos = _root._ymouse; }
Для большей информации о _xmouse и _ymouse свойствах, см. соответствующие подразделы ActionScript Словаря.
Определение пути
Чтобы управлять клипом или подгруженным роликом, необходимо задать путь к нему. При этом клип, как элемент, должен иметь имя. Указать на объект и задать к ему путь можно несколькими способами:
![]() |
Путь можно ввести посредством кнопки Insert Target Path и окна диалога в панели Actions. |
![]() |
Путь можно указать вручную непосредственно в вашем скрипте. |
![]() |
Ещё одной возможностью является создание определённого выражения, используя ссылку на клип или предопределённые функции targetPath и eval. |
Использование окна диалога Insert Target Path:
| 1 | Выберите клип, кадр или кнопку, к которым хотите привязать действие или команду. | |
| 2 | Выберите Window > Actions для отображения панели Actions. | |
| 3 | В списке доступных возможностей выберите команду из раздела Actions или метод из категории MovieClip в разделе Objects. | |
| 4 | Введите путь в поле Target или Location данного скрипта. | |
| 5 | Нажмите на кнопку Insert Target Path (в виде перекрестья) в правом нижнем углу панели Actions, откроется окно диалога Insert Target Path. ![]() | |
| 6 | В окне диалога Insert Target Path выберите режим синтаксиса: Dots (точки, по умолчанию) или Slashes (слэши). ![]() | |
| 7 | Выберите Absolute (абсолютный) или Relative (относительный) способ задания пути. | |
| См. Абсолютные и относительные пути. | ||
| 8 | Задайте требуемый путь одним из следующих способов: | |
![]() |
Выберите клип в списке Insert Target Path. | |
![]() |
Введите путь вручную в поле Target, используя абсолютный или относительный способы его указания и дот-синтаксис. | |
| 9 | Завершите операцию нажатием кнопки OK. | |
Ввод пути вручную:
Выполните п.п. 1-4, описанные выше и введите абсолютный или относительный путь непосредственно в панели Actions.
Использование выражения в качестве пути:
| 1 | Выполните п.п. 1-4, описанные выше. |
| 2 | Выполните одно из следующих действий: |
![]() |
Введите вручную ссылку в качестве пути. Ссылка обрабатывается для определения необходимого пути. Вы можете использовать ссылку в качестве параметра для команды with. В примере ниже переменная index обрабатывается и умножается на 2. Полученный результат используется как имя клипа внутри элемента Block, вызванного для воспроизведения: |
| with (Board.Block[index*2]) { play(); } | |
![]() |
В разделе Functions в списке доступных инструментов, выберите функцию targetPath. |
| Функция targetPath преобразует ссылку на клип в строку, которая может использоваться такими командами, как tellTarget. | |
| Ниже приведён пример, в котором функция targetPath преобразует ссылку Board.Block[index*2+1] в строку: | |
| tellTarget (targetPath (Board.Block[index*2+1])) { play(); } | |
| Предыдущий пример эквивалентен следующему с использованием слэш-синтаксиса: | |
| tellTarget ("Board/Block:" + index*2+1)) { play(); } |
|
![]() |
В разделе Functions выберите функцию eval. |
| Функция eval преобразует строку в ссылку на клип, которая может быть использована в качестве пути такими командами, как with. | |
| Следующий скрипт обрабатывает переменную i, добавляет её к строке "cat" и присваивает полученное значение переменной x. В этом случае x ? ссылка на клип-элемент, которая может вызвать объектные MovieClip: | |
| x = eval ("cat" + i); x.play(); | |
| Вы также можете использовать функцию eval для непосредственного вызова методов, как здесь: | |
| eval ("cat" + i).play();. | |
Перехват нажатий клавиш
Можно использовать методы предопределенного объекта Key для определения последней клавиши, которая была нажата пользователем. Чтобы использовать его методы, просто вызывайте объект, как сделано в следующем примере:
Key.getCode();
Можно получать любые десятичные (Dec) 1 коды или ASCII-значения нажатых клавиш:
![]() |
Для получения Dec-кода последней нажатой клавиши, используется getCode метод. |
![]() |
Для получения ASCII-значения последней нажатой клавиши, используется getAscii метод. |
Dec-код имеется у каждой физической клавиши на клавиатуре. Например, клавиша стрелки "влево" имеет Dec# 37. Используя Dec-код, можно гарантировать, что средства управления клипа будут одинаковыми на любой клавиатуре, независимо от языка или платформы.
ASCII (American Standard Code for Information Interchange) значения связаны с первыми 127 символами каждой кодовой таблицы. Они обеспечивают информацию о символе на экране. Например, символ "A" и символ "a" имеют различные значения ASCII.
Общее место для использования Key.getCode в параметрах onClipEvent. При прохождении через keyDown как параметр, скрипт получает команду проверить значение последней нажатой клавиши (фактически, нажатой в данный момент). В этом примере использовано Key.getCode для управления перемещением НЛО. Нажимайте на курсорные клавиши для передвижения НЛО внутри клипа.
Для создания управления клипом с клавиатуры:
| 1 | Решите какие клавиши использовать и определите их Dec-коды, используя один из следующих подходов: |
![]() |
См. список клавишных кодов на Клавиши клавиатуры и их кодовые значения: Краткий обзор. |
![]() |
Используйте константу объекта Key. (В списке инструментов, выбрать Objects (объекты), затем выбрать Key (клавиша). Константы перечислены заглавными буквами.) |
![]() |
Назначить следующее команды, затем выбрать Control > Test Movie и нажать нужную клавишу: |
| onClipEvent(keyDown) { trace(Key.getCode()); } | |
| 2 | Выделить муви-клип на рабочем поле. |
| 3 | Выбрать Window > Actions. |
| 4 | Дважды щелкнуть на onClipEvent команде в Actions категории списка. |
| 5 | В окне параметров выбрать Key down событие. |
| 6 | Дважды щелкнуть на if команде в Actions категории списка. |
| 7 | Щелкнуть внизу окна в строке ввода условия (Condition), выбрать Objects; затем выбрать Key и getCode. |
| 8 | Дважды щелкнуть на операторе эквивалентности (==) в категории Operators (Операторы) списка. |
| 9 | Справа от оператора эквивалентности ввести Dec-код клавиши. |
| Ваш код будет выглядеть следующим образом: | |
| onClipEvent(keyDown) { if (Key.getCode() == 32) { } } | |
| 10 | Выбрать действие, которое будет выполняться, если нажата нужная клавиша. |
| Например, следующая команда при нажатии на клавишу пробела (Dec# 32), заставит сделать переход на следующий кадр основной линейки (Timeline): | |
| onClipEvent(keyDown) { if (Key.getCode() == 32) { nextFrame(); } } | |
Для получения большей информации о методах объекта Key, см. соответствующий подраздел ActionScript Словаря.
Oт переводчика:
- Почему-то в родном доке Макромедия называет эти коды виртуальными, я заменил на более привычные десятичные (Decimal или Dec), чем они по сути и являются
- В исходном доке не оказалось примера, пришлось сделать свой :)
- Программирование
- Технологии программирования
- Разработка программ
- Работа с данными
- Методы программирования
- IDE интерфейс
- Графический интерфейс
- Программирование интерфейсов
- Отладка программ
- Тестирование программ
- Программирование на Delphi
- Программирование в ActionScript
- Assembler
- Basic
- Pascal
- Perl
- VBA
- VRML
- XML
- Ada
- Lisp
- Python
- UML
- Форт
- Языки программирования
Перемещение клипов
Можно использовать команду или метод startDrag для того, чтобы сделать клип перемещаемым во время воспроизведения. Например, использовать этот эффект для игр, функции drag-and-drop, настраиваемых интерфейсов, полос прокрутки и движков (sliders).
Клип остаётся перемещаемым до тех пор, пока не будет остановлен командой stopDrag или другой клип не будет указан с помощью startDrag. Только один клип может быть перемещаемым в любой момент времени.
Для создания более сложных механизмов drag-and-drop можно обрабатывать у перемещаемого клипа свойство _droptarget. Например, необходимо проверить свойство _droptarget для того, чтобы убедится, что ролик был перемещён в какой-либо другой клип (например, клип "мусорная корзина"), и затем инициировать другую команду. См. Использование оператора "if" и Использование операторов для манипулирования величинами в выражениях.
Присоединение мувиклипа
Можно взять копию мувиклипа из библиотеки и воспроизвести её в качестве части вашего клипа, используя метод attachMovie. Этот метод присоединяет (загружает) мувиклип из библиотеки к вашему и позволяет управлять им в дальнейшем по мере необходимости.
Для использования метода attachMovie присоединяемому клипу следует дать уникальное имя в окне диалога Symbol Linkage Properties.
Идентификация мувиклипа при присоединении:
| 1 | Выберите клип, который хотите присоединить, в соответствующем разделе библиотеки (movie's Library). |
| 2 | В окне библиотеки выберите Linkage (связь) из меню Options. |
| 3 | Далее в появившемся окне установите Linkage в положение Export This Symbol (экспорт символа). |
| 4 | В окне диалога Symbol Linkage Properties в поле Identifier (идентификатор) введите имя клипа. Оно должно отличаться от имени символа в библиотеке. (IMHO не обязательно, может и совпадать, криминала в этом никакого нет - Прим.редактора) |
| 5 | Нажмите OK. |
Присоединение мувиклипа к другому клипу:
| 1 | В панели Actions задайте объект, к которому вы хотите присоединить клип. |
| 2 | В списке доступных возможностей выберите объект MovieClip и затем метод attachMovie. |
| 3 | Установите следующие аргументы: |
![]() |
В качестве idName укажите имя, введенное вами в поле Identifier диалогового окна Symbol Linkage Properties. |
![]() |
В качестве newName введите новое имя элемента для присоединяемого клипа; таким образом, вы сможете ссылаться на него в дальнейшем. |
![]() |
В качестве depth, введите номер слоя, на котором клип-дубликат будет подключаться к ролику. Каждый такой клип имеет свой порядковый номер загрузки в стек, начиная со слоя 0 как слоя с текущей линейкой. Присоединённые клипы всегда находятся поверх основного. |
| Например: | |
| myMovieClip.attachMovie("calif", "california", 10 ); | |
Привязка команд и методов
Команды и методы могут назначаться кнопке, кадру или клипу.
Чтобы привязать команду или метод к элементу мувиклип, необходимо использовать обработчик событий onClipEvent. Все команды, применённые к элементу, находятся внутри onClipEvent и выполняются после того, как он инициируется (срабатывает). Команда onClipEvent может быть инициирована событием линейки (например, загрузка ролика) либо событиями со стороны пользователя (например, щелчок мыши или нажатие клавиши). Например, onClipEvent(mouseMove) инициирует команду каждый раз при движении мыши.

Команда onClipEvent назначается элементу на сцене. Её события перечислены в ее вспомогательном окне параметров Event панели Actions.
Работа с мувиклипами. Краткий обзор
Мувиклип - это миниатюрный Flash-фильм: он имеет свои собственные свойства и временную шкалу (Timeline), помещённый в библиотеку (Library) в качестве символа, может многократно использоваться во Flash-клипе, каждая такая вставка называется элементом клипа. Мувиклипы могут вкладываться друг в друга. Чтобы различать такие элементы между собой, вы можете дать каждому своё имя.
Любой объект может быть помещён на временную линейку мувиклипа, включая другие клипы. Ролики, загруженные во Flash-плейер с помощью loadMovie также представляют собой миниатюрные Flash-клипы. Все мувиклипы, загружаемые ролики и основная временная линейка являются объектами Flash-клипа, их свойства и методы могут меняться посредством ActionScript для создания сложной нелинейной анимации и обеспечения мощных интерактивных возможностей.
Вы можете контролировать поведение мувиклипов, используя соответствующие команды (actions) и объектные методы MovieClip. Команды и методы могут относиться к каким-либо кадрам или кнопкам клипа (frame and button actions) или к определённым клипам-элементам (clip actions). Команды в клипе могут управлять любой временной линейкой во всём фильме. Чтобы реализовать эту возможность, следует указать соответствующий путь (target path). Он отражает местоположение интересующей Timeline в ролике.
Вы также можете превратить мувиклип в модуль со встроенным "интеллектом" ("smart" clip). Смарт-клип ? мувиклип с ActionScript, который может быть перепрограммирован без использования панели Actions. Такие мувиклипы упрощают передачу объектов со сложной логикой на основе ActionScript от программиста дизайнеру.
Создание интерактивности на ActionScript: Краткий обзор
Интерактивный клип создает ощущение причастности к действию у вашей аудитории. Используя клавиатуру и мышь ваши клиенты могут переходить к различным частям клипа, перемещать объекты, вводить информацию, нажимать кнопки и выполнять много других интерактивных действий.
Интерактивные клипы создаются путем написания скриптов, которые выполняются, когда происходят определенные события. События, которые могут запускать скрипт, происходят в тот момент, когда клип достигает определенного кадра, когда муви-клип загружаться или выгружается, когда пользователь нажимает на кнопку или клавишу на клавиатуре и т.п. Команды ActionScript, используемые для создания скриптов, сообщают флеш-плееру, что делать, когда данное событие происходит.
Вот следующие основные действия, позволяющие управлять навигацией и взаимодействием пользователя с клипом:
![]() |
Запускать и останавливать клип |
![]() |
Изменять качество вывода клипа на экран |
![]() |
Отключать все звуки |
![]() |
Переходить на другой кадр или сцену |
![]() |
Переходить на другой URL |
![]() |
Проверять загружен ли какой-то кадр |
![]() |
Подгружать и выгружать дополнительные клипы |
Для более детализированной информации об этих действиях, см. Flash Help.
Чтобы создавать более сложное взаимодействие, необходимо освоить следующие приемы:
![]() |
Создание собственного курсора |
![]() |
Определение позиции мыши |
![]() |
Перехват нажатий клавиш |
![]() |
Создание текстового поля со скроллингом |
![]() |
Установка значений цвета муви-клипа |
![]() |
Создание средств управления звуком |
![]() |
Обнаружение пересечений |
Создание настраиваемого интерфейса
Настраиваемый интерфейс ? это Flash-клип, позволяющий вам вводить значения, которые будут передаваться смарт-клипу. Такой интерфейс заменяет панель Clip Parameters.

Панель Clip Parameters с роликом настраиваемого интерфейса.

Тот же смарт-клип без настраиваемого интерфейса в панели Clip Parameters
Любые величины, вводимые вами с использованием настраиваемого интерфейса, передаются из панели Clip Parameters смарт-клипу через клип-посредник в таком интерфейсе. Позволяющий совершить такой обмен клип должен иметь имя элемента xch. Если настраиваемый интерфейс выбран в диалоговом окне Define Clip Parameters, элемент смарт-клипа передаёт заданные параметры клипу xch и любые новые величины, введённые с помощью такого интерфейса, копируются в xch и передаются обратно смарт-клипу.
Вам следует разместить клип xch на главной линейке ролика интерфейса и xch должен быт всегда загружен. Клип xch должен содержать только те значения, которые необходимо передать смарт-клипу. Он не может содержать графики, других клипов или выражений ActionScript, xch ? это просто контейнер, через который передаются значения. Через клип xch вы можете предавать объекты верхнего уровня, например, Arrays (массивы) и Objects (объекты), но не вложенные массивы или объекты.
Создание настраиваемого интерфейса для смарт-клипа:
| 1 | Выберите File > New, чтобы создать новый Flash-ролик. |
| 2 | Выберите Insert > New Symbol, чтобы создать клип для обмена данными. |
| 3 | Создайте новый слой и назовите его "Exchange Clip" (клип для обмена данными). |
| 4 | Выберите слой с "Exchange Clip" и переместите сам клип-посредник из окна библиотеки на сцену в кадр 1. |
| 5 | Выберите этот клип на сцене, затем Window > Panels > Instance и введите имя xch. |
| 6 | Создайте элементы интерфейса, которые будет использовать автор для настройки параметров. Например, выпадающее меню, кнопки выбора (radio buttons) или перемещаемые меню. |
| 7 | Используйте команду set variable, чтобы копировать переменные и объектные значения в элемент xch. |
| Например, если кнопка используется в качестве элемента интерфейса, она может вызывать команду, которая устанавливает значение переменной vertical и передаёт его в xch: | |
| on (release){ _root.xch.vertical = true; } | |
| 8 | Экспорт ролика в SWF-файл. |
Чтобы использовать настраиваемый интерфейс SWF со смарт-клипом, вам необходимо связать их в диалоговом окне Define Clip Parameters библиотеки, которая содержит смарт-клип. Отличная идея сохранять SWF-файл в той же директории, что и FLA, содержащий смарт-клип. Если вы многократно используете смарт-клип в другом файле или передаёте смарт-клип другому разработчику, он и настраиваемый интерфейс SWF должны оставаться в таком же относительном друг-друга расположении.
Создание скроллинга в текстовом поле
Возможно использование scroll и maxscroll свойств для перемещения (скроллинга) текста в текстовом поле (ТП).
На панели Text Options (опции текста), можно назначать переменную любому текстовому полю и установить режим Вводимый или Динамический Текст. ТП действует как окно, в котором отображается значение этой переменной.
Каждая переменная, связанная с ТП, имеет свойства scroll и maxscroll. Можно использовать эти свойства для скроллинга текста в ТП. Свойство scroll возвращает номер наивысшей видимой в настоящий момент строки ТП, допускается как установка, так и считывание текущего значения свойства. Свойство maxscroll возвращает номер наивысшей видимой строки ТП, когда самая нижняя строка станет видимой. Значение этого свойства можно только считывать, но не задавать.
Допустим имеется текстовое поле, содержащее четыре строки. Оно имеет переменную speech, содержащую девять строк текста, поэтому только часть переменной speech может быть показана одновременно (условно она обозначена прямоугольником):

Вы можете обращаться к этим свойствам, используя dot (точечный) синтаксис:
textFieldVariable.scroll myMovieClip.textFieldVariable.scroll textFieldVariable.maxscroll myMovieClip.textFieldVariable.maxscroll
Для создания скроллинга в текстовом поле:
| 1 | Создать ТП на рабочем поле. | |
| 2 | Выбрать Window > Panels > Text Options. | |
| 3 | Выбрать Input Text из всплывающего меню. | |
| 4 | Ввести имя переменной text в поле Variable (переменная). | |
| 5 | Чтобы изменить размеры ТП, взять его нижнюю часть за правый угол и перетащить на новое место. ![]() | |
| 6 | Выбрать Window > Actions. | |
| 7 | Выделить первый кадр на основной линейке (Timeline) и назначить команду set variable, которая установит значение переменной text. | |
Никакой текст не появится в поле, пока не будет задано значение переменной. Поэтому, хотя Вы можете назначать эту команду любому кадру, кнопке или муви-клипу, это хорошая идея дать команду первому кадру на главной линейке, как показано здесь: ![]() | ||
| 8 | Выбрать Window > Common Libraries > Buttons и перетащить кнопку на рабочее поле. | |
| 9 | Нажать Alt (Windows) или Option (Macintosh) и протащить эту кнопку, чтобы сделать ее копию. | |
| 10 | Выделить верхнюю кнопку и выбрать Window > Actions. | |
| 11 | Перетащить команду set variables из списка команд в окно скрипта на панели команд (Actions panel). | |
| 12 | Ввести text.scroll в строку Variable (переменная). | |
| 13 | Ввести text.scroll -1 в строку Value (значение) и включить Expression check box. | |
| 14 | Выделить нижнюю кнопку и назначить следующую команду set variables: | |
| text.scroll = text.scroll+1; | ||
| 15 | Выбрать Control > Test Movie для тестирования полученного результата. | |
Для большей информации о scroll и maxscroll свойствах, см. соответствующие подразделы ActionScript Словаря.
Создание смарт-клипов
"Смарт" (умным) клипом называется клип с определёнными параметрами, которые могут быть изменены. Такие параметры затем передаются командам смарт-клипа, что влечёт изменение его поведения (работы).
Чтобы создать такой клип, вам следует назначить параметры символу клипа в библиотеке. Можно использовать ActionScript в смарт-клипах, обрабатывающий параметры клипа, что похоже на то, когда вы используете аргументы при определении функции. Вы можете выбрать элемент в виде смарт-клипа на сцене и изменить значение параметров в панели Clip Parameters. Во время воспроизведения величины, установленные там, посылаются смарт-клипу до выполнения каких либо команд, присутствующих в ролике.
Смарт-клипы очень полезны для передачи сложных Flash-элементов от программиста дизайнеру. Программист может писать команды в таком клипе с переменными, управляющими клипом и роликом. Дизайнер может затем изменять значения этих переменных в панели Clip Parameters без открытия панели Actions.
Вы можете использовать смарт-клипы для создания элементов интерфейса, таких как кнопок выбора (radio buttons), выпадающих меню (pop-up menus), tooltips, surveys, игр и avatars. Любой клип, который вы хотите использовать повторно, но найти ему другое применение без изменения скриптов, будет хорошим смарт-клипом.
Кроме этого, вы можете создать настраиваемый интерфейс во Flash для панели Clip Parameters, чтобы облегчить труд дизайнера-разработчика, окончательно модифицирующего клип.
Создание собственного курсора
Чтобы скрыть стандартный курсор (указатель мыши), используется hide метод предопределенного объекта Mouse. Для использования муви-клипа как собственного курсора, применяется команда startDrag.
Чтобы видеть анимированную демонстрацию такого курсора подвигайте мышь в клипе.
Создание собственного курсора:
| 1 | Создать муви-клип для использования его в качестве собственного курсора. |
| 2 | Выделить его на рабочем поле. |
| 3 | Выбрать Window > Actions для открытия панели команд (Object Actions panel). |
| 4 | В открывшемся списке выбрать Objects, затем Mouse и переместить команду hide в окно скрипта (Script window). |
| Код будет выглядеть следующим образом: | |
| onClipEvent(load){ Mouse.hide(); } | |
| 5 | В списке выбрать раздел Actions затем перетащить startDrag в окно скрипта (Script window). |
| 6 | Включить опцию Lock Mouse to Center. |
| Код будет выглядеть следующим образом: | |
| onClipEvent(load){ Mouse.hide() startDrag("this", true); } | |
| 7 | Выбрать Control > Test Movie для использования собственного курсора. |
При использовании собственного курсора, кнопки, находящиеся в клипе, будут функционировать, как и раньше. Поэтому будет лучше, если собственный курсор поместить в верхний слой линейки, чтобы он перемещался над кнопками и другими объектами.
Для подробной информации о методах объекта Mouse, см. ActionScript словарь.
Создание средств управления звуком
Для управления звуком во флеш-клипе существует предопределенный объект Sound. Чтобы использовать его методы, сначала необходимо создать новый объект Sound, затем при помощи метода attachSound из библиотеки в клип вставляется звук.
Метод setVolume объекта Sound управляет уровнем (громкостью) звука, а метод setPan корректирует баланс правого и левого каналов. Следующий пример использует setVolume и setPan для управления уровнем громкости и балансом.
Изменение громкости и баланса осуществляется перемещением соответствующих ползунков 1.
Создание средств управления звуком:
| 1 | Выбрать File > Import для импорта звука в проект. |
| 2 | Выделить звук в библиотеке и в меню библиотеки выбрать Options > Linkage. |
| 3 | Выбрать опцию Export This Symbol и присвоить ей идентификатор mySound. |
| 4 | Выделить первый кадр на основной линейке (Timeline) и выбрать Window > Actions. |
| 5 | Перетащить команду set variable из левого списка в окно скрипта. |
| 6 | Ввести s в строку Variable (переменная). |
| 7 | Выбрать в списке Objects, затем Sound и перетащить new Sound в строку Value (значение). |
| В результате должен получиться следующий код: | |
| s = new Sound(); | |
| 8 | Дважды щелкнуть на команде evaluate из раздела Action, чтобы перейти на новую строку в окне скрипта. |
| 9 | Ввести s в строке Expression (выражение). |
| 10 | Из списка Objects выбрать Sound и перетащить attachSound в строку Expression (выражение). |
| 11 | Ввести "mySound" в качестве аргумента-идентификатора (ID argument) команды attachSound. |
| 12 | Опять дважды щелкнуть на команде evaluate для перехода на новую строку в окне скрипта. |
| 13 | Ввести s в строке Expression (выражение). |
| 14 | Из списка Objects выбрать Sound и перетащить команду start в строку Expression (выражение). |
| В результате должен получиться следующий код: | |
| s = new Sound(); s.attachSound("mySound"); s.start(); | |
| 15 | Выбрать Control > Test Movie для тестирования результата. |
Создание ползунка для контроля громкости:
| 1 | Перетащить кнопку из библиотеки на рабочее поле. |
| 2 | Выделить ее и выбрать Insert > Convert to Symbol. Создать элемент типа муви-клип. |
| Этот вновь созданный муви-клип, в своем первом кадре, будет содержать нашу кнопку. | |
| 3 | Выделить этот мувик и выбрать Edit > Edit Symbol. |
| 4 | Выделить кнопку и выбрать Window > Actions. |
| 5 | Ввести следующие команды: |
| on (press) { startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; } | |
| В команде startDrag параметры left, top, right и bottom являются переменными. | |
| 6 | Выбрать Edit > Edit Movie для возврата на основную линейку (Timeline). |
| 7 | Выделить этот муви-клип в рабочем поле. |
| 8 | Ввести следующие команды: |
|
onClipEvent (load) { top=_y; left=_x; right=_x; bottom=_y+100; } onClipEvent(enterFrame){ if (dragging==true){ _root.s.setVolume(100-(_y-top)); } } |
|
| 9 | Выбрать Control > Test Movie для тестирования результата. |
| 1 | Перетащить из библиотеки в рабочее поле новую кнопку. |
| 2 | Выделить ее и выбрать Insert > Convert to Symbol. Создать еще один муви-клип. |
| 3 | Выделить вновь созданный мувик и выбрать Edit > Edit Symbol. |
| 4 | Выделить кнопку и выбрать Window > Actions. |
| 5 | Ввести следующие команды: |
| on (press) { startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; } | |
| Как и в предыдущем случае команда startDrag имеет параметры left, top, right и bottom являющиеся набором переменных клипа. | |
| 6 | Выбрать Edit > Edit Movie для возврата к основной линейке. |
| 7 | Выделить этот новый мувик. |
| 8 | Ввести следующие команды: |
|
onClipEvent(load){ top=_y; bottom=_y; left=_x-50; right=_x+50; center=_x; } onClipEvent(enterFrame){ if (dragging==true){ _root.s.setPan((_x-center)*2); } } |
|
| 9 | Выбрать Control > Test Movie и наслаждаться полученным результатом. |
Oт переводчика:
Установка значений цвета муви-клипа
Можно использовать методы предопределенного объекта Color для корректировки цвета муви-клипа. Метод setRGB задает шестнадцатеричное RGB (red, green, blue) значение цвета объекта, а метод setTransform устанавливает процент и значения смещений для красного, зеленого, синего и степень прозрачности альфа канала. В этом примере, setRGB изменяет цвет объекта на введенный пользователем.
Для изменения цвета футболки, введите шестнадцатеричное значение нового цвета (например, cc66ff, или 0033cc) в текстовом поле внизу и нажмите на кнопку.
Для использования объекта Color создайте объект муви-клип.
Устанавить значение цвета муви-клипа:
| 1 | Выделить муви-клип на рабочем поле, и выбрать Window > Panels > Instance. |
| 2 | Ввести имя colorTarget в строке Name. |
| 3 | Создать текстовое поле. |
| 4 | Выбрать Window > Panels > Text Options и присвоить ему имя переменной input. |
| 5 | Расположить кнопку на рабочем поле и выделить ее. |
| 6 | Выбрать Window > Actions. |
| 7 | Перетянуть команду set variable из левого списка в окно скрипта (Script window). |
| 8 | В строке Variable (переменная), ввести c. |
| 9 | В списке выбрать Objects, затем Color и перетянуть new Color в строку Value (значение). |
| 10 | Включить Expression check box. |
| 11 | Нажать на кнопку Target Path (находится в правом нижнем углу панели в виде перекрестия) и выбрать colorTarget. Нажать OK. |
| Код в окне скрипа будет выглядеть так: | |
| on(release) { c = new Color(colorTarget); } | |
| 12 | Перетянуть команду evaluate из списка в окно скрипта. |
| 13 | Ввести c в строку Expression (выражение). |
| 14 | В Objects категории списка выбрать Color; затем перетащить setRGB в строку Expression. |
| 15 | Выбрать Functions и перетащить parseInt в строку Expression. |
| Код будет выглядеть так: | |
| on(release) { c = new Color(colorTarget); c.setRGB(parseInt(string, radix)); } | |
| 16 | Для string аргумента команды parseInt, введите input. |
| Строка, которую нужно анализировать - значение переменной, введенное в доступное для редактирования текстовое поле. | |
| 17 | Для radix аргумента команды parseInt, введите 16. |
| radix - основание системы счисления, анализируемого аргумента string. В нашем случае - шестнадцатеричная (значения RGD для объекта Color). Код скрипта будет таким: | |
| on(release) { c = new Color(colorTarget); c.setRGB(parseInt(input, 16)); } | |
| 18 | Выбрать Control > Test Movie для тестирования результата. |
Для большей информации о методах объекта Color, см. соответствующие подразделы ActionScript Словаря.
Загрузка и выгрузка дополнительных клипов
Вы можете использовать команду или метод loadMovie для воспроизведения дополнительных роликов, не закрывая Flash-плейер или для переключения клипов без загрузки нового HTML-документа. Можно использовать loadMovie и для посылки переменных CGI-скрипту, который генерирует SWF-файл в результате своего выполнения. Если фильм загружен, вы можете указать уровень или клип, в которые будет загружаться дополнительный ролик.
Команда и метод unloadMovie удаляют ролик, предварительно загруженный с помощью loadMovie. Выгрузка ролика посредством unloadMovie обеспечивает плавный переход между роликами и может освободить память, требуемую для Flash-плейера. Используйте команду loadMovie для решения следующих задач:
![]() |
Воспроизведение последовательности рекламных баннеров в виде SWF-файлов с помощью вызова команды loadMovie в конце каждого из них для загрузки следующего |
![]() |
Разработка разветвлённого интерфейса, позволяющего пользователю выбирать среди нескольких различных SWF-файлов |
![]() |
Построение навигационного интерфейса с элементами управления в слое 0, загружающие другие слои. Загрузка слоёв позволяет осуществить более плавные переходы, чем тот же механизм, реализованный на основе смены HTML-страниц. |
Интеграция Flash с веб-приложениями
ActionScript краткий обзор
Интеграция Flash с веб-приложениями > Обмен информацией с удаленными файлами
Обмен (отсылка и получением) информацией с удаленными файлами
Flash-клип это окно для сбора и отображения информации и он во многом похож на HTML страницу. Но Flash-клипы, в отличие от HTML страниц, могут постоянно обновляться, оставаясь загруженными в браузер, без необходимости обновления окна браузера. Вы можете использовать Flash-команды и методы объектов для отсылки и получения информации от серверных скриптов, текстовых файлов и XML-файлов.
Серверные скрипты могут запрашивать разнообразную информацию из баз данных что позволяет производить обмен информацией между базой данных и Flash-клипом (например, в настоящее время на http://polar-lights.com/en/ производится разработка расширения Flash2Databases для общения флеша с базами данных - Прим. переводчика). Серверные скрипты могут быть написаны на разных языках, причем наиболее предпочтительными и современными языками являются PHP (прямой наследник Perl) и ASP (Microsoft Active Server Pages) несколько более устаревший, но могучий Perl все еще не теряет актуальности, а более редкими но мощными и интересными языками являются JSP (Java Server Pages) и особенно удобный и простой для разработчика CFM (Allare ColdFusion).
Хранение информации в базах данных и динамическая подгрузка ее во Flash-клип позволяет создавать Flash-страницы с динамическим и персонализированным содержанием. Например, можно создать доску объявлений, чат, персональный профайл для пользователя или "shopping cart" (корзину покупок), которая будет помнить все покупки клиента, что может помочь в определении его предпочтений.
Вы можете использовать некоторые команды Actionscript и методы объектов для передачи информации внутрь и за пределы Flash-клипа. Каждая команда и метод могут использовать свой протокол для передачи информации, каждый из которых, в свою очередь, может требовать определенной разметки (формата) передаваемой информации.
Команды getURL, loadVariables и loadMovie используют HTTP или HTTPS протокол для посылки информации в кодированном формате URL.
Методы XML.send, XML.load и XML.sendandLoad используют HTTP или HTTPS протокол для посылки информации, как XML.
Методы XMLSocket.connect и XMLSocket.send создают и используют a TCP/IP сокет и соединение для посылки информации, как XML.
О безопасности
Во время воспроизведения Flash-клипа в браузере, можно загрузить данные в этот клип только из файла на сервере в том же субдомене. (Это, по замыслу Макромедии, должно было запретить Flash-клипам даже думать о попытках загрузить информацию с чужих серверов. Тем не менее все существующие на данный момент (21.09.2000) Flash-плееры для всех браузеров позволяют загружать во Flash-клип SWF-файлы с любого другого сервера по команде Load Movie. - Прим.переводчика)
Для определения субдомена URL состоящего из одного или двух компонентов, используется имя домена:
http://macromedia
http://x.y.macromedia.com

Используя XMLSocket объект для создания сокет-соединения с сервером, нужно использовать порт с номером 1024 или выше. (Порты с меньшими номерами обычно используются стандартными вещами типа Telnet, FTP, World Wide Web или Finger.)
Flash-клипам доступны все стандартные возможности браузеров в части HTTP и HTTPS защищенных соединений. По существу, Flash предоставляет ту же защищенность, что доступна при применении стандартного HTML протокола. Нужно следовать тем же правилам, которым обычно следуют при создании страниц с функцией защищенного соединения. Проще говоря команда LoadVariables произведенное из Flash-клипа (безразлично с передачей переменных или нет) оказывает точно такое же воздействие на сервер как и загрузка соответствующего скрипта или файла в стандартное окно браузера (с передачей тех же переменных и тем же методом).
Для защиты паролем чего-либо, используйте текстовое поле для запроса пароля от пользователя. Введенное значение можно отправить на сервер командой loadVariables или методом XML.sendandLoad, указав в свойствах HTTPS URL и метод POST. И уже на сервере можно будет проверить пароль и произвести соответствующие действия - чаще всего применяется генерация ответа от сервера в виде понятном для Flash (например var=something&var2=another& для случая LoadVariables). Полученные от сервера данные можно обработать внутри Flash-клипа и произвести какие-либо действия в зависимости от полученной информации. Другие методы обработки паролей (например проверка внутри Flash-клипа) не могут обеспечить сколько-нибудь стойкой защиты.
Проверка загруженности данных
Каждая команда и метод загружающие данные во Flash-клип (кроме XMLSocket.send) является асинхронным, т.е. результаты этого действия возвращаются через неопределенное время.
Перед тем как использовать полученные из удаленного источника данные во Flash-клипе, необходимо проверить, загружены ли эти данные или еще нет. Например, нельзя использовать команду LoadVariables и манипулировать полученными значениями в одном ключевом кадре. В следующем примере нельзя использовать переменную lastFrameVisited, если она загружается из файла myData.txt. Более того, ее нельзя использовать и в последующих кадрах до тех пор пока не будет полной уверенности в том, что загрузка данных из файла myData.txt завершилась. Короче говоря, этот скрипт написан неправильно.
loadVariables("myData.txt", 0); gotoandPlay(lastFrameVisited);
Каждая команда и метод требуют использования специфической техники проверки загруженности данных. При использовании команд loadVariables или loadMovie можно загрузить информацию в символ типа movie clip и использовать событие data в контейнере действия onClipEvent. Замечательным свойством Flash5 является тот факт, что команда loadVariables при загрузке переменных в Target (в Movie clip, а не в Level), событие onClipEvent(data) происходит только после окончания загрузки последней переменной. Если же загружать переменные из отдельного .swf файла командой loadMovie (например при загрузке данных с другого домена), событие onClipEvent(data) происходит после загрузки каждого фрагмента этого .swf файла (т.е. обычно несколько раз).
Например, кнопка со следующей командой загружает переменные из файла myData.txt в символ типа movie clip с именем (Name в окошке Instance/Instance) loadTargetMC (причем этот movie clip расположен в основной Timeline):
on(release){ loadVariables("myData.txt", _root.loadTargetMC); }
Если какая-либо команда внутри символа loadTargetMC использует переменную lastFrameVisited, загруженную из внешнего файла myData.txt, то следующее действие будет выполнено только после окончания загрузки всех переменных из этого файла, включая lastFrameVisited:
onClipEvent(data) { gotoandPlay(lastFrameVisited); 1
}
При использовании методов XML.load и XMLSocket.connect можно определить программу обработки (XML handler) данных, которая будет обрабатывать данные после их появления. Программа обработки это свойство XML и XMLSocket объектов, к которому привязаны определенные вами (набитые на клавиатуре в окошке "Actions") функции. Программы обработки вызываются автоматически сразу после получения информации. Для XML объекта используйте XML.onLoad, а для XMLSocket объекта - XMLSocket.onConnect.
Для более подробной информации, щелкайте мышкой сюда Использование XML объекта и Использование XMLSocket объекта.
От переводчика:
Cудя по всему, переменная "lastFrameVisited" это что-то вроде вручную созданной переменной с именем подобным "КадрНаКоторыйВыХотитеПерейти". Она не имеет никакого отношения к стандартным функциям и свойствам Flash и не связана с проверкой загруженности данных. Так что не советую забывать дописывать в конец файлов предназначенных для загрузки в основную Timeline Flash-клипов что-то вроде
&finishloading=1&
и каким-либо циклом ожидать появления во Flash-клипе переменной "finishloading" равной 1. И только после появления этой переменной делать вывод об окончании загрузки данных. Для этого случая можно сказать в каком-либо кадре
loadVariables("myData.txt", 0);
в следующем кадре
play ();
и в третьем кадре
if (finishloading!=1) { prevFrame (); }
Интеграция Flash с веб-приложениями: Обзор
Flash-клипы могут обмениваться (отсылать и получать) информацией с удаленными файлами. Для отсылки и получения переменных используется команда loadVariables или, если требуется только отослать данные - getURL. Для загрузки другого Flash-клипа в текущий, используется команда loadMovie. Для отсылки и получения XML данных, используются XML или XMLSocket объекты. Можно также организовывать XML данные при помощи разнообразных методов XML объекта.
Кроме того, можно создавать Flash-формы, собранные из обычных интерфейсных элементов, таких как тестовые поля (text fields) и всплывающие окошки (pop-up menus), и использовать их для сбора информации и отсылки данных серверным приложениям.
Если же вспомнить про все возможности Flash, мы увидим что он позволяет обмениваться данными не только с удаленными файлами и серверными приложениями, но и с HTML окружением (ява скриптом) на клиентской машине. Позднее мы рассмотрим способы отсылки и получения данных из яваскрипта, причем рассмотрим не только устаревший метод fscommand, но и прямые вызовы яваскрипта из Flash-клипа c помощью команды getURL. 1
От редактора:
Насчет устаревшего метода и прямых вызовов переводчик добавил от себя и я с ним согласен :)
Использование fscommand и взаимодействие
on(release){ fscommand("fullscreen", "true"); }
В таблице указаны значения, которые вы можете использовать в качестве параметров команды fscommand для управления воспроизведением клипа в автономном Flash Player. (запущен прожектор)
quit
Для вызова исполнимых файлов с параметром, например
file.exe /s -e
нужно войти в "expert mode" и заменить все пробелы в выражении табуляцией (кнопка TAB :)
Команда fscommand вызывает JavaScript-функцию moviename_DoFSCommand в HTML странице которая включает ролик, где moviename это имя ролика. Если Flash Player назначен имени myMovie, вызванная JavaScript функция будет myMovie_DoFSCommand.
Чтобы использовать команду fscommand для открытия окна сообщения между роликом и HTML страницей через JavaScript, надо:
| 1 | На HTML странице, которая содержит ролик добавить следующий JavaScript-код: |
| function theMovie_DoFSCommand(command, args) { if (command == "messagebox") { alert(args); } } | |
| Если вы публикуете ваш ролик, используя Flash с FSCommand-шаблоном, то этот код вставляется автоматически. Имя ролика и ID атрибуты будут именем файла. Например, для файла myMovie.fla, атрибуты будут установлены в myMovie. Для дополнительной информации смотрите Help к Программе Flash. |
|
| 2 | В ролике, добавьте команду fscommand кнопке: |
| fscommand("messagebox", "This is a message box invoked from within Flash.") | |
| Вы также можете использовать выражения в качестве параметров команды fscommand, например: | |
| fscommand("messagebox", "Hello, " & name & ", welcome to our Web site!") | |
| 3 | Выберите File > Publish Preview > HTML чтобы протестировать ролик. |
Команда fscommand также может посылать сообщения программе Macromedia Director, которые представлены как строки, события или выполнимый lingo-код. Если сообщение является строкой или событием, вы должны написать Lingo-код для получения указаний из команды fscommand и выполнения их. Для дополнительной информации смотрите сайт Direct Support Center.
В Visual Basic, Visual C++ и других программах, которые используют ActiveX, fscommand посылает VB-событие в виде двух строк и оно может быть обработано этими языками программирования. Для дополнительной информации смотрите сайт Flash Support Center.
Использование команд loadVariables, getURL и loadMovie
Команды loadVariables, getURL и loadMovie взаимодействуют с серверными скриптами используя протокол HTTP. Каждая из этих команд посылает все переменные из Timeline туда, куда она направлена; каждая команда обрабатывает ответ следующим образом:
![]() |
getURL возвращает любую информацию в окно броузера, не во Flash Player |
![]() |
loadVariables загружает переменные в заданную линейку (Timeline) во Flash Player. |
![]() |
loadMovie загружает ролик в заданный уровень во Flash Player. |
Когда вы используете команды loadVariables, getURL или loadMovie, можете указать некоторые параметры:
![]() |
URL файла, в котором находятся удаленные переменные |
![]() |
Местоположение (Location) - уровень или место в ролике, которое получает переменные. Для дополнительной информации об уровнях и местах смотрите О множестве линеек |
| Примечание: в команде getURL нельзя указывать местоположение. | |
![]() |
Переменные могут быть отосланы разными HTTP методами - GET или POST. |
Например, если хотите использовать таблицу достижений (high scores) в игре, можете положить таблицу на сервер и использовать команду loadVariables чтобы загружать её в ролик каждый раз, когда кто-то поиграл в игру. Команда будет похожей на эту:
loadVariables("http://www.mySite.com/scripts/high_score.php", _root.scoreClip, GET);
Здесь команда loadVariables загрузит переменные из PHP-скрипта high_score.php в мувик с именем scoreClip, используя GET HTTP метод.
Все переменные используемые с командой loadVariables должны быть в стандартном MIME формате application/x-www-urlformencoded (стандартный формат используемый в CGI скриптах). Скрипт, который вы указываете в URL-параметре команды loadVariables, должен выдать в виде ответа переменную и пары значений тоже в этом формате, чтобы Flash мог прочитать их.
Файл может содержать любое количество переменных; переменные и пары значений разделяются амперсандом (&), а слова с пробелами внутри, разделяются плюсом (+) (формат url-кодирования). Например, это выражение определяет несколько переменных:
highScore1=54000&playerName1=rockin+good&highScore2=53455&playerName2=bonehelmet&highScore3=42885&playerName3=soda+pop
Дополнительную информацию о командах loadVariables, getURL и loadMovie, смотрите в ActionScript словаре.
Информация по url-кодированию спец-символов доступна на сайте Макромедии.
Использование объекта XMLSocket
Чтобы установить Socket-соединение, необходимо создать приложение на сервере, которое будет ждать запрос на Socket-соединение и посылать ответ обратно Flash-клипу. Это серверное приложение можно написать на каком-либо языке программирования, например на Java.
Методы connect и send XMLSocket объектов используются для передачи XML-данных серверу и для возвращения их с сервера во время Socket-соединения. Метод connect устанавливает Socket-соединение с портом сервера. Метод send посылает XML объект на сервер, который указан в Socket-соединении.
При использовании метода connect, Flash Player открывает TCP/IP соединение с сервером и не закрывает его до тех пор, пока не произойдет одно из следующих событий:
![]() |
Вызван метод close XMLSocket объекта. |
![]() |
Ссылок на XMLSocket объект больше не существует. |
![]() |
Flash Player прекратил работу. |
![]() |
Соединение прервано (например, отключился модем) |
Следующий пример создает XML сокет-соединение и отсылает данные из XML объекта myXML. Для облегчения понимания, в скрипте встречаются комментарии, начинающиеся с символов //:
//Создаем новый XMLSocket объект sock = new XMLSocket(); //Вызываем его метод соединения чтобы законнектиться с портом 1024 //сервера по этому урл sock.connect("http://www.myserver.com", 1024); //Определяем функцию назначенную для этого sock объекта, которая будет обрабатывать //ответ сервера. Если соединение произошло, отсылаем myXML объект. //Если что-то не получилось, выводим сообщение об ошибке в текстовом поле "msg" function onSockConnect(success){ if (success){ sock.send(myXML); } else { msg="There has been an error connecting to "+serverName; } } //назначаем onSockConnect функцию для свойства onConnect sock.onConnect = onSockConnect;
Дополнительную информацию смотрите в ActionScript словаре.
Использование переменных в формах
Вы можете использовать переменные в форме для хранения данных, водимых пользователем. Чтобы назначить переменные, используйте окошко свойств редактируемых текстовых полей и назначьте команды кнопкам в элементах интерфейса. Например, каждый пункт всплывающего меню это кнопка с действием, которое устанавливает переменную для указания на нажатый пункт. Вы можете назначить имя этой переменной текстовому полю. Текстовое поле действует подобно окну, которое отображает значение переменной.
Когда вы посылаете/получаете информацию серверному скрипту и от него, переменные в ролике должны совпадать с переменными в скрипте. Например, если скрипт ожидает переменную с именем pаssword, текстовое поле в котором пользователи вводят пароль тоже должно иметь имя переменной password.
Некоторые скрипты требуют скрытых переменных. Это такие переменные, которые пользователь не видит. Чтобы создать скрытую переменную в Flash, вы можете назначить переменную на кадр в ролике, который содержит другие элементы формы. Скрытые переменные отсылаются серверному скрипту наряду с любыми другими переменными из линейки
Примечание: Встроенные Flash-методы GET и POST отсылают все переменные из текущей линейки, включая разные $version. Поэтому, если хочется отослать только то, что необходимо, обычно создают отдельный символ с текстовыми полями и кнопкой "send" и помещают этот символ в основную линейку.
О XML
XML (Расширяемый язык разметки - Extensible Markup Language) стал стандартом обмена структурированными данными в Интернет-Приложениях. Вы можете объединять данные из Flash с серверами, которые используют XML технологию для создания сложных приложений, как например чата или банковской системы .
В XML, так же как и в HTML, вы можете использовать тэги для разметки текста. В HTML вы можете использовать предопределенные тэги чтобы указать каким должен быть показан текст в броузере (например, тэг выделяет текст жирным начертанием). В XML вы указываете тэги которые выделяют тип части данных (например,
Каждый XML тэг называется узлом (node) или элементом (element). Узлы бывают 2х типов (1-XML элемент, или 3-text узел). Элементы так же могут иметь атрибуты. Узел вложенный в узел (а node nested in a node) называется child или childNode. Эта иерархическая структура узлов называется XML DOM (Document Object Model). Она во многом похожа на JavaScript DOM, являющимся структурой элементов в броузере.
В следующем примере,
Отсылка и прием сообщений Flash
От переводчика:
На данный момент существует альтернатива fscommand, которая работает в большем числе браузеров и позволяет передать среде окружения более одного параметра за один раз- это прямые вызовы яваскриптовых функций командой getURL с синтаксисом
getURL ("javascript:functionname(params,morepareams)");
или
getURL ("javascript:functionname()");
Для использования прямых вызовов яваскрипта не нужно использовать шаблон публикации от fscommand. HTML код обеспечивающий работу прямых вызовов яваскрипта отличается от Flash Only (default) (файл Default.html в папке HTML) только присутствием swLiveConnect=true и NAME=movieID внутри тега Embed. Можно создать собственный шаблон публикации для таких случаев, просто скопировав все содержимое Default.html и добавив swLiveConnect=true NAME=$TI в тег embed (хотя в принципе еще можно слегка изменить строку $TTFlash Only (Default) к примеру на $TTFlash and JavaScript чтобы не путаться :)
Создание форм
Flash-формы предоставляют собой расширенный тип интерактивного интерфейса - комбинацию кнопок, мувиков и текстовых полей, которые позволяют удобно передавать информацию другому приложению на локальном или удаленном сервере. Все стандартные элементы форм (радио-кнопки, выпадающие списки и переключатели) могут быть созданы как мувики или кнопки в стиле вашего сайта.
Простым элементом формы является, например, поле для ввода текста. Стандартным типом форм, использующим этот интерфейс элементов, являются ЧАТы, бланки-заявки и поисковые формы. Например, Flash-форма может собирать адреса и посылать их другому приложению которое в свою очередь преобразует информацию в E-mail письмо или запись базы данных. Даже одиночное текстовое поле рассматривается как форма и может использоваться для получения информации вводимой пользователем и отображения результата.
Форма состоит из двух главных компонентов: элементы Flash-интерфейса, которые составляют форму, а также серверного приложения или скрипта на стороне клиента, для обработки информации, вводимой пользователем. Следующие шаги описывают основные этапы создания формы в Flash.
Для составления формы необходимо:
| 1 | Поместить элементы интерфейса в ролик. (Можете использовать элементы интерфейса из библиотеки или создать свои). |
| 2 | В панели Text Options установите РАЗНЫЕ имена переменных для текстовых полей для ввода и подтверждения. (Для дополнительной информации о создании изменяемых текстовых полей смотрите Help файл Flash.) |
| 3 | Назначьте команду, которая будет отсылать и загружать данные. |
Создание поисковой формы
Примером простейшей поисковой формы может служить поле ввода строки поиска с кнопкой "ОК". Следующий пример содержит указания для создания поискового интерфейса с использованием команды getURL.
Для создания простой поисковой формы необходимо:
| 1 | Создать кнопку, которая подтверждает введенную информацию для поиска. | |
| 2 | Создать чистое текстовое поле и пояснительную надпись. | |
Ваш экран будет примерно таким:![]() | ||
| 3 | Выделить текстовое поле и выбрать в Window > Panels> Text Options. | |
| 4 | В панели Text Options установить следующие параметры: | |
![]() |
Выбрать Input Text из всплывающего меню | |
![]() |
Включить Border/Bg. | |
![]() |
Указать имя переменной. | |
| ПРИМЕЧАНИЕ: Некоторые поисковые машины могут требовать специальное имя переменной. Для дополнительной информации смотрите сайт поисковой машины.. | ||
| 5 | Нажать на правую кнопку в рабочей области и выбрать Window > Actions. | |
| Появится панель действий объектов. | ||
| ПРИМЕЧАНИЕ: галочка рядом с Actions в меню Window показывает, что панель открыта. | ||
| 6 | Удерживая кнопку мыши, перетащить команду getURL из окна со списком команд в окно скрипта. | |
| 7 | В области Параметров действия, установить следующие опции: | |
![]() |
В строку URL, ввести URL поисковой машины. | |
![]() |
Для Window, выбрать _blank. Это откроет новое окно с результатами поиска. | |
![]() |
Для Variables, выбрать Send using GET. | |
| 8 | Для проверки формы выбрать File > Publish Preview > HTML. | |
Ошибки в ActionScript
Использование окна Output
В режиме теста, окно Output отображает информацию, помогающую проверить и отловить ошибки в клипе. Некоторая информация, типа ошибок синтаксиса, отображается автоматически. Можно отображать другую информацию, используя команды списка объектов и списка переменных. См. Использование списка объектов и Использование списка переменных.
Если в скриптах используется команда trace, во время воспроизведения клипа в окно Output выводится специфическая информация. Она может содержать примечания о состоянии клипа или значение выражения. См. Использование trace.
Вывод окна Output:
| 1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
| 2 | Выбрать Window > Output. |
| Откроется окно Output. | |
Замечание: Если в скрипте есть ошибки синтаксиса, окно Output открывается автоматически.
| 3 | Для работы с содержанием окна Output, используется его меню: |
![]() |
Выбрать Options > Copy для копирования содержания окна Output в буфер обмена. |
![]() |
Выбрать Options > Clear для очистки окна. |
![]() |
Выбрать Options > Save to File для записи содержания окна в текстовый файл. |
![]() |
Выбрать Options > Print для распечатки его содержимого. |
Использование Отладчика
Отладчик позволяет находить ошибки в клипе, во время его воспроизведения во Flash Player. Можно просматривать всю внутреннюю структуру основного и подгружаемых клипов и изменять значения переменных и свойств, чтобы определить их правильные значения. Затем можно вернуться к скриптам и отредактировать их с учетом результатов, полученных при отладке. Для использования Отладчика, необходимо запустить Flash Debug Player, специальную версию Flash Player.
Flash Debug Player устанавливается автоматически при инсталляции пакета Flash 5. Он позволяет в своем окне просматривать список объектов и пары: переменные - их значение и свойства - из значения.
Для включения Отладчика:
Выбрать Window > Debugger.
Это открывает Отладчик в неактивном состоянии. Никакая информация не появится в его окне, пока не будет выдана команда от Flash Player.
Для активизации Отладчика в режиме тестирования:
Выбрать Control > Debug Movie.
Это откроет Отладчик в активном состоянии.

Использование списка объектов
В режиме теста команда List Objects показывает уровень, кадр, тип объекта (шейп, мувиклип или кнопка) и путь к мувиклипу в иерархическом списке. Это особенно полезно для нахождения правильного пути и имени мувика. В отличие от Отладчика, список не обновляется автоматически во время воспроизведения клипа, каждый раз, когда требуется выдать очередную информацию в окне Output, необходимо повторно выбрать команду List Objects.
Вывод списка объектов в клипе:
| 1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
| 2 | Выбрать Debug > List Objects. |
Список всех текущих объектов на сцене будет показан в окне Output, как в следующем примере:
Layer #0: Frame=3 Movie Clip: Frame=1 Target=_root.MC Shape: Movie Clip: Frame=1 Target=_root.instance3 Shape: Button: Movie Clip: Frame=1 Target=_root.instance3.instance2 Shape:
Замечание: Команда List Objects не вносит в список все ActionScript data objects. В этом контексте, объект является формой или символом на сцене.
Использование списка переменных
В режиме теста команда List Variables отображает список всех текущих переменных в клипе. Это особенно полезно для нахождения правильного пути и имени переменной. В отличие от Отладчика, список не обновляется автоматически во время воспроизведения клипа, каждый раз, когда требуется выдать очередную информацию в окне Output, необходимо повторно выбрать команду List Variables.
Вывод списка переменных в клипе:
| 1 | Если клип не запущен в режиме теста, выбрать Control > Test Movie. |
| 2 | Выбрать Debug > List Variables. |
Список всех текущих переменных клипа будет показан в окне Output, как в следующем примере:
Level #0: Variable _root.country = "Sweden" Variable _root.city = "San Francisco" Movie Clip: Target="" Variable _root.instance1.firstName = "Rick"
Использование списка Watch
Для контроля критических переменных и управления ими, можно отметить нужные переменные для добавления их в список Watch. Этот список отображает абсолютный путь к переменной и ее значение. В список Watch можно также вводить новое значение переменной.
Только переменные могут быть добавлены в список Watch, свойства или функции не могут.

Переменные замаркированные для списка Watch и переменные в списке Watch
Для добавления переменных в список Watch, сделайте одно из следующего:
![]() |
Во вкладке Variables, right-click (Windows) или Control-click (Macintosh) на нужной переменной и выбрать Watch в открывшемся контекстном меню. Рядом с переменной появится синяя точка. |
![]() |
Во вкладке Watch, right-click (Windows) или Control-click (Macintosh) и выбрать Add в открывшемся контекстном меню. Ввести имя переменной и ее значение в соответствующие ячейки. |
Удаление переменной из списка Watch:
Во вкладке Watch, right-click (Windows) или Control-click (Macintosh) и выбрать Remove в открывшемся контекстном меню.
Использование trace
Когда в скрипте используется команда trace, в окно Output выводится информация, являющаяся аргументом этой команды. Например, при тестировании клипа или сцены, можно выводить специальные программные комментарии или какие-то данные, как результат нажатия кнопки или воспроизведения определенного кадра. Команда trace аналогична JavaScript оператору alert.
Когда в скрипте используется команда trace в качестве ее аргумента можно использовать выражение. Его значение будет выведено в окно Output в режиме теста, как это сделано в следующем примере:
onClipEvent(enterFrame){ trace("onClipEvent enterFrame " + enterFrame++) }

Команда trace возвращает значение, которое выводится в окне Output.
О строке состояния
После активизации Отладчика, в его строке состояния отображается URL или локальный файловый путь к клипу. Flash Player может запускаться в различных формах в зависимости от среды воспроизведения. Строка состояния Отладчика отображает тип Flash Player, управляющего клипом:
![]() |
Test-movie mode |
![]() |
Stand-alone player |
![]() |
Netscape plug-in |
| Netscape plug-in используется с Netscape Navigator под Windows и Macintosh, и Microsoft Internet Explorer под Macintosh. | |
![]() |
ActiveX control |
| ActiveX control используется с Internet Explorer под Windows. |
Окно списка
Когда Отладчик активен, он выдает в своем окне список со всей структурой клипа в виде дерева. Можно открывать и закрывать его ветви, чтобы внимательно изучить все их содержимое. Если во время воспроизведения происходит подгрузка или удаление мувиклипа, в списке дебагера эти изменения отражаются немедленно в реальном времени. Можно изменять размер окна списка, перемещая горизонтальный разделитель внутри окна или просто изменяя размер всего окна Отладчика.
Ошибки в ActionScript: Обзор
Уровень сложности некоторых команд, особенно в комбинации друг с другом, может создавать проблемы во Flash-клипах. Как и на любом другом языке программирования, здесь тоже можно написать неправильный ActionScript, который вызовет появление ошибок в клипе. Использование специальных методов упрощает устранение проблем, когда что-то ведет себя неожиданно.
Flash имеет несколько инструментов, помогающих проверить создаваемый клип в режиме теста или в броузере. Отладчик (Debugger - Дебагер) показывает иерархический список клипов, загруженных в настоящее время во Flash Player. Здесь также можно просматривать текущие значения всех переменных и свойств и изменять их во время воспроизведения клипа. В режиме теста в окно Output выводятся сообщения об ошибках и списки переменных и объектов. Можно также в скриптах использовать команду trace для вывода своих комментариев, значений переменных и выражений в окно Output.
Основные принципы поиска ошибок
Если, при написании скриптов, Вы будете придерживаться данных рекомендаций, ваши клипы будут содержать меньшее количество ошибок. Используйте следующие основные принципы, помогающие предотвращать ошибки или находить их быстро, когда они возникают.
Использование хороших авторских методов
Сохраняйте разные версии клипа во время работы над ним. Выберите File > Save As для сохранения текущей версии под новым именем каждые пол-часа. Это позволит легко локализовать начало возникшей проблемы или, при необходимости, начать работу снова с той версии, в которой ее еще не было.
Тестируйте свою работу постоянно и делайте это как можно чаще и всякий раз, когда Вы вносите какие-то изменения или перед сохранением очередной версии клипа. Выберите Control > Test Movie, чтобы запустить клип в режиме теста.
В некоторых ситуациях (например при разработке intranet site) Вы можете заранее знать тип броузера и платформу Вашего клиента. Если же Ваш клип предназначен для демонстрации в сети, важно проверить его в различных броузерах на всех доступных Вам платформах 1.
Возьмите за практику следовать этим методам:
![]() |
Используйте команду trace для вывода каких-то своих комментариев в окне Output. См. Использование trace. |
![]() |
Используйте команду comment для включения комментариев в свои скрипы. См. Comments. |
![]() |
Выработайте и используйте единые принципы в написании имен при идентификации элементов в скриптах. Например, хорошая идея не использовать символ пробела в именах 2. Начинайте имена переменных и функций с символов в нижнем регистре и используйте заглавную букву для каждого нового слова, включаемого в имя (myVariableName, myFunctionName). Начинайте имена функции конструктора с заглавной буквы (MyConstructorFunction). Важно выбрать стиль, имеющий для Вас смысл и следовать ему в своей работе. |
![]() |
Назначайте переменным осмысленные имена, в зависимости от их содержания. Например, переменная с информацией о последней нажатой кнопке могла бы быть названа lastButtonPressed. Имя типа foo затруднит запоминание того, что содержит переменная. |
![]() |
Используйте редактируемые текстовые поля на guide слоях для слежения за значениями переменных, как альтернативу использования Отладчика. |
![]() |
В режиме редактирования используйте Movie Explorer для просмотра списка объектов и всех команд в клипе. См. Using Flash. Flash Help |
![]() |
Используйте команду for...in для прогона в цикле свойств мувиклипов, включая дочерние мувиклипы. Можно использовать команду for...in с командой trace для отсылки списка свойств в Output окно. См. Повторение команды. |
Использование контрольного списка поиска ошибок
Как в каждой среде создания скриптов существуют некоторые ошибки, которые обычно делают те, кто пишет эти скрипты. Этот список содержит некоторые рекомендации для нахождения таких ошибок.
![]() |
Удостоверитесь, что находитесь в режиме теста. |
| Только простая кнопка и команды расположенные в кадре (frame actions), например, gotoAndPlay и stop будут работать в режиме редактирования. Выберите Control > Enable Simple Frame Actions или Control > Enable Simple Buttons для включения исполнения этих команд. | |
![]() |
Удостоверитесь, что у Вас не конфликтуют между собой скрипты прописанные в кадрах на разных слоях клипа. 3 |
![]() |
Если вы работаете с панелью Actions в нормальном режиме (Normal Mode), удостоверитесь, что опция expression имеет соответствующее значение для каждого конкретного выражения. |
| Если она не включена, значение будет передаваться как строка. См. Использование операторов для управления значениями в выражениях. | |
![]() |
Удостоверитесь, что ActionScript элементы не имеют одинаковых имен. |
| Хорошая идея называть каждую переменную, функцию, объект и свойство уникальным именем. Исключением могут быть локальные переменные, хотя внутри области их действия они тоже должны быть уникальны, и многократно используемые в качестве счетчиков. См. Область действия переменной. |
От редактора:
Конечно это полезно, но не всегда возможно, особенно со всякими экзотическими броузерами и платформами, но здесь может успокаивать мысль, что в процентном отношении всех "прочих" не так уж и много. В то же время проверить работу клипа в двух основных комбинациях NC+Win и IE+Win, не просто хороший тон и признак профессионального поведения, а крайняя необходимость!..
Так же не следует использовать символ дефиса ("-") в именах, например, my-Cool-Movie. Flash Player воспримет дефис в качестве оператора "минус" и результат работы скрипта, содержащего такое имя, будет непредсказуем. В этих случаях лучше использовать символ подчеркивания, например, my_Cool_Movie.
Хорошим стилем является выделение отдельного слоя для помещения в него всех кадровых команд (frame actions), а не разносить их по всем слоям клипа.
Отображение и изменение переменных
Вкладка Variables (Переменные) в Отладчике отображает имена и значения любых переменных в клипе. Если изменить значение переменной во вкладке Variables, то это изменение в реальном времени отразится в воспроизводимом в данный момент клипе. Например, чтобы сделать проверку на пересечение в игре, можно ввести значение соответствующей переменной для позиционирования шара рядом со стенкой.
Показ переменных:
| 1 | Выберите мувиклип, содержащий переменную, в окне со списком объектов. |
| 2 | Нажмите на вкладку Variables. |
В процессе воспроизведения клипа окно со списком объектов обновляется автоматически. Если мувиклип удаляется из основного клипа, он также удаляется из списка объектов в Отладчике и удаляются переменные, входящие в него.

Изменение значения переменной:
Выделите значение и введите новое.
Значение должно быть постоянным значением (например, "Hello", 3523 или "http://www.macromedia.com"), не выражением (например, x + 2 или eval("name:" +i)). Значение может быть строкой (любое значение, заключенное в кавычки ("")), числом или булеаном (true или false).
Переменные Object (Объекта) и Array (Массива) отображаются во вкладке Variables. Нажмите на Add (+) кнопку, чтобы видеть их свойства и значения. Однако, вводить значения объекта или массива (например, {name: "I am an object"} или [1, 2, 3]) в полях их значений нельзя.
Замечание: Для вывода значения выражения в режиме теста, используйте команду trace. См. Использование trace.
Отображение свойств клипа и их редактирование
Вкладка Properties (Свойства) Отладчика отображает все значения свойства любого мувиклипа. Если изменить значение свойства, то это изменение в реальном времени отразится в воспроизводимом в данный момент клипе. Некоторые свойства клипа предназначены только для чтения и не могут быть изменены.
Показ свойств мувиклипа:
| 1 | Выберите мувиклип в окне со списком объектов. | |
| 2 | Нажмите на вкладку Properties. ![]() | |
| Вкладка Properties в Отладчике. |
||
Изменение значения свойства:
Выделите значение и введите новое.
Значение должно быть константой (например, 50 или "clearwater"), а не выражение (например, x + 50). Значение может быть строкой (любое значение, заключенное в кавычки ("")), числом или булеаном (true или false). Нельзя ввести значение объекта или массива (например, {id: "rogue"} или [1, 2, 3]) в Отладчик.
Для большей информации, см. Строка и Использование операторов для управления значением в выражениях.
Замечание: Для вывода значения выражения в режиме теста, используйте команду trace. См. Использование trace.
Включение режима отладки в клипе
При экспорте клипа можно включить опцию, разрешающую его отладку и указать пароль. Если эта опция не будет включена, активизировать Отладчик будет нельзя.
Как JavaScript или HTML, ActionScript являются клиентскими скриптами, поэтому они потенциально доступны для просмотра пользователем. Чтобы сохранять переменные более надежно, необходимо хранить и обрабатывать их на сервере, а не во Flash-клипе.
Однако, как разработчик, Вы можете иметь другие свои секреты, типа структуры клипа, и которые Вы бы не хотели делать доступными для всех, а только для своих доверенных друзей. В этом случае Вы можете экспортировать клип с запароленной опцией включения Отладчика 1.
Включение режима отладки и установка пароля:
| 1 | Выбрать File > Publish Settings. |
| 2 | Перейти на закладку Flash. |
| 3 | Включить опцию Debugging Permitted. |
| 4 | Для установки пароля, ввести его в поле Password. |
| Без знания этого пароля, Вы не сможете запустить Отладчик. Если при экспорте пароль не будет введен, то включить Отладчик можно будет без пароля. | |
Активизация Отладчика в окне броузера:
| 1 | Right-click (Windows) или Control-click (Macintosh) откроет контекстное меню Flash Debug Player 2. |
| 2 | Выбрать Debugger. |
Замечание: Можно использовать Отладчик для контроля только одного клипа одновременно, при этом Flash должен быть открыт.

Контекстное меню Flash Debug Player
От редактора:
На мой взгляд совершенно надуманная ситуация, т.к. во-первых своим друзьям я могу и так все рассказать и показать, во-вторых, с появлением таких мощных сторонних дебагеров, как Action Script Viewer ( http://www.buraks.com/asv/ ), все секреты, скрываемые внутри SWF-файла, стали секретами Полишенеля...
У меня не получилось включить эту опцию в Netscape Communicator под Windows, в Internet Explorer все сработало, как здесь описано. Возможно Netscape Flash Plug-in 5.0 r30 для Windows ее не поддерживает, хотя однозначно утверждать этого не берусь. На других платформах не тестировал.
Список операторов
Список операторовКлавиши клавиатуры и их коды. Обзор
Символы от A до Z и стандартные числа от 0 до 9 Символ или число Код A
Клавиши цифровой клавиатуры Клавиша цифровой клавиатуры Код 0
Функциональные клавиши Функциональные клавиши Код F1
Другие клавиши Клавиша Код Backspace
Таблица сообщений об ошибках
Безналичный денежный оборот
И опять про деньги. Развитие цивилизации и особенно развитие электрической связи подарило нам этакий курьез - безналичные расчеты. Когда я был крайне мал, я был просто дитя, я глубоко сомневался в нужности этакой штукуевины как безнал. С годами я понял некоторые удобства этой штуки, но осадок неприятия остался. Нал мне гораздо ближе.Безналичный денежный оборот
Регулирование оборота
Безналичная валюта
Безналичный евро
Банковские пластиковые карты
Безналичная Ювелирка
Федеральная Резервная Система
Оборот пластиковых карт
Учебник по платиковым картам
Пластиковые карты CyberCash
Частные деньги в безнале
Безналичные интернет финансы
Безналичные смарт-карты
Платежные системы и безнал
Крипта - всегда безнал
Торговля золотом за безнал
Оборот в макроэкономика
Безналичные электронные деньги
Мейл-Конференция "RuFlash"
Другие клавиши Клавиша Код Backspace
8 | |
Tab | 9 |
Clear | 12 |
Enter | 13 |
Shift | 16 |
Control | 17 |
Alt | 18 |
Caps Lock | 20 |
Esc | 27 |
Spacebar | 32 |
Page Up | 33 |
Page Down | 34 |
End | 35 |
Home | 36 |
Left Arrow | 37 |
Up Arrow | 38 |
Right Arrow | 39 |
Down Arrow | 40 |
Insert | 45 |
Delete | 46 |
Help | 47 |
Num Lock | 144 |
; : | 186 |
= + | 187 |
- _ | 189 |
/ ? | 191 |
\Q ~ | 192 |
[ { | 219 |
\ | | 220 |
] } | 221 |
'' ' | 222 |
Функциональные клавиши Функциональные клавиши Код F1
| 112 | |
| F2 | 113 |
| F3 | 114 |
| F4 | 115 |
| F5 | 116 |
| F6 | 117 |
| F7 | 118 |
| F8 | 119 |
| F9 | 120 |
| F10 | 121 |
| F11 | 122 |
| F12 | 123 |
Клавиши цифровой клавиатуры Клавиша цифровой клавиатуры Код 0
| 96 | |
| 1 | 97 |
| 2 | 98 |
| 3 | 99 |
| 4 | 100 |
| 5 | 101 |
| 6 | 102 |
| 7 | 103 |
| 8 | 104 |
| 9 | 105 |
| * (умножение) | 106 |
| + (сложение) | 107 |
| Enter | 108 |
| - (вычитание) | 109 |
| . (десятичная точка) | 110 |
| / (деление) | 111 |
Клавиши клавиатуры и их коды. Обзор
Последующие таблицы перечисляют все клавиши на стандартной клавиатуре и соответствующие значения их кода, которые используются для идентификации клавиш в ActionScript. Подробнее см. описание объекта Key в Action Script словаре.
Символы от A до Z и стандартные числа от 0 до 9 Символ или число Код A
65 | |
B | 66 |
C | 67 |
D | 68 |
E | 69 |
F | 70 |
G | 71 |
H | 72 |
I | 73 |
J | 74 |
K | 75 |
L | 76 |
M | 77 |
N | 78 |
O | 79 |
P | 80 |
Q | 81 |
R | 82 |
S | 83 |
T | 84 |
U | 85 |
V | 86 |
W | 87 |
X | 88 |
Y | 89 |
Z | 90 |
0 | 48 |
1 | 49 |
2 | 50 |
3 | 51 |
4 | 52 |
5 | 53 |
6 | 54 |
7 | 55 |
8 | 56 |
9 | 57 |
Список операторов
Эта таблица содержит список всех операторов Action Script и их ассоциативность в порядке убывания.
| Высший приоритет |
+
| && | Логическое И | Слева на право |
| and | Логическое И (Flash 4) | Слева на право |
| || | Логическое ИЛИ | Слева на право |
| or | Логическое ИЛИ (Flash 4) | Слева на право |
| ?: | Условие | Справа на лево |
| = | Присвоение | Справа на лево |
| "*=, /=, %=, +=, -=, &=, |=, ^=, <<=, >>=, >>>=" | Составное присвоение | Справа на лево |
| , | Множественная оценка | Слева на право |
| Низший приоритет | ||
Таблица сообщений об ошибках
В таблице приведен список сообщений об ошибках, возвращаемых Flash-компилятором. Объяснение каждого сообщения поможет вам в разрешении проблем, возникших в вашем клипе.
Property
Свойство
Оператор
Оператор сопровождается недопустимым операндом. Например, trace(1+); является синтаксически неправильным.
Синтаксическая ошибка
Ожидается имя поля после оператора '.'
Должно быть
do {
trace (i)
} foo (i < 100)
Инициализированный список должен быть завершен
Должен быть идентификатор
var 3 = 4;
JavaScript '
| Left side of assignment operator must be variable or property Левая часть оператора присвоения должна быть переменной или свойством | Использован оператор присвоения, но его левая часть не является переменной или свойством. |
| Statement block must be terminated by '}' Блок операторов должен быть завершен '}' | Группа выражений была объявлена внутри фигурных скобок, но отсутствует закрывающая фигурная скобка. |
| Event expected Должно быть событие | Объявлен обработчик On(MouseEvent) или onClipEvent, но никакого события не было определено или вместо события обнаружена непредвиденная лексема. |
| Invalid event Недопустимое событие | Скрипт содержит недопустимое событие для мыши или клипа. Список допустимых событий, см. в разделах MouseEvent и OnClipEvent словаря ActionScript. |
| Key code expected Должен быть код клавиши | Необходимо определить код клавиши. См. список клавишных кодов в Приложение B. |
| Invalid key code Недопустимый код клавиши | Указанный код клавиши не существует. |
| Trailing garbage found В конце найден мусор | Скрипт или выражение анализируется правильно, но содержит дополнительные конечные символы, которые не могут быть проанализированы. |
| Illegal function Запрещенная функция | Имя декларируемой функции было использовано как выражение. Имя декларируемой функции должны быть утверждением. Правильно: function sqr (x) { return x * x; } Неправильно: var v = function sqr (x) { return x * x; } |
| Function name expected Должно быть имя функции | Имя, определенное для этой функции, является недопустимым. |
| Parameter name expected Должен быть параметр | В объявлении функции должно быть имя параметра (аргумента), но обнаружена непредвиденная лексема. |
| 'else' encountered without matching 'if' Обнаружен 'else' без соответствующего 'if' | Оператору else не предшествует соответствующий if. else можно использовать только совместно с оператором if . |
| Scene type error Ошибка типа Сцены | Параметр сцены в командах gotoAndPlay, gotoAndStop или ifFrameLoaded имеет неправильный тип. Этот аргумент должен быть строковой константой. |
| Internal error Внутренняя ошибка | Произошла внутренняя ошибка в ActionScript-компиляторе. Пожалуйста пошлите FLA-файл, генерирующий эту ошибку Макромедии, с подробным описанием того, как воспроизвести это сообщение. |
| Hexadecimal digits expected after 0x После 0x должно стоять шестнадцатеричное число | Обнаружена последовательность 0x не сопровождаемая допустимым шестнадцатеричным числом. |
| Error opening #include file Ошибка открытия файла #include | Ошибка открытия файла по директиве include. Возможная причина - отсутствие файла или сбой диска. |
| Malformed #include directive Некорректная директива #include | Директива include написана не правильно. В ней должен быть использован следующий синтаксис:#include "somefile.as" |
| Multi-line comment was not terminated Многострочный комментарий не завершен | В многострочном комментарии пропущен закрывающий тег */. |
| String literal was not properly terminated Строковый литерал завершен не правильно | В конце строкового литерала, начатого с открывающейся кавычки (одиночный или двойной), отсутствует закрывающая кавычка. |
|
Function |
Вызвана функция с непредвиденным числом параметров. |
| Property name expected in GetProperty GetProperty должно содержать имя свойства | Используется функция getProperty, в которой второй аргумент не является именем свойства муви-клипа. |
|
Parameter |
В списке параметров объявляемой функции обнаружены одинаковые параметры. Все имена параметров должны быть уникальными. |
|
Variable |
Обнаружено имя переменной, встречающееся несколько раз в операторе var. Все имена переменных в одном операторе var должны быть уникальными.
| Обнаружен обработчик on внутри другого on обработчика. Все обработчики on должны находиться вверху списка команд. | |
| Statement must appear within on handler Команды должны находиться внутри 'on' обработчика | Кнопке назначены команды без окружающего их блока on. Все "кнопочные" команды должна находиться внутри on блока. |
| Statement must appear within onClipEvent handler Команды должны находиться внутри 'onClipEvent' обработчика | Муви-клипу назначены команды без окружающего их блока onClipEvent. Такие команды должны находиться внутри onClipEvent блока. |
| Mouse events are permitted only for button instances События мыши разрешаются только для кнопки | Обработчик события кнопки был объявлен в списке команд кадра или мувиклипа. События кнопки разрешаются только в списках команд кнопки. |
| Clip events are permitted only for movie clip instances События мувиклипа разрешаются только для мувиклипа | Обработчик события мувиклипа был объявлен в списке команд кадра или списке команд кнопки. События мувиклипа разрешаются только в списках команд мувиклипа. |










Программирование: Языки - Технологии - Разработка