ActionScript

ActionScript
Розширення

.as

MIME

application/ecmascript [1]

ActionScript - об'єктно-орієнтований мова програмування, один з діалектів ECMAScript, який додає інтерактивність, обробку даних та багато іншого у вміст Flash -додатків. ActionScript виповнюється віртуальною машиною (ActionScript Virtual Machine), яка є складовою частиною Flash Player. ActionScript компілюється в байт-код, який включається в SWF-файл.

SWF-файли виконуються Flash Player-ом. Flash Player існує у вигляді плагіна до веб- браузеру, а також як самостійне виконуване додаток (standalone). У другому випадку можливе створення виконуваних exe-файлів (projector), коли Flash Player включається в swf-файл.

За допомогою ActionScript можна створювати інтерактивні мультимедіа -додатки, гри, веб- сайти та багато іншого.


1. Історія

ActionScript як мову з'явився з виходом 5 версії Macromedia Flash, яка стала першою програмованої на ActionScript середовищем. Перший реліз мови називався ActionScript 1.0. Flash 6 (MX). У 2004 році Macromedia представила нову версію ActionScript 2.0 разом з виходом Flash 7 (MX 2004), в якій було введено суворе визначення типів, засноване на класах програмування. Тобто з'явилися нові ключові слова:

  • class (клас),
  • interface (інтерфейс),
  • extends (установка спадкування)
  • модифікатори доступу: private, public;
  • та інші.

Також Macromedia була випущена модифікація мови Flash Lite для програмування під мобільні телефони.

ActionScript 1.0 є прототипних мовою програмування. Тобто він цілком реалізує всі три принципи об'єктно-орієнтованого програмування.

ActionScript 2.0 є надбудовою над ActionScript 1.0. Перевірка типів і робота з ієрархією класів здійснюється під час компіляції, яка закінчується генерацією байткод, аналогічного ActionScript 1.0.

У 2006 році вийшов ActionScript 3.0 в середовищі програмування Adobe Flex, а пізніше в Adobe Flash 9.

ActionScript 3.0 представляє, у порівнянні з ActionScript 2.0 якісна зміна, він використовує нову віртуальну машину AVM 2.0 і дає замість колишнього формального синтаксису класів справжнє класове (class-based) Об'єктно-орієнтоване програмування. ActionScript 3.0 забезпечує зростання продуктивності, у порівнянні з ActionScript 1.0/2.0, до 700 разів (це лише обробка інструкцій, не зачіпаючи графіком). ActionScript 3.0 дозволяє працювати з бінарними даними, з BitMap (що забезпечує значний приріст продуктивності: до 10000 разів). ActionScript 3.0 по швидкості наблизився до таких мов програмування, як Java і C #. Збільшення продуктивності засновано на динамічній трансляції коду ( JIT). Таке збільшення продуктивності можливо лише для деяких типів даних і вимагає особливої ​​організації коду [2]. Обсяг коду, як правило збільшується в кілька разів [3] (у порівнянні з AS1)

Версії плеєра Нововведення
2

З'явилися "дії", надалі відомі як:

  • gotoAndStop ();
  • gotoAndPlay ();
  • nextFrame ();
  • prevFrame ();
  • getURL ();
3 Поява loadMovie ();
4 Перша версія з повною підтримкою скриптова імплементації.
5 Поява першої версії ActionScript. Використовувалося прототипних програмування на базі ECMAScript і надана повна підтримка процедурного та об'єктно-орієнтованого програмування.
6
  • Додана подієва модель
  • switch
  • З'явилася підтримка AMF і RTMP протоколів.
7
  • Поява AS2, базірующігося на ECMAScript 4 із клас-базувався програмуванням.
  • Додана підтримка CSS для тексту.
8
  • Поява нових правил безпеки.
  • Додавання фільтра AS1/AS2.
  • Поява класу, для перегляду Bitmap Data в реальному часі.
9
  • Новий скриптова движок ECMAScript, ActionScript Virtual Machine AVM2. AVM збережений для сумісності, додана підтримка ActionScript 3 через AVM2.
  • Поява розширення E4X для XML.
10
  • 3D -ефекти
  • Різні фільтри і ефекти
  • Розширена схема розміщення тексту
  • Покращено API Малювання
10.2
  • покращена підтримка p2p, Додано шумозаглушення.
11
  • Поява нізкоуровнего API для роботи з графікою, USB-пристроями
  • 3D Акселерація
Підтримка версій ActionScript:
Не підтримується AS1 AS1, AS2 AS1, AS2, AS3

2. Синтаксис

Синтаксис ActionScript заснований на специфікації ECMAScript.

2.1. ActionScript 2.0

Даний код створює нове текстове поле, на глибині (depth) 0, в точці (0, 0) і розміром 100 на 100 пікселів. Параметр text дорівнює рядку "Hello, world". Код повинен бути записаний у вікні action - frame

 createTextField  (  "Greet"  ,  0  ,  0  ,  0  ,  100  ,  100  )  ; Greet.  text  =  "Hello, world"  ; 

Приклад класу, написаного на AS2. Код повинен зберігатися в окремому. As файлі і розташовуватися в одній папці з. Fla ісходником проекту.

 class  com.  example  .  Greeter  extends  MovieClip  {  public  function  Greeter  (  )  {  }  public  function  onLoad  (  )  :  Void  {  var  txtHello:  TextField  =  this  .  createTextField  (  "TxtHello"  ,  0  ,  0  ,  0  ,  100  ,  100  )  ; TxtHello.  text  =  "Hello, world"  ;  }  } 

2.2. ActionScript 3.0

У вихідному коді компільованих Adobe Flex SDK (AS 3.0):

 package  {  import  flash.  display  .  Sprite  ;  import  flash.  text  .  TextField  ;  public  class  HelloWorld  extends  Sprite  {  public  function  HelloWorld  (  )  {  var  txtHello:  TextField  =  new  TextField  (  )  ; TxtHello.  text  =  "Hello, world"  ; AddChild  (  txtHello  )  ;  }  }  } 

2.3. MXML

Код, написаний на MXML (розширення XML):

  version  =  "1.0"  encoding  =  "Utf-8"  ?>   xmlns: mx  =  "Http://www.adobe.com/2006/mxml"  xmlns  =  "*"  layout  =  "Vertical"  creationComplete  =  "InitApp ()"  >   >   public function initApp (): void  {  / / Prints our "Hello, world!" message into "mainTxt".  mainTxt.text = Greeter.sayHello ();  }  ]]>   >   id  =  "Title"  fontSize  =  "24"  fontStyle  =  "Bold"  text  =  '"Hello, world!" Example '  />   id  =  "MainTxt"  width  =  "250"  />   > 

2.4. Відладчик

Приклад роботи відладчика. Виводить на екран output будь-які дані, які можливо перетворити в String (AS2 і далі):

 trace  (  "Hello world!"  )  ; 

3. Структура

3.1. ActionScript 2

3.1.1. Елементарні типи даних

Тип Опис
String Строчка, масив символів, наприклад: "Hello World"
Number Будь числове значення, наприклад: 0, 0.5, 1150
Boolean Логічна величина, може приймати значення "true" або "false".
Object Об'єкт. Прикладом об'єкта є класи, методи, функції, параметри ...

3.1.2. Складні типи даних

Тип Опис
MovieClip Графічний об'єкт, що містить кадри.
TextField Динамічне або вводиться текстове поле.
Button Кнопка. Є по суті Movie Clip з визначеним наперед поведінкою. Складається з 4 кадрів: Up, Over, Down і Hit.
Date Об'єкт, що містить відомості про дату / час.
Array Масив даних.
XML XML-об'єкт
XMLNode XML-node
LoadVars Служить для відправки і прийому змінних за допомогою HTTP POST і HTTP GET
Sound Містить звукові дані. MP3 формату
NetStream Містить звукові дані інших форматів
NetConnection Дозволяє взаємодіяти 2 flash-роликів в одній області видимості (наприклад на робочому столі, або в одній вкладці браузера)
MovieClipLoader Клас для подзагрузкі swf роликів і. Jpg. Png зображень
EventListener Оброблювач подій

3.2. ActionScript 3

3.2.1. Елементарні типи даних

(Див. документацію Adobe)

Тип Опис
Boolean Логічна величина, може приймати значення "true" або "false".
int цілочисельне 32-бітне числове значення в діапазоні від -2 31 до 31 лютого -1.
uint цілочисельне 32-бітне числове значення в діапазоні від 0 до 2 32 -1.
Number дробове 64-бітове числове значення в діапазоні від -2 63 до 2 63 -1.
null нуль. Посилання на порожнечу.
String Рядок з 16-бітових символів. Використовується кодування UTF-16.
void тип даних з одним значенням - undefined. Використовується, якщо програміст хоче вказати тип функції як "неповернутих".

3.2.2. Складні типи даних

(Див. документацію Adobe)

Тип Опис
Object Об'єкт. Ключовий клас ООП. Є основою всіх класів AS3.
Array Масив даних нестрогой типізації. Може приймати будь-які значення, наприклад: ['a', 5, new TextField ()]
Vector Масив даних строгої типізації. Наприклад масив Vector. Може містити тільки рядкові дані ['a', 'b', '']
Date Клас, що містить відомості про дату / час.
Error Клас, що містить помилки.
Function Основний клас. Прикладом є будь-який метод AS3.
RegExp Регулярні вирази
XML XML-об'єкт, який базується на E4X (стандарт ECMA-357)
XMLList Array-базірущійся об'єкт для пошуку контенту в XML-класі.

3.2.3. Пакети

ActionScript 3.0 (а точніше Flash Player 9 API - можна сказати, стандартна бібліотека, написана на C + +) складається з більш ніж 700 класів, організованих в наступні пакети (аналоги просторів імен в C + +):

Пакет Опис
flash.accessibility класи для підтримки доступу в Flash контенту і додатків.
flash.display основні класи, які Flash Player використовує для виведення зображення на екран.
flash.errors часто використовувані класи обробки помилок.
flash.external містить клас ExternalInterface, який використовується для зв'язку з контейнером Flash Player'а.
flash.filters класи для роботи з фільтрами растрових картинок.
flash.geom класи для роботи з геометричними класами, такими як точки, прямокутники і матриці трансформації - для підтримки класу BitmapData і можливості кешування зображень.
flash.media класи для роботи з мультимедіа - наприклад, звуками і відео.
flash.net класи для відправки та отримання даних по мережі. Наприклад, запити URL і Flash Remoting.
flash.printing класи для виводу на друк вмісту Flash-фільму.
flash.profiler функції, використовувані для налагодження та профілювання коду.
flash.system класи для доступу до системи на рівні функціональності, такі як безпека, багатомовного змісту і т. д.
flash.text класи для роботи з текстом, його форматуванням, розміром, стилем і розташуванням.
flash.ui класи для користувача інтерфейсу, такі як класи для роботи з мишею і клавіатурою.
flash.utils додаткові класи, такі як ByteArray для роботи з бінарними даними, Timer для відліку інтервалів часу та ін
flash.xml забезпечує підтримку XML і всі функції для роботи з XML. (Необхідний для підтримки попередніх версій AS)

Також існують mx. * Пакети, які складаються з класів, призначених для створення інтерфейсу додатку в середовищі Flex і fl. * пакети, для середовища Flash


4. Популярні середовища

  • Adobe Flash - Історично перша Середа, підтримуюча AS. Починаючи з Flash 5 з'явилася панель "ACTIONS", з можливістю редагування коду (AS1). Для Flash 6 був створений AS2. Починаючи з Flash 9 з'явилася підтримка AS3.
  • Adobe Flash Builder - середа розробки для створення RIA додатків для настільного комп'ютера і мобільних пристроїв.
  • Powerflasher FDT - Середа, визнана досвідченими флеш-програмістами, базується на eclipse - вільної інтегрованому середовищі розробки модульних кроссплатформенних додатків.
  • FlashDevelop - вільна середу розробки і редактор, написаний на C #, що дозволяє створювати Flash-додатки за допомогою Flash IDE, Flex SDK, MTASC або haxe.
  • CodeDrive - середа розробки і редактор, з досить швидким компілятором, заснована на Microsoft Visual Studio.
  • SWFTools - Вільний пакет для роботи з swf-файлами, пакет включає компілятор ActionScript 3.0 (as3compile).

Примітки

  1. RFC 4329 (limit compatible with EcmaScript)
  2. http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf - www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf
  3. Six reasons to use ActionScript 3.0 | Adobe Developer Connection - www.adobe.com/devnet/actionscript/articles/six_reasons_as3.html