ActionScript

**ActionScript** adalah bahasa skrip berasaskan ECMAScript, terutamanya berkait dengan kelakuan skrip applikasi Adobe Flash. Kini dalam versi 3.0, ActionScript telah menrevolusi format flash, yang pada mulanya hanya sekadar menawarkan animasi mendatar biasa. Dengan ActionScript, applikasi flash mampu menawarkan interaksi aras tinggi, yang merupakan komponen reka bentuk halaman web moden.

Applikasi yang dibangunkan dengan menggunakan Adobe Flash atau Adobe Flex sering kali menggunakan ActionScript bagi manipulasi kandungan dan data semasa perlaksanaan. Pelantar lain seperti ColdFusion turut menyokong skrip dengan bahasa ActionScript.

## Sejarah
ActionScript mula muncul dalam sintak kini dengan terbitan Flash 5, yang merupakan Flash yang pertama boleh diprogram sepenuhnya. ActionScript ini dibebaskan dinamakan ActionScript 1.0. Flash 6 (MX) kemudian meluaskan lagi kegunaan persekitaran pengaturcaraan dengan menambah sejumlah fungsi binaan dalam dan membenarkan kawalan program lebih baik unsur wayang. Flash 7 (MX 2004) memperkenalkan ActionScript 2.0, yang menambah ciri-ciri pengaturcaraan berasaskan kelas dan jenis kuat (*strong typing*) seperti pengistiharan kelas jelas, perwarisan, antaramuka, dan Taip Data Ketat (*Strict Data Typing*). ActionScript 1.0 dan 2.0 berkongsi bentuk kompil yang sama dengan Flash SWFs.

### Garismasa

* **Flash Lite 1.0 and 1.1**: Flash Lite merupakan teknologi Flash dibangunkan khusus bagi telefon bimbit dan peranti eletronik pengguna. Flash Lite 1.1 menyokong Flash 4 ActionScript.

* **Flash Lite 2.1**: Sokongan tambahan bagi Flash 7 ActionScript 2.0.

* **Flash Player 2**: Versi pertama dengan sokongan skrip, aksi termasuk gotoAndPlay, gotoAndStop, nextFrame dan nextScene bagi kawalan garis masa.

* **Flash Player 3**: Penambahan sokongan skrip asas dengan keupayaan memuat SWF (loadMovie) luaran.

* **Flash Player 4**: First player with a full scripting implementation (called *Actions*). Skrip merupakan sintak berasaskan slash dan mengandungi sokongan bagi kitaran, syarat (*conditionals*), pembolehubah dan binaan bahasa asas lain.

* **Flash Player 5**: Termasuk versi pertama ActionScript sebenar. Menggunakan pengaturcaraan-berasaskan-prototaip berasaskan ECMAScript, dan membenarkan pengaturcaraan prosedural dan pengaturcaraan berorentasikan objek.

* **Flash Player 6**: Menambah model pengendalian kejadian, dan sokongan bagi suis.

* **Flash Player 7**: Flash Player 7 menawarkan beberapa ciri baru seperti teks CSS dan peningkatan prestasi. Penkompil Macromedia Flash dibebaskan bersama Flash Player 7 turut menyokong ActionScript 2.0. Class programming language based on the ECMAScript 4 Netscape Proposal. Bagaimanapun, ActionScript 2.0 mampu kompil silang dengan ActionScript 1.0 kod-bit, dengan itu mampu dilaksanakan oleh Flash Player 6.

* **Flash Player 8**: Tambahan lanjut ActionScript 2.0 dengan menambah pustaka kelas baru (*new class libraries*) dengan API bagi mengawal data bitmap semasa perlaksanaan, dan muatnaik fail.

* **Flash Player 9 (asalnya dikenali sebagai 8.5)**: Menambah ActionScript 3.0 dengan pengenalan (*advent*) mesin maya baru, dikenali sebagai AVM2 (ActionScript Virtual Machine 2), yang wujud bersama dengan AVM1 sebelumnya yang diperlukan bagi menyokong kandungan warisan. Peningkatan prestasi merupakan matlamat utama bagi keluaran pemain ini termasuk Kompilasi Tepat Masa (*Just In Time compilation - JIT*). Ini adalah penerbitan pertama yang berjudulAdobe Flash Player.

## Sintak
Dalam ActionScript 2.0, tidak terdapat kelas, dan juga, barang pustaka (MovieClip) yang boleh dikaitkan dengan kelas. Kelas bisanya ditulis dalam Flash IDE sebagai **ActionScript Files** luaran; bagaimanapun, ia boleh dicipta menggunakan penyunting teks, asalkan file terhasil disimpan dengan nama fail sambungan **.as**. Kelas merupakan tambahan kepada bahasa ActionScript yang boleh ditulis sendiri oleh pengaturcara, sungguhpun terdapat banyak kelad bina dalam seperti kelas **MovieClip**, yang boleh digunakan bagi melakar vector pada skrin secara dinamik. Fail kelas boleh digunakan bagi menjadikan pengaturcaraan mudah, dan fail kelas dapat dipindahkan antara banyak projek sekiranya diperlukan.

## Contoh
### Contoh ActionScript 2.0
Yang berikut mecetak Hello dunia dalam panel output Flash persekitaran pembangunan bersepadu (''Integrated development environment - IDE''). Nota ini hanya berlaku apabila dilaksanakan dalam Flash persekitaran pembangunan bersepadu (''Integrated development environment - IDE''), kerana fungsi jejak hanya disokong dalamnya.

```actionscript
trace ("Hello world!");
```


The following code prints Hello world to the stage. 

```actionscript
_root.createTextField("myText", 1, 0,0,100,25);
_root.myText.text = "Hello world!";
```


The following code outputs the current mouse position when the mouse moves, by using the onMouseMove event. Again this will only work in the Flash IDE.

```actionscript
onMouseMove = function () {
    trace ("X: "+_root._xmouse);
    trace ("Y: "+_root._ymouse);
 };
```


The following code, when placed on a Button, begins to play the timeline of the MovieClip the button is placed in. This also applies to the root timeline since the root is considered a MovieClip as well.

```actionscript
on(release) {
    play();
 }
```


Contoh lebih maju ini mencipta jujukan (*array*) yang mengandungi nombor dan rantaian perkataan, dan menetapkan nombor kepada pembolehubah dikenali `num` dan pembolehubah rantaian (*string*) dikenali `str` menggunakan fingsi prototaip (*prototype functions*) dan fungsi (*recursion*). Kemudian, menggunakan MovieClip API, medan teks dilakar pada skrin, dalam mana nilai pembolehubah dipaparkan.


```actionscript
var myArray:Array = new Array ("Hello", "ActionScript", 3, 7, 11, "Flash");
 Array.prototype.pickNumber = function():Number  {
    var rand:Number = random(this.length);
    return (typeof (this[rand]) == "number") ? this[rand] : this.pickNumber();
 };
 Array.prototype.pickString = function():String  {
    var rand:Number = random(this.length);
    return (typeof (this[rand]) == "string") ? this[rand] : this.pickString();
 };
 var num:Number = myArray.pickNumber();
 var str:String = myArray.pickString();
 _root.createTextField ("txt", 1, 10, 10, 530, 390);
 txt.text = "Array = "+myArray+"\nRandom Number = "+num+"\nRandom String = "+str;
```


Array and dataProvider example:

```actionscript
var aData:Array = [{name: "J. Bell", age: "55"}, {name: "B. Longman", age: "21"}];
 dataGrid.dataProvider = aData;
```


### Contoh ActionScript 3.0

This Hello World example uses ActionScript 3.0:

```actionscript
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.filters.DropShadowFilter;
    public class HelloWorld2 extends Sprite {
       public function HelloWorld2() {
          var shad:DropShadowFilter = new DropShadowFilter (2, 45, 0x000000, 25, 3, 3, 2, 2);
          var txt:TextField = new TextField();
          txt.textColor = 0xFFFFFF;
          txt.filters = [shad];
          txt.width = 120;
          txt.x = Math.random()*300;
          txt.y = Math.random()*300;
          txt.selectable = false;
          txt.text = "Hello World welcome! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]";
          addChild(txt);
       }
    }
 }
```


## Lihat juga
*ECMAScript
*Lingo untuk Macromedia Director
*Adobe Flash
*Adobe Flex
*Adobe Flash Lite
*Scripting language
*Macromedia
*AsUnit

## Puantan luar
* ActionScript Technology Center
* ActionScript.org Adobe Flash and Flex Resources
* AS Main: List of helpful ActionScript tutorials
* Protoflash.com Flash/Actionscript Blog, Tutorials, and Components