ActionScript
| 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 |
Появились «действия», в дальнейшем известные как:
|
| 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 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, 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-битное числовое значение в диапазоне от −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) .
Примечания
- ↑ RFC 4329 (limit compatible with EcmaScript)
- ↑ Архивированная копия. Дата обращения: 9 июля 2015. Архивировано из оригинала 27 марта 2017 года.
- ↑ Для получения последней версии AIR посетите веб-сайт HARMAN/Action Script. Дата обращения: 21 сентября 2023. Архивировано 6 сентября 2023 года.
- ↑ Adobe AIR SDK from HARMAN. airsdk.harman.com. Дата обращения: 21 сентября 2023. Архивировано 30 сентября 2023 года.
- ↑ ActionScript 3.0 Language Reference. airsdk.dev. Дата обращения: 21 сентября 2023. Архивировано 25 сентября 2023 года.
- ↑ Ted Patrick | Entrepreneur, father, and interactive software developer Архивировано 30 сентября 2009 года.
- ↑ Six reasons to use ActionScript 3.0 | Adobe Developer Connection. Дата обращения: 9 декабря 2009. Архивировано 10 февраля 2009 года.
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.