Кіріспе
Flash мультимедиялық платформасы үшін жасалған ActionScript – бастапқыда Macromedia Inc. (кейін Adobe сатып алған) компаниясымен әзірленген объектіге бағытталған бағдарламалау тілі. Ол HyperCard бағдарламасының скрипт тілі HyperTalk-тың ықпалымен құрылған. Қазір ол ECMAScript-тің іске асырылуы болып табылады (яғни, ол JavaScript ретінде кеңінен танымал тілдің синтаксисі мен семантикасын кеңейтеді), бірақ бастапқыда екеуі де HyperTalk-тың ықпалымен пайда болған туыс тілдер еді. ActionScript коды көбінесе компилятор арқылы байт-код форматына түрлендіріледі. ActionScript негізінен Adobe Flash платформасы үшін веб-сайттар мен бағдарламалық қамтамасты дамытуға қолданылады, алғашқыда веб-беттерде кіріктірілген SWF файлдары түрінде пайдаланылды. ActionScript 3 Adobe AIR жүйесімен десктоптық және мобильдік қосымшаларды жасау үшін де қолданылады. Тілдің өзі ашық кодты, себебі оның спецификациясы тегін ұсынылады, сондай-ақ ашық кодты компилятор (Apache Flex құрамында) және ашық кодты виртуалды машина (Tamarin) қолжетімді. ActionScript сонымен қатар Scaleform GFx жүйесімен үш өлшемді видео ойындардың пайдаланушы интерфейстерін және ақпараттық дисплейлерін жасау үшін де пайдаланылды.
ActionScript is an object oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe). It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript (meaning it is a superset of the syntax and semantics of the language more widely known as JavaScript), though it originally arose as a sibling, both being influenced by HyperTalk. ActionScript code is usually converted to byte code format by a compiler. ActionScript is used primarily for the development of websites and software targeting the Adobe Flash platform, originally finding use on web pages in the form of embedded SWF files. ActionScript 3 is also used with the Adobe AIR system for the development of desktop and mobile applications. The language itself is open source in that its specification is offered free of charge and both an open source compiler (as part of Apache Flex) and open source virtual machine (Tamarin) are available. ActionScript was also used with Scaleform GFx for the development of three dimensional video game user interfaces and heads up displays.
Шолу
ActionScript бастапқыда Adobe Flash (бұрынғы Macromedia Flash) бағдарламасында жасалған қарапайым екі өлшемді векторлық анимацияларды басқару үшін әзірленген. Бастапқыда анимацияға бағытталған Flash мазмұнының алғашқы нұсқаларында интерактивті мүмкіндіктер шектеулі болғандықтан, сценарийлерді құру мүмкіндігі де өте тар болды. Кейінгі нұсқалар веб-ойын және ағылатын медиа (видео және аудио сияқты) мүмкіндіктерін қамтитын бай веб-қосымшаларды жасауға мүмкіндік беретін функционалдықтарды қосты. Бүгінде ActionScript Adobe AIR арқылы десктоптық және мобильдік қолданбаларды жасауға қолданылады; сондай-ақ, ол кейбір деректер базасы қолданбаларында және Make Controller Kit сияқты қарапайым робототехникада да пайдаланылады. Flash MX 2004 ActionScript 2.0-ны ұсынды, бұл Flash қолданбаларын жасауға арналған тиімді сценарий тілі. Анимация жасаудың орнына сценарий жасау арқылы көбінесе уақытты үнемдеуге болады, бұл өңдеу кезінде жоғары деңгейдегі икемділікті қамтамасыз етеді. 2006 жылы Flash Player 9 alpha нұсқасы шыққаннан кейін ActionScript-тің ActionScript 3.0 жаңа нұсқасы жарияланды. Бұл тіл нұсқасы Tamarin виртуалды машинасының (бұрын ActionScript Virtual Machine 2) нұсқасында компиляцияланып, орындалуы тиіс, ол да толыққанды қайта жазылды (AVM2 деп аталды). Осы себепті ActionScript 3.0-те жазылған код әдетте Flash Player 9 және одан жоғары нұсқаларға бағытталған және бұрынғы нұсқаларда жұмыс істемейді. Сонымен қатар, жаңа уақытында компиляциялау мүмкіндіктерінің арқасында ActionScript 3.0 мұрагер ActionScript кодтарынан 10 есе жылдам орындалады. Flash кітапханаларын браузердің XML мүмкіндіктерімен бірге қолдану арқылы браузерде бай мазмұнды көрсетуге болады. Бұл технология Асинхронды Flash және XML деп аталады, ол AJAX сияқты жұмыс істейді. Adobe өзінің Flex өнімдер желісін Flash орындалу ортасында құрылған, мінез-құлқы мен бағдарламалауы ActionScript-те жүзеге асырылған бай веб-қосымшаларға деген сұранысты қанағаттандыру үшін ұсынады. ActionScript 3.0 Flex 2 қолданбалық бағдарламалау интерфейсінің (API) негізін құрайды.
Тарих
ActionScript - Macromedia компаниясының Flash авторлық құралы үшін объектіге бағытталған бағдарламалау тілі ретінде басталып, кейіннен Adobe Systems компаниясымен Adobe Flash ретінде дамытылды. Flash авторлық құралының алғашқы үш нұсқасы шектеулі интерактивті мүмкіндіктерді қамтады. Flash-ты алғаш құрастырғандар батырмаға немесе кадрға "әрекет" деп аталатын қарапайым команданы қоса алатын. Әрекеттер жиынтығы "play", "stop", "getURL" және "gotoAndPlay" сияқты командалармен негізгі навигациялық басқару құралдарынан тұрды. 1999 жылы Flash 4 нұсқасы шыққан кезде, бұл қарапайым әрекеттер жиынтығы кішкентай скрипт тіліне айналды. Flash 4-ке енгізілген жаңа мүмкіндіктерге айнымалылар, өрнектер, операторлар, if операторлары және циклдар кірді. Ішкі қолданыста "ActionScript" деп аталғанымен, Flash 4 пайдаланушы нұсқаулығы мен маркетингтік құжаттар осы командалар жиынтығын сипаттау үшін "іс-қимылдар" терминін қолдануды жалғастырды.
Ойыншы нұсқасы бойынша уақыт сызығы
Flash Player 2: Скрипттерді қолдаумен алғашқы нұсқасы, оның әрекеттеріне gotoAndPlay, gotoAndStop, nextFrame және nextScene уақыт сызығын басқару кіреді. Flash Player 3: Бастапқы скрипттерді қолдау кеңейтілді, ол сыртқы SWF-терді жүктеу мүмкіндігіне ие (loadMovie). Flash Player 4: Толық скрипттерді жүзеге асырумен (Actions деп аталады) алғашқы ойнатқыш, скрипттер Flash-қа негізделген синтаксис болды және циклдар, шарттар, айнымалылар және басқа да негізгі тіл құрылымдары үшін қолдау болды. Flash Player 5: ActionScript-тің алғашқы нұсқасына кірді, ол ECMAScript-ке негізделген прототипке негізделген бағдарламалауды қолданды және толық процедуралық бағдарламалау мен объектіге бағытталған бағдарламалауға мүмкіндік берді. Дизайнға негізделген даму. Flash Player 6 оқиғаларды басқару моделін, қолжетімділік бақылауын және switch операторын қолдауды қосты. Action Message Format (AMF) және Real Time Messaging Protocol (RTMP) протоколдарын қолдайтын алғашқы нұсқасы, сұраныс бойынша аудио/бейне ағынын жүзеге асыруға мүмкіндік берді. Flash Player 7: Оған мәтін үшін Cascading Style Sheets (CSS) стилін және ActionScript 2.0 қолдауын қосты, ол Netscape ұсынысына негізделген ECMAScript 4 бағдарламалау тілі. Сыныптық мұрагерлікпен. Алайда, ActionScript 2.0 ActionScript 1.0 байт-кодына транспилирлене алады, сондықтан ол Flash Player 6-да жұмыс істей алады. Flash Player 8 ActionScript 1/ActionScript 2 бағдарламасын жаңа кластық кітапханалармен кеңейтті, олар орындалу кезінде биттік карта деректерін басқаруға, файлдарды жүктеуге және размылу және көлеңке үшін тікелей сүзгілерге арналған API-ларды қамтиды. Flash Player 9 (алғашқыда 8.5 деп аталды) ActionScript 3.0-ды жаңа виртуалды машинаның пайда болуымен қосты, ол ActionScript Virtual Machine 2 (AVM2) деп аталды, ол бұрынғы AVM1-мен қатар мұралық мазмұнды қолдау үшін қажет. Ойыншының осы нұсқасының басты мақсаты өнімділікті арттыру болды, оның ішінде жаңа Just in Time (JIT) компиляторы. Бинарлық сокеттерді қолдау, XML (E4X) XML-ді ECMAScript-пен талдау, толық экран режимі және тұрақты өрнектер қосылды. Бұл Adobe Flash Player деп аталатын ойнатқыштың алғашқы нұсқасы. Flash Player 10 (алғашқыда Astro деп аталды): X, Y және Z осьтерінде айналу, 3D сурет API және текстуралық бейнелеу сияқты негізгі 3D манипуляциялар қосылды. Adobe Pixel Bender көмегімен қолданушылық сүзгілерді жасау мүмкіндігі. Бірнеше визуалды өңдеу тапсырмалары енді GPU-ға жүктеледі, бұл әр кадр үшін рендеринг уақытын айтарлықтай қысқартады, нәтижесінде кадр жылдамдығы жоғарылайды, әсіресе H.264 бейнесі үшін. Жаңа дыбыс API бар, ол Flash-та аудионы жекешелендіруге мүмкіндік береді, бұл бұрын мүмкін болмаған нәрсе. Сонымен қатар, Flash Player 10 Real Time Media Flow Protocol (RTMFP) арқылы P2P (Peer-to-Peer) байланысын қолдайды. Flash Player 11: Бұл нұсқаның басты қосымшасы Windows Desktop, Mac Desktop, iOS, Android және басқа да негізгі платформалар үшін Stage3D негізделген (графикалық картаны жеделдеткен) 3D мүмкіндіктері. iOS платформасы және басқа десктоп емес платформалар үшін үйлесімділіктің маңызды жақсартулары қосылды. Басқа мүмкіндіктерге камералар үшін H.264 кодегі, Native JSON қолдауы, Кубикалық Безиер қисықтары, қауіпсіз кездейсоқ сан генераторы, swf файлдары үшін LZMA сығылуы, кейбір кодты басқа процессор ядроларына жүктеу үшін жұмысшылар, графикалық картаның жеделдетілген камера ағынын көрсетуі, жадтың ішкі қасиеттері мен өнімділікті талдау және ActionScript Compiler 2.0, сондай-ақ басқа да шағын толықтырулар кіреді. Flash Player 11.2: 2012 жылдың наурыз айында шығарылды, ойын және бейне нарықтары үшін маңызды мүмкіндіктерді қосуға бағытталған. Жаңа нұсқаның кейбір ерекшеліктері: Тышқанды құлыптау қолдауы. Оң және ортаңғы тышқан батырмасын басуды қолдау. Контексттік мәзірді өшіру. Аппараттық жеделдетілген графика / Apple iOS және Android үшін Adobe AIR арқылы 3D қолдауы. Аппараттық жеделдетілген бейнекарталарды қолдау (2008 жылдың қаңтарынан бастап) аппараттық жеделдетілген мазмұнның қол жетімділігін кеңейту үшін. Жаңа Throttle оқиғасы API (Flash Player мазмұнды тоқтатқанда, тоқтатқанда немесе қайта бастағанда оқиғаны жібереді). Компьютерлерде көп тірісті бейне кодтау құбыржолы, бұл барлық десктоп платформаларында бейненің жалпы өнімділігін жақсартады. Дебьюг-плеерлерде премиум мүмкіндіктерді пайдалану туралы хабарлама; контент релиз-плеерлерде шектеусіз жұмыс істейді. Flash Player 11.3: 2012 жылдың маусым айында шығарылды, ойын нарығы үшін маңызды мүмкіндіктер мен функционалдық кілттерге, сондай-ақ әзірлеушілердің танымал сұраныстарын қанағаттандыруға бағытталған. Бұл нұсқаның кейбір ерекшеліктері мыналарды қамтиды: Толық экран режимінде пернетақта енгізуді қолдау. Төмен задерзімен жұмыс істеу үшін жақсартылған дыбыс қолдауы. Stage 3D мазмұны үшін текстураларды бірте-бірте ағынды ету мүмкіндігі. Firefox-тағы Flash Player үшін қорғалған режим. Кадр белгілеріне оқиғалар. BitmapData-ны JPEG және PNG пішімдеріне сығыстыруды қолдау. Mac OS X App Store қолданбасының құмдық талаптарына қолдау. Stage 3D үшін мәтін ағыны қолдауы. GPU драйвер туралы толыққанды ақпарат. Жаңа сапалы API-мен биттік картаны салу. Сыртқы тышқан оқиғасы API-сі. Mac үшін Flash Player тікелей жаңарту қолдауы. Android 4.0 құрылғылары үшін стилус қолдауы (Adobe AIR). iOS үшін USB қателігін жою (Adobe AIR). iOS симуляторы қолдауы (Adobe AIR). Flash Player 11.4: 2012 жылдың тамыз айында шығарылды, ол ойын нарығы үшін маңызды мүмкіндіктер мен функционалдықты қамтамасыз етуге, сондай-ақ әзірлеушілердің танымал сұраныстарын қанағаттандыруға бағытталған. Бұл нұсқаның кейбір ерекшеліктері: ActionScript жұмысшылары (жеке тізбектерде ActionScript-тің бір уақытта орындалуына мүмкіндік береді), кеңейтілген профильдеуді қолдау, ByteArray үшін LZMA сығылуы, Stage 3D үшін аппараттық жеделдетілген бейнекарталарды қолдау 2006 жылға дейін кеңейтілді, Apple iOS үшін жақсартылған ActionScript өнімділігі, ағымдағы ортаның өнімділік қабілеттері туралы хабарлау үшін өнімділік индексі API, альфа қолдауы бар сығылған текстураларды қолдау, StageVideo қолдауы. attachCamera API және iOS үшін push хабарламаларын қолдау (Adobe AIR). Flash Player 11.5: 2012 жылдың қараша айында шығарылды, өнімділікті жақсартуға және тұрақтылыққа бағытталған. Бұл нұсқаның кейбір ерекшеліктері: ActionScript жұмысшылары үшін ортақ ByteArray қолдауы, Flash Player-дің релиз нұсқаларындағы қателерді жою стектері және әртүрлі түзетулер. Flash Player 11.6: 2013 жылдың наурыз айында шығарылды, өнімділікті жақсартуға, қауіпсіздікті күшейтуге және тұрақтылыққа бағытталған. Бұл нұсқаның кейбір ерекшеліктері: орындалу кезінде графикалық векторлық деректерді сұрау мүмкіндігі, толық экран рұқсаты диалогының пайдаланушы интерфейсін жақсарту, AOT режимінде AIR қолданбасы ретінде орналасқанда SWF-терді орындалу кезінде жүктеу мүмкіндігі, iOS құрылғыларында қолдау көрсетілетін дисплей ажыратымдылығын бақылау, Flash Professional үшін HiDPI қолдауы және ActionScript 3-тің жылдам жад операцияларына/ішкі қасиеттерге қол жеткізуі. Flash Player 11.7: 2013 жылдың маусым айында шығарылды, "Geary" кодолық атымен, бұл нұсқа премиум бейне, ойын, қауіпсіздік және тұрақтылыққа бағытталған. Бұл нұсқаға жоспарланған кейбір мүмкіндіктер: Android құрылғыларындағы қапталды орындау ортасын қателігін жою, OUYA контроллерін қолдау, iOS-та SWF файлдарын қашықтан хосттау және iCloud қолдауын жақсарту үшін iOS-тағы ортақ нысандардың сақтығын болдырмау. Flash Player 11.8: Adobe бұл нұсқаны 2013 жылдың екінші жартысының басында шығаруды жоспарлаған, "Harrison" кодолық атымен. Бұл нұсқа премиум бейне, ойын, қауіпсіздік және тұрақтылыққа бағытталған. Бұл нұсқадағы кейбір мүмкіндіктер MovieClip-тер мен Android-тағы ойындардағы GamePad қолдауындағы рекурсивті тоқтату API-ін қамтиды.
20002004: ActionScript "1.0"
2000 жылдың қыркүйегінде Flash 5 нұсқасы шығарлымымен Flash 4-тегі "әрекеттер" тағы да жетілдіріліп, алғаш рет "ActionScript" деп аталды. Бұл JavaScript және ECMA 262 (Үшінші басылым) стандартының ықпалымен жазылған ActionScript-тің алғашқы нұсқасы болды, ол аталған стандарттың объектілік моделін және оның көптеген негізгі дерек түрлерін қолдайды. Жергілікті айнымалылар оператор арқылы жарияланып, параметрлерді жіберу және нәтижелерді қайтару мүмкіндігі бар пайдаланушы анықтаған функцияларды жасауға болады. ActionScript енді мәтіндік редакторда да жазылуы мүмкін, бұрынғыдай төмендегі тізімдер мен диалог терезелерінен әрекеттерді таңдау арқылы емес. Оның авторлық құралы Flash MX және оған сәйкес Flash Player 6 нұсқасы шыққанда, тіл негізінен өзгермеді; тек қана шағын өзгерістер енгізілді, мысалы, оператор мен "қатаң теңдік" операторы қосылды, бұл оны ECMA 262 стандартына сәйкес етуге жақындатты. ActionScript-тің кейінгі нұсқаларынан ерекшеленетін екі маңызды ерекшелігі – оның еркін типтеу жүйесі және прототипке негізделген мұрагерлікке тәуелділігі. Еркін типтеу – айнымалының кез келген дерек типін сақтау қабілеті. Бұл сценарийді жылдам дамытуға мүмкіндік береді және кішкентай жобалар үшін өте қолайлы. Прототипке негізделген мұрагерлік – ActionScript 1.0-да кодты қайта пайдалану және объектіге бағытталған бағдарламалау үшін қолданылатын механизм. Сыныптың ортақ қасиеттерін анықтайтын кілт сөздің орнына, 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 төртінші нұсқасының жобалық спецификациясына ішінара сәйкес келді.
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 және бірнеше қосымша fscommand2 API қолдауы қосылды. Flash Lite 3: Flash 8 ActionScript 2.0 және FLV бейнелерін ойнату мүмкіндігі қосылды. Flash Lite 4: Flash 10 ActionScript 3.0 браузер плагині ретінде және аппараттық графиканы жеделдету мүмкіндігі қосылды.
Ауа райы
Adobe AIR, Adobe әзірлеген Stage3D қозғалтқышы сияқты, кейбір қосымша мазмұндармен қатар ActionScript-ті де қолдайды. ActionScript 3.0 үшін қолжетімді API (Қолданбалық бағдарламалау интерфейстері) саны да едәуір артты.
Синтаксисі
ActionScript коды еркін пішінде жазылады, демек автор қалаған көлемде және стильде бос орын қолданып код жазуға болады. Негізгі синтаксис ECMAScript-тен туындайды.
Кодты қорғау
Байткодтың көптеген файл форматтары сияқты, Flash SWF файлдарын да олардың бастапқы коды мен ресурстарына кері декомпиляциялауға болады (Microsoft .NET файлдарының декомпиляциялануына ұқсас). Кейбір декомпиляторлар түпкілікті бастапқы файлды дерлік толық қалпына келтіре алады, тіпті оның жасалу кезінде қолданылған нақты код деңгейіне дейін (дегенмен нәтижелер әр жағдайда әртүрлі болуы мүмкін). Декомпиляторларға қарсы, ActionScript кодты бүркеу құралдары (obfuscators) пайда болды, олар кодты декомпилятордың нәтижесін түсініксіз ету үшін өзгертеді, бірақ бағдарламаның жұмыс істеу қабілеті мен құрылымын сақтайды. Жоғары сапалы бүркеу құралдары идентификаторларды қайта атау, басқару ағынын өзгерту және деректерді абстракциялау сияқты лексикалық түрлендірулерді қолданады, бұл декомпиляторларға адамға пайдалы болуы мүмкін нәтижелерді жасауды қиындатады. Төмен сапалы бүркеу құралдары декомпиляторлар үшін тұзақтар қояды. Мұндай құралдар декомпилятор бағдарламасын күтпеген жерден істен шығаруы немесе түсініксіз кодты шығаруы мүмкін.