ActionScript

**ActionScript** er et programmeringsspråk basert på ECMAScript som blir brukt primært til utvikling av nettsider og programvare for Adobe Flash Player-plattformen, men også i noen databaseapplikasjoner og grunnleggende robotikk. Språket var først utviklet av Macromedia, men er nå eid av Adobe som tok over Macromedia i 2005. I flash CS5 ble det også mulighet for å lage applikasjoner til IOS.

## Historie
ActionScript kom først i sin syntax med lansering i Flash 5, som var den første versjonen av Flash hvor det var mulig å programmere. Den første versjonen av ActionScript ble kalt ActionScript 1.0 . Flash 6 (MX) utvidet funksjonene i forhold til programmering i ActionScript. Dette gjorde de ved å legge til litt flere innebygde funksjoner og bedre programmeringskontroller av SWF-filmelementer. Flash 7 (MX 2004) introduserte ActionScript 2.0 som kom med nye funksjoner som klassebasert programmering, og avansert dataskriving. Actiontscript 1.0 og 2.0 deler den samme komprisasjonen i Flash SWF-filer.

### Tidslinje
* **Flash Lite 1.0 og 1.1**: Flash Lite er flash-teknologien spesielt laget for utvikling for mobiltelefoner og andre elektroniske apparater. Flash Lite 1.1 støtter Flash 4 ActionScript.

* **Flash Lite 2.1**: la til support for Flash 7 ActionScript 2.0.

* **Flash Player 2**: Første versjon med programmeringsstøtte, funksjoner som: gotoAndPlay, gotoAndStop, nextFrame og nextScene for tidslinjekontroller.

* **Flash Player 3**: videre funksjoner som for eksempel muligheten til å laste eksterne SWF-filmer (loadMovie).

* **Flash Player 4**: første spilleren med full støtte for scripting. (kalt *Actions*).

* **Flash Player 5**: inkluderer den første versjonen av ActionScript.

* **Flash Player 6**: La til event handling model, og støtte for switch.

* **Flash Player 7**: Flash Player 7 tilbyr nye funksjoner som  CSS-tekst og fremføringen er bedre.

* **Flash Player 8**: Støtter nå ActionScript 2.0

* **Flash Player 9 (også kalt 8.5)**: la til ActionScript 3.0.
* **Flash Player 10**: La til omfattende sikkerhetsoppgraderinger, og støtte for 3D.

## Syntax
I ActionScript 2.0 kan det være klasser også et bibliotek object (et filmklipp) kan bli assosiert med en klasse. Klasser er vanligvis skrevet inni flash IDE-filen som en ekstern **Actionscript-fil**; uansett kan de bli programmert også i en vanlig tekst-editor; så lenge filen ender med **.as**-endelse. Klasser er utvidelser til ActionScript-språket, som programmereren kan skrive selv. Det er også mange innebygde klasser i Flash.

Mye av dette gjelder også i ActionScript 3.0, men når det gjelder oppbyggingen av språket og selve syntaxen er det meste forskjellig, og til tross for det navnet tilsier er ActionScript 3.0 ikke en fornying av ActionScript 2.0.

## Eksempler
### ActionScript 2.0/3.0 Eksempel
Den følgende koden skriver Hello world i flash IDE out panel. Noter at dette vil kun fungere inni en flash IDE, som en function bare fungerer inni funksjonen.

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

### ActionScript 2.0 Eksempel
Den følgende koden vil skrive Hello world til scenen. 

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


Den følgende koden skriver ut musen sin posisjon når musen beveges, ved å bruke onMouseMove (når musen beveger seg) eventet. Igjen vil dette bare fungere i Flash IDE

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


Når den følgende koden blir skrevet på en knapp, starter den å spille tidslinjen til filmklippet hvor knappen er plassert. Dette er for hoved tidslinjen siden den også er et filmklipp (engelsk MovieClip).


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


Dette er et mer avansert eksempel på å lage en array som inneholder tall og tekst, og som skriver et nummer til en variabel kalt `num` og en tekst steng til en variabel kalt `str` og bruker en prototype funksjon også deretter bruken  filmklippet API, og et tekstfelt blir kjørt/tegnet på skjermen hvor da variabelverdien blir skrevet.


```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 eksempel:

```actionscript
var aData:Array = [{name: "Tord G. Nordahl", age: "20"}, {name: "Alfa Catrin Gangsøy", age: "21"}];
 dataGrid.dataProvider = aData;
```


### ActionScript 3.0 Eksempel

Dette «Hello World»-eksempelet er skrevet i ActionScript 3.0, og viser teksten "Hello World!" i hvitt med en svart skygge, etterfulgt av TextField-objektets pseudo-tilfeldige x- og y-posisjoner på scenen, som er generert med Math.random-funksjonen.


```actionscript
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.filters.DropShadowFilter;

    public class HelloWorld2 extends Sprite {
       private var shad:DropShadowFilter;
       private var txt:TextField;

       public function HelloWorld2() {
          shad = new DropShadowFilter (2, 45, 0x000000, 25, 3, 3, 2, 2);
          txt = 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! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]";
          addChild(txt);
       }
    }
 }
```

Hvis man kun vil legge ut et tekst felt med teksten "Hello World!" på scenen (slik som Action Script 2.0-eksempelet gjør), kan man skrive:


```actionscript
var mittTekstFelt:TextField = new TextField // Vi lager en ny variabel som heter "mittTekstFelt"
mittTekstFelt.text = "Hello World!"
addChild(mittTekstFelt); // Nå vil mittTekstFelt kunne sees i posisjonen (0,0), siden den ikke er endret gjennom .x og .y variablene
```


## Se også
*Adobe Flash
*Programmering
*Macromedia
*JavaScript
*ECMAScript

## Eksterne lenker
* 
* ActionScript.org Adobe Flash and Flex Resources
* AS Main: List of helpful ActionScript tutorials
* ActionScript 3.0 Language and Components reference