ActionScript

редактировать
объектно-ориентированный язык программирования

ActionScript
Paradigm Многопарадигма : объект- ориентированный (на основе прототипа ), функциональный, императивный, скриптинг
Разработан Гэри Гроссман
Разработчик Macromedia (теперь растворено в Adobe Systems )
Впервые появилось1998
Стабильная версия 3.0 / 27 июня 2006 г. (2006-06-27)
Дисциплина ввода строгий, статический
Веб-сайтadobe.com/devnet/actionscript/
Основные реализации
Adobe Flash Player, Adobe AIR, Apache Flex, Scaleform GFx
Под влиянием
JavaScript, Java
Под влиянием
Haxe
ActionScript
Расширение имени файла .as
Тип Интернет-носителя application / ecmascript

ActionScript- это язык объектно-ориентированного программирования, изначально разработанный Macromedia Inc. (позже приобретенная Adobe Systems ). На него влияет HyperTalk, язык сценариев для HyperCard. Сейчас это реализация ECMAScript (то есть это надмножество синтаксиса и семантики языка, более известного как JavaScript ), хотя изначально он возник как родственный брат, оба были под влиянием HyperTalk.

ActionScript используется в основном для разработки веб-сайтов и программного обеспечения, ориентированного на платформу Adobe Flash Player, используется на веб-страницах в виде встроенных файлов SWF.

ActionScript 3 также используется с системой Adobe AIR для разработки настольных и мобильных приложений. Сам язык является открытым исходным кодом в том смысле, что его спецификация предлагается бесплатно и включает как компилятор с открытым исходным кодом (как часть Apache Flex ), так и виртуальную машину с открытым исходным кодом (Mozilla Tamarin ) доступны.

ActionScript также используется с Scaleform GFx для разработки пользовательских интерфейсов 3D-видеоигр и HUD.

Содержание

  • 1 Обзор
  • 2 История
    • 2.1 Временная шкала по версии проигрывателя
    • 2.2 Временная шкала по версии ActionScript
    • 2.3 Flash Lite
    • 2.4 AIR
  • 3 Синтаксис
    • 3.1 ActionScript 2.0
    • 3.2 ActionScript 3.0
  • 4 Структуры данных
    • 4.1 Типы данных
    • 4.2 Использование типов данных
  • 5 Защита кода
  • 6 Ссылки
  • 7 Внешние ссылки

Обзор

ActionScript изначально был разработан для управления простой 2D векторной анимацией, созданной в 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. Эта версия языка предназначена для компиляции и запуска на версии виртуальной машины ActionScript, которая была полностью переписана с нуля (получившая название AVM2). По этой причине код, написанный на ActionScript 3.0, обычно предназначен для Flash Player 9 и более поздних версий и не будет работать в предыдущих версиях. В то же время ActionScript 3.0 выполняется до 10 раз быстрее, чем устаревший код ActionScript, благодаря усовершенствованиям Just-In-Time compiler.

Библиотеки Flash могут использоваться с возможностями XML браузер для отображения в браузере расширенного содержимого. Эта технология известна как асинхронный Flash и XML, как и AJAX. Adobe предлагает свою линейку продуктов Flex, чтобы удовлетворить спрос на многофункциональные интернет-приложения, созданные на основе среды выполнения Flash, с поведением и программированием, выполненным на ActionScript. ActionScript 3.0 составляет основу Flex 2 API.

История

ActionScript начинался как объектно-ориентированный язык для инструмента разработки Flash Macromedia, который теперь разрабатывается Adobe Systems как Adobe Flash. Первые три версии инструмента разработки Flash предоставляли ограниченные интерактивные возможности. Ранние разработчики Flash могли прикрепить простую команду, называемую «действие», к кнопке или фрейму. Набор действий представлял собой основные элементы управления навигацией с такими командами, как «play», «stop», «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: Первый игрок с полной реализацией сценария (так называемые Действия). Сценарий был основан на синтаксисе flash и содержал поддержку циклов, условных операторов, переменных и других базовых языковых конструкций.
  • Flash Player 5: Включена первая версия ActionScript. Используется программирование на основе прототипов на основе ECMAScript, и разрешено полное процедурное программирование и объектно-ориентированное программирование. Разработка на основе дизайна.
  • Flash Player 6: добавлена ​​модель обработки событий, элементы управления специальными возможностями и поддержка переключателя. Первая версия с поддержкой протоколов AMF и RTMP, которые позволяли потоковое аудио / видео по запросу.
  • Flash Player 7: дополнения включают стили CSS для текста и поддержка ActionScript 2.0, языка программирования, основанного на предложении ECMAScript 4 Netscape с наследованием на основе класса . Однако 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 компилятор. Добавлена ​​поддержка двоичных сокетов, E4X XML-синтаксического анализа, полноэкранного режима и регулярных выражений. Это первая версия проигрывателя под названием Adobe Flash Player.
  • Flash Player 10 (первоначально назывался Astro): добавлены базовые операции 3D, такие как вращение по осям X, Y, и Z ось, API трехмерного рисования и отображение текстуры. Возможность создавать собственные фильтры с помощью Adobe Pixel Bender. Несколько задач визуальной обработки теперь выгружены на GPU, что дает заметное сокращение времени рендеринга для каждого кадра, что приводит к более высокой частоте кадров, особенно с H.264 видео. Появился новый звуковой API, который позволяет настраивать создание звука во флэш-памяти, чего раньше никогда не было. Кроме того, Flash Player 10 поддерживает одноранговую (P2P) связь с протоколом потока мультимедиа в реальном времени (RTMFP).
  • Flash Player 11: основным дополнением в этой версии являются усовершенствованные (графическая карта ускорено) 3D-возможности для Windows Desktop, Mac Desktop, iOS, Android и других основных платформ. Значительные улучшения совместимости были добавлены для платформы iOS и других платформ, отличных от настольных. Другие функции включают кодирование H.264 для камер, поддержку Native JSON, кубические кривые Безье, безопасный генератор случайных чисел, сжатие LZMA для файлов swf, рабочие процессы для передачи части выполнения кода другим. потоки процессора, ускоренный рендеринг видеокарты, внутренняя память и анализ производительности, а также компилятор ActionScript 2.0, а также некоторые другие незначительные дополнения.
  • 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. Расширенная информация о драйверах GPU. Отрисовка растровых изображений с помощью качественного 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 индекса производительности для информирования о возможностях производительности в текущей среде. Поддержка сжатых текстур с альфа-поддержкой. Поддержка StageVideo.attachCamera API. Поддержка push-уведомлений для iOS (Adobe AIR).
  • Flash Player 11.5: выпущен в ноябре 2012 г., ориентирован на повышение производительности и стабильности. Некоторые из функций в этом выпуске включают следующее: Поддержка Shared 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 (кодовое имя Harrison): Adobe планировала выпустить эту версию в начале второй половины 2013 года под кодовым названием «Harrison». " Этот выпуск ориентирован на премиальное видео, игры, безопасность и стабильность. Некоторые из функций в этом выпуске включают следующее: API рекурсивной остановки для MovieClips. Поддержка GamePad в настольных браузерах и Android

Временная шкала в версии ActionScript

2000–2004: ActionScript «1.0»С выпуском Flash 5 в сентябре 2000 года «действия» из Flash 4 были еще раз улучшены и назван «ActionScript» впервые. Это была первая версия ActionScript с влиянием стандарта JavaScript и стандарта ECMA-262 (третье издание), поддерживающего объектную модель указанного стандарта и многие из его основных типов данных .. Локальные переменные могут быть объявлены с помощью оператора var, а также могут быть созданы пользовательские функции с передачей параметров и возвращением значений. Примечательно, что ActionScript теперь также можно набирать в текстовом редакторе, а не собирать путем выбора действий из раскрывающихся списков и элементов управления диалоговых окон. В следующем выпуске его инструмента разработки, Flash MX, и соответствующего ему проигрывателя, Flash Player 6, язык практически не изменился; были внесены лишь незначительные изменения, такие как добавление оператора переключения и оператора "строгого равенства" ({{{1}}}), которые приблизили его к ECMA-262 - соответствует требованиям. Двумя важными особенностями ActionScript, которые отличают его от более поздних версий, являются его свободная система типов и его зависимость от прототипа наследования. Свободная типизация означает способность переменной содержать данные любого типа. Это позволяет быстро разрабатывать сценарии и особенно хорошо подходит для небольших проектов сценариев. Наследование на основе прототипов - это механизм ActionScript 1.0 для повторного использования кода и объектно-ориентированного программирования. Вместо ключевого слова класса , которое определяет общие характеристики класса , ActionScript 1.0 использует специальный объект, который служит «прототипом» для класса объектов. Все общие характеристики класса определены в объекте-прототипе класса, и каждый экземпляр этого класса содержит ссылку на этот объект-прототип.

2003–2006: ActionScript 2.0Следующая основная версия языка, ActionScript 2.0, была представлена ​​в сентябре 2003 года с выпуском Flash MX 2004 и соответствующего ему проигрывателя Flash Player 7. В ответ на потребность пользователей в языке, лучше оборудованном для более крупных и сложных приложений, в ActionScript 2.0 реализована compile-time проверка типов и синтаксис на основе классов, например как ключевые слова class и extends. (Хотя это позволяло использовать более структурированный объектно-ориентированный подход к программированию, код все равно компилировался в ActionScript 1.0 байт-код, что позволяло использовать его и в предыдущем Flash Player 6. Другими словами, на основе классов наследование синтаксис был слоем поверх существующей системы на основе прототипов.) С помощью ActionScript 2.0 разработчики могли ограничивать переменные определенным типом с помощью добавление аннотации типа, чтобы ошибки несоответствия типов можно было найти на времени компиляции. ActionScript 2.0 также представил наследование на основе классов синтаксис, чтобы разработчики могли создавать классы и интерфейсы так же, как в языках на основе классов, таких как Java и C ++.. Эта версия частично соответствовала проекту спецификации ECMAScript четвертого издания.

2006 – настоящее время: 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 ).

В обновлении языка появилось несколько новых функций:

Flash Lite

  • 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 в качестве подключаемого модуля браузера а также аппаратное ускорение графики.

AIR

Adobe AIR поддерживает ActionScript в дополнение к некоторому расширенному содержимому, например движку Stage3D, разработанному Adobe. Количество API (интерфейсов прикладного программирования), доступных для ActionScript 3.0, также значительно выросло.

Синтаксис

Код ActionScript имеет свободную форму и поэтому может быть создан с любым количеством или стилем пробелов, которые пожелает автор. Базовый синтаксис основан на ECMAScript.

ActionScript 2.0

Следующий код, который работает в любом совместимом проигрывателе, создает текстовое поле на глубине 0 в позиции (0, 0) на экране. (измеряется в пикселях), то есть 100 пикселей в ширину и в высоту. Затем параметр textустанавливается равным строке «Hello, world», и он автоматически отображается в проигрывателе:

createTextField («greet», 0, 0, 0, 100, 100); greet.text = "Привет, мир";

При записи внешних файлов классов ActionScript 2.0 приведенный выше пример можно записать в файл с именем Greeter.as следующим образом.

класс com.example.Greeter расширяет MovieClip {общедоступная функция Greeter () {var txtHello: TextField = this.createTextField ("txtHello", 0, 0, 0, 100, 100); txtHello.text = "Привет, мир"; }}

ActionScript 3.0

ActionScript 3.0 имеет синтаксис, аналогичный ActionScript 2.0, но другой набор API для создания объектов. Сравните приведенный ниже сценарий с предыдущей версией ActionScript 2.0:

var txtHello: TextField = new TextField (); txtHello.text = "Привет, мир"; this.addChild (txtHello);

Минимальные программы ActionScript 3.0 могут быть несколько крупнее и сложнее из-за большего разделения языка программирования и Flash IDE.

Предположим, что следующий файл будет Greeter.as:

package com.example {import flash.text.TextField; импортировать flash.display.Sprite; открытый класс Greeter расширяет Sprite {общедоступная функция Greeter () {var txtHello: TextField = new TextField (); txtHello.text = "Привет, мир"; addParent3 (txtHello); }}}

(См. Также: Sprite.)

ActionScript 2 также можно использовать в файлах MXML при использовании Apache Flex framework:

Структуры данных

Типы данных

ActionScript в основном состоит из «основных» или «простых» типов данных, которые используются для создания других типов данных. Эти типы данных очень похожи на типы данных Java. Поскольку ActionScript 3 полностью переписал ActionScript 2, типы данных и их наследование изменились.

Типы данных верхнего уровня ActionScript 2

  • Нет String+ Список символов, например «Hello World»
  • Number+ Any Numeric value
  • Boolean+ Простой двоичный файл хранилище, которое может быть только "истинным" или "ложным".
  • Объект- объект - это тип данных, от которого наследуются все сложные типы данных. Он позволяет группировать методы, функции, параметры и другие объекты.

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

Существуют дополнительные «сложные» типы данных. Они более интенсивны к процессору и памяти и состоят из множества «простых» типов данных. Для AS2 некоторые из этих типов данных:

  • MovieClip+ Создание ActionScript, позволяющее легко использовать видимые объекты.
  • TextField+ Простое динамическое или текстовое поле ввода. Наследует тип Movieclip.
  • Button+ Простая кнопка с 4 кадрами (состояниями): вверх, наверх, вниз и нажатие. Наследует тип MovieClip.
  • Date+ Разрешает доступ к информации о конкретном моменте времени.
  • Array+ Разрешает линейное хранение данных.
  • XML+ Объект XML
  • XMLNode+ узел XML
  • LoadVars+ объект Load Variables позволяет сохранять и отправлять переменные HTTP POST и HTTP GET
  • Sound
  • NetStream
  • NetConnection
  • MovieClipLoader
  • EventListener

примитивные (простые) типы данных ActionScript 3

  • Boolean- Boolean тип данных имеет только два возможных значения: true и false или 1 и 0. Все остальные допустимые значения.
  • int+ Тип данных int представляет собой 32-битное целое число от -2 147 483 648 до 2 147 483 647.
  • Null- Тип данных Null содержит только одно значение, Boolean. Это значение по умолчанию для типа данных String и всех классов, которые определяют сложные типы данных, включая класс Object.
  • Number+ Тип данных Number может представлять целые числа, целые числа без знака и числа с плавающей запятой. Тип данных Number использует 64-битный формат с двойной точностью, как указано в стандарте IEEE для двоичной арифметики с плавающей запятой (IEEE + 754). могут быть сохранены значения от -9,007,199,254,740,992 (-2) до 9,007,199,254,740,992 (2).
  • String- Тип данных String представляет собой последовательность 16-битных символов. Строки не хранятся внутри как символы Unicode с использованием формата UTF-16. Предыдущие версии Flash использовали формат UTF-8.
  • uint+ Тип данных uint (целое число со знаком) представляет собой 32-разрядное целое число без знака в диапазоне от 0 до 4294967295.
  • void- Тип данных содержит только одно значение undefined. В предыдущих версиях ActionScript значение undefined было значением по умолчанию для экземпляров класса Object. В ActionScript 3.0 значение по умолчанию для экземпляров объекта - логическое.

ActionScript 3 некоторые сложные типы данных

  • Массив+ Содержит список данных. Хотя ActionScript 3 является языком со строгой типизацией, содержимое массива может быть любого типа, и значения должны быть возвращены к исходному типу после извлечения. (Поддержка типизированных массивов была недавно добавлена ​​в класс Vector.)
  • Дата- объект даты, содержащий цифровое представление даты / времени.
  • Ошибка- общая ошибка без объекта, допускающего время выполнения сообщение об ошибке при возникновении исключения.
  • flash.display: Bitmap- неанимированный или анимированный экранный объект растрового изображения.
  • flash.display: MovieClip- экранный объект анимированного фрагмента ролика; Временная шкала Flash по умолчанию представляет собой MovieClip.
  • flash.display: Shape- неанимированный объект векторной формы.
  • flash.display: SimpleButton- простой интерактивный тип кнопки, поддерживающий "вверх" "," на "и" вниз "с произвольной областью попадания.
  • flash.display: Sprite+ Контейнер экранного объекта с временной шкалой.
  • flash.media:Video- A объект воспроизведения видео с поддержкой прямого (прогрессивная загрузка) или потокового (RTMP) транспорта. Начиная с версии Flash Player 9.0.15.0, видеоформат высокой четкости H.264 / MP4 также поддерживается вместе со стандартным содержимым Flash-видео (FLV).
  • flash.text: TextField- динамический, необязательно интерактивный текст объект поля.
  • flash.utils: ByteArray- содержит массив двоичных байтовых данных.
  • flash.utils: Dictionary- Словари - это вариант объекта, который может содержать ключи любого типа данных ( тогда как Object всегда использует строки для своих ключей).
  • Function- базовый класс для всех определений методов Flash.
  • Object- Тип данных Object определяется классом Object. Класс Object служит базовым классом для всех определений классов в ActionScript. Объекты в их базовой форме могут использоваться как ассоциативные массивы, содержащие пары ключ-значение, где ключи не являются строками, а значения могут быть любого типа.
  • RegExp- объект регулярного выражения для строк.
  • Vector- вариант массива, поддерживаемый при публикации для 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!"; // Это автоматически установит переменную как строку. var myNumber: Number = 5; // То же самое и с числом. var myObject: Object = {param1: "Привет!", param2: 76}; // Это создает объект с двумя переменными. // param1 - это строка с данными «Hi!», // а param2 - это число с данными 76. // Это синтаксис для автоматического создания массива. var myArray: Array = [5, «Привет!», {a: 5, b: 7}]; // Создает массив с 3 переменными. // Первый (0) - это число со значением 5, // второй (1) - это строка со значением «Hello!», // а третий (2) - это объект с {a: 5, б: 7}.

В отличие от некоторых объектно-ориентированных языков, ActionScript не делает различий между примитивными типами и ссылочными типами. В ActionScript все переменные являются ссылочными типами. Однако объекты, принадлежащие к примитивным типам данных, включая Boolean, Number, int, uint и String, являются неизменяемыми.

Итак, если переменная предположительно примитивного типа, например целое число передается в функцию, изменение этой переменной внутри функции не изменяет исходную переменную, поскольку внутри функции создается новый объект типа int. Если переменная другого (не примитивного) типа данных, например XML передается в функцию, изменение этой переменной внутри функции также изменяет исходную переменную, поскольку новый объект XML не создается.

Некоторым типам данных можно присвоить значения с помощью литералов :

var item1: String = "ABC"; var item2: Boolean = true; var item3: Number = 12; var item4: Array = ["a", "b", "c"]; var item5: Object = {имя: "ActionScript", версия: "3.0"}; var item6: XML = ; // Обратите внимание, что примитивный XML не заключен в кавычки

Ссылка в ActionScript - это указатель на экземпляр класса. Ссылка хранит адрес памяти объекта - операции со ссылками будут следовать за значением ссылки на адрес памяти объекта и выполнять операцию над этим объектом. Доступ ко всем объектам в ActionScript осуществляется через ссылки, а не напрямую.

var item1: XML = новый XML (""); var item2: XML = item1; item2.firstChild.attributes.value = 13; // item1 теперь равно item2, поскольку item2 просто указывает на то, на что указывает item1. // Оба сейчас: // 

Только ссылки на объект могут быть удалены с помощью ключевого слова "delete". Удаление реальных объектов и данных выполняется сборщиком мусора Flash Player, который проверяет любые существующие ссылки в пространстве флэш-памяти. Если ничего не найдено (на потерянный объект не делается никаких других ссылок), он удаляется из памяти. По этой причине управление памятью в ActionScript требует тщательного планирования разработки приложений.

var item1: XML = новый XML (""); удалить item1; // Если в приложении нет другой ссылки на item1, // она будет удалена на следующем проходе сборщика мусора

Защита кода

Как и все промежуточный язык скомпилированный код, такой как Flash и Microsoft.NET, после локального сохранения файла SWF его можно декомпилировать в его исходный код и ресурсы. Некоторые декомпиляторы способны практически полностью реконструировать исходный исходный файл вплоть до фактического кода, который использовался во время создания (хотя результаты меняются в зависимости от случая).

В отличие от декомпиляторов, Были введены обфускаторы ActionScript , которые преобразуют код в форму, которая прерывает вывод декомпилятора, сохраняя при этом функциональность и структуру программы. Более качественные обфускаторы реализуют лексические преобразования, такие как переименование идентификаторов, преобразование потока управления и преобразование абстракции данных, что в совокупности усложняет декомпиляторам создание выходных данных, которые могут быть полезны для человека. Менее надежные обфускаторы вставляют ловушки для декомпиляторов. Такие обфускаторы либо вызывают неожиданный сбой программного обеспечения декомпилятора, либо создают неразборчивый исходный код.

Ниже приводится пример кода ActionScript 3.0, сгенерированного программой декомпиляции, до и после обфускации.

Код до обфускации:

частная функция getNeighbours (i: int, j: int): Array {var a: Array = new Array (); for (var k = 0; k < 8; k++){ var ni = i + int(neighbour_map[k][1]); var nj = j + int(neighbour_map[k][1]); if (ni < 0 || ni >= xsize || nj < 0 || nj >= ysize) continue; a.push (Ячейка (ячейки [ni] [nj])); } вернуть; }

Code after obfuscation:

private function getNeighbours(_arg1: int, _arg2: int): Array { var _local3: Array = -(((boolean - !BOOLEAN!) % ~(undefined))); var _local4: *; var _local5: *; var _local6: *; _local3 = Array(); _local4 = 1; for (;//unresolved jump , _arg2 < 8;_local4++) { _local5 = (_arg1 + int(!BOOLEAN!)); _local6 = (_arg2 + int(!BOOLEAN!)); if (true){ _arg1 = (((//unresolved nextvalue or nextname << !BOOLEAN!) + !BOOLEAN!) << defined); _arg1 = (!(!BOOLEAN!) ^ !BOOLEAN!); (!BOOLEAN! instanceof !BOOLEAN!); var _local1 = (((!BOOLEAN! as !BOOLEAN!) + !BOOLEAN!) == this); if (!(!BOOEAN! == !BOOLEAN!)){ -((true << !BOOLEAN!)).push(Cell(cells[_local5][_local6])); } } if (!true){ (_local6 < 1); (_local6 < 1); (_local5 < 1); } } return (_local6); }

References

External links

Wikibooks has a book on the topic of: ActionScript Programming
Wikibooks has a book on the topic of: Introduction to ActionScript 2.0
Wikiversity has learning resources about ActionScript:Introduction
Последняя правка сделана 2021-06-08 22:03:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте