VOOZH about

URL: https://ru.wikipedia.org/wiki/ActionScript

⇱ ActionScript — Википедия


Перейти к содержанию
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 9 июля 2015 года; проверки требуют 33 правки.
Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (1 мая 2013)
ActionScript
👁 Изображение логотипа
Класс языка Объектно-ориентированный, прототипный, императивный, скриптовый
Появился в 1998
Автор Гарри Гроссман
Разработчик Macromedia
Выпуск 3.0
Система типов сильная, статическая
Основные реализации Adobe Flash Player, Adobe AIR, Apache Flex
Испытал влияние JavaScript, Java
ActionScript
👁 Изображение логотипа
MIME-тип application/ecmascript[1]
Разработчик Macromedia
Последний выпуск
Тип формата функциональный, мультипарадигмальный и язык программирования

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[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:
Не поддерживается AS1 AS1, AS2 AS1, AS2, AS3

Синтаксис ActionScript основан на спецификации ECMAScript.

Данный код создаёт новое текстовое поле на глубине (depth) 0, в точке (0, 0) и размером 100 на 100 пикселей. Параметр text равен строчке «». Код должен быть записан в окне action — frame

createTextField("greet",0,0,0,100,100);
greet.text="Hello world!";

Пример класса, написанного на AS2. Код должен сохраняться в отдельном .as-файле и располагаться в одной папке с .fla-исходником проекта.

classcom.example.GreeterextendsMovieClip
{
publicfunctionGreeter()
{
}
publicfunctiononLoad():Void
{
vartxtHello:TextField=this.createTextField("txtHello",0,0,0,100,100);
txtHello.text="Hello Ako!";
}
}

В исходном коде, компилируемом Adobe Flex SDK (AS 3.0):

package{

importflash.display.Sprite;
importflash.text.TextField;

publicclassHelloWorldextendsSprite{
publicfunctionHelloWorld(){
vartxtHello:TextField=newTextField();
txtHello.text="Hello world!";
this.addChild(txtHello);
}
}

Код, написанный на MXML (расширение XML):

<?xml version="1.0" encoding="utf-8"?>
<mx:Applicationxmlns: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:Labelid="title"fontSize="24"fontStyle="bold"text='"Hello, world!" Example'/>
<mx:TextAreaid="mainTxt"width="250"/>

</mx:Application>

Пример работы отладчика. Выводит на экран output любые данные, которые возможно преобразовать в String (AS2 и далее):

trace("Hello world!");

Элементарные типы данных

[править | править код]
Тип Описание
String Строчка, массив символов, например: «Hello, World»
Number Любое числовое значение, например: 0, 0.5, 1150
Boolean Логическая величина, может принимать значения «true» или «false».
Object Объект. Примером объекта являются классы, методы, функции, параметры и т. д.

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

[править | править код]
Тип Описание
MovieClip Графический объект, содержащий кадры.
TextField Динамическое или вводимое текстовое поле.
Button Кнопка. Является по сути Movie Clip с предопределенным поведением. Состоит из 4 кадров: Up, Over, Down и Hit.
Date Объект, содержащий сведения о дате/времени.
Array Массив данных.
XML XML-объект
XMLNode XML-node
LoadVars Служит для отправки и приёма переменных при помощи HTTP POST и HTTP GET
Sound Содержит звуковые данные .MP3 формата
NetStream Содержит звуковые данные других форматов
NetConnection Позволяет взаимодействовать 2 flash-роликам в одной области видимости (например на рабочем столе, или в одной вкладке браузера)
MovieClipLoader Класс для подзагрузки swf роликов и .jpg .png изображений
EventListener Обработчик событий

Элементарные типы данных

[править | править код]

(см. документацию 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 Регулярные выражения
XML XML-объект, базирующийся на 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) .

Примечания

[править | править код]
  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 года.