ActionScript — объектно-ориентированный язык программирования, один из диалектов ECMAScript, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной (ActionScript Virtual Machine), которая является составной частью Flash Player. ActionScript компилируется в байт-код, который включается в SWF-файл.
SWF-файлы исполняются Flash Player'ом. Flash Player существует в виде плагина к веб-браузеру, а также как самостоятельное исполняемое приложение (standalone). Во втором случае возможно создание исполняемых exe-файлов (projector), когда приложение Flash Player объединяется с swf-файлом по аналогии с SFX.
С помощью ActionScript можно создавать интерактивные мультимедиа-приложения, игры, веб-сайты и многое другое.
ActionScript — открытый язык программирования, его спецификация находится в открытом доступе на сайте Adobe. Компилятор (как часть Apache Flex) и открытая виртуальная машина (Tamarin) являются открытым программным обеспечением. В 2020 Adobe передало обновление ActionScript компании HARMAN. В 2022 HARMAN предоставили приветствие вклада.
История ActionScript как язык появился с выходом 5-й версии Macromedia Flash, которая стала первой программируемой на ActionScript средой. Первая вышедшая версия языка называлась ActionScript 1.0. 6-я версия Flash (MX) также использовала ActionScript 1.0. В 2004 году компания Macromedia представила новую версию ActionScript 2.0 вместе с выходом Flash 7 (MX 2004), в которой было введено строгое определение типов, а также программирование, основанное на классах. То есть появились новые ключевые слова: class (класс), interface (интерфейс), extends (установка наследования) модификаторы доступа: private, public; и прочие. Также Macromedia была выпущена модификация языка Flash Lite для программирования под мобильные телефоны.
ActionScript 1.0 является прототипным языком программирования. То есть он вполне реализует все три принципа объектно-ориентированного программирования.
ActionScript 2.0 является надстройкой над ActionScript 1.0. Проверка типов и работа с иерархией классов осуществляется во время компиляции, которая заканчивается генерацией байткода, аналогичного ActionScript 1.0.
В 2006 году вышел ActionScript 3.0 в среде программирования Adobe Flex, а позже в Adobe Flash 9.
ActionScript 3.0 представляет, по сравнению с ActionScript 2.0, качественное изменение, он использует новую виртуальную машину AVM 2.0 и даёт взамен прежнего формального синтаксиса классов настоящее классовое (class-based) Объектно-ориентированное программирование. ActionScript 3.0 обеспечивает возрастание производительности, по сравнению с ActionScript 1.0/2.0, до 700 раз (это лишь обработка инструкций, не затрагивая графику). ActionScript 3.0 позволяет работать с бинарными данными, с BitMap (что обеспечивает значительный прирост производительности: до 10000 раз). ActionScript 3.0 по скорости приблизился к таким языкам программирования, как Java и C#. Увеличение производительности основано на динамической трансляции кода (JIT). Такое увеличение производительности возможно лишь для некоторых типов данных и требует особой организации кодаTed Patrick | Entrepreneur, father, and interactive software developer . Объём кода, как правило увеличивается в несколько раз (по сравнению с AS1).
Версии плеераНововведения2Появились «действия», в дальнейшем известные как: gotoAndStop(); gotoAndPlay(); nextFrame(); prevFrame(); getURL();3Появление loadMovie();4 Первая версия с полной поддержкой скриптовой имплементации.5Появление первой версии ActionScript. Использовалось прототипное программирование на базе ECMAScript и предоставлена полная поддержка процедурного и объектно-ориентированного программирования.6 Добавлена событийная модель switch Появилась поддержка AMF и RTMP протоколов.7 Появление AS2, базирующигося на ECMAScript 4 с классобазированным программированием. Добавлена поддержка CSS для текста.8 Появление новых правил безопасности. Добавление фильтра AS1/AS2. Появление класса для просмотра Bitmap Data в реальном времени.9 Новый скриптовый движок ECMAScript, ActionScript Virtual Machine AVM2. AVM сохранён для совместимости, добавлена поддержка ActionScript 3 через AVM2. Появление расширения E4X для XML.10 3D-эффекты Различные фильтры и эффекты Расширенная схема размещения текста Улучшено API Рисования10.2 улучшена поддержка p2p, Добавлено шумоподавление.11 Появление низкоуровнего API для работы с графикой, USB-устройствами 3D-акселерация
Поддержка версий ActionScript:Не поддерживаетсяAS1AS1, AS2AS1, AS2, AS3
Синтаксис Синтаксис ActionScript основан на спецификации ECMAScript.
ActionScript 2.0 Данный код создаёт новое текстовое поле на глубине (depth) 0, в точке (0, 0) и размером 100 на 100 пикселей. Параметр text равен строчке «Hello, world». Код должен быть записан в окне action — frame createTextField("greet", 0, 0, 0, 100, 100); greet.text = "Hello world!";
Пример класса, написанного на AS2. Код должен сохраняться в отдельном .as-файле и располагаться в одной папке с .fla-исходником проекта. class com.example.Greeter extends MovieClip { public function Greeter()
public function onLoad() :Void
var txtHello:TextField = this.createTextField("txtHello", 0, 0, 0, 100, 100); txtHello.text = "Hello Ako!";
ActionScript 3.0 В исходном коде, компилируемом Adobe Flex SDK (AS 3.0): package {
import flash.display.Sprite; import flash.text.TextField;
public class HelloWorld extends Sprite { public function HelloWorld() { var txtHello:TextField = new TextField(); txtHello.text = "Hello world!"; this.addChild(txtHello);
MXML Код, написанный на MXML (расширение XML): <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical" creationComplete="initApp()">
<mx:Script> <![CDATA[ public function initApp():void
// Prints our "Hello, world!" message into "mainTxt". mainTxt.text = Greeter.sayHello();
]]> </mx:Script>
<mx:Label id="title" fontSize="24" fontStyle="bold" text='"Hello, world!" Example'/> <mx:TextArea id="mainTxt" width="250"/>
</mx:Application>
Отладчик Пример работы отладчика. Выводит на экран output любые данные, которые возможно преобразовать в String (AS2 и далее): trace("Hello world!");
Структура
ActionScript 2
Элементарные типы данных
Тип ОписаниеStringСтрочка, массив символов, например: «Hello, World»NumberЛюбое числовое значение, например: 0, 0.5, 1150BooleanЛогическая величина, может принимать значения «true» или «false».ObjectОбъект. Примером объекта являются классы, методы, функции, параметры и т. д.
Сложные типы данных
Тип ОписаниеMovieClipГрафический объект, содержащий кадры.TextFieldДинамическое или вводимое текстовое поле.ButtonКнопка. Является по сути Movie Clip с предопределенным поведением. Состоит из 4 кадров: Up, Over, Down и Hit.DateОбъект, содержащий сведения о дате/времени.ArrayМассив данных.XMLXML-объектXMLNodeXML-nodeLoadVarsСлужит для отправки и приёма переменных при помощи HTTP POST и HTTP GETSoundСодержит звуковые данные .MP3 форматаNetStreamСодержит звуковые данные других форматовNetConnectionПозволяет взаимодействовать 2 flash-роликам в одной области видимости (например на рабочем столе, или в одной вкладке браузера)MovieClipLoaderКласс для подзагрузки swf роликов и .jpg .png изображенийEventListenerОбработчик событий
ActionScript 3
Элементарные типы данных (см. документацию Adobe)
Тип ОписаниеBooleanЛогическая величина, может принимать значения «true» или «false».intцелочисленное 32-битное числовое значение в диапазоне от −231 до 231−1.uintцелочисленное 32-битное числовое значение в диапазоне от 0 до 232−1.Numberдробное 64-битное числовое значение в диапазоне от −263 до 263−1.nullноль. Ссылка на пустоту.StringСтрочка из 16-битных символов. Используется кодировка UTF-16.voidтип данных с одним значением — undefined. Используется, если программист хочет указать тип функции как «невозвращаемый».
Сложные типы данных (см. документацию Adobe)
Тип ОписаниеObjectОбъект. Ключевой класс ООП. Является основой всех классов AS3.ArrayМассив данных нестрогой типизации. Может принимать любые значения, например: ['a', 5, new TextField()]VectorМассив данных строгой типизации. Например массив Vector.<String> может содержать только строковые данные ['a','b',' ']DateКласс, содержащий сведения о дате/времени.ErrorКласс, содержащий ошибки.FunctionОсновной класс. Примером является любой метод AS3.RegExpРегулярные выраженияXMLXML-объект, базирующийся на E4X (стандарт ECMA-357)XMLListОснованный на Array объект для поиска контента в XML-классе.
Пакеты
ActionScript 3.0 (а точнее Flash Player 9 API — можно сказать, стандартная библиотека, написанная на C++) состоит из более чем 700 классов, организованных в следующие пакеты (аналоги пространств имён в C++): Пакет Описание flash.accessibility классы для поддержки доступа в Flash контента и приложений. flash.display основные классы, которые Flash Player использует для вывода изображения на экран. flash.errors часто используемые классы обработки ошибок. flash.external содержит класс ExternalInterface, который используется для связи с контейнером Flash Player’а. flash.filters классы для работы с фильтрами растровых картинок. flash.geom классы для работы с геометрическими классами, такими как точки, прямоугольники и матрицы трансформации — для поддержки класса BitmapData и возможности кеширования изображений. flash.media классы для работы с мультимедиа — например, звуками и видео. flash.net классы для отправки и получения данных по сети. Например, запросы URL и Flash Remoting. flash.printing классы для вывода на печать содержимого Flash-фильма. flash.profiler функции, используемые для отладки и профилирования кода. flash.system классы для доступа к системе на уровне функциональности, такие как безопасность, многоязычного содержания и т. д. flash.text классы для работы с текстом, его форматированием, размером, стилем и расположением. flash.ui классы пользовательского интерфейса, такие как классы для работы с мышью и клавиатурой. flash.utils дополнительные классы, такие как ByteArray для работы с бинарными данными, Timer для отсчёта интервалов времени и др. flash.xml обеспечивает поддержку XML и все функции для работы с XML. (Необходим для поддержки предыдущих версий AS)
Также существуют mx.* пакеты, которые состоят из классов, предназначенных для создания интерфейса приложения в среде Flex и fl.* пакеты, для среды Flash
Популярные среды Adobe Flash — исторически первая среда, поддерживающая AS. Начиная с Flash 5 появилась панель «ACTIONS» с возможностью редактирования кода (AS1). Для Flash 6 был создан AS2. Начиная с Flash 9 появилась поддержка AS3. Adobe Flash Builder — среда разработки для создания RIA приложений для настольного компьютера и мобильных устройств. Powerflasher FDT — среда, признанная опытными флеш-программистами, базируется на eclipse — свободной интегрированной среде разработки модульных кроссплатформенных приложений. FlashDevelop — свободная среда разработки и редактор, написанные на C#, позволяющие создавать Flash-приложения при помощи Flash IDE, Flex SDK, MTASC или haxe. CodeDrive — среда разработки и редактор, с довольно быстрым компилятором, основана на Microsoft Visual Studio. SWFTools — свободный пакет для работы с swf-файлами, пакет включает компилятор ActionScript 3.0 (as3compile) .
Примечания
Ссылки Страница на сайте Adobe
Категория:Объектно-ориентированные языки программирования Категория:Статьи с примерами кода ActionScript Категория:Языки веб-программирования Категория:Семейство языков программирования JavaScript