Macromedia Flash ActionScript 2.0 és ActionScript 3.0

Utasítások, vezérlési szerkezetek

Mivel maga a nyelv a JavaScript irányvonalat követi, így azzal teljesen megegyező vezérlési szerkezetek találhatók meg a nyelvben.

1. Értékadás, üres utasítás

Az értékadás (=) az egyben kifejezés is. A kiértékelés jobbról balra halad. szia = világ = helloworld; jelentése szia = (világ = helloworld); Többszörös értékadásra nincs lehetőség. Egy értékadás bal oldalán csak változó, tömbelem, vagy egy objektum egy tulajdonsága lehet, míg a bal oldalon tetszőleges típusérték. Bár a Flash 5., vagy a későbbi verziókban az „=” egy értékadás operátor, és az == való az egyenlőség-vizsgálatra, a Flash 4.-ben az „=”-et numerikus egyenlőség-vizsgálatra lehetett használni. Így például egy Flash 4 fileban : Ezenkívül még számos értékadó operátor van: +=, -=, *=, /=, ... x = y; egyenlőség-vizsgálatnak a Flash 5.-ben a következő felel meg:

Number(x) == Number(y)

2. Blokk, With

Blokkokat a { } jelpárossal adhatunk meg. A változó láthatóságában nem játszik szerepet. (Változó láthatósága csak függvényhíváskor változhat.) Így csak azokon a helyeken van szerepe, ahol csak egy utasítást tartalmazhat az adott rész. (ciklusmag, feltétel ág, ...)
With:
Használat: with(object:Object ) {utasítás(sorozat)ok}. Az object lehet bármilyen ActionScript objektum, illetve filmklip. A with utasítás nagyon jól használható, mikor egy objektum tagváltozóira, –függvényeire akarunk hivatkozni. Ha egy with-en belül akarjuk beállítani egy változó értékét, akkor annak már deklarálva kell lennie a blokkon kívül(vagy megadjuk a teljes elérési útvonalat). Megjegyzés: Flash 5-nél régebbi verziókban a tellTarget utasítást lehet használni hasonló célokra. Későbbi verziókban ez már "depricated" Ahhoz hogy a zárójelek közti utasításokban szereplő azonosítóknak megtalálja a fordító az értékét, egy scope-láncon keresztül halad végig, amely a következő felsorolás sorrendhelyes, specifikus bejárása :

with(valami) { a = 1; b = 2; gotoAndStop(3); }
//ami a következővel egyenértékű
valami.a = 1; valami.b = 2; valami.gotoAndStop(3);

3. Elágazás

Kétirányú elágazásra az if utasítás használható.
if (kifejezés) { } [else {}]
Nincs elseif, elif, ill. elsif, így az if-then-else problémát úgy oldották meg, hogy az else az utolsó ifhez tartozik. Többirányú elágazást a switch utasítással lehet elérni. Szelektor típusa tetszőleges. A feltételeknek nem kell diszjunktnak lenni, a default ág megadása nem kötelező, és ha meg is adjuk, nem kötelező utolsóként. Rácsorog a vezérlés a következő ágra, így a break utasítást kell használni, amikor ki szeretnénk lépni. Mind az ifben mind a switchben lévő feltételnek logikai értéket kell visszaadni. A switch tetszőleges típusra működik, szigorú típusos egyenlőség esetén lép bele egy ágba.

Feltételes utasítások:

if (feltétel)
        {utasításblokk}
[else
        {utasításblokk}]


switch (kifejezés) { case érték : {utasításblokk} [break;] ... [default : {utasításblokk}] }

4. Ciklus

Négyféle ciklus készítésére van lehetőségünk. Az első három a C++-ból jól ismert: while, for, do while ciklus. Mindhárom ciklusnál akkor lépünk ismét a ciklusmagba, hogyha a ciklusfeltétel igaz. A negyedik ciklus a for (változó in objektum), ahol az adott objektum minden mezőjének nevén egyszer végigmegy a kijelölt ciklusváltozó és végrehajtódik a ciklusmag. Ugrás: Goto a megszokott formában nincs, ám a moziklip időegyenesén lehet lépkedni a GotoAndPlay, GotoAndStop, NextFrame és PrevFrame utasítással. Ekkor a még aktuális frame-ben lévő kód lefut, és csak utána ugrik tovább. (Lásd az ide tartozó példát!)

Ciklusok

for ([inicializálás]; [ciklusfeltétel]; [ciklusléptetés])
    {ciklusmag}

while(ciklusfeltétel)
    {ciklusmag}
do
        {ciklusmag}

while(ciklusfeltétel)

5. Iteratív ciklusok

Két iteratív ciklus található a nyelvben:

Indexek bejárása:

for (index in objektum) {
	trace(objektum[index]);
}

Értékek bejárása:

for each (változó in objektum) {
	trace(változó);
}

6. Vezérlésátadó utasítások

Lehetőség van a vezérlési szerkezetek koordinált megbontására. Erre alkalmasak a break, és a continue utasítások. A megszokott módon a break egy ciklusból való kiugrást teszi lehetővé, míg a continue egy feltételbe ágyazva a feltétel teljesüléskor az az iterációs lépés kimarad, de a ciklus tovább folyatódik.
Példa brake- re:

for (var i:Number = 0; i < aTitles.length; i++){
	if(aTitles[i] == “ActionScript Bible”) {
		trace(“Title found.”);
		break;
	}
}
Ekkor tehát a ciklus megszakad, ha a feltétel teljesül.
Példa continue-ra:
for (var i:Number = -10; i < 10; i++){
	if (i == 0){
		continue;
	}
	trace(100/i);
}
Ekkor pedig a trace utasítás i=-10-től i=-1-ig, majd i=1-től i=10-ig hajtódik végre.