Sie sind auf Seite 1von 836

ActionScript-Referenzhandbuch

Marken Add Life to the Web, Afterburner, Aftershock, Andromedia, Allaire, Animation PowerPack, Aria, Attain, Authorware, Authorware Star, Backstage, Bright Tiger, Clustercats, ColdFusion, Contribute, Design In Motion, Director, Dream Templates, Dreamweaver, Drumbeat 2000, EDJE, EJIPT, Extreme 3D, Fireworks, Flash, Fontographer, FreeHand, Generator, HomeSite, JFusion, JRun, Kawa, Know Your Site, Knowledge Objects, Knowledge Stream, Knowledge Track, LikeMinds, Lingo, Live Effects, das MacRecorder-Logo und -Design, Macromedia, Macromedia Action!, Macromedia Flash, das Macromedia M-Logo und -Design, Macromedia Spectra, das Macromedia xRes-Logo und -Design, MacroModel, Made with Macromedia, das Made with Macromedia-Logo und -Design, das MAGIC-Logo und -Design, Mediamaker, Movie Critic, Open Sesame!, Roundtrip, Roundtrip HTML, Shockwave, Sitespring, SoundEdit, Titlemaker, UltraDev, Web Design 101, what the web can be und Xtra sind entweder eingetragene Marken oder Marken von Macromedia, Inc., die in den USA oder anderen Lndern eingetragen sein knnen. Andere in dieser Dokumentation erwhnte Produktnamen, Logos, Designs, Titel, Wrter oder Begriffe sind mglicherweise Marken, Dienstleistungsmarken oder Markennamen bzw. in den USA und/oder anderen Lndern eingetragene Marken, Dienstleistungsmarken oder Markennamen von Macromedia, Inc. oder anderen Unternehmen. Technologien von Drittanbietern Dieses Handbuch enthlt Verweise auf Websites anderer Anbieter. Macromedia hat keinerlei Einfluss auf die Gestaltung dieser Websites und bernimmt daher keine Verantwortung fr deren Inhalt. Der Aufruf von Websites anderer Anbieter, die in diesem Handbuch erwhnt werden, geschieht auf eigene Gefahr. Diese Verweise und Links werden lediglich zu Informationszwecken bereitgestellt und bedeuten nicht, dass Macromedia den Inhalt der Website eines anderen Anbieters billigt oder die Verantwortung hierfr bernimmt. Technologie zur Sprachkomprimierung/-dekomprimierung lizenziert von Nellymoser, Inc. (www.nellymoser.com). Technologie zur Videokomprimierung/-dekomprimierung (Sorenson Spark) lizenziert von Sorenson Media, Inc. Opera Browser Copyright 1995 - 2002 Opera Software ASA und dessen Lieferanten. Alle Rechte vorbehalten. Gewhrleistungsausschluss von Apple APPLE COMPUTER, INC. BERNIMMT KEINERLEI AUSDRCKLICHE ODER STILLSCHWEIGENDE GARANTIE IM HINBLICK AUF DIE BEILIEGENDE COMPUTERSOFTWARE, IHRE MARKTFHIGKEIT ODER IHRE EIGNUNG FR EINEN BESTIMMTEN ZWECK. IN EINIGEN LNDERN IST DER AUSSCHLUSS EINER STILLSCHWEIGENDEN GARANTIE NICHT ZULSSIG. DER OBEN GENANNTE AUSSCHLUSS TRIFFT DAHER IN IHREM FALL MGLICHERWEISE NICHT ZU. AUS DIESER GEWHRLEISTUNG ERWACHSEN IHNEN BESTIMMTE RECHTE. JE NACH GERICHTLICHEM ZUSTNDIGKEITSBEREICH VERFGEN SIE MGLICHERWEISE BER WEITERE RECHTE. Copyright 2003 Macromedia, Inc. Alle Rechte vorbehalten. Dieses Handbuch darf ohne vorherige schriftliche Genehmigung von Macromedia, Inc. weder vollstndig noch auszugsweise kopiert, fotokopiert, vervielfltigt, bersetzt oder in eine elektronische bzw. maschinenlesbare Form bertragen werden. Teilenummer ZFL70M400G Danksagung Leitung: Erick Vera Projektmanagement: Stephanie Gowin, Barbara Nelson Text: Jody Bleyle, Mary Burger, Kim Diezel, Stephanie Gowin, Dan Harris, Barbara Herbert, Barbara Nelson, Shirley Ong, Tim Statler Verantwortlicher Herausgeber: Rosana Francescato Lektorat: Linda Adler, Mary Ferguson, Mary Kraemer, Noreen Maher, Antonio Padial, Lisa Stanziano, Anne Szabla Produktionsmanagement: Patrice ONeill Media-Design und -Produktion: Adam Barnett, Christopher Basmajian, Aaron Begley, John Francis, Jeff Harmon Lokalisierung: Tim Hussey, Seungmin Lee, Masayo Noda, Simone Pux, Yuko Yagi, Christian Fedder Erste Auflage: September 2003 Macromedia, Inc. 600 Townsend St. San Francisco, CA 94103, USA

INHALTSVERZEICHNIS

EINFHRUNG: Erste Schritte mit ActionScript

........................... 9

Zielpublikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Systemanforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Dokumentation verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Typographische Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Begriffserluterungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Weitere Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10


KAPITEL 1: Was ist neu in Flash MX 2004 ActionScript

. . . . . . . . . . . . . . . . . . . 15 15 17 17 24 25 25

Neue und genderte Sprachelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Das neue Sicherheitsmodell und alte SWF-Dateien. . . . . . . . . . . . . . . . . . . . . . . . Vorhandene Skripts nach Flash Player 7 portieren . . . . . . . . . . . . . . . . . . . . . . . . . nderungen im ActionScript-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . nderungen beim Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neues objektorientierteres Programmiermodell . . . . . . . . . . . . . . . . . . . . . . . . . . .
KAPITEL 2: ActionScript-Grundlagen

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 29 32 37 41 45 49 55 56 57

Unterschiede zwischen ActionScript und JavaScript . . . . . . . . . . . . . . . . . . . . . . . Unicode-Untersttzung fr ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Elementen Datentypen zuweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Werte in Ausdrcken mit Operatoren manipulieren . . . . . . . . . . . . . . . . . . . . . . . Objektpfade angeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrierte Funktionen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

KAPITEL 3: Skripts schreiben und debuggen .

. . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Ausfhrung von ActionScript steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Bedienfeld Aktionen und Skriptfenster verwenden . . . . . . . . . . . . . . . . . . . . . . . 64 ActionScript-Editor verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Skripts debuggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Bedienfeld Ausgabe verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Flash Player zum Testen aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
KAPITEL 4: Ereignisse verarbeiten . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Ereignisprozedurmethoden verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Ereignis-Listener verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Schaltflchen- und Movieclip-Ereignisprozeduren verwenden . . . . . . . . . . . . . . . . 95 Movieclips mit Schaltflchenzustnden erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Gltigkeitsbereich von Ereignisprozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Gltigkeitsbereich des Schlsselworts this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
KAPITEL 5: Interaktionen mit ActionScript erstellen

. . . . . . . . . . . . . . . . . . . . . . 99

Ereignisse und Interaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 SWF-Wiedergabe steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Interaktivitt und visuelle Effekte erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Analyse eines Beispielskripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
KAPITEL 6: Integrierte Klassen verwenden

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Klassen und Instanzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 bersicht ber integrierte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127


KAPITEL 7: Mit Movieclips arbeiten

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Einfhrung in die Steuerung von Movieclips mit ActionScript . . . . . . . . . . . . . . 133 Mehrere Methoden fr einen Movieclip aufrufen . . . . . . . . . . . . . . . . . . . . . . . . 134 Zustzliche SWF-Dateien laden und entladen . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Hauptzeitleisten fr geladene SWF-Dateien festlegen . . . . . . . . . . . . . . . . . . . . . 136 JPEG-Dateien in Movieclips laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Position und Darstellung von Movieclips ndern. . . . . . . . . . . . . . . . . . . . . . . . . 137 Movieclips mit der Maus verschieben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Movieclips zur Laufzeit erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Parameter zu dynamisch erstellten Movieclips hinzufgen . . . . . . . . . . . . . . . . . . 141 Moviecliptiefen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Formen mit ActionScript zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Movieclips als Masken verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Movieclip-Ereignisse verarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Movieclip-Symbolen eine Klasse zuweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Klasseneigenschaften initialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Inhaltsverzeichnis

KAPITEL 8: Mit Text arbeiten

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 150 151 152 154 163 170

Die TextField-Klasse verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Textfelder zur Laufzeit erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mit der TextFormat-Klasse arbeiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Text mit Cascading Style Sheets formatieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . HTML-formatierten Text verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scrollenden Text erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
KAPITEL 9: Klassen mit ActionScript 2.0 erstellen

. . . . . . . . . . . . . . . . . . . . . . 173 174 175 180 184 187 189 191 192 193 194 195

Prinzipien der objektorientierten Programmierung . . . . . . . . . . . . . . . . . . . . . . . Klassen verwenden: ein einfaches Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Klassen erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instanz- und Klassenmitglieder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schnittstellen erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mit Classpath arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pakete verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Klassen importieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implizite get-/set-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamische Klassen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . So knnen Klassen kompiliert und exportiert werden:. . . . . . . . . . . . . . . . . . . . .
KAPITEL 10: Mit externen Daten arbeiten

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Variablen an/aus Remote-Quellen senden und laden . . . . . . . . . . . . . . . . . . . . . . 199 Meldungen an den und vom Flash Player bertragen . . . . . . . . . . . . . . . . . . . . . 208 Flash Player-Sicherheitsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
KAPITEL 11: Mit externen Medien arbeiten .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 217 218 219 220 221 222

Externe Medien laden - berblick. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Externe SWF- und JPEG-Dateien laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Externe MP3-Dateien laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ID3-Tags in MP3-Dateien lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Externe FLV-Dateien dynamisch wiedergeben. . . . . . . . . . . . . . . . . . . . . . . . . . . Externe Medien laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
KAPITEL 12: ActionScript-Lexikon .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 229 230 231 289 295 296 312 316 334 354 358 364

Beispieleintrag fr die meisten ActionScript-Elemente. . . . . . . . . . . . . . . . . . . . . Beispieleintrag fr Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inhalt des Lexikons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessibility-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arguments-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Array-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boolean-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Button-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Camera-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Color-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ContextMenu-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ContextMenuItem-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Inhaltsverzeichnis

CustomActions-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Date-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Error class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Function-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Key-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 LoadVars-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 LocalConnection-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Math-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 Microphone-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Mouse-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 MovieClip-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 MovieClipLoader-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 NetConnection-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 NetStream-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Number-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 OObject-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 PrintJob-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Selection-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 SharedObject-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 Sound-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Stage-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 String-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 System-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 System.capabilities-Objekt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 System.security object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 TextField-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 TextField.StyleSheet-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 TextFormat class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 TextSnapshot-Objekt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 Video-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 XML-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769 XMLNode-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 XMLSocket-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
ANHANG A: Fehlermeldungen

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799 . . . . . . . . . . . . . . . . . . 805

ANHANG B: Vorrang und Assoziativitt von Operatoren ANHANG C: Tastaturtasten und Tastencodewerte .

. . . . . . . . . . . . . . . . . . . . . . 807

Buchstaben A bis Z und Ziffern 0 bis 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 Tasten auf dem numerischen Ziffernblock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808 Funktionstasten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Andere Tasten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810

Inhaltsverzeichnis

ANHANG D: Skripts fr frhere Versionen von Flash Player . . . . . .

. . . . . . . . . . 813

Was Sie bei der Erstellung von Skripts fr frhere Flash Player-Versionen beachten mssen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Flash Player 4-Inhalte mit Flash MX 2004 erstellen. . . . . . . . . . . . . . . . . . . . . . . 814
ANHANG E: Objektorientiertes Programmieren mit ActionScript 1 .

. . . . . . . . . . 817

Info zu ActionScript 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817


INDEX

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827

Inhaltsverzeichnis

Inhaltsverzeichnis

EINFHRUNG Erste Schritte mit ActionScript

Macromedia Flash MX 2004 und Flash MX Professional 2004 sind professionelle StandardAuthoring-Tools fr die Erstellung eindrucksvoller Websites. In Flash entwickeln Sie Anwendungen mit der Sprache ActionScript. Sie mssen nicht mit ActionScript arbeiten, um Flash zu verwenden. Wenn Sie jedoch Benutzerinteraktivitt bereitstellen, mit anderen als den in Flash integrierten Objekten (wie z. B. Schaltflchen und Movieclips) arbeiten oder die Stabilitt von SWF-Dateien erhhen mchten, kann es sinnvoll sein, ActionScript zu verwenden.

Zielpublikum
Es wird davon ausgegangen, dass Sie Flash MX 2004 oder Flash MX Professional 2004 bereits installiert haben und mit diesen Anwendungen umgehen knnen. Sie sollten wissen, wie Objekte auf der Bhne abgelegt werden und wie sie in der Flash-Authoring-Umgebung bearbeitet werden knnen. Wenn Sie bereits Programme geschrieben haben, wird Ihnen ActionScript gleich bekannt vorkommen. Doch auch wenn Sie nie programmiert haben, knnen Sie ActionScript leicht erlernen. Sie knnen mit ganz einfachen Befehlen anfangen und spter kompliziertere Befehle hinzufgen.

Systemanforderungen
Fr das Arbeiten mit ActionScript mssen auer den Anforderungen fr Flash MX 2004 oder Flash MX Professional 2004 keine weiteren Anforderungen erfllt werden. In der Dokumentation wird jedoch davon ausgegangen, dass Sie fr Ihre Flash-Dateien die standardmigen Verffentlichungseinstellungen verwenden: Flash Player 7 und ActionScript 2.0. Wenn Sie eine dieser Einstellungen ndern, funktionieren die Erklrungen und Codebeispiele in der Dokumentation mglicherweise nicht mehr richtig.

Dokumentation verwenden
In diesem Dokument finden Sie einen berblick ber die ActionScript-Syntax, Informationen zur Verwendung von ActionScript beim Arbeiten mit verschiedenen Objekttypen sowie ausfhrliche Informationen zur Syntax und Verwendung der einzelnen Sprachelemente. Am besten machen Sie sich zunchst mit der Terminologie und den grundlegenden Konzepten vertraut, die im Dokument verwendet werden (weitere Informationen hierzu finden Sie in Kapitel 2, ActionScript-Grundlagen, auf Seite 27). Lernen Sie als Nchstes, wie Sie FlashSkripts schreiben und debuggen knnen (weitere Informationen hierzu finden Sie in Kapitel 3, Skripts schreiben und debuggen, auf Seite 61).

Bevor Sie eigene Skripts schreiben, sollten Sie die Lektionen Skripts mit ActionScript schreiben und die Lektion ber das Erstellen von Formularen mit logischen Bedingungen und Senden von Daten durcharbeiten, die einen praktischen Schnelleinstieg in ActionScript bieten. So finden Sie diese Lektionen: Whlen Sie Hilfe > Anleitungen > Kurzanleitung. Wenn Sie die Grundlagen verstanden haben, knnen Sie auch die Informationen im Rest dieses Dokuments verwenden. In Kapitel 4, Ereignisse verarbeiten, auf Seite 91 erfahren Sie beispielsweise, wie ein Skript geschrieben wird, das bei einem Mausklick eine bestimmte Aktion ausfhrt. Wenn Sie nach Informationen zu einem bestimmten Befehl suchen, knnen Sie den entsprechenden Eintrag in Kapitel 12, ActionScript-Lexikon, auf Seite 229 nachschlagen; dort sind die Sprachelemente in alphabetischer Reihenfolge aufgelistet.

Typographische Konventionen
Folgende typographische Konventionen werden in diesem Handbuch verwendet:

Codeschriftart: zeigt

Codeschriftart kursiv:

den ActionScript-Code an. zeigt ein Element an, z. B. einen ActionScript-Parameter oder einen Objektnamen, den Sie mit Ihrem eigenen Text ersetzen, wenn Sie ein Skript schreiben.

Begriffserluterungen
Folgende Begriffe werden in diesem Handbuch verwendet:

Sie bezieht sich auf den Entwickler, der ein Skript oder eine Anwendung schreibt. Der Benutzer ist die Person, die Ihre Skripts und Anwendungen ausfhrt. Die Kompilierzeit ist die Zeit, zu der Sie Ihr Dokument verffentlichen, exportieren, testen
oder debuggen. Die Laufzeit ist die Zeit, zu der Ihr Skript im Flash Player ausgefhrt wird.

ActionScript-Begriffe wie Methode und Objekt werden in Kapitel 2, ActionScript-Grundlagen, auf Seite 27 erlutert.

Weitere Ressourcen
Dokumentationen zu Flash und hnlichen Produkten sind separat erhltlich.

Weitere Informationen zum Arbeiten in der Flash-Authoring-Umgebung finden Sie in der


Hilfe Flash verwenden. Weitere Informationen zum Arbeiten mit Komponenten finden Sie in der Hilfe Komponenten verwenden. Weitere Informationen zum Erstellen von Kommunikationsanwendungen mit dem Flash Communication Server finden Sie unter Kommunikationsanwendungen entwickeln sowie unter Flash Communication Server verwalten. Weitere Informationen zur Nutzung von Webdiensten mit Flash-Anwendungen finden Sie unter Flash Remoting verwenden.

10

Einfhrung: Erste Schritte mit ActionScript

Die Macromedia DevNet Website (www.macromedia.com/go/developer_de) wird regelmig aktualisiert, um Ihnen die neuesten Informationen zu Flash bereitzustellen. Auerdem finden Sie hier Ratschlge von erfahrenen Benutzern sowie weiterfhrende Themen, Beispiele, Tipps und Updates. Wir empfehlen Ihnen, fter einmal auf dieser Website vorbeizuschauen und sich ber neue Entwicklungen und Mglichkeiten zum effizienten Einsatz von Flash zu informieren. Im Macromedia Flash Support Center (www.macromedia.com/go/flash_support_de) finden Sie TechNotes, aktualisierte Dokumentationen und Links zu weiteren Ressourcen in der Flash Community.

Weitere Ressourcen

11

12

Einfhrung: Erste Schritte mit ActionScript

TEIL I Willkommen bei ActionScript

TEIL I

In diesem Hauptabschnitt finden Sie grundlegende Informationen ber die ActionScriptSprache. Kapitel 1 enthlt Informationen ber nderungen und Neuerungen in ActionScript und Flash Player 7. Lesen Sie diese Informationen sorgfltig durch, wenn Sie bereits mit ActionScript gearbeitet haben. Wenn Sie bisher noch nicht mit ActionScript gearbeitet haben, beginnen Sie mit Kapitel 2 und 3, die grundlegende Informationen ber die ActionScript-Terminologie und -Syntax sowie ber das Schreiben und Debuggen von Skripts enthalten. Kapitel 1: Was ist neu in Flash MX 2004 ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Kapitel 2: ActionScript-Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Kapitel 3: Skripts schreiben und debuggen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

KAPITEL 1 Was ist neu in Flash MX 2004 ActionScript

Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 bieten zahlreiche Verbesserungen, mit denen Sie robustere Skripts in der ActionScript-Sprache erstellen knnen. Diese neuen Funktionen werden in diesem Kapitel beschrieben und beinhalten neue Sprachelemente, verbesserte Bearbeitungs- und Debugging-Werkzeuge (siehe nderungen im ActionScript-Editor auf Seite 24 und nderungen beim Debugging auf Seite 25) sowie ein neu eingefhrtes objektorientierteres Programmiermodell (siehe Neues objektorientierteres Programmiermodell auf Seite 25). Dieses Kapitel enthlt auerdem einen ausfhrlichen Abschnitt, den Sie sorgfltig lesen sollten, wenn Sie bereits vorhandene Flash MX- oder ltere Dateien in Flash Player 7 verffentlichen mchten (siehe Vorhandene Skripts nach Flash Player 7 portieren auf Seite 17).

Neue und genderte Sprachelemente


In diesem Abschnitt werden die neuen oder genderten Elemente der ActionScript-Sprache in Flash MX 2004 beschrieben. Damit Sie diese neuen oder genderten Elemente in Ihren Skripts verwenden knnen, mssen Sie beim Verffentlichen Ihrer Dokumente Flash Player 7 (die Voreinstellung) als Verffentlichungsziel festlegen.

Mit den Methoden Array.sort() und Array.sortOn() knnen Sie Parameter zur Angabe
von zustzlichen Sortieroptionen hinzufgen, wie z. B. auf- und absteigende Sortierung, die Beachtung von Gro- und Kleinschreibung beim Sortieren usw. Die Eigenschaften Button.menu, MovieClip.menu und TextField.menu arbeiten mit den neuen ContextMenu- und ContextMenuItem-Klassen, damit Sie Kontextmenelemente wie Button-, MovieClip- oder TextField-Objekte verknpfen knnen. Mit der ContextMenu-Klasse und der ContextMenuItem-Klasse knnen Sie das Kontextmen anpassen, das angezeigt wird, wenn der Benutzer im Flash Player die rechte Maustaste (Windows) bzw. bei gedrckter Taste <Ctrl> die Maustaste drckt (Macintosh). Mit der Error class und den Befehlen throw und try..catch..finally knnen Sie eine robustere Ausnahmebehandlung implementieren. Mit den Methoden LoadVars.addRequestHeader() und XML.addRequestHeader() knnen Sie HTTP-Anforderungsheader (wie z. B. Content-Type oder SOAPAction) hinzufgen oder ndern, die mit POST-Aktionen gesendet werden. Mit der MMExecute()-Funktion knnen Sie Flash JavaScript API-Befehle mit ActionScript ausgeben.

15

(nur Windows) Der Ereignis-Listener Mouse.onMouseWheel wird generiert, wenn der


Benutzer mit dem Mausrad scrollt.

Mit der Methode MovieClip.getNextHighestDepth() knnen Sie MovieClip-Instanzen zur


Laufzeit erstellen und dadurch gewhrleisten, dass die Objekte dieser Instanzen in einem ZKoordinatenfeld eines bergeordneten Movieclips vor den anderen Objekten wiedergegeben werden. Mit der Methode MovieClip.getInstanceAtDepth() erhalten Sie Zugriff auf dynamisch erstellte MovieClip-Instanzen, indem Sie die Tiefe als Suchindex verwenden. Mit der Methode MovieClip.getSWFVersion() knnen Sie festlegen, welche Flash PlayerVersion von einer geladenen SWF-Datei untersttzt wird. Mit der Methode MovieClip.getTextSnapshot() und dem TextSnapshot-Objekt knnen Sie mit Text arbeiten, der sich in einem Movieclip in statischen Textfeldern befindet. Mit der Eigenschaft MovieClip._lockroot knnen Sie festlegen, dass ein Movieclip als _root fr alle darin geladenen Movieclips dient oder dass sich die Bedeutung von _root in einem Movieclip nicht ndert, wenn dieser Movieclip in einen anderen Movieclip geladen wird. Mit der MovieClipLoader-Klasse knnen Sie den Status von Dateien beim Laden in Movieclips berwachen. Mit der NetConnection-Klasse und der NetStream-Klasse knnen Sie lokale Videodateien (FLV-Dateien) streamen. Durch die PrintJob-Klasse knnen Sie (und der Benutzer) das Drucken vom Flash Player aus besser steuern. Die Ereignisprozedur Sound.onID3() ermglicht den Zugriff auf ID3-Daten, die mit einem Sound-Objekt verknpft sind, das eine MP3-Datei enthlt. Die Eigenschaft Sound.ID3 ermglicht den Zugriff auf die Metadatei, die Teil einer MP3Datei ist. Die System-Klasse hat neue Objekte und Methoden, und das System.capabilities-Objekt verfgt ber mehrere neue Eigenschaften. Mit der Eigenschaft TextField.condenseWhite knnen Sie berflssige Leerzeichen aus HTML-Textfeldern entfernen, die in einem Browser wiedergegeben werden. Mit der Eigenschaft TextField.mouseWheelEnabled knnen Sie festlegen, ob der Inhalt eines Textfelds scrollen soll, wenn sich der Mauszeiger ber einem Textfeld befindet und der Benutzer das Mausrad rollt. Mit der TextField.StyleSheet-Klasse knnen Sie ein Stylesheet-Objekt erstellen, das Textformatierungsregeln wie z. B. Schriftgre, Schriftfarbe und andere Formatierungskonventionen enthlt. Mit der Eigenschaft TextField.styleSheet knnen Sie einem Textfeld ein Stylesheet-Objekt zuweisen. Die Methode TextFormat.getTextExtent() akzeptiert einen neuen Parameter, und das zurckgegebene Objekt enthlt ein neues Element. Mit der Methode XML.addRequestHeader() knnen Sie HTTP-Anforderungsheader (wie z. B. Content-Type oder SOAPAction) hinzufgen oder ndern, die mit POST-Aktionen gesendet werden.

16

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

Das neue Sicherheitsmodell und alte SWF-Dateien


Die Regeln, anhand derer der Flash Player bestimmt, ob zwei Domnen gleich sind, haben sich in Flash Player 7 gendert. Ebenfalls gendert haben sich die Regeln, die festlegen, ob und wie eine von einer HTTP-Domne bereitgestellte SWF-Datei auf eine SWF-Datei zugreifen oder Daten von einer HTTP-Domne laden kann. In den meisten Fllen werden diese nderungen Sie nicht betreffen, es sei denn, Sie portieren bereits vorhandene SWF-Dateien nach Flash Player 7. Wenn Sie jedoch fr Flash Player 6 oder frhere Versionen verffentlichte SWF-Dateien besitzen, die Daten von einer auf einem Server gespeicherten Datei laden, und die aufrufende SWF-Datei in Flash Player 7 wiedergegeben wird, wird der Benutzer in einem neuen Dialogfeld gefragt, ob der Zugriff erlaubt werden soll. Sie knnen verhindern, dass dieses Dialogfeld angezeigt wird, indem Sie auf der Site, auf der die Daten gespeichert sind, eine Richtliniendatei implementieren. Weitere Informationen zu diesem Dialogfeld finden Sie unter Kompatibilitt mit frheren Flash Player-Sicherheitsmodellen auf Seite 214. Mglicherweise mssen Sie eine Richtliniendatei implementieren, wenn Sie Runtime Shared Libraries verwenden. Wenn die ladende oder die geladene SWF-Datei fr Flash Player 7 verffentlicht wird und die ladende sowie die geladene Datei nicht von genau derselben Domne bereitgestellt werden, erlauben Sie den Zugriff mit Hilfe einer Richtliniendatei. Weitere Informationen zu Richtliniendateien finden Sie unter Domnenbergreifendes Laden von Daten ermglichen auf Seite 213.

Vorhandene Skripts nach Flash Player 7 portieren


Wie bei jeder neuen Version untersttzt auch die neue Version Flash Player 7 mehr ActionScriptBefehle als frhere Player-Versionen. Mit diesen Befehlen knnen Sie stabilere Skripts implementieren. (Siehe Neue und genderte Sprachelemente auf Seite 15.)Falls Sie einen dieser Befehle jedoch in Ihren bereits vorhandenen Skripts verwendet haben, funktionieren diese Skripts mglicherweise nicht, wenn Sie sie fr Flash Player 7 verffentlichen. Wenn Sie beispielsweise ein Skript mit der Funktion Error besitzen, kann es sein, dass es scheinbar korrekt kompiliert wird, aber in Flash Player 7 nicht erwartungsgem ausgefhrt wird, weil Error nun eine integrierte Klasse (und damit ein reserviertes Wort) in ActionScript ist. Sie knnen das Skript reparieren, indem Sie der Funktion Error einen anderen Namen geben, z. B. ErrorCondition. Auerdem enthlt Flash Player 7 mehrere nderungen, die beeinflussen, wie eine SWF-Datei auf eine andere zugreifen kann, wie externe Daten geladen werden knnen und wie auf lokale Einstellungen und Daten (z. B. Sicherheitseinstellungen und lokal permanente gemeinsame Objekte) zugegriffen werden kann. Schlielich hat sich noch das Verhalten einiger bereits vorhandener Funktionsmerkmale gendert. Wenn Sie ber Skripts verfgen, die zwar fr den Flash Player 6 oder eine frhere Version geschrieben wurden, die Sie aber fr den Flash Player 7 verffentlichen mchten, mssen Sie mglicherweise die Skripts ndern, damit sie der Implementierung von Flash Player 7 entsprechen und richtig ausgefhrt werden. Diese nderungen werden in diesem Abschnitt besprochen.

Vorhandene Skripts nach Flash Player 7 portieren

17

Konformitt mit ECMA-262 Edition 4 In Flash Player 7 wurden mehrere nderungen implementiert, damit der Flash Player dem Entwurf des Standards ECMA-262 Edition 4 besser entspricht (siehe www.mozilla.org/js/ language/es4/index.html). Neben den klassenbasierten Programmiertechniken, die in ActionScript 2.0 zur Verfgung stehen (siehe Neues objektorientierteres Programmiermodell auf Seite 25), wurden andere Funktionen hinzugefgt und bestimmte Verhalten gendert. Wenn Sie fr Flash Player 7 verffentlichen und ActionScript 2.0 verwenden, knnen Sie einen Objekttyp in einen anderen konvertieren. Weitere Informationen finden Sie unter Objekte umwandeln auf Seite 43. Bei diesen Funktionalitten ist es nicht erforderlich, vorhandene Skripts zu aktualisieren. Mglicherweise mchten Sie sie jedoch nutzen, wenn Sie Ihre Skripts fr Flash Player 7 verffentlichen, und sie dann berarbeiten und verbessern. Im Gegensatz zu den oben erwhnten nderungen knnen die in der folgenden Tabelle aufgefhrten nderungen (von denen einige ebenfalls die ECMA-Konformitt verbessern) dazu fhren, dass bereits vorhandene Skripts anders funktionieren als frher. Wenn Sie diese Funktionen in vorhandenen Skripts verwendet haben, die Sie fr Flash Player 7 verffentlichen mchten, sollten Sie die nderungen berprfen und so sicherstellen, dass der Code immer noch wie gewnscht ausgefhrt wird, oder bestimmen, ob der Code neu geschrieben werden muss. Insbesondere sollten Sie alle Variablen in Skripts, die Sie nach Flash Player 7 portieren, initialisieren, da undefined in bestimmten Fllen anders ausgewertet wird.
Fr Flash Player 7 verffentlichte SWF-Dateien Fr frhere Flash Player-Versionen verffentlichte SWF-Dateien Gro- und Kleinschreibung wird untersttzt (Variablennamen, die sich nur in der Groschreibung unterscheiden, werden als verschiedene Variablen interpretiert). Diese nderung betrifft auch Dateien, die mit #include, sowie externe Variablen, die mit LoadVars.load() geladen wurden. Weitere Informationen finden Sie unter Gro- und Kleinschreibung auf Seite 32. Die Auswertung von undefined in einem numerischen Kontext gibt NaN zurck.
meineAnzahl +=1; trace(meineAnzahl); // NaN

Gro- und Kleinschreibung wird nicht untersttzt (Variablennamen, die sich nur in der Groschreibung unterscheiden, werden als gleiche Variablen interpretiert).

Die Auswertung von undefined in einem numerischen Kontext gibt 0 zurck.


meineAnzahl +=1; trace(meineAnzahl); // 1

Wenn undefined in einen String umgewandelt wird, lautet das Ergebnis undefined.
firstname = "Johanna "; lastname = "Fischer"; trace(firstname + middlename + lastname); // Johanna undefinedFischer

Bei der Umwandlung in einen String ergibt undefined "" (einen leeren String).
firstname = "Johanna "; lastname = "Fischer"; trace(firstname + middlename + lastname); // Johanna Fischer

18

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

Fr Flash Player 7 verffentlichte SWF-Dateien Fr frhere Flash Player-Versionen verffentlichte SWF-Dateien Wenn Sie einen String in einen Booleschen Wert konvertieren, ist das Ergebnis true, sofern der String eine Lnge von mehr als Null hat. Fr einen leeren String ist das Ergebnis false. Wenn Sie einen String in einen Booleschen Wert konvertieren, wird der String zuerst in eine Zahl konvertiert. Wenn diese Zahl ungleich Null ist, ist das Ergebnis true. Wenn die Zahl gleich Null ist, ist das Ergebnis false.

Die Festlegung der Array-Lnge kann nur mit einem Die Festlegung der Array-Lnge kann auch mit einem fehlerhaften Zahlen-String gltigen Zahlen-String erfolgen. Beispiel: 6" erfolgen. funktioniert, 6" oder 6xyz" funktionieren nicht.
mein_array=new Array(); mein_array[" 6"] ="x"; trace(mein_array.length); // 0 mein_array["6xyz"] ="x"; trace(mein_array.length); // 0 mein_array["6"] ="x"; trace(mein_array.length); // 7 mein_array=new Array(); mein_array[" 6"] ="x"; trace(mein_array.length); // 7 mein_array["6xyz"] ="x"; trace(mein_array.length); // 7 mein_array["6"] ="x"; trace(mein_array.length); // 7

Domnennamenregeln fr Einstellungen und lokale Daten In Flash Player 6 werden Regeln fr die bereinstimmung von Superdomnen standardmig verwendet, wenn auf lokale Einstellungen (z. B. Zugriffsberechtigungen fr eine Kamera oder ein Mikrofon) oder lokal permanente Daten (gemeinsame Objekte) zugegriffen wird. Das heit, die Einstellungen und Daten fr SWF-Dateien, die unter hier.xyz.com, dort.xyz.com und xyz.com gehostet werden, werden gemeinsam genutzt und unter xyz.com gespeichert. In Flash Player 7 werden standardmig Regeln fr die exakte bereinstimmung von Domnen verwendet. Das heit, die Einstellungen und Daten, die unter hier.xyz.com gehostet werden, sind unter hier.xyz.com gespeichert, die Einstellungen und Daten, die unter dort.xyz.com gehostet werden, sind unter dort.xyz.com gespeichert usw. Mit der neuen Eigenschaft System.exactSettings knnen Sie festlegen, welche Regeln verwendet werden sollen. Diese Eigenschaft wird fr Dateien untersttzt, die fr Flash Player 6 oder hher verffentlicht wurden. Fr Flash Player 6 verffentlichte Dateien besitzen den Standardwert false, d. h. die Regeln fr die bereinstimmung von Superdomnen werden verwendet. Fr Flash Player 7 verffentlichte Dateien besitzen den Standardwert true, d. h. die Regeln fr die exakte bereinstimmung von Domnen werden verwendet. Wenn Sie Einstellungen oder permanente lokale Daten verwenden und eine Flash Player 6-SWFDatei fr Flash Player 7 verffentlichen mchten , mssen Sie diesen Wert in der portierten Datei mglicherweise auf false setzen. Weitere Informationen finden Sie unter System.exactSettings auf Seite 679.

Vorhandene Skripts nach Flash Player 7 portieren

19

Zugriff zwischen SWF-Dateien unterschiedlicher Domnen und Subdomnen Wenn Sie mehrere SWF-Dateien erstellen, die miteinander kommunizieren - z. B. bei der Verwendung von loadMovie(), MovieClip.loadMovie(), MovieClipLoader.LoadClip() oder Local Connection-Objekten - knnen Sie die Filme in unterschiedlichen Domnen oder in unterschiedlichen Subdomnen einer einzelnen Superdomne bereitstellen. In Dateien, die fr Flash Player 5 oder frher verffentlicht wurden, gab es keine Einschrnkungen fr den Zugriff auf unterschiedliche Domnen oder auf Subdomnen. In Dateien, die fr Flash Player 6 verffentlicht wurden, konnten Sie mit der LocalConnection.allowDomain-Prozedur oder der System.security.allowDomain()Methode den erlaubten Zugriff auf unterschiedliche Domnen festlegen (z. B. damit auf eine Datei unter eineSite.com von einer anderen Datei unter eineAndereSite.com zugegriffen werden kann). Fr den Zugriff auf unterschiedliche Subdomnen wurde kein Befehl bentigt (beispielsweise konnte auf eine Datei unter www.eineSite.com von einer anderen Datei unter speicher.eineSite.com zugegriffen werden). Bei Dateien, die fr Flash Player 7 verffentlicht wurden, gibt es beim Zugriff zwischen SWFDateien zwei Unterschiede gegenber den Vorgngerversionen. Erstens implementiert Flash Player 7 Regeln fr die exakte bereinstimmung von Domnen anstelle von Regeln fr die bereinstimmung von Superdomnen. Deshalb muss die Datei, auf die zugegriffen wird (auch wenn sie fr eine Vorgngerversion von Flash Player 7 verffentlicht wurde) den Zugriff zwischen Domnen oder Subdomnen explizit erlauben. Dieses Thema wird unten behandelt. Zweitens muss eine Datei, die auf einer Site mit einem sicheren Protokoll (HTTPS) bereitgestellt wird, den Zugriff durch eine Datei, die auf einer Site mit einem unsicheren Protokoll (HTTP oder FTP) bereitgestellt wird, explizit erlauben. Dieses Thema wird im nchsten Abschnitt behandelt (siehe HTTP-zu-HTTPS-Protokollzugriff zwischen SWF-Dateien auf Seite 22). Da Flash Player 7 Regeln fr die exakte bereinstimmung von Domnen anstelle von Regeln fr die bereinstimmung von Superdomnen implementiert, mssen Sie bereits vorhandene Skripts mglicherweise ndern, wenn auf sie durch Dateien zugegriffen werden soll, die fr Flash Player 7 verffentlicht wurden. (Sie knnen die genderten Dateien noch immer fr Flash Player 6 verffentlichen.) Wenn Sie LocalConnection.allowDomain()- oder System.security.allowDomain()-Anweisungen in Ihren Dateien verwendet und Superdomnen zugelassen haben, mssen Sie die Parameter so ndern, dass stattdessen exakte Domnen angegeben werden. Der folgende Code enthlt ein Beispiel fr die Arten von nderungen, die mglicherweise durchzufhren sind:
// Flash Player 6-Befehle in einer SWF-Datei unter www.eineAlteSite.com, // um den Zugriff durch SWF-Dateien zu erlauben, die unter www.eineSite.com // oder speicher.eineSite.com bereitgestellt werden System.security.allowDomain("eineSite.com"); meine_lc.allowDomain = function(sendendeDomaene) { return(sendendeDomaene=="eineSite.com"); } // Entsprechende Befehle, um den Zugriff durch SWF-Dateien zu erlauben, // die fr Flash Player 7 verffentlicht wurden System.security.allowDomain("www.eineSite.com", "speicher.eineSite.com"); meine_lc.allowDomain = function(sendendeDomaene) { return(sendendeDomaene=="www.eineSite.com" || sendendeDomaene=="speicher.eineSite.com"); }

20

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

Mglicherweise mssen Sie solche Anweisungen Ihren Dateien auch dann hinzufgen, wenn Sie diese gegenwrtig nicht verwenden. Wenn die SWF-Datei beispielsweise unter www.eineSite.com bereitgestellt wird, und Sie den Zugriff durch eine SWF-Datei erlauben mchten, die fr Flash Player 7 unter speicher.eineSite.com verffentlicht wurde, mssen Sie Anweisungen wie die folgenden zur Datei unter www.eineSite.com hinzufgen (Sie knnen die Datei unter www.eineSite.com dennoch fr Flash Player 6 verffentlichen):
System.security.allowDomain("speicher.eineSite.com"); meine_lc.allowDomain = function(sendendeDomaene) { return(sendendeDomaene=="speicher.eineSite.com"); }

Zusammenfassend bedeutet dies, dass Sie Ihre Dateien mglicherweise anpassen und allowDomain-Anweisungen hinzufgen oder ndern mssen, wenn Sie Dateien fr Flash Player 7 verffentlichen, die folgende Bedingungen erfllen:

Sie haben SWF-bergreifende Skripts (erstellt mit loadMovie(), MovieClip.loadMovie(),


oder Local Connection-Objekten) implementiert. Die aufgerufene SWF-Datei wird nicht auf einer Site mit einem sicheren Protokoll (HTTPS) bereitgestellt, oder sowohl die aufrufende als auch die aufgerufene SWF-Datei werden auf HTTPS-Sites bereitgestellt. (Informationen fr den Fall, dass sich nur die aufgerufene SWFDatei auf einer HTTPS-Site befindet, finden Sie unter HTTP-zu-HTTPS-Protokollzugriff zwischen SWF-Dateien auf Seite 22.) Die SWF-Dateien befinden sich nicht in derselben Domne (eine Datei befindet sich z. B. unter www.domaene.com und die andere unter speicher.domaene.com).
MovieClipLoader.LoadClip()

Sie mssen folgende nderungen vornehmen:

Wenn die aufgerufene SWF-Datei fr Flash Player 7 verffentlicht wird, fgen Sie
System.security.allowDomain oder LocalConnection.allowDomain mit exakter bereinstimmung von Domnennamen in die aufgerufene SWF-Datei ein. Wenn die aufgerufene SWF-Datei fr Flash Player 6 verffentlicht wird, fgen Sie eine System.security.allowDomain- oder LocalConnection.allowDomain-Anweisung mit exakter bereinstimmung von Domnennamen ein bzw. ndern eine solche Anweisung entsprechend, wie in den Codebeispielen weiter oben in diesem Abschnitt dargestellt. Die genderte Datei kann fr Flash Player 6 oder 7 verffentlicht werden. Wenn die aufgerufene SWF-Datei fr Flash Player 5 oder frher verffentlicht wurde, portieren Sie die aufgerufene Datei nach Flash Player 6 oder 7 und fgen eine System.security.allowDomain-Anweisung mit exakter bereinstimmung von Domnennamen hinzu, wie in den Codebeispielen weiter oben in diesem Abschnitt dargestellt. (LocalConnection-Objekte werden in Flash Player 5 oder frher nicht untersttzt.)

Vorhandene Skripts nach Flash Player 7 portieren

21

HTTP-zu-HTTPS-Protokollzugriff zwischen SWF-Dateien Wie im vorherigen Abschnitt erlutert, haben sich die Regeln fr den Zugriff zwischen Domnen und auf Subdomnen in Flash Player 7 gendert. Zustzlich zu den implementierten Regeln fr die exakte bereinstimmung von Domnennamen mssen Sie den Zugriff auf Dateien, die auf Sites mit einem sicheren Protokoll (HTTPS) bereitgestellt werden, durch Dateien, die auf Sites mit einem unsicheren Protokoll bereitgestellt werden, explizit erlauben. Abhngig davon, ob die aufgerufene Datei fr Flash Player 7 oder Flash Player 6 verffentlicht wird, mssen Sie eine der beiden allowDomain-Anweisungen (siehe Zugriff zwischen SWF-Dateien unterschiedlicher Domnen und Subdomnen auf Seite 20) implementieren, oder die neue LocalConnection.allowInsecure Domain- bzw. System.security.allowInsecureDomain()-Anweisung verwenden.
Warnung: Die Implementierung einer allowInsecureDomain()-Anweisung beeintrchtigt die durch das HTTPS-Protokoll gebotene Sicherheit. Sie sollten diese nderungen nur dann durchfhren, wenn Sie die Site nicht so umstrukturieren knnen, dass alle SWF-Dateien ber das HTTPS-Protokoll bereitgestellt werden.

Der folgende Code enthlt ein Beispiel fr die Arten von nderungen, die mglicherweise durchzufhren sind:
// Befehle in einer Flash Player 6-SWF-Datei unter https://www.eineSite.com, // um den Zugriff durch Flash Player 7-SWF-Dateien zu erlauben, die // unter http://www.eineSite.com oder http://www.eineAndereSite.com bereitgestellt werden System.security.allowDomain("eineAndereSite.com"); meine_lc.allowDomain = function(sendendeDomaene) { return(sendendeDomaene=="eineAndereSite.com"); } // Entsprechende Befehle in einer Flash Player 7-SWF-Datei, // um den Zugriff durch Flash Player 7-SWF-Dateien zu erlauben, die // unter http://www.eineSite.com oder http://www.eineAndereSite.com bereitgestellt werden System.security.allowInsecureDomain("www.eineSite.com", "www.eineAndereSite.com"); mein_lc.allowInsecureDomain = function(sendendeDomaene) { return(sendendeDomaene=="www.eineSite.com" || sendendeDomaene=="www.eineAndereSite.com"); }

Mglicherweise mssen Sie solche Anweisungen Ihren Dateien auch dann hinzufgen, wenn Sie diese gegenwrtig nicht verwenden. Eine nderung kann auch dann erforderlich sein, wenn beide Dateien sich in derselben Domne befinden (z. B. ruft eine Datei unter http:// www.domaene.com eine Datei unter https://www.domaene.com auf ). Zusammenfassend bedeutet dies, dass Sie Ihre Dateien mglicherweise anpassen und Anweisungen hinzufgen oder ndern mssen, wenn Sie Dateien fr Flash Player 7 verffentlichen, die folgende Bedingungen erfllen:

Sie haben SWF-bergreifende Skripts (erstellt mit loadMovie(), MovieClip.loadMovie(),


oder Local Connection-Objekten) implementiert. Der Host der aufrufenden Datei verwendet nicht das HTTPS-Protokoll. Die aufgerufene Datei verwendet HTTPS.
MovieClipLoader.LoadClip()

Sie mssen folgende nderungen vornehmen:

22

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

Wenn die aufgerufene Datei fr Flash Player 7 verffentlicht wird, fgen Sie
oder LocalConnection.allowInsecureDomain mit exakter bereinstimmung von Domnennamen in die aufgerufene Datei ein, wie in den Codebeispielen weiter oben in diesem Abschnitt dargestellt. Diese Anweisung ist auch dann erforderlich, wenn sich die aufrufende und die aufgerufene Datei in derselben Domne befinden. Wurde die aufgerufene Datei fr Flash Player 6 oder frher verffentlicht und sowohl die aufrufende als auch die aufgerufene Datei befinden sich in derselben Domne (z. B. ruft eine Datei unter http://www.domaene.com eine Datei unter https://www.domaene.com auf ), ist keine nderung notwendig. Wenn die aufgerufene Datei fr Flash Player 6 verffentlicht wurde, die Dateien sich nicht in derselben Domne befinden und die aufgerufene Datei nicht nach Flash Player 7 portiert werden soll, bearbeiten Sie die aufgerufene Datei, um eine System.security.allowDomainoder LocalConnection.allowDomain-Anweisung mit exakter bereinstimmung von Domnennamen hinzuzufgen oder zu ndern, wie in den Codebeispielen weiter oben in diesem Abschnitt dargestellt. Wenn die aufgerufene Datei fr Flash Player 6 verffentlicht wurde und nach Flash Player 7 portiert werden soll, fgen Sie System.security.allowInsecureDomain oder LocalConnection.allowInsecureDomain mit exakter bereinstimmung von Domnennamen in die aufgerufene Datei ein, wie in den Codebeispielen weiter oben in diesem Abschnitt dargestellt. Diese Anweisung ist auch dann erforderlich, wenn sich beide Dateien in derselben Domne befinden. Wenn die aufgerufene Datei fr Flash Player 5 oder frher verffentlicht wurde und sich die beiden Dateien nicht in derselben Domne befinden, haben Sie zwei Mglichkeiten. Sie knnen entweder die aufgerufene Datei nach Flash Player 6 portieren und eine System.security.allowDomain-Anweisung mit exakter bereinstimmung von Domnennamen hinzufgen bzw. eine solche Anweisung entsprechend ndern, wie in den Codebeispielen oben in diesem Abschnitt dargestellt, oder Sie portieren die aufgerufene Datei nach Flash Player 7 und fgen eine System.security.allowInsecureDomain-Anweisung mit exakter bereinstimmung von Domnennamen ein, wie in den Codebeispielen oben in diesem Abschnitt dargestellt.
System.security.allowInsecureDomain

Serverseitige Richtliniendateien fr das Zulassen von Datenzugriff Flash-Dokumente knnen mit Hilfe eines der folgenden Aufrufe Daten aus externen Quellen laden: XML.load(), XML.sendAndLoad(), LoadVars.load(), LoadVars.sendAndLoad(), loadVariables(), loadVariablesNum(), MovieClip.loadVariables(), XMLSocket.connect() und Macromedia Flash Remoting (NetServices.createGatewayConnection). Darber hinaus knnen SWF-Dateien Runtime Shared Libraries (RSLs) oder in einer anderen SWF-Datei definierte Bestnde zur Laufzeit importieren. Standardmig mssen sich die Daten oder die RSLs in derselben Domne befinden wie die SWF-Datei, die diese externen Daten oder Medien ldt. Um Runtime Shared Library-Daten und -Bestnde fr SWF-Dateien in verschiedenen Domnen zur Verfgung zu stellen, sollten Sie eine domnenbergreifende Richtliniendatei verwenden. Eine domnenbergreifende Richtliniendatei ist eine XML-Datei, mit der der Server angeben kann, dass seine Daten und Dokumente fr SWF-Dateien bestimmter Domnen oder aller Domnen verfgbar sind. Jede SWF-Datei, die von einer in der Richtliniendatei des Servers festgelegten Domne bereitgestellt wird, kann auf Daten oder RSLs dieses Servers zugreifen.

Vorhandene Skripts nach Flash Player 7 portieren

23

Falls Sie externe Daten laden, sollten Sie auch dann Richtliniendateien erstellen, wenn keine Dateien nach Flash Player 7 portiert werden sollen. Falls Sie RSLs verwenden, sollten Sie Richtliniendateien erstellen, wenn die aufrufende oder die aufgerufene Datei fr Flash Player 7 verffentlicht wird. Weitere Informationen finden Sie unter Domnenbergreifendes Laden von Daten ermglichen auf Seite 213.

nderungen im ActionScript-Editor
Der ActionScript-Editor wurde auf verschiedene Weise aktualisiert und ist nun sowohl robuster als auch leichter anzuwenden. In diesem Abschnitt werden diese nderungen zusammengefasst. Zum Aktivieren bzw. Deaktivieren des Zeilenumbruchs knnen Sie jetzt im Skriptfenster und in den Bedienfeldern Debugger und Ausgabe das Popupmen Optionen verwenden. Sie knnen den Zeilenumbruch auch ber das Popupmen im Bedienfeld Aktionen ein- oder ausschalten. Die Tastenkombination lautet <Strg>+<Umschalt>+<W> (Windows) bzw. <Befehlstaste>+ <Umschalt>+<W> (Macintosh).
Zeilenumbruch Kontextsensitive Hilfe anzeigen

Wenn sich der Mauszeiger in der Werkzeugleiste Aktionen oder im Skriptfenster auf einem Element der ActionScript-Sprache befindet, knnen Sie mit dem Element Hilfe anzeigen im Kontextmen eine Hilfeseite zu diesem Element anzeigen.

Skripts importieren Wenn Sie im Bedienfeld Aktionen im Popupmen die Option Skript importieren auswhlen, wird das importierte Skript an der Position des Mauszeigers (der Einfgemarke) in Ihrer Codedatei in das Skript eingefgt. In frheren Versionen von Flash wurde der Inhalt des vorhandenen Skripts beim Importieren eines Skripts berschrieben. Haltepunkte durch einfaches Klicken

Sie knnen im Bedienfeld Debugger oder im Skriptfenster einen Haltepunkt setzen, indem Sie einfach neben der gewnschten Codezeile auf den linken Rand klicken. In frheren Versionen von Flash wurde eine Codezeile markiert, wenn Sie auf den linken Rand geklickt haben. Um jetzt eine Codezeile zu markieren, klicken Sie bei gedrckter Taste <Strg> (Windows) bzw. gedrckter Befehlstaste (Macintosh) auf den linken Rand. In frheren Versionen von Flash konnten Sie im Bedienfeld Aktionen entweder im Normalmodus arbeiten, in dem Sie Optionen und Parameter eingefgt haben, um Codes zu erstellen, oder im Expertenmodus, in dem Sie Befehle direkt im Skriptfenster hinzugefgt haben. In Flash MX 2004 und Flash MX Professional 2004 knnen Sie ber das Bedienfeld Aktionen einfach Befehle direkt dem Skriptfenster hinzufgen. Sie knnen weiterhin Befehle aus der Werkzeugleiste Aktionen in das Skriptfenster ziehen oder die Schaltflche Hinzufgen ber dem Skriptfenster verwenden, um einem Skript Befehle hinzuzufgen.

Bedienfeld Aktionen jetzt ohne Normalmodus und Expertenmodus

Sie knnen mehrere Skripts in einer FLA-Datei am unteren Rand des Skriptfensters im Bedienfeld Aktionen immer vorne anzeigen. In frheren Flash-Versionen konnten Sie jeweils nur ein Skript fixieren.
Mehrere Skripts immer vorne anzeigen

Das Bedienfeld Aktionen enthlt jetzt auf der linken Seite zwei Fenster: die Werkzeugleiste Aktionen und einen neuen Skript-Navigator. Der Skript-Navigator ist eine visuelle Darstellung der Struktur von FLA-Dateien. Hier knnen Sie durch Ihre FLA-Datei navigieren, um nach ActionScript-Code zu suchen.
Skript-Navigator

24

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

Integriertes Skriptfenster zur Bearbeitung von externen Dateien (nur Flash Professional) Sie knnen externe Skriptdateien mit dem ActionScript-Editor in

einem Skriptfenster (auerhalb des Bedienfelds Aktionen) schreiben und bearbeiten. Im Skriptfenster werden Syntaxfarbcodierungen, Codehinweise und andere Voreinstellungen untersttzt. Auerdem steht die Werkzeugleiste Aktionen zur Verfgung. Zum Anzeigen des Skriptfensters whlen Sie Datei > Neu, und whlen Sie anschlieend den externen Dateityp aus, den Sie bearbeiten mchten. Sie knnen mehrere externe Dateien gleichzeitig geffnet haben. Die Dateinamen werden auf Registerkarten am oberen Rand des Skriptfensters angezeigt. (Die Registerkarten werden nur unter Windows angezeigt.)

nderungen beim Debugging


In diesem Abschnitt werden nderungen zum verbesserten Debuggen Ihrer Skripts beschrieben.
Ausgabefenster in Bedienfeld Ausgabe gendert

Sie knnen jetzt das Bedienfeld Ausgabe wie jedes andere Bedienfeld in Flash verschieben und andocken.

Verbesserte Fehlerberichtausgabe zur Kompilierungszeit Neben der robusteren Behandlung von Ausnahmefehlern bietet ActionScript 2.0 eine Reihe von neuen Fehlermeldungen zur Kompilierungszeit. Weitere Informationen finden Sie in Anhang A, Fehlermeldungen, auf Seite 799. Verbesserte Ausnahmebehandlung Mit der Error-Klasse und den Befehlen throw und try..catch..finally knnen Sie eine robustere Ausnahmebehandlung implementieren.

Neues objektorientierteres Programmiermodell


Seit ihrer Einfhrung vor einigen Jahren ist die ActionScript-Sprache gewachsen und weiterentwickelt worden. In jeder neuen Version von Flash wurden zustzliche Schlsselwrter, Objekte, Methoden und andere Sprachelemente hinzugefgt. Im Gegensatz zu frheren Versionen von Flash werden in Flash MX 2004 und Flash MX Professional 2004 jedoch erstmals mehrere Sprachelemente eingefhrt, bei denen ein standardisierteres objektorientiertes Programmieren implementiert wird. Da diese Sprachelemente eine erhebliche Verbesserung der Kernelemente von ActionScript darstellen, bilden sie eine neue Version von ActionScript selbst: ActionScript 2.0. ActionScript 2.0 ist keine neue Sprache. Es umfasst vielmehr einen Kernsatz an Sprachelementen, durch die die Entwicklung von objektorientierten Programmen vereinfacht wird. Durch die Einfhrung von Schlsselwrtern wie z. B. class, interface, extends, implements und anderen wird Programmierern, die mit anderen Sprachen vertraut sind, das Erlernen der ActionScript-Syntax erleichtert. Neue Programmierer knnen standardisiertere Terminologie erlernen, die sie zuknftig auch auf andere objektorientierte Sprachen anwenden knnen. ActionScript 2.0 untersttzt alle Standardelemente der ActionScript-Sprache. Dadurch knnen Sie Skripts schreiben, die nher an den Standards anderer objektorientierter Sprachen wie z. B. Java liegen. ActionScript 2.0 ist vor allem fr Entwickler mit durchschnittlichen oder fortgeschrittenen Kenntnissen beim Erstellen von Anwendungen interessant, fr die eine Implementierung von Klassen und Unterklassen erforderlich ist. Mit ActionScript 2.0 knnen Sie auerdem beim Erstellen von Variablen deren Objekttyp deklarieren (siehe Strikte Typisierung auf Seite 42). Darber hinaus werden erheblich verbesserte Compiler-Fehlerbehandlungen bereitgestellt (siehe Anhang A, Fehlermeldungen, auf Seite 799).

Neues objektorientierteres Programmiermodell

25

Im Folgenden sind die neuen Sprachelemente in ActionScript 2.0 aufgefhrt.

class extends implements interface dynamic static public private get set import

Zu den Schlsselfunktionen von ActionScript 2.0 gehren folgende Punkte:

Skripts, die ActionScript 2.0 zum Definieren von Klassen oder Oberflchen verwenden,
mssen als externe Skriptdateien mit einer in jedem Skript einzeln definierten Klasse gespeichert werden, d. h., dass Klassen und Oberflchen nicht im Bedienfeld Aktionen definiert werden knnen. Sie knnen einzelne Klassendateien implizit importieren, indem Sie sie in einem durch globale oder dokumentspezifische Suchpfade angegebenen Ordner speichern und danach in einem Skript verwenden, oder explizit importieren, indem Sie den Befehl import verwenden. Pakete (Sammlungen von Klassendateien in einem Verzeichnis) knnen Sie mit Platzhaltern importieren. Anwendungen, die mit ActionScript 2.0 entwickelt wurden, werden von Flash Player ab Version 6 untersttzt.

Vorsicht: Die standardmige Verffentlichungseinstellung fr neu erstellte Dateien in Flash MX 2004 ist ActionScript 2.0. Wenn Sie eine bereits vorhandene FLA-Datei so ndern mchten, dass die ActionScript 2.0-Syntax verwendet wird, vergewissern Sie sich, dass ActionScript 2.0 in den Verffentlichungseinstellungen der FLA-Datei festgelegt ist. Ist dies nicht der Fall, wird die Datei fehlerhaft kompiliert, obwohl Flash keine Compiler-Fehler ausgibt.

Weitere Informationen zur Verwendung von ActionScript 2.0 zum Schreiben von objektorientierten Programmen in Flash finden Sie in Kapitel 9, Klassen mit ActionScript 2.0 erstellen, auf Seite 173.

26

Kapitel 1: Was ist neu in Flash MX 2004 ActionScript

KAPITEL 2 ActionScript-Grundlagen

Die Grammatik- und Zeichensetzungsregeln der ActionScript-Sprache legen fest, welche Zeichen und Wrter sinnvoll verwendet und in welcher Reihenfolge sie geschrieben werden knnen. Im Deutschen steht am Satzende beispielsweise ein Punkt, whrend das Ende einer Anweisung in ActionScript durch ein Semikolon (Strichpunkt) gekennzeichnet ist. Die im Folgenden beschriebenen Regeln gelten fr alle ActionScript-Anweisungen. Darber hinaus erfordern die meisten ActionScript-Begriffe die Einhaltung bestimmter Syntaxregeln, die Sie unter den jeweiligen Eintrgen in Kapitel 12, ActionScript-Lexikon, auf Seite 229 nachlesen knnen.

Unterschiede zwischen ActionScript und JavaScript


ActionScript weist groe hnlichkeit mit JavaScript-Programmiersprache auf. Sie brauchen JavaScript nicht zu beherrschen, um ActionScript erlernen und einsetzen zu knnen. Wenn Sie jedoch mit JavaScript vertraut sind, wird Ihnen ActionScript gleich bekannt vorkommen. Dieses Handbuch ist lediglich als allgemeine Einfhrung in die Grundlagen der Anwendungsprogrammierung vorgesehen. Informationen ber grundlegende Programmierverfahren und die JavaScript-Sprache finden Sie in einer Vielzahl anderer Quellen.

Die Vereinigung europischer Computerhersteller (ECMA) hat ein Dokument mit dem Titel
ECMA-262 herausgegeben, das die JavaScript-Sprache beschreibt und als internationaler Standard fr JavaScript dient. ActionScript basiert auf der ECMA-262-Spezifikation. Netscape DevEdge Online unterhlt eine Website namens JavaScript Developer Central (http://developer.netscape.com/tech/javascript/index.html), auf der Dokumentationen und weiterfhrende Artikel zum Thema ActionScript zu finden sind. Besonders zu empfehlen ist in diesem Zusammenhang der Core JavaScript Guide.

Die folgende Liste enthlt einen berblick ber einige der wesentlichen Unterschiede zwischen ActionScript und JavaScript:

ActionScript bietet keine Untersttzung fr browserspezifische Objekte wie Document,


Window und Anchor.

In ActionScript werden nicht alle integrierten JavaScript-Objekte vollstndig untersttzt. Einige JavaScript-Syntaxkonstrukte, wie zum Beispiel Anweisungsbezeichnungen, werden in
ActionScript nicht untersttzt. In ActionScript kann die Aktion eval() nur Variablenverweise ausfhren.

27

Unicode-Untersttzung fr ActionScript
Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 untersttzen die Unicode-Textcodierung fr ActionScript. Das bedeutet, dass Sie in ActionScript-Dateien Text in verschiedenen Sprachen verwenden knnen. So knnen Sie beispielsweise englischen, japanischen und franzsischen Text in derselben Datei verwenden. Sie knnen ActionScript-Voreinstellungen festlegen, um den zu verwendenden Kodierungstyp beim Importieren oder Exportieren von ActionScript-Dateien anzugeben. Sie haben die Auswahl zwischen UTF-8-Kodierung und Standardkodierung. UTF-8 ist ein 8-Bit-Unicode-Format; die Standardkodierung ist die Kodierung, die von der von Ihrem System verwendeten Sprache untersttzt wird. Sie wird auch als traditionelle Codeseite bezeichnet. Im Allgemeinen verwenden Sie beim Importieren oder Exportieren von ActionScript-Dateien im UTF-8-Format die Voreinstellung UTF-8. Beim Importieren oder Exportieren von Dateien in der traditionellen Codeseite, die in Ihrem System verwendet wird, verwenden Sie die Voreinstellung Standardkodierung. Wenn der Text in Ihren Skripts beim ffnen oder Importieren einer Datei nicht wie erwartet aussieht, ndern Sie die Voreinstellung zur Importkodierung. Wenn beim Exportieren von ActionScript-Dateien eine Warnmeldung angezeigt wird, knnen Sie die Voreinstellung zur Exportkodierung ndern oder diese Warnmeldung in den ActionScript-Voreinstellungen deaktivieren.
So whlen Sie Textkodierungsoptionen zum Importieren oder Exportieren von ActionScript-Dateien aus:

1 Klicken Sie im Dialogfeld Voreinstellungen (Bearbeiten > Voreinstellungen) auf die

Registerkarte ActionScript.
2 Fhren Sie unter Bearbeitungsoptionen einen oder beide der folgenden Schritte aus:

Whlen Sie fr die Option ffnen/Importieren den Eintrag UTF-8, um beim ffnen oder Importieren die Unicode-Kodierung zu verwenden, oder whlen Sie Standardkodierung, um beim ffnen oder Importieren die Kodierungsform der Sprache zu verwenden, die momentan in Ihrem System verwendet wird. Whlen Sie fr die Option Speichern/Exportieren den Eintrag UTF-8, um beim Speichern oder Exportieren die Unicode-Kodierung zu verwenden, oder whlen Sie Standardkodierung, um beim Speichern oder Exportieren die Kodierungsform der Sprache zu verwenden, die momentan in Ihrem System verwendet wird.

So aktivieren oder deaktivieren Sie die Warnung zur Exportkodierung:

1 Klicken Sie im Dialogfeld Voreinstellungen (Bearbeiten > Voreinstellungen) auf die

Registerkarte Warnungen. 2 Aktivieren oder deaktivieren Sie Warnmeldung bei Kodierungskonflikten beim Export von .as-Dateien.
Vorsicht: Der Befehl Film testen (siehe Skripts debuggen auf Seite 75) schlgt fehl, wenn ein beliebiger Teil des SWF-Dateipfads Zeichen enthlt, die nicht mit dem MBCS-Codiersystem dargestellt werden knnen. Japanische Pfade funktionieren beispielsweise nicht auf einem englischen System. Diese Einschrnkung gilt fr alle Anwendungsbereiche, die den externen Player verwenden.

28

Kapitel 2: ActionScript-Grundlagen

Terminologie
Wie in jeder Skriptsprache wird auch in ActionScript eine spezielle Terminologie verwendet. In der folgenden Liste finden Sie eine bersicht ber wichtige ActionScript-Begriffe. sind Anweisungen, die ein bestimmtes Verhalten in einer wiedergegebenen SWF-Datei bewirken. gotoAndStop() beispielsweise bewegt den Abspielkopf in ein bestimmtes Bild oder an eine bestimmte Bezeichnung. In diesem Handbuch sind die Begriffe Aktion und Anweisung austauschbar.
Aktionen Boolescher Wert

ist ein Ergebniswerttyp (true oder false).

Klassen sind Datentypen, die Sie erstellen knnen, um einen neuen Objekttyp zu definieren. Eine Klasse wird mit Hilfe des Schlsselworts class in einer externen Skriptdatei definiert (jedoch nicht in einem Skript, das Sie im Bedienfeld Aktionen schreiben). Konstanten

sind Elemente mit unvernderlichem Wert. Die Konstante key.TAB beispielsweise hat stets dieselbe Bedeutung und bezeichnet die Tabulatortaste einer Tastatur. Konstanten eignen sich hervorragend zum Vergleichen von Werten.

Konstruktoren sind Funktionen, mit denen Sie die Eigenschaften und Methoden einer Klasse definieren knnen. Laut Definition sind Konstruktoren Funktionen innerhalb einer Klassendefinition, die denselben Namen wie die Klasse haben. Der folgende Code definiert beispielsweise die Circle-Klasse und implementiert eine Konstruktorfunktion: // Datei Circle.as class Circle { private var radius:Number private var circumference:Number // Konstruktor function Circle(radius:Number) { circumference = 2 * Math.PI * radius; } }

Der Begriff Konstruktor wird auerdem verwendet, wenn Sie ein Objekt erstellen (instanziieren), das auf einer bestimmten Klasse basiert. Die folgenden Anweisungen sind Konstruktoren fr die integrierte Array-Klasse und die benutzerdefinierte Circle-Klasse:
mein_array:Array = new Array(); mein_circle:Circle = new Circle(); Datentypen

beschreiben die Art der Informationen, die eine Variable oder ein ActionScriptElement enthalten kann. ActionScript kennt die folgenden Datentypen: String, Zahl, Boolescher Wert, Objekt, Movieclip, Funktion, Null und Nicht definiert. Weitere Informationen hierzu finden Sie unter Datentypen auf Seite 37. sind Aktionen, die whrend der Wiedergabe einer SWF-Datei auftreten. Sie werden beispielsweise erzeugt, wenn ein Movieclip geladen wird, der Abspielkopf ein bestimmtes Bild erreicht oder der Benutzer auf eine Schaltflche oder einen Movieclip klickt bzw. eine Taste drckt.

Ereignisse

Terminologie

29

sind spezielle Aktionen, die Ereignisse wie mouseDown oder load verwalten. Flash kennt zwei Arten von Ereignisprozeduren, nmlich Ereignisprozedurmethoden und Ereignis-Listener. (Es gibt auch zwei Ereignisprozeduren, on() und onClipEvent(), die Sie Schaltflchen und Movieclips direkt zuweisen knnen.) Im Bedienfeld Aktionen weist jedes ActionScript-Objekt, das ber Ereignisprozedurmethoden oder Ereignis-Listener verfgt, eine Unterkategorie namens Ereignisse oder Listener auf. Einige Befehle knnen sowohl als Ereignisprozeduren als auch als Ereignis-Listener verwendet werden. Sie sind in beiden Unterkategorien enthalten.
Ereignisprozeduren Ausdrcke sind zulssige Kombinationen von ActionScript-Symbolen, die einen Wert darstellen, und setzen sich aus Operatoren und Operanden zusammen. Im Ausdruck x + 2 beispielsweise sind x und 2 Operanden, whrend es sich bei + um einen Operator handelt. Funktionen sind wiederverwendbare Codeblcke, die bergebene Parameter verarbeiten und einen Wert zurckgeben knnen. Weitere Informationen hierzu finden Sie unter Funktionen erstellen auf Seite 57.

sind Namen, mit denen auf Variablen, Eigenschaften, Objekte, Funktionen oder Methoden verwiesen wird. Diese Namen mssen mit einem Buchstaben, einem Unterstrich (_) oder einem Dollarzeichen ($) beginnen, drfen ansonsten jedoch neben diesen Zeichen auch Ziffern enthalten. Bei dem Bezeichner firstName beispielsweise handelt es sich um den Namen einer Variablen.
Bezeichner Instanzen sind Objekte, die zu einer bestimmten Klasse gehren. Jede Instanz einer Klasse enthlt alle dieser Klasse zugeordneten Eigenschaften und Methoden. Alle Movieclips sind beispielsweise Instanzen der integrierten MovieClip-Klasse, sodass Sie eine beliebige Methode oder Eigenschaft der MovieClip-Klasse bei jeder Movieclip-Instanz verwenden knnen. Instanznamen sind eindeutige Namen, mit denen Sie Movieclip- und Schaltflcheninstanzen in einem Skript gezielt ansprechen knnen. Sie werden den Instanzen auf der Bhne mit Hilfe des Eigenschafteninspektors zugewiesen. So knnten beispielsweise von einem Mastersymbol namens counter, das in der Bibliothek gespeichert ist, in einer SWF-Datei zwei Instanzen mit den Instanznamen scorePlayer1_mc und scorePlayer2_mc verwendet werden. Der folgende Code legt anhand von Instanznamen in allen Movieclip-Instanzen eine Variable namens score fest: _root.scorePlayer1_mc.score += 1; _root.scorePlayer2_mc.score -= 1;

Beim Benennen von Instanzen knnen Sie spezielle Suffixe verwenden, damit Codehinweise (siehe Codehinweise verwenden auf Seite 70) beim Eingeben des Codes angezeigt werden. Weitere Informationen finden Sie unter Suffixe zum Auslsen von Codehinweisen verwenden auf Seite 69.
Schlsselwrter sind reservierte Wrter, denen eine bestimmte Bedeutung zugewiesen ist. Das Schlsselwort var beispielsweise dient zum Deklarieren lokaler Variablen. Da Schlsselwrter nicht als Bezeichner verwendet werden drfen, ist var zum Beispiel kein zulssiger Variablenname. Eine Liste der Schlsselwrter finden Sie unter Schlsselwrter auf Seite 37.

30

Kapitel 2: ActionScript-Grundlagen

ist. Auerdem haben Sie die Mglichkeit, Funktionen zu erstellen, die als Methoden fr Objekte agieren, die auf integrierten Klassen oder von Ihnen erstellten Klassen basieren. Beispielsweise wird clear() im folgenden Code zu einer Methode fr das Objekt controller, das Sie zuvor definiert haben:
function reset(){ this.x_pos = 0; this.x_pos = 0; } controller.clear = reset; controller.clear(); Objekte

Methoden sind Funktionen, die mit einer Klasse verknpft sind. Beispielsweise ist getBytesLoaded() eine integrierte Methode, die mit der MovieClip-Klasse verknpft

sind Elemente mit bestimmten Eigenschaften und Methoden. Jedes Objekt weist einen eindeutigen Namen auf und ist eine Instanz einer bestimmten Klasse. Die ActionScript-Sprache verfgt ber eine Reihe integrierter (vordefinierter) Objekte. Das integrierte Date-Objekt beispielsweise dient zum Abfragen von Informationen der Systemuhr.

Operatoren sind Begriffe, die aus einem oder mehreren Werten einen neuen Wert errechnen. Der Additionsoperator (+) beispielsweise addiert zwei oder mehr Werte und gibt als neuen Wert deren Summe zurck. Die Werte, auf die ein Operator angewendet wird, bezeichnet man als Operanden. Parameter (oder Argumente) sind Platzhalter, mit deren Hilfe Sie Werte an eine Funktion bergeben knnen. Die folgende Funktion welcome() beispielsweise erhlt zwei Werte in Form der Parameter firstName und hobby: function welcome(firstName, hobby) { welcomeText = "Hallo " + firstName + ", ich sehe, Sie haben Freude am " + hobby; } Pakete sind Verzeichnisse, die eine oder mehrere Klassendateien enthalten und sich in einem bestimmten Classpath-Verzeichnis befinden (siehe Mit Classpath arbeiten auf Seite 189). Eigenschaften

sind Attribute, die ein Objekt definieren. Die Eigenschaft _visible ist beispielsweise eine Eigenschaft aller Movieclips, die bestimmt, ob ein Movieclip sichtbar ist oder nicht. sind hierarchische Adressen von Movieclip-Instanznamen, Variablen und Objekten in einer SWF-Datei. Der Name einer Movieclip-Instanz wird im Movieclip-Eigenschafteninspektor festgelegt. (Die Hauptzeitleiste weist immer den Namen _root auf.) Mit Hilfe eines Zielpfades knnen Sie eine Aktion einem bestimmten Movieclip zuordnen oder den Wert einer Variablen abfragen bzw. einstellen. Bei der folgenden Anweisung handelt es sich beispielsweise um den Zielpfad der Variablen volume im Movieclip stereoControl:

Zielpfade

_root.stereoControl.volume

Weitere Informationen zu Zielpfaden finden Sie unter Absolute und relative Zielpfade in der Hilfe Flash verwenden.

Terminologie

31

Variablen sind Bezeichner, die Werte beliebiger Datentypen enthalten knnen. Variablen knnen

erstellt, gendert und aktualisiert und die in ihnen gespeicherten Werte abgerufen und in Skripts verwendet werden. Im folgenden Beispiel sind die Bezeichner auf der linken Seite des Gleichheitszeichens Variablen:
var x = 5; var name = "Lolo"; var c_color = new Color(mcinstanceName);

Weitere Informationen zum Verwenden von Variablen finden Sie unter Variablen auf Seite 45.

Syntax
Wie jede Sprache gibt es auch bei ActionScript Syntaxregeln, die Sie befolgen mssen, um Skripts zu erstellen, die korrekt kompiliert und ausgefhrt werden knnen. In diesem Abschnitt werden die Elemente der ActionScript-Syntax beschrieben. Gro- und Kleinschreibung Bei Programmiersprachen, die zwischen Gro- und Kleinschreibung unterscheiden, gelten Variablen, die sich lediglich durch Gro- und Kleinschreibung voneinander unterscheiden (buch und Buch), als unterschiedliche Variablen. Es wird daher empfohlen, einmal aufgestellte Groschreibungsregeln (z. B. die in diesem Handbuch verwendeten Konventionen) konsequent einzuhalten, weil die Funktions- und Variablennamen in Ihren in ActionScript geschriebenen Skripts dadurch wesentlich leichter zu erkennen sind. Wenn Sie Dateien fr Flash Player 7 oder sptere Versionen verffentlichen, implementiert Flash die Unterscheidung zwischen Gro- und Kleinschreibung unabhngig davon, ob Sie ActionScript 1 oder ActionScript 2.0 verwenden. Dies bedeutet, dass fr alle Schlsselwrter, Klassennamen, Variablen, Methodennamen usw. die Gro- und Kleinschreibung beachtet werden muss. Beispiel:
// In Datei, die Flash Player 7 anspricht // und entweder ActionScript 1 oder ActionScript 2.0 // // Legt Eigenschaften von zwei verschiedenen Objekten fest cat.hilite = true; CAT.hilite = true; // Erstellt drei verschiedene Variablen, var meineVar=10; var meinevar=10; var mEinevAr=10; // Erzeugt keinen Fehler var array = new Array(); var date = new Date();

Diese nderung betrifft auch externe Variablen, die mit LoadVars.load() geladen wurden.

32

Kapitel 2: ActionScript-Grundlagen

Die Gro- und Kleinschreibung wird auerdem fr externe Skripts bercksichtigt, wie z. B. ActionScript 2.0-Klassendateien oder mit dem Befehl #include importierte Skripts. Sie sollten alle Dateien prfen und besttigen, dass Sie durchgehend die richtige Schreibweise verwendet haben, wenn Sie Dateien fr Flash Player 7 verffentlichen und zuvor erstellte externe Dateien mit der Anweisung #include zu Ihren Skripts hinzufgen. Eine Mglichkeit hierfr wre, die Datei im Skriptfenster (nur in Flash Professional) zu ffnen. Sie knnen auch in einer neuen FLA-Datei die Verffentlichungseinstellungen an Flash Player 7 adressieren und den Inhalt der Datei in das Bedienfeld Aktionen kopieren. Klicken Sie anschlieend auf die Schaltflche Syntax berprfen (siehe Syntax und Interpunktion berprfen auf Seite 74), oder verffentlichen Sie die Datei. Im Bedienfeld Ausgabe werden die Fehler angezeigt, die durch Namenskonflikte verursacht werden. Wenn die Option Syntaxfarbcodierungen aktiviert ist, werden korrekt geschriebene Sprachelemente automatisch blau dargestellt. Weitere Informationen hierzu finden Sie unter Schlsselwrter auf Seite 37 und Syntax hervorheben auf Seite 67. Punktsyntax In ActionScript verweist ein Punkt (.) auf die einem Objekt oder einem Movieclip zugeordneten Eigenschaften und Methoden. Auerdem dient er zur Angabe des Zielpfades bei Movieclips, Variablen, Funktionen und Objekten. Ein in der Punktsyntax geschriebener Ausdruck beginnt mit dem Namen des Objekts oder Movieclips, gefolgt von einem Punkt, und endet mit dem Element, das Sie spezifizieren mchten. Die Movieclipeigenschaft _x bezeichnet beispielsweise die x-Koordinate der Position eines Movieclips auf der Bhne. Der Ausdruck ballMC._x bezieht sich demnach auf die Eigenschaft _x der Movieclip-Instanz ballMC. Ein weiteres Beispiel: Die Variable submit wird im Movieclip form eingestellt, welcher wiederum im Movieclip shoppingCart verschachtelt ist. In diesem Fall setzt der Ausdruck shoppingCart.form.submit = true die Variable submit der Instanzform auf true. Nach demselben Muster wird auch die Methode eines Objekts oder Movieclips ausgedrckt. Die Methode play()der Movieclip-Instanz ball_mc in der folgenden Anweisung beispielsweise bewegt den Abspielkopf in der Zeitleiste von ball_mc.
ball_mc.play();

Die Punktsyntax kennt zwei spezielle Aliase: _root und _parent. Das Alias _root bezeichnet die Hauptzeitleiste. Mit dem Alias _root knnen Sie einen absoluten Zielpfad erzeugen. Die folgende Anweisung beispielsweise ruft die Funktion buildGameBoard() in den Movieclipfunctions in der Hauptzeitleiste auf:
_root.functions.buildGameBoard();

Das Alias _parent bezeichnet einen bergeordneten Movieclip, in dem das aktuelle Objekt verschachtelt ist. Mit dem Alias _parent knnen Sie einen relativen Zielpfad erzeugen. Wenn beispielsweise ein Movieclip dog_mc in einem Movieclip animal_mc verschachtelt ist, knnen Sie mit der folgenden Anweisung aus der Instanz dog_mc heraus den bergeordneten Movieclip animal_mc anhalten:
_parent.stop();

Syntax

33

Schrgstrichsyntax In Flash 3 und Flash 4 wurde der Zielpfad eines Movieclips oder einer Variablen in der Schrgstrichsyntax angegeben. Diese Syntax wird von Flash Player 7 zwar noch untersttzt, sollte aber nicht mehr verwendet werden. Die Schrgstrichsyntax wird von ActionScript 2.0 nicht untersttzt. Wenn Sie jedoch Inhalte erstellen, die speziell fr Flash Player 4 gedacht sind, mssen Sie die Schrgstrichsyntax verwenden. Weitere Informationen finden Sie unter Syntax mit Schrgstrichen verwenden auf Seite 815. Geschweifte Klammern Ereignisprozeduren, Klassendefinitionen und Funktionen von ActionScript werden in Blcken mit geschweiften Klammern ({}) gruppiert. Sie knnen die ffnende Klammer auf die gleiche Zeile setzen wie die Deklaration oder wie im folgenden Beispiel auf die nchste Zeile. Sie sollten sich fr ein Format entscheiden und sich konsequent daran halten, um die Lesbarkeit Ihres Codes zu verbessern.
// Ereignisprozedur on(release) { meinDatum = new Date(); aktuellerMonat = meinDatum.getMonth(); } on(release) { meinDatum = new Date(); aktuellerMonat = meinDatum.getMonth(); } // Klasse class Circle(radius) { } class Square(side) { } // Funktion circleArea = function(radius) { return radius * radius * MATH.PI } squareArea = function(side) { return side * side; }

Sie knnen berprfen, ob ffnende und schlieende Klammern bereinstimmen. Weitere Informationen hierzu finden Sie unter Syntax und Interpunktion berprfen auf Seite 74.

34

Kapitel 2: ActionScript-Grundlagen

Strichpunkte Anweisungen werden wie in den folgenden Beispielen in ActionScript mit einem Strichpunkt (;) abgeschlossen:
var column = passedDate.getDay(); var row = 0;

Flash kompiliert Ihr Skript zwar auch, wenn Sie den abschlieenden Strichpunkt in einer Anweisung vergessen, blicherweise werden sie in Skripts jedoch gesetzt. Runde Klammern Beim Definieren einer Funktion werden die Parameter in runde Klammern gesetzt:
function meineFunktion (name, alter, leser){ // hier folgt Ihr Code }

Beim Aufrufen einer Funktion werden alle zu bergebenden Parameter in runde Klammern gesetzt:
meineFunktion ("Christian", 28, true);

Auerdem knnen Sie mit Hilfe von runden Klammern die Reihenfolge der Verarbeitung von ActionScript-Operationen festlegen oder die Lesbarkeit von ActionScript-Anweisungen verbessern. (Weitere Informationen finden Sie unter Vorrang und Assoziativitt von Operatoren auf Seite 50.) Sie knnen runde Klammern auch dazu verwenden, einen Ausdruck auf der linken Seite einer in Punktsyntax geschriebenen Anweisung auszuwerten. In der folgenden Anweisung beispielsweise bewirken die runden Klammern, dass der Ausdruck new Color(this) ausgewertet und ein Color-Objekt erzeugt wird:
onClipEvent (enterFrame) { (new Color(this)).setRGB(0xffffff); }

Wenn Sie denselben Code ohne Klammern schreiben, mssen Sie den Ausdruck mit Hilfe einer gesonderten Anweisung auswerten:
onClipEvent (enterFrame) { meineFarbe = new Color(this); meineFarbe.setRGB(0xffffff); }

Sie knnen berprfen, ob ffnende und schlieende Klammern bereinstimmen. Weitere Informationen hierzu finden Sie unter Syntax und Interpunktion berprfen auf Seite 74.

Syntax

35

Kommentare Es wird dringend empfohlen, Kommentare in Skripts einzufgen. Auf diese Weise haben Sie beispielsweise die Mglichkeit, Informationen zu den gewnschten Resultaten einzelner Abschnitte in den Code einzubinden und an andere Mitarbeiter Ihres Entwicklungsteams weiterzugeben oder kommentierte Skriptmuster zu erstellen. Selbst einfache Skripts lassen sich wesentlich leichter nachvollziehen, wenn Sie bei der Skripterstellung Anmerkungen einfgen. Um eine Zeile oder einen Teil der Zeile als Kommentar zu kennzeichnen, stellen Sie dem Kommentar zwei Schrgstriche (//) voran:
on(release) { // neues Date-Objekt erzeugen meinDatum = new Date(); aktuellerMonat = meinDatum.getMonth(); // Monatszahl in Monatsnamen umwandeln monatsname = calcMonth(aktuellerMonat); jahr = meinDatum.getFullYear(); aktuellesDatum = meinDatum.getDate(); }

Wenn die Option Syntaxfarbcodierungen aktiviert ist (siehe Syntax hervorheben auf Seite 67), werden Kommentare automatisch grau dargestellt. Die Lnge Ihrer Kommentare hat keinen Einfluss auf die Gre der exportierten Datei. Auerdem unterliegen Kommentare nicht den fr die ActionScript-Syntax und Schlsselwrter geltenden Regeln. Wenn Sie einen gesamten Abschnitt Ihres Skripts als Kommentar kennzeichnen mchten, platzieren Sie ihn in einen Kommentarblock, anstatt // am Anfang jeder Zeile einzufgen. Diese Technik ist einfacher und bietet sich an, wenn Sie nur Teile eines Skripts prfen mchten und dazu groe Teile des Skripts auskommentieren. Um einen Kommentarblock zu erstellen, setzen Sie /* an den Anfang der Kommentarzeilen und */ an das Ende. Wenn beispielsweise das folgende Skript ausgefhrt wird, wird kein Teil des Codes im Kommentarblock ausgefhrt:
// Der untere Code fhrt Folgendes aus var x:Number = 15; var y:Number = 20; // Der untere Code fhrt nicht aus: /* on(release) { // neues Date-Objekt erzeugen meinDatum = new Date(); aktuellerMonat = meinDatum.getMonth(); // Monatszahl in Monatsnamen umwandeln monatsname = calcMonth(aktuellerMonat); jahr = meinDatum.getFullYear(); aktuellesDatum = meinDatum.getDate(); } */ // Der untere Code fhrt Folgendes aus var name:String = Ich heie; var age:Number = 20;

36

Kapitel 2: ActionScript-Grundlagen

Schlsselwrter Schlsselwrter sind fr bestimmte ActionScript-Funktionen reserviert und knnen nicht als Namen fr Bezeichner, wie z. B. Variablen, Funktionen oder Bezeichnungen verwendet werden. In der folgenden Tabelle finden Sie eine Liste aller ActionScript-Schlsselwrter:
break default extends if instanceof private static var case delete for implements interface public switch void class dynamic function import intrinsic return this while continue else get in new set typeof with

Konstanten Eine Konstante ist eine Eigenschaft mit unvernderlichem Wert. Die Konstanten BACKSPACE, ENTER, QUOTE, RETURN, SPACE und TAB beispielsweise sind Eigenschaften des Key-Objekts und verweisen auf Tasten der Computertastatur. In der folgenden Anweisung wird mit Hilfe der Konstanten ENTER geprft, ob der Anwender die Eingabetaste drckt:
if(Key.getCode() == Key.ENTER) { alert = "Sind Sie spielbereit?"; controlMC.gotoAndStop(5); }

Datentypen
Ein Datentyp beschreibt die Art der Informationen, die eine Variable oder ein ActionScriptElement enthalten kann. In Flash sind zwei Arten von Datentypen integriert, nmlich: Grunddatentypen und Referenzdatentypen. Die Grunddatentypen (String, Zahl und Boolescher Wert) weisen einen konstanten Wert auf und knnen daher den tatschlichen Wert des von ihnen dargestellten Elements enthalten. Die Referenzdatentypen (MovieClip und Objekt) weisen einen vernderlichen Wert auf und enthalten daher einen Verweis auf den tatschlichen Wert des Elements. Variablen, die Grunddatentypen enthalten, verhalten sich in bestimmten Situationen anders als solche, die Referenzdatentypen enthalten. (Weitere Informationen finden Sie unter Variablen in einem Programm verwenden auf Seite 48.) Darber hinaus untersttzt Flash die beiden speziellen Datentypen Null und undefined. In Flash sind alle integrierten Objekte, die keine Grunddatentypen oder Movieclip-Datentypen sind (z. B. Array oder Math) vom Datentyp Objekt. Eine Beschreibung der verschiedenen Datentypen und ihrer Regeln finden Sie in den folgenden Hilfethemen:

String auf Seite 38 Zahl auf Seite 39 Boolean auf Seite 39

Datentypen

37

Objekt auf Seite 39 MovieClip auf Seite 40 Null auf Seite 40 Undefined auf Seite 40

Beim Debuggen von Skripts mssen Sie mglicherweise den Datentyp eines Ausdrucks oder einer Variablen bestimmen, um festzustellen, warum der Ausdruck oder die Variable sich auf eine bestimmte Weise verhlt. Zu diesem Zweck knnen Sie den Operator typeof verwenden (siehe Datentypen von Elementen ermitteln auf Seite 40). Ein Datentyp wird mit Hilfe einer der folgenden Umwandlungsfunktionen in einen anderen Datentyp umgewandelt: Array(), Boolean(), Number(), Object(), String(). String Ein String ist eine Zeichenfolge aus Buchstaben, Ziffern und Sonderzeichen. Strings stehen in ActionScript-Anweisungen stets in einfachen oder doppelten Anfhrungszeichen und werden nicht als Variablen, sondern als Zeichen behandelt. Die folgende Anweisung beispielsweise enthlt den String "L7":
lieblingsgruppe = "L7";

Mit dem Additionsoperator (+) lassen sich zwei Strings verketten, d. h. miteinander verbinden. ActionScript behandelt Leerzeichen am Anfang oder Ende eines Strings als tatschlichen Bestandteil der Zeichenfolge. Der folgende Ausdruck enthlt ein Leerzeichen nach dem Komma:
gruss = "Willkommen, " + vorname;

Wenn Sie ein Anfhrungszeichen in den String selbst einfgen mchten, mssen Sie ihm einen umgekehrten Schrgstrich (\\) voranstellen. Die Kombination eines Zeichens mit einem vorangestellten Rckwrtsschrgstrich wird als Escape-Sequenz bezeichnet. Neben dem Anfhrungszeichen knnen noch eine Reihe weiterer Zeichen in ActionScript nur durch eine solche Escape-Sequenz dargestellt werden. Eine vollstndige Liste der in ActionScript verwendeten Escape-Sequenzen finden Sie in der folgenden Tabelle:
Escape-Sequenz
\b \f \n \r \t \" \' \\ \000 - \377 \x00 - \xFF \u0000 - \uFFFF

Zeichen Rckschritt (Backspace, ASCII 8) Seitenvorschub (Form Feed, ASCII 12) Zeilenvorschub (Line Feed, ASCII 10) Wagenrcklauf (Carriage Return, ASCII 13) Tabulator (Tab, ASCII 9) Doppeltes Anfhrungszeichen Einfaches Anfhrungszeichen Rckwrtsschrgstrich Ein oktaler Byte-Wert Ein hexadezimaler Byte-Wert Ein 16-Bit-Unicode-Zeichen in Hexadezimalschreibweise

38

Kapitel 2: ActionScript-Grundlagen

Zahl Der Datentyp Zahl gibt eine Gleitkommazahl mit zwei Kommastellen an. Zahlen lassen sich mit Hilfe der entsprechenden arithmetischen Operatoren addieren (+), subtrahieren (-), multiplizieren (*), dividieren (/), modulieren (%), inkrementieren (++) und dekrementieren (--). Auerdem knnen Sie Zahlen mit den integrierten Math- und Number-Klassen manipulieren. Im folgenden Beispiel wird die Methode sqrt() verwendet, um die Quadratwurzel (engl: square root) der Zahl 100 zu berechnen und zurckzugeben:
Math.sqrt(100);

Weitere Informationen finden Sie unter Numerische Operatoren auf Seite 50. Boolean Die beiden mglichen Booleschen Werte sind true (wahr) und false (falsch). ActionScript wandelt die Werte true und false gegebenenfalls in 1 und 0 um. Boolesche Werte werden zumeist in Verbindung mit logischen Operatoren in ActionScript-Anweisungen verwendet, die anhand eines Vergleichs den Ablauf eines Skripts steuern. Im folgenden Skript beispielsweise wird eine SWF-Datei wiedergegeben, wenn die Variable password den Wert true aufweist:
onClipEvent (enterFrame) { if (userName == true && password == true){ play(); } }

Weitere Informationen hierzu finden Sie unter Integrierte Funktionen verwenden auf Seite 56 und Logische Operatoren auf Seite 52. Objekt Ein Objekt ist eine Sammlung von Eigenschaften. Jede Eigenschaft hat einen Namen und einen Wert. Da es sich bei dem Wert einer Eigenschaft um einen beliebigen Flash-Datentyp, also auch um ein anderes Objekt, handeln kann, lassen sich Objekte durch Festlegen ihrer Eigenschaften ineinander verschachteln. Die Zuweisung der Eigenschaften von Objekten geschieht mit Hilfe des Punkt-Operators (.). Der folgende Code beispielsweise definiert arbeitsstunden als Eigenschaft von wochenstatistik und dieses wiederum als Eigenschaft von mitarbeiter:
mitarbeiter.wochenstatistik.arbeitsstunden

Mit Hilfe der integrierten ActionScript-Objekte knnen Sie auf bestimmte Arten von Informationen zugreifen und diese manipulieren. Das Math-Objekt beispielsweise verfgt ber Methoden zur Durchfhrung mathematischer Berechnungen mit Zahlen, die Sie an sie bergeben. In diesem Beispiel wird die Methode sqrt() verwendet:
quadratwurzel = Math.sqrt(100);

Das MovieClip-Objekt verfgt ber Methoden, mit deren Hilfe Sie Movieclip-Symbolinstanzen auf der Bhne steuern knnen. In diesem Beispiel werden die Methoden play() und nextFrame() verwendet:
mcInstanceName.play(); mc2InstanceName.nextFrame();

Datentypen

39

Sie knnen auch benutzerdefinierte Objekte erstellen, um die Informationen in Ihrer FlashAnwendung zu strukturieren. Fr die Gestaltung einer interaktiven Anwendung mit ActionScript bentigen Sie die unterschiedlichsten Informationen, zum Beispiel einen Benutzernamen, die Geschwindigkeit eines Balles, die Namen der Artikel in einem Einkaufswagen, die Anzahl der geladenen Bilder, die Postleitzahl des Benutzers oder die zuletzt gedrckte Taste. Mit Hilfe selbst definierter Objekte knnen Sie diese Informationen zu Gruppen zusammenfassen, die Skripterstellung vereinfachen und Ihre Skripts wiederverwenden. MovieClip Movieclips sind Symbole, die Animationen in einer Flash-Anwendung abspielen knnen. Sie stellen den einzigen Datentyp dar, der auf ein Grafikelement verweist. Der Movieclip-Datentyp ermglicht die Steuerung von Moveclipsymbolen mit Hilfe der Methoden der MovieClip-Klasse. Der Aufruf einer Methode erfolgt wie im folgenden Beispiel dargestellt mit dem Punkt-Operator (.):
mein_mc.startDrag(true); parent_mc.getURL("http://www.macromedia.com/support/" + Produkt);

Null Der Nulldatentyp besteht aus dem einen Wert null. Dieser Wert steht fr kein Wert und gibt an, dass keine Daten vorhanden sind. Der Wert null kann in verschiedenen Situationen verwendet werden. Hier einige Beispiele fr derartige Situationen:

Eine Variable hat noch keinen Wert erhalten. Eine Variable enthlt keinen Wert mehr. Eine Funktion kann keinen Wert zurckgeben, weil kein entsprechender Wert verfgbar ist; in
diesem Fall wird der Nullwert zurckgegeben.

Ein erwarteter Parameter fehlt; in diesem Fall wird der Nullwert als Parameter bergeben.
Undefined Der Datentyp Nicht definiert besteht aus dem einen Wert undefined und wird fr eine Variable verwendet, der kein Wert zugewiesen ist. Datentypen von Elementen ermitteln Beim Prfen und Debuggen Ihrer Programme stoen Sie mglicherweise auf Probleme, die mit den Datentypen von verschiedenen Elementen zusammenhngen. In diesen Fllen knnen Sie den Datentyp eines Elements ermitteln. Verwenden Sie hierzu wie im folgenden Beispiel den typeof-Operator:
trace(typeof(variablenname));

Weitere Informationen zum Prfen und Debuggen finden Sie in Kapitel 3, Skripts schreiben und debuggen, auf Seite 61.

40

Kapitel 2: ActionScript-Grundlagen

Elementen Datentypen zuweisen


Wie im folgenden Abschnitt Automatische Typisierung beschrieben, weist Flash Sprachelementen automatisch die folgenden Arten von Datentypen zu:

Variablen An Funktionen, Methoden oder Klassen bergebene Parameter Von Funktionen oder Methoden zurckgegebene Werte Als Unterklassen von vorhandenen Klassen erstellte Objekte

Sie knnen Datentypen jedoch auch explizit Elementen zuweisen. Hierdurch knnen Sie bestimmte Fehler in Ihren Skripts vermeiden bzw. diagnostizieren. Weitere Informationen finden Sie unter Strikte Typisierung auf Seite 42. Automatische Typisierung Sie mssen in Flash nicht ausdrcklich definieren, dass Elemente Zahlen, Strings oder andere Datentypen enthalten. Flash legt beim Zuweisen den Datentyp eines Elements fest:
var x = 3;

Im Ausdruck var x = 3 wertet Flash das Element auf der rechten Seite des Operators aus und erkennt, dass es sich um den Datentyp Zahl handelt. Durch eine sptere Zuweisung wird der Typ von x mglicherweise gendert. Die Anweisung x = "hallo" beispielsweise ndert den Typ von x in einen String. Eine Variable, der kein Wert zugewiesen wurde, weist den Datentyp undefined (nicht definiert) auf. Wenn ein Ausdruck dies erfordert, werden Datentypen in ActionScript automatisch konvertiert. Wenn Sie zum Beispiel einen Wert an die Aktion trace() bergeben, wandelt trace() den Wert automatisch in einen String um und sendet ihn an das Bedienfeld Ausgabe In Ausdrcken mit Operatoren wandelt ActionScript den Datentyp je nach Bedarf um. Wenn der Operator + beispielsweise in Verbindung mit einem String verwendet wird, muss es sich bei dem anderen Operanden ebenfalls um einen String handeln.
"Der Nchste bitte, Nummer " + 7

ActionScript wandelt die Zahl 7 in den String "7" um und hngt ihn an das Ende des ersten Strings an. Das Ergebnis dieser Operation ist wiederum ein String:
"Der Nchste bitte, Nummer 7"

Elementen Datentypen zuweisen

41

Strikte Typisierung Mit ActionScript 2.0 knnen Sie beim Erstellen von Variablen den Objekttyp explizit festlegen. Dies wird als strikte Typisierung bezeichnet. Bei nicht bereinstimmenden Datentypen werden Compiler-Fehler ausgelst. Durch die strikte Typisierung wird verhindert, dass Sie vorhandenen Variablen den falschen Datentyp zuweisen. Um einem Element einen bestimmten Datentyp zuzuweisen, verwenden Sie zur Angabe des Typs das Schlsselwort var und die Syntax mit nachgestelltem Doppelpunkt:
// strikte Variablen- oder Objekttypisierung var x:Number = 7; var birthday:Date = new Date(); // strikte Parametertypisierung function welcome(vorname:String, alter:Number){ } // strikte Typisierung des Parameters und des Rckgabewertes function square(x:Number):Number { var squared = x*x; return squared; }

Da Sie das Schlsselwort var zur strikten Typisierung von Variablen verwenden mssen, knnen Sie eine globale Variable nicht strikt typisieren (siehe Variablen deklarieren und Gltigkeitsbereiche festlegen auf Seite 46). Sie knnen den Datentyp von Objekten deklarieren, die auf integrierten Klassen (Button, Date, MovieClip usw.) und auf von Ihnen erstellten Klassen und Schnittstellen basieren. Wenn Sie beispielsweise in der Datei Student.as die Student-Klasse definieren, knnen Sie festlegen, dass von Ihnen erstellte Objekte den Typ Student aufweisen:
var student:Student = new Student();

Auerdem knnen Sie festlegen, dass Objekte den Typ Function oder Void aufweisen. Durch die strikte Typisierung wird verhindert, dass Sie einem Objekt unbeabsichtigt den falschen Datentyp zuweisen. Flash prft beim Kompilieren, ob Fehler durch nicht bereinstimmende Eingaben vorliegen. Angenommen, Sie geben folgenden Code ein:
// in der Student.as-Klassendatei class Student { var status:Boolean; // Eigenschaft von Student-Objekten } // in einem Skript var studentChristianFedder:Student = new Student(); studentChristianFedder.status = "eingeschrieben";

Wenn dieses Skript von Flash kompiliert wird, wird ein Fehler durch nicht bereinstimmende Eingaben erzeugt. Die strikte Typisierung bietet den weiteren Vorteil, dass Flash MX 2004 automatisch Codehinweise fr integrierte Objekte anzeigt, wenn diese strikt typisiert werden. Weitere Informationen finden Sie unter Objekte zum Auslsen von Codehinweisen strikt typisieren auf Seite 68.

42

Kapitel 2: ActionScript-Grundlagen

Dateien, die mit ActionScript 1 verffentlicht werden, akzeptieren keine strikte Typisierung beim Kompilieren. Daher wird kein Kompilierfehler erzeugt, wenn einer Variablen, die Sie strikt typisiert haben, der falsche Datentyp zugewiesen wird.
var x:String = "abc" x = 12 ; // kein Fehler in ActionScript 1, Fehler durch nicht bereinstimmende Eingaben in ActionScript 2

Der Grund hierfr ist, dass Flash eine Anweisung wie beispielsweise var x:String = "abc" beim Verffentlichen einer Datei fr ActionScript 1 als Schrgstrichsyntax statt als strikte Typisierung interpretiert. (ActionScript 2.0 untersttzt keine Schrgstrichsyntax.) Dieses Verhalten kann dazu fhren, dass der Compiler durch Objekte, die einer Variable des falschen Typs zugewiesen sind, ohne Meldung illegale Methodenaufrufe und undefinierte Verweise auf Eigenschaften durchfhrt. Achten Sie daher beim Implementieren strikter Typisierung darauf, dass Sie Dateien fr ActionScript 2.0 verffentlichen. Objekte umwandeln Mit ActionScript 2.0 knnen Sie einen Objekttyp in einen anderen konvertieren. Der von Flash verwendete Typumwandlungsoperator hat die Form eines Funktionsaufrufs und stimmt mit der im Entwurf des Standards ECMA-262 Edition 4 festgelegten expliziten Typumwandlung berein. Mit ihm knnen Sie besttigen, dass ein Objekt von einem bestimmten Typ ist, sodass der Compiler bei einer Typberprfung erkennt, dass das Objekt Eigenschaften hat, die im ursprnglichen Typ nicht enthalten sind. Dies ist beispielsweise beim Durchlaufen von ObjektArrays hilfreich, die mglicherweise unterschiedlichen Typen entsprechen. In Dateien, die fr Flash Player 7 oder sptere Versionen verffentlicht wurden, geben Anweisungen fr die Umwandlung, die whrend der Laufzeit fehlschlagen, null zurck. In fr Flash Player 6 verffentlichten Dateien ist keine Laufzeituntersttzung fr fehlgeschlagene Umwandlungen implementiert. Die Syntax fr die Umwandlung ist type(item), bei der der Compiler sich so verhalten soll, als wenn der Datentyp von item type ist. Grundstzlich ist die Umwandlung ein Funktionsaufruf, und dieser gibt null zurck, wenn die Umwandlung fehlschlgt. Wenn die Umwandlung erfolgreich war, gibt der Funktionsaufruf das ursprngliche Objekt zurck. Der Compiler erzeugt jedoch keine Typdiskrepanzen, wenn Sie Elemente in Datentypen umwandeln, die Sie in externen Klassendateien erstellt haben, auch wenn die Umwandlung whrend der Laufzeit fehlschlgt.
// in Animal.as class Animal {} // in Dog.as class Dog extends Animal { function bark (){} } // in Cat.as class Cat extends Animal { function meow (){} } // in FLA-Datei var spot:Dog = new Dog(); var temp:Cat = Cat (spot); // besttigen Sie, dass ein Dog-Objekt dem Typ Cat entspricht temp.meow(); // keine Auswirkung, jedoch auch kein Compiler-Fehler

Elementen Datentypen zuweisen

43

In dieser Situation haben Sie dem Compiler gegenber angegeben, dass temp ein Cat-Objekt ist, der Compiler geht daher davon aus, dass temp.meow() eine gltige Anweisung ist. Der Compiler wei jedoch nicht, dass die Umwandlung fehlschlagen wird (d. h., dass Sie versucht haben, ein Dog-Objekt in einen Cat-Typ umzuwandeln), daher tritt keine Fehlerberichtausgabe auf. Wenn Sie eine berprfung zu Ihrem Skript hinzufgen, um sicherzustellen, dass die Umwandlung erfolgreich ist, knnen Sie Typdiskrepanzen whrend der Laufzeit feststellen.
var spot:Dog = new Dog(); var temp:Cat = Cat (spot); trace(temp); // zeigt whrend der Laufzeit null an

Sie knnen einen Ausdruck in eine Schnittstelle umwandeln. Wenn der Ausdruck ein Objekt ist, das die Schnittstelle implementiert, oder eine Basisklasse hat, die die Schnittstelle implementiert, wird das Objekt zurckgegeben. Wenn nicht, wird null zurckgegeben. Im folgenden Beispiel werden die Ergebnisse der Umwandlung von integrierten Objekttypen gezeigt. Wie die erste Zeile im Block with(results) zeigt, gibt eine illegale Umwandlung - in diesem Fall die Umwandlung eines Strings in einen Movieclip - null zurck. Wie die letzten zwei Zeilen anzeigen, gibt eine Umwandlung in null oder nicht definiert undefined zurck.
var mc:MovieClip; var arr:Array; var bool:Boolean; var num3:Number; var obj:Object; var str:String; _root.createTextField("Ergebnisse",2,100,100,300,300); with(results){ text = "type MovieClip : "+(typeof MovieClip(str)); // gibt null zurck text += "\ntype object : "+(typeof Object(str)); // gibt object zurck text += "\ntype Array : "+(typeof Array(num3)); // gibt object zurck text += "\ntype Boolean : "+(typeof Boolean(mc)); // gibt boolean zurck text += "\ntype String : "+(typeof String(mc)); // gibt string zurck text += "\ntype Number : "+(typeof Number(obj)); // gibt number zurck text += "\ntype Function : "+(typeof Function(mc)); // gibt object zurck text += "\ntype null : "+(typeof null(arr)); // gibt undefined zurck text += "\ntype undefined : "+(typeof undefined(obj)); // gibt undefined zurck } //Ergebnisse im Bedienfeld Ausgabe type MovieClip : null type object : Objekt type Array : Objekt type Boolean : boolean type String : string type Number : number type Function : Objekt type null : undefined type undefined : undefined

Sie knnen Grunddatentypen wie Boolean, Date und Number mit einem Typumwandlungsoperator mit demselben Namen nicht berschreiben.

44

Kapitel 2: ActionScript-Grundlagen

Variablen
Eine Variable ist ein Behlter fr Informationen. Der Behlter an sich bleibt dabei immer gleich, nur der Inhalt kann sich ndern. Indem Sie whrend der Wiedergabe einer SWF-Datei den Wert einer Variablen ndern, knnen Sie Informationen zu den Aktionen des Benutzers erfassen und speichern, die Vernderung von Werten whrend der SWF-Wiedergabe erfassen oder feststellen, ob eine bestimmte Bedingung erfllt ist. Es empfiehlt sich, einer Variablen beim Definieren stets einen bekannten Wert zuzuweisen. Dies wird als Initialisieren einer Variablen bezeichnet und geschieht oftmals im ersten Bild der SWFDatei. Die Initialisierung ermglicht Ihnen, den Wert der Variablen whrend der SWFWiedergabe zu berwachen und Vernderungen zu erfassen. Variablen knnen beliebige Datentypen enthalten (siehe Datentypen auf Seite 37). Der Datentyp des Wertes einer Variablen bestimmt, wie dieser sich bei einer Zuweisung in einem Skript ndert. Zu den am hufigsten in Variablen gespeicherten Informationen gehren URL-Adressen, Benutzernamen, Ergebnisse mathematischer Berechnungen, Ereigniszhler und Schaltflchenstatus. Jede SWF-Datei und jede Movieclipinstanz verfgen ber einen Satz von Variablen, wobei jede Variable unabhngig von den Variablen anderer SWF-Dateien oder Movieclips einen Wert enthlt. Wenn Sie den Wert einer Variablen testen mchten, senden Sie ihn mit der Aktion trace() an das Bedienfeld Ausgabe. Der Ausdruck trace(arbeitsstunden) beispielsweise bewirkt, dass der Wert der Variablen arbeitsstunden im Testmodus an das Bedienfeld Ausgabe gesendet wird. Sie knnen die Werte von Variablen auch im Testmodus des Debuggers berprfen und einstellen. Weitere Informationen hierzu finden Sie unter trace-Anweisung verwenden auf Seite 88 und Variablen anzeigen und ndern auf Seite 79. Variablen benennen Der Name einer Variablen muss folgende Bedingungen erfllen:

Es muss sich um einen Bezeichner handeln (siehe Terminologie auf Seite 29). Es darf sich nicht um ein Schlsselwort oder einen ActionScript-Begriff wie true, false, null
oder undefined handeln.

Er muss innerhalb seines Gltigkeitsbereichs eindeutig sein (siehe Variablen deklarieren und
Gltigkeitsbereiche festlegen auf Seite 46). Darber hinaus sollten Sie kein Element der ActionScript-Sprache als Variablenname verwenden, da dies zu Syntaxfehlern oder unerwarteten Ergebnissen fhren kann. Wenn Sie beispielsweise einer Variablen den Namen String geben und dann versuchen, mit newString() ein StringObjekt zu erstellen, ist das neue Objekt nicht definiert.
hello_str = new String(); trace(hello_str.length); // Rckgabewert: 0 String = "hello"; // Die Variable erhlt den gleichen Namen wie die integrierte Klasse hello_str = new String(); trace(hello_str.length); // Rckgabewert: nicht definiert

Variablen

45

Der ActionScript-Editor untersttzt Codehinweise fr integrierte Klassen und fr Variablen, die auf diesen Klassen basieren. Wenn Flash Codehinweise fr einen bestimmten Objekttyp bereitstellen soll, der einer Variablen zugewiesen ist, knnen Sie die Variable strikt typisieren oder die Variable mit einem speziellen Suffix benennen. Angenommen, Sie geben folgenden Code ein:
var members:Array = new Array(); members.

Sobald Sie den Punkt (.) eingeben, zeigt Flash eine Liste von Methoden und Eigenschaften an, die fr Array-Objekte verfgbar sind. Weitere Informationen finden Sie unter Code zum Auslsen von Codehinweisen schreiben auf Seite 68. Variablen deklarieren und Gltigkeitsbereiche festlegen Der Gltigkeitsbereich einer Variablen ist der Bereich, innerhalb dessen sie erkannt und darauf verwiesen werden kann. ActionScript kennt drei verschiedene Gltigkeitsbereiche fr Variablen:

Lokale Variablen sind im Hauptteil der Funktion verfgbar, in der sie deklariert sind
(innerhalb des durch die geschweiften Klammern begrenzten Abschnitts). Zeitleistenvariablen sind fr alle Skripts auf der Zeitleiste verfgbar. Globale Variablen und Funktionen sind in allen Zeitleisten und Gltigkeitsbereichen in Ihrem Dokument sichtbar.

Hinweis: Von Ihnen erstellte ActionScript 2.0-Klassen untersttzen ffentliche, private und statische Variablengltigkeitsbereiche. Weitere Informationen hierzu finden Sie unter Mitgliedszugriff steuern auf Seite 183 und Klassenmitglieder erstellen auf Seite 185.

Lokale Variablen Lokale Variablen werden mit Hilfe der Anweisung var innerhalb des Hauptabschnittes einer Funktion deklariert. Eine lokale Variable ist nur innerhalb des Codeblocks gltig, in dem sie deklariert wird, und verliert ihre Gltigkeit am Ende dieses Blocks. Eine lokale Variable, die nicht innerhalb eines Blocks deklariert wird, verliert ihre Gltigkeit am Ende des Skripts. Die Variablen i und j werden beispielsweise gerne als Schleifenzhler verwendet. Im folgenden Code wird i als lokale Variable verwendet, die nur innerhalb der Funktion makeDays() existiert:
function makeDays() { var i; for( i = 0; i < monthArray[month]; i++ ) { _root.Days.attachMovie( "DayDisplay", i, i + 2000 ); _root.Days[i].num = i + 1; _root.Days[i]._x = column * _root.Days[i]._width; _root.Days[i]._y = row * _root.Days[i]._height; column = column + 1; if (column == 7 ) { column = 0; row = row + 1; } } }

46

Kapitel 2: ActionScript-Grundlagen

Die Verwendung lokaler Variablen trgt auch dazu bei, Namenskonflikte zu vermeiden, die zu Fehlern in Ihrer Anwendung fhren knnen. Wenn Sie beispielsweise name als lokale Variable deklarieren, knnen Sie sie in einem Zusammenhang fr einen Benutzernamen und in einem anderen Zusammenhang fr den Namen einer Movieclip-Instanz verwenden. In diesem Fall tritt kein Konflikt auf, da beide Variablen unterschiedliche Gltigkeitsbereiche aufweisen. Es empfiehlt sich, im Hauptabschnitt einer Funktion lokale Variablen zu verwenden, damit die Funktion als in sich abgeschlossener Code arbeiten kann. Eine lokale Variable kann nur innerhalb ihres Codeblocks gendert werden. Wenn ein Ausdruck in einer Funktion hingegen eine globale Variable enthlt, kann deren Wert auch durch einen Ausdruck auerhalb dieser Funktion gendert werden, was sich wiederum auf die Funktion selbst auswirken wrde. Sie knnen einer lokalen Variable einen Datentyp zuweisen, wenn Sie diese definieren, wodurch verhindert wird, dass Sie vorhandenen Variablen den falschen Datentyp zuweisen. Weitere Informationen hierzu finden Sie unter Strikte Typisierung auf Seite 42. Zeitleistenvariablen Zeitleistenvariablen sind fr alle Skripts auf der Zeitleiste verfgbar. Zeitleistenvariablen werden deklariert, indem sie auf einem Bild in der Zeitleiste initialisiert werden. Sie sollten die Variable auf alle Flle initialisieren, bevor Sie versuchen, in einem Skript auf sie zuzugreifen. Wenn Sie beispielsweise den Code var x = 10; in Bild 20 eingeben, kann ein Skript, das mit einem Bild vor Bild 20 verknpft ist, nicht auf diese Variable zugreifen. Globale Variablen Globale Variablen und Funktionen sind in allen Zeitleisten und Gltigkeitsbereichen in Ihrem Dokument sichtbar. Um eine Variable mit einem globalen Gltigkeitsbereich zu erstellen, fgen Sie den Bezeichner _global vor dem Variablennamen ein. Verwenden Sie nicht die Syntax var =. Der folgende Code beispielsweise erstellt die globale Variable meinName:
var _global.meinName = "Georg"; // Syntaxfehler _global.meinName = "Georg";

Wenn Sie jedoch eine lokale Variable mit dem gleichen Namen wie eine globale Variable initialisieren, haben Sie keinen Zugriff auf die globale Variable, wenn Sie sich im Gltigkeitsbereich der lokalen Variablen befinden:
_global.counter = 100; counter++; trace(counter); // Anzeige: 101 function count(){ for( var counter = 0; counter <= 10 ; counter++ ) { trace(counter); // Anzeige: 0 bis 10 } } count(); counter++; trace(counter); // Anzeige: 102

Variablen

47

Variablen in einem Programm verwenden Eine Variable muss im Skript deklariert werden, bevor Sie sie in einem Ausdruck verwenden knnen. Bei undeklarierten Variablen ist wie im folgenden Beispiel der Variablenwert NaN oder undefiniert, und das Skript kann unter Umstnden unerwartete Ergebnisse liefern:
var squared = x*x; trace(squared); // NaN var x = 6;

Im folgenden Beispiel muss die Anweisung, durch die die Variable x deklariert wird, an erster Stelle stehen, damit squared durch einen Wert ersetzt werden kann:
var x = 6; var squared = x*x; trace(squared); // 36

Ein hnliches Verhalten tritt auf, wenn Sie eine undefinierte Variable an eine Methode oder Funktion bergeben:
getURL(meineWebsite); // keine Aktion var meineWebsite = "http://www.macromedia.com"; var meineWebsite = "http://www.macromedia.com"; getURL(meineWebsite); // Browser zeigt www.macromedia.com an

Der Wert einer Variablen kann in einem Skript beliebig oft gendert werden. Wann und auf welche Weise dies geschieht, hngt vom Datentyp des durch die Variable beschriebenen Wertes ab. Grunddatentypen wie Strings und Zahlen werden als Wert bergeben. Dies bedeutet, dass der tatschliche Inhalt der Variablen an die Variable bergeben wird. Im folgenden Beispiel wird die Variable x auf den 15 gesetzt und dieser Wert anschlieend in die Variable y kopiert. Whrend die Variable x anschlieend in Zeile 3 den Wert 30 erhlt, behlt die Variable y den Wert 15 bei, da y ihren Wert nicht aus x abruft, sondern ihn aus x in Zeile 2 zugewiesen bekommt.
var x = 15; var y = x; var x = 30;

Im folgenden Beispiel enthlt die Variable inValue den Wert 3. Da es sich bei diesem Wert um einen Grunddatentyp handelt, wird der tatschliche Wert an die Funktion sqrt() bergeben und der Ergebniswert 9 zurckgegeben.
function sqrt(x){ return x * x; } var inValue = 3; var out = sqrt(inValue);

Der Wert der Variablen inValue ndert sich nicht. Der Datentyp Objekt kann derart viele und komplexe Informationen enthalten, dass eine Variable dieses Typs nicht den eigentlichen Wert, sondern einen Verweis auf den Wert enthlt. Dieser Verweis dient sozusagen als Platzhalter fr den tatschlichen Inhalt der Variablen. Wenn die Variable ihren Wert bentigt, fragt der Verweis den Inhalt der Variablen ab und gibt ihn zurck, ohne den Wert der Variablen selbst zu bertragen.

48

Kapitel 2: ActionScript-Grundlagen

Im folgenden Beispiel werden Daten mit Hilfe eines Verweises bergeben:


var meinArray = ["tom", "josie"]; var neuesArray = meinArray; meinArray[2] = "jack"; trace(neuesArray);

Der Code im oben stehenden Beispiel erzeugt ein Array-Objekt namens meinArray, das zwei Elemente enthlt. Anschlieend wird die Variable neuesArray erzeugt und ein Verweis auf meinArray als Wert an die neue Variable bergeben. Die nderung des zweiten Elements von meinArray in Zeile 3 wirkt sich auf alle Variablen aus, die einen Verweis auf dieses Array enthalten. Die Aktion trace() sendet tom, jack an das Bedienfeld Ausgabe. Im folgenden Beispiel enthlt meinArray ein Array-Objekt und wird daher mit Hilfe eines Verweises an die Funktion zeroArray() bergeben. Die Funktion zeroArray() ndert den Inhalt des Arrays in meinArray.
function zeroArray (theArray){ var i; for (i=0; i < theArray.length; i++) { theArray[i] = 0; } } var meinArray = new Array(); meinArray[0] = 1; meinArray[1] = 2; meinArray[2] = 3; zeroArray(meinArray);

Die Funktion zeroArray() erhlt als Parameter ein Array-Objekt und setzt alle Elemente des Arrays auf 0. Sie kann das Array deshalb modifizieren, weil es ihr mit Hilfe eines Verweises bergeben wird.

Werte in Ausdrcken mit Operatoren manipulieren


Ein Ausdruck ist eine Anweisung, die von Flash ausgewertet werden kann und einen Wert zurckgibt. Sie knnen einen Ausdruck erstellen, indem Sie Operatoren und Werte miteinander kombinieren oder eine Funktion aufrufen. Operatoren sind Zeichen, die festlegen, auf welche Weise die Werte in einem Ausdruck miteinander kombiniert, verglichen oder gendert werden. Die Elemente, auf die der Operator angewendet wird, bezeichnet man als Operanden. In der folgenden Anweisung beispielsweise addiert der Operator + die Werte eines numerischen Literals und der Variablen foo. foo und 3 sind also die Operanden:
foo + 3

In diesem Abschnitt werden die allgemeinen Regeln fr hufig verwendete Operatortypen, deren Rangfolge und deren Assoziativitt beschrieben. Detaillierte Informationen zu den hier erwhnten Operatoren sowie zu speziellen Operatoren, die keiner dieser Kategorien angehren, finden Sie in den entsprechenden Eintrgen unter Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Werte in Ausdrcken mit Operatoren manipulieren

49

Vorrang und Assoziativitt von Operatoren Wenn in einer Anweisung mehrere Operatoren enthalten sind, werden bestimmte Operatoren vorrangig vor anderen Operatoren ausgefhrt. Die Rangfolge der Operatoren ist in ActionScript genau festgelegt. Eine Multiplikation wird beispielsweise grundstzlich vor einer Addition ausgefhrt. Elemente in Klammern haben jedoch Vorrang vor Multiplikationen. Im folgenden Beispiel fhrt ActionScript die Multiplikation zuerst aus, da der Ausdruck keine Klammern enthlt:
summe = 2 + 4 * 3;

Das Ergebnis ist 14. Steht die Addition hingegen in Klammern, so fhrt ActionScript zuerst die Addition aus:
summe = (2 + 4) * 3;

Das Ergebnis ist 18. Wenn ein Ausdruck mehrere Operatoren enthlt, die hinsichtlich ihrer Rangfolge gleichwertig sind, wird die Reihenfolge ihrer Ausfhrung durch ihre Assoziativitt bestimmt. Hierbei wird zwischen Linksassoziativitt (in Links-Rechts-Richtung) und Rechtsassoziativitt (in RechtsLinks-Richtung) unterschieden. Der Multiplikationsoperator ist beispielsweise linksassoziativ. Daher sind die beiden folgenden Anweisungen austauschbar:
summe = 2 * 3 * 4; summe = (2 * 3) * 4;

Eine tabellarische bersicht ber die Operatoren, ihre Rangfolge und ihre Assoziativitt finden Sie in Anhang B, Vorrang und Assoziativitt von Operatoren, auf Seite 805. Numerische Operatoren Numerische Operatoren dienen zur Ausfhrung von Additionen, Subtraktionen, Multiplikationen, Divisionen und anderer arithmetischer Operationen. Der Inkrementoperator wird zumeist im Ausdruck i++ als Kurzform des ausfhrlicheren Ausdrucks i = i+1 verwendet und kann sowohl vor als auch nach einem Operanden stehen. Im folgenden Beispiel wird der Wert der Variable alter zuerst um eins erhht und anschlieend mit der Zahl 30 verglichen:
if (++alter >= 30)

Im folgenden Beispiel wird der Wert der Variable alter zuerst mit der Zahl 30 verglichen und anschlieend um eins erhht:
if (alter++ >= 30)

Eine bersicht ber die numerischen Operatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator
+ * / %

Ausgefhrte Operation Addition Multiplikation Division Modulo (Rest einer Division)

50

Kapitel 2: ActionScript-Grundlagen

Operator
++ --

Ausgefhrte Operation Subtraktion Inkrement Dekrement

Vergleichsoperatoren Vergleichsoperatoren dienen zum Vergleichen der Werte zweier Ausdrcke und geben einen Booleschen Wert (true oder false) zurck. Sie werden zumeist in Schleifen und bedingten Anweisungen verwendet. Im folgenden Beispiel werden zwei verschiedene SWF-Dateien geladen, je nachdem, ob die Variable punktzahl den Wert 100 oder einen anderen Wert aufweist:
if (punktzahl > 100){ loadMovieNum("gewinner.swf", 5); } else { loadMovieNum("verlierer.swf", 5); }

Eine bersicht ber die Vergleichsoperatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator
< > <= >=

Ausgefhrte Operation Kleiner als Grer als Kleiner oder gleich Grer oder gleich

String-Operatoren Wenn der Operator + auf Strings angewendet wird, verkettet er diese zu einer gemeinsamen Zeichenfolge. In der folgenden Anweisung beispielsweise werden die Strings "Herzlichen Glckwunsch, " und "Doris!" miteinander verkettet:
"Herzlichen Glckwunsch, " + "Doris!"

Als Ergebnis wird der String "Herzlichen Glckwunsch, Doris!" zurckgegeben. Wenn es sich nur bei einem der beiden Operanden des Operators + um einen String handelt, wird der andere Operand automatisch ebenfalls in eine Zeichenfolge umgewandelt. Wenn die Vergleichsoperatoren >, >=, < und <= auf Strings angewendet werden, vergleichen sie diese unter dem Gesichtspunkt der alphabetischen Reihenfolge. Dies geschieht allerdings nur, wenn es sich bei beiden Operanden um Strings handelt. Ist nur einer der beiden Operatoren eine Zeichenfolge, so wandelt ActionScript beide Operanden in Zahlen um und fhrt einen numerischen Vergleich durch.

Werte in Ausdrcken mit Operatoren manipulieren

51

Logische Operatoren Logische Operatoren dienen zum Vergleichen Boolescher Werte (true und false) und geben einen dritten Booleschen Wert zurck. Wenn beide Operanden beispielsweise den Wert true aufweisen, gibt der logische AND-Operator (&&) den Ergebniswert true zurck. Wenn mindestens einer der beiden Operanden den Wert true aufweist, gibt der logische OR-Operator (||) den Ergebniswert true zurck. Logische Operatoren werden oftmals in Verbindung mit Vergleichsoperatoren eingesetzt, um die Bedingung fr eine if-Aktion festzulegen. Im folgenden Skript wird die if-Aktion beispielsweise ausgefhrt, wenn beide Ausdrcke den Wert true aufweisen:
if (i > 10 && _framesloaded > 50){ play(); }

Eine bersicht ber die logischen Operatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator
&& || !

Ausgefhrte Operation Logisches AND Logisches OR Logisches NOT

Bitweise Operatoren Bitweise Operatoren wandeln Gleitkommazahlen intern in 32-Bit-Ganzzahlen um. Welche Rechenoperation jeweils ausgefhrt wird, hngt vom verwendeten Operator ab, in jedem Falle werden bei der Berechnung des Ergebniswertes jedoch die einzelnen Binrziffern (Bit) der 32-BitGanzzahl unabhngig voneinander ausgewertet. Eine bersicht ber die bitweisen Operatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator & | ^ ~ << >> >>> Ausgefhrte Operation Bitweises AND Bitweises OR Bitweises XOR Bitweises NOT Verschiebung nach links Verschiebung nach rechts Verschiebung nach rechts, auffllen mit 0

52

Kapitel 2: ActionScript-Grundlagen

Gleichheitsoperatoren Der Gleichheitsoperator (==) dient dazu, festzustellen, ob zwei Operanden gleichwertig oder identisch sind. Das Ergebnis dieses Vergleichs ist ein Boolescher Wert (true oder false). Wenn es sich bei den Operanden um Strings, Zahlen oder Boolesche Werte handelt, werden ihre Werte verglichen. Handelt es sich hingegen um Objekte oder Arrays, so werden sie per Verweis miteinander verglichen. Flschlicherweise wird hufig versucht, zwei Operanden mit dem Zuweisungsoperator auf ihre Gleichwertigkeit hin zu berprfen. Der folgende Code beispielsweise vergleicht x mit 2:
if (x == 2)

In diesem Beispiel wre der Ausdruck x = 2 fehl am Platze, da dieser die Operanden nicht miteinander vergleicht, sondern dazu dient, der Variablen x den Wert 2 zuzuweisen. Der Operator === (strikte Gleichheit) funktioniert hnlich wie der Gleichheitsoperator, fhrt jedoch keine Typumwandlung durch. Wenn zwei Operanden nicht denselben Typ aufweisen, gibt der strikte Gleichheitsoperator also den Ergebniswert false zurck. Der Operator !== (strikte Ungleichheit) funktioniert genau umgekehrt wie der strikte Gleichheitsoperator. Eine bersicht ber die Gleichheitsoperatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator
== === != !==

Ausgefhrte Operation Gleichheit Strikte Gleichheit Ungleichheit Strikte Ungleichheit

Zuweisungsoperatoren Der Zuweisungsoperator (=) dient dazu, einer Variablen wie im folgenden Beispiel dargestellt einen Wert zuzuweisen:
var password = "Sk8tEr";

Mit dem Zuweisungsoperator knnen auch Zuweisungen an mehrere Variablen in ein- und demselben Ausdruck erfolgen. Die folgende Anweisung beispielsweise weist den Wert von a den Variablen b, c und d zu:
a = b = c = d;

Auerdem haben Sie die Mglichkeit, mit Hilfe zusammengesetzter Operatoren mehrere Operationen in einem Ausdruck zusammenzufassen. Zusammengesetzte Operatoren fhren zunchst eine Operation mit beiden Operanden aus und weisen anschlieend den auf diese Weise ermittelten Wert dem ersten Operanden zu. Die beiden folgenden Anweisungen beispielsweise sind austauschbar:
x += 15; x = x + 15;

Werte in Ausdrcken mit Operatoren manipulieren

53

Der Zuweisungsoperator kann, wie im folgenden Beispiel dargestellt, auch inmitten eines Ausdrucks verwendet werden:
// Wenn der Wert von "geschmack" nicht "vanille" ist, Meldung ausgeben. if ((geschmack = getIceCreamFlavor()) != "vanille") { trace ("Die Geschmacksrichtung war " + geschmack + ", nicht Vanille."); }

Dieser Code entspricht dem etwas ausfhrlicheren Code im folgenden Beispiel:


geschmack = getIceCreamFlavor(); if (geschmack != "vanille") { trace ("Die Geschmacksrichtung war " + geschmack + ", nicht Vanille."); }

Eine bersicht ber die Zuweisungsoperatoren in ActionScript finden Sie in der folgenden Tabelle:
Operator
= += -= *= %= /= <<= >>= >>>= ^= |= &=

Ausgefhrte Operation Zuweisung Addition und Zuweisung Subtraktion und Zuweisung Multiplikation und Zuweisung Modulo und Zuweisung Division und Zuweisung Bitweises Verschiebung nach links und Zuweisung Bitweises Verschiebung nach rechts und Zuweisung Verschiebung nach rechts, auffllen mit 0 und Zuweisung Bitweises XOR und Zuweisung Bitweises OR und Zuweisung Bitweises AND und Zuweisung

Punkt- und Array-Zugriffsoperatoren Der Punkt-Operator (.) und der Array-Zugriffsoperator ([]) dienen dazu, auf die integrierten oder benutzerdefinierten Eigenschaften eines ActionScript-Objekts, einschlielich der Eigenschaften eines Movieclips, zuzugreifen. Der Punkt-Operator steht zwischen dem Namen eines Objekts auf der linken und dem Namen einer Eigenschaft oder einer Variablen auf der rechten Seite. Bei dem Eigenschaften- oder Variablennamen darf es sich weder um einen String noch um eine Variable handeln, die zu einem String ausgewertet wird. Als Namen sind in diesem Fall nur Bezeichner zulssig. In den folgenden Beispielen wird der Punkt-Operator verwendet:
year.month = "June"; year.month.day = 9;

54

Kapitel 2: ActionScript-Grundlagen

Der Punkt-Operator und der Array-Zugriffsoperator erfllen dieselbe Funktion. Der Unterschied zwischen ihnen besteht darin, dass der Punkt-Operator als Eigenschaft einen Bezeichner erhlt, whrend der Array-Zugriffsoperator seinen Inhalt zu einem Namen auswertet und auf den Wert dieser benannten Eigenschaft zugreift. Die beiden folgenden Ausdrcke beispielsweise greifen auf dieselbe Variable velocity im Movieclip rocket zu:
rocket.velocity; rocket["velocity"];

Mit dem Array-Zugriffsoperator knnen Instanznamen und Variablen dynamisch eingestellt und abgerufen werden. Im folgenden Codebeispiel wird der vom Array-Zugriffsoperator ([]) umschlossene Ausdruck ausgewertet und der Ergebniswert als Name der Variablen verwendet, deren Wert aus dem Movieclip name abgerufen werden soll:
name["mc" + i]

Sie knnen zu diesem Zweck auch die im folgenden Beispiel dargestellte Funktion eval() verwenden:
eval("mc" + i)

Der Array-Zugriffsoperator kann auch auf der linken Seite einer Zuweisungsanweisung eingesetzt werden, um Instanz-, Variablen- und Objektnamen wie im folgenden Beispiel dargestellt dynamisch festzulegen:
name[index] = "Gerhard";

Durch Erstellen eines Arrays, bei dessen Elementen es sich wiederum um Arrays handelt, knnen Sie in ActionScript auch mehrdimensionale Arrays einrichten. Fr den Zugriff auf die Elemente eines mehrdimensionalen Arrays knnen Sie den Array-Zugriffsoperator wie im folgenden Beispiel dargestellt in sich selbst verschachteln:
var chessboard = new Array(); for (var i=0; i<8; i++) { chessboard.push(new Array(8)); } function getContentsOfSquare(row, column){ chessboard[row][column]; }

Sie knnen in Ihren Skripts berprfen, ob die [] Operatoren bereinstimmen. Weitere Informationen hierzu finden Sie unter Syntax und Interpunktion berprfen auf Seite 74.

Objektpfade angeben
Wenn Sie einen Movieclip oder eine geladene SWF-Datei mit Hilfe einer Aktion steuern mchten, mssen Sie dessen bzw. deren Namen und Adresse in Form eines so genannten Zielpfades angeben. In ActionScript wird ein Movieclip ber seinen Instanznamen angesprochen. Die folgende Anweisung beispielsweise stellt die Eigenschaft _alpha des Movieclips star auf 50 % ein:
star._alpha = 50; So weisen Sie einem Movieclip einen Instanznamen zu:

1 Whlen Sie den Movieclip auf der Bhne aus. 2 Geben Sie im Eigenschafteninspektor einen Instanznamen an.

Objektpfade angeben

55

So sprechen Sie eine geladene SWF-Datei an:

Verwenden Sie in einer Anweisung den Ausdruck _levelX, wobei X fr die Nummer der Stufe
steht, die Sie beim Laden der SWF-Datei in der Aktion loadMovie() angegeben haben. Der Zielpfad einer SWF-Datei, die in Stufe 5 geladen wurde, lautet beispielsweise _level5. Im folgenden Beispiel wird eine SWF-Datei in Stufe 5 geladen und ihre Sichtbarkeitseigenschaft auf false eingestellt:
onClipEvent(load) { loadMovieNum("meinFilm.swf", 5); } onClipEvent (enterFrame) { _level5._visible = false; } So geben Sie den Zielpfad einer SWF-Datei ein:

Klicken Sie im Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen) auf
die Schaltflche Zielpfad einfgen, und whlen Sie aus der angezeigten Liste einen Movieclip aus. Weitere Informationen zu Zielpfaden finden Sie unter Absolute und relative Zielpfade in der Hilfe Flash verwenden.

Integrierte Funktionen verwenden


Eine Funktion ist ein ActionScript-Codeblock, der in einer SWF-Datei nach Belieben wiederverwendet werden kann. Wenn Sie Werte als Parameter an eine Funktion bergeben, werden diese von ihr verarbeitet. Eine Funktion kann auch Werte zurckgeben. Flash verfgt ber integrierte (vordefinierte) Funktionen, mit deren Hilfe Sie auf bestimmte Informationen zugreifen und bestimmte Aufgaben ausfhren knnen, um beispielsweise die Versionsnummer des Flash Players zu ermitteln, in dem die SWF-Datei wiedergegeben wird (getVersion()). Funktionen, die zu einem Objekt gehren, werden als Methoden bezeichnet. Funktionen, die nicht zu einem Objekt gehren, werden als Top-Level-Funktionen bezeichnet und sind im Bedienfeld Aktionen unter der Kategorie Funktionen aufgefhrt. Jede Funktion weist bestimmte Merkmale auf, und manche Funktionen erfordern die bergabe bestimmter Werte. Wenn Sie einer Funktion mehr Werte bergeben, als sie bentigt, werden die berzhligen Werte ignoriert. Wenn Sie einen erforderlichen Parameter nicht bergeben, wird dem leeren Parameter der Datentypwert undefined zugewiesen, was beim Exportieren des Skripts zu Fehlern fhren kann. Es knnen nur diejenigen Funktionen aufgerufen werden, die sich in einem Bild befinden, das der Abspielkopf erreicht hat. Rufen Sie Funktionen einfach mit dem Funktionsnamen auf, und bergeben Sie die erforderlichen Parameter:
isNaN(someVar); getTimer(); eval("someVar");

Weitere Informationen zu den einzelnen Funktionen finden Sie im jeweiligen Eintrag unter Kapitel 12, ActionScript-Lexikon, auf Seite 229.

56

Kapitel 2: ActionScript-Grundlagen

Funktionen erstellen
Sie knnen Funktionen definieren, um eine Reihe von Anweisungen mit bergebenen Werten auszufhren. Eine Funktion kann auch Werte zurckgeben. Nachdem eine Funktion definiert wurde, kann sie von jeder beliebigen Zeitleiste aus aufgerufen werden, so auch aus der Zeitleiste einer geladenen SWF-Datei. Eine gut geschriebene Funktion kann als eine Art Blackbox angesehen werden. Wenn ihre Einund Ausgaben sowie ihr Zweck sorgfltig dokumentiert sind, kann der Benutzer sie auch ohne genaue Kenntnis ihrer internen Funktionsweise einsetzen. Funktionen definieren Funktionen sind ebenso wie Variablen mit der Zeitleiste des Movieclips verknpft, in dem sie definiert sind, und mssen unter Angabe eines Zielpfades aufgerufen werden. Wie im Falle einer Variablen knnen Sie mit dem Bezeichner _global eine globale Funktion deklarieren, die auch ohne Zielpfad in allen Zeitleisten zur Verfgung steht. Um eine globale Funktion zu definieren, stellen Sie dem Funktionsnamen wie im folgenden Beispiel den Bezeichner _global voran:
_global.meineFunktion = function (x) { return (x*2)+3; }

Zum Definieren einer Zeitleistenfunktion verwenden Sie die Aktion function, gefolgt vom Namen der Funktion, den ihr zu bergebenden Parametern und den ActionScript-Anweisungen, die ihre Funktionsweise festlegen. Das folgende Beispiel zeigt eine Funktion namens areOfCircle mit dem Parameter radius:
function areaOfCircle(radius) { return Math.PI * radius * radius; }

Sie knnen eine Funktion auch definieren, indem Sie ein Funktionsliteral erstellen, d. h. eine unbenannte Funktion, die nicht in einer Anweisung, sondern in einem Ausdruck deklariert wird. Mit Hilfe eines Funktionsliterals knnen Sie wie im folgenden Beispiel in nur einem Ausdruck eine Funktion definieren sowie ihren Wert zurckgeben und einer Variablen zuweisen.
area = (function() {return Math.PI * radius *radius;})(5);

Wenn Sie eine Funktion neu definieren, wird ihre ursprngliche Definition durch die neue Definition ersetzt. Parameter an eine Funktion bergeben Parameter geben die Elemente an, auf die der Code einer Funktion angewendet wird. (In diesem Handbuch sind die Begriffe Parameter und Argument austauschbar.) Die folgende Funktion beispielsweise erhlt die Parameter initialen und endstand:
function spielstandAusfuellen(initialen, endstand) { spielstand.anzeige = initialen; spielstand.punktzahl = endstand; }

Funktionen erstellen

57

Beim Aufrufen der Funktion mssen die erforderlichen Parameter an sie bergeben werden. Die Funktion ersetzt die Parameter in der Funktionsdefinition durch die bergebenen Werte. In diesem Beispiel ist spielstand der Instanzname eines Movieclips, bei anzeige und punktzahl handelt es sich um Texteingabefelder der Instanz. Der folgende Funktionsaufruf weist der Variablen display den Wert "JEB" und der Variablen score den Wert 45000 zu:
spielstandAusfuellen("JEB", 45000);

Der Parameter initialen der Funktion spielstandAusfuellen() existiert hnlich wie bei lokalen Variablen nur so lange die Funktion aktiv ist und verliert seine Gltigkeit, sobald die Funktion beendet wird. Wenn Sie bei einem Funktionsaufruf einen erforderlichen Parameter nicht eingeben, wird dieser mit dem Wert undefined bergeben. Wenn Sie in einem Funktionsaufruf zustzliche Parameter bergeben, die die Funktion laut Deklaration nicht bentigt, werden diese ignoriert. Variablen in einer Funktion verwenden Mit Hilfe lokaler Variablen knnen Sie Ihren Code strukturieren und so gestalten, dass seine Funktionsweise leicht nachvollziehbar ist. Die lokalen Variablen einer Funktion sind fr alle anderen Skripts der SWF-Datei unsichtbar. Sie gelten nur innerhalb des Codeabschnittes der Funktion, in der sie deklariert sind, und verlieren ihre Gltigkeit, sobald die Funktion beendet wird. Alle an eine Funktion bergebenen Parameter werden ebenfalls als lokale Variablen behandelt. Sie knnen in einer Funktion auch globale und regulre Variablen verwenden. Wenn Sie globale oder regulre Variablen modifizieren, sollten Sie diese nderungen jedoch in Skriptkommentaren sorgfltig dokumentieren. Werte aus einer Funktion zurckgeben Mit Hilfe der Anweisung return knnen Sie Werte aus einer Funktion zurckgeben. Die Anweisung return beendet die Funktion und ersetzt sie durch die durch den Wert der Aktion return. Die folgenden Regeln bestimmen die Verwendung der return-Anweisung in Funktionen:

Wenn Sie einen anderen Rckgabetyp als void fr eine Funktion festlegen, mssen Sie eine
return-Anweisung

in die Funktion einschlieen.

Wenn Sie als Rckgabetyp void festlegen, sollten Sie keine return-Anweisung einschlieen. Wenn Sie keinen Rckgabetyp festlegen, ist der Einschluss einer return-Anweisung optional.
Wenn Sie keine Anweisung festlegen, wird ein leerer String zurckgegeben. Die folgende Funktion beispielsweise gibt das Quadrat des Parameters x wieder und legt fest, dass der zurckgegebene Wert eine Zahl sein muss:
function sqr(x):Number { return x * x; }

58

Kapitel 2: ActionScript-Grundlagen

Bestimmte Funktionen fhren eine Reihe von Aufgaben aus, ohne einen Wert zurckzugeben. Die folgende Funktion beispielsweise initialisiert mehrere globale Variablen:
function initialize() { boot_x = _global.boot._x; boot_y = _global.boot._y; pkw_x = _global.pkw._x; pkw_y = _global.pkw._y; }

Benutzerdefinierte Funktionen aufrufen Mit Hilfe eines Zielpfades knnen Sie eine Funktion in einer beliebigen Zeitleiste von einer beliebigen Zeitleiste aus aufrufen, so auch von der Zeitleiste einer geladenen SWF-Datei. Eine Funktion, die mit dem Bezeichner _global deklariert wurde, lsst sich auch ohne Angabe eines Zielpfades aufrufen. Um eine Funktion aufzurufen, geben Sie ggf. den Zielpfad zum Namen der Funktion ein, und bergeben Sie die erforderlichen Parameter in Klammern. Die Anweisung im folgenden Beispiel ruft die Funktion sqr() im Movieclip MathLib in der Hauptzeitleiste auf, bergibt ihr den Parameter 3 und speichert das Ergebnis in der Variablen temp:
var temp = _root.MathLib.sqr(3);

Im folgenden Beispiel wird die Funktion initialize(), die in der Hauptzeitleiste definiert wurde und keine Parameter erfordert, unter Angabe eines absoluten Pfades aufgerufen.
_root.initialize();

Im folgenden Beispiel wird die Funktion list(), die im Movieclip functionsClip definiert wurde, unter Angabe eines relativen Pfades aufgerufen:
_parent.functionsClip.list(6);

Funktionen erstellen

59

60

Kapitel 2: ActionScript-Grundlagen

KAPITEL 3 Skripts schreiben und debuggen

In Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 knnen Sie Skripts schreiben, die in Ihre FLA-Datei eingebettet oder extern auf Ihrem Computer gespeichert sind. (Wenn Sie ActionScript 2.0 Klassendateien schreiben, mssen Sie jede Klasse als externe Datei mit demselben Namen wie die jeweilige Klasse speichern.) Um eingebettete Skripts zu schreiben, hngen Sie die jeweilige Aktion im Bedienfeld Aktionen an eine Schaltflche oder einen Movieclip bzw. an ein Bild in der Zeitleiste (siehe Ausfhrung von ActionScript steuern auf Seite 61). Sie knnen externe Skriptdateien mit einem beliebigen Texteditor oder CodeEditor schreiben. In Flash Professional knnen Sie auerdem das integrierte Skriptfenster verwenden. Weitere Informationen finden Sie unter Bedienfeld Aktionen und Skriptfenster verwenden auf Seite 64. Auerdem knnen Sie mit dem ActionScript-Editor Ihr Skript auf Syntaxfehler prfen, Code automatisch formatieren sowie Codehinweise mit Informationen zur Syntax von Anweisungen anzeigen. Darber hinaus haben Sie die Mglichkeit, automatisch fehlende Klammern in Ihrem Code ausfindig zu machen. Weitere Informationen finden Sie unter ActionScript-Editor verwenden auf Seite 67. Sie sollten jedes Dokument whrend der Bearbeitung regelmig testen, um sicherzustellen, dass die Wiedergabe flssig und wie erwartet erfolgt. Mit dem Bandbreiten-Profiler knnen Sie die Darstellung Ihrer Dokumente bei unterschiedlichen Verbindungsraten simulieren (siehe Downloadleistung eines Dokuments testen in der Hilfe Flash verwenden). Sie knnen Ihre Skripts mit einer speziellen Debugger-Version des Flash Players testen, die Sie bei der Fehlerbehebung untersttzt. Ein gut durchdachter Ansatz beim Programmieren in ActionScript erleichtert das Debuggen in Skripts, falls es zu unerwartetem Verhalten kommen sollte. Weitere Informationen finden Sie unter Skripts debuggen auf Seite 75.

Ausfhrung von ActionScript steuern


Nachdem Sie ein Skript geschrieben haben, weisen Sie es im Bedienfeld Aktionen einem Bild in einer Zeitleiste bzw. einer Schaltflche oder einem Movieclip auf der Bhne zu. Skripts, die einem Bild zugewiesen sind, werden ausgefhrt, sobald der Abspielkopf dieses Bild erreicht. Ein Skript, das dem ersten Bild einer SWF-Datei zugewiesen ist, kann sich hierbei allerdings anders verhalten als ein Skript in einem der nachfolgenden Bilder, da die in diesem Bild enthaltenen Objekte whrend des Herunterladens in den Flash Player auf der Bhne dargestellt werden, das Bild also schrittweise wiedergegeben wird und sich dies auf den Zeitpunkt der Aktionsaufrufe auswirkt. Alle weiteren Bilder hingegen werden vollstndig wiedergegeben, sobald smtliche in ihnen enthaltenen Objekte verfgbar sind.

61

Skripts, die einem Movieclip oder einer Schaltflche zugewiesen sind, werden ausgefhrt, wenn ein bestimmtes Ereignis eintritt. Ein Ereignis wird in der SWF-Datei ausgelst, wenn der Benutzer z. B. eine Mausaktion ausfhrt oder eine Taste drckt oder wenn ein Movieclip geladen wird. Mit Hilfe von ActionScript knnen Sie feststellen, wann ein solches Ereignis eintritt, und ein entsprechendes Skript ausfhren. Weitere Informationen finden Sie in Kapitel 4, Ereignisse verarbeiten, auf Seite 91. Um eine Aktion auszufhren, wenn eine bestimmte Bedingung erfllt ist, oder um eine Aktion zu wiederholen, knnen Sie die Anweisungen if, else, else if, for, while, do while, for..in oder switch verwenden, die spter in diesem Abschnitt kurz beschrieben werden. Bedingungen prfen Anweisungen, die prfen, ob eine bestimmte Bedingung erfllt ist (true) oder nicht (false), beginnen mit dem Schlsselwort if. Wenn die Bedingung erfllt ist, wird die auf die Bedingung folgende Anweisung ausgefhrt, Andernfalls berspringt ActionScript die bedingte Anweisung und fhrt mit der ersten auf den betreffenden Codeblock folgenden Anweisung fort. Um eine mglichst hohe Leistung Ihres Codes zu erzielen, sollten Sie die Bedingungen, die mit der grten Wahrscheinlichkeit erfllt sein drften, als erste berprfen. Die folgenden Anweisungen berprfen drei Bedingungen. Mit dem Schlsselwort else if werden alternative Bedingungen angegeben, die berprft werden, wenn die vorhergehenden Bedingungen nicht erfllt (false) sind.
if (kennwort == null || email == null) { gotoAndStop("reject"); } else if (kennwort == benutzerID){ gotoAndPlay("startMovie"); }

Wenn Sie eine oder mehrere Bedingungen berprfen mchten, knnen Sie die switchAnweisung anstelle mehrerer else if-Anweisungen verwenden. Aktionen wiederholen ActionScript kann eine Aktion so lange wiederholen, bis eine bestimmte Anzahl von Durchlufen erreicht oder eine bestimmte Bedingung erfllt bzw. nicht mehr erfllt ist. Dies geschieht mit Hilfe von Schleifen, die durch die Aktionen while, do..while, for und for..in erzeugt werden knnen.
So wiederholen Sie eine Aktion, bis eine bestimmte Bedingung nicht mehr erfllt ist:

Verwenden Sie eine while-Anweisung.


In einer while-Schleife wird ein Ausdruck ausgewertet und der Code im Schleifenabschnitt ausgefhrt, wenn die Auswertung den Ergebniswert true zurckgibt. Nachdem alle Anweisungen im Schleifenabschnitt ausgefhrt wurden, wird der Ausdruck erneut ausgewertet. Im folgenden Beispiel wird die Schleife viermal ausgefhrt:
i = 4; while (var i > 0) { mein_mc.duplicateMovieClip("neuerMC" + i, i ); i--; }

62

Kapitel 3: Skripts schreiben und debuggen

Mit einer do..while-Anweisung knnen Sie eine Schleife erzeugen, die hnlich funktioniert wie die while-Schleife. In einer do...while-Schleife wird der Ausdruck am Ende des Codeblocks ausgewertet, sodass sie mindestens ein Mal ausgefhrt wird. Beispiel:
i = 4; do { mein_mc.duplicateMovieClip("neuerMC" +i, i ); i--; } while (var i > 0); So wiederholen Sie eine Aktion mit einem integrierten Zhler:

Verwenden Sie eine for-Anweisung.


In den meisten Schleifen wird irgendeine Art von Zhler verwendet, um die Anzahl der Wiederholungen zu steuern. Jede Ausfhrung einer Schleife wird als Iteration bezeichnet. Sie knnen eine Variable deklarieren und eine Anweisung schreiben, die ihren Wert bei jeder Ausfhrung der Schleife erhht oder herabsetzt. In der Aktion for sind sowohl der Zhler als auch die Anweisung, die den Wert dieses Zhlers mit jeder Iteration erhht, enthalten. Im folgenden Beispiel wird der ursprngliche Ausdruck (var i = 4) als erster Ausdruck vor der ersten Iteration ausgewertet. Der zweite Ausdruck (i > 0) enthlt die Bedingung, die vor der jeder Ausfhrung der Schleife geprft wird. Der dritte Ausdruck (i--) wird nach jeder Ausfhrung der Schleife ausgewertet.
for (var i = 4; i > 0; i--){ meinMC.duplicateMovieClip("neuerMC" + i, i + 10); } So durchlaufen Sie die Unterobjekte eines Movieclips oder Objekts:

Verwenden Sie eine for..in-Anweisung.


Bei Unterobjekten kann es sich um andere Movieclips, Funktionen, Objekte oder Variablen handeln. Im folgenden Beispiel wird die Anweisung trace zum Ausgeben der Ergebnisse im Bedienfeld Ausgabe verwendet:
meinObjekt = { name:'Joe', alter:25, ort:'San Francisco' }; for (propertyName in meinObjekt) { trace("meinObjekt hat die Eigenschaft: " + propertyName + ", mit dem Wert: " + meinObjekt[propertyName]); }

Das Ergebnis im Bedienfeld Ausgabe sieht folgendermaen aus:


meinObjekt hat die Eigenschaft: name, mit dem Wert: Joe meinObjekt hat die Eigenschaft: alter, mit dem Wert: 25 meinObjekt hat die Eigenschaft: ort, mit dem Wert: San Francisco

Unter Umstnden kann es sinnvoll sein, ein Skript nur auf Unterobjekte eines bestimmten Typs anzuwenden, zum Beispiel nur auf Movieclips. Dies lsst sich mit Hilfe einer for..in-Schleife in Verbindung mit dem Operator typeof realisieren.
for (name in meinMovieClip) { if (typeof (meinMovieclip[name]) == "movieclip") { trace("Ich habe einen untergeordneten Movieclip namens " + name); } }

Weitere Informationen zu den einzelnen Aktionen finden Sie in den jeweiligen Eintrgen unter Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Ausfhrung von ActionScript steuern

63

Bedienfeld Aktionen und Skriptfenster verwenden


Sie knnen Flash-Skripts in Ihre FLA-Datei einbetten oder sie als externe Dateien speichern. Es wird empfohlen, so viel ActionScript-Code wie mglich in externen Dateien zu speichern. Auf diese Weise kann Code in mehreren FLA-Dateien erneut verwendet werden. In Ihrer FLA-Datei knnen Sie anschlieend ein Skript erstellen, das Anweisungen vom Typ #include verwendet, um auf den extern gespeicherten Code zuzugreifen. Mit dem .as-Suffix knnen Sie Ihre Skripts als ActionScript (AS)-Dateien identifizieren. (Wenn Sie benutzerdefinierte Klassendateien schreiben, mssen Sie sie als externe AS-Dateien speichern.)
Hinweis: Wenn Sie FLA-Dateien verffentlichen, exportieren, testen oder debuggen, wird der ActionScript-Code in externen Dateien in eine SWF-Datei kompiliert. Wenn Sie also eine externe Datei ndern, mssen Sie die Datei speichern und alle FLA-Dateien, die sie verwenden, neu kompilieren.

Wenn Sie ActionScript-Code in Ihre FLA-Datei einbetten, knnen Sie den Code mit Bildern und Objekten verknpfen. Eingebetteter ActionScript-Code sollte nach Mglichkeit mit dem ersten Bild der Zeitleiste verknpft werden. Auf diese Weise mssen Sie die FLA-Datei nicht nach Ihrem Code durchsuchen, da er sich zentral an einer Stelle befindet. Erstellen Sie die Ebene Aktionen, und schreiben Sie den Code auf diese Ebene. Selbst wenn Sie Code in andere Bilder schreiben oder ihn mit Objekten verknpfen, mssen Sie so nur auf einer Ebene nach dem Code suchen. Um Skripts zu erstellen, die ein Teil Ihres Dokuments sind, geben Sie ActionScript-Code direkt in das Bedienfeld Aktionen ein. Externe Skripts knnen Sie mit Ihrem bevorzugten Texteditor bzw. in Flash Professional mit dem Skriptfenster erstellen. Beim Bedienfeld Aktionen bzw. Skriptfenster verwenden Sie denselben ActionScript-Editor und geben Ihren Code in das Skriptfenster auf der rechten Bedienfeld- bzw. Fensterseite ein. Zur Reduktion der Eingabemenge knnen Sie Aktionen auch aus der Werkzeugleiste fr Aktionen auswhlen und auf das Skriptfenster ziehen.
So rufen Sie das Bedienfeld Aktionen auf:

Whlen Sie Fenster > Entwicklungs-Bedienfelder > Aktionen. Drcken Sie die Funktionstaste <F9>.
(Nur in Flash Professional) Fhren Sie zum Anzeigen des Skriptfensters einen der folgenden Schritte aus:

Um ein neues Skript zu schreiben, whlen Sie Datei > Neu > ActionScript-Datei. Um ein vorhandenes Skript zu ffnen, whlen Sie Datei > ffnen, und ffnen Sie eine
vorhandene ActionScript-Datei (.as). Um ein geffnetes Skript zu bearbeiten, klicken Sie auf die Dokument-Registerkarte, die den Skriptnamen enthlt. (Dokument-Registerkarten werden nur unter Microsoft Windows untersttzt.)

64

Kapitel 3: Skripts schreiben und debuggen

Informationen ber die ActionScript Editor-Umgebung Die Umgebung des ActionScript-Editors besteht aus zwei Bereichen. Rechts befindet sich das Skriptfenster, d. h. der Bereich, in den Sie den Code eingeben. Links befindet sich die Werkzeugleiste fr Aktionen, die einen Eintrag fr jedes Element der ActionScript-Sprache enthlt. In der Werkzeugleiste fr Aktionen im Bedienfeld Aktionen befindet sich auerdem ein SkriptNavigator zur visuellen Darstellung der Struktur Ihrer FLA-Datei. Hier knnen Sie durch Ihre FLA-Datei navigieren, um nach ActionScript-Code zu suchen. Wenn Sie auf einen Eintrag im Skript-Navigator klicken, wird das mit dem Eintrag verknpfte Skript im Skriptfenster angezeigt, und der Abspielkopf wird zur der Position in der Zeitleiste verschoben. Wenn Sie auf einen Eintrag im Skript-Navigator doppelklicken, wird das Skript festgesetzt (siehe Skripts in einer FLA-Datei verwalten auf Seite 66).
Werkzeugleiste fr Aktionen Skript-Navigator* Popupmen

* nur Bedienfeld Aktionen

Bedienfeld Aktionen und Skriptfenster verwenden

65

Oberhalb des Skriptfensters befinden sich auerdem mehrere Schaltflchen:


Zielpfad einfgen* Elemente zu Skripts hinzufgen Suchen Ersetzen Syntax berprfen Auto-Format Codehinweis zeigen Referenz Debug-Optionen* Popupmen Ansichtsoptionen

* nur Bedienfeld Aktionen

Im Skriptfenster knnen Sie Aktionen bearbeiten, Parameter fr Aktionen eingeben oder Aktionen lschen. Darber hinaus knnen Sie auch auf eine Option in der Werkzeugleiste Aktionen oder auf die Schaltflche Hinzufgen (+) ber dem Skriptfenster doppelklicken, um Aktionen im Skriptfenster hinzuzufgen. Skripts in einer FLA-Datei verwalten Wenn Sie den gesamten Code in einer FLA-Datei nicht zentral an einer Stelle einfgen, knnen Sie im Bedienfeld Aktionen mehrere Skripts vorne anzeigen (fixieren), um leichter zwischen ihnen wechseln zu knnen. In der folgenden Abbildung befindet sich das Skript, das mit der aktuellen Position in der Zeitleiste verknpft ist, in Bild 1 der Ebene Cleanup. (Die Registerkarte ganz links folgt immer der aktuellen Position in der Zeitleiste.) Das Skript wird ebenfalls vorne angezeigt (es wird als Registerkarte ganz rechts angezeigt). Zwei weitere Skripts sind ebenfalls fixiert; das eine in Bild 1 und das andere in Bild 15 der Ebene Intro. Sie knnen zwischen den fixierten Skripts hin und her wechseln, indem Sie entweder auf die Registerkarten klicken oder Tastaturbefehle verwenden. Dadurch ndert sich nicht Ihre aktuelle Position in der Zeitleiste.

Tipp: ndert sich der im Skriptfenster angezeigte Inhalt nicht mit der Position, die Sie auf der Zeitleiste whlen, dann zeigt das Skriptfenster mglicherweise ein fixiertes Skript. Klicken Sie auf die Registerkarte unten links im Skriptfenster, um das ActionScript anzuzeigen, das mit Ihrer Position auf der Zeitleiste verknpft ist. So zeigen Sie ein Skript vorne an:

1 Setzen Sie den Mauszeiger in die Zeitleiste, sodass das Skript in einer Registerkarte unten links

im Skriptfenster des Bedienfelds Aktionen angezeigt wird.


2 Fhren Sie einen der folgenden Schritte aus:

Klicken Sie auf das Pinwandnadel-Symbol rechts von der Registerkarte. (Wenn die Pinwandnadel so wie das Symbol ganz links in der folgenden Abbildung aussieht, wird das Skript bereits vorne angezeigt; wenn Sie auf das Symbol klicken, wird die Fixierung aufgelst.) Klicken Sie mit der rechten Maustaste (Windows) bzw. mit gedrckter Befehlstaste (Macintosh) auf die Registerkarte, und whlen Sie Skript immer vorne. Whlen Sie aus dem Popupmen Optionen den Befehl Skript immer vorne (oben rechts im Bedienfeld).

66

Kapitel 3: Skripts schreiben und debuggen

So zeigen Sie ein oder mehrere Skripts nicht immer vorne an:

Fhren Sie einen der folgenden Schritte aus:

Wenn ein fixiertes Skript auf einer Registerkarte unten links im Skriptfenster des Bedienfelds Aktionen angezeigt wird, klicken Sie auf das Pinwandnadel-Symbol rechts von der Registerkarte. (Wenn die Pinwandnadel so wie das Symbol ganz links aussieht, wird das Skript bereits vorne angezeigt; wenn Sie auf das Symbol klicken, wird die Fixierung aufgelst.) Klicken Sie mit der rechten Maustaste (Windows) bzw. bei gedrckter Befehlstaste (Macintosh) auf eine Registerkarte, und whlen Sie Skript schlieen oder Alle Skripts schlieen. Whlen Sie aus dem Popupmen Optionen den Befehl Skript schlieen oder Alle Skripts schlieen (oben rechts im Bedienfeld).

Tastenkombinationen mit vorne angezeigten Skripts verwenden:

Fr die Arbeit mit vorne angezeigten Skripts knnen Sie folgende Tastenkombinationen
verwenden:
Aktion Skript fixieren Fixierung auflsen Fokus zur Registerkarte rechts verschieben Fokus zur Registerkarte links verschieben Windows Tastenkombination Strg-= (Ist-Gleich-Zeichen) Strg-- (Minus-Zeichen) Strg-Umschalt-. (Punkt) Strg-Umschalt-, (Komma) Macintosh Tastenkombination Befehl-= Befehl-Befehl-Umschalt-. Befehl-Umschalt-. Befehl-Umschalt-.

Fixierung aller Skripts auflsen Strg-Umschalt-- (Minus)

ActionScript-Editor verwenden
In Flash MX 2004 und Flash MX Professional 2004 stehen mehrere Werkzeuge zum Schreiben von syntaktisch korrektem Code und zum Festlegen der Voreinstellungen fr Codeformatierungen und andere Optionen zur Verfgung. Diese Funktionalitt wird in diesem Abschnitt beschrieben. Syntax hervorheben In ActionScript gelten, ebenso wie in jeder anderen Sprache, bestimmte Syntaxregeln, die festlegen, auf welche Weise die einzelnen Sprachelemente zu sinnvollen Aussagen zusammengefgt werden knnen. Eine fehlerhafte ActionScript-Syntax bewirkt, dass Ihr Skript nicht funktioniert. Beim Schreiben von Skripts in Flash MX 2004 und Flash MX Professional 2004 werden in der Werkzeugleiste fr Aktionen Befehle, die nicht von der adressierten Player-Version untersttzt werden, gelb dargestellt. Wenn beispielsweise die Flash Player SWF-Version auf Flash 6 eingestellt ist, werden in der Werkzeugleiste fr Aktionen ActionScript-Befehle gelb dargestellt, die nur von Flash Player 7 untersttzt werden. (Informationen zum Einstellen der Flash Player SWF-Version finden Sie unter Verffentlichungsoptionen fr das Flash SWF-Dateiformat einstellen

ActionScript-Editor verwenden

67

Sie knnen auerdem eine Voreinstellung festlegen, damit Flash Teile Ihrer Skripts beim Schreiben farblich kodiert. Auf diese Weise knnen Sie Tippfehler schneller ermitteln. Angenommen, Sie legen die Voreinstellung fr die Syntaxfarbcodierung so fest, dass Schlsselwrter dunkelgrn dargestellt werden. Wenn Sie beim Schreiben des Codes var eingeben, wird das Wort var grn dargestellt. Wenn Sie hingegen unbeabsichtigt vae schreiben, bleibt das Wort vae schwarz. Hierdurch knnen Sie sofort Ihren Tippfehler erkennen.
Um Voreinstellungen fr die Syntaxfarbcodierung beim Schreiben festzulegen, fhren Sie einen der folgenden Schritte aus:

Whlen Sie Bearbeiten > Voreinstellungen, und whlen Sie auf der Registerkarte ActionScript
die Einstellung Syntaxfarbcodierungen aus. Whlen Sie in der rechten oberen Ecke des Bedienfelds Aktionen aus dem Popupmen Optionen die Option Voreinstellungen, und whlen Sie auf der Registerkarte ActionScript die Einstellung Syntaxfarbcodierung aus.

Code zum Auslsen von Codehinweisen schreiben Wenn Sie im ActionScript-Editor arbeiten (entweder im Bedienfeld Aktionen oder im Skriptfenster), kann Flash die von Ihnen eingegebene Aktion ermitteln und einen entsprechenden Codehinweis anzeigen, d. h. eine QuickInfo mit der vollstndigen Syntax fr eine Aktion oder ein Popupmen mit einer Auflistung mglicher Methoden- oder Eigenschaftennamen. Codehinweise werden fr Parameter, Eigenschaften und Ereignisse angezeigt, wenn Sie Ihre Objekte strikt typisieren oder so benennen, dass der ActionScript-Editor die anzuzeigenden Codehinweise ermitteln kann. Dies wird im weiteren Verlauf dieses Abschnitts genauer beschrieben. Informationen zum Verwenden von angezeigten Codehinweisen finden Sie unter Codehinweise verwenden auf Seite 70.
Hinweis: Die Anzeige von Codehinweisen ist fr native Klassen automatisch aktiviert, fr die Sie keine Klassenobjekte erstellen und benennen mssen, wie z. B. Math, Key, Mouse usw.

Objekte zum Auslsen von Codehinweisen strikt typisieren In ActionScript 2.0 knnen Sie Variablen strikt typisieren, die auf einer integrierten Klasse basieren, wie z. B. Button, Array usw. Hierdurch zeigt der ActionScript-Editor Codehinweise fr die Variable an. Angenommen, Sie geben Folgendes ein:
var names:Array = new Array(); names.

Sobald Sie den Punkt (.) eingeben, zeigt Flash eine Liste von Methoden und Eigenschaften an, die fr Array-Objekte verfgbar sind, da Sie die Variable als Array deklariert haben. Weitere Informationen zur Datentypisierung finden Sie unter Strikte Typisierung auf Seite 42. Informationen zum Verwenden von angezeigten Codehinweisen finden Sie unter Codehinweise verwenden auf Seite 70.

68

Kapitel 3: Skripts schreiben und debuggen

Suffixe zum Auslsen von Codehinweisen verwenden Wenn Sie ActionScript 1 verwenden bzw. Codehinweise fr Objekte anzeigen mchten, die Sie ohne strikte Typisierung erstellen (siehe Objekte zum Auslsen von Codehinweisen strikt typisieren auf Seite 68), mssen Sie jedem Objektnamen beim Erstellen ein spezielles Suffix hinzufgen. Die Suffixe, die beispielsweise Codehinweise fr die Array-Klasse und die CameraKlasse auslsen, sind _array bzw. _cam. Geben Sie beispielsweise folgenden Code ein:
var mein_array = new Array(); var meine_cam = Camera.get();

Wenn Sie anschlieend einen der folgenden Variablennamen gefolgt von einem Punkt eingeben, werden Codehinweise fr das Array- bzw. das Camera-Objekt angezeigt.
mein_array. meine_cam.

Whlen Sie fr Objekte, die auf der Bhne angezeigt werden, das Suffix im Eigenschafteninspektor im Textfeld Instanzname. Um beispielsweise Codehinweise fr MovieClip-Objekte anzuzeigen, weisen Sie im Eigenschafteninspektor Instanznamen mit dem Suffix _mc allen MovieClip-Objekten zu. Wenn Sie spter den Instanznamen gefolgt von einem Punkt eingeben, werden Codehinweise angezeigt. Obwohl Suffixe nicht zum Auslsen von Codehinweisen bei der strikten Typisierung von Objekten erforderlich sind, empfiehlt es sich, Suffixe konsistent zu verwenden, damit Sie und andere Benutzer eine bessere bersicht ber Ihre Skripts erhalten. In der folgenden Tabelle sind die Suffixe zur Untersttzung automatischer Codehinweise aufgelistet.
Objekttyp Array Button Camera Color ContextMenu ContextMenuItem Date Error LoadVars LocalConnection Microphone MovieClip MovieClipLoader PrintJob NetConnection NetStream Variablensuffix _array _btn _cam _color _cm _cmi _date _err _lv _lc _mic _mc _mcl _pj _nc _ns

ActionScript-Editor verwenden

69

Objekttyp SharedObject Sound String TextField TextFormat Video XML XMLNode XMLSocket

Variablensuffix _so _sound _str _txt _fmt _video _xml _xmlnode _xmlsocket

Informationen zum Verwenden von angezeigten Codehinweisen finden Sie unter Codehinweise verwenden auf Seite 70. Kommentare zum Auslsen von Codehinweisen verwenden Sie knnen die Klasse eines Objekts fr die Anzeige der Codehinweise auch mit Hilfe von ActionScript-Kommentaren angeben. Der folgende Code teilt ActionScript beispielsweise mit, dass die Instanz theObject zur Object-Klasse usw. gehrt. Wenn Sie nach diesen Kommentaren beispielsweise mc gefolgt von einem Punkt eingeben, zeigt ein Codehinweis die Liste der MovieClip-Methoden und -Eigenschaften an. Wenn Sie theArray gefolgt von einem Punkt eingeben, zeigt ein Codehinweis die Liste der Array-Methoden und -Eigenschaften an usw.
// Object theObject; // Array theArray; // MovieClip mc;

Anstatt dieses Verfahrens werden von Macromedia jedoch die strikte Typisierung (siehe Objekte zum Auslsen von Codehinweisen strikt typisieren auf Seite 68) oder Suffixe (siehe Suffixe zum Auslsen von Codehinweisen verwenden auf Seite 69) empfohlen, da bei diesen Techniken Codehinweise automatisch aktiviert werden und Ihr Code verstndlicher wird. Codehinweise verwenden Standardmig sind die Codehinweise aktiviert. Sie haben jedoch die Mglichkeit, die Codehinweise in den Voreinstellungen zu deaktivieren oder festzulegen, wie rasch sie eingeblendet werden. Wenn Codehinweise in den Voreinstellungen deaktiviert werden, knnen Sie trotzdem einen Codehinweis fr einen bestimmten Befehl anzeigen.
Um die Einstellungen fr automatische Codehinweise festzulegen, fhren Sie einen der folgenden Schritte aus:

Whlen Sie Bearbeiten > Voreinstellungen, und aktivieren bzw. deaktivieren Sie anschlieend
auf der Registerkarte ActionScript die Option Codehinweise.

Whlen Sie in der rechten oberen Ecke des Bedienfelds Aktionen aus dem Popupmen
Optionen die Option Voreinstellungen aus, und aktivieren bzw. deaktivieren Sie auf der Registerkarte ActionScript die Option Codehinweise.

70

Kapitel 3: Skripts schreiben und debuggen

Wenn Sie die Codehinweise aktivieren, knnen Sie auch eine Verzgerung in Sekunden vor der Anzeige der Codehinweise angeben. Beispielsweise bevorzugen unerfahrene Benutzer von ActionScript mglicherweise keine Verzgerung, damit Codehinweise immer sofort angezeigt werden. Fortgeschrittene Benutzer, die im Allgemeinen wissen, was sie eingeben mssen, und lediglich Hinweise zu neuen Sprachelementen bentigen, knnen eine Verzgerung eingeben, damit Codehinweise nur bei Bedarf angezeigt werden.
So arbeiten Sie mit Codehinweisen in Form einer QuickInfo:

1 Geben Sie nach Elementen, fr die Klammern erforderlich sind, eine ffnende runde Klammer

[(] ein, z. B. Methodennamen, Befehle wie if oder do while usw. Der Codehinweis wird eingeblendet.

Hinweis: Wenn ein Codehinweis nicht angezeigt wird, prfen Sie, ob Sie die Codehinweise auf der Registerkarte ActionScript aktiviert haben. Wenn Codehinweise fr Variablen oder Objekte angezeigt werden sollen, die Sie erstellt haben, prfen Sie, ob Sie die Variablen oder Objekte richtig benannt (siehe Suffixe zum Auslsen von Codehinweisen verwenden auf Seite 69) bzw. die Variablen oder Objekte strikt typisiert haben (siehe Objekte zum Auslsen von Codehinweisen strikt typisieren auf Seite 68).

2 Geben Sie einen Parameterwert ein. Wenn Sie mehrere Parameter bergeben mchten, geben

Sie die entsprechenden Werte in Form einer Liste mit Kommas als Trennzeichen ein. Bei berladenen Befehlen wie gotoAndPlay() oder for (d. h. Funktionen oder Methoden, die mit unterschiedlichen Parametergruppen aufgerufen werden knnen) wird eine Auswahl der entsprechenden Parameter angezeigt. Klicken Sie zum Auswhlen des Parameters auf die kleinen Pfeilschaltflchen, oder drcken Sie <Strg>+<Nach-links> und <Strg>+<Nach-rechts>.

3 Fhren Sie einen der folgenden Schritte aus, um den Codehinweis auszublenden:

Geben Sie eine rechte runde Klammer [)] ein. Klicken Sie auf eine Stelle auerhalb der Anweisung. Drcken Sie die Taste <Esc>.

ActionScript-Editor verwenden

71

So arbeiten Sie mit Codehinweisen in Form eines Popupmens:

1 Geben Sie nach dem Variablen- oder Objektnamen einen Punkt ein.

Das Codehinweis-Men wird eingeblendet.

Hinweis: Wenn ein Codehinweis nicht angezeigt wird, prfen Sie, ob Sie die Codehinweise auf der Registerkarte ActionScript aktiviert haben. Wenn Codehinweise fr Variablen oder Objekte angezeigt werden sollen, die Sie erstellt haben, prfen Sie, ob Sie die Variablen oder Objekte richtig benannt (siehe Suffixe zum Auslsen von Codehinweisen verwenden auf Seite 69) bzw. die Variablen oder Objekte strikt typisiert haben (siehe Objekte zum Auslsen von Codehinweisen strikt typisieren auf Seite 68).

2 Bewegen Sie die Markierung mit Hilfe der Pfeiltasten auf den gewnschten Codehinweis. 3 Drcken Sie die Eingabe- oder Tab-Taste, um einen Listeneintrag auszuwhlen, oder

doppelklicken Sie auf den gewnschten Eintrag. 4 Fhren Sie einen der folgenden Schritte aus, um den Codehinweis auszublenden: Whlen Sie in der Menliste einen Eintrag aus. Klicken Sie auf eine Stelle auerhalb der Anweisung. Geben Sie eine rechte runde Klammer [)] ein (sofern Sie die Klammer in Schritt 1 geffnet haben.) Drcken Sie die Taste <Esc>.
So zeigen Sie Codehinweise manuell an:

1 Klicken Sie auf eine Stelle im Code, an der die Codehinweise angezeigt werden knnen. Hier

einige Beispiele fr derartige Situationen: Nach dem auf eine Anweisung bzw. einen Befehl folgenden Punkt, wo eine Eigenschaft oder Methode eingegeben werden muss Zwischen den Klammern in einem Methodennamen 2 Fhren Sie einen der folgenden Schritte aus: Klicken Sie oberhalb des Skriptfensters auf die Schaltflche Codehinweis zeigen. Halten Sie die Taste <Strg> (Windows) bzw. die Befehlstaste (Macintosh) gedrckt, und bettigen Sie die Leertaste. Im Bedienfeld Aktionen ffnen Sie das Popupmen (auf der rechten Seite der Titelleiste), und whlen Sie die Option Codehinweis zeigen.

72

Kapitel 3: Skripts schreiben und debuggen

Escape-Tastenkombinationen verwenden Sie knnen in Skripts viele Elemente mit Hilfe von Tastenkombinationen einfgen. Drcken Sie hierzu die Taste <Esc> gefolgt von zwei weiteren Tasten. (Diese Tastenkombinationen unterscheiden sich von den Tastaturkurzbefehlen, die bestimmte Menbefehle aufrufen.) Wenn Sie beispielsweise im Skriptfenster die Tastenkombination <Esc>+<d>+<o> drcken, wird der folgende Code in Ihr Skript gestellt, und der Cursor wird direkt hinter dem Wort while platziert, damit Sie die Bedingung eingeben knnen:
do { } while ();

Wenn Sie die Tastenkombination <Esc>+<c>+<h> drcken, wird der folgende Code in Ihr Skript gestellt, und der Cursor wird zwischen den Klammern platziert, damit Sie die Bedingung eingeben knnen:
catch () { }

Sie knnen die verfgbaren Escape-Tastenkombinationen fr Befehle im Bedienfeld Aktionen neben den Elementen anzeigen, wenn Sie lernen oder daran erinnert werden mchten, welche Befehle verfgbar sind.

So blenden Sie Escape-Tastenkombinationen ein und aus:

Aktivieren oder deaktivieren Sie im Popupmen Ansichtsoptionen die Option


Esc-Tastenkombinationen anzeigen.

ActionScript-Editor verwenden

73

Syntax und Interpunktion berprfen Um zu gewhrleisten, dass der von Ihnen geschriebene Code ordnungsgem ausgefhrt wird, mssen Sie die Datei verffentlichen oder testen. Sie knnen aber auch eine Schnellprfung Ihres ActionScript-Codes durchfhren, ohne die FLA-Datei zu schlieen. Syntaxfehler werden im Bedienfeld Ausgabe aufgelistet. (Wenn Sie die Syntax prfen, wird nur das aktuelle Skript geprft; andere Skripts, die sich in der FLA-Datei befinden knnen, werden nicht geprft.) Auerdem knnen Sie prfen, ob runde, geschweifte oder eckige Klammern (ArrayZugriffsoperatoren) um einen Codeblock fehlen.
So fhren Sie eine Syntaxprfung durch:

Klicken Sie oberhalb des Skriptfensters auf die Schaltflche Syntax berprfen. Blenden Sie in der rechten oberen Ecke des Bedienfelds Aktionen das Popupmen ein, und
whlen Sie Syntax berprfen. Drcken Sie <Strg>+<T> (Windows) bzw. <Befehl>+<T> (Macintosh).

So suchen Sie fehlende Klammern:

1 Klicken Sie auf einen Skriptabschnitt, der geschweifte Klammern {}, Array-Zugriffsoperatoren
[]

oder runde Klammern () enthlt.

2 Drcken Sie <Strg>+<'> (Windows) bzw. <Befehl>+<'> (Macintosh), um den Text zwischen

den runden, eckigen oder geschweiften Klammern hervorzuheben. Die Hervorhebung ermglicht Ihnen, auf einen Blick festzustellen, ob Sie eine geffnete Klammer ordnungsgem wieder geschlossen haben. Code formatieren Um zu bestimmen, ob Ihr Code automatisch oder manuell formatiert und eingerckt wird, knnen Sie entsprechende Einstellungen festlegen. Sie knnen auerdem auswhlen, ob Zeilennummern angezeigt und lange Codezeilen umgebrochen werden sollen.
So stellen Sie Formatoptionen ein:

1 Fhren Sie einen der folgenden Schritte aus:

Whlen Sie in der rechten oberen Ecke des Bedienfelds Aktionen im Popupmen Optionen die Option Auto-Format-Optionen. (Nur Flash Professional) Whlen Sie in einer externen Skriptdatei Bearbeiten > AutoFormat-Optionen. Das Dialogfeld Auto-Format-Optionen wird angezeigt. 2 Aktivieren Sie die gewnschten Kontrollkstchen. Im Vorschaufenster knnen Sie die Wirkungsweise Ihrer Einstellungen berprfen.

Nach dem Festlegen der Auto-Format-Optionen werden die Einstellungen automatisch auf den Code angewendet, den Sie schreiben, nicht jedoch auf bereits bestehenden Code. Um Einstellungen auf bestehenden Code anzuwenden, mssen Sie dies manuell durchfhren. Sie knnen dieses Verfahren zum Formatieren von Code verwenden, der mit anderen Einstellungen formatiert oder aus einem anderen Editor importiert wurde usw.

74

Kapitel 3: Skripts schreiben und debuggen

Um Code gem den Einstellungen unter Auto-Format-Optionen zu formatieren, fhren Sie einen der folgenden Schritte aus:

Klicken Sie oberhalb des Skriptfensters auf die Schaltflche Auto-Format. Whlen Sie im Popupmen des Bedienfelds Aktionen den Befehl Auto-Format. Drcken Sie <Strg>+<Umschalt>+<F> (Windows) bzw. <Befehl>+<Umschalt>+<F>
(Macintosh).
So verwenden Sie die automatische Einrckung:

Standardmig ist die automatische Einrckung aktiviert. Zum Deaktivieren dieser Funktion
klicken Sie in den Voreinstellungen von ActionScript auf das Kontrollkstchen Automatische Einrckung, um die Markierung zu entfernen. Wenn die automatische Einrckung aktiviert ist, wird der auf das Zeichen ( oder { folgende Text automatisch entsprechend der Tabulatoreinstellung in den Voreinstellungen von ActionScript eingerckt. Um eine weitere Zeile einzurcken, markieren Sie die entsprechende Zeile, und drcken Sie <Tab>. Zum Entfernen der Einrckung drcken Sie <Umschalt>+<Tab>.
So aktivieren bzw. deaktivieren Sie Zeilennummern und den Zeilenumbruch:

Aktivieren Sie im Popupmen Ansichtsoptionen die Optionen Zeilennummern anzeigen und


Zeilenumbruch.

Skripts debuggen
Flash bietet mehrere Tools zum Testen von ActionScript-Code in SWF-Dateien. Mit dem Debugger, der weiter hinten in diesem Abschnitt beschrieben wird, knnen Sie Fehler in einer im Flash Player laufenden SWF-Datei finden. Flash enthlt die folgenden zustzlichen DebuggingWerkzeuge:

Das Bedienfeld Ausgabe, in dem Fehlermeldungen und Listen der Variablen und Objekte
angezeigt werden (siehe Bedienfeld Ausgabe verwenden auf Seite 85) Die Anweisung trace, die Programmierhinweise und Ausdruckswerte in das Bedienfeld Ausgabe schreibt (siehe trace-Anweisung verwenden auf Seite 88) Die Anweisungen throw und try..catch..finally, mit denen Sie Laufzeitfehler aus Ihrem Skript heraus testen und darauf reagieren knnen Zugriffsmglichkeiten auf umfassende Compiler-Fehlermeldungen, mit denen Sie Probleme schneller diagnostizieren und lsen knnen (siehe Anhang A, Fehlermeldungen, auf Seite 799)

Sie mssen Ihre SWF-Datei in einer Sonderversion von Flash Player mit der Bezeichnung Flash Debug Player ansehen. Beim Installieren des Authoring-Tools wird der Flash Debug Player automatisch installiert. Wenn Sie also Flash installieren und eine Website mit Flash-Inhalt besuchen oder die Aktion Film testen durchfhren, dann verwenden Sie Flash Debug Player. Sie knnen auch das Installationsprogramm im Verzeichnis <anwendungsverzeichnis>\Players\Debug\ aktivieren oder aber den eigenstndigen Flash Debug Player aus demselben Verzeichnis heraus starten.

Skripts debuggen

75

Wenn Sie mit dem Befehl Film testen arbeiten, um Filme zu testen, die Tastatursteuerungen verwenden (Tabulatorbettigung, Tastenbefehle, die mit Key.addListener() erstellt werden usw.), dann whlen Sie Steuerung > Tastenbefehle deaktivieren. Diese Option verhindert, dass die Authoring-Umgebung Tastenanschlge fr sich ergreift, und sorgt dafr, dass diese bis zum Player gelangen. In der Authoring-Umgebung ffnet beispielsweise <Strg>+<U> das Dialogfeld Voreinstellungen. Wenn Ihr Skript <Strg>+<U> einer Aktion zuweist, die Text im Bildschirm unterstreicht, dann ffnen Sie mit dem Befehl Film testen durch Drcken der Tastenkombination <Strg>+<U> das Dialogfeld Voreinstellungen, anstatt die zur Textunterstreichung bentigte Aktion zu aktivieren. Damit der Befehl <Strg>+<U> bis zum Player gelangt, mssen Sie Strg > Tastenbefehle deaktivieren whlen.
Vorsicht: Der Befehl Film testen funktioniert nicht, wenn sich irgendwo im Pfad der SWF-Datei Zeichen befinden, die mit dem MBCS Codierschema nicht dargestellt werden knnen. Dies gilt beispielsweise fr japanische Pfade auf einem englischen System. Diese Einschrnkung ist gltig fr alle Bereiche der Anwendung, die mit einem externen Player arbeiten.

Im Debugger wird eine hierarchisch aufgebaute Liste der Movieclips angezeigt, die gegenwrtig im Flash Player geladen sind. Mit dem Debugger knnen Sie bei der Wiedergabe der SWF-Datei Variablen- und Eigenschaftswerte anzeigen und ndern sowie Haltepunkte setzen, um die SWFDatei anzuhalten und den ActionScript-Code Zeile fr Zeile zu durchlaufen. Der Debugger kann im Testmodus fr lokale Dateien sowie zum Testen von auf einem Webserver an einem Remote-Standort gespeicherten Dateien eingesetzt werden. Mit dem Debugger knnen Sie in Ihrem ActionScript Haltepunkte setzen, die den Flash Player stoppen und den Code whrend der Ausfhrung Schritt fr Schritt durchlaufen. Anschlieend knnen Sie zum Skript zurckkehren und dieses so bearbeiten, dass die gewnschten Ergebnisse erzielt werden. Nach Aktivierung des Debuggers sehen Sie in der Statusleiste die URL oder den lokalen Pfad der Datei, eine Angabe, ob die Datei im Testmodus oder an einem Remote-Standort ausgefhrt wird, sowie eine Live-Ansicht der Movieclip-Anzeigeliste. Wenn in der Datei Movieclips hinzugefgt oder entfernt werden, gehen diese nderungen sofort aus der Anzeigeliste hervor. Mit dem horizontalen Fensterteiler knnen Sie die Anzeigeliste bei Bedarf vergrern oder verkleinern.
So aktivieren Sie den Debugger im Testmodus:

Whlen Sie Steuerung > Film testen.

76

Kapitel 3: Skripts schreiben und debuggen

Dadurch wird der Debugger gestartet und die SWF-Datei im Testmodus geffnet.
Statusleiste Anzeigeliste berwachungsliste Codeansicht

An einem Remote-Standort gespeicherte SWF-Datei debuggen Zum Debuggen einer Remote-SWF-Datei knnen Sie den eigenstndigen Flash Player sowie die ActiveX- und Plug-In-Version des Players einsetzen. Beim Exportieren einer SWF-Datei knnen Sie das Debugging in der Datei aktivieren und ein Debugging-Kennwort erstellen. Wenn Sie das Debugging nicht aktivieren, wird der Debugger nicht gestartet. Sie knnen Ihre SWF-Datei mit einem Debugging-Kennwort verffentlichen, um sicherzustellen, dass nur autorisierte Benutzer die Dateien im Flash Debug Player ausfhren knnen. Wie bei JavaScript oder HTML knnen Benutzer auch bei ActionScript clientseitige Variablen sehen. Zur sicheren Speicherung von Variablen mssen Sie diese an eine Serveranwendung bertragen, statt sie in der Datei zu speichern. Viele Flash-Entwickler legen auerdem Wert darauf, andere Informationen, wie beispielsweise die Struktur von Movieclips, geheim zu halten. Mit Hilfe eines Debugging-Kennworts knnen Sie Ihre Arbeit schtzen. Beim Exportieren, Verffentlichen und Testen eines Films erstellt Flash eine SWD-Datei mit Debugging-Informationen. Um ein Remote-Debugging durchfhren zu knnen, mssen Sie die SWD-Datei auf dem Server im selben Ordner ablegen wie die SWF-Datei.
So aktivieren Sie das Remote-Debugging eines Flash-Films:

1 Whlen Sie Datei > Einstellungen fr Verffentlichungen. 2 Klicken Sie im Dialogfeld Einstellungen fr Verffentlichungen auf die Registerkarte Flash,

und whlen Sie Debugging zulassen.

Skripts debuggen

77

3 Geben Sie bei Bedarf ein Kennwort in das vorgesehene Feld ein.

Wenn Sie ein Kennwort festlegen, knnen ohne dieses Kennwort keine Informationen an den Debugger gesendet werden. Wenn Sie das Feld Kennwort leer lassen, ist kein Kennwort erforderlich. 4 Schlieen Sie das Dialogfeld Einstellungen fr Verffentlichungen, und whlen Sie einen der folgenden Befehle aus: Steuerung > Debugging Datei > Film exportieren Datei > Einstellungen fr Verffentlichungen > Verffentlichen Flash erstellt eine Debugging-Datei mit der Erweiterung .swd und speichert sie in demselben Verzeichnis wie die SWF-Datei. Die SWD-Datei enthlt Informationen, die den Einsatz von Haltepunkten und das schrittweise Durchlaufen von Code ermglichen. 5 Stellen Sie die SWD-Datei auf dem Server in dasselbe Verzeichnis wie die SWF-Datei. Wenn sich die SWD-Datei nicht im selben Verzeichnis wie die SWF-Datei befindet, knnen Sie zwar weiterhin ein Remote-Debugging durchfhren, doch der Debugger ignoriert Haltepunkte, und Sie knnen den Code nicht schrittweise durchlaufen. 6 Whlen Sie in Flash Fenster > Entwicklungs-Bedienfelder > Debugger. Whlen Sie im Debugger aus dem Popupmen Optionen den Befehl Remote-Fehlersuche aktivieren (oben rechts im Bedienfeld).
So aktivieren Sie den Debugger von einem Remote-Standort aus:

1 ffnen Sie die Flash-Authoring-Anwendung. 2 ffnen Sie in einem Browser oder im eigenstndigen Player die verffentlichte SWF-Datei vom

Remote-Standort aus. Das Dialogfeld Remote-Debugging wird angezeigt.

78

Kapitel 3: Skripts schreiben und debuggen

Wenn dieses Dialogfeld nicht erscheint, konnte Flash die SWD-Datei nicht finden. Klicken Sie in diesem Fall mit der rechten Maustaste (Windows) bzw. bei gedrckter Befehlstaste (Macintosh) auf die SWF-Datei, und whlen Sie im Kontextmen den Befehl Debugger.

3 Whlen Sie im Dialogfeld Remote-Debugging die Option Lokaler Host oder Anderer

Rechner: Whlen Sie Lokaler Host, wenn der Debug Player und die Flash-Authoring-Anwendung auf demselben Computer installiert sind. Whlen Sie Anderer Rechner, wenn der Debug Player und die Flash-AuthoringAnwendung nicht auf demselben Computer installiert sind. Geben Sie die IP-Adresse des Computers mit der Flash-Authoring-Anwendung ein. 4 Nach Herstellung der Verbindung werden Sie zur Eingabe des Kennworts aufgefordert. Geben Sie das Debugging-Kennwort ein, falls Sie eines festgelegt haben. Die Anzeigeliste der SWF-Datei wird im Debugger angezeigt. Variablen anzeigen und ndern Im Debugger werden auf der Registerkarte Variablen die Namen und Werte aller in der SWFDatei verwendeten globalen und Zeitleistenvariablen angezeigt. Wenn Sie den Wert einer Variablen auf dieser Registerkarte ndern, wirkt sich die nderung whrend der Wiedergabe auf die SWF-Datei aus. Wenn Sie beispielsweise die Kollisionserkennung in einem Spiel testen mchten, knnen Sie einen Variablenwert eingeben, mit dem ein Ball an der richtigen Stelle neben einer Wand positioniert wird. Auf der Registerkarte Lokale Variablen werden die Namen und Werte aller lokalen Variablen angezeigt, die an den Stellen, an denen die SWF-Datei an einem Haltepunkt angehalten wird, bzw. an einer beliebigen Stelle in einer benutzerdefinierten Funktion zur Verfgung stehen.
So zeigen Sie eine Variable an:

1 Whlen Sie in der Anzeigeliste den Movieclip aus, der die Variable enthlt.

Um globale Variablen anzuzeigen, whlen Sie in der Anzeigeliste den Clip _global aus. 2 Klicken Sie auf die Registerkarte Variablen.

Skripts debuggen

79

Die Anzeigeliste wird beim Abspielen der SWF-Datei automatisch aktualisiert. Wenn ein Movieclip in einem bestimmten Bild aus der SWF-Datei entfernt wird, wird dieser samt Variablen und Variablennamen aus der Anzeigeliste im Debugger gelscht. Wenn Sie jedoch eine Variable fr die berwachungsliste auswhlen (siehe berwachungsliste verwenden auf Seite 80), wird diese Variable nicht entfernt.

So ndern Sie einen Variablenwert:

Doppelklicken Sie auf den Wert, und geben Sie einen neuen Wert ein.
Der Wert kann kein Ausdruck sein. "Hallo", 3523 und "http://www.macromedia.com" sind beispielsweise zulssig, x + 2 oder eval("name:" +i) jedoch nicht. Der Wert kann ein String (ein beliebiger in Anfhrungszeichen stehender Wert), eine Zahl oder ein Boolescher Wert (true oder false) sein.
Hinweis: Im Testmodus knnen Sie mit der Aktion trace den Wert eines Ausdrucks in das Bedienfeld Ausgabe schreiben. Weitere Informationen hierzu finden Sie unter trace-Anweisung verwenden auf Seite 88.

berwachungsliste verwenden Wenn Sie eine Reihe wichtiger Variablen auf bersichtliche Weise berwachen mchten, knnen Sie diese zur Aufnahme in die berwachungsliste markieren. In der berwachungsliste werden der absolute Pfad einer Variablen und ihr Wert angezeigt. Sie knnen dort auch einen neuen Variablenwert eingeben. Wenn Sie eine lokale Variable zur berwachungsliste hinzufgen, erscheint ihr Wert nur, wenn der Flash Player in einer ActionScript-Zeile angehalten wird, in der diese Variable gltig ist. Alle anderen Variablen werden beim Abspielen der SWF-Datei angezeigt. Wenn der Debugger den Wert der Variablen nicht finden kann, wird die Variable als undefiniert angezeigt.

80

Kapitel 3: Skripts schreiben und debuggen

In der berwachungsliste knnen nur Variablen erscheinen, keine Eigenschaften oder Funktionen.

Fr die berwachungsliste markierte Variablen und Variablen in der berwachungsliste


Fhren Sie einen der folgenden Schritte aus, um Variablen zur berwachungsliste hinzuzufgen:

Klicken Sie auf der Registerkarte Variablen bzw. Lokale Variablen mit der rechten Maustaste
(Windows) bzw. bei gedrckter Taste <Ctrl> (Macintosh) auf eine markierte Variable, und whlen Sie im Kontextmen den Befehl berwachen. Neben der Variablen wird ein blauer Punkt angezeigt. Klicken Sie mit der rechten Maustaste (Windows) bzw. bei gedrckter Taste <Ctrl> (Macintosh) auf die Registerkarte berwachen, und whlen Sie im Kontextmen den Befehl Hinzufgen aus. Geben Sie den Zielpfad zum Variablennamen und den Wert in die vorgesehenen Felder ein.

So entfernen Sie Variablen aus der berwachungsliste:

Klicken Sie auf der Registerkarte berwachen mit der rechten Maustaste (Windows) bzw. bei
gedrckter Taste <Ctrl> (Macintosh), und whlen Sie im Kontextmen den Befehl Entfernen.

Skripts debuggen

81

Filmeigenschaften anzeigen und bearbeitbare Eigenschaften ndern In der Debugger-Registerkarte Eigenschaften werden smtliche Eigenschaftswerte aller auf der Bhne befindlichen Movieclips angezeigt. Die nderung eines Eigenschaftswertes wirkt sich whrend der Wiedergabe auf die SWF-Datei aus. Bestimmte Movieclip-Eigenschaften sind schreibgeschtzt und knnen nicht gendert werden.
So zeigen Sie die Eigenschaften eines Movieclips im Debugger an:

1 Whlen Sie in der Anzeigeliste einen Movieclip aus. 2 Klicken Sie im Debugger auf die Registerkarte Eigenschaften.

So ndern Sie einen Eigenschaftswert:

Doppelklicken Sie auf den Wert, und geben Sie einen neuen Wert ein.
Der Wert kann kein Ausdruck sein. 50 und "hochwasser" sind beispielsweise zulssig, x + 50 jedoch nicht. Der Wert kann ein String (ein beliebiger in Anfhrungszeichen stehender Wert), eine Zahl oder ein Boolescher Wert (true oder false) sein. Sie knnen im Debugger jedoch keine Objekt- und Arraywerte (beispielsweise {id: "bauer"} oder [1, 2, 3]) eingeben. Weitere Informationen hierzu finden Sie unter String-Operatoren auf Seite 51 und Werte in Ausdrcken mit Operatoren manipulieren auf Seite 49.
Hinweis: Im Testmodus knnen Sie mit der Aktion trace den Wert eines Ausdrucks in das Bedienfeld Ausgabe schreiben. Weitere Informationen hierzu finden Sie unter trace-Anweisung verwenden auf Seite 88.

82

Kapitel 3: Skripts schreiben und debuggen

Haltepunkte setzen und entfernen Mit Hilfe eines Haltepunkts knnen Sie eine im Flash Player ausgefhrte SWF-Datei an einer bestimmten ActionScript-Zeile anhalten. Haltepunkte erleichtern das Testen problematischer Stellen im Code. Wenn Sie beispielsweise eine Gruppe von if..else if-Anweisungen geschrieben haben und nicht ermitteln knnen, welche Schleife ausgefhrt wird, knnen Sie vor den Anweisungen einen Haltepunkt setzen und diese dann einzeln im Debugger durchlaufen. Haltepunkte knnen im Bedienfeld Aktionen oder im Debugger gesetzt werden (um Haltepunkte in externen Skripts zu setzen, mssen Sie den Debugger verwenden). Im Bedienfeld Aktionen gesetzte Haltepunkte werden zusammen mit dem Flash-Dokument (FLA-Datei) gespeichert. Im Debugger gesetzte Haltepunkte werden nicht in der FLA-Datei gespeichert und gelten nur fr die aktuelle Debugging-Sitzung.
Um im Bedienfeld Aktionen einen Haltepunkt zu setzen oder zu entfernen, fhren Sie einen der folgenden Schritte aus:

Klicken Sie auf den linken Rand. Haltepunkte werden durch einen roten Punkt dargestellt. Klicken Sie auf die Schaltflche Debug-Optionen oberhalb des Skriptfensters. Klicken Sie im Debugger mit der rechten Maustaste (Windows) oder bei gedrckter Taste
<Ctrl> (Macintosh), um das Kontextmen einzublenden, und whlen Sie dort Haltepunkt setzen, Haltepunkt entfernen oder Alle Haltepunkte entfernen. Drcken Sie <Strg> + <Umschalt> + <B> (Windows) bzw. <Befehl> + <Umschalt> + <B> (Macintosh).

Hinweis: In frheren Versionen von Flash wurde beim Klicken auf den linken Rand des Skriptfensters die Codezeile markiert. Jetzt wird hierdurch ein Haltepunkt hinzugefgt oder entfernt. Klicken Sie bei gedrckter Taste <Strg> (Windows) bzw. gedrckter Befehlstaste (Macintosh), um eine Codezeile auszuwhlen. Um im Debugger Haltepunkte zu setzen und zu entfernen, fhren Sie einen der folgenden Schritte aus:

Klicken Sie auf den linken Rand. Haltepunkte werden durch einen roten Punkt dargestellt. Klicken Sie oberhalb der Codeansicht auf die Schaltflche Haltepunkt ein/aus oder auf Alle
Haltepunkte entfernen. Klicken Sie im Debugger mit der rechten Maustaste (Windows) oder bei gedrckter Taste <Ctrl> (Macintosh), um das Kontextmen einzublenden, und whlen Sie dort Haltepunkt setzen, Haltepunkt entfernen oder Alle Haltepunkte entfernen. Drcken Sie <Strg> + <Umschalt> + <B> (Windows) bzw. <Befehl> + <Umschalt> + <B> (Macintosh). Wenn der Flash Player an einem Haltepunkt angehalten wird, knnen Sie in die entsprechende Codezeile wechseln bzw. die Codezeile verlassen oder berspringen. Wenn Sie im Bedienfeld Aktionen einen Haltepunkt in einem Kommentar oder einer leeren Zeile setzen, wird dieser ignoriert.

Skripts debuggen

83

Codezeilen durchlaufen Zu Beginn einer Debugging-Sitzung ist der Flash Player angehalten. Wenn Sie im Bedienfeld Aktionen Haltepunkte setzen, knnen Sie einfach auf die Schaltflche Weiter klicken, um die SWF-Datei abzuspielen, bis ein Haltepunkt erreicht ist. Angenommen, im folgenden Code ist in einer Schaltflche in der Zeile meineFunktion() ein Haltepunkt gesetzt.
on (press) { meineFunktion(); }

Wenn Sie auf die Schaltflche klicken, ist der Haltepunkt erreicht, und der Flash Player wird angehalten. Sie knnen jetzt in die Funktion meineFunktion() wechseln, damit der Debugger an der Stelle, an der die Funktion im Dokument definiert ist, zur ersten Zeile springt. Sie knnen die Funktion auch verlassen oder berspringen. Wenn Sie im Bedienfeld Aktionen keine Haltepunkte gesetzt haben, knnen Sie im Sprungmen im Debugger ein beliebiges Skript im Film auswhlen. Nach Auswahl eines Skripts knnen Sie Haltepunkte hinzufgen. Anschlieend mssen Sie auf die Schaltflche Weiter klicken, um den Film zu starten. Der Debugger wird angehalten, wenn der Haltepunkt erreicht ist. Beim Durchlaufen der verschiedenen Codezeilen ndern sich die Werte der Variablen und Eigenschaften in der berwachungsliste und in den Registerkarten Variablen, Lokale Variablen und Eigenschaften. Die Zeile, in der der Debugger angehalten ist, lsst sich an einem gelben Pfeil auf der linken Seite der Debugger-Codeansicht erkennen. Oberhalb der Codeansicht werden die folgenden Schaltflchen angezeigt:
Weiter Debuggen beenden Haltepunkt ein- oder ausschalten Alle Haltepunkte entfernen

Verlassen Hineinspringen berspringen

Wenn Sie auf Hineinspringen klicken, springt der Debugger in der mit dem gelben Pfeil gekennzeichneten Zeile in eine Funktion hinein. Hineinspringen kann nur bei benutzerdefinierten Funktionen verwendet werden.

84

Kapitel 3: Skripts schreiben und debuggen

Wenn Sie im folgenden Beispiel in Zeile 7 einen Haltepunkt setzen und auf Hineinspringen klicken, springt der Debugger auf Zeile 2. Wenn Sie erneut auf Hineinspringen klicken, springt der Debugger auf Zeile 3. Wenn Sie in einer Zeile ohne benutzerdefinierte Funktionen auf Hineinspringen klicken, wird diese Zeile bersprungen. Wenn der Debugger beispielsweise in Zeile 2 angehalten ist und Sie auf Hineinspringen klicken, springt der Debugger auf Zeile 3:
1 2 3 4 5 6 7 8 function meineFunktion() { x = 0; y = 0; } mover = 1; meineFunktion(); mover = 0;

Wenn Sie auf Verlassen klicken, springt der Debugger aus einer Funktion heraus. Diese Schaltflche funktioniert nur, wenn der Debugger gegenwrtig in einer benutzerdefinierten Funktion angehalten ist; sie verschiebt den gelben Pfeil auf die nchste Zeile nach der, in der diese Funktion aufgerufen wurde. Wenn Sie im obigen Beispiel in Zeile 3 einen Haltepunkt gesetzt haben und auf Verlassen klicken, springt der Debugger auf Zeile 8. Wenn Sie in einer Zeile, die nicht in einer benutzerdefinierten Funktion enthalten ist, auf Verlassen klicken, ergibt sich die gleiche Wirkung wie beim Klicken auf Weiter. Wenn der Debugger beispielsweise in Zeile 6 angehalten ist und Sie auf Verlassen klicken, setzt der Flash Player die Skriptausfhrung fort, bis ein Haltepunkt erreicht ist. Wenn Sie auf berspringen klicken, berspringt der Debugger eine Codezeile. Der gelbe Pfeil wird auf die nchste Zeile im Skript gesetzt, und alle benutzerdefinierten Funktionen werden ignoriert. Wenn der Debugger im obigen Beispiel in Zeile 7 angehalten ist und Sie auf berspringen klicken, gelangen Sie direkt zu Zeile 8. Dabei wird meineFunktion ignoriert. Wenn Sie auf Weiter klicken, wird die Zeile, in der der Player angehalten ist, verlassen und die Ausfhrung fortgesetzt, bis ein Haltepunkt erreicht ist. Wenn Sie auf Debuggen beenden klicken, wird zwar der Debugger deaktiviert, aber die Wiedergabe der SWF-Datei im Flash Player fortgesetzt.

Bedienfeld Ausgabe verwenden


Im Testmodus werden im Bedienfeld Ausgabe Informationen angezeigt, die Ihnen dabei helfen, Fehler in der SWF-Datei zu beheben. Manche Informationen, wie z. B. Syntaxfehler, werden automatisch angezeigt. Mit Hilfe der Befehle Objekte auflisten und Variablen auflisten knnen Sie sich weitere Informationen anzeigen lassen. Informationen hierzu finden Sie unter Objekte einer SWF-Datei auflisten auf Seite 86, Variablen einer SWF-Datei auflisten auf Seite 86 und . Wenn Sie in Ihren Skripts die Anweisung trace verwenden, knnen Sie spezifische Informationen an das Bedienfeld Ausgabe senden, whrend die SWF-Datei wiedergegeben wird, wie z. B. Anmerkungen zum Status der SWF-Datei oder den Wert eines Ausdrucks. (Weitere Informationen finden Sie unter trace-Anweisung verwenden auf Seite 88.) Um das Bedienfeld Ausgabe anzuzeigen, whlen Sie Fenster > Entwicklungs-Bedienfelder > Ausgabe, oder drcken Sie die Taste <F2>.
Hinweis: Wenn Sie bei Syntaxfehlern in einem Skript die Syntax prfen oder Ihre SWF-Datei testen, wird das Bedienfeld Ausgabe automatisch angezeigt.

Bedienfeld Ausgabe verwenden

85

Um mit dem Inhalt des Bedienfelds Ausgabe zu arbeiten, klicken Sie auf das Popupmen Optionen in der rechten oberen Ecke.

Objekte einer SWF-Datei auflisten Im Testmodus knnen Sie mit dem Befehl Objekte auflisten die Stufe, das Bild, den Objekttyp (Form, Movieclip oder Schaltflche), die Zielpfade und die Instanzennamen von Movieclips, Schaltflchen und Textfeldern in einer hierarchischen Liste anzeigen. Dies erleichtert insbesondere das Auffinden des korrekten Zielpfads und Instanznamens. Im Gegensatz zum Debugger wird diese Liste bei der Wiedergabe der SWF-Datei nicht automatisch aktualisiert. Wenn Sie Informationen an das Bedienfeld Ausgabe senden mchten, mssen Sie den Befehl Objekte auflisten jedes Mal neu auswhlen. Mit dem Befehl Objekte auflisten werden nicht alle ActionScript-Datenobjekte aufgelistet. In diesem Zusammenhang wird eine Form oder ein Symbol auf der Bhne als Objekt betrachtet.
So listen Sie die Objekte in einem Film auf:

1 Wenn der Film nicht im Testmodus luft, whlen Sie Steuerung > Film testen. 2 Whlen Sie Debuggen > Objekte auflisten.

Im Bedienfeld Ausgabe wird eine Liste der gegenwrtig auf der Bhne befindlichen Objekte angezeigt. Beispiel:
Level #0: Frame=1 Label="Scene_1" Button: Target="_level0.meinButton" Shape: Movie Clip: Frame=1 Target="_level0.meinMovieClip" Shape: Edit Text: Target="_level0.meinTextField" Text="Beispieltext."

Variablen einer SWF-Datei auflisten Im Testmodus knnen Sie mit dem Befehl Variablen auflisten alle gegenwrtig in der SWF-Datei vorhandenen Variablen anzeigen. Dies erleichtert insbesondere das Auffinden des korrekten Zielpfads und Variablennamens. Im Gegensatz zum Debugger wird diese Liste bei der Wiedergabe der SWF-Datei nicht automatisch aktualisiert. Wenn Sie Informationen an das Bedienfeld Ausgabe senden mchten, mssen Sie den Befehl Objekte auflisten jedes Mal neu auswhlen. Der Befehl Variablen auflisten zeigt auch globale Variablen an, die mit dem Bezeichner _global deklariert wurden. Die globalen Variablen werden am Anfang der Variablenausgabe im Abschnitt Globale Variablen angezeigt. Vor jeder Variablen steht das Prfix _global.

86

Kapitel 3: Skripts schreiben und debuggen

Darber hinaus zeigt der Befehl Variablen auflisten Get-/Set-Eigenschaften an, d. h. Eigenschaften, die mit der Methode Object.addProperty erstellt wurden und Get-/SetMethoden aufrufen. Eine Get-/Set-Eigenschaft wird im jeweiligen Objekt neben allen anderen Eigenschaften angezeigt. Damit sich diese Eigenschaften leicht von normalen Variablen unterscheiden lassen, steht vor dem Wert einer Get-/Set-Eigenschaft das Prfix [getter/ setter]. Der Wert einer Get-/Set-Eigenschaft wird durch Auswertung der entsprechenden GetFunktion berechnet.
So listen Sie die Variablen in einer SWF-Datei auf:

1 Wenn die SWF-Datei nicht im Testmodus luft, whlen Sie Steuerung > Film testen. 2 Whlen Sie Debuggen > Variablen auflisten.

Im Bedienfeld Ausgabe wird eine Liste der gegenwrtig in der SWF-Datei vorhandenen Variablen angezeigt. Beispiel:
Globale Variablen: Variable _global.MeinGlobalArray = [object #1] [ 0:1, 1:2, 2:3 ] Level #0: Variable _level0.$version = "WIN 6,0,0,101" Variable _level0.RegularVariable = "Gary" Variable _level0.AnObject = [object #1] { MeinProperty: [getter/setter] 3.14159 }

Textfeldeigenschaften zum Debuggen anzeigen Mit dem Befehl Debuggen > Variablen auflisten im Filmtestmodus knnen Sie DebuggingInformationen zu TextField-Objekten abrufen. Im Bedienfeld Ausgabe werden die folgenden Konventionen fr die Anzeige von TextField-Objekten verwendet:

Wenn eine Eigenschaft bei einem Objekt nicht gefunden wird, wird sie nicht angezeigt. Auf einer Zeile werden hchstens vier Eigenschaften angezeigt. Eine Eigenschaft mit einem Stringwert wird auf einer separaten Zeile angezeigt. Wenn weitere Eigenschaften fr das Objekt definiert wurden, nachdem die integrierten Eigenschaften verarbeitet wurden, werden sie mit den Regeln unter dem zweiten und dritten Aufzhlungspunkt der Anzeige hinzugefgt. Farbeigenschaften werden als Hexadezimalzahlen angezeigt (0x00FF00). Die Eigenschaften werden in der folgenden Reihenfolge anzeigt: variable, text, htmlText, html, textWidth, textHeight, maxChars, borderColor, backgroundColor, textColor, border, background, wordWrap, password, multiline, selectable, scroll, hscroll, maxscroll, maxhscroll, bottomScroll, type, embedFonts, restrict, length, tabIndex, autoSize.

Mit dem Befehl Debuggen > Variablen auflisten im Filmtestmodus knnen Sie TextFieldObjekte auflisten. Wenn fr ein Textfeld ein Instanzname festgelegt wurde, wird der vollstndige Zielpfad einschlielich Instanzname wie folgt im Ausgabefeld angezeigt:
Ziel = "Zielpfad"

Bedienfeld Ausgabe verwenden

87

trace-Anweisung verwenden Mit Hilfe der Anweisung trace knnen Sie von einem Skript aus Informationen an das Bedienfeld Ausgabe senden. Wenn Sie beispielsweise einen Film oder eine Szene testen, knnen Sie bestimmte Programmierhinweise an das Bedienfeld bertragen oder festlegen, dass beim Klicken auf eine Schaltflche oder beim Abspielen eines Bilds bestimmte Ergebnisse angezeigt werden. Die Anweisung trace ist mit der Anweisung alert in JavaScript vergleichbar. Wenn Sie die Anweisung trace in einem Skript einsetzen, knnen Sie Ausdrcke als Parameter verwenden. Im Testmodus wird der Wert eines Ausdrucks im Bedienfeld Ausgabe angezeigt. Beispiel:

Die von der Anweisung trace zurckgegebenen Werte werden im Bedienfeld Ausgabe angezeigt.
onClipEvent (enterFrame) { trace("onClipEvent enterFrame " + enterFrame++) }

Flash Player zum Testen aktualisieren


Sie knnen die neueste Version des Flash Players von der Website von Macromedia unter http:// www.macromedia.com/go/flash_support_de herunterladen und zum Testen Ihrer SWF-Dateien verwenden.

88

Kapitel 3: Skripts schreiben und debuggen

TEIL II Ereignisse verarbeiten und Interaktionen erstellen

TEIL II

Ereignisse knnen durch Benutzer generiert werden (z. B. Mausklicks oder Tastenaktionen), oder sie treten als Ergebnis eines anderen Vorgangs auf (z.<hs>B. Laden einer XML-Datei ber das Netzwerk). Im ersten Kapitel dieses Hauptabschnitts werden die unterschiedlichen Arten von Ereignissen in Macromedia Flash und deren Verwendung in ActionScript beschrieben. Im zweiten Kapitel wird die Anwendung dieser Verfahren zum Erstellen von einfachen interaktiven Prsentationen, Anwendungen und Animationen erlutert. Kapitel 4: Ereignisse verarbeiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Kapitel 5: Interaktionen mit ActionScript erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

KAPITEL 4 Ereignisse verarbeiten

Ein Ereignis ist eine Software- oder Hardware-Instanz, fr die eine Reaktion aus einer Macromedia Flash-Anwendung erforderlich ist. Ein Ereignis, wie z. B. ein Mausklick oder ein Tastendruck, wird als Benutzerereignis bezeichnet, da es aus einer direkten Benutzerinteraktion resultiert. Ereignisse, die automatisch vom Flash Player generiert werden, wie z. B. die anfngliche Darstellung eines Movieclips auf der Bhne, werden als Systemereignisse bezeichnet, da sie nicht direkt vom Benutzer generiert werden. Fr die Reaktion Ihrer Anwendung auf Ereignisse ist eine so genannte Ereignisprozedur erforderlich. Dabei handelt es sich um einen mit einem bestimmten Objekt und Ereignis verknpften ActionScript-Code. Wenn der Benutzer beispielsweise auf eine Schaltflche auf der Bhne klickt, soll der Abspielkopf zum nchsten Bild springen, oder wenn der Ladevorgang einer XML-Datei ber das Netzwerk abgeschlossen ist, soll der Inhalt dieser Datei in einem Textfeld angezeigt werden. In ActionScript gibt es verschiedene Verfahren zum Verarbeiten von Ereignissen: Ereignisprozedurmethoden, Ereignis-Listener sowie Schaltflchen- und MovieclipEreignisprozeduren.

Ereignisprozedurmethoden verwenden
Ereignisprozedurmethoden sind Klassenmethoden, die aufgerufen werden, wenn ein Ereignis fr eine Instanz dieser Klasse eintritt. Beispielsweise definiert die Button-Klasse die Prozedur onPress, die aufgerufen wird, wenn Sie auf ein Button-Objekt klicken. Allerdings werden Ereignisprozeduren im Gegensatz zu anderen Methoden einer Klasse nicht direkt aufgerufen. Ereignisprozeduren werden vielmehr automatisch vom Flash Player aufgerufen, wenn ein entsprechendes Ereignis eintritt. Standardmig sind Ereignisprozedurmethoden nicht definiert: Wenn ein bestimmtes Ereignis eintritt, wird die zugehrige Ereignisprozedur aufgerufen, aber die Anwendung reagiert nicht auf weitere Weise auf das Ereignis. Damit Ihre Anwendung auf das Ereignis reagieren kann, definieren Sie mit der Funktionsanweisung eine Funktion und weisen diese Funktion anschlieend der entsprechenden Ereignisprozedur zu. Die der Ereignisprozedur zugewiesene Funktion wird dann jedes Mal automatisch aufgerufen, wenn dieses Ereignis eintritt.

91

Eine Ereignisprozedur besteht aus drei Teilen: dem Objekt, fr das das Ereignis gilt, dem Namen der Ereignisprozedurmethode fr das Objekt und der Funktion, die der Ereignisprozedur zugewiesen ist. Im folgenden Beispiel wird die Grundstruktur einer Ereignisprozedur dargestellt.
object.eventMethod = function () { // Eigenen Code hier einfgen, auf Ereignis reagieren }

Angenommen, auf der Bhne befindet sich die Schaltflche next_btn. Durch den folgenden Code wird der Schaltflchen-Ereignisprozedur onPress eine Funktion zugewiesen, durch die der Abspielkopf auf das nchste Bild in der Zeitleiste springt.
next_btn.onPress = function () nextFrame(); }

Im oben beschriebenen Code wird der Schaltflchen-Ereignisprozedur onPress direkt die Funktion nextFrame() zugewiesen. Sie knnen einer Ereignisprozedurmethode auch eine Funktionsreferenz (d. h. einen Namen) zuweisen und die Funktion spter definieren.
// Funktionsreferenz zur onPress-Ereignisprozedur zuweisen next_btn.onPress = goNextFrame; // doSubmit()-Funktion definieren function goNextFrame() { nextFrame(); }

Sie weisen der Ereignisprozedur onPress hierbei die Funktionsreferenz zu, nicht den Rckgabewert der Funktion.
// Falsch! next_btn.onPress = goNextFrame(); // Richtig. next_btn.onPress = goNextFrame;

Einige Ereignisprozeduren erhalten bergebene Parameter, die Informationen ber das aufgetretene Ereignis enthalten. Wenn beispielsweise ein Textfeld Tastaturfokus erhlt, wird die Ereignisprozedur TextField.onSetFocus aufgerufen. Diese Ereignisprozedur empfngt eine Referenz auf das Textfeldobjekt, das zuvor Tastaturfokus besa. Durch den folgenden Code wird beispielsweise Text in das Textfeld eingefgt, das gerade den Tastaturfokus verloren hat.
userName_txt.onSetFocus = function(oldFocus_txt) { oldFocus_txt.text = "Tastaturfokus verloren"; }

Mit den folgenden ActionScript-Klassen werden Ereignisprozeduren definiert: Button, ContextMenu, ContextMenuItem, Key, LoadVars, LocalConnection, Mouse, MovieClip, MovieClipLoader, Selection, SharedObject, Sound, Stage, TextField, XML und XMLSocket. Weitere Informationen ber die darin verfgbaren Ereignisprozeduren finden Sie in den Eintrgen zu diesen Klassen in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

92

Kapitel 4: Ereignisse verarbeiten

Sie knnen Ereignisprozeduren auch Funktionen fr Objekte zuweisen, die Sie zur Laufzeit erstellen. Durch den folgenden Code wird beispielsweise eine neue Movieclip-Instanz (newclip_mc) erstellt. Anschlieend wird der Ereignisprozedur onPress des Clips eine Funktion zugewiesen.
_root.attachMovie("symbolID", "newclip_mc", 10); newclip_mc.onPress = function () { trace("Gedrckt"); }

Weitere Informationen finden Sie unter Movieclips zur Laufzeit erstellen auf Seite 138.

Ereignis-Listener verwenden
Durch Ereignis-Listener knnen so genannte Listener-Objekte Ereignisse empfangen, die von anderen Objekten namens Broadcaster-Objekten generiert wurden. Mit dem Broadcaster-Objekt wird das Listener-Objekt zum Empfangen von Ereignissen vom Broadcaster registriert. Sie knnen beispielsweise ein Movieclip-Objekt zum Empfangen von onResize-Benachrichtigungen von der Bhne registrieren. Mglicherweise mchten Sie auch, dass eine Schaltflcheninstanz onChanged-Benachrichtigungen von einem Textfeld erhlt. Sie knnen mehrere Listener-Objekte zum Empfangen von Ereignissen von einem einzelnen Broadcaster registrieren. Darber hinaus lassen sich einzelne Listener-Objekte zum Empfangen von Ereignissen von mehreren Broadcastern registrieren. Das Ereignismodell fr Ereignis-Listener hnelt dem fr Ereignisprozeduren (siehe Ereignisprozedurmethoden verwenden auf Seite 91), allerdings mit zwei wichtigen Unterschieden:

Das Objekt, dem Sie die Ereignisprozedur zuweisen, ist nicht das Objekt, das das Ereignis
ausgibt. Eine spezielle Methode des Broadcaster-Objekts, addListener(), registriert das ListenerObjekt zum Empfangen der zugehrigen Ereignisse.

Um Ereignis-Listener zu verwenden, erstellen Sie ein Listener-Objekt mit einer Eigenschaft, die den Namen des vom Broadcaster-Objekt generierten Ereignisses trgt. Danach weisen Sie dem Ereignis-Listener eine Funktion zu, die auf bestimmte Weise auf das Ereignis reagiert. Schlielich rufen Sie die Methode addListener() fr das Objekt auf, das das Broadcasting fr das Ereignis durchfhrt. Dabei wird der Name des Listener-Objekts bertragen. Durch den folgenden Code wird das Ereignis-Listener-Modell definiert.
listenerObject.eventName = function(){ // Eigenen Code hier einfgen }; broadcastObject.addListener(listenerObject);

Beim angegebenen Listener-Objekt kann es sich um ein beliebiges Objekt handeln, z. B. um einen Movieclip oder eine Schaltflcheninstanz auf der Bhne bzw. eine Instanz einer beliebigen ActionScript-Klasse. Der Ereignisname ist ein Ereignis, das fr broadCastObject auftritt, das anschlieend ein Broadcasting des Ereignisses fr listenerObject durchfhrt. Sie knnen einem Broadcaster mehrere Listener zuweisen. Im folgenden Beispiel wird beschrieben, wie mit dem Ereignis-Listener Selection.onSetFocus ein einfacher Fokusmanager fr eine Gruppe von Eingabetextfeldern erstellt wird. Hierbei wird der Rahmen des Textfelds aktiviert (eingeblendet), das den Tastaturfokus erhlt. Der Rahmen des Textfelds, das den Fokus verloren hat, wird deaktiviert.

Ereignis-Listener verwenden

93

So erstellen Sie mit Ereignis-Listenern einen einfachen Fokusmanager:

1 Erstellen Sie auf der Bhne mit dem Textwerkzeug ein Textfeld. 2 Markieren Sie das Textfeld, whlen Sie im Eigenschafteninspektor aus dem Popupmen

Texttyp den Befehl Eingabe, und aktivieren Sie die Option Rahmen um Text zeigen. 3 Erstellen Sie unter dem ersten Eingabetextfeld ein weiteres Feld. Die Option Rahmen um Text zeigen darf dabei fr dieses Textfeld nicht aktiviert sein. Erstellen Sie bei Bedarf weitere Eingabetextfelder. 4 Whlen Sie in der Zeitleiste Bild 1 aus, und ffnen Sie das Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen). 5 Um ein Objekt zu erstellen, das auf eine Fokusbenachrichtigung von der Selection-Klasse wartet, geben Sie im Bedienfeld Aktionen den folgenden Code ein:
var focusListener = new Object(); focusListener.onSetFocus = function(oldFocus_txt, newFocus_txt) { oldFocus_txt.border = false; newFocus_txt.border = true; }

Durch diesen Code wird das neue (generische) ActionScript-Objekt focusListener erstellt. In diesem Objekt wird eine eigene onSetFocus-Eigenschaft definiert, dem das Objekt eine Funktion zuweist. Die Funktion erfordert zwei Parameter: eine Referenz auf das Textfeld, das den Fokus verloren hat, und eine zum Textfeld, das den Fokus erhalten hat. Durch die Funktion wird die Eigenschaft border des Textfelds, das den Fokus verloren hat, auf false und die Eigenschaft border des Textfelds, das den Fokus erhalten hat, auf true eingestellt. 6 Um das Objekt focusListener zum Empfangen von Ereignissen vom Selection-Objekt zu registrieren, fgen Sie im Bedienfeld Aktionen den folgenden Code hinzu:
Selection.addListener(focusListener);

7 Testen Sie den Film (Steuerung > Film testen), klicken Sie in das erste Textfeld, und drcken

Sie die Taste <Tab>, um den Fokus zwischen den Feldern umzuschalten. Damit die Registrierung eines Listener-Objekts zum Empfangen von Ereignissen aufgehoben wird, rufen Sie die Methode removeListener() des Broadcaster-Objekts auf und bertragen ihr den Namen des Listener-Objekts.
broadcastObject.removeListener(listenerObject);

Ereignis-Listener knnen fr Objekte der folgenden ActionScript-Klassen verwendet werden: Key, Mouse, MovieClipLoader, Selection, TextField und Stage. Eine Liste der verfgbaren Ereignis-Listener fr die einzelnen Klassen finden Sie unter den jeweiligen Eintrgen zu diesen Klassen in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

94

Kapitel 4: Ereignisse verarbeiten

Schaltflchen- und Movieclip-Ereignisprozeduren verwenden


Mit den Prozeduren onClipEvent() und on() knnen Ereignisprozeduren einer Schaltflche oder einer Movieclip-Instanz direkt zugeordnet werden. Die Prozedur onClipEvent() dient zur Verwaltung von Movieclip-Ereignissen, und die Prozedur on() dient zur Verwaltung von Schaltflchenereignissen. Sie knnen die Prozedur on() auch in Verbindung mit einem Movieclip verwenden, um Movieclips zu erstellen, die auf Schaltflchenereignisse reagieren. Weitere Informationen hierzu finden Sie unter Movieclips mit Schaltflchenzustnden erstellen auf Seite 96. Um eine der Prozeduren on() oder onClipEvent() zu verwenden, ordnen Sie diese direkt einer Instanz einer Schaltflche oder eines Movieclips auf der Bhne zu und geben das Ereignis an, das diese Instanz verarbeiten soll. Die folgende Ereignisprozedur on() wird beispielsweise ausgefhrt, wenn der Benutzer auf die Schaltflche klickt, der die Prozedur zugeordnet ist.
on(press){ trace("Gedrckt."); }

Fr jede on()-Prozedur knnen auch zwei oder mehr Ereignisse angegeben werden, die durch Kommata voneinander getrennt sind. ActionScript in einer Prozedur wird ausgefhrt, wenn eines der Ereignisse eintritt, die in der Prozedur angegeben sind. Beispielsweise wird die folgende on()Prozedur, die einer Schaltflche zugeordnet ist, dann ausgefhrt, wenn die Maus auerhalb der Schaltflche bewegt wird.
on(rollOver, rollOut) { trace("Maus wurde auerhalb der Schaltflche bewegt"); }

Wenn bei verschiedenen Ereignissen unterschiedliche Skripts ausgefhrt werden sollen, knnen Sie einem Objekt auch mehrere Prozeduren zuordnen. Folgende onClipEvent()-Prozeduren beispielsweise knnen derselben Movieclip-Instanz zugeordnet werden. Die erste Prozedur wird beim ersten Laden des Movieclips ausgefhrt, d. h. beim ersten Anzeigen auf der Bhne. Die zweite Prozedur wird beim Entfernen des Movieclips von der Bhne ausgefhrt, d. h. beim Entladen.
onClipEvent(load) { trace("Geladen"); } onClipEvent (unload) { trace("Entladen"); }

Eine vollstndige Liste der Ereignisse, die durch die Ereignisprozeduren on() und onClipEvent() untersttzt werden, finden Sie unter on() auf Seite 600 und onClipEvent() auf Seite 602.

Schaltflchen- und Movieclip-Ereignisprozeduren verwenden

95

Die Ereignisverarbeitung durch die Prozeduren on() und onClipEvent() fhrt nicht zu Konflikten mit der Ereignisverarbeitung durch Ereignisprozeduren, die Sie definiert haben. Angenommen, fr eine Schaltflche in Ihrer SWF-Datei ist eine on(press)-Prozedur vorhanden, die zum Abspielen der SWF-Datei fhrt. Fr dieselbe Schaltflche kann eine onPress-Methode vorhanden sein, fr die Sie eine Funktion definieren, durch die die Drehung eines Objekts auf der Bhne ausgelst wird. Wenn Sie auf die Schaltflche klicken, wird die SWF-Datei abgespielt, und das Objekt wird gedreht. Je nach Wunsch knnen Sie on()- und onClipEvent()-Prozeduren, Ereignisprozedurmethoden oder eine Kombination aus beiden Ereignisverarbeitungstypen verwenden. Der Gltigkeitsbereich von Variablen und Objekten in on()- und onClipEvent()Prozeduren weicht jedoch vom Gltigkeitsbereich von Ereignisprozeduren und EreignisListenern ab. (Weitere Informationen finden Sie unter Gltigkeitsbereich von Ereignisprozeduren auf Seite 97.)
onClipEvent()- und on()-Prozeduren knnen nur solchen Movieclip-Instanzen zugeordnet werden, die beim Authoring auf der Bhne platziert wurden. In Movieclip-Instanzen, die beispielsweise mit Hilfe der Methode attachMovie() zur Laufzeit whrend der Filmwiedergabe erstellt wurden, lassen sich onClipEvent()- und on()-Prozeduren hingegen nicht aufrufen. Mit Ereignisprozedurmethoden oder Ereignis-Listenern hngen Sie Ereignisprozeduren an Objekte an, die zur Laufzeit erstellt wurden. (Weitere Informationen hierzu finden Sie unter Ereignisprozedurmethoden verwenden auf Seite 91 und Ereignis-Listener verwenden auf Seite 93.)

Movieclips mit Schaltflchenzustnden erstellen


Beim Zuordnen einer on()-Prozedur zu einem Movieclip bzw. beim Zuweisen einer Funktion zu einer der MovieClip-Mausereignisprozeduren fr eine Movieclip-Instanz reagiert der Movieclip auf Mausereignisse in derselben Weise wie Schaltflchen. Wenn Sie zur Zeitleiste des Movieclips die Bildbezeichnungen _up, _over und _down hinzufgen, werden automatische Schaltflchenzustnde (Auf, Darber und Drcken) erstellt. Wenn der Benutzer den Mauszeiger ber den Movieclip bewegt bzw. auf den Movieclip klickt, wird der Abspielkopf in das Bild mit der passenden Bildbezeichnung geschrieben. Mit der Eigenschaft hitArea der MovieClip-Klasse legen Sie den vom Film verwendeten Kollisionsbereich fest.
So erstellen Sie Schaltflchenzustnde in Movieclips:

1 Whlen Sie ein Bild in der Zeitleiste des Movieclips aus, das Sie fr einen der

Schaltflchenzustnde (Auf, Darber oder Drcken) verwenden mchten. 2 Geben Sie im Eigenschafteninspektor eine Bildbezeichnung (_up, _over oder _down) an. 3 Wiederholen Sie die Schritte 1 und 2, und fgen Sie die brigen Schaltflchenzustnde hinzu. 4 Damit der Movieclip auf Mausereignisse reagiert, fhren Sie einen der folgenden Schritte aus: Weisen Sie der Movieclip-Instanz eine on()-Ereignisprozedur zu, wie unter Schaltflchenund Movieclip-Ereignisprozeduren verwenden auf Seite 95 beschrieben. Weisen Sie einer der Ereignisprozeduren des Movieclip-Mausereignisses (onPress, onRelease usw.) eine Funktion zu, wie unter Ereignisprozedurmethoden verwenden auf Seite 91 beschrieben.

96

Kapitel 4: Ereignisse verarbeiten

Gltigkeitsbereich von Ereignisprozeduren


Der Gltigkeitsbereich (oder Kontext) von Variablen und Befehlen, die Sie in einer Ereignisprozedur deklarieren bzw. ausfhren, hngt von dem Typ der verwendeten Ereignisprozedur ab: Ereignisprozeduren oder Ereignis-Listener bzw. die Prozeduren on() und onClipEvent(). Funktionen, die Ereignisprozedurmethoden und Ereignis-Listenern zugewiesen sind (wie alle von Ihnen geschriebenen ActionScript-Funktionen), definieren einen lokalen Variablengltigkeitsbereich. Fr on()- und onClipEvent()-Prozeduren gilt dies jedoch nicht. Betrachten Sie beispielsweise die folgenden beiden Ereignisprozeduren. Bei der ersten handelt es sich um eine onPress-Ereignisprozedur, die mit dem Movieclip clip_mc. verknpft ist. Die zweite ist eine on()-Prozedur, die mit derselben Movieclip-Instanz verknpft ist.
// Mit Zeitleiste von Parent-Clip clip_mc verknpft: clip_mc.onPress = function () { var color; // lokale Funktionsvariable color = "Blau"; } // on()-Prozedur an clip_mc angehaengt: on(press){ var color; // kein lokaler Gltigkeitsbereich fr Variable color = "Blau"; }

Obwohl beide Ereignisprozeduren denselben Code enthalten, fallen die Ergebnisse unterschiedlich aus. Im ersten Fall ist die Variable color eine lokale Variable fr die fr onPress definierte Funktion. Im zweiten Fall bezieht sich der Variablengltigkeitsbereich auf die Zeitleiste des Movieclips clip_mc, da die Prozedur on() keinen lokalen Variablengltigkeitsbereich definiert. Bei on()-Ereignisprozeduren, die nicht Movieclips, sondern Schaltflchen zugeordnet sind, sind Variablen (sowie Funktions- und Methodenaufrufe) innerhalb der Zeitleiste gltig, die die Schaltflcheninstanz enthlt. Die folgende on()-Ereignisprozedur fhrt z. B. zu unterschiedlichen Ergebnissen, je nachdem, ob sie einem Movieclip- oder einem Button-Objekt zugeordnet ist. Im ersten Fall wird mit der play()-Funktion der Abspielkopf der Zeitleiste gestartet, die die Schaltflche enthlt; im zweiten Fall wird mit der play()-Funktion die Zeitleiste des Movieclips gestartet, dem die Prozedur zugewiesen ist.
// Einer Schaltflche zugewiesen on(press){ play(); // Gibt bergeordnete Zeitleiste wieder } // Einem Movieclip zugewiesen on(press){ play(); // Gibt Zeitleiste des Movieclips wieder }

Wenn die play()-Methode einem Button-Objekt zugewiesen ist, wird sie fr die Zeitleiste aufgerufen, in der sich die Schaltflche befindet, d. h. fr die bergeordnete Zeitleiste der Schaltflche. Wenn allerdings dieselbe Prozedur einem Movieclip-Objekt zugeordnet ist, wird die play()-Methode fr den Movieclip angewendet, in dem die Prozedur enthalten ist.

Gltigkeitsbereich von Ereignisprozeduren

97

Innerhalb einer Ereignisprozedur- oder Ereignis-Listener-Funktionsdefinition wrde die gleiche play()-Funktion auf die Zeitleiste angewendet, die die Funktionsdefinition enthlt. Angenommen, die folgende MovieClip.onPress-Ereignisprozedurfunktion wird auf der Zeitleiste deklariert, die die Movieclip-Instanz meinMovieClip enthlt.
// Auf der Movieclip-Zeitleiste festgelegte Funktion: meinMovieclip.onPress = function () { play(); // Gibt die Zeitleiste wieder, die die Funktionsdefinition enthlt }

Wenn Sie den Movieclip wiedergeben mchten, durch den die onPress-Ereignisprozedur definiert wird, mssen Sie mit dem Schlsselwort this auf den Movieclip verweisen:
meinMovieclip.onPress = function () { this,play(); // Gibt die Zeitleiste des Movieclips wieder, durch den die onPress-Prozedur definiert wird }

Gltigkeitsbereich des Schlsselworts this


Das Schlsselwort this verweist auf das Objekt im aktuellen Gltigkeitsbereich. Je nachdem, welcher Typ von Ereignisprozeduren verwendet wird, kann this auf verschiedene Objekte verweisen.
In einer Ereignisprozedur- oder Ereignis-Listener-Funktion verweist this auf das Objekt, durch das die Ereignisprozedur- oder Ereignis-Listener-Methode festgelegt wird. Im folgenden Code verweist this z. B. auf meinClipselbst. // _level0.meinClip zugewiesene onPress()-Ereignisprozedur: meinClip.onPress = function () { trace(this); // Anzeige: '_level0.meinClip' } In einer einem Movieclip zugewiesenen on()-Prozedur

verweist this auf den Movieclip, dem

die on()-Prozedur zugewiesen ist.


// Einem Movieclip namens 'meinClip' zugewiesen on(press){ trace(this); // Anzeige: '_level0.meinClip' } In einer on()-Prozedur, die einer Schaltflche zugewiesen ist, verweist this auf die Zeitleiste,

die die Schaltflche enthlt.


// Einer Schaltflche auf der Hauptzeitleiste zugewiesen on(press){ trace(this); // Anzeige: '_level0' }

98

Kapitel 4: Ereignisse verarbeiten

KAPITEL 5 Interaktionen mit ActionScript erstellen

In einfachen Animationen gibt Macromedia Flash Player die einzelnen Szenen und Bilder einer SWF-Datei nacheinander wieder. In einer interaktiven SWF-Datei hingegen kann der Benutzer mit Hilfe von Tastatur oder Maus gezielt bestimmte Szenen aufrufen, Objekte bewegen, Informationen in Formulare eingeben oder andere interaktive Operationen ausfhren. Mit ActionScript knnen Sie Skripts erstellen, die dem Flash Player mitteilen, welche Aktion ausgefhrt werden soll, wenn ein bestimmtes Ereignisses eintritt. Ereignisse, die ein Skript auslsen knnen, liegen z. B. dann vor, wenn ein bestimmtes Bild abgespielt wird, ein Movieclip geladen oder entladen wird oder der Benutzer auf eine Schaltflche klickt bzw. eine Taste drckt. Skripts knnen entweder aus einem einzelnen Befehl bestehen und z. B. bewirken, dass eine SWF-Datei angehalten wird, oder mehrere Befehle und Anweisungen enthalten, wenn beispielsweise zuerst eine Bedingung berprft und anschlieend eine Aktion ausgefhrt werden soll. Viele ActionScript-Befehle sind relativ einfach und ermglichen beispielsweise das Erstellen grundlegender Bedienelemente fr eine SWF-Datei. Andere Aktionen hingegen setzen ein gewisses Ma an Erfahrung im Umgang mit Programmiersprachen voraus und dienen zur Entwicklung hherer Programmfunktionen.

Ereignisse und Interaktionen


Wenn ein Benutzer mit der Maus klickt oder eine Taste drckt, wird ein Ereignis generiert. Diese Ereignistypen werden allgemein als Benutzerereignisse bezeichnet, da sie als Reaktion auf Endbenutzeraktionen generiert werden. Sie knnen ActionScript schreiben, um auf diese Ereignisse zu reagieren bzw. um sie zu verarbeiten. Wenn ein Benutzer auf eine Schaltflche klickt, soll beispielsweise der Abspielkopf in ein anderes Bild in der SWF-Datei springen oder eine neue Webseite in den Browser geladen werden. In einer SWF-Datei generieren Schaltflchen, Movieclips und Textfelder Ereignisse, auf die Sie reagieren knnen. In ActionScript sind drei Verfahren zum Verwalten von Ereignissen verfgbar: Ereignisprozedurmethoden, Ereignis-Listener sowie on()- und onClipEvent()-Prozeduren. Weitere Informationen zu Ereignissen und Ereignisprozeduren finden Sie in Kapitel 4, Ereignisse verarbeiten, auf Seite 91.

99

SWF-Wiedergabe steuern
Die folgenden ActionScript-Funktionen dienen zur Steuerung des Abspielkopfes in der Zeitleiste und zum Laden einer neuen Webseite in ein Browserfenster:

Mit den Funktionen gotoAndPlay() und gotoAndStop() springt der Abspielkopf in ein Bild
oder eine Szene. Hierbei handelt es sich um globale Funktionen, die aus jedem Skript aufgerufen werden knnen. Mit den Methoden MovieClip.gotoAndPlay() und MovieClip.gotoAndStop() knnen Sie in der Zeitleiste eines bestimmten Movieclip-Objekts navigieren. Die Aktionen play() und stop() ermglichen das Starten und Anhalten der Filmwiedergabe. Die Aktion getURL() ruft eine andere URL-Adresse auf.

Gezielt zu bestimmten Bildern oder Szenen springen Mit den globalen Funktionen gotoAndPlay() und gotoAndStop() bzw. mit den gleichwertigen Methoden gotoAndPlay() und gotoAndStop() der MovieClip-Klasse knnen Sie zu spezifischen Bildern oder Szenen springen. Mit jeder Funktion bzw. Methode knnen Sie ein Bild festlegen, zu dem Sie in der aktuellen Szene springen. Wenn Ihr Dokument aus mehreren Szenen besteht, knnen Sie eine Szene und ein Bild als Sprungziele festlegen. Im folgenden Beispiel wird die globale Funktion gotoAndPlay() innerhalb der Ereignisprozedur onRelease eines Button-Objekts verwendet, um den Abspielkopf der Zeitleiste mit der Schaltflche an Bild 10 zu senden.
jump_btn.onRelease = function () { gotoAndPlay(10); }

Im nchsten Beispiel sendet die Methode MovieClip.gotoAndStop() die Zeitleiste des Movieclips categories_mc an Bild 10 und stoppt. Wenn Sie die MovieClip-Methoden gotoAndPlay() und gotoAndStop() verwenden, mssen Sie eine Instanz festlegen, zu der die Methode gehrt.
jump_btn.onPress = function () { categories_mc.gotoAndStop(10); }

Movieclips starten und stoppen Sofern Sie nichts anderes angeben, luft eine SWF-Datei nach dem Starten vollstndig ab, wobei smtliche Bilder in der Zeitleiste wiedergegeben werden. Mit den globalen Funktionen play() und stop() bzw. den gleichwertigen MovieClip-Methoden knnen Sie SWF-Dateien abspielen und anhalten. So haben Sie beispielsweise die Mglichkeit, eine SWF-Datei mit stop() am Ende einer Szene anzuhalten, bevor die nchste Szene wiedergegeben wird. Wenn die SWF-Datei angehalten wurde, muss sie mit play() neu gestartet werden. Die Aktionen play() und stop() bzw. die MovieClip-Methoden knnen sowohl auf die Hauptzeitleiste als auch auf die Zeitleiste eines beliebigen Movieclips oder einer geladenen SWFDatei angewendet werden. Der Movieclip, den Sie steuern mchten, muss einen Instanznamen aufweisen und in der Zeitleiste enthalten sein.

100

Kapitel 5: Interaktionen mit ActionScript erstellen

Mit der folgenden on(press)-Prozedur, die einer Schaltflche zugewiesen ist, wird der Abspielkopf in der SWF-Datei bzw. im Movieclip gestartet, der das Button-Objekt enthlt.
// Einer Schaltflcheninstanz zugewiesen on(press){ // Spielt die Zeitleiste mit der Schaltflche ab play(); }

Derselbe Code fr die on()-Ereignisprozedur erzeugt dabei ein anderes Ergebnis, wenn er einem Movieclip-Objekt statt einer Schaltflche zugewiesen ist. Wenn Anweisungen in einer on()Prozedur einer Schaltflche zugewiesen sind, werden sie standardmig auf die Zeitleiste angewendet, die die Schaltflche enthlt. Hingegen werden Anweisungen in einer on()-Prozedur, die einem Movieclip-Objekt zugewiesen sind, auf den Movieclip angewendet, dem die on()Prozedur zugewiesen ist. Der folgende Code fr die Prozedur on() hlt die Zeitleiste des Movieclips an, dem die Prozedur zugewiesen ist, und nicht die Zeitleiste, die den Movieclip enthlt.
on(press){ stop(); }

Die gleichen Bedingungen gelten fr onClipEvent()-Prozeduren, die Movieclip-Objekten zugewiesen sind. Der folgende Code hlt beispielsweise beim ersten Laden des Movieclips bzw. beim Anzeigen des Movieclips auf der Bhne die Zeitleiste des Movieclips an, der die Prozedur onClipEvent() enthlt.
onClipEvent(load){ stop(); }

Eine andere URL-Adresse aufrufen Mit Hilfe der Funktion getURL() bzw. der Methode MovieClip.getURL() knnen Sie eine Webseite in einem Browserfenster ffnen oder Daten an eine andere Anwendung bertragen, die unter einer bestimmten URL-Adresse bereitgestellt wird. Auf diese Weise haben Sie zum Beispiel die Mglichkeit, eine Schaltflche mit einer Verknpfung zu einer neuen Webseite einzurichten oder Daten zu Zeitleistenvariablen in derselben Weise wie ein HTML-Formular zur Verarbeitung an ein CGI-Skript zu senden. Auerdem knnen Sie auf dieselbe Weise ein Zielfenster festlegen wie beim Ansteuern der Fenster mit einem HTML-Anker-Tag (<a></a>). Wenn ein Benutzer beispielsweise auf die Schaltflcheninstanz homepage_btn. klickt, ffnet der folgende Code die Homepage macromedia.com in einem leeren Browserfenster.
homepage_btn.onRelease = function () { getURL("http://www.macromedia.com", _blank); }

SWF-Wiedergabe steuern

101

Sie knnen Variablen auerdem mit Hilfe von GET bzw. POST zusammen mit der URL senden. Dies ist insbesondere dann sinnvoll, wenn die Seite, die Sie von einem Anwendungsserver hochladen (z. B. ColdFusion Server-Seiten (CFM)), Formvariablen empfangen muss. Angenommen, Sie mchten die CFM-Seite addUser.cfm laden, die die beiden Formvariablen name und age enthlt. Dazu erstellen Sie den Movieclip variables_mc, der diese beiden Variablen wie folgt definiert.
variables_mc.name = "Leif"; variables_mc.age = 28;

Anschlieend ldt der folgende Code die Seite addUser.cfm in ein leeres Browserfenster und bertrgt variables_mc.name und variables_mc.age in den POST-Header der CFM-Seite.
variables_mc.getURL("addUser.cfm", "_blank", "POST");

Weitere Informationen finden Sie unter getURL() auf Seite 415.

Interaktivitt und visuelle Effekte erstellen


Um Interaktivitt und andere visuelle Effekte zu erstellen, mssen Sie in der Lage sein, die folgenden Techniken einzusetzen:

Benutzerdefinierte Mauszeiger erstellen Mausposition abfragen Tastenaktionen erfassen Farbwerte festlegen Soundsteuerungen erstellen Kollisionen erkennen Zeichenwerkzeuge fr einfache Linien erstellen

Benutzerdefinierte Mauszeiger erstellen Der Standardmauszeiger ist die Bildschirmdarstellung des Cursors eines Benutzers durch das Betriebssystem. Wenn Sie den Standardmauszeiger durch einen in Flash gestalteten Mauszeiger ersetzen, knnen Sie die Mausbewegungen des Benutzers enger in die SWF-Datei integrieren. In dem Beispiel in diesem Abschnitt wird ein benutzerdefinierter Mauszeiger verwendet, der wie ein groer Pfeil aussieht. Der eigentliche Vorteil dieser Funktion liegt jedoch darin, dass Sie dem benutzerdefinierten Mauszeiger eine beliebige Form verleihen knnen, damit der Benutzer ihn beispielsweise als Fuball ber die Torlinie rollen oder als Stoffmuster ber ein Sofa ziehen kann, um dessen Bezug zu ndern. Sie gestalten einen benutzerdefinierten Mauszeiger, indem Sie einen entsprechenden MauszeigerMovieclip auf der Bhne erstellen. Anschlieend blenden Sie den Standardmauszeiger in ActionScript aus und ersetzen ihn durch Ihren benutzerdefinierten Mauszeiger. Verwenden Sie zu diesem Zweck die Methode Mouse.hide() der integrierten Mouse-Klasse, um den Standardmauszeiger auszublenden, und die Aktion startDrag(), um Ihren Movieclip als Mauszeiger einzubinden.

102

Kapitel 5: Interaktionen mit ActionScript erstellen

So erstellen Sie einen benutzerdefinierten Mauszeiger:

1 Erstellen Sie einen Movieclip, der als benutzerdefinierter Mauszeiger verwendet werden soll,

und platzieren Sie eine Instanz des Clips auf der Bhne.
2 Whlen Sie die Movieclip-Instanz auf der Bhne aus. 3 Wenn das Bedienfeld Aktionen nicht angezeigt wird, whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen. 4 Geben Sie im Bedienfeld Aktionen Folgendes ein:


onClipEvent (load) { Mouse.hide(); startDrag(this, true); } onClipEvent(mouseMove) { updateAfterEvent(); }

Mit der ersten Prozedur onClipEvent() wird der Mauszeiger ausgeblendet, wenn der Movieclip auf der Bhne angezeigt wird. Mit der zweiten Prozedur wird updateAfterEvent aufgerufen, wenn der Benutzer den Mauszeiger bewegt. Mit der Funktion updateAfterEvent wird der Bildschirm sofort nach dem Eintreten des Ereignisses aktualisiert. Standardmig wird der Bildschirm erst beim Zeichnen des nchsten Bilds aktualisiert. (Weitere Informationen finden Sie unter updateAfterEvent() auf Seite 759.) 5 Whlen Sie Steuerung > Film testen, um Ihren benutzerdefinierten Mauszeiger zu testen. Die Darstellung des Mauszeigers hat keinerlei Einfluss auf die Funktion der Schaltflchen. Es wird jedoch empfohlen, den benutzerdefinierten Mauszeiger auf die oberste Ebene der Zeitleiste zu setzen, damit er ber allen Schaltflchen und anderen Objekten dargestellt wird, wenn Sie die Maus innerhalb der SWF-Datei bewegen. Die Spitze eines benutzerdefinierten Mauszeigers ist zudem der Registrierungspunkt des Movieclips, der als benutzerdefinierter Mauszeiger verwendet wird. Wenn also ein bestimmter Teil des Movieclips als Mauszeigerspitze dienen soll, stellen Sie die Koordinaten des Registrierungspunkts des Clips auf diesen Punkt ein. Weitere Informationen zu den Methoden der Mouse-Klasse finden Sie unter dem Eintrag Mouse-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Interaktivitt und visuelle Effekte erstellen

103

Mausposition abfragen Die Position des Mauszeigers (Cursors) in einer SWF-Datei lsst sich anhand der Eigenschaften und _ymouse ermitteln. Jede Zeitleiste weist eine _xmouse- und eine _ymouseEigenschaft auf, die die Position der Maus innerhalb ihres Koordinatensystems in Bezug auf den Registrierungspunkt zurckgeben. Der Registrierungspunkt der Hauptzeitleiste (_level0) befindet sich in der linken oberen Ecke.
_xmouse

Die Eigenschaften _xmouse und _ymouse in der Hauptzeitleiste und der Zeitleiste eines Movieclips Die folgenden Anweisungen beschreiben zwei Mglichkeiten, die Position des Mauszeigers zu ermitteln.
So rufen Sie die aktuelle Mauszeigerposition in der Hauptzeitleiste ab:

1 Erstellen Sie zwei dynamische Textfelder, und weisen Sie ihnen die Namen x_pos und y_pos

zu.
2 Wenn das Bedienfeld Aktionen nicht angezeigt wird, whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen.


3 Fgen Sie in ein beliebiges Bild der SWF-Datei auf _level0 den folgenden Code ein, der die

Position der Maus zurckgibt:


x_pos = _root._xmouse; y_pos = _root._ymouse;

Die Variablen x_pos und y_pos dienen zum Speichern der Mauszeigerkoordinaten und knnen in allen Skripts Ihres aktuellen Dokuments verwendet werden. Die folgende onClipEvent()Prozedur bewirkt, dass die Werte der Variablen x_pos und y_pos laufend aktualisiert werden, whrend der Benutzer den Mauszeiger bewegt.
onClipEvent(mouseMove) { x_pos = _root._xmouse; y_pos = _root._ymouse; }

104

Kapitel 5: Interaktionen mit ActionScript erstellen

So rufen Sie die aktuelle Mauszeigerposition in einem Movieclip ab:

1 Erstellen Sie den Movieclip. 2 Whlen Sie die Movieclip-Instanz auf der Bhne aus. Weisen Sie der Movieclip-Instanz im

Eigenschafteninspektor den Namen meinMovieClip zu. 3 Wenn das Bedienfeld Aktionen nicht angezeigt wird, whlen Sie Fenster > EntwicklungsBedienfelder > Aktionen. 4 Verwenden Sie den Instanznamen des Movieclips, um die Position des Mauszeigers in der Hauptzeitleiste zurckzugeben. Die folgende Anweisung beispielsweise knnte in einer beliebigen Zeitleiste der SWF-Datei auf _level0 platziert werden und gibt die _ymouse-Position in der Instanz meinMovieClip zurck:
x_pos = _root.meinMovieClip._xmouse y_pos = _root.meinMovieClip._ymouse

Der Code gibt die _xpos- und _ypos-Koordinatenwerte des Mauszeigers in Bezug auf den Registrierungspunkt zurck. 5 Whlen Sie Steuerung > Film testen, um den Film zu testen. Sie knnen die Mauszeigerposition innerhalb eines Movieclips wie im folgenden Beispiel dargestellt auch mit Hilfe der Eigenschaften _xmouse und _ymouse in einem Movieclipereignis ermitteln:
onClipEvent (enterFrame) { xmousePosition = this._xmouse; ymousePosition = this._ymouse; }

Weitere Informationen ber die Eigenschaften _xmouse und _ymouse finden Sie unter MovieClip._xmouse auf Seite 560 und MovieClip._ymouse auf Seite 561. Tastenaktionen erfassen Mit Hilfe der Methoden der integrierten Key-Klasse knnen Sie feststellen, welche Taste der Benutzer zuletzt gedrckt hat. Fr die Key-Klasse wird keine Konstruktorfunktion bentigt. Wie das folgende Beispiel zeigt, brauchen Sie lediglich die Methoden der Klasse selbst aufzurufen, wenn Sie die Methoden verwenden mchten:
Key.getCode();

Auf diese Weise lassen sich wahlweise virtuelle Tastencodes oder die ASCII-Werte (American Standard Code for Information Interchange) der gedrckten Tasten ermitteln:

Zum Abrufen des virtuellen Tastencodes der zuletzt gedrckten Taste verwenden Sie die
Methode getCode(). Zum Abrufen des ASCII-Wertes der zuletzt gedrckten Taste verwenden Sie die Methode getAscii().

Jeder Taste auf der Tastatur ist ein virtuelle Tastencode zugeordnet. Die Nach-links-Taste beispielsweise weist den virtuellen Tastencode 37 auf. Mit Hilfe virtueller Tastencodes knnen Sie sicherstellen, dass sich Ihre SWF-Datei unabhngig von der Sprache des Betriebssystems und der Plattform, auf der sie wiedergegeben wird, stets mit denselben Tasten steuern lsst.

Interaktivitt und visuelle Effekte erstellen

105

Die ASCII-Werte sind den ersten 127 Zeichen eines jeden Zeichensatzes zugeordnet und stellen Informationen zu den auf dem Bildschirm dargestellten Zeichen bereit. Die Buchstaben A und a weisen zum Beispiel unterschiedliche ASCII-Werte auf. Legen Sie fest, welche Tasten verwendet werden sollen, und bestimmen Sie mit einer der folgenden Methoden deren virtuellen Tastencode:

Schlagen Sie in der Liste der Tastencodes in Anhang C, Tastaturtasten und Tastencodewerte,
auf Seite 807 nach. Verwenden Sie eine Konstante der Key-Klasse. Klicken Sie dazu in der Werkzeugleiste Aktionen der Reihe nach auf die Kategorien Integrierte Klassen, Film, Taste und Konstanten. Weisen Sie die folgende onClipEvent()-Prozedur einem Movieclip zu, und whlen Sie anschlieend Steuerung > Film testen, und drcken Sie die gewnschte Taste.
onClipEvent(keyDown) { trace(Key.getCode()); }

Der Tastencode der gewnschten Taste wird im Bedienfeld Ausgabe angezeigt.

106

Kapitel 5: Interaktionen mit ActionScript erstellen

Die Methoden der Key-Klasse werden hufig innerhalb einer Ereignisprozedur eingesetzt. Im folgenden Beispiel bewegt der Benutzer das Auto mit den Pfeiltasten. Hierbei gibt die Methode Key.isDown() an, welche der Pfeiltasten (<Nach-links>, <Nach-rechts>, <Nach-oben> oder <Nach-unten>) jeweils gedrckt wird. Die Ereignisprozedur onEnterFrame ermittelt den Wert Key.isDown(tastencode) aus der if-Anweisung, Anhand des Werts wird der Flash Player von der Prozedur angewiesen, die Position des Autos zu ndern und es in der korrekten Fahrtrichtung darzustellen.

Das Auto wird durch Tastatureingaben gesteuert. Im folgenden Verfahren wird beschrieben, wie Sie Tastenaktionen erfassen knnen, um einen Movieclip auf der Bhne mit der entsprechenden Pfeiltaste nach oben, unten, links oder rechts zu verschieben. Der Movieclip wird einer beliebigen Flche zugeordnet, die 400 Pixel breit und 300 Pixel hoch ist. Auerdem wird in einem Textfeld der Name der gedrckten Taste angezeigt.
So erstellen Sie einen Movieclip mit Tastatursteuerung:

1 Erstellen Sie auf der Bhne den Movieclip, der mit den Pfeiltasten gesteuert werden soll.

In diesem Beispiel lautet der Instanzname des Movieclips car.


2 Erstellen Sie auf der Bhne ein dynamisches Textfeld fr die Anzeige der Fahrtrichtung des

Autos, Sie knnen mit dem Eigenschafteninspektor einen Instanznamen (display_txt) zuweisen.
Hinweis: Bitte beachten Sie in diesem Zusammenhang den Unterschied zwischen Variablen- und Instanznamen. Weitere Informationen finden Sie unter Textfeldinstanzen und Variablennamen auf Seite 150.

Interaktivitt und visuelle Effekte erstellen

107

3 Klicken Sie in der Zeitleiste auf Bild 1. Wenn das Bedienfeld Aktionen nicht angezeigt wird,

whlen Sie Fenster > Entwicklungs-Bedienfelder > Aktionen.


4 Um die Bewegung des Autos ber den Bildschirm bei jedem Tastendruck festzulegen,

definieren Sie die Variable distanz mit dem Ausgangswert 10.


var distanz = 10;

5 Um fr den Auto-Movieclip die Ereignisprozedur zur Ermittlung der momentan gedrckten

Pfeiltaste (<Nach-links>, <Nach-rechts>, <Nach-oben> oder <Nach-unten>) zu erstellen, fgen Sie im Bedienfeld Aktionen den folgenden Code hinzu:
car.onEnterFrame = function() { }

6 Fgen Sie der onEnterFrame-Prozedur eine with-Anweisung hinzu, und legen Sie car als

Objekt fr die with-Anweisung fest. Ihr Code sollte nun folgendermaen aussehen:
var distanz = 10; car.onEnterFrame = function() { with (car) { } }

7 Um zu sehen, ob die Taste <Nach-rechts> gedrckt und der Auto-Movieclip entsprechend

abgespielt wird, fgen Sie dem Hauptteil der with-Anweisung den folgenden Code hinzu. Ihr Code sollte nun folgendermaen aussehen:
distanz = 10; car.onEnterFrame = function() { with (car) { if (Key.isDown(Key.RIGHT)) { _x += distanz; if (_x >= 400) { _x = 400; } _root.display_txt.text = "Nach rechts"; } } }

Wenn die Taste <Nach-rechts> gedrckt wird, wird die Eigenschaft _x des Autos um den durch die Variable distanz festgelegten Wert erhht. Die nchste if-Anweisung prft, ob der Wert der Eigenschaft _x grer oder gleich 400 ist (if(_x >=400)); wenn dies der Fall ist, wird die Position auf den Wert 400 festgelegt. Darber hinaus wird in der SWF-Datei der Text Nach rechts eingeblendet.

108

Kapitel 5: Interaktionen mit ActionScript erstellen

8 Prfen Sie mit hnlichem Code, ob die Nach-links-, Nach-oben- oder Nach-unten-Tasten

gedrckt werden. Ihr Code sollte nun folgendermaen aussehen:


var distanz = 10; car.onEnterFrame = function() { with (car) { if (Key.isDown(Key.RIGHT)) { _x += distanz; if (_x >= 400) { _x = 400; } _root.display_txt.text = "Nach rechts"; } else if (Key.isDown(Key.LEFT)) { _x -= distanz; if (_x < 0) { _x = 0; } _root.display_txt.text = "Nach links"; } else if (Key.isDown(Key.UP)) { _y -= distanz; if (_y < 0) { _y = 0 ; } _root.display_txt.text = "Nach oben"; } else if (Key.isDown(Key.DOWN)) { _y += distanz; if (_y > 300) { _y = 300; } _root.display_txt.text = "Nach unten"; } } }

9 Whlen Sie Steuerung > Film testen, um die SWF-Datei zu testen.

Weitere Informationen zu den Methoden der Key-Klasse finden Sie unter dem Eintrag KeyKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Interaktivitt und visuelle Effekte erstellen

109

Farbwerte festlegen Mit Hilfe der Methoden der integrierten Color-Klasse knnen Sie die Farbe eines Movieclips einstellen. Die Methode setRGB() weist dem Movieclip hexadezimale RGB-Werte (Rot, Grn, Blau) zu. Im folgenden Beispiel wird die Farbe eines Objekts nach den Angaben des Benutzers mit der Methode setRGB() gendert.

Die Schaltflchenaktion erstellt ein Color-Objekt und ndert die Farbe des Autos nach den Angaben des Benutzers.
So legen Sie den Farbwert eines Movieclips fest:

1 Whlen Sie auf der Bhne einen Movieclip aus. 2 Geben Sie im Eigenschafteninspektor den Instanznamen carColor an. 3 Erstellen Sie eine Schaltflche namens Farbfeld, platzieren Sie vier Instanzen dieser

Schaltflche auf der Bhne, und weisen Sie ihnen die Namen Rot, Grn, Blau und Schwarz zu.
4 Whlen Sie in der Hauptzeitleiste Bild 1 aus, und whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen.


5 Um ein neues Color-Objekt zu erstellen, das den Movieclip carColor anspricht, fgen Sie im

Bedienfeld Aktionen den folgenden Code hinzu:


meineColor = new Color(_root.carColor);

6 Damit die blaue Schaltflche die Farbe des Movieclips carColor in die Farbe Blau ndert,

fgen Sie im Bedienfeld Aktionen den folgenden Code hinzu:


_root.blue.onRelease = function(){ meineColor.setRGB(0x0000ff) }

Der Hexadezimalwert 0x0000ff steht fr die Farbe Blau. In der folgenden Tabelle sind die brigen Farben und deren Hexadezimalwerte aufgelistet.

110

Kapitel 5: Interaktionen mit ActionScript erstellen

7 Wiederholen Sie Schritt 6 fr die brigen Schaltflchen (rot, grn und schwarz), um die Farbe

des Movieclips in die entsprechende Farbe zu ndern. Der Code sieht jetzt folgendermaen aus:
meineColor = new Color(_root.carColor) _root.blue.onRelease = function(){ meineColor.setRGB(0x0000ff) } _root.red.onRelease = function(){ meineColor.setRGB(0xff0000) } _root.green.onRelease = function(){ meineColor.setRGB(0x00ff00) } _root.black.onRelease = function(){ meineColor.setRGB(0x000000) }

8 Whlen Sie Steuerung > Film testen, um die Farbe des Movieclips zu ndern.

Weitere Informationen zu den Methoden der Color-Klasse finden Sie unter dem Eintrag ColorKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Soundsteuerungen erstellen Mit Hilfe der integrierten Sound-Klasse knnen Sie den Sound in einer SWF-Datei steuern. Bevor Sie die Methoden der Sound-Klasse verwenden knnen, mssen Sie zunchst ein neues Sound-Objekt erstellen. Anschlieend knnen Sie mit der Methode attachSound() whrend der SWF-Wiedergabe einen Sound aus der Bibliothek in die SWF-Datei einfgen.

Wenn der Benutzer die Schaltflche Abspielen loslsst, ist ber den Lautsprecher Musik zu hren.

Interaktivitt und visuelle Effekte erstellen

111

Die Methode setVolume() der Sound-Klasse steuert die Lautstrke, whrend die Methode setPan() die Balance (rechts/links) eines Sounds anpasst.

Wenn der Benutzer den Lautstrkeregler bettigt, wird die setVolume()-Methode aufgerufen. In der folgenden Anleitung wird gezeigt, wie Sie Soundsteuerungen wie die oben dargestellten erstellen.
So ordnen Sie einer Zeitleiste einen Sound zu:

1 Whlen Sie Datei > Importieren, um einen Sound zu importieren. 2 Whlen Sie den Sound in der Bibliothek aus, klicken Sie mit der rechten Maustaste (Windows)

bzw. bei gedrckter Taste <Ctrl> (Macintosh), und whlen Sie Verknpfung.
3 Whlen Sie Export fr ActionScript und In erstes Bild exportieren, und weisen Sie dem Sound

den Bezeichner a_thousand_ways zu.


4 Platzieren Sie eine Schaltflche auf der Bhne, und weisen Sie ihr den Bezeichner playButton

zu.
5 Platzieren Sie eine Schaltflche auf der Bhne, und weisen Sie ihr den Bezeichner stopButton

zu.
6 Platzieren Sie einen Movieclip auf der Bhne, und weisen Sie ihm den Bezeichner speaker zu.

112

Kapitel 5: Interaktionen mit ActionScript erstellen

7 Whlen Sie in der Hauptzeitleiste Bild 1 aus, und whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen. Fgen Sie im Bedienfeld Aktionen folgenden Code hinzu:
speaker.stop(); song = new Sound(); song.onSoundComplete = function() { speaker.stop(); }; song.attachSound("a_thousand_ways"); playButton.onRelease = function() { song.start(); speaker.play(); }; stopButton.onRelease = function () { song.stop(); speaker.stop(); }

Durch diesen Code wird zunchst der Movieclip speaker angehalten. Dann erstellt er ein neues Sound-Objekt (song) und weist es dem Sound mit dem Verknpfungsbezeichner a_thousand_ways zu. Danach wird eine onSoundComplete-Prozedur fr das Song-Objekt definiert. Dadurch wird der Movieclip speaker angehalten, wenn kein Sound mehr abgespielt wird. Abschlieend starten und stoppen onRelease-Prozeduren, die mit den Objekten playButton und stopButton verknpft sind, den Sound mit Hilfe der Methoden Sound.start() und Sound.stop() sowie den Movieclip speaker. 8 Whlen Sie Steuerung > Film testen, um den Sound wiederzugeben.
So erstellen Sie einen Lautstrkeregler:

1 Ziehen Sie eine Schaltflche auf die Bhne. 2 Whlen Sie die Schaltflche aus, und whlen Sie Modifizieren > In Symbol konvertieren.

Whlen Sie das Verhalten des Movieclips. Hierdurch wird ein Movieclip mit der Schaltflche im ersten Bild erstellt. 3 Klicken Sie auf den Movieclip, und whlen Sie Bearbeiten > Auswahl bearbeiten. 4 Whlen Sie die Schaltflche aus, und whlen Sie Fenster > Entwicklungs-Bedienfelder > Aktionen. 5 Geben Sie die folgenden Aktionen ein:
on(press){ startDrag(this, false, left, top, right, bottom); } on(release) { stopDrag(); }

Die startDrag()-Parameter left, top, right und bottom sind Variablen, die in einer Movieclip-Aktion eingestellt werden. 6 Whlen Sie Bearbeiten > Dokument bearbeiten, um zur Hauptzeitleiste zurckzukehren. 7 Whlen Sie den Movieclip auf der Bhne aus.

Interaktivitt und visuelle Effekte erstellen

113

8 Geben Sie die folgenden Aktionen ein:


onClipEvent (load) { top = _y; bottom = _y; left = _x; right = _x+100; _x += 100; } onClipEvent (enterFrame) { _parent.song.setVolume(_x-left); }

9 Whlen Sie Steuerung > Film testen, um den Lautstrkeregler zu verwenden.


So erstellen Sie einen Balanceregler:

1 Ziehen Sie eine Schaltflche auf die Bhne. 2 Whlen Sie die Schaltflche aus, und whlen Sie Einfgen > In Symbol konvertieren. Whlen

Sie die Eigenschaft des Movieclips. 3 Klicken Sie auf den Movieclip, und whlen Sie Bearbeiten > Symbol bearbeiten. 4 Whlen Sie die Schaltflche aus, und whlen Sie Fenster > Entwicklungs-Bedienfelder > Aktionen. 5 Geben Sie die folgenden Aktionen ein:
on(press){ startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; }

Die startDrag()-Parameter left, top, right und bottom sind Variablen, die in einer Movieclip-Aktion eingestellt werden. 6 Whlen Sie Bearbeiten > Dokument bearbeiten, um zur Hauptzeitleiste zurckzukehren. 7 Whlen Sie den Movieclip auf der Bhne aus. 8 Geben Sie die folgenden Aktionen ein:
onClipEvent(load){ top=_y; bottom=_y; left=_x-50; right=_x+50; center=_x; } onClipEvent (enterFrame) { if (dragging==true){ _parent.setPan((_x-center)*2); } }

9 Whlen Sie Steuerung > Film testen, um den Balanceregler zu verwenden.

Weitere Informationen zu den Methoden der Sound-Klasse finden Sie unter dem Eintrag Sound-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

114

Kapitel 5: Interaktionen mit ActionScript erstellen

Kollisionen erkennen Mit der Methode hitTest() der MovieClip-Klasse knnen Sie Kollisionen in einer SWF-Datei erkennen. Sie prft, ob ein Objekt mit einem Movieclip kollidiert ist, und gibt einen Booleschen Wert (true oder false) zurck. Die Kollisionserkennung ist insbesondere in zwei Fllen von Nutzen, nmlich um zu prfen, ob der Benutzer einen bestimmten statischen Bereich der Bhne erreicht hat, und um festzustellen, ob ein Movieclip einen anderen Movieclip berhrt. Beides ist mit Hilfe der Methode hitTest() mglich. Sie knnen entweder mit den Parametern von hitTest() die x- und y-Koordinaten des Kollisionsbereichs auf der Bhne festlegen oder den Zielpfad eines anderen Movieclips als Kollisionsbereich angeben. Wenn Sie den Kollisionsbereich anhand der x- und y-Koordinaten festlegen, gibt hitTest() den Wert true zurck, wenn es sich bei dem durch (x, y) angegebenen Punkt um einen nichttransparenten Punkt handelt. Wenn Sie ein Ziel an die hitTest()Methode bergeben, werden die Begrenzungsboxen der beiden Movieclips verglichen. Wenn sie sich berlappen, gibt hitTest() den Wert true zurck. Wenn die beiden Begrenzungsboxen hingegen keine Schnittpunkte aufweisen, gibt hitTest() den Wert false zurck.

Im Textfeld wird die Meldung True angezeigt, solange sich der Mauszeiger innerhalb der Umrisslinien des Autos befindet.

Interaktivitt und visuelle Effekte erstellen

115

Sie knnen hitTest() auch verwenden, um die Kollision zweier Movieclips zu erkennen.

Im Textfeld wird die Meldung True angezeigt, wenn sich die beiden Movieclips berhren. In der folgenden Anleitung wird anhand des Beispiels mit dem Auto beschrieben, wie Sie eine Kollision erkennen knnen.
So erkennen Sie eine Kollision zwischen einem Movieclip und einem Punkt auf der Bhne:

1 Erstellen Sie auf der Bhne einen neuen Movieclip, und weisen Sie ihm den Instanznamen box

im Eigenschafteninspektor zu.
2 Erstellen Sie auf der Bhne ein dynamisches Textfeld, und weisen Sie ihm im

Eigenschafteninspektor den Instanznamen status zu.


3 Whlen Sie in der Zeitleiste in Ebene 1 das erste Bild aus. 4 Wenn das Bedienfeld Aktionen nicht angezeigt wird, whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen. 5 Fgen Sie im Bedienfeld Aktionen den folgenden Code hinzu:
box.onEnterFrame = function () { status.text = this.hitTest(_xmouse, _ymouse, true); }

6 Whlen Sie Steuerung > Film testen, und bewegen Sie den Mauszeiger ber den Movieclip, um

die Kollisionserkennung zu testen. Im Textfeld erscheint die Meldung true, wenn sich der Mauszeiger ber einem nichttransparenten Pixel befindet.
So erkennen Sie eine Kollision zwischen zwei Movieclips:

1 Ziehen Sie zwei Movieclips auf die Bhne, und weisen Sie ihnen die Instanznamen car und
area

zu.

2 Erstellen Sie auf der Bhne ein dynamisches Textfeld, und weisen Sie ihm im

Eigenschafteninspektor den Instanznamen status zu.


3 Whlen Sie in der Zeitleiste in Ebene 1 das erste Bild aus. 4 Wenn das Bedienfeld Aktionen nicht angezeigt wird, whlen Sie Fenster > Entwicklungs-

Bedienfelder > Aktionen.

116

Kapitel 5: Interaktionen mit ActionScript erstellen

5 Geben Sie im Bedienfeld Aktionen den folgenden Code ein:


area.onEnterFrame = function () { status.text=this.hitTest(car); } car.onPress = function (){ this.startDrag(false); updateAfterEvent(); } car.onRelease = function () { this.stopDrag(); }

6 Whlen Sie Steuerung > Film testen, und verschieben Sie den Movieclip, um die

Kollisionserkennung zu testen. Im Textfeld erscheint die Meldung true, wenn sich die Begrenzungsboxen des Autos und des Bereichs schneiden. Weitere Informationen finden Sie unter MovieClip.hitTest() in Kapitel 12, ActionScriptLexikon, auf Seite 229. Zeichenwerkzeuge fr einfache Linien erstellen Mit Hilfe der Methoden der MovieClip-Klasse knnen Sie whrend der Wiedergabe der SWFDatei Linien und Fllungen auf der Bhne zeichnen. Auf diese Weise haben Sie die Mglichkeit, Zeichenwerkzeuge fr die Benutzer Ihrer SWF-Datei zu erstellen und in Reaktion auf bestimmte Ereignisse Formen darin zu zeichnen. Folgende Zeichenmethoden stehen zur Verfgung: beginFill(), beginGradientFill(), clear(), curveTo(), endFill(), lineTo(), lineStyle() und moveTo(). Diese Methoden knnen auf beliebige Movieclip-Instanzen (z. B. meinClip.lineTo()) bzw. Stufen (_root.curveTo()) angewendet werden. Die Methoden lineTo() und curveTo() dienen zum Zeichnen von Linien bzw. Kurven. Mit der Methode lineStyle() werden Linienfarben, Strichstrken und Alpha-Einstellungen fr Linien und Kurven festgelegt. Die Zeichnungsmethode moveTo() stellt die aktuelle Zeichnungsposition auf die von Ihnen festgelegten x- und y-Bhnenkoordinaten ein. Durch die Methoden beginFill() und beginGradientFill() wird ein geschlossener Pfad einfarbig bzw. mit einem Farbverlauf gefllt. endFill() verwendet die Fllung, die seit dem letzten Aufruf der Methode beginFill() bzw. beginGradientFill() hinzugefgt wurde. Die Methode clear() lscht die Zeichnungsobjekte aus dem angegebenen Movieclip-Objekt. Weitere Informationen finden Sie unter MovieClip.beginFill() auf Seite 510, MovieClip.beginGradientFill() auf Seite 510, MovieClip.clear() auf Seite 513, MovieClip.curveTo() auf Seite 516, MovieClip.endFill() auf Seite 519, MovieClip.lineTo() auf Seite 531, MovieClip.lineStyle() auf Seite 530 und MovieClip.moveTo() auf Seite 536.

Interaktivitt und visuelle Effekte erstellen

117

So erstellen Sie ein Zeichenwerkzeug fr einfache Linien:

1 Erstellen Sie in einem neuen Dokument eine Schaltflche auf der Bhne, und geben Sie im

Eigenschafteninspektor fr den Instanznamen clear_btn ein.


2 Klicken Sie in der Zeitleiste auf Bild 1. Wenn das Bedienfeld Aktionen nicht angezeigt wird,

whlen Sie Fenster > Entwicklungs-Bedienfelder > Aktionen.


3 Geben Sie im Bedienfeld Aktionen den folgenden Code ein:
_root.onMouseDown = function() { _root.lineStyle(5, 0xFF0000, 100); _root.moveTo(_root._xmouse, _root._ymouse); isDrawing = true; }; _root.onMouseMove = function() { if (isDrawing == true) { _root.lineTo(_root._xmouse, _root._ymouse); updateAfterEvent(); } }; _root.onMouseUp = function() { isDrawing = false; }; clear_btn.onRelease = function() { _root.clear(); };

4 Whlen Sie Steuerung > Film testen, um den Film zu testen. Klicken Sie auf die Maustaste, und

zeichnen Sie durch Ziehen der Maus eine Linie auf der Bhne. Klicken Sie auf die Schaltflche, um die von Ihnen erstellten Zeichnungsobjekte zu lschen.

118

Kapitel 5: Interaktionen mit ActionScript erstellen

Analyse eines Beispielskripts


Wenn Sie in der SWF-Beispieldatei zapper.swf, die Sie in der Hilfe Mit Flash arbeiten anzeigen knnen, den Kfer auf die Steckdose ziehen, fngt diese an zu wackeln, und der Kfer fllt zu Boden. Die Hauptzeitleiste dieses Films enthlt lediglich ein Bild mit drei Objekten, dem Marienkfer, der Steckdose und einer Reset-Schaltflche. Bei jedem dieser drei Objekte handelt es sich um eine Movieclip-Instanz.

Die SWF-Datei enthlt ein Skript, das der Instanz bug zugewiesen ist. Dieses Skript sieht im Bedienfeld Aktionen folgendermaen aus:

Aktion

Ereignisprozedur Ereignis

Variable

if-Bedingungsanweisung

Das Bedienfeld Aktionen mit dem der Instanz bug zugewiesenen Skript Der Instanzname des Kfers lautet bug und der Instanzname der Steckdose zapper. Im Skript wird auf den Kfer mit dem Schlsselwort this verwiesen, da das Skript dem Kfer zugewiesen ist und das reservierte Wort this auf das Objekt verweist, das das Skript enthlt.

Analyse eines Beispielskripts

119

Das Skript enthlt zwei onClipEvent()-Prozeduren mit zwei unterschiedlichen Ereignissen: load und enterFrame. Die Aktionen in der Anweisung onClipEvent(load) werden nur einmal beim Laden der SWF-Datei ausgefhrt. Die Aktionen in der Anweisung onClipEvent(enterFrame) werden jedes Mal ausgefhrt, wenn der Abspielkopf ein Bild erreicht. Selbst wenn eine SWF-Datei nur aus einem einzigen Bild besteht, wird dieses Bild vom Abspielkopf wiederholt angesteuert und das Skript dadurch erneut ausgefhrt. Hierbei finden in den onClipEvent()-Prozeduren folgende Aktionen statt: Die beiden Variablen initx und inity werden als ursprngliche x- und yKoordinatenwerte der Position der Movieclip-Instanz bug definiert. Eine Funktion wird definiert und dem Ereignis onRelease der Reset-Instanz zugewiesen. Diese Funktion wird jedes Mal aufgerufen, wenn der Benutzer die Maustaste drckt und wieder loslsst, whrend sich der Mauszeiger auf der Schaltflche Zurcksetzen befindet. Sie platziert den Marienkfer an seiner Ausgangsposition auf der Bhne, setzt seine Rotations- und Alphawerte zurck und stellt die Variable zapped auf false ein.
onClipEvent(load) onClipEvent(enterFrame) Eine bedingte if-Anweisung prft mit Hilfe der Methode hitTest(), ob die Kferinstanz die Steckdoseninstanz berhrt (_root.zapper). Die beiden mglichen Ergebnisse dieser Auswertung lauten true oder false: onClipEvent (load) { initx = _x; inity = _y; _root.Reset.onRelease = function() { zapped = false; _x = initx; _y = inity; _alpha = 100 _rotation = 0; }; }

Wenn die Methode hitTest() den Wert true zurckgibt, ruft das Skript die Methode stopDrag() auf, setzt die Variable zapper auf true, ndert die Alpha- und Rotationseigenschaften und startet die Instanz zapped. Wenn die Methode hitTest() den Wert false zurckgibt, wird der Code in der auf die ifAnweisung folgenden geschweiften Klammer ({...}) nicht ausgefhrt.

120

Kapitel 5: Interaktionen mit ActionScript erstellen

Der bug-Instanz sind zwei on()-Prozeduren mit unterschiedlichen Ereignissen zugewiesen: press und release. Die Aktionen in der Anweisung on(press) werden ausgefhrt, wenn der Benutzer die Maustaste bettigt, whrend sich der Mauszeiger auf der bug-Instanz befindet. Die Aktionen in der Anweisung on(release) werden ausgefhrt, wenn der Benutzer die Maustaste loslsst, whrend sich der Mauszeiger auf der bug-Instanz befindet. Hierbei finden in den onClipEvent()-Prozeduren folgende Aktionen statt:
on(press) Der Marienkfer wird mit einer startDrag()-Aktion als verschiebbares Objekt definiert. Da das Skript der bug-Instanz zugewiesen ist, verweist das Schlsselwort this auf die bug-Instanz und bewirkt, dass der Benutzer den Marienkfer und nicht etwa die Steckdose mit der Maus verschieben kann: on(press){ this.startDrag(); } on(release)

Der Marienkfer wird mit einer stopDrag()-Aktion wieder als nicht-ziehbares Objekt definiert:

on(release) { stopDrag(); }

Informationen zum Abspielen der SWF-Datei finden Sie in der Online-Hilfe dieses ActionScriptReferenzhandbuchs.

Analyse eines Beispielskripts

121

122

Kapitel 5: Interaktionen mit ActionScript erstellen

TEIL III Mit Objekten und Klassen arbeiten

TEIL III

In diesem Teil werden das Laufzeit-Objektmodell von Macromedia Flash und dessen Funktionen beschrieben. Dabei wird vor allem auf die Arbeit mit Movieclips und Texten eingegangen. Auerdem erfahren Sie hier, wie Sie eigene Klassen und Schnittstellen in ActionScript 2.0 erstellen. Kapitel 6: Integrierte Klassen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Kapitel 7: Mit Movieclips arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Kapitel 8: Mit Text arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Kapitel 9: Klassen mit ActionScript 2.0 erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

KAPITEL 6 Integrierte Klassen verwenden

Neben den Kernelementen und Konstrukten der ActionScript-Sprache (z. B. die Schleifen for und while) und Grunddatentypen (Zahlen, Strings und Arrays), die bereits erlutert wurden (siehe ActionScript-Grundlagen auf Seite 27), enthlt ActionScript mehrere integrierte Klassen bzw. komplexe Datentypen. Durch diese Klassen knnen Sie zahlreiche Funktionen zur Skripterstellung nutzen. Einige dieser Klassen basieren auf der ECMAScript-Spezifikation und werden als ActionScriptKernklassen bezeichnet. Dazu zhlen die Klassen Array, Boolean, Date und Math. Weitere Informationen finden Sie unter Kernklassen auf Seite 127.) Die brigen integrierten ActionScript-Klassen gelten speziell fr Macromedia Flash und das Flash Player-Objektmodell. Die Unterscheidung zwischen ActionScript-Kernklassen und Flashspezifischen Klassen lsst sich mit der Unterscheidung zwischen Kern-JavaScript und clientseitigem JavaScript vergleichen. Die clientseitigen JavaScript-Klassen dienen zur Steuerung der Client-Umgebung (Webbrowser und Webseiteninhalt). Auf hnliche Weise dienen die Flashspezifischen Klassen zur Laufzeitsteuerung der Darstellung und des Verhaltens von FlashAnwendungen. In diesem Kapitel finden Sie eine Einfhrung zu den integrierten ActionScript-Klassen, eine Beschreibung der blichen Arbeitsschritte, die Sie mit diesen Klassen durchfhren knnen, sowie Beispiele fr Code. Eine bersicht zu diesen Klassen finden Sie unter bersicht ber integrierte Klassen auf Seite 127. Eine bersicht zum Arbeiten mit Klassen und Objekten beim objektorientierten Programmieren finden Sie unter Klassen und Instanzen auf Seite 125.

Klassen und Instanzen


Beim objektorientierten Programmieren definiert eine Klasse eine Objektkategorie. Eine Klasse beschreibt die Eigenschaften (Daten) und das Verhalten (Methoden) fr ein Objekt. Dies lsst sich mit Bauplnen in der Architektur vergleichen, welche die Charakteristika von Gebuden beschreiben. Um die durch eine Klasse definierten Eigenschaften und Methoden verwenden zu knnen, mssen Sie zuerst eine Instanz dieser Klasse erstellen. Das Verhltnis zwischen einer Instanz und seiner Klasse hnelt dem eines Hauses und den entsprechenden Blaupausen des Architekten.

125

Neue Objekte erstellen Um eine Instanz einer ActionScript-Klasse zu erstellen, rufen Sie die Konstruktorfunktion der Klasse mit dem Operator new auf. Die Konstruktorfunktion hat immer denselben Namen wie die zugehrige Klasse und gibt eine Instanz der Klasse zurck, die Sie in der Regel einer Variablen zuweisen. Der folgende Code beispielsweise erstellt ein neues Sound-Objekt.
var song:Sound= new Sound();

In einigen Fllen mssen Sie keine Instanz einer Klasse erstellen, um die Klasse zu verwenden. Weitere Informationen finden Sie unter Informationen zu (statischen) Klassenmitgliedern auf Seite 126. Objekteigenschaften zuweisen Mit Hilfe des Punkt-Operators (.) knnen Sie auf den Wert einer Eigenschaft in einem Objekt zugreifen. Hierbei steht der Name des Objekts links und der Name der Eigenschaft rechts vom Punkt. In der folgenden Anweisung ist meinObjekt das Objekt und name die Eigenschaft:
meinObjekt.name

Durch den folgenden Code wird ein neues TextField-Objekt erstellt und anschlieend die Eigenschaft autoSize auf true gesetzt.
var mein_text = new TextField(); mein_text.autoSize = true;

Sie knnen fr den Zugriff auf die Eigenschaften eines Objekts auch den Array-Zugriffsoperator ([]) verwenden. Weitere Informationen hierzu finden Sie unter Punkt- und ArrayZugriffsoperatoren auf Seite 54. Objektmethoden aufrufen Die Methode eines Objekts rufen Sie mit dem Punkt-Operator (.) und anschlieender Angabe der Methode auf. Der nachstehende Code erstellt beispielsweise ein neues Sound-Objekt und ruft dessen setVolume()-Methode auf.
meinSound = new Sound(this); meinSound.setVolume(50);

Informationen zu (statischen) Klassenmitgliedern Einige integrierte ActionScript-Klassen haben so genannte Klassenmitglieder (oder statische Mitglieder). Klassenmitglieder (Eigenschaften und Methoden) werden nicht von der Instanz der Klasse, sondern von dem eigentlichen Klassennamen aufgerufen. Das bedeutet, dass Sie keine Instanz der Klasse erstellen, um diese Eigenschaften und Methoden zu verwenden. Alle Eigenschaften der Math-Klasse sind zum Beispiel statisch. Durch den folgenden Code wird die Methode max() der Math-Klasse zur Bestimmung der greren von zwei Zahlen aufgerufen.
var groessereZahl = Math.max(10, 20);

126

Kapitel 6: Integrierte Klassen verwenden

bersicht ber integrierte Klassen


In diesem Abschnitt werden alle ActionScript-Klassen mit entsprechenden Kurzbeschreibungen und Querverweisen auf andere relevante Abschnitte der Dokumentation aufgefhrt. Kernklassen Bei den ActionScript-Kernklassen handelt es sich um die Klassen, die direkt aus ECMAScript entlehnt wurden. Diese Klasse befinden sich in der Werkzeugleiste Aktionen im Unterordner Integrierte Klassen > Kern.
Klasse Arguments Beschreibung Ein Array mit den Werten, die als Parameter an eine beliebige Funktion bergeben wurden. Siehe Eintrag Arguments-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Array-Klasse enthlt Methoden und Eigenschaften fr die Arbeit mit Array-Objekten. Siehe Eintrag Array-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Bei der Boolean-Klasse handelt es sich um einen Wrapper fr Boolesche Werte (true oder false). Siehe Eintrag Boolean-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Button-Klasse enthlt Methoden und Eigenschaften zum Arbeiten mit Button-Objekten. Siehe Eintrag Button-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Mit der Date-Klasse knnen Sie Datums- und Zeitwerte relativ zur Weltzeit (GMT) oder relativ zum Betriebssystem aufrufen, unter dem Flash Player ausgefhrt wird. Siehe Eintrag Date-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Die Error-Klasse enthlt Informationen zu Fehlern in Ihren Skripts. Der Ausdruck throw wird normalerweise fr das Erstellen von Fehlerbedingungen eingesetzt, die sich dann ber den Ausdruck try..catch..finally bearbeiten lassen. Siehe try..catch..finally und die Eintrge Error class in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Bei der Function-Klasse handelt es sich um die Klassendarstellung aller ActionScript-Funktionen, einschlielich nativer ActionScript-Funktionen und den von Ihnen erstellten Funktionen. Siehe Eintrag Function-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der Math-Klasse knnen Sie auf mathematische Konstanten und Funktionen zugreifen und diese bearbeiten. Alle Eigenschaften und Methoden der Math-Klasse sind statisch und mssen ber die Syntax Math.methode(parameter) oder Math.konstante aufgerufen werden. Siehe Eintrag Math-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Bei der Number-Klasse handelt es sich um einen Wrapper fr den Grunddatentyp Zahl. Siehe Eintrag Number-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Array

Boolean

Button

Date

Error

Function

Math

Number

bersicht ber integrierte Klassen

127

Klasse Object

Beschreibung Die Object-Klasse befindet sich auf der obersten Stufe der ActionScriptKlassenhierarchie. Alle brigen Klassen erben deren Methoden und Eigenschaften. Siehe Eintrag OObject-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Bei der String-Klasse handelt es sich um einen Wrapper fr den Grunddatentyp String, mit dem Sie die Methoden und Eigenschaften des String-Objekts zum Manipulieren von Werten des Grunddatentyps String aufrufen knnen. Siehe Eintrag String-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229.

String

Flash Player-spezifische Klassen In der folgenden Tabelle sind die Klassen aufgelistet, die speziell fr den Flash Player und das Flash-Laufzeitmodell gelten. Diese Klassen werden in der Regel in vier Kategorien unterteilt: Movie-Klassen (zur Steuerung von SWF-Dateien und des Flash Players), Media-Klassen (fr Sound und Video), Client/Server-Klassen (fr XML-Dateien und andere externe Datenquellen) und Authoring-Klassen (zur Steuerung der Flash Authoring-Umgebung).
Hinweis: Diese Kategorisierung wirkt sich zwar auf die Positionen der Klassen in der Werkzeugleiste Aktionen aus, nicht aber auf deren Verwendungszweck.

Movie-Klassen Die Movie-Klassen ermglichen die Steuerung der meisten grafischen Elemente in SWF-Dateien, wie z. B. Movieclips, Textfelder und Schaltflchen. Die Movie-Klassen befinden sich in der Werkzeugleiste Aktionen im Unterordner Integrierte Klassen > Film.
Klasse Accessibility Beschreibung Mit der Accessibility-Klasse wird die Kommunikation zwischen SWF-Dateien und Bildschirmleseprogrammen verwaltet. Die Methoden dieser Klasse werden zusammen mit der globalen Eigenschaft _accProps fr die Steuerung zugnglicher Eigenschaften von Movieclips, Schaltflchen und Textfeldern zur Laufzeit eingesetzt. Siehe _accProps und die Eintrge AccessibilityKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Jede Schaltflche in einer SWF-Datei ist eine Instanz der Button-Klasse. Die Button-Klasse enthlt Methoden, Eigenschaften und Ereignisprozeduren zum Arbeiten mit Schaltflchen. Siehe Eintrag Button-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der Color-Klasse knnen Sie die RGB-Farbwerte fr Movieclip-Objekte abrufen und einstellen. Weitere Informationen finden Sie unter dem Eintrag Color-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Ein Beispiel fr das Verwenden der Color-Klasse zum ndern der Farbe von Movieclips finden Sie unter Farbwerte festlegen auf Seite 110.

Button

Color

128

Kapitel 6: Integrierte Klassen verwenden

Klasse ContextMenu

Beschreibung Mit der ContextMenu-Klasse legen Sie den Inhalt des Flash PlayerKontextmens fest. Sie knnen die verschiedenen ContextMenu-Objekte MovieClip-, Button- oder TextField-Objekten ber die Eigenschaft menu der jeweiligen Klassen zuweisen. Sie knnen ContextMenu-Objekten auch benutzerdefinierte Menelemente mit Hilfe der ContextMenuItem-Klasse hinzufgen. Siehe Eintrge ContextMenu-Klasse und ContextMenuItemKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit Hilfe der ContextMenuItem-Klasse erstellen Sie neue Menelemente, die im Kontextmen des Flash Players angezeigt werden. Mit dieser Klasse neu erstellte Menelemente knnen dem Kontextmen des Flash Players ber die ContextMenu-Klasse hinzugefgt werden. Siehe Eintrge ContextMenu-Klasse und ContextMenuItem-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Key-Klasse enthlt Methoden und Eigenschaften zum Abrufen von Daten ber die Tastatur und gedrckte Tasten. Weitere Informationen finden Sie unter dem Eintrag Key-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Beispiele ber das Erfassen von Tastenaktionen zum Erstellen von interaktiven SWF-Dateien finden Sie unter Tastenaktionen erfassen auf Seite 105. Die LocalConnection-Klasse ermglicht die Kommunikation zwischen zwei SWFs, die auf demselben Computer ausgefhrt werden. Siehe Eintrag LocalConnection-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der Mouse-Klasse knnen Sie die Maus in einer SWF-Datei steuern. So lsst sich beispielsweise der Mauszeiger ein- oder ausblenden. Weitere Informationen finden Sie unter dem Eintrag Mouse-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Ein Beispiel zur Verwendung der Mouse-Klasse finden Sie unter Benutzerdefinierte Mauszeiger erstellen auf Seite 102. Jeder Movieclip in einem Flash-Film ist eine Instanz der MovieClip-Klasse. Mit den Methoden und Eigenschaften dieser Klasse werden MovieclipObjekte gesteuert. Siehe Kapitel 7, Mit Movieclips arbeiten, auf Seite 133 und den Eintrag MovieClip-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der MovieClipLoader-Klasse wird der Downloadstatus von SWF- und JPEG-Dateien mit einem Ereignis-Listener berwacht. Siehe SWF- und JPEG-Dateien vorausladen auf Seite 222 und den Eintrag MovieClipLoader-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der PrintJob-Klasse werden mehrseitige Dokumente und dynamisch angezeigte Inhalte gedruckt. Siehe den Eintrag PrintJob-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229 und ActionScript-Klasse 'PrintJob' verwenden in der Hilfe Flash verwenden. Mit der Selection-Klasse werden der Fokus sowie Auswahlbereiche und Einfgemarken fr Textfelder ermittelt und festgelegt. Siehe Eintrag Selection-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

ContextMenuItem

Key

LocalConnection

Mouse

Movieclip

MovieClipLoader

PrintJob

Selection

bersicht ber integrierte Klassen

129

Klasse SharedObject

Beschreibung Mit der SharedObject-Klasse werden Daten lokal auf dem Client-Computer gespeichert. Siehe Eintrag SharedObject-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Stage-Klasse dient zum Abrufen von Informationen ber Gre, Ausrichtung und Skalierungsmodus von SWF-Dateien und liefert Meldungen zu nderungen der Bhnengre. Siehe Eintrag Stage-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die System-Klasse dient zum Abrufen von Informationen zum Flash Player und zum System, auf dem der Flash Player ausgefhrt wird (z. B. Bildschirmauflsung und Systemsprache). Auerdem knnen Sie mit dieser Klasse das Bedienfeld Einstellungen im Flash Player ein- bzw. ausblenden und die Sicherheitseinstellungen fr SWF-Dateien ndern. Siehe Eintrag System-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Mit der TextField-Klasse steuern Sie dynamische Felder und Eingabetextfelder. Siehe Kapitel 8, Mit Text arbeiten, auf Seite 149 und den Eintrag TextField-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Stage

System

TextField

TextField.StyleSheet Mit der TextField.StyleSheet-Klasse (einer inneren Klasse der TextFieldKlasse) knnen Sie CSS-Textstile erstellen und auf Text im HTML- oder XML-Format anwenden. Siehe Text mit Cascading Style Sheets formatieren auf Seite 154 und den Eintrag TextField.StyleSheet-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. TextFormat Mit der TextFormat-Klasse knnen Sie Formatierungsstile auf Zeichen oder Abstze in einem TextField-Objekt anwenden. Siehe Mit der TextFormatKlasse arbeiten auf Seite 152 und den Eintrag TextFormat class in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Media-Klassen Die Media-Klassen dienen zur Steuerung von Sound und Video in SWF-Dateien sowie zum Zugriff auf das Mikrofon und die Kamera des Benutzers, falls diese angeschlossen sind. Diese Klassen befinden sich in der Werkzeugleiste Aktionen im Unterordner Integrierte Klassen > Medien.
Klasse Camera Beschreibung Die Camera-Klasse bietet Zugriff auf die an das System angeschlossene Kamera des Benutzers. In Kombination mit Flash Communication Server MX knnen Sie in Ihren SWF-Dateien Bilder von dieser Kamera festhalten, aufzeichnen und bertragen. Siehe Eintrag Camera-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Microphone-Klasse bietet Zugriff auf das an das System angeschlossene Mikrofon des Benutzers. In Kombination mit Flash Communication Server MX knnen Sie in Ihren SWF-Dateien Audiosignale vom Mikrofon eines Benutzers aufzeichnen und bertragen. Siehe Eintrag MicrophoneKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Microphone

130

Kapitel 6: Integrierte Klassen verwenden

Klasse NetConnection

Beschreibung Mit der NetConnection-Klasse knnen Sie eine lokale StreamingVerbindung herstellen, um Flash Video-Dateien (FLV) von einer HTTPAdresse oder vom lokalen Dateisystem aus abzuspielen. Weitere Informationen finden Sie unter dem Eintrag NetConnection-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Weitere Informationen zum Abspielen von FLV-Dateien ber das Internet finden Sie unter Externe FLV-Dateien dynamisch wiedergeben auf Seite 221. Mit der NetStream-Klasse wird die Wiedergabe von FLV-Dateien gesteuert. Weitere Informationen finden Sie unter dem Eintrag NetStream-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Weitere Informationen zum Abspielen von FLV-Dateien ber das Internet finden Sie unter Externe FLV-Dateien dynamisch wiedergeben auf Seite 221. Mit der Sound-Klasse werden akustische Signale in SWF-Dateien gesteuert. Weitere Informationen finden Sie unter dem Eintrag Sound-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Ein Beispiel fr den Einsatz der Sound-Klasse zur Erstellung von Lautstrke- und Balancereglern finden Sie unter Soundsteuerungen erstellen auf Seite 111. Die Video-Klasse dient zum Anzeigen von Video-Objekten in SWF-Dateien. Siehe Eintrag Video-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

NetStream

Sound

Video

Client-Server-Klassen In der folgenden Tabelle sind die Klassen aufgelistet, die zum Datenaustausch mit externen Datenquellen oder zur Kommunikation mit Anwendungsservern ber FTP, HTTP oder HTTPS dienen.
Hinweis: In Flash Player 7 werden Daten nur noch von der Domne in SWF-Dateien geladen, die auch als Server aufgetreten ist. Weitere Informationen hierzu finden Sie unter Flash PlayerSicherheitsfunktionen auf Seite 211 und Domnenbergreifendes Laden von Daten ermglichen auf Seite 213.

Diese Klassen befinden sich in der Werkzeugleiste Aktionen im Unterordner Integrierte Klassen > Client/Server.
Klasse LoadVars Beschreibung Die LoadVars-Klasse stellt eine Alternative zur Aktion loadVariables() fr die bertragung von Variablen zwischen einer SWF-Datei und einem Server in Namen-/Wertepaaren dar. Siehe LoadVars-Klasse verwenden auf Seite 202 und den Eintrag LoadVars-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Mit der XML-Klasse wird die XMLNode-Klasse erweitert. Auerdem enthlt diese Klasse Methoden, Eigenschaften und Ereignisprozeduren fr Daten im XML-Format. Dazu gehren auch das Laden und Parsen von externem XML-Format, das Erstellen von XML-Dokumenten und das Navigieren in XML-Dokumentenbumen. Siehe XML-Klasse verwenden auf Seite 204 und den Eintrag XML-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

XML

bersicht ber integrierte Klassen

131

Klasse XMLNode

Beschreibung Die XMLNode-Klasse stellt einen einzelnen Knoten in einem XMLDokumentenbaum dar. Sie bildet die bergeordnete Klasse fr die XMLKlasse. Siehe Eintrag XMLNode-Klasse in Kapitel 12, ActionScriptLexikon, auf Seite 229. Mit der XMLSocket-Klasse wird eine permanente Socket-Verbindung mit einem anderen Computer fr die Datenbertragung mit geringen Latenzzeiten, wie sie beispielsweise bei Chat-Anwendungen bentigt wird, erstellt. Siehe Die XMLSocket-Klasse verwenden auf Seite 207 und den Eintrag XMLSocket-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

XMLSocket

Authoring-Klassen Die Authoring-Klassen sind nur in der Flash-Authoring-Umgebung verfgbar. Diese Klassen befinden sich in der Werkzeugleiste Aktionen im Unterordner Integrierte Klassen > Authoring.
Klasse CustomActions Beschreibung Mit der CustomActions-Klasse verwalten Sie benutzerdefinierte Aktionen, die beim Authoring-Tool registriert sind. Siehe Eintrag CustomActionsKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229. Die Funktion Live Preview (in der Werkzeugleiste Aktionen unter Integrierte Klassen) ist zwar keine eigene Klasse, bietet Komponentenentwicklern jedoch eine einzelne Funktion namens onUpdate. Siehe onUpdate in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Live Preview

132

Kapitel 6: Integrierte Klassen verwenden

KAPITEL 7 Mit Movieclips arbeiten

Bei Movieclips handelt es sich um eigenstndige, kleine SWF-Dateien, die unabhngig voneinander und von der Zeitleiste, in der sie enthalten sind, abgespielt werden. Wenn beispielsweise in der Hauptzeitleiste nur ein Bild enthalten ist, das seinerseits jedoch einen aus zehn Einzelbildern bestehenden Movieclip enthlt, so werden bei der Wiedergabe der SWFHauptdatei smtliche Bilder des Movieclips abgespielt. Ein Movieclip kann seinerseits andere Movieclips oder verschachtelte Clips enthalten. Movieclips, die auf diese Weise ineinander verschachtelt werden, haben eine hierarchische Struktur, wobei der bergeordnete Clip einen oder mehrere untergeordnete Clips enthalten kann. Jede Instanz des Movieclips hat einen Namen, den so genannten Instanznamen, der den Clip als Objekt definiert, das mit ActionScript gesteuert werden kann. Genauer gesagt definiert der Instanzname den Movieclip als ein Objekt der MovieClip-Klasse. Mit Hilfe der Eigenschaften und Methoden dieser MovieClip-Klasse wird das Aussehen und Verhalten von Movieclips zur Laufzeit gesteuert. Movieclips sind eigene Objekte, die auf Ereignisse reagieren und mit denen Nachrichten an andere Movieclip-Objekte gesendet werden knnen. Sie knnen auerdem ihren Zustand berwachen und untergeordnete Clips verwalten. Die Komponenten-basierte Architektur in Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 basiert also auf Movieclips. Die im Bedienfeld Komponenten verfgbaren Komponenten (Fenster > Entwicklungs-Bedienfelder > Komponenten) sind komplexe Movieclips, deren Aussehen und Verhalten genau programmiert wurden. Weitere Informationen zum Erstellen von Komponenten finden Sie unter Komponenten verwenden.

Einfhrung in die Steuerung von Movieclips mit ActionScript


Sie knnen die globalen ActionScript-Funktionen oder die Methoden der MovieClip-Klasse verwenden, um Aufgaben mit Movieclips auszufhren. Manche der MovieClip-Methoden haben dieselben Funktionen wie die gleichnamigen Aufgaben, whrend zu anderen MovieClipMethoden, beispielsweise zu den Methoden hitTest() und swapDepths(), keine entsprechenden Funktionsnamen verfgbar sind. Das folgende Beispiel verdeutlicht den Unterschied zwischen einer Methode und einer Funktion hinsichtlich der Verwendung in einem Skript. Beide Anweisungen duplizieren die Instanz mein_mc, weisen dem neuen Clip den Namen newClip zu und platzieren ihn auf Stufe 5.
mein_mc.duplicateMovieClip("newClip", 5); duplicateMovieClip("mein_mc", "newClip", 5);

133

Wenn eine Funktion und eine Methode hnliche Verhalten bereitstellen, knnen Sie fr die Steuerung eines Movieclips sowohl die Funktion als auch die Methode verwenden. Fr welche dieser beiden Mglichkeiten Sie sich entscheiden, hngt ganz von Ihren persnlichen Vorlieben und Ihrer Erfahrung in der Skripterstellung mit ActionScript ab. Unabhngig davon, ob Sie eine Funktion oder eine Methode verwenden, muss die Zielzeitleiste beim Aufruf der Funktion oder Methode im Flash Player geladen sein. Zum Aufrufen einer Methode geben Sie wie im folgenden Beispiel dargestellt den Zielpfad des Instanznamens, gefolgt von einem Punkt, dem Methodennamen und den erforderlichen Parametern ein:
meinMovieClip.play(); parentClip.childClip.gotoAndPlay(3);

In der ersten Anweisung wird der Abspielkopf mit Hilfe der Methode play() zur Instanz meinMovieClip bewegt. In der zweiten Anweisung sendet die Methode gotoAndPlay() den Abspielkopf zu Bild 3 der Instanz childClip (einer untergeordneten Instanz von parentClip) und bewegt den Kopf anschlieend weiter. Globale Funktionen, die zum Steuern einer Zeitleiste dienen, erwarten einen target-Parameter mit der Angabe des Zielpfades zu der Instanz, die gesteuert werden soll. Im folgenden Skript beispielsweise wird in der Aktion startDrag() die Instanz customCursor angesprochen und als ziehbares Objekt definiert.
on(press){ startDrag("customCursor"); }

Folgende Funktionen knnen an Zielmovieclips adressiert werden: loadMovie(), unloadMovie(), loadVariables(), setProperty(), startDrag(), duplicateMovieClip() sowie removeMovieClip(). Wenn Sie eine dieser Funktionen verwenden mchten, mssen Sie den Zielpfad zum Empfnger mit Hilfe des target-Parameters an sie bergeben. Die folgenden MovieClip-Methoden steuern Movieclips oder geladene Stufen und verfgen nicht ber quivalente Funktionen: MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), MovieClip.createTextField(), MovieClip.getBounds(), MovieClip.getBytesLoaded(), MovieClip.getBytesTotal(), MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth(), MovieClip.globalToLocal(), MovieClip.localToGlobal(), MovieClip.hitTest(), MovieClip.setMask(), MovieClip.swapDepths(). Weitere Informationen zu diesen Funktionen und Methoden finden Sie in Kapitel 12, ActionScript-Lexikon, auf Seite 229.

Mehrere Methoden fr einen Movieclip aufrufen


Mit der Anweisung with knnen Sie einen Movieclip adressieren und anschlieend gleich mehrere Methoden darauf anwenden. Die Anweisung with funktioniert nicht nur in Verbindung mit Movieclips, sondern kann zur Steuerung aller ActionScript-Objekte (z. B. Array, Color oder Sound) verwendet werden.

134

Kapitel 7: Mit Movieclips arbeiten

Die Anweisung with erfordert ein Objekt als Parameter, das am Ende des aktuellen Zielpfads hinzugefgt wird. Alle in einer with-Anweisung verschachtelten Anweisungen werden innerhalb des neuen Zielpfades ausgefhrt, weisen also denselben Gltigkeitsbereich auf. Im folgenden Beispielskript wird der Anweisung with das Objekt donut.hole bergeben, um die Eigenschaften von hole zu ndern:
with (donut.hole){ _alpha = 20; _xscale = 150; _yscale = 150; }

Die Anweisung with bewirkt, dass die in ihr enthaltenen Anweisungen so verarbeitet werden, als wrden sie von der Zeitleiste der Instanz hole aus aufgerufen. Der oben beschriebene Code bewirkt also dasselbe wie die folgende, ausfhrlichere Variante:
donut.hole._alpha = 20; donut.hole._xscale = 150; donut.hole._yscale = 150;

Eine weitere Mglichkeit lautet wie folgt:


with (donut){ hole._alpha = 20; hole._xscale = 150; hole._yscale = 150; }

Zustzliche SWF-Dateien laden und entladen


Mit Hilfe der globalen Funktion loadMovie() oder der Methode loadMovie() knnen Sie zustzliche SWF-Dateien wiedergeben, ohne den Flash Player zu schlieen, sowie die SWF-Datei ohne Laden einer zustzlichen HTML-Seite wechseln. Auerdem knnen Sie mit loadMovie() Variablen an ein CGI-Skript senden, das eine SWF-Datei als CGI-Ausgabe erzeugt. Beim Laden von SWF-Dateien knnen Sie angeben, auf welche Stufe oder in welchen Movieclip diese geladen werden sollen. Wenn Sie eine SWF-Datei in ein Ziel laden, erbt die geladene Datei die Eigenschaften des als Ziel angegebenen Movieclips. Diese Eigenschaften knnen nach dem Laden des Films jedoch nach Belieben gendert werden. Die Methode unloadMovie() entfernt eine SWF-Datei, die zuvor mit loadMovie() geladen wurde. Indem Sie SWF-Dateien mit der Methode unloadMovie() ausdrcklich entfernen, stellen Sie einen reibungslosen bergang zwischen SWF-Dateien sicher und knnen u. U. den vom Flash Player beanspruchten Speicher reduzieren. Die Methode loadMovie() kann fr folgende Aufgaben eingesetzt werden:

Abspielen mehrerer in Form von SWF-Dateien vorliegender Werbeeinblendungen


hintereinander. Zu diesem Zweck wird am Ende jeder SWF-Datei eine loadMovie()Funktion eingefgt, die die jeweils nchste SWF-Datei ldt. Erstellen einer verzweigten Benutzeroberflche fr die Auswahl verschiedener SWF-Dateien. Erstellen einer Navigationsoberflche mit Steuerelementen auf Stufe 0, ber die andere Stufen geladen werden. Durch das Laden von Stufen erzielen Sie weichere bergnge als durch das Laden neuer HTML-Seiten in einen Browser.

Weitere Informationen zum Laden von Filmen finden Sie unter Externe SWF- und JPEGDateien laden auf Seite 218.

Zustzliche SWF-Dateien laden und entladen

135

Hauptzeitleisten fr geladene SWF-Dateien festlegen


Die ActionScript-Eigenschaft _root legt einen Bezug auf die Hauptzeitleiste einer SWF-Datei fest oder gibt ihn zurck. Wenn eine SWF-Datei mehrere Stufen besitzt, befindet sich die Hauptzeitleiste auf der Stufe, in der das momentan ausgefhrte Skript enthalten ist. Wenn ein Skript in Stufe 1 beispielsweise _root auswertet, wird _level1 zurckgegeben. Die durch _root angegebene Zeitleiste ndert sich in Abhngigkeit davon, ob eine SWF-Datei unabhngig (auf ihrer eigenen Stufe) abgespielt wird oder mit einem loadMovie()-Aufruf in eine MovieclipInstanz geladen wurde. Im nachstehend aufgefhrten Beispiel trgt eine Datei den Namen container.swf. Diese Datei verfgt auf der Hauptzeitleiste ber eine Movieclip-Instanz namens target_mc. Die Datei container.swf deklariert eine Variable mit dem Namen userName auf der eigenen Hauptzeitleiste; dasselbe Skript ldt anschlieend eine andere Datei namens contents.swf in den Movieclip target_mc.
// In container.swf: _root.userName = "Thomas"; target_mc.loadMovie("contents.swf");

Die geladene SWF-Datei contents.swf deklariert auf der Hauptzeitleiste auerdem eine Variable namens userName.
// In content.swf: _root.userName = "Sandra";

Wenn die Datei contents.swf in den