Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
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
........................... 9
. . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
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 .
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
. . . . . . . . . . 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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Inhaltsverzeichnis
Inhaltsverzeichnis
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.
10
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
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
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).
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
16
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).
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
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.
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
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:
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.)
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:
22
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.
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.
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
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.)
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.
25
class extends implements interface dynamic static public private get set import
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 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.
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:
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:
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.
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
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:
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
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"
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
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
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.
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.
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
+ * / %
50
Kapitel 2: ActionScript-Grundlagen
Operator
++ --
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.
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
&& || !
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
== === != !==
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;
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."); }
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
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.
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
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
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.
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:
62
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:
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.
63
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
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
65
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
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
So zeigen Sie ein oder mehrere Skripts nicht immer vorne an:
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).
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-.
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
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
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
1 Geben Sie nach dem Variablen- oder Objektnamen einen Punkt ein.
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
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.
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).
1 Klicken Sie auf einen Skriptabschnitt, der geschweifte Klammern {}, Array-Zugriffsoperatoren
[]
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:
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
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:
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:
76
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,
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
78
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.
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
In der berwachungsliste knnen nur Variablen erscheinen, keine Eigenschaften oder Funktionen.
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.
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.
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
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
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
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.
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
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"
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++) }
88
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
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
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
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
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.
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.)
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
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.
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 }
98
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.
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
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");
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
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-
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.
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-
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
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.
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()); }
106
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.
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.
107
3 Klicken Sie in der Zeitleiste auf Bild 1. Wenn das Bedienfeld Aktionen nicht angezeigt wird,
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) { } }
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
8 Prfen Sie mit hnlichem Code, ob die Nach-links-, Nach-oben- oder Nach-unten-Tasten
Weitere Informationen zu den Methoden der Key-Klasse finden Sie unter dem Eintrag KeyKlasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.
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-
6 Damit die blaue Schaltflche die Farbe des Movieclips carColor in die Farbe Blau ndert,
Der Hexadezimalwert 0x0000ff steht fr die Farbe Blau. In der folgenden Tabelle sind die brigen Farben und deren Hexadezimalwerte aufgelistet.
110
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.
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
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
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.
113
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); } }
Weitere Informationen zu den Methoden der Sound-Klasse finden Sie unter dem Eintrag Sound-Klasse in Kapitel 12, ActionScript-Lexikon, auf Seite 229.
114
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.
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
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
116
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.
117
1 Erstellen Sie in einem neuen Dokument eine Schaltflche auf der Bhne, und geben Sie im
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
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.
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
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.
121
122
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
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.
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
Array
Boolean
Button
Date
Error
Function
Math
Number
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
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
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
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
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
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.
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.
134
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;
Weitere Informationen zum Laden von Filmen finden Sie unter Externe SWF- und JPEGDateien laden auf Seite 218.
135
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