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
*/
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
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:
Darstellung: Hierarchie eines Flashfilms
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
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
_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
//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 FunktionloadMovieNum("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:
Darstellung: Zielpfade zu Movieclipinstanzen
//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
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project