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:
Не падтрымліваецца AS1 AS1, AS2 AS1, 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 Масіў дадзеных.
XML XML-аб’ект
XMLNode XML-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 Рэгулярныя выразы
XML XML-аб’ект, які базуецца на E4X (стандарт ECMA-357)
XMLList Array-базаваны аб’ект для пошуку кантэнту ў 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) .

Зноскі

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