ActionScript
| Класс языка: | |
|---|---|
| Появился в: |
1998 |
| Автор(ы): | |
| Релиз: |
3.0 |
| Типизация данных: | |
| Основные реализации: | |
| Испытал влияние: |
| Расширение |
|
|---|---|
| MIME |
|
ActionScript — объектно-ориентированный язык программирования, один из диалектов ECMAScript, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной (ActionScript Virtual Machine), которая является составной частью Flash Player. ActionScript компилируется в байткод, который включается в SWF-файл.
SWF-файлы исполняются Flash Player-ом. Flash Player существует в виде плагина к веб-браузеру, а также как самостоятельное исполняемое приложение (standalone). Во втором случае возможно создание исполняемых exe-файлов (projector), когда swf-файл включается во Flash Player.
С помощью ActionScript можно создавать интерактивные мультимедиа-приложения, игры, веб-сайты и многое другое.
Содержание |
[править] История
ActionScript как язык появился с выходом 5 версии Macromedia Flash, которая стала первой программируемой на ActionScript средой. Первый релиз языка назывался ActionScript 1.0. Flash 6 (MX). В 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). Такое увеличение производительности возможно лишь для некоторых типов данных и требует особой организации кода[2]. Объём кода, как правило увеличивается в несколько раз[3] (по сравнению с AS1)
| Версии плеера | Нововведения |
|---|---|
| 2 |
Появились «действия», в дальнейшем известные как:
|
| 3 | Появление loadMovie(); |
| 4 | Первая версия с полной поддержкой скриптовой имплементации. |
| 5 | Появление первой версии ActionScript. Использовалось прототипное программирование на базе ECMAScript и предоставлена полная поддержка процедурного и объектно-ориентированного программирования. |
| 6 | |
| 7 |
|
| 8 |
|
| 9 | |
| 10 | |
| 10.2 |
|
| 11 |
|
| Поддержка версий ActionScript: | |||
|---|---|---|---|
| Не поддерживается | AS1 | AS1, AS2 | AS1, 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, world"; } }
[править] 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 | Массив данных. |
| XML | XML-объект |
| XMLNode | XML-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-битное числовое значение в диапазоне от −253 до 253−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) .
[править] Примечания
- ↑ RFC 4329 (limit compatible with EcmaScript)
- ↑ http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf
- ↑ Six reasons to use ActionScript 3.0 | Adobe Developer Connection
[править] Ссылки
- Страница на Adobe
- справочные данные и изучение на русском языке
- Большая библиотека уроков, примеров на actionscript.org
- Большая библиотека видеоуроков на русском языке, easyflash.org
|
|
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Диалекты | ActionScript · Caja · JavaScript (движки) · JScript · JScript .NET · Objective-J · QtScript · WMLScript | ||||||||||||
| Движки (сравнение) |
Carakan · Futhark · InScript · JavaScriptCore (SquirrelFish) · JScript · KJS · Linear B · Narcissus · QtScript · Rhino · YAJI · SpiderMonkey (TraceMonkey, JägerMonkey) · Tamarin · V8 · Chakra | ||||||||||||
| Фреймворки, библиотеки |
|
||||||||||||
| Люди | Брендан Айк · Дуглас Крокфорд · Джон Резиг | ||||||||||||
| Другое | DHTML · Ecma International · JSAN · JSDoc · JSLint · JSON · JSSS · Sputnik · SunSpider · CommonJS | ||||||||||||
|
|
|
|---|---|
| Используемые в разработке |
Ада • АПЛ • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • Visual Basic .NET |
| Академические | |
| IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
| Прочие | |
| Эзотерические | |
| Визуального программирования |
|