ActionScript¶
ActionScript — это объектно-ориентированный язык программирования, предназначенный для создания интерактивных приложений, анимаций, веб-игр и мультимедийного контента, работающих на платформе Adobe Flash Player (ранее Macromedia Flash). Язык основан на стандарте ECMAScript (как и JavaScript) и используется для управления временной шкалой, обработки событий, работы с графикой, звуком и сетевыми запросами в среде выполнения Flash.
¶История
¶Ранние версии (ActionScript 1.0, 1996–2003)
ActionScript появился вместе с выходом Macromedia Flash 4 в 1999 году, хотя его предшественник — простой скриптовый язык для кнопок — существовал ещё в Flash 3 (1998). В Flash 4 язык получил название ActionScript и представлял собой набор команд для управления проигрыванием анимации (play, stop, gotoAndPlay). Он был слабо типизирован и не поддерживал объектно-ориентированное программирование (ООП). В 2000 году с выходом Flash 5 ActionScript был переработан: появилась поддержка прототипов, объектов и классов, синтаксис стал ближе к JavaScript (ECMAScript 3). Эта версия получила название ActionScript 1.0.
¶ActionScript 2.0 (2003–2006)
В 2003 году компания Macromedia выпустила Flash MX 2004 (версия 7), в котором была представлена ActionScript 2.0. Основные нововведения: строгая типизация (объявление типов переменных и возвращаемых значений), поддержка классического наследования через классы (ключевые слова class, extends, implements), а также встроенные компоненты пользовательского интерфейса. ActionScript 2.0 компилировался в байт-код, совместимый с Flash Player 6 и 7, но не был полноценным объектно-ориентированным языком — наследование оставалось прототипным, а классы были синтаксическим сахаром.
¶ActionScript 3.0 (2006 — настоящее время)
С выходом Adobe Flash Player 9 в 2006 году и среды разработки Adobe Flash CS3 язык был полностью переработан. ActionScript 3.0 базируется на стандарте ECMAScript 4 (который так и не был принят окончательно) и представляет собой зрелый объектно-ориентированный язык с поддержкой:
- классов и интерфейсов;
- строгой типизации;
- пакетов (namespaces);
- замыканий (closures);
- обработки исключений (try/catch/finally);
- событийной модели (EventDispatcher);
- бинарных операций и регулярных выражений.
ActionScript 3.0 выполняется на виртуальной машине AVM2 (ActionScript Virtual Machine 2), которая значительно быстрее и эффективнее AVM1, использовавшейся для предыдущих версий. Это позволило создавать сложные приложения, включая 3D-игры (с использованием Stage3D) и полноценные веб-клиенты.
¶Архитектура и среда выполнения
¶Flash Player и AIR
ActionScript 3.0 работает в среде выполнения Adobe Flash Player (браузерный плагин) или Adobe AIR (для настольных и мобильных приложений). Flash Player использует векторную графику, растровые изображения, видео и аудио, а также обеспечивает сетевые возможности (HTTP, сокеты, RTMP). AIR расширяет функциональность: доступ к файловой системе, локальным базам данных (SQLite), системному буферу обмена, нативным окнам и уведомлениям.
¶Виртуальная машина AVM2
AVM2 — это стековая виртуальная машина, которая выполняет байт-код (ABC — ActionScript Byte Code). Код компилируется в SWF-файл (Shockwave Flash) — бинарный формат, содержащий скомпилированные классы, ресурсы (графика, звук, шрифты) и метаданные. AVM2 поддерживает сборку мусора, JIT-компиляцию (Just-In-Time) и динамическую загрузку модулей.
¶Библиотеки и фреймворки
Основная библиотека ActionScript 3.0 — Flash Platform API (fl., flash., mx.*). Ключевые пакеты:
- flash.display — работа с экраном, спрайтами, сценой;
- flash.events — событийная модель;
- flash.net — сетевое взаимодействие (URLLoader, Socket, NetStream);
- flash.media — аудио и видео;
- flash.text — работа с текстом;
- flash.geom — геометрические преобразования (точки, матрицы);
- flash.utils — утилиты (таймеры, кодирование).
Для разработки приложений использовались фреймворки:
- Flex SDK (Adobe) — для создания Rich Internet Applications (RIA) с компонентным подходом (MXML + ActionScript);
- Starling Framework — для 2D-игр на основе Stage3D;
- Away3D и Alternativa3D — для 3D-графики;
- Robotlegs, PureMVC — для архитектурных паттернов (MVC).
¶Применение
¶Веб-анимация и реклама
До середины 2010-х годов ActionScript был основным языком для создания интерактивной веб-анимации, баннеров и рекламных роликов. Flash-ролики обеспечивали плавную векторную анимацию, поддержку прозрачности и интерактивность (клики, перетаскивание, формы). Однако с распространением HTML5, CSS3 и JavaScript, а также с отказом Adobe от поддержки Flash Player (2020 год), эта область практически исчезла.
¶Веб-игры
ActionScript 3.0 использовался для создания браузерных игр (казуальные, головоломки, аркады). Платформы вроде Kongregate, Newgrounds и Armor Games были построены на Flash. Благодаря Stage3D (с 2011 года) стали возможны 3D-игры, например, «Minecraft Classic» (браузерная версия) и «RuneScape» (до перехода на HTML5). Сейчас большинство Flash-игр эмулируются через Ruffle (открытая реализация Flash Player) или конвертируются в HTML5.
¶Rich Internet Applications (RIA)
Flex-приложения на ActionScript 3.0 использовались для создания корпоративных веб-интерфейсов: дашборды, редакторы, CRM-системы. Примеры: Adobe Connect (веб-конференции), Yahoo! Maps (до 2013 года), eBay Desktop (через AIR). Однако с 2010-х годов RIA-сегмент перешёл на JavaScript и фреймворки (React, Angular).
¶Мобильные приложения (AIR)
Adobe AIR позволял компилировать ActionScript-приложения для iOS, Android и BlackBerry. Были созданы игры (например, «Angry Birds» — оригинальная версия на Flash), утилиты и медиаплееры. Однако производительность и ограничения платформы привели к упадку: Apple отказалась от поддержки Flash на iOS, а Google ограничил использование AIR в Play Store.
¶Упадок и наследие
¶Прекращение поддержки Flash Player
В 2017 году Adobe объявила о прекращении поддержки Flash Player к концу 2020 года. Основные причины: уязвимости безопасности (Flash был частой целью атак), низкая производительность на мобильных устройствах, отсутствие поддержки со стороны Apple (iOS) и Google (Chrome). 31 декабря 2020 года Adobe выпустила последнее обновление, после чего Flash Player был деактивирован в браузерах.
¶Эмуляция и сохранение
Для сохранения Flash-контента создан проект Ruffle (открытая реализация Flash Player на Rust), который поддерживает ActionScript 1.0/2.0 и частично 3.0. Также существуют конвертеры SWF в HTML5 (например, Google Swiffy, закрыт в 2016 году). Многие классические Flash-игры и анимации доступны через архивы (Flashpoint, BlueMaxima).
¶Влияние на другие технологии
ActionScript 3.0 повлиял на развитие Haxe — языка, который компилируется в несколько платформ (включая SWF). Синтаксис ActionScript также близок к TypeScript (статическая типизация, классы, интерфейсы). Многие концепции (событийная модель, диспетчеры, спрайты) были заимствованы HTML5-фреймворками (CreateJS, PixiJS).
¶Инструменты разработки
¶Adobe Flash Professional (Animate)
Основная среда разработки — Adobe Flash Professional (с 2016 года — Adobe Animate). Поддерживает визуальное редактирование анимации, временную шкалу, импорт графики и звука, а также написание кода на ActionScript 3.0. В Animate также возможна публикация в HTML5 Canvas, что позволяет мигрировать старые проекты.
¶Adobe Flash Builder
IDE на основе Eclipse для разработки Flex-приложений. Поддерживает визуальный редактор MXML, отладку, профилирование и сборку проектов. Прекращён в 2015 году.
¶Открытые альтернативы
- Apache Flex SDK — открытая реализация Flex, поддерживающая компиляцию ActionScript 3.0 в SWF.
- Haxe — язык, компилируемый в SWF (с поддержкой ActionScript 3.0-совместимого API).
- Ruffle — эмулятор Flash Player, позволяющий выполнять SWF-файлы в браузере.
¶Критика
ActionScript критиковался за:
- Закрытость платформы — Flash Player был проприетарным, что ограничивало свободу разработчиков и пользователей.
- Проблемы безопасности — многочисленные уязвимости (CVE-2011-0611, CVE-2015-5119) приводили к массовым атакам через Flash-баннеры.
- Производительность — на мобильных устройствах Flash потреблял много ресурсов и быстро разряжал батарею.
- Отсутствие поддержки со стороны мобильных платформ — Apple отказалась от Flash на iOS, что фактически убило рынок мобильных Flash-приложений.
¶Интересные факты
- ActionScript 3.0 поддерживает байт-код, который может быть выполнен на виртуальной машине AVM2, написанной на C++.
- В 2010 году Adobe выпустила Flash Player 10.1 с поддержкой аппаратного ускорения (StageVideo).
- Самая популярная Flash-игра — «FarmVille» (Zynga, 2009) — насчитывала более 80 миллионов активных пользователей.
- В 2020 году компания «Майкрософт» (Microsoft) удалила Flash Player из Windows 10 через обновление KB4577586.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


