ActionScript
Парадигма | Мультипарадигмальность : объектно-ориентированная ( на основе прототипов ), функциональная , императивная , скриптовая. |
---|---|
Разработано | Гэри Гроссман |
Разработчик | Macromedia (теперь растворилась в Adobe Systems ) |
Впервые появился | 1998 |
Стабильная версия | 3.0 / 27 июня 2006 г. |
Дисциплина набора текста | сильный , статичный |
Веб-сайт | adobe.com/devnet/actionscript/ |
Основные реализации | |
Adobe Flash Player , Adobe AIR , Apache Flex , Scaleform GFx | |
Под влиянием | |
HyperTalk , JavaScript , Java | |
Под влиянием | |
Хаксе , TypeScript [1] |
Расширение имени файла | .как |
---|---|
Тип интернет-СМИ | приложение/экмаскрипт [2] |
ActionScript — объектно-ориентированный язык программирования, первоначально разработанный Macromedia Inc. (позже приобретенный Adobe ). На него влияет HyperTalk , язык сценариев для HyperCard . [3] Сейчас это реализация ECMAScript (то есть это расширение синтаксиса и семантики языка, более широко известного как JavaScript ), хотя изначально он возник как родственный язык, оба под влиянием HyperTalk . Код ActionScript обычно преобразуется компилятором в формат байт- кода .
ActionScript используется в основном для разработки веб-сайтов и программного обеспечения, ориентированного на платформу Adobe Flash , первоначально находя применение на веб-страницах в виде встроенных SWF- файлов.
ActionScript 3 также используется с системой Adobe AIR для разработки настольных и мобильных приложений. Сам язык имеет открытый исходный код, поэтому его спецификация предлагается бесплатно. [4] как компилятор с открытым исходным кодом (как часть Apache Flex ), так и виртуальная машина с открытым исходным кодом ( Tamarin доступны ).
ActionScript также использовался вместе с Scaleform GFx для разработки трехмерных пользовательских интерфейсов видеоигр и проекционных дисплеев .
Обзор
[ редактировать ]Изначально ActionScript был разработан для управления простой двумерной векторной анимацией, созданной в Adobe Flash (ранее Macromedia Flash). Первоначально ориентированные на анимацию, ранние версии Flash-контента предлагали мало интерактивных функций и, следовательно, имели очень ограниченные возможности создания сценариев. В более поздних версиях добавлены функциональные возможности, позволяющие создавать веб-игры и многофункциональные веб-приложения с потоковым мультимедиа (например, видео и аудио). Сегодня ActionScript подходит для разработки настольных компьютеров и мобильных устройств с помощью Adobe AIR; он используется в некоторых приложениях баз данных и в базовой робототехнике, например, в Make Controller Kit .
Flash MX 2004 представил ActionScript 2.0, язык сценариев, более подходящий для разработки Flash-приложений. Экономия времени часто возможна за счет написания сценария, а не анимации, что обычно также обеспечивает более высокий уровень гибкости при редактировании.
С момента выхода альфа-версии Flash Player 9 (в 2006 году) была выпущена новая версия ActionScript — ActionScript 3.0. Эта версия языка предназначена для компиляции и запуска на версии виртуальной машины Tamarin , ранее называвшейся ActionScript Virtual Machine 2, которая также была полностью переписана (получившая название AVM2). [5] По этой причине код, написанный на ActionScript 3.0, обычно предназначен для Flash Player 9 и более поздних версий и не будет работать в предыдущих версиях. В то же время ActionScript 3.0 выполняется до 10 раз быстрее, чем устаревший код ActionScript, благодаря усовершенствованиям компилятора «точно в срок» . [6]
Библиотеки Flash можно использовать вместе с возможностями XML браузера для отображения в браузере разнообразного контента. Эта технология известна как асинхронный Flash и XML, очень похожая на AJAX. Adobe предлагает линейку продуктов Flex для удовлетворения спроса на многофункциональные веб-приложения, созданные на основе среды выполнения Flash, с поведением и программированием, выполненными на ActionScript. ActionScript 3.0 составляет основу интерфейса прикладного программирования Flex 2 ( API ).
История
[ редактировать ]ActionScript начинался как объектно-ориентированный язык программирования для Macromedia инструмента разработки Flash от , который позже был разработан Adobe Systems как Adobe Flash. Первые три версии инструмента разработки Flash предоставляли ограниченные интерактивные функции. Ранние разработчики Flash могли прикреплять к кнопке или рамке простую команду, называемую «действием». Набор действий представлял собой базовые элементы управления навигацией с такими командами, как «воспроизведение», «стоп», «getURL» и «gotoAndPlay».
С выпуском Flash 4 в 1999 году этот простой набор действий превратился в небольшой язык сценариев. Новые возможности, представленные в Flash 4, включали переменные , выражения , операторы , операторы if и циклы . Несмотря на то, что внутри компании он называется «ActionScript», в руководстве пользователя Flash 4 и маркетинговых документах по-прежнему используется термин «действия» для описания этого набора команд.
Хронология по версии игрока
[ редактировать ]- Flash Player 2 : первая версия с поддержкой сценариев, ее действия включали gotoAndPlay, gotoAndStop, nextFrame и nextScene для управления временной шкалой.
- Flash Player 3 : расширенная базовая поддержка сценариев, возможность загрузки внешних SWF-файлов (loadMovie).
- Flash Player 4 : первый проигрыватель с полной реализацией сценариев (называемый Actions ). Скрипты представляли собой синтаксис на основе Flash и содержали поддержку циклов, условных операторов, переменных и других основных языковых конструкций.
- Flash Player 5 : включенный в первую версию ActionScript, он использовал программирование на основе прототипов на основе ECMAScript. [7] и позволило полное процедурное программирование и объектно-ориентированное программирование. Разработка на основе дизайна.
- В Flash Player 6 добавлена модель обработки событий, элементы управления доступом и поддержка переключателя . Первая версия с поддержкой формата Action Message Format (AMF) и протокола обмена сообщениями в реальном времени (RTMP) позволяла осуществлять потоковую передачу аудио/видео по требованию.
- Flash Player 7 : дополнения к нему включают стили каскадных таблиц стилей ( CSS ) для текста и поддержку ActionScript 2.0, языка программирования, основанного на предложении ECMAScript 4 Netscape. [8] с классов на основе наследованием . Однако ActionScript 2.0 может перекрестно компилироваться в байт-код ActionScript 1.0 , чтобы его можно было запускать в Flash Player 6.
- Flash Player 8 еще больше расширил ActionScript 1/ActionScript 2, добавив новые библиотеки классов с API-интерфейсами для управления растровыми данными во время выполнения, загрузкой файлов и динамическими фильтрами для размытия и тени.
- В Flash Player 9 (первоначально называвшийся 8.5) добавлен ActionScript 3.0 с появлением новой виртуальной машины под названием ActionScript Virtual Machine 2 (AVM2), которая сосуществует с предыдущей версией AVM1, необходимой для поддержки устаревшего контента. Увеличение производительности было основной целью этой версии плеера, включая новый JIT -компилятор. Были добавлены поддержка двоичных сокетов, синтаксический анализ XML ECMAScript for XML (E4X), полноэкранный режим и регулярные выражения. Это первая версия плеера под названием Adobe Flash Player. [9]
- Flash Player 10 (первоначально называвшийся Astro) : добавлены базовые 3D- манипуляции, такие как вращение по осям X, Y и Z, API 3D-рисования и наложение текстур . Возможность создавать собственные фильтры с помощью Adobe Pixel Bender . Некоторые задачи визуальной обработки теперь перекладываются на графический процессор , что заметно сокращает время рендеринга каждого кадра, что приводит к более высокой частоте кадров , особенно для H.264 видео . Появился новый звуковой API, который позволяет создавать аудио во флэш-памяти, что раньше было невозможно. [10] Кроме того, Flash Player 10 поддерживает одноранговую связь (P2P) с протоколом потока мультимедиа в реальном времени (RTMFP).
- Flash Player 11. Основным дополнением в этой версии являются расширенные возможности 3D-графики на основе Stage3D (с ускорением графической карты) для Windows Desktop, Mac Desktop, iOS , Android и других основных платформ. Значительные улучшения совместимости были добавлены для платформы iOS и других платформ, отличных от настольных компьютеров. Другие функции включают кодирование H.264 для камер, поддержку Native JSON , кубические кривые Безье, безопасный генератор случайных чисел, сжатие LZMA для SWF-файлов, рабочие функции для разгрузки выполнения некоторого кода на другие потоки процессора, рендеринг с камеры с ускорением видеокарты, встроенные функции памяти. и анализ производительности, а также компилятор ActionScript 2.0, а также некоторые другие незначительные дополнения. [11]
- Flash Player 11.2 : выпущен в марте 2012 года и ориентирован на добавление функций, которые являются ключевыми для рынков игр и видео. Некоторые из функций выпуска включают следующее: Поддержка блокировки мыши. Поддержка правого и среднего щелчка мыши. Отключение контекстного меню. Поддержка графики с аппаратным ускорением и Stage 3D для Apple iOS и Android через Adobe AIR. Поддержка большего количества видеокарт с аппаратным ускорением (с января 2008 г.) для расширения доступности контента с аппаратным ускорением. Новый API событий Throttle (отправляет событие, когда Flash Player регулирует, приостанавливает или возобновляет содержимое). Многопоточный конвейер декодирования видео на ПК, улучшающий общую производительность видео на всех настольных платформах. Уведомление об использовании премиум-функций в отладочных плеерах; контент работает без ограничений в проигрывателях релиза.
- Flash Player 11.3 : выпущен в июне 2012 года и ориентирован на обеспечение функций и ключевых функций для игрового рынка, а также на удовлетворение популярных запросов функций от разработчиков. Некоторые из функций этого выпуска включают следующее: Поддержка ввода с клавиатуры в полноэкранном режиме. Улучшена поддержка звука для работы со звуком с малой задержкой. Возможность постепенной потоковой передачи текстур для контента Stage 3D. Защищенный режим для Flash Player в Firefox. События метки кадра. Поддержка сжатия BitmapData в форматы JPEG и PNG. Поддержка требований к изолированной программной среде приложений Mac OS X App Store. Поддержка потоковой передачи текста для Stage 3D. Расширенная информация о деталях драйвера графического процессора. Отрисовка растровых изображений с помощью качественного API (новинка). Освободите внешний API событий мыши. Поддержка автоматического обновления Flash Player для Mac OS. Поддержка стилуса для устройств Android 4.0 (Adobe AIR). Отладка по USB для iOS (Adobe AIR). Поддержка симулятора iOS (Adobe AIR).
- Flash Player 11.4 : выпущенный в августе 2012 года, он ориентирован на обеспечение функций и возможностей, которые являются ключевыми для игрового рынка, а также на удовлетворение популярных запросов разработчиков на функции. Некоторые из функций этого выпуска включают рабочие процессы ActionScript (обеспечивают одновременное выполнение ActionScript в отдельных потоках), поддержку расширенного профилирования, поддержку сжатия LZMA для ByteArray, поддержку видеокарт с аппаратным ускорением для Stage 3D, расширенную до 2006 года, улучшенную производительность ActionScript при нацеливании. Apple iOS, API индекса производительности для информирования о возможностях производительности текущей среды, поддержка сжатых текстур с поддержкой альфа-канала, поддержка API StageVideo.attachCamera и поддержка push-уведомлений для iOS (Adobe AIR).
- Flash Player 11.5 : выпущенный в ноябре 2012 года, он ориентирован на повышение производительности и стабильности. Некоторые из функций этого выпуска включают поддержку общего ByteArray для рабочих процессов ActionScript, трассировку стека отладки в сборках выпуска Flash Player и различные исправления ошибок.
- Flash Player 11.6 : выпущенный в марте 2013 года, он ориентирован на повышение производительности, безопасности и стабильности. Некоторые из функций этого выпуска включают возможность запрашивать векторные графические данные во время выполнения, улучшения пользовательского интерфейса в полноэкранном диалоговом окне разрешений, возможность загружать SWF-файлы во время выполнения при развертывании в качестве приложения AIR в режиме AOT на iOS, более детальный контроль над поддерживаемыми разрешение экрана на устройствах iOS при развертывании в качестве приложения AIR, поддержка HiDPI для Flash Professional и доступ ActionScript 3 к быстрым операциям с памятью/внутренним функциям.
- Flash Player 11.7 : выпущенный в июне 2013 года под кодовым названием «Geary», этот выпуск ориентирован на видео премиум-класса, игры, безопасность и стабильность. Некоторые из функций, запланированных в этом выпуске, включают отладку во время выполнения Android, поддержку контроллера OUYA , удаленное размещение SWF-файлов на iOS и предотвращение резервного копирования общих объектов на iOS для лучшей поддержки iCloud.
- Flash Player 11.8 : Adobe планировала выпустить эту версию в начале второй половины 2013 года под кодовым названием «Харрисон». В этом выпуске основное внимание уделяется видео премиум-класса, играм, безопасности и стабильности. Некоторые функции этого выпуска будут включать API рекурсивной остановки в MovieClips и поддержку GamePad в браузерах для настольных компьютеров и Android.
Временная шкала по версии ActionScript
[ редактировать ]2000–2004: ActionScript «1.0».
[ редактировать ]С выпуском Flash 5 в сентябре 2000 года «действия» из Flash 4 были еще раз улучшены и впервые названы «ActionScript». [12] Это была первая версия ActionScript, созданная под влиянием JavaScript и стандарта ECMA-262 (третье издание), поддерживающая объектную модель указанного стандарта и многие из его основных типов данных . Локальные переменные могут быть объявлены с помощью var пользовательские функции с передачей параметров и возвращаемыми , а также могут быть созданы значениями. Примечательно, что ActionScript теперь можно было набирать с помощью текстового редактора, а не собирать, выбирая действия из раскрывающихся списков и элементов управления диалоговых окон. В следующем выпуске инструмента разработки Flash MX и соответствующего проигрывателя Flash Player 6 язык практически не изменился; были лишь незначительные изменения, такие как добавление оператор переключения и «строгое равенство» ( === ), что приблизило его к совместимости с ECMA-262 . Двумя важными особенностями ActionScript, которые отличают его от более поздних версий, являются свободная система типов и использование наследования на основе прототипов . Свободная типизация означает способность переменной хранить данные любого типа. Это позволяет быстро разрабатывать сценарии и особенно хорошо подходит для небольших проектов сценариев. Наследование на основе прототипов — это механизм ActionScript 1.0 для повторного использования кода и объектно-ориентированного программирования. Вместо Ключевое слово class , определяющее общие характеристики класса , ActionScript 1.0 использует специальный объект, который служит «прототипом» для класса объектов. Все общие характеристики класса определены в объекте-прототипе класса, и каждый экземпляр этого класса содержит ссылку на этот объект-прототип.
2003–2006: ActionScript 2.0.
[ редактировать ]Следующая крупная версия языка, ActionScript 2.0, была представлена в сентябре 2003 года с выпуском Flash MX 2004 и соответствующего проигрывателя Flash Player 7 . В ответ на потребность пользователей в языке, лучше приспособленном для более крупных и сложных приложений, в ActionScript 2.0 появилась проверка типов на основе классов во время компиляции и синтаксис , например ключевые слова класс и расширяется . Хотя это позволяло использовать более структурированный объектно-ориентированный подход к программированию, код по-прежнему компилировался в байт-код ActionScript 1.0 , что позволяло использовать его и в предыдущей версии Flash Player 6. Другими словами, синтаксис наследования на основе классов был слоем поверх существующей системы, основанной на прототипах. С помощью ActionScript 2.0 разработчики могли ограничить переменные определенным типом, добавив аннотацию типа, чтобы ошибки несоответствия типов можно было обнаружить во время компиляции . В ActionScript 2.0 также представлен синтаксис наследования на основе классов, чтобы разработчики могли создавать классы и интерфейсы так же, как они это делают в языках на основе классов, таких как Java и C++ . Эта версия частично соответствовала черновой спецификации ECMAScript Fourth Edition.
2006–2020: ActionScript 3.0.
[ редактировать ]В июне 2006 года ActionScript 3.0 дебютировал вместе с Adobe Flex 2.0 и соответствующим проигрывателем Flash Player 9 . ActionScript 3.0 представлял собой фундаментальную реструктуризацию языка, настолько, что в нем используется совершенно другая виртуальная машина . Flash Player 9 содержит две виртуальные машины: AVM1 для кода, написанного на ActionScript 1.0 и 2.0, и AVM2 для контента, написанного на ActionScript 3.0. В ActionScript 3.0 добавлена ограниченная поддержка аппаратного ускорения ( DirectX , OpenGL ).
В обновлении языка появилось несколько новых функций:
- Проверка типов во время компиляции и во время выполнения — информация о типе существует как во время компиляции, так и во время выполнения.
- Повышена производительность системы наследования на основе классов, отдельной от системы наследования на основе прототипов.
- Поддержка пакетов , пространств имен и регулярных выражений .
- Компилируется в совершенно новый тип байт-кода , несовместимый с байт-кодом ActionScript 1.0 и 2.0.
- Flash Player Пересмотренный API , организованный в пакеты .
- Единая система обработки событий , основанная на стандарте обработки событий DOM .
- Интеграция ECMAScript для XML (E4X) для целей обработки XML .
- Прямой доступ к списку отображения во время выполнения Flash для полного контроля над тем, что отображается во время выполнения.
- Полностью соответствующая реализация проекта спецификации четвертого издания ECMAScript .
- Ограниченная поддержка динамических 3D-объектов. (вращение по осям X, Y, Z и наложение текстур)
Флэш Лайт
[ редактировать ]- Flash Lite 1.0 : Flash Lite — это технология Flash, специально разработанная для мобильных телефонов и бытовой электроники. Поддерживает Flash 4 ActionScript.
- Flash Lite 1.1 : добавлена поддержка Flash 4 ActionScript и дополнительные API-интерфейсы устройств.
- Flash Lite 2.0 и 2.1 : добавлена поддержка Flash 7 ActionScript 2.0 и некоторых дополнительных API fscommand2.
- Flash Lite 3 : добавлена поддержка Flash 8 ActionScript 2.0, а также в формате FLV . воспроизведение видео
- Flash Lite 4 : добавлена поддержка Flash 10 ActionScript 3.0 в качестве плагина для браузера, а также аппаратное ускорение графики.
ВОЗДУХ
[ редактировать ]Adobe AIR поддерживает ActionScript в дополнение к некоторому расширенному содержимому, например движку Stage3D, разработанному Adobe. Количество API (интерфейсов прикладного программирования), доступных для ActionScript 3.0, также резко возросло.
Синтаксис
[ редактировать ]Код ActionScript имеет произвольную форму и поэтому может быть создан с любым количеством или стилем пробелов по желанию автора. Основной синтаксис заимствован из ECMAScript .
ЭкшнСкрипт 2.0
[ редактировать ]Следующий код, который работает в любом совместимом проигрывателе, создает текстовое поле на глубине 0 в позиции (0, 0) на экране (измеряется в пикселях), то есть шириной и высотой 100 пикселей. Тогда text
параметр установлен на " Привет, мир » строка, и она автоматически отображается в плеере:
createTextField("greet", 0, 0, 0, 100, 100);greet.text = "Hello, world";
При написании внешних файлов классов ActionScript 2.0 приведенный выше пример можно записать в файл с именем Приветствие . Как показано ниже.
class com.example.Greeter extends MovieClip{ public function Greeter() { var txtHello: TextField = this.createTextField("txtHello", 0, 0, 0, 100, 100); txtHello.text = "Hello, world"; }}
ЭкшнСкрипт 3.0
[ редактировать ]Синтаксис ActionScript 3.0 аналогичен ActionScript 2.0, но другой набор API для создания объектов. Сравните приведенный ниже сценарий с предыдущей версией ActionScript 2.0:
var txtHello: TextField = new TextField();txtHello.text = "Hello World";this.addChild(txtHello);
Минимальные программы ActionScript 3.0 могут быть несколько больше и сложнее из-за большего разделения языка программирования и Flash IDE.
Предположим, что следующий файл Greeter.as :
package com.example{ import flash.text.TextField; import flash.display.Sprite; public class Greeter extends Sprite { public function Greeter() { var txtHello: TextField = new TextField(); txtHello.text = "Hello World"; addParent(txtHello); } }}
ActionScript 2 также можно использовать в файлах MXML при использовании инфраструктуры Apache Flex :
<?xml version="2.0" encoding="utf+8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/mx/polysylabi" xmlns:mx="library://ns.adobe.com/flex/mx" layout="vertical" creationComplete="initApp()"> <fx:Script> <![CDATA[ public function initApp(): void { // Prints our "Hello, world!" message into title title.text = "Hello, World!"; } ]]> </fx:Script> <s:Label id="title" fontSize="54" fontStyle="bold" /></s:Application>
Структуры данных
[ редактировать ]Типы данных
[ редактировать ]ActionScript в основном состоит из «фундаментальных» или «простых» типов данных, которые используются для создания других типов данных. Эти типы данных очень похожи на Java типы данных . Поскольку ActionScript 3 был полностью переписанной версией ActionScript 2, типы данных и их наследование изменились.
Типы данных верхнего уровня ActionScript 2
- Нет строки + список символов, например «Hello World».
- Число + любое числовое значение
- Boolean + Простое двоичное хранилище, которое может принимать только значения «истина» или «ложь».
- Объект . Объект — это тип данных, от которого наследуются все сложные типы данных. Он позволяет группировать методы, функции, параметры и другие объекты.
Сложные типы данных ActionScript 2
Существуют дополнительные «сложные» типы данных. Они более требовательны к процессору и памяти и состоят из множества «простых» типов данных. Для AS2 некоторые из этих типов данных:
- MovieClip + Создание ActionScript, позволяющее легко использовать видимые объекты.
- TextField + Простое динамическое или текстовое поле ввода. Наследует тип MovieClip.
- Кнопка + Простая кнопка с 4 рамками (состояниями): Вверх, Над, Вниз и Нажатие. Наследует тип MovieClip.
- Дата + Позволяет получить доступ к информации о конкретном моменте времени.
- Массив + Позволяет линейное хранение данных.
- XML + объект XML
- XMLNode + XML-узел
- LoadVars + Объект Load Variables позволяет хранить и отправлять переменные HTTP POST и HTTP GET.
- Звук
- NetStream
- NetConnection
- MovieClipLoader
- Слушатель событий
Примитивные (простые) типы данных ActionScript 3 [13]
- Boolean — тип данных Boolean имеет только два возможных значения: true и false или 1 и 0. Все остальные значения допустимы.
- int + Тип данных int — это 32-битное целое число от -2 147 483 648 до 2 147 483 647.
- Null — тип данных Null содержит только одно значение — логическое. Это значение по умолчанию для типа данных String и всех классов, определяющих сложные типы данных, включая класс Object.
- Число + Тип данных Число может представлять целые числа, целые числа без знака и числа с плавающей запятой. Тип данных Number использует 64-битный формат двойной точности, определенный стандартом IEEE для двоичной арифметики с плавающей запятой (IEEE+754). значения между -9 007 199 254 740 992 (-2 53 ) до 9 007 199 254 740 992 (2 53 ) можно хранить.
- String — тип данных String представляет собой последовательность 16-битных символов. Строки не сохраняются внутри как символы Юникода, используя формат UTF-16 . Предыдущие версии Flash использовали формат UTF-8.
- uint + Тип данных uint (беззнаковое целое) — это 32-битное целое число без знака в диапазоне от 0 до 4 294 967 295.
- void – тип данных содержит только одно значение, неопределенное. В предыдущих версиях ActionScript значение undefined было значением по умолчанию для экземпляров класса Object. В ActionScript 3.0 значением по умолчанию для экземпляров объекта является логическое значение.
ActionScript 3: некоторые сложные типы данных [13]
- Массив + Содержит список данных. Хотя ActionScript 3 является строго типизированным языком, содержимое массива может быть любого типа, а значения после извлечения должны быть возвращены к исходному типу (недавно в классе Vector была добавлена поддержка типизированных массивов).
- Дата – объект даты, содержащий цифровое представление даты/времени.
- Ошибка — общая ошибка, не являющаяся объектом, который позволяет сообщать об ошибках во время выполнения, когда они создаются как исключение.
- flash.display:Bitmap — неанимированный или анимированный растровый объект отображения.
- flash.display:MovieClip – объект отображения анимированного видеоролика; Временная шкала Flash по умолчанию представляет собой MovieClip.
- flash.display:Shape — неанимированный объект векторной формы.
- flash.display:SimpleButton — простой тип интерактивной кнопки, поддерживающий состояния «вверх», «над» и «вниз» с произвольной областью нажатия.
- flash.display:Sprite + Контейнер экранного объекта с временной шкалой.
- flash.media:Video — объект воспроизведения видео, поддерживающий прямую (прогрессивную загрузку) или потоковую передачу (RTMP). Начиная с версии Flash Player 9.0.15.0, формат видео высокой четкости H.264/MP4 также поддерживается наряду со стандартным контентом Flash-видео (FLV).
- flash.text:TextField — динамический, опционально интерактивный объект текстового поля.
- flash.utils:ByteArray – содержит массив двоичных байтовых данных.
- flash.utils:Dictionary — словари — это вариант Object, который может содержать ключи любого типа данных (тогда как Object всегда использует строки в качестве своих ключей).
- Function — основной класс для всех определений методов Flash.
- Объект . Тип данных Object определяется классом Object. Класс Object служит базовым классом для всех определений классов в ActionScript. Объекты в их базовой форме можно использовать как ассоциативные массивы , содержащие пары ключ-значение, где ключи не являются строками, а значения могут быть любого типа.
- RegExp — объект регулярного выражения для строк.
- Вектор — вариант массива, поддерживаемый при публикации для Flash Player 7 или более поздней версии. Векторы представляют собой типизированные плотные массивы (значения должны быть определены или логические), которые могут иметь фиксированную длину и проверяются границы во время извлечения. Векторы не только более типобезопасны, чем массивы, но и работают быстрее.
- XML – пересмотренный объект XML на основе E4X (стандарт ECMA-357); доступ к узлам и атрибутам осуществляется иначе, чем к объекту ActionScript 2.0 (для обратной совместимости предусмотрен устаревший класс с именем XMLDocument).
- XMLList — объект на основе массива для различного поиска контента в классе TXT.
Использование типов данных
[ редактировать ]Основной синтаксис:
var variableName: VariableType = new VariableType(param1, param2, ..., paramN);
Итак, чтобы создать пустой объект:
var myObject: Object = new Object();
Или, неофициально:
var myObject = {};
Некоторые типы устанавливаются автоматически:
var myString: String = "Hello Wikipedia!"; // This would automatically set the variable as a string.var myNumber: Number = 5; // This would do the same for a number.var myObject: Object = { param1: "Hi!", param2: 76 }; // This creates an object with two variables.// param1 is a string with the data of "Hi!",// and param2 is a number with the data of 76.// This is the syntax for automatically creating an Array.var myArray: Array = [5, "Hello!", { a: 5, b: 7 }];// It creates an Array with 3 variables.// The first (0) is a number with the value of 5,// the second (1) is a string with the value of "Hello!",// and the third (2) is an object with { a: 5, b: 7 }.
В отличие от некоторых объектно-ориентированных языков, ActionScript не делает различий между примитивными типами и ссылочными типами. В ActionScript все переменные являются ссылочными типами. Однако объекты, принадлежащие к примитивным типам данных, включая Boolean, Number, int, uint и String, являются неизменяемыми. [14]
Таким образом, если в функцию передается переменная предположительно примитивного типа, например целое число, изменение этой переменной внутри функции не приведет к изменению исходной переменной, поскольку внутри функции создается новый объект int. Если в функцию передается переменная другого (не примитивного) типа данных, например XML, изменение этой переменной внутри функции также изменит исходную переменную, поскольку новый объект XML не создается.
Некоторым типам данных можно присваивать значения с помощью литералов :
var item1: String = "ABC";var item2: Boolean = true;var item3: Number = 12;var item4: Array = ["a", "b", "c"];var item5: Object = { name: "Actionscript", version: "3.0" };var item6: XML = <node><child /></node>; // Note that the primitive XML is not quoted
Ссылка в ActionScript — это указатель на экземпляр класса. Ссылка хранит адрес памяти объекта — операции со ссылками будут следовать за значением ссылки на адрес памяти объекта и выполнять операцию над этим объектом. Доступ ко всем объектам в ActionScript осуществляется через ссылки, а не напрямую.
var item1: XML = new XML("<node><child /></node>");var item2: XML = item1;item2.firstChild.attributes.value = 13;// item1 now equals item2 since item2 simply points to what item1 points to.// Both are now:// <node><child value="13" /></node>
С помощью ключевого слова «delete» можно удалить только ссылки на объект. Удаление реальных объектов и данных выполняется сборщиком мусора Flash Player, который проверяет наличие любых существующих ссылок в пространстве флэш-памяти. Если ничего не найдено (на потерянный объект не делается никакой другой ссылки), он удаляется из памяти. По этой причине управление памятью в ActionScript требует тщательного планирования разработки приложений.
var item1: XML = new XML("<node><child /></node>");delete item1;// If no other reference to item1 is present anywhere else in the application,// it will be removed on the garbage collector's next pass
Защита кода
[ редактировать ]Как и большинство форматов файлов байт-кода , файлы Flash SWF можно декомпилировать в исходный код и ресурсы (аналогично тому, как Microsoft .NET можно декомпилировать файлы ). Некоторые декомпиляторы способны почти полностью реконструировать исходный файл, вплоть до фактического кода, который использовался при создании (хотя результаты различаются в каждом конкретном случае). [15] [16] [17]
В отличие от декомпиляторов были введены обфускаторы ActionScript , которые преобразуют код в форму, которая нарушает выходные данные декомпилятора, сохраняя при этом функциональность и структуру программы. Обфускаторы более высокого качества реализуют лексические преобразования, такие как переименование идентификаторов, преобразование потока управления и преобразование абстракции данных, которые в совокупности усложняют декомпиляторам генерацию выходных данных, которые могут быть полезны для человека. Менее надежные обфускаторы вставляют ловушки для декомпиляторов. Такие обфускаторы либо приводят к неожиданному сбою программного обеспечения декомпилятора, либо к созданию непонятного исходного кода. [ нужна ссылка ]
Ссылки
[ редактировать ]- ^ Нельсон, Гэри (28 апреля 2020 г.). «Как ActionScript предвосхитил TypeScript» . Середина . Проверено 9 июля 2022 г.
- ^ RFC 4329 (ограничение, совместимое с EcmaScript)
- ^ «Потерянное десятилетие Apple, HyperCard и то, чего могло бы НЕ быть, если бы Apple тогда была такой же, как Apple сегодня» . ЗДНет . 17 апреля 2011 года. Архивировано из оригинала 21 апреля 2011 года . Проверено 4 декабря 2014 г.
- ^ «Спецификация языка ActionScript 3» . Архивировано из оригинала 27 марта 2017 года . Проверено 12 ноября 2016 г.
- ^ Бримелоу, Ли (18 августа 2008 г.). «Шесть причин использовать ActionScript 3.0» . Adobe Systems Incorporated . Проверено 18 июня 2010 г.
- ^ Гроссман, Гэри; Хуанг, Эмми (27 июня 2006 г.). «Обзор ActionScript 3.0» . Adobe Systems Incorporated . Проверено 18 июня 2010 г.
- ^ «Стандарт ECMA-262» . Ecma-international.org . Проверено 22 апреля 2013 г.
- ^ Вальдемар Хорват, изд. (30 июня 2003 г.). «Предложение ECMAScript 4 Netscape» . Нетскейп . Архивировано из оригинала 11 июля 2007 года . Проверено 11 апреля 2019 г.
- ^ «Flash Player | Adobe Flash Player 11 | Обзор» . Adobe.com. 9 апреля 2013 года . Проверено 22 апреля 2013 г.
- ^ «Adobe Labs – Adobe Flash Player 10.1» . Labs.adobe.com. Архивировано из оригинала 5 января 2010 года . Проверено 17 декабря 2009 г.
- ^ «Примечания к выпуску Flash Player 11 и AIR 3 для Adobe Labs» (PDF) . Архивировано из оригинала (PDF) 14 июля 2011 года.
- ^ «Flash Player 11, примечания к выпуску AIR 3» . helpx.adobe.com . Проверено 7 октября 2016 г.
- ^ Перейти обратно: а б «Описания типов данных + документация Flash CS3» . Архивировано из оригинала 2 ноября 2007 года . Проверено 13 июля 2007 г.
- ^ «Flex 3 – Параметры функции» . Livedocs.adobe.com. Архивировано из оригинала 12 февраля 2009 года . Проверено 17 декабря 2009 г.
- ^ «Сторонний обзор другого декомпилятора» . Flashmagazine.com. 21 октября 2007 года. Архивировано из оригинала 20 июня 2017 года . Проверено 22 апреля 2013 г.
- ^ «Комментарии клиентов об одном декомпиляторе Flash» . Topshareware.com . Проверено 22 апреля 2013 г.
- ↑ Комментарии клиентов к другому Flash-продукту. Архивировано 18 августа 2006 г. на Wayback Machine.
Внешние ссылки
[ редактировать ]- Технологический центр ActionScript
- Справочник по языку ActionScript 2.0. Архивировано 31 января 2013 г. на Wayback Machine.
- Справочник по языку и компонентам ActionScript 3.0
- Flex 3 LiveDocs: Программирование ActionScript 3.0
- Adobe – Центр разработчиков Flash
- Adobe Flex SDK
- Уоррен, Том (25 июля 2017 г.). «Adobe окончательно убьет Flash в 2020 году» . Грань . Архивировано из оригинала 25 июля 2017 года . Проверено 16 декабря 2020 г.