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

ActionScript
Выява лагатыпа
Клас мовыаб'ектна-арыентаваны, прататыпны, імператыўны, скрыптовы
З’явілася ў1998
Аўтар(ы)Гары Гросман
Рэліз3.0
Тыпізацыя даныхмоцная, статычная
Асноўныя рэалізацыіAdobe Flash Player, Adobe AIR, Apache Flex
Зведала ўплыўJavaScript, Java
Сайтwww.adobe.com
help.adobe.com

SWF-файлы выконваюцца Flash Player-ам. Flash Player існуе ў выглядзе плагіна да вэб-браўзэра, а таксама як самастойны дадатак (standalone). У другім выпадку магчыма стварэнне выконваемых exe-файлаў (projector), калі дадатак Flash Player аб’ядноўваецца з swf файлам па аналогіі з SFX.

З дапамогай ActionScript можна ствараць інтэрактыўныя мультымедыя-прыкладанні, гульні, вэб-сайты і многае іншае.

ActionScript — адкрытая мова праграмавання, яе спецыфікацыя знаходзіцца ў адкрытым доступе на сайце Adobe[1]. Кампілятар (як частка Apache Flex) і адкрытая віртуальная машына (Tamarin) з’яўляюцца адкрытым праграмным забеспячэннем.

Гісторыя правіць

ActionScript як мова з’явілася з выхадам 5-й версіі Macromedia Flash, якая стала першым праграмуемым на ActionScript асяроддзем. Першая версія мовы, што выйшла, называлася ActionScript 1.0. Шостая версія Flash (MX) таксама выкарыстала ActionScript 1.0. У 2004 годзе кампанія Macromedia прадставіла новую версію ActionScript 2.0 разам з выхадам Flash 7 (MX 2004), у якой было ўведзена строгае вызначэнне тыпаў, а таксама праграмаванне, заснаванае на класах. Гэта значыць з’явіліся новыя ключавыя словы:

  • class (клас),
  • інтэрфейс (інтэрфейс),
  • 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 (што забяспечвае значны прырост прадукцыйнасці: да 10 тысяч раз). 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:
Не падтрымліваеццаAS1AS1, AS2AS1, AS2, AS3

Сінтаксіс правіць

Сінтаксіс ActionScript заснаваны на спецыфікацыі ECMAScript.

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!";    }}

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);    }}

MXML правіць

Код, напісаны на MXML (пашырэнне XML):

<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical"creationComplete="initApp()">    <mx:Script>        <![CDATA[            public function initApp():void            {                // Prints our "Hello, world!" message into "mainTxt".                mainTxt.text = Greeter.sayHello();            }        ]]>    </mx:Script>    <mx:Label id="title" fontSize="24" fontStyle="bold" text='"Hello, world!" Example'/>    <mx:TextArea id="mainTxt" width="250"/></mx:Application>

Адладчык правіць

Прыклад працы адладчыка. Выводзіць на экран output любыя дадзеныя, якія магчыма пераўтварыць у String (AS2 і далей):

trace("Hello world!");

Структура правіць

ActionScript 2 правіць

Элементарныя тыпы дадзеных правіць

ТыпАпісанне
StringРадок, масіў сімвалаў, напрыклад: «Hello World»
NumberЛюбое лікавае значэнне, напрыклад: 0, 0.5, 1150
BooleanЛагічная велічыня, можа прымаць значэння «true» альбо «false».
ObjectАб’ект. Прыкладам аб’екта з’яўляюцца класы, метады, функцыі, параметры...

Складаныя тыпы дадзеных правіць

ТыпАпісанне
MovieClipГрафічны аб’ект, які змяшчае кадры.
TextFieldДынамічнае тэкставае поле або тое, што ўводзіцца.
ButtonКнопка. З’яўляецца па сутнасці Movie Clip з перадвызначанымі паводзінамі. Складаецца з 4 кадраў: Up, Over, Down і Hit.
DateАб’ект, які змяшчае звесткі аб даце/часу.
ArrayМасіў дадзеных.
XMLXML-аб’ект
XMLNodeXML-node
LoadVarsСлужыць для адпраўкі і прыёму зменных пры дапамозе HTTP POST і HTTP GET
SoundЗмяшчае гукавыя дадзеныя .MP3 фармату
NetStreamЗмяшчае гукавыя дадзеныя іншых фарматаў
NetConnectionДазваляе ўзаемадзейнічаць 2 flash-ролікам ў адной вобласці бачнасці (напрыклад на працоўным стале, або ў адной ўкладцы браўзэра)
MovieClipLoaderКлас для падзагрузкі swf ролікаў і .jpg .png выяваў
EventListenerАпрацоўшчык падзей

ActionScript 3 правіць

Элементарныя тыпы дадзеных правіць

(гл. дакументацыю Adobe Архівавана 2 лістапада 2007.)

ТыпАпісанне
BooleanЛагічная велічыня, можа прымаць значэння «true» альбо «false».
intцэлалікавае 32-бітнае лікавае значэнне ў дыяпазоне ад -231 да 231-1.
uintцэлалікавае 32-бітнае лікавае значэнне ў дыяпазоне ад 0 да 232-1.
Numberдробавае 64-бітнае лікавае значэнне ў дыяпазоне ад -263 да 263-1.
nullнуль. Спасылка на пустэчу.
StringРадок з 16-бітных знакаў. Выкарыстоўваецца кадзіроўка UTF-16.
voidтып дадзеных з адным значэннем — undefined. Выкарыстоўваецца, калі праграміст хоча паказаць тып функцыі як «які ня вяртаецца».

Складаныя тыпы дадзеных правіць

(гл. дакументацыю Adobe Архівавана 2 лістапада 2007.)

ТыпАпісанне
ObjectАб’ект. Ключавой клас ААП. З’яўляецца асновай усіх класаў AS3.
ArrayМасіў дадзеных нестрогой тыпізацыі. Можа прымаць любыя значэння, напрыклад: ['a', 5, new TextField()]
VectorМасіў дадзеных строгай тыпізацыі. Напрыклад масіў Vector.<String> можа ўтрымліваць толькі радковыя дадзеныя ['a','b',' ']
DateКлас, які змяшчае звесткі аб даце/часу.
ErrorКлас, які змяшчае памылкі.
FunctionАсноўны клас. Прыкладам з’яўляецца любы метад AS3.
RegExpРэгулярныя выразы
XMLXML-аб’ект, які базуецца на E4X (стандарт ECMA-357)
XMLListArray-базаваны аб’ект для пошуку кантэнту ў XML-класе.

Пакеты правіць

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

Папулярныя асяроддзя правіць

  • 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) .

Зноскі

Спасылкі правіць