Kontakt aufnehmen

ActionScript - Die flasheigene Scriptsprache

ActionScript ist die auf den ECMA-262-Standard-aufbauende Scriptsprache der Entwicklungsumgebung Macromedia Flash , mit deren Hilfe Flash inhalten Interaktivität verliehen werden kann.

Die beiden Versionen von ActionScript

Im Zuge der Veröffentlichung von Macromedia Flash MX 2004 wurde die bis dato existierende Sprachbasis ActionScript 1.0 um die Version 2.0 erweitert, um den aktuellen Anforderungen, welche bloße ereignisorientierte Interaktionsmöglichkeiten schon längst übertrafen, besser gerecht werden zu können. Hiermit sind vor allem die Vorzüge einer objektorientierten Programmiersprache wie Datenkapselung oder Vererbung, welche ActionScript nun als eine solche aufweist, gemeint.
ActionScript 2.0 sollte nicht als ein völlig neue ActionScript-Sprache aufgefasst werden, wenn auch die Syntax aufgrund der Anlehnung an einem Entwurf für ECMAScript 4 ein wenig von derjenigen in ActionScript 1.0 abweicht, sondern wie bereits erwähnt als eine Erweiterung der Sprachbasis von Version 1.0 u.a. um die Sprachelemente class, interface, extends, static, public, private, usw., wie sie auch aus Java und Co. bereits bekannt sind. Aufgrund der daraus resultierenden Sprachmächtigkeit ist ActionScript mit der Version 2.0 nun um einiges flexibler und moderner geworden. Auf der anderen Seite gehört ActionScript 1.0 damit längst noch nicht zum alten Eisen, sondern wird noch immer den elementaren und am häufigsten anzutreffenden Anforderungen an Animationen im Hauptfeld Webpräsenzen gerecht.

Syntax

Obwohl sich ActionScript 2.0 aufgrund seiner Ähnlichkeit zu Java von der Syntax der Version 1.0 ein wenig unterscheidet, haben beide auffällige Gemeinsamkeiten, welche im Folgenden herausgestellt werden sollen.

Anweisungen

Anweisungen welcher Art auch immer werden in ActionScript generell durch Notation eines Strichpunkts oder Semikolons (;) am Ende der Anweisungen angegeben. Einige Beispiele:

//Einfache Wertzuweisung
myNumber = 12;

//Änderung der Position (x-Koordinate eines Movieclips myMC)
_root.myMC._x = 150;

Anweisungsblöcke

Anweisungsblöcke fassen im Allgemeinen mehrere Anweisungen zu einer Einheit zusammen, um sie beispielsweise als Rumpf einem Schleifenkopf zuzuordnen und eine Kontrollstruktur im Script zu schaffen. Die Anweisungen dieses Blocks werden in ActionScript innerhalb geschweifter Klammern notiert:

myCounter = 0;        
//Initialisierung der Variable myCounter mit Wert 0

for (myNumber = 1; myNumber <= 10; myNumber++) 
{
 //Anweisungsblock mit einer Anweisung (Schleifenrumpf)
 myCounter = myCounter + 1;
}

Kommentare

Kommentare dienen in der Regel der Erläuterung von Scriptpassagen, deren Funktionsweise nicht von vorn herein klar ist oder im Allgemeinen eine Erklärung erfordern. Des Weiteren können sie beispielsweise als optische Trennstrukturen die Übersichtlichkeit eines Script erhöhen.
Einzeilige Kommentare werden in ActionScript durch zweifache Notation eines Schrägstriches (//) vor dem Kommentartext, mehrzeilige Kommentare durch ein einleitende Zeichenkette /* und eine abschließende Zeichenkette */ notiert:

//Dies ist ein einzeiliger Kommentar

/*
Dies ist ein
mehrzeiliger Kommentar
*/

Kommentartexte werden beim Abspielen des Films vom Flash Player nicht interpretiert.

Weitere Syntaxhinweise

Anders als andere Programmiersprachen unterscheidet ActionScript im Großen und Ganzen nicht zwischen Groß- und Kleinschreibung, wie folgendes Scriptbeispiel zeigt:

myVar = 1;
myvar = 2;

trace(myVar);        //Ausgabe des Werts "2" im Ausgabefenster

Selbstvergebende Bezeichner für Variablen, Funktionen, Klassen, usw. dürfen des Weiteren nicht den reservierten Schlüsselwörtern der Sprachbasis von Actionscript (z.B.: this oder switch) entsprechen, wobei ActionScript hier ausnahmsweise zwischen Groß- und Kleinschreibung unterscheidet.
Darüber hinaus dürfen Bezeichner nur mit einem Buchstaben (a-z oder A-Z), einem Dollarzeichen ($) oder einem Unterstrich (_) beginnen und keine Leerzeichen enthalten. Für die übrigen Zeichen eines Bezeichners gibt es keine Einschränkungen seitens der Scriptsprache, so dass beispielsweise auch deutsche Umlaute und das Esszett (ß) zulässig sind.
Um einen sauberen Programmierstil zu entwickeln, sollten eine Namenskonvention bei der Bezeichnervergabe strikt eingehalten, wobei diese auch selbst entwickelt werden kann. Dennoch haben sich folgende Notationsregeln eingebürgert:

1. Funktions- und Variablennamen sollten mit einem Kleinbuchstaben beginnen, wobei neue Wörter darin wiederum mit Großbuchstaben eingeleitet werden sollten (z.B.: myVar)

2. Namen von Klassen, Konstruktoren sowie Objekten sollten mit einem Großbuchstaben beginnen (z.B.: new Book())

Abschließend sei noch erwähnt, dass für einige Objekte die automatische Scriptvervollständigung von ActionScript erzwungen werden kann, vorausgesetzt, man benennt deren Bezeichner mit einer festgelegten Endung. Einige Bezeichnerbeispiele:

myTextField_txt        
//Bezeichner erzwingt Scriptvervollständigung für Textfelder

myArray_array                
//Bezeichner erzwingt Scriptvervollständigung für Arrays

myMovieClip_mc        
//Bezeichner erzwingt Scriptvervollständigung für Movieclips

Hierarchie eines Flashfilms

Aufgrund der bereits erwähnten Tatsache, dass eine Movieclipinstanz selbst wieder eine oder mehrere solcher enthalten kann, lässt sich die Organisationsstruktur bzw. Hierarchie eines Flash films als eine Baumstruktur verstehen:

Hierarchie eines Flashfilms
Darstellung: Hierarchie eines Flashfilms

Bei diesem Beispiel wird zunächst davon ausgegangen, dass in diesem Film keine weitere Flash filme geladen wurden, was die Struktur dieses (Ober-)Filmes nochmals erweitern würde.
Der Startknoten des Baumes ist die jeweilige Stufe eines Films, was aufgrund der obigen Einschränkung _level0 ist. In ActionScript gibt es darüber hinaus den Alias _root, welcher stets auf die Zeitleiste des untersten Movieclips, d.h. den Startknoten, verweist. Enthält ein Movieclip selbst wieder ein anderen, so ist dieser dem Movieclip untergeordnet. Es besteht als eine Kante zur nächst höheren Strukturebene (z.B.: Kante von MC_a zu MC_ab).

Der Punktzugriffsoperator

Der Punktzugriffsoperator (.) dient in ActionScript nicht nur dazu, die Funktionen eines Objekts aufzurufen oder eine seiner Objektvariablen anzusprechen, sondern wird darüber hinaus auch dazu verwendet, um eine Movieclipinstanz in der Filmhierarchie zu adressieren. Mithilfe dieses Operators lassen sich also so genannte Zielpfade, d.h. die Wege aus Kanten im Baumdiagramm, konstruieren. Diese Zielpfade kann man sowohl absolut, als auch relativ formulieren.

Absolute und relative Zielpfade

Absolute Zielpfade beschreiben stets den Pfad zu einem Movieclip ausgehend vom Startknoten, d.h. das Level des Films, in dem er geladen wurde. Bezogen auf das obige Diagramm wäre beispielsweise folgende Adressierungen mit absolutem Pfad denkbar:

//ADRESSIERUNG VON MC_b
_level0.MC_b

//ADRESSIERUNG VON MC_aba
_level0.MC_a.MC_ab.MC_aba

//Verwendung des Aliases _root
_root.MC_a.MC_ab.MC_aba

Mithilfe von relativen Pfaden kann man ausgehend von einem Knoten des Baums, d.h. einem Movieclip, dessen untergeordnete Knoten ansprechen, ohne dass man zur Konstruktion des Zielpfades den Startknoten einbeziehen muss. Mithilfe des Schlüsselwortes this kann man den Knoten, d.h. die Zeitleiste des Movieclips, in dem sich die ActionScript-Anweisung befindet, und ausgehend davon die untergeordneten Movieclips in gewohnter Form ansprechen. In Bezug auf das Diagramm sind beispielsweise folgende relative Pfade korrekt:

//Adressierung von MC_aba ausgehend von MC_a
this.MC_ab.MC_aba

// Adressierung von MC_ba ausgehend von MC_b
this.MC_ba

Darüber hinaus existiert in ActionScript noch der Alias _parent, mit dessen Hilfe sich relative Pfade ausgehend vom hierarchisch übergeordneten oder Elternknoten des aktuellen Knotens konstruieren lassen. Dieser Alias spricht also immer den Knoten in der nächst tieferen Strukturebene, zu dem eine Kante besteht, an. Ein Beispiel für obiges Diagramm:

//Adressierung von MC_ab ausgehend von MC_aa
this._parent.MC_ab

Dieser Alias lässt sich natürlich noch weiter schachteln, so dass beispielsweise auch folgender relativer Zielpfad korrekt wäre:

//Adressierung von MC_ba ausgehend von MC_aba
this._parent._parent._parent.MC_b.MC_ba

Zielpfade zu Movieclipinstanzen eines dynamisch geladenen Films

Um die Dateigröße eines Flash films möglichst gering zu halten, empfiehl es sich, einzelne Projektelemente in separaten Filmen auszulagern und die Fragmente nur bei Bedarf dynamisch zu laden. Mithilfe der Funktion loadMovieNum("url", Stufe [,Variablen]) kann man in ActionScript andere Flash filme dynamisch laden, wobei diesen jeweils eine Stufe zugeteilt werden muss. Dabei wird der erste Film, welcher im Flash Player geladen wird, also im Prinzip der "Hauptfilm" automatisch in Stufe 0 (_level0) geladen. Ein Film einer höheren Stufe überdeckt, ähnlich wie beim Ebenenkonzept eines Frames, dabei stets die Filme auf den darunter liegenden Stufen, wobei in freien Bereichen des darüber liegenden Films die entsprechenden Bereiche der darunter liegenden sichtbar sind (die Metapher des transparenten Folien ist also wieder anwendbar). Um Beispielsweise einen Film namens "Film2.swf" in die Stufe 1 (_level1) zu laden, wäre folgende Anweisung im Hauptfilm zu notieren:

loadMovieNum("Film2.swf", 1);

Würde man hier Stufe 0 angeben, würde der Hauptfilm im Prinzip überschrieben, d.h. durch "Film2.swf" ersetzt werden.

Die geladenen Filme besitzen natürlich eine eigene Zeitleiste und können selbst wieder andere Movieclips enthalten.
Um diese wiederum adressieren zu können, muss man vor dem absoluten Pfad zum gewünschten Movieclip noch die Stufe des Films notieren. Unterstellt man für "Film2.swf" wieder die Struktur aus obigem Diagramm und die Tatsache, dass der nach obigen Prinzip auf Stufe 1 des Hauptfilms geladen wurde, ergibt sich für diesen beispielsweise folgendes Baumdiagramm:

Zielpfade zu Movieclipinstanzen
Darstellung: Zielpfade zu Movieclipinstanzen

Auf Stufe 1 fügt sich also das obige Baumdiagramm in das des Hauptfilms ein. Die Adressierung der Movieclips aus "Film2.swf" ausgehend vom Hauptfilm ist dadurch eindeutig:

//ADRESSIERUNG VON MC_aba (Film2.swf) 
//ausgehend vom Hauptfilm (_level0 bzw. _root)
_level1.MC_a.MC_ab.MC_aba

//ADRESSIERUNG VON MC_b (Film2.swf) 
//ausgehend vom Hauptfilm (_level0 bzw. _root)
_level1.MC_b

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern