ActionScript

ActionScript — объектно-ориентированный язык программирования, один из диалектов ECMAScript, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной (ActionScript Virtual Machine), которая является составной частью Flash Player. ActionScript компилируется в байт-код, который включается в SWF-файл.

ActionScript
Изображение логотипа
Класс языкаОбъектно-ориентированный, прототипный, императивный, скриптовый
Появился в1998
АвторГарри Гроссман
РазработчикMacromedia
Выпуск3.0
Система типовсильная, статическая
Основные реализацииAdobe Flash Player, Adobe AIR, Apache Flex
Испытал влияниеJavaScript, Java
Сайтadobe.com/devnet/actions…
ActionScript
Изображение логотипа
MIME-типapplication/ecmascript[1]
РазработчикMacromedia
Последний выпуск
Тип форматаязык функционального программирования, мультипарадигмальный и язык программирования
Сайтadobe.com/devnet/actions…

SWF-файлы исполняются Flash Player'ом. Flash Player существует в виде плагина к веб-браузеру, а также как самостоятельное исполняемое приложение (standalone). Во втором случае возможно создание исполняемых exe-файлов (projector), когда приложение Flash Player объединяется с swf-файлом по аналогии с SFX.

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

ActionScript — открытый язык программирования, его спецификация находится в открытом доступе на сайте Adobe[2]. Компилятор (как часть Apache Flex) и открытая виртуальная машина (Tamarin) являются открытым программным обеспечением. В 2020 Adobe передало обновление ActionScript компании HARMAN[3]. В 2022 HARMAN предоставили приветствие вклада [4][5]

История править

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). Такое увеличение производительности возможно лишь для некоторых типов данных и требует особой организации кода[6]. Объём кода, как правило увеличивается в несколько раз[7] (по сравнению с 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!";        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, 1150
BooleanЛогическая величина, может принимать значения «true» или «false».
ObjectОбъект. Примером объекта являются классы, методы, функции, параметры и т. д.

Сложные типы данных править

ТипОписание
MovieClipГрафический объект, содержащий кадры.
TextFieldДинамическое или вводимое текстовое поле.
ButtonКнопка. Является по сути Movie Clip с предопределенным поведением. Состоит из 4 кадров: Up, Over, Down и Hit.
DateОбъект, содержащий сведения о дате/времени.
ArrayМассив данных.
XMLXML-объект
XMLNodeXML-node
LoadVarsСлужит для отправки и приёма переменных при помощи HTTP POST и HTTP GET
SoundСодержит звуковые данные .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)
XMLListArray-базирущийся объект для поиска контента в 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) .

Примечания править

  1. RFC 4329 (limit compatible with EcmaScript)
  2. Архивированная копия. Дата обращения: 9 июля 2015. Архивировано из оригинала 27 марта 2017 года.
  3. Для получения последней версии AIR посетите веб-сайт HARMAN/Action Script. Дата обращения: 21 сентября 2023. Архивировано 6 сентября 2023 года.
  4. Adobe AIR SDK from HARMAN. airsdk.harman.com. Дата обращения: 21 сентября 2023. Архивировано 30 сентября 2023 года.
  5. ActionScript 3.0 Language Reference. airsdk.dev. Дата обращения: 21 сентября 2023. Архивировано 25 сентября 2023 года.
  6. Ted Patrick | Entrepreneur, father, and interactive software developer Архивировано 30 сентября 2009 года.
  7. Six reasons to use ActionScript 3.0 | Adobe Developer Connection. Дата обращения: 9 декабря 2009. Архивировано 10 февраля 2009 года.

Ссылки править