Adobe программирование

ActionScript-это объектно-ориентированный язык программирования. Первоначально разработанный компанией Macromedia Inc. (позже приобретенный компанией Adobe Systems). Он находится под влиянием HyperTalk, скриптового языка для HyperCard.[2] В настоящее время это реализация ECMAScript (то есть это надмножество синтаксиса и семантики языка. Более широко известного как JavaScript), хотя первоначально он возник как родной брат. И оба они находятся под влиянием HyperTalk.

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

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

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

ActionScript изначально был разработан для управления простыми 2D векторными анимациями. Выполненными в

Adobe Flash (ранее Macromedia Flash). Изначально ориентированные на анимацию. Ранние версии Flash-контента предлагали мало возможностей интерактивности и. Таким образом. Имели очень ограниченные возможности написания сценариев. Более поздние версии добавили функциональность. Позволяющую создавать веб-игры и богатые веб-приложения с потоковыми медиа (такими как видео и аудио). Сегодня ActionScript подходит для настольной и мобильной разработки через Adobe AIR. Использования в некоторых приложениях баз данных. А также в базовой робототехнике, как с

Сделайте Комплект Контроллера.

Flash MX 2004 представил ActionScript 2.0, скриптовый язык, более подходящий для разработки Flash-приложений. Часто можно сэкономить время. Написав сценарий. А не анимируя его. Что обычно также обеспечивает более высокий уровень гибкости при редактировании.

С приходом Flash-плеер 9 виртуальная машина ActionScript , который был полностью переписан с нуля (озвученных и avm2).[4] из-за этого, код, написанный в ActionScript 3.0, как правило. Предусматривала для Flash Player 9 и выше. И не будет работать в предыдущих версиях. В то же время ActionScript 3.0 выполняется до 10 раз быстрее. Чем устаревший код ActionScript. Благодаря компилятору

Just-In-Time улучшения.[5]

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

ActionScript начинался как объектно-ориентированный язык программирования для инструмента разработки Flash Macromedia. Который теперь разрабатывается компанией Adobe Systems как Adobe Flash.

Первые три версии Flash authoring tool предоставляли ограниченные возможности интерактивности. Ранние разработчики Flash могли прикрепить простую команду. Называемую Набор действий представлял собой базовые навигационные элементы управления с такими командами. Как

С выходом Flash 4 в 1999 году этот простой набор действий стал небольшим скриптовым языком. Новые возможности . Введенные для Flash 4 . Включали переменные, выражения, операторы, операторы ifи циклы. Несмотря на то. Что внутренне он называется

Временная шкала по версии игрока

  • Flash Player 2: Первая версия с поддержкой сценариев. Действия включали gotoAndPlay. GotoAndStop. NextFrame и nextScene для управления временной шкалой.
  • Flash Player 3: Расширенная базовая поддержка сценариев с возможностью загрузки внешних SWFS (loadMovie).
  • Flash Player 4: Первый плеер с полной реализацией сценариев (так называемые Действия). Сценарий представлял собой синтаксис на основе flash и содержал поддержку циклов. Условных выражений. Переменных и других базовых языковых конструкций.
  • Flash Player 5: Включает в себя первую версию ActionScript.

    Использовалось прототипное программирование на основе ECMAScript[6] и допускалось полное процедурное программирование и объектно-ориентированное программирование. Разработка на основе дизайна.

  • Flash Player 6: Добавлена модель обработки событий. Элементы управления специальными возможностями и поддержка switch. Первая версия с поддержкой протоколов AMF и RTMP, которые позволяли осуществлять потоковую передачу аудио/видео по запросу.
  • Flash Player 7: Дополнения включают стиль CSS для текста и поддержку ActionScript 2.0, языка программирования. Основанного на предложении ECMAScript 4 Netscape

    [7] с наследованием на основе классов. Однако ActionScript 2.0 может скомпилироваться в байт-код ActionScript 1.0, так что он может работать в Flash Player 6.

  • Flash Player 8: Дальнейшее расширение ActionScript 1/ActionScript 2 путем добавления новых библиотек классов с API для управления растровыми данными во время выполнения. Загрузки файлов и живых фильтров для размытия и dropshadow.
  • Flash Player 9 (первоначально назывался 8.5): Добавлен ActionScript 3.0 с появлением новой виртуальной машины ActionScript Virtual Machine 2 (AVM2), которая сосуществует с предыдущей AVM1, необходимой для поддержки устаревшего контента.

    Повышение производительности было основной целью для этого выпуска плеера. Включая новый JIT-компилятор. Добавлена поддержка двоичных сокетов. Синтаксического анализа XML E4X. Полноэкранного режима и регулярных выражений. Это первый выпуск плеера под названием Adobe Flash Player.[8]

  • Flash Player 10 (первоначально называвшийся Astro): Добавлены базовые 3D-манипуляции. Такие как вращение по осям X. Y и Z. API 3D-рисования и отображение текстур. Возможность создания пользовательских фильтров с помощью Adobe Pixel Bender. Несколько задач визуальной обработки теперь выгружены на

    графический процессор. Что дает заметное сокращение времени рендеринга для каждого кадра . Что приводит к более высокой частоте кадров, особенно с видео H. 264. Существует новый звуковой API. Который позволяет создавать пользовательские аудио-файлы во flash. Чего раньше никогда не было.[9] Кроме того, Flash Player 10 поддерживает одноранговую связь (P2P) с протоколом потока мультимедиа в реальном времени (RTMFP).

  • Flash Player 11: Основным дополнением в этой версии являются расширенные 3D-возможности на базе Stage3D (ускоренные графическими картами) для настольных компьютеров Windows, Mac,

    iOS, Androidи других основных платформ. Значительные улучшения совместимости были добавлены для платформы iOS и других платформ. Не относящихся к настольным компьютерам. Другие функции включают кодирование H. 264 для камер. Встроенную поддержку JSON. Кубические кривые Безье. Безопасный генератор случайных чисел, LZMA сжатие swf-файлов. Рабочие для разгрузки некоторого выполнения кода в другие потоки процессора. Ускоренный рендеринг каналов видеокарты. Встроенные функции памяти и анализ производительности. А также компилятор ActionScript 2.0 и некоторые другие незначительные дополнения.

    [10]

  • Flash Player 11.2: выпущена в марте 2012 года. Ориентирована на добавление функций. Которые являются ключевыми для игровых и видео рынков. Некоторые функции в выпуске включают следующее: Поддержка блокировки мыши. Поддержка правого и среднего щелчка мыши. Отключение контекстного меню. Аппаратное ускорение графики/поддержка Stage 3D для Apple iOS и Android через Adobe AIR. Поддержка большего количества видеокарт с аппаратным ускорением (с января 2008 года) для расширения доступности контента с аппаратным ускорением. Новый API событий дроссельной заслонки (отправляет событие. Когда Flash Player регулирует. Приостанавливает или возобновляет содержимое).

    Многопоточный конвейер декодирования видео на ПК. Который повышает общую производительность видео на всех настольных платформах. Уведомление об использовании премиальных функций в отладочных проигрывателях; контент работает неограниченно в релизных проигрывателях.

  • Flash Player 11.3: выпущена в июне 2012 года. Ориентирована на включение функций и функциональных ключей для игрового рынка. А также на удовлетворение популярных запросов от разработчиков. Некоторые функции в этом выпуске включают следующее: Поддержка ввода с клавиатуры в полноэкранном режиме.

    Улучшена поддержка звука для работы с аудио с низкой задержкой. Возможность постепенного потока текстур для сценического 3D-контента. Защищенный режим для Flash Player в Firefox. События метки кадра. Поддержка сжатия BitmapData в форматы JPEG и PNG. Поддержка требований к песочнице для приложений Mac OS X App Store. Поддержка потоковой передачи текста для Stage 3D. Расширенная информация о деталях драйвера GPU. Растровое изображение рисуется с помощью API качества (new). Отпустите 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 года. Ориентирован на повышение производительности и стабильности. Некоторые из функций в этом выпуске включают следующее: Поддержка Shared ByteArray для рабочих ActionScript. Отладочная трассировка стека в выпускных сборках Flash Player. Различные исправления ошибок
  • Flash Player 11.6, выпущенный в марте 2013 года. Фокусируется на повышении производительности. Безопасности и стабильности. Некоторые из функций этого выпуска включают в себя следующее: Возможность запроса графических векторных данных во время выполнения. Улучшения пользовательского интерфейса полноэкранного диалога разрешений. Возможность загрузки SWFS во время выполнения при развертывании в качестве приложения AIR в режиме AOT на iOS. Более точный контроль над поддерживаемым разрешением дисплея на устройствах iOS при развертывании в качестве приложения AIR. Поддержка HiDPI для Flash Professional. ActionScript 3 доступ к быстрым операциям с памятью/встроенные функции
  • Flash Player 11.7: выпущен в июне 2013 года под кодовым названием Этот релиз посвящен премиальному видео, играм. Безопасности и стабильности. Некоторые из функций. Запланированных для этого выпуска. Включают следующее: Android captive runtime debugging. Поддержка контроллера OUYA. Удаленный хостинг SWF-файлов на iOS. Предотвращение резервного копирования общих объектов на iOS для лучшей поддержки iCloud.
  • Flash Player 11.8 (кодовое название Harrison): Adobe планировала выпустить эту версию в начале второй половины 2013 года под кодовым названием Этот релиз был посвящен премиальному видео, играм. Безопасности и стабильности. Некоторые из функций в этом выпуске включали бы следующее: Рекурсивный stop API на MovieClips. Поддержка геймпада в настольных браузерах и Android

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

2000-2004: ActionScript С выпуском Flash 5 в сентябре 2000 года [11] Это была первая версия ActionScript с влиянием JavaScript и стандарта ECMA-262 (Третье издание). Поддерживающая объектную модель указанного стандарта и многие из его основных типов данных. Локальные переменные могут быть объявлены с помощью также могут быть созданы оператор var и пользовательские функции с передачей параметров и возвращаемыми значениями. Примечательно. Что ActionScript теперь можно было также набирать с помощью текстового редактора. А не собирать. Выбирая действия из выпадающих списков и элементов управления диалоговых окон. Со следующим выпуском его авторского инструмента Flash MX и соответствующего ему плеера Flash Player 6язык остался практически неизменным; были лишь незначительные изменения. Такие как добавление оператор switch и ) оператор. Что приблизило его к тому. Чтобы быть совместимым с 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.

2006-2020: ActionScript 3.0[12] В июне 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.
  • Переработанный API Flash Player, организованный в пакеты.
  • Унифицированная система обработки событий. Основанная на стандарте обработки событий DOM.
  • Интеграция ECMAScript for XML (E4X) для целей обработки XML.
  • Прямой доступ к списку отображения Flash runtime для полного контроля над тем. Что отображается во время выполнения.
  • Полностью соответствующая реализация проекта спецификации ECMAScript четвертого издания.
  • Ограниченная поддержка динамических 3D-объектов. (Вращение X. Yотображение текстур)

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

ВОЗДУХ

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

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

ActionScript 2.0

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

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

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

класс com.example.Greeter расширяет MovieClip { public function Greeter() { var txtHello: TextField = this.createTextField("txtHello", 0, 0, 0, 100, 100); txtHello.text = "Hello, world"; } } 

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; import flash.display.Sprite; public class Greeter extends Sprite { public function Greeter() { var txtHello: TextField = new TextField(); txtHello.text = ; addParent3(txtHello); } } } 

См. также: Sprite (компьютерная графика)

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

  xmlns:fx= xmlns:s= xmlns:mx= layout= creationComplete=>   общественная функция initApp(): пустота { // печатает наши  названием.текст = ; }    идентификатор= для FontSize= свойство fontstyle=   

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

Типы данных

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

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

  • Нет строки + Список символов, таких как
  • Число + Любое числовое значение
  • Boolean + Простое двоичное хранилище. Которое может быть только
  • Объект – это тип данных. От которого наследуются все сложные типы данных. Он позволяет группировать методы, функции. Параметры и другие объекты.

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

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

  • MovieClip + Создание ActionScript. Которое позволяет легко использовать видимые объекты.
  • Текстовое поле + Простое динамическое или входное текстовое поле. Наследует тип Movieclip.
  • Кнопка + Простая кнопка с 4 кадрами (состояниями): Вверх, Вверх. Вниз и Удар. Наследует тип MovieClip.
  • Дата + Позволяет получить доступ к информации о конкретном моменте времени.
  • Array + позволяет линейно хранить данные.
  • XML + Объект XML
  • XmlNode + XML-узел
  • LoadVars + Объект Load Variables позволяет хранить и отправлять переменные HTTP POST и HTTP GET
  • Звук
  • NetStream
  • NetConnection
  • MovieClipLoader
  • EventListener

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

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

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

  • Массив + Содержит список данных. Хотя ActionScript 3 является строго типизированным языком. Содержимое массива может быть любого типа. И значения должны быть возвращены к исходному типу после извлечения. (Поддержка типизированных массивов недавно была добавлена с классом Vector.)
  • Дата – Объект даты. Содержащий цифровое представление даты/времени.
  • Error – Общий объект error no. Который позволяет сообщать об ошибках времени выполнения при возникновении исключения.
  • flash.display:Bitmap – Не анимированный или анимированный объект отображения растрового изображения.
  • flash.display:MovieClip – Анимированный объект отображения видеоклипа; Flash timeline по умолчанию является MovieClip.
  • flash.display:Shape – Не анимированный векторный объект формы.
  • flash.display:SimpleButton – Простой интерактивный тип кнопок. Поддерживающих состояния
  • flash.display:Sprite + Контейнер отображаемого объекта с временной шкалой.
  • flash.media:Video – Объект воспроизведения видео. Поддерживающий прямой (прогрессивная загрузка) или потоковый (RTMP) транспорт. Начиная с версии Flash Player 9.0.15.0, формат видео высокой четкости H. 264/MP4 также поддерживается наряду со стандартным контентом Flash video (FLV).
  • flash.text:TextField – динамический. Опционально интерактивный объект текстового поля.
  • flash.utils:ByteArray – Содержит массив двоичных байтовых данных.
  • flash.utils:Dictionary – Словари-это вариант объекта. Который может содержать ключи любого типа данных (в то время как объект всегда использует строки для своих ключей).
  • Функция – Основной класс для всех определений методов Flash.
  • Объект – Тип данных объекта определяется классом объекта. Класс 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 = новый объект(); 

Или в неформальной обстановке:

var MyObject =  

Некоторые типы автоматически устанавливаются на место:

var myString: String = ; // Это автоматически установит переменную в виде строки. var myNumber: Number = 5; // Это будет делать то же самое для числа. var MyObject: Object = { param1: , param2: 76 }; // Это создает объект с двумя переменными. // param1-это строка с данными  // а param2-это число с данными 76. // Это синтаксис автоматического создания массива. var myArray: Array = [5, , { a: 5, b: 7 }]; // Создает массив с 3 переменными. // Первое (0) - это число со значением 5, // второе (1) - строка со значением   

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

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

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

ВАР элемент1: строка = ; ВАР место № 2: булево = истина; ВАР item3: Количество = 12; ВАР item4: массив = [, , ]; Вар item5: объект = { имя: , версия:  }; ВАР item6: в XML = узел>ребенок узел>; // обратите внимание. Что примитивные XML не цитирует 

Ссылка в ActionScript — это указатель на экземпляр класса. Ссылка хранит адрес памяти объекта – операции со ссылками будут следовать значению ссылки на адрес памяти объекта и выполнять операцию над этим объектом. Все объекты в ActionScript доступны через ссылки. А не напрямую.

ВАР пункт 1: в XML = новый XML-файле(); ВАР место № 2: в XML = элемент1; место № 2.возвращение null.атрибутами.стоимость = 13; // место № 1 место № 2 место № 2 равно теперь так просто указывает на то. Что пункт 1 указывает на. // Как сейчас:  

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

ВАР пункт 1: в XML = новый XML-файле(); исключить пункт 1; // Если нет ссылки на п. 1 присутствует где-либо еще в программе, // он будет удален на сборщик мусора. Дальше пройти 

Как и большинство форматов файлов байт-кода. Flash SWF-файлы могут быть декомпилированы в их исходный код и активы (аналогично тому. Как могут быть декомпилированы файлы Microsoft .NET). Некоторые декомпиляторы способны почти полностью восстановить исходный файл. Вплоть до фактического кода. Который был использован при создании (хотя результаты варьируются в зависимости от конкретного случая).[15][16][17]

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

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

Код перед обфускацией:

частная функция getNeighbours(я: инт, Дж: инт): массив { ВАР а: массив = новый массив(); для (ВАР к = 0; к  8; к++){ ВАР н = я + инт(neighbour_map[к][1]); ВАР Нью-Джерси = Дж + инт(neighbour_map[к][1]); Если (н  0 || н >= xsize || Нью-Джерси  0 || Нью-Джерси >= ysize) продолжать; а.нажимаем(клеток(клеток[Н][Нью-Джерси])); } возвращение с; } 

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

частная функция getNeighbours(_arg1: int, _arg2: int): Array { var _local3: Array = - (((boolean - !BOOLEAN!) % ~(undefined))); var _local4: *; var _local5: *; var _local6: *; _local3 = Array(); _local4 = 1; for (;//неразрешенный прыжок , _arg2  8;_local4++) { _local5 = (_arg1 + int(!БУЛЕВО!)); _local6 = (_arg2 + int(!BOOLEAN!)); if (true){ _arg1 = (((//неразрешенное nextvalue или nextname  !БУЛЕВО!) + !БУЛЕВО!)  определено); _arg1 = (!(!БУЛЕВО!) ^ !БУЛЕВО!); (!БУЛЕВО! instanceof !BOOLEAN!); var _local1 = (((!BOOLEAN! как !БУЛЕВО!) + !БУЛЕВО!) == это); если (!(!BOOEAN! == !БУЛЕВО!)) { - ((true  !BOOLEAN!)).push(Cell(cells[_local5][_local6])); } } if (!true){ (_local6  1); (_local6  1); (_local5  1); } } return (_local6); } 
  1. ^
  2. ^ . zdnet.com. 17 апреля 2011года . Извлечено 4 декабря 2014года .
  3. ^ . Архивирован с оригинала 27 марта 2017года . Получено 12 ноября 2016года .
  4. ^ Бримелоу, Ли (18 августа 2008). . Adobe Systems Incorporated. Извлечено 18 июня 2010года .
  5. ^ Гроссман, Гэри; Хуан, Эмми (27 июня 2006). . Adobe Systems Incorporated. Извлечено 18 июня 2010года .
  6. ^ . Ecma-international.org. Извлечено 22 апреля 2013года .
  7. ^ Вальдемар Хорват. Изд. (30 июня 2003). . Нетскейп. Архивировано с оригинала 11 июля 2007года . Извлечено 11 апреля 2019года .
  8. ^ . Adobe.com… 9 апреля 2013года . Получено 22 апреля 2013года .
  9. ^ . Labs.adobe.com. Архивирован с оригинала 5 января 2010года . Извлечено 17 декабря 2009года .
  10. ^ (PDF). Архивирован из оригинала (PDF) 14 июля 2011 года.
  11. ^ . helpx.adobe.com. Извлечено 7 октября 2016года .
  12. ^ Уоррен, Том (25 июля 2017 года). . На Грани. Архивировано с оригинала 25 июля 2017года . Проверено 16 декабря 2020года .
  13. ^ b . Архивирован с оригинала 2 ноября 2007года . Извлечено 13 июля 2007года .
  14. ^ . Livedocs.adobe.com. Архивирован с оригинала 12 февраля 2009года . Извлечено 17 декабря 2009года .
  15. ^ . Flashmagazine.com. 21 октября 2007 года. Архивирован с оригинала 20 июня 2017года . Извлечено 22 апреля 2013года .
  16. ^ . Topshareware.com. Извлечено 22 апреля 2013года .
  17. ^ Комментарии клиентов к другому флэш-продукту , архивированному 18 августа 2006 года в Wayback Machine

Внешние ссылки