Введение в ActionScript 3.0

О языке ActionScript

ActionScript является языком программирования, используемым в средах выполнения Adobe® Flash® Player и Adobe® AIR™. Он обеспечивает интерактивность, обработку данных и многие другие возможности в содержимом Adobe Flash, Flex и AIR, а также в приложениях.

ActionScript выполняется виртуальной машиной ActionScript, AVM, которая является частью проигрывателя Flash Player и пакета AIR. Код ActionScript обычно преобразуется компилятором в формат байт-кода. ( Байт-код — это тип языка программирования, написанный и распознаваемый компьютером.) Среди примеров компиляторов — компилятор, встроенный в Adobe® Flash® Professional, компилятор, встроенный в Adobe® Flash® Builder™, а также компилятор, доступный в компоненте Adobe® Flex™ SDK. Байт-код встроен в SWF-файлы, которые исполняет проигрыватель Flash Player и пакет AIR.

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

  • Новая виртуальная машина ActionScript, называемая AVM2, использует новый набор инструкций в байт-кодах и обеспечивает значительный прирост производительности

  • Более современный программный код компилятора выполняет оптимизацию на более высоком уровне, чем предыдущие версии компилятора.

  • Расширенный и улучшенный интерфейс программирования приложений (API) с контролем объектов на нижнем уровне и подлинной объектно-ориентированной моделью

  • Интерфейс программирования приложений XML создан на основе спецификации ECMAScript для XML (E4X) (ECMA-357 редакция 2). E4X является расширением языка ECMAScript, который добавляет XML в качестве поддерживаемого языком типа данных.

  • Модель события на основе спецификации событий DOM уровня 3

Преимущества ActionScript 3.0

ActionScript 3.0 превосходит возможности создания сценариев предыдущих версий ActionScript. Специально разработан, чтобы облегчить создание сложных приложений с большим набором данных и объектно-ориентированным, многократно используемым программным кодом. ActionScript 3.0 не требуется для содержимого, выполняемого в проигрывателе Adobe Flash Player. Однако он обеспечивает возможности повышения производительности, которые доступны только в AVM2 (виртуальная машина ActionScript 3.0). Код ActionScript 3.0 может выполняться до десяти раз быстрее, чем код прежней версии ActionScript.

Предыдущая версия виртуальной машины ActionScript, AVM1, выполняет код ActionScript 1.0 и ActionScript 2.0. Flash Player 9 и 10 поддерживает AVM1 в целях обратной совместимости.

Новые возможности ActionScript 3.0

Хотя ActionScript 3.0 содержит много классов и функций, знакомых программирующим на ActionScript 1.0 и 2.0, архитектурная и концептуальная составляющие ActionScript 3.0 отличаются от предыдущих версий ActionScript. Улучшения в ActionScript 3.0 включают новые возможности языка ядра и усовершенствования в прикладном интерфейсе программирования, которые обеспечивают улучшенное управление объектами нижнего уровня.

Возможности языка ядра

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

Исключения при выполнении

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

Типы выполнения

В ActionScript 3.0 информация о типе сохраняется в среде выполнения. Эта информация используется для проверки типа выполнения, благодаря чему повышается уровень безопасности типа системы. Информация о типе также используется для создания машинного представления переменных, что повышает производительность и уменьшает использование памяти. Для сравнения, в ActionScript 2.0 аннотации типа являются в основном вспомогательным инструментом разработчика, а все значения динамически вводятся во время выполнения.

Запечатанные классы

В ActionScript 3.0 представлена концепция запечатанных классов. Запечатанный класс обладает фиксированным набором свойств и методов, определенных во время компиляции; дополнительные свойства и методы к нему добавить нельзя. Благодаря отсутствию возможности изменения класса во время выполнения обеспечивается более строгая проверка при компиляции и создание более надежных программ. Также оптимизируется использование памяти, поскольку для каждого экземпляра объекта не требуется отдельная внутренняя хеш-таблица. Возможно использование динамических классов с помощью ключевого слова dynamic . Все классы в ActionScript 3.0 по умолчанию «запечатаны», но могут быть объявлены динамическими с помощью ключевого слова dynamic .

Закрытия методов

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

ECMAScript для XML (E4X)

В ActionScript 3.0 реализован язык сценариев ECMAScript для XML (E4X), недавно стандартизированный как ECMA-357. E4X предлагает органичный, очень удобный набор языковых конструкций для работы с XML. В отличие от стандартных прикладных интерфейсов программирования для разбора XML в языке E4X обеспечивается поддержка XML как встроенного типа данных. E4X упрощает разработку приложений, работающих с XML, значительно сокращая длину программных кодов.

Для просмотра спецификации ECMA E4X перейдите по адресу www.ecma-international.org .

Регулярные выражения

ActionScript 3.0 включает встроенную поддержку регулярных выражений, что позволяет быстро выполнять поиск и обработку соответствующих строк. Поддержка регулярных выражений в ActionScript 3.0 реализована в соответствии с их определением в спецификации языка ECMAScript (ECMA-262) версии 3.

Пространства имен

Пространства имен аналогичны традиционным спецификаторам доступа, используемым для управления видимостью деклараций ( public , private , protected ). Они работают как пользовательские спецификаторы доступа, имена для которых можно задавать по своему выбору. Во избежание коллизий пространства имен задаются идентификаторами URI, которые также используются для представления пространств имен XML при работе в E4X.

Новые типы примитивов

ActionScript 3.0 содержит три числовые типа: Number, int и uint. Тип Number представляет число с двойной точностью и плавающей запятой. Тип int задает 32-разрядные целочисленные значения со знаком, позволяя коду ActionScript использовать преимущество быстрой обработки целочисленных математических операций центральным процессором. Тип int удобен для создания счетчиков циклов и целочисленных переменных. Тип uint задает 32-разрядные целочисленные значения без знака, его удобно использовать для определения значений цвета RGB, байтовых счетчиков и т. д. В отличие от этого, в ActionScript 2.0 доступен только один числовой тип — Number.

Функции прикладных интерфейсов программирования (API)

Прикладные интерфейсы программирования (API) в ActionScript 3.0 содержат много классов, позволяющих управлять объектами на нижнем уровне. Усовершенствована архитектура языка: она стала более удобной и понятной, чем в предыдущих версиях. И хотя существует слишком много классов, чтобы они могли быть рассмотрены подробно, нелишне отметить некоторые значительные отличия.

Модель событий DOM3

Модель событий Document Object Model Level 3 (DOM3) обеспечивает стандартный способ создания и обработки сообщений о событиях. Эта модель событий предназначена для обеспечения взаимодействия и связи объектов в приложении, поддержания их состояния и реакции на изменение. Модель событий ActionScript 3.0 создана на основе спецификации событий World Wide Web Consortium DOM Level 3. Эта модель обеспечивает более ясный и эффективный механизм, чем системы событий, доступные в предыдущих версиях ActionScript.

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

Прикладной программный интерфейс списка отображения

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

Класс Sprite является облегченным блоком построения, используемым в качестве базового класса для визуальных элементов, например компонентов пользовательского интерфейса. Класс Shape воспроизводит векторные фигуры без сжатия. Экземпляры этих классов легко могут создаваться с помощью оператора new , а затем динамически переназначаться в любое время другим родительским объектам.

Управление глубиной осуществляется автоматически. Методы предоставляются для определения порядка наложения объектов и управления им.

Обработка динамических данных и содержимого

ActionScript 3.0 содержит механизмы для загрузки ресурсов и данных в приложение с последующей их обработкой. Эти механизмы интуитивно понятны и согласованы с различными прикладными программными интерфейсами. Класс Loader предлагает единый механизм для загрузки SWF-файлов и графических ресурсов, а также обеспечивает способ доступа к детальной информации о загруженном содержимом. Класс URLLoader предлагает отдельный механизм для загрузки текстовых и двоичных данных в управляемые данными приложения. Класс Socket предлагает средства для считывания и записи двоичных данных в серверные сокеты в любом формате.

Доступ к данным на нижнем уровне

В различных прикладных программных интерфейсах обеспечивается доступ к данным низкого уровня. Для загружаемых данных класс URLStream обеспечивает доступ к несжатым двоичным данным непосредственно в процессе загрузки. Класс ByteArray позволяет оптимизировать чтение, запись и работу с двоичными данными. Прикладной интерфейс программирования звука обеспечивает точное управление звуком с помощью классов SoundChannel и SoundMixer. Прикладные программные интерфейсы взаимодействуют с системами безопасности, предоставляя информацию о соответствующих привилегиях SWF-файла или загруженного содержимого, позволяя обрабатывать ошибки в системе безопасности.

Работа с текстом

В ActionScript 3.0 входит пакет flash.text, содержащий все связанные с обработкой текста прикладные программные интерфейсы. Класс TextLineMetrics обеспечивает подробные метрики для строк текста в текстовом поле; он заменил метод TextFormat.getTextExtent() , использовавшийся в ActionScript 2.0. Класс TextField содержит ряд методов низкого уровня, предоставляющих определенную информацию о строке текста или об отдельном символе в текстовом поле. Например, метод getCharBoundaries() возвращает прямоугольник в виде ограничивающего прямоугольника символа. Метод getCharIndexAtPoint() возвращает указатель символа в заданной точке. Метод getFirstCharInParagraph() возвращает указатель первого символа в абзаце. К методам работы на уровне строк относятся метод getLineLength() , возвращающий число символов в указанной строке текста, и метод getLineText() , который возвращает текст из указанной строки. Класс Font обеспечивает средства для управления встроенными шрифтами в SWF-файлах.

Для управления текстом на более низком уровне классы в пакете flash.text.engine формируют механизм визуализации текста Flash. Этот набор классов обеспечивает управление текстом на низком уровне и предназначен для создания текстовых сред и компонентов.