ActionScript

З пляцоўкі Вікіпедыя
Jump to navigation Jump to search
ActionScript
Клас мовы:

аб'ектна-арыентаваны, прататыпны, імператыўны, скрыптовы

З'явілася ў:

1998

Аўтар(ы):

Гары Гросман

Рэліз:

3.0

Тыпізацыя дадзеных:

моцная, статычная

Асноўныя рэалізацыі:

Adobe Flash Player, Adobe AIR, Apache Flex

Зведала ўплыў:

JavaScript, Java

Сайт:

www.adobe.com
help.adobe.com

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

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)

Тып Апісанне
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)

Тып Апісанне
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) .

Зноскі

Спасылкі[правіць | правіць зыходнік]