Komponenten verwenden - Win
Transcription
Komponenten verwenden - Win
Komponenten verwenden 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, MacRecorder-Logo und -Design, Macromedia, Macromedia Action!, Macromedia Flash, Macromedia M-Logo und -Design, Macromedia Spectra, Macromedia xRes-Logo und -Design, MacroModel, Made with Macromedia, Made with Macromedia-Logo und -Design, 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 Marken bzw. in den USA oder anderen Ländern eingetragene Marken von Macromedia, Inc. Andere in dieser Dokumentation erwähnte Produktnamen, Logos, Designs, Titel, Wörter oder Begriffe sind möglicherweise Marken, Dienstleistungsmarken oder Markennamen bzw. in den USA oder anderen Ländern eingetragene Marken, Dienstleistungsmarken oder Markennamen von Macromedia, Inc. oder anderen Unternehmen. Technologien von Drittanbietern Dieses Handbuch enthält Verweise auf Websites anderer Anbieter. Macromedia hat keinerlei Einfluss auf die Gestaltung dieser Websites und übernimmt daher keine Verantwortung für deren Inhalt. Der Aufruf von Websites anderer Anbieter, die in diesem Handbuch erwähnt 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 hierfür ü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 beteiligte Lieferanten. Alle Rechte vorbehalten. Gewährleistungsausschluss von Apple APPLE COMPUTER, INC. ÜBERNIMMT KEINERLEI AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIE IM HINBLICK AUF DIE BEILIEGENDE COMPUTERSOFTWARE, IHRE MARKTFÄHIGKEIT ODER IHRE EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. IN EINIGEN LÄNDERN IST DER AUSSCHLUSS EINER STILLSCHWEIGENDEN GARANTIE NICHT ZULÄSSIG. DER OBEN GENANNTE AUSSCHLUSS TRIFFT DAHER IN IHREM FALL MÖGLICHERWEISE NICHT ZU. AUS DIESER GEWÄHRLEISTUNG ERWACHSEN IHNEN BESTIMMTE RECHTE. JE NACH GERICHTLICHEM ZUSTÄNDIGKEITSBEREICH VERFÜGEN SIE MÖGLICHERWEISE ÜBER WEITERE RECHTE. Copyright © 2003 Macromedia, Inc. Alle Rechte vorbehalten. Dieses Handbuch darf ohne vorherige schriftliche Genehmigung von Macromedia, Inc. weder vollständig noch auszugsweise kopiert, fotokopiert, vervielfältigt, übersetzt oder in eine elektronische bzw. maschinenlesbare Form übertragen werden.Teilenummer ZFL70M500G 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 Lektoratsleitung: Rosana Francescato Lektorat: Mary Ferguson, Mary Kraemer, Noreen Maher, Antonio Padial, Lisa Stanziano, Anne Szabla Produktionsmanagement: Patrice O’Neill Mediendesign 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: Oktober 2003 Macromedia, Inc. 600 Townsend St. San Francisco, CA 94103, USA INHALTSVERZEICHNIS EINFÜHRUNG: Erste Schritte mit Komponenten . ......................... 7 Zielpublikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Systemanforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Komponenten installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Informationen zur Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Typographische Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Begriffserläuterungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Weitere Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 KAPITEL 1: Einführung in Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Vorteile der Komponenten der Version 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponentenkategorien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Was ist neu in den Komponenten der Version 2 . . . . . . . . . . . . . . . . . . . . . . . . . . Informationen zu kompilierten Clips und SWC-Dateien . . . . . . . . . . . . . . . . . . . Eingabehilfen und Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . KAPITEL 2: Komponenten verwenden . 12 12 13 13 14 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Bedienfeld „Komponenten“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten im Bedienfeld „Bibliothek“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten im Eigenschafteninspektor und im Bedienfeld „Komponenten-Inspektor“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten in der Live-Vorschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mit SWC-Dateien und kompilierten Clips arbeiten . . . . . . . . . . . . . . . . . . . . . . . Komponenten in Flash-Dokumente aufnehmen . . . . . . . . . . . . . . . . . . . . . . . . . . Komponentenparameter festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten aus Flash-Dokumenten entfernen . . . . . . . . . . . . . . . . . . . . . . . . . Codehinweise verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponentenereignisse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Fokusnavigation erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponententiefe in einem Dokument verwalten . . . . . . . . . . . . . . . . . . . . . . . . Einen Preloader mit Komponenten verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . Komponenten aus Version 1 für die Architektur von Version 2 aktualisieren . . . . . 17 18 18 20 20 21 24 24 25 25 28 29 29 30 3 KAPITEL 3: Komponenten individuell anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Stile zur Farb- und Textanpassung in einer Komponente verwenden . . . . . . . . . . . 31 Themen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Skinning-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 KAPITEL 4: Komponenten-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Komponenten der Benutzeroberfläche (UI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Datenkomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Media-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Bildschirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Accordion-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . 54 Alert-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Button-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 CellRenderer-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 CheckBox-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 ComboBox-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Datenbindungsklassen (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . 136 DataGrid-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . 171 DataHolder-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . 205 DataProvider-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 DataSet-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . 218 DateChooser-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . 266 DateField-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . 278 DepthManager-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 FocusManager-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Form-Klasse (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Label-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 List-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Loader-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Media-Komponenten (nur Flash Professional). . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Menu-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 MenuBar-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . 434 NumericStepper-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 PopUpManager-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 ProgressBar-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 RadioButton-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 RDBMSResolver-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . 483 Remote Procedure Call (RPC)-Komponenten-API . . . . . . . . . . . . . . . . . . . . . . . 495 Screen-Klasse (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 ScrollPane-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Slide-Klasse (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 StyleManager-Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 TextArea-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 TextInput-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 TransferObject-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Tree-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 TreeDataProvider-Schnittstelle (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . 604 UIComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 4 Inhaltsverzeichnis UIEventDispatcher-Klasse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UIObject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Webdienst-Klassen (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WebServiceConnector (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . Window-Komponente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XMLConnector-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . . XUpdateResolver-Komponente (nur Flash Professional) . . . . . . . . . . . . . . . . . . . KAPITEL 5: Komponenten erstellen 617 619 639 664 675 686 696 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 Neuerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 In der Flash-Umgebung arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 Komponenten erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 ActionScripts für Komponenten schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 Klassen importieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 Übergeordnete Klassen wählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 Konstruktoren schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 Versionsnummern vergeben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 Klassen-, Symbol- und Inhabernamen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 get- und set-Methoden definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 Komponenten-Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 Komponentenparameter definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Kernmethoden implementieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 Ereignisse verarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 Skinning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 Stile zuweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 Komponentenzugriff ermöglichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 Komponenten exportieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 Arbeit mit Komponenten vereinfachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 Tipps zum Erstellen von Komponenten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 Inhaltsverzeichnis 5 6 Inhaltsverzeichnis EINFÜHRUNG Erste Schritte mit Komponenten Macromedia Flash MX 2004 und Flash MX Professional 2004 sind professionelle StandardAuthoring-Tools für die Erstellung eindrucksvoller Websites. Rich-Internet-Anwendungen, die solche Funktionen bereitstellen, basieren auf Komponenten. Bei einer Komponente handelt es sich um einen Movieclip, dessen Parameter während der Erstellung in Macromedia Flash festgelegt werden. Mit ActionScript-APIs können Sie die Komponente zur Laufzeit individuell anpassen. Entwickler haben durch Komponenten die Möglichkeit, Code wieder zu verwenden und gemeinsam zu nutzen. Außerdem können komplexe Funktionen eingebunden werden, die von Designern verwendet und individuell angepasst werden können, ohne ActionScript verwenden zu müssen. Komponenten basieren auf Version 2 der Macromedia Komponenten-Architektur, mit der Sie einfach und schnell robuste Anwendungen mit einem einheitlichen Aussehen und Verhalten erstellen können. In diesem Buch wird beschrieben, wie Anwendungen mit V2-Komponenten erstellt werden. Darüber hinaus wird die API (Application Programming Interface) der jeweiligen Komponente erläutert. Das Handbuch enthält praktische Anwendungsbeispiele und Anweisungen für den Umgang mit Komponenten der Version 2Flash MX 2004 oder Flash MX Professional 2004 sowie eine Beschreibung der Komponenten-APIs in alphabetischer Reihenfolge. Sie können von Macromedia entwickelte Komponenten verwenden, Komponenten anderer Entwickler herunterladen oder Ihre eigenen Komponenten erstellen. Zielpublikum Dieses Handbuch richtet sich an Entwickler, die zur Anwendungserstellung Flash MX 2004 oder Flash MX Professional 2004 verwenden und mit Hilfe von Komponenten die Entwicklung beschleunigen möchten. Vorkenntnisse in der Entwicklung von Anwendungen in Macromedia Flash, der Verwendung von ActionScript und den Funktionen von Macromedia Flash Player werden vorausgesetzt. Es wird davon ausgegangen, dass Sie Flash MX 2004 oder Flash MX Professional 2004 bereits installiert haben und mit diesen Anwendungen umgehen können. Bevor Sie mit den Komponenten arbeiten, sollten Sie die Lektion „Benutzeroberfläche mit Komponenten erstellen“ (über Hilfe > Anleitungen > Kurzanleitung > Benutzeroberfläche mit Komponenten erstellen) durcharbeiten. 7 Wenn Sie so wenig ActionScript wie möglich schreiben möchten, können Sie Komponenten in ein Dokument ziehen, deren Parameter im Eigenschafteninspektor oder im Bedienfeld für den Komponenten-Inspektor festlegen und Komponenten im Aktionsbedienfeld direkt eine on()Prozedur zuweisen, mit der Komponenteneigenschaften verarbeitet werden. Möchten Sie allerdings robuste Anwendungen programmieren, können Sie Komponenten dynamisch erstellen, deren APIs zum Festlegen von Eigenschaften und Aufrufen von Methoden bei der Ausführung einsetzen und das Listener-Ereignismodell zum Verarbeiten von Ereignissen verwenden. Weitere Informationen hierzu finden Sie in Kapitel 2, „Komponenten verwenden“, auf Seite 17. Systemanforderungen Für das Arbeiten mit Macromedia-Komponenten müssen neben Flash MX 2004 oder Flash MX Professional 2004 keine weiteren Anforderungen erfüllt werden. Komponenten installieren Eine Auswahl an Macromedia-Komponenten ist automatisch installiert, wenn Sie Flash MX 2004 oder Flash MX Professional 2004 zum ersten Mal starten. Sie können im Bedienfeld Komponenten angezeigt werden. In Flash MX 2004 sind die folgenden Komponenten verfügbar: • • • • • • • • • • • • • Button-Komponente CheckBox-Komponente ComboBox-Komponente Label-Komponente List-Komponente Loader-Komponente NumericStepper-Komponente ProgressBar-Komponente RadioButton-Komponente ScrollPane-Komponente TextArea-Komponente TextInput-Komponente Window-Komponente In Flash MX Professional 2004 sind zusätzlich zu den Komponenten von Flash MX 2004 die folgenden Komponenten und Klassen verfügbar: • • • • • • 8 Accordion-Komponente (nur Flash Professional) Alert-Komponente (nur Flash Professional) Datenbindungsklassen (nur Flash Professional) DateField-Komponente (nur Flash Professional) DataGrid-Komponente (nur Flash Professional) DataHolder-Komponente (nur Flash Professional) Einführung: Erste Schritte mit Komponenten • • • • • • • • • • • • • DataSet-Komponente (nur Flash Professional) DateChooser-Komponente (nur Flash Professional) Form-Klasse (nur Flash Professional) Media-Komponenten (nur Flash Professional) Menu-Komponente (nur Flash Professional) MenuBar-Komponente (nur Flash Professional) RDBMSResolver-Komponente (nur Flash Professional) Screen-Klasse (nur Flash Professional) Slide-Klasse (nur Flash Professional) Tree-Komponente (nur Flash Professional) WebServiceConnector-Klasse (nur Flash Professional) XMLConnector-Komponente (nur Flash Professional) XUpdateResolver-Komponente (nur Flash Professional) So überprüfen Sie, ob die Komponenten von Flash MX 2004 oder Flash MX Professional 2004 ordnungsgemäß installiert sind: 1 Starten Sie Flash. 2 Wählen Sie Fenster > Entwicklungs-Bedienfelder > Komponenten, um das Bedienfeld Komponenten zu öffnen, wenn Sie es nicht bereits geöffnet haben. 3 Wählen Sie UI Components, um die Baumstruktur zu erweitern und die installierten Komponenten anzuzeigen. Außerdem können Sie Komponenten von der Website Macromedia Exchange herunterladen. Wenn Sie von dieser Website heruntergeladene Komponenten installieren möchten, müssen Sie den Macromedia Extension Manager herunterladen und installieren. Im Bedienfeld Komponenten werden alle Komponenten angezeigt. Es spielt keine Rolle, ob es sich dabei um SWC- oder FLA-Dateien (siehe „Informationen zu kompilierten Clips und SWCDateien“ auf Seite 14) handelt. Gehen Sie zum Installieren von Komponenten auf einem Windows- oder Macintosh-Computer wie in der folgenden Anleitung beschrieben vor. So installieren Sie Komponenten auf einem Windows- oder Macintosh-Computer: 1 Beenden Sie Flash. 2 Legen Sie die SWC- oder FLA-Datei, in der die Komponente enthalten ist, in folgendem Ordner auf Ihrer Festplatte ab. \Program Files\Macromedia\Flash MX 2004\<Sprache>\First Run\Components (Windows) ■ HD/Applications/Macromedia Flash MX 2004/First Run/Components (Macintosh) 3 Starten Sie Flash. 4 Wählen Sie Fenster > Entwicklungs-Bedienfelder > Komponenten, um die Komponente im Bedienfeld Komponenten zu öffnen, wenn Sie es nicht bereits geöffnet haben. ■ Komponenten installieren 9 Informationen zur Dokumentation In diesem Dokument finden Sie detaillierte Informationen dazu, wie Sie mit Komponenten Flash-Anwendungen entwickeln können. Allgemeine Vorkenntnisse in Macromedia Flash und ActionScript werden vorausgesetzt. Dokumentationen zu Flash und ähnlichen Produkten sind separat erhältlich. • Weitere Informationen zu Macromedia Flash finden Sie in den Hilfen Erste Schritte mit Flash • (oder „Erste Schritte“) und „Flash verwenden“ sowie im ActionScript-Referenzhandbuch und ActionScript-Lexikon. Weitere Informationen zur Nutzung von Webdiensten mit Flash-Anwendungen finden Sie unter Flash Remoting verwenden. Typographische Konventionen Folgende typographische Konventionen werden in diesem Handbuch verwendet: • Kursive Schriftart: steht für einen zu ersetzenden Wert (z. B. in einem Verzeichnispfad). • Codeschriftart: zeigt den ActionScript-Code an. • Codeschriftart kursiv: zeigt einen ActionScript-Parameter an. • Fettdruck: zeigt einen Eintrag an. Hinweis: Der Fettdruck ist nicht identisch mit der Schriftart, die für einlaufende Überschriften verwendet wird. Die Schriftart für einlaufende Überschriften ist eine Alternative zu Aufzählungszeichen. Begriffserläuterungen Folgende Begriffe werden in diesem Handbuch verwendet: Laufzeit: Dieser Begriff wird verwendet, wenn der Code in Flash Player ausgeführt wird. Authoring-Zeit: Dieser Begriff wird verwendet, wenn in der Flash-Authoring-Umgebung gearbeitet wird. Weitere Ressourcen Aktuelle Informationen zu Flash, Ratschläge von erfahrenen Anwendern, weiterführende Themen, Beispiele, Tipps sowie Updates finden Sie auf der regelmäßig aktualisierten Website Macromedia DevNet. Wir empfehlen Ihnen, öfter einmal auf dieser Website vorbeizuschauen und sich über neue Entwicklungen und Möglichkeiten zum effizienten Einsatz von Flash zu informieren. TechNotes, aktualisierte Dokumentationen und Links zu weiteren Ressourcen finden Sie im Macromedia Flash Support Center unter www.macromedia.com/go/flash_support_de. Detaillierte Informationen zu Begriffen, Syntax und Gebrauch von ActionScript finden Sie im ActionScript-Referenzhandbuch und im ActionScript-Lexikon. Eine Einführung in die Verwendung der Komponenten finden Sie im Macromedia On DemandSeminar „Flash MX 2004 Family: Using UI Components“ unter www.macromedia.com/ macromedia/events/online/ondemand/index.html. 10 Einführung: Erste Schritte mit Komponenten KAPITEL 1 Einführung in Komponenten Bei Komponenten handelt es sich um Movieclips mit Parametern, mit denen Sie die Darstellung und das Verhalten des Movieclips ändern können. Komponenten bieten Entwicklern umfangreiche Funktionalität. Bei einer Komponente kann es sich um ein einfaches Steuerelement für die Benutzeroberfläche (beispielsweise ein Optionsfeld oder ein Kontrollkästchen) oder um Inhalte handeln (beispielsweise ein Bildlauffenster). Ferner kann eine Komponente nicht-visuell sein, wie z. B. der FocusManager. Mit dieser Komponente können Sie steuern, welches Objekt in einer Anwendung den Fokus erhält. Mit Hilfe von Komponenten kann jeder Benutzer auch ohne fortgeschrittene ActionScriptKenntnisse komplexe Objekte in Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 erstellen. Sie müssen keine benutzerdefinierten Schaltflächen, Kombinationsschaltflächen und Listen erstellen, sondern können diese Komponenten einfach aus dem Bedienfeld Komponenten auf die Bühne ziehen, um Ihren Anwendungen die Funktionen hinzuzufügen. Außerdem können Sie die Darstellung und das Verhalten der Komponenten an Ihre persönlichen Bedürfnisse beim Entwickeln anpassen. Komponenten basieren auf Version 2 der Macromedia Komponenten-Architektur, mit der Sie einfach und schnell robuste Anwendungen mit einem einheitlichen Aussehen und Verhalten erstellen können. Die Version 2 der Komponenten-Architektur beinhaltet Klassen, auf denen alle Komponenten basieren, sowie Stile und Skin-Mechanismen, mit denen Sie das Aussehen der Komponente an Ihre individuellen Bedürfnisse anpassen können. Außerdem bietet die Architektur ein Broadcaster-/Listener-Ereignisprotokoll, Tiefen- und Fokusverwaltung sowie die Implementierung von Eingabehilfen und vieles mehr. Jede Komponente verfügt über vordefinierte Parameter, die Sie während der Anwendungserstellung in Flash festlegen können. Außerdem verfügt jede Komponente über eigene ActionScript-Methoden, -Eigenschaften und -Ereignisse, auch API (Application Programming Interface) genannt. Hiermit können Sie Parameter und weitere Optionen zur Laufzeit festlegen. Flash MX 2004 und Flash MX Professional 2004 bieten viele neue Flash-Komponenten und mehrere neue Versionen von Komponenten aus Flash MX. Eine umfassende Auflistung der in Flash MX 2004 und Flash MX Professional 2004 verfügbaren Komponenten finden Sie unter „Komponenten installieren“ auf Seite 8. Auf der Website Macromedia Exchange können Sie außerdem Komponenten herunterladen, die von Mitgliedern der Flash Community erstellt wurden. 11 Vorteile der Komponenten der Version 2 Mit Komponenten können Sie Programmierung und Design voneinander trennen. Sie können außerdem Programmcode wiederverwenden, entweder in von Ihnen erstellten Komponenten oder durch Herunterladen und Installieren der von anderen Entwicklern erstellten Komponenten. Mit Komponenten können Sie Funktionen erstellen, die von Designern in Anwendungen verwendet werden können. Entwickler können häufig verwendete Funktionen in Komponenten einbinden, und Designer können die Darstellung und das Verhalten der Komponenten ändern, indem sie die Parameter im Eigenschafteninspektor oder im Bedienfeld Komponenten-Inspektor ändern. Mitglieder der Flash Community können Macromedia Exchange verwenden, um Komponenten untereinander auszutauschen. Die Verwendung von Komponenten vereinfacht die Anwendungserstellung, denn Sie müssen nicht mehr jedes Element einer komplexen WebAnwendung einzeln erstellen. Sie können die für Sie wichtigen Komponenten suchen und sie in ein Flash-Dokument einbinden, um eine neue Anwendung zu erstellen. Komponenten, die auf Version 2 der Komponenten-Architektur basieren, verfügen über wichtige Funktionen, wie etwa Stile, Ereignisverarbeitung, Skin-Mechanismen sowie Fokus- und Tiefenverwaltung. Wenn Sie die ersten zwei Komponenten der Version 2 in eine Anwendung einbinden, wird das Dokument, in der diese Funktion verfügbar ist, ca. um 25 K größer. Wenn Sie weitere Komponenten hinzufügen, werden diese 25 K auch für diese Komponenten verwendet, sodass Ihr Dokument nicht sehr viel größer wird. Informationen zum Aktualisieren von Komponenten der Version 1 auf Version 2 finden Sie unter „Komponenten aus Version 1 für die Architektur von Version 2 aktualisieren“ auf Seite 30. Komponentenkategorien Die in Flash MX 2004 und Flash MX Professional 2004 verfügbaren Komponenten können in fünf Kategorien unterteilt werden: Komponenten der Benutzeroberfläche, Datenkomponenten, Medienkomponenten, Manager und Bildschirme. Steuerelemente für die Benutzeroberfläche ermöglichen eine Interaktion mit einer Anwendung. Beispiele für solche Steuerelemente sind die Komponenten RadioButton, CheckBox und TextInput. Mit Datenkomponenten können Informationen aus Datenquellen geladen und bearbeitet werden. Beispiele für Datenkomponenten sind WebServiceConnector- und XMLConnector-Komponenten. Mit Medienkomponenten können Sie Medien wiedergeben und streamen. Beispiele für Medienkomponenten sind die MediaController-, MediaPlayback- und MediaDisplayKomponente. Manager sind nicht-visuelle Komponenten, mit denen Sie eine Funktion in einer Anwendung verwalten können, beispielsweise den Fokus oder die Tiefe. In Flash MX 2004 und Flash MX Professional 2004 sind folgende Komponenten verfügbar: FocusManager, DepthManager, PopUpManager und StyleManager. Zu den Bildschirmen gehören die ActionScript-Klassen, mit denen Sie in Flash MX Professional 2004 Formulare und Folien steuern können. Komplette Listen der einzelnen Kategorien finden Sie in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. 12 Kapitel 1: Einführung in Komponenten Komponenten-Architektur Sie können den Eigenschafteninspektor oder das Bedienfeld Komponenten-Inspektor verwenden, um die Komponentenparameter zu ändern und die grundlegenden Funktionen der Komponenten zu nutzen. Wenn Sie die Komponenten besser steuern möchten, müssen Sie APIs verwenden und grundlegende Kenntnisse darüber besitzen, wie diese erstellt werden. Komponenten in Flash MX 2004 und Flash MX Professional 2004 wurden mit Version 2 der Macromedia Komponenten-Architektur erstellt. Die Komponenten dieser Version werden von Flash Player 6 und Flash Player 7 unterstützt. Sie sind möglicherweise nicht immer mit Komponenten kompatibel, die mit der Version 1 der Komponenten-Architektur erstellt wurden. Das schließt alle Komponenten ein, die vor Flash MX 2004 veröffentlicht wurden. Weiterhin unterstützt Flash Player 7 keine Komponenten aus Version 1. Weitere Informationen finden Sie unter „Komponenten aus Version 1 für die Architektur von Version 2 aktualisieren“ auf Seite 30. Komponenten der Version 2 sind im Bedienfeld Komponenten als Symbole kompilierter Clips (SWC) verfügbar. Bei einem kompilierten Clip handelt es sich um einen KomponentenMovieclip, dessen Code kompiliert wurde. Kompilierte Clips verfügen über eine integrierte LiveVorschau und können nicht bearbeitet werden. Dennoch können Sie ihre Parameter im Eigenschafteninspektor und im Bedienfeld Komponenten-Inspektor wie jede andere Komponente bearbeiten. Weitere Informationen hierzu finden Sie unter „Informationen zu kompilierten Clips und SWC-Dateien“ auf Seite 14. Komponenten der Version 2 sind in ActionScript 2.0 geschrieben. Jede Komponente ist eine Klasse, und jede Klasse ist ihrerseits ein ActionScript-Paket. Eine Schaltflächenkomponente ist beispielsweise eine Instanz der RadioButton-Klasse mit dem Paketnamen mx.controls. Weitere Informationen zu Paketen finden Sie unter „Pakete verwenden“ im ActionScriptReferenzhandbuch. Alle mit Version 2 der Macromedia Komponenten-Architektur erstellten Komponenten sind Unterklassen der Klassen UIObject und UIComponent und übernehmen alle Eigenschaften, Methoden und Ereignisse dieser Klassen. Manche Komponenten sind Unterklassen anderer Komponenten. Den Vererbungspfad jeder Komponente finden Sie im jeweiligen Eintrag in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Alle Komponenten verwenden außerdem dasselbe Ereignismodell, CSS-basierte Stile sowie integrierte Skin-Mechanismen. Weitere Informationen zu Stilen und Skin-Mechanismen finden Sie in Kapitel 3, „Komponenten individuell anpassen“, auf Seite 31. Weitere Informationen zur Ereignisverarbeitung finden Sie in Kapitel 2, „Komponenten verwenden“, auf Seite 17. Was ist neu in den Komponenten der Version 2 Komponenten-Inspektor: Mit diesem Bedienfeld können Sie Komponentenparameter während des Authorings in Macromedia Flash und Macromedia Dreamweaver ändern. (Weitere Informationen finden Sie unter „Komponenten im Eigenschafteninspektor und im Bedienfeld „Komponenten-Inspektor““ auf Seite 18.) Listener-Ereignismodell: Ermöglicht es Listener-Objekten in Funktionen, Ereignisse zu verarbeiten. (Weitere Informationen finden Sie unter „Komponentenereignisse“ auf Seite 25.) Skin-Eigenschaften: Ermöglichen es Ihnen, Zustände nur dann zu laden, wenn sie benötigt werden. (Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42.) Was ist neu in den Komponenten der Version 2 13 CSS-basierte Stile: Ermöglichen ein einheitliches Aussehen und Verhalten über verschiedene Anwendungen. (Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31.) Themen: Ermöglichen die Übertragung eines neuen Erscheinungsbildes auf einen Satz von Komponenten. (Weitere Informationen finden Sie unter „Themen“ auf Seite 39.) Halo-Thema: Stellt eine gebrauchsfertige, interaktive und flexible Benutzeroberfläche für Anwendungen zur Verfügung. Managerklassen: Bieten eine einfache Möglichkeit zur Steuerung von Fokus und Tiefe in einer Anwendung. Weitere Informationen hierzu finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „Komponententiefe in einem Dokument verwalten“ auf Seite 29. UIObject und UIComponent: Diese grundlegenden Klassen stellen allen Komponenten die wichtigsten Funktionen zur Verfügung. Weitere Informationen hierzu finden Sie unter „UIComponent“ auf Seite 610 und „UIObject“ auf Seite 619. Verwendung von Paketen als SWC-Datei: Ermöglicht eine einfache Verteilung sowie Programmcode. Weitere Informationen finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. Integrierte Datenbindung: Diese Funktionen stehen im Bedienfeld Komponenten-Inspektor zur Verfügung. Wenn Sie weitere Informationen zu dieser Funktion benötigen, klicken Sie auf die Schaltfläche zum Aktualisieren der Hilfe. Leicht erweiterbare Klassenhierarchie: Ermöglicht es Ihnen, mit ActionScript 2.0 eigene Namespaces zu erstellen, Klassen bei Bedarf zu importieren und Komponenten durch Unterklassen zu erweitern. Weitere Informationen finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703 und im ActionScript-Referenzhandbuch. Informationen zu kompilierten Clips und SWC-Dateien Ein kompilierter Clip wird zur Vorkompilierung komplexer Symbole in einem Flash-Dokument verwendet. Ein Movieclip mit einem komplexen ActionScript-Code, der selten geändert wird, könnte beispielsweise in einen kompilierten Clip umgewandelt werden. Dementsprechend würden auch die Befehle Film testen und Veröffentlichen schneller ausgeführt werden können. Eine SWC-Datei wird zum Speichern und Verteilen von Komponenten verwendet. Wenn Sie eine SWC-Datei im Ordner First Run\Components ablegen, wird die Komponente im Bedienfeld Komponenten angezeigt. Wenn Sie eine Komponente aus dem Bedienfeld Komponenten zur Bühne hinzufügen, wird ein Symbol des kompilierten Clips zur Bibliothek hinzugefügt. Weitere Informationen zu SWC-Dateien finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. 14 Kapitel 1: Einführung in Komponenten Eingabehilfen und Komponenten Die Nachfrage nach barrierefreien Webinhalten wächst stetig an. Visuelle Inhalte in FlashAnwendungen können Benutzern mit Sehschwächen mit Hilfe eines Bildschirmleseprogramms bereitgestellt werden. Diese Software liefert eine gesprochene Beschreibung des Bildschirminhalts. Beim Erstellen einer Komponente kann der Autor mit Hilfe von ActionScript die Kommunikation zwischen der Komponente und einem Bildschirmleseprogramm ermöglichen. Wenn ein Entwickler anschließend für die Erstellung einer Anwendung in Flash Komponenten verwendet, kann er jede Komponenteninstanz über das Bedienfeld Eingabehilfen konfigurieren. Bei den meisten von Macromedia entwickelten Komponenten können Eingabehilfen verwendet werden. Wenn Sie wissen möchten, ob eine Komponente verfügbar ist, überprüfen Sie den jeweiligen Eintrag in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Wenn Sie in Flash eine Anwendung erstellen, müssen Sie für jede Komponente eine Codezeile hinzufügen (mx.accessibility.ComponentNameAccImpl.enableAccessibility();) und die Parameter für die Eingabehilfen im Bedienfeld Eingabehilfen festlegen. Die Funktionsweise der Eingabehilfen für Komponenten ist mit der aller Flash-Movieclips identisch. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Behindertengerechte Inhalte erstellen“. Bei den meisten von Macromedia erstellten Komponenten ist außerdem eine Navigation per Tastatur möglich. Bei jeder in Kapitel 4, „Komponenten-Referenz“, auf Seite 51 erläuterten Komponente ist angegeben, ob Sie die Komponente über dieTastatur steuern können oder nicht. Eingabehilfen und Komponenten 15 16 Kapitel 1: Einführung in Komponenten KAPITEL 2 Komponenten verwenden Komponenten sind in Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 vielseitig einsetzbar. Im Bedienfeld Komponenten können Sie die Komponenten anzeigen und sie während des Authorings einem Dokument hinzufügen. Wenn einem Dokument eine Komponente hinzugefügt wurde, können Sie deren Eigenschaften im Eigenschafteninspektor oder im Bedienfeld Komponenten-Inspektor anzeigen. Die Verwendung von Ereignis-Listenern und die Ereignisverarbeitung mit Hilfe von ActionScript ermöglicht eine Kommunikation der Komponenten untereinander. Außerdem können Sie die Komponententiefe in einem Dokument verwalten und festlegen, wann eine Komponente den Fokus erhält. Bedienfeld „Komponenten“ Alle verfügbaren Komponenten sind im Bedienfeld Komponenten aufgeführt. Wenn Sie Flash MX 2004 oder Flash MX Professional 2004 installieren und zum ersten Mal starten, werden die Komponenten im Ordner Macromedia\Flash 2004\de\First Run\Components (Windows) bzw. Macromedia Flash 2004/en/First Run/Components (Macintosh) im Bedienfeld Komponenten angezeigt. So rufen Sie das Bedienfeld „Komponenten“ auf: • Wählen Sie Fenster > Entwicklungs-Bedienfelder > Komponenten. 17 Komponenten im Bedienfeld „Bibliothek“ Wenn Sie einem Dokument eine Komponente hinzugefügt haben, wird diese im Bedienfeld Bibliothek als Symbol eines kompilierten Clips (SWC-Datei) angezeigt. Eine ComboBox-Komponente im Bedienfeld „Bibliothek“. Sie können jederzeit weitere Instanzen einer Komponente in Ihr Dokument einfügen, indem Sie das Komponentensymbol aus der Bibliothek auf die Bühne ziehen. Weitere Informationen zu kompilierten Clips finden Sie unter „Mit SWC-Dateien und kompilierten Clips arbeiten“ auf Seite 20. Komponenten im Eigenschafteninspektor und im Bedienfeld „Komponenten-Inspektor“ Nachdem Sie einem Flash-Dokument eine Instanz einer Komponente hinzugefügt haben, können Sie die Informationen zu dieser Instanz im Eigenschafteninspektor festlegen und anzeigen. Zum Erstellen einer Instanz einer Komponente ziehen Sie die gewünschte Komponente aus dem Bedienfeld Komponenten auf die Bühne, weisen ihr im Eigenschafteninspektor einen Namen zu und stellen in den Feldern der Registerkarte Parameter die gewünschten Instanzparameter ein. Sie können die Parameter einer Komponenteninstanz auch im Bedienfeld Komponenten-Inspektor festlegen. Es spielt keine Rolle, in welchem Bedienfeld Sie die Parameter festlegen. Wählen Sie das Bedienfeld, das Sie persönlich bevorzugen. Weitere Informationen zum Festlegen von Parametern finden Sie unter „Komponentenparameter festlegen“ auf Seite 24. 18 Kapitel 2: Komponenten verwenden So zeigen Sie Informationen zu einer Komponenteninstanz im Eigenschafteninspektor an: 1 Wählen Sie Fenster > Eigenschaften. 2 Wählen Sie auf der Bühne die Instanz einer Komponente aus. 3 Klicken Sie auf die Registerschaltfläche Parameter, um die Parameter anzuzeigen. So zeigen Sie die Parameter einer Komponenteninstanz im Bedienfeld „KomponentenInspektor“ an: 1 Wählen Sie Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor. 2 Wählen Sie auf der Bühne die Instanz einer Komponente aus. 3 Klicken Sie auf die Registerschaltfläche Parameter, um die Parameter anzuzeigen. Komponenten im Eigenschafteninspektor und im Bedienfeld „Komponenten-Inspektor“ 19 Komponenten in der Live-Vorschau Mit Hilfe der standardmäßig aktivierten Funktion Live-Vorschau können Sie Komponenten so auf der Bühne anzeigen, wie Sie nach der Veröffentlichung des Flash-Objekts aussehen werden, und können damit in etwa die Größe der Komponenten einschätzen. Die Live-Vorschau gibt je nach Komponente verschiedene Parameter wieder. Welche Komponentenparameter in der LiveVorschau wiedergegeben werden, können Sie in den einzelnen Einträgen zu den Komponenten in Kapitel 4, „Komponenten-Referenz“, auf Seite 51 nachlesen. Die Funktionsweise einer Komponente lässt sich in der Live-Vorschau nicht überprüfen. Verwenden Sie für einen Funktionstest stattdessen den Befehl Steuerung > Film testen. Button-Komponente bei aktivierter Live-Vorschau Button-Komponente bei deaktivierter Live-Vorschau So schalten Sie die Live-Vorschau ein und aus: • Wählen Sie Steuerung > Live-Vorschau aktivieren. Ein Häkchen neben der Option zeigt an, dass sie aktiviert ist. Weitere Informationen finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. Mit SWC-Dateien und kompilierten Clips arbeiten Bei den in Flash MX 2004 oder Flash MX Professional 2004 verfügbaren Komponenten handelt es sich nicht um FLA-Dateien, sondern um SWC-Dateien. Das SWC-Dateiformat wird von Macromedia für Komponenten verwendet. Wenn Sie eine Komponente aus dem Bedienfeld Komponenten zur Bühne hinzufügen, wird ein Symbol des kompilierten Clips zur Bibliothek hinzugefügt. Bei einer SWC-Datei handelt es sich um einen kompilierten Clip, der zur Verteilung exportiert wurde. Sie können einen Movieclip außerdem in Flash kompilieren und in ein Symbol eines kompilierten Clips umwandeln. Das Symbol eines kompilierten Clips verhält sich genauso wie das Symbol des Movieclips, aus dem es kompiliert wurde. Kompilierte Clips lassen sich jedoch wesentlich schneller anzeigen und veröffentlichen, als Symbole normaler Movieclips. Kompilierte Clips können nicht bearbeitet werden, verfügen aber über Eigenschaften, die im Eigenschafteninspektor und im Bedienfeld Komponenten-Inspektor angezeigt werden, und beinhalten ferner eine Live-Vorschau. Die in Flash MX 2004 oder Flash MX Professional 2004 enthaltenen Komponenten wurden bereits in kompilierte Clips umgewandelt. Wenn Sie eine Komponente erstellen, können Sie sie zur Verteilung als SWC-Datei exportieren. Weitere Informationen hierzu finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. 20 Kapitel 2: Komponenten verwenden So kompilieren Sie ein Movieclip-Symbol: • Klicken Sie mit der rechten Maustaste (Windows) bzw. bei gedrückter Taste <Ctrl> (Macintosh) auf den gewünschten Movieclip in der Bibliothek, und wählen Sie die Option In kompilierten Clip konvertieren. So exportieren Sie eine SWC-Datei: • Klicken Sie mit der rechten Maustaste (Windows) bzw. bei gedrückter Taste <Ctrl> (Macintosh) auf den gewünschten Movieclip in der Bibliothek, und wählen Sie die Option SWC-Datei exportieren. Hinweis: Flash MX 2004 und Flash MX Professional 2004 unterstützen weiterhin Komponenten im FLA-Dateiformat. Komponenten in Flash-Dokumente aufnehmen Wenn Sie eine Komponente aus dem Bedienfeld Komponenten auf die Bühne ziehen, wird ein Symbol des kompilierten Clips zum Bedienfeld Bibliothek hinzugefügt. Wenn ein Symbol eines kompilierten Clips zur Bibliothek hinzugefügt wurde, können Sie diese Komponente auch zur Laufzeit einem Dokument hinzufügen, indem Sie die ActionScript-Methode UIObject.createClassObject() verwenden. • Einsteiger können Komponenten mit Hilfe des Bedienfelds Komponenten in Flash- • • Dokumente aufnehmen, ihre grundlegenden Parameter im Eigenschafteninspektor oder auf der Registerkarte Parameter im Bedienfeld Komponenten-Inspektor festlegen und die Ereignisprozedur on() zur Steuerung von Komponenten verwenden. Benutzer, die bereits etwas mehr Erfahrung im Umgang mit Flash gesammelt haben, können die Parameter nach dem Hinzufügen von Komponenten mit Hilfe des Bedienfelds Komponenten wahlweise im Eigenschafteninspektor oder mit Hilfe von ActionScriptMethoden festlegen oder auch beide Verfahren miteinander kombinieren. Sie können die Ereignisprozedur on() oder Ereignis-Listener verwenden, um Komponentenereignisse zu verarbeiten. Fortgeschrittene Flash-Programmierer können sowohl das Bedienfeld Komponenten als auch ActionScript-Methoden verwenden, um Komponenten hinzuzufügen und ihre Eigenschaften festzulegen, oder die Komponenteninstanzen von Fall zu Fall auch ausschließlich mit Hilfe von ActionScript zur Laufzeit implementieren. Sie können Ereignis-Listener zur Steuerung von Komponenten verwenden. Wenn Sie die Skins einer Komponente bearbeiten und später eine weitere Version der Komponente oder eine andere Komponente hinzufügen möchten, die dieselben Skins verwendet, können Sie die bearbeiteten Skins entweder übernehmen oder durch einen neuen Satz StandardSkins ersetzen. Beim Ersetzen der bearbeiteten Skins werden alle Komponenten, die diese Skins verwenden, mit den Standard-Skins aktualisiert. Weitere Informationen zum Bearbeiten von Skins finden Sie in Kapitel 3, „Komponenten individuell anpassen“, auf Seite 31. Komponenten in Flash-Dokumente aufnehmen 21 Komponenten mit dem Bedienfeld „Komponenten“ hinzufügen Nachdem Sie eine Komponente mit Hilfe des Bedienfelds Komponenten in ein Dokument eingefügt haben, können Sie dem Dokument weitere Instanzen dieser Komponente hinzufügen, indem Sie die Komponente aus dem Bedienfeld Bibliothek auf die Bühne ziehen. Die Eigenschaften dieser weiteren Instanzen werden auf der Registerkarte Parameter des Eigenschafteninspektors oder auf der Registerkarte Parameter im Bedienfeld KomponentenInspektor eingestellt. So fügen Sie einem Flash-Dokument im Bedienfeld „Komponenten“ eine Komponente hinzu: 1 Wählen Sie Fenster > Entwicklungs-Bedienfelder > Komponenten. 2 Führen Sie einen der folgenden Schritte aus: Ziehen Sie eine Komponente aus dem Bedienfeld Komponenten auf die Bühne. ■ Doppelklicken Sie auf eine Komponente im Bedienfeld Komponenten. Wenn die Komponente als FLA-Datei vorliegt (alle installierten Komponenten aus Version 2 sind SWC-Dateien), und wenn Sie Skins für eine andere Instanz derselben Komponente bearbeitet haben bzw. für eine andere Komponente, die Skins mit der aktuellen Komponente teilt, wählen Sie einen der folgenden Schritte: ■ Wählen Sie Vorhandene Elemente nicht ersetzen, um die bearbeiteten Skins beizubehalten und der neuen Komponente zuzuweisen. ■ Wählen Sie Vorhandene Elemente ersetzen, um alle Skins durch Standard-Skins zu ersetzen. Sowohl der neuen Komponente als auch allen bereits vorhandenen Versionen sowie allen Komponenten, die dieselben Skins verwenden, werden die voreingestellten Standard-Skins zugewiesen. Wählen Sie die Komponente auf der Bühne aus. Wählen Sie Fenster > Eigenschaften. Geben Sie im Eigenschafteninspektor einen Instanznamen für die Komponenteninstanz an. Klicken Sie auf die Registerkarte Parameter, und legen Sie die Parameter für die Instanz fest. Weitere Informationen hierzu finden Sie unter „Komponentenparameter festlegen“ auf Seite 24. Ändern Sie bei Bedarf die Größe der Komponente. Weitere Informationen zum Ändern der Größe bestimmter Komponententypen finden Sie in den Einträgen zu den einzelnen Komponenten in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Ändern Sie bei Bedarf die Farbe und Textformatierung der Komponente. Führen Sie zu diesem Zweck einen oder mehrere der folgenden Schritte aus: ■ Setzen oder ändern Sie einen bestimmten Stileigenschaftswert für eine Komponenteninstanz mit Hilfe der für alle Komponenten verfügbaren Methode setStyle(). Weitere Informationen hierzu finden Sie unter UIObject.setStyle(). ■ Bearbeiten Sie mehrere Eigenschaften im Stylesheet _global, das allen Komponenten der Version 2 zugewiesen ist. ■ Erstellen Sie bei Bedarf ein benutzerdefiniertes Stylesheet für bestimmte Komponenteninstanzen. Weitere Informationen hierzu finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. ■ 3 4 5 6 7 8 9 22 Kapitel 2: Komponenten verwenden 10 Führen Sie bei Bedarf einen der folgenden Schritte aus, um die Darstellung der Komponente anzupassen: ■ Zuweisen eines Themas (siehe „Themen“ auf Seite 39). ■ Skins einer Komponente bearbeiten (siehe „Skinning-Komponenten“ auf Seite 42). Komponenten mit ActionScript hinzufügen Wenn Sie einem Dokument mit Hilfe von ActionScript eine Komponente hinzufügen möchten, müssen Sie sie zunächst der Bibliothek hinzufügen. Sie können ActionScript-Methoden festlegen, um weitere Parameter für dynamisch hinzugefügte Komponenten festzulegen. Weitere Informationen hierzu finden Sie in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Hinweis: In dieser Anleitung wird vorausgesetzt, dass Sie über ein gewisses Maß an Erfahrung im Umgang mit ActionScript verfügen. So fügen Sie einem Flash-Dokument in ActionScript eine Komponente hinzu: 1 Ziehen Sie eine Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Die Komponente wird der Bibliothek hinzugefügt. 2 Wählen Sie das Bild in der Zeitleiste aus, in dem Sie die Komponente platzieren möchten. 3 Öffnen Sie das Bedienfeld Aktionen, wenn Sie es nicht bereits geöffnet haben. 4 Rufen Sie die Methode createClassObject() auf, um die Komponenteninstanz zur Laufzeit zu erstellen. Diese Methode kann direkt oder aus einer beliebigen Komponenteninstanz aufgerufen werden. Als Parameter müssen ein Name für die Komponentenklasse, ein Instanzname für die neue Instanz, eine Tiefe sowie ein optionales Initialisierungsobjekt festgelegt werden. Das Klassenpaket können Sie im Parameter className wie folgt festlegen: createClassObject(mx.controls.CheckBox, "cb", 5, {label:"Check Me"}); Sie können das Klassenpaket auch wie folgt importieren: import mx.controls.CheckBox; createClassObject(CheckBox, "cb", 5, {label:"Check Me"}); Weitere Informationen hierzu finden Sie unter UIObject.createClassObject(). 5 Legen Sie mit Hilfe der ActionScript-Methoden und -Eigenschaften der Komponente weitere Optionen fest, oder überschreiben Sie die während der Anwendungserstellung festgelegten Parameter. Ausführliche Informationen zu den ActionScript-Methoden und -Eigenschaften, die für jede Komponente verfügbar sind, finden Sie in den Einträgen zur jeweiligen Komponente in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Komponenten in Flash-Dokumente aufnehmen 23 Größe von Komponentenbezeichnungen und Höhe und Breite von Komponenten Wenn die Komponenteninstanz, die einem Dokument hinzugefügt wurde, für die Darstellung ihrer Bezeichnung nicht ausreicht, wird der Text in der Anzeige abgeschnitten. Ist eine Komponenteninstanz hingegen größer als der Bezeichnungstext, so reagiert die Komponente auch auf einen Mausklick auf den Teil des aktiven Bereichs, der nicht mit Text ausgefüllt ist. Die Größe der Komponenten können Sie mit dem Werkzeug Frei transformieren oder mit der Methode setSize() anpassen. Die Methode setSize() können Sie aus jeder beliebigen Komponenteninstanz aufrufen (siehe UIObject.setSize()). Wenn Sie die Höhe und Breite einer Komponente mit Hilfe der ActionScript-Eigenschaften _height und _width anpassen, wird sie entsprechend größer oder kleiner dargestellt, das Layout ihres Inhalts hierbei jedoch nicht verändert. Dies kann dazu führen, dass die Komponente während der Filmwiedergabe verzerrt dargestellt wird. Weitere Informationen zum Ändern der Größe von Komponenten finden Sie in den Einträgen zur jeweiligen Komponente in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Komponentenparameter festlegen Jede Komponente verfügt über Parameter, deren Einstellungen Sie ändern können, um das Aussehen und Verhalten der Komponente zu ändern. Ein Parameter ist eine Eigenschaft oder eine Methode, die im Eigenschafteninspektor oder im Bedienfeld Komponenten-Inspektor angezeigt wird. Die am häufigsten verwendeten Eigenschaften und Methoden werden als AuthoringParameter angezeigt, während andere mit ActionScript festgelegt werden müssen. Alle Parameter, die beim Authoring eingestellt werden können, können auch mit ActionScript festgelegt werden. Wenn Sie einen Parameter mit ActionScript festlegen, wird der Wert überschrieben, den Sie beim Authoring festgelegt haben. Alle Komponenten der Version 2 übernehmen die Eigenschaften und Methoden der UIObjectund UIComponent-Klassen. Hierbei handelt es sich um die Eigenschaften und Methoden, die von allen Komponenten verwendet werden, beispielsweise UIObject.setSize(), UIObject.setStyle(), UIObject.x und UIObject.y. Jede Komponente verfügt außerdem über eigene Eigenschaften und Methoden, und einige von ihnen sind als Authoring-Parameter verfügbar. Die ProgressBar-Komponente verfügt beispielsweise über eine percentCompleteEigenschaft (ProgressBar.percentComplete), wohingegen die NumericStepper-Komponente über nextValue- und previousValue-Eigenschaften verfügt (NumericStepper.nextValue, NumericStepper.previousValue). Komponenten aus Flash-Dokumenten entfernen Zum Entfernen der Instanzen einer Komponente aus einem Flash-Dokument entfernen Sie die betreffende Komponente aus der Bibliothek, indem Sie das entsprechende Symbol des kompilierten Clips löschen. So entfernen Sie eine Komponente aus einem Dokument: 1 Wählen Sie im Bedienfeld Bibliothek das Symbol des kompilierten Clips (SWC-Datei). 2 Klicken Sie auf die Schaltfläche Löschen am unteren Rand des Bedienfelds Bibliothek, oder wählen Sie im Optionsmenü des Bedienfelds Bibliothek den Befehl Löschen. 3 Klicken Sie im Dialogfeld Löschen auf die Schaltfläche Löschen, um den Vorgang zu bestätigen. 24 Kapitel 2: Komponenten verwenden Codehinweise verwenden Wenn Sie ActionScript 2 verwenden, können Sie die genaue Bezeichnung einer Variablen eingeben, wenn sie auf einer integrierten Klasse beruht (einschließlich Komponentenklassen). Hierdurch zeigt der ActionScript-Editor Codehinweise für die Variable an. Angenommen, Sie geben Folgendes ein: import mx.controls.CheckBox; var meineCheckBox:CheckBox meineCheckBox. Sobald Sie den Punkt eingeben, zeigt Flash eine Liste mit Methoden und Eigenschaften an, die für CheckBox-Komponenten verfügbar sind, da Sie die Variable als CheckBox eingegeben haben. Weitere Informationen zur Datentypisierung finden Sie unter „Strikte Datentypisierung“ im ActionScript-Referenzhandbuch. Weitere Informationen zur Verwendung angezeigter Codehinweise finden Sie unter „Codehinweise verwenden“ im ActionScript-Referenzhandbuch. Komponentenereignisse Alle Komponenten verfügen über Ereignisse, die übertragen werden, wenn der Benutzer mit einer Komponente interagiert oder etwas Bestimmtes mit der Komponente passiert. Wenn Sie ein Ereignis verarbeiten möchten, schreiben Sie einen ActionScript-Code, der ausgeführt wird, wenn das Ereignis ausgelöst wird. Sie können Komponentenereignisse folgendermaßen verarbeiten: • Verwenden Sie die Komponentenereignisprozedur on(). • Verwenden Sie Ereignis-Listener. Ereignisprozedur „on()“ verwenden Am einfachsten können Sie Komponentenereignisse mit der Ereignisprozedur on() verarbeiten. Sie können die Ereignisprozedur on() einer Komponenteninstanz genauso zuweisen, wie Sie dies bei Schaltflächen oder Movieclips tun. Wenn Sie die Ereignisprozedur on() verwenden, wird automatisch das Ereignisobjekt eventObj erstellt, sobald das Ereignis ausgelöst und an die Prozedur übergeben wird. Das Ereignis-Objekt verfügt über Eigenschaften, die Informationen zum Ereignis enthalten. An die Prozedur on() wird immer das Ereignisobjekt eventObj übergeben. Weitere Informationen hierzu finden Sie unter „UIEventDispatcher-Klasse“ auf Seite 617. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der ButtonKomponenteninstanz meineButtonComponent zugewiesen ist, wird _level0.meineButtonComponent an das Bedienfeld Ausgabe gesendet. on(click){ trace(this); } Komponentenereignisse 25 So verwenden Sie die Ereignisprozedur „on()“: 1 Ziehen Sie eine CheckBox-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Wählen Sie die Komponente aus, und wählen Sie Fenster > Aktionen. 3 Geben Sie im Bedienfeld Aktionen den folgenden Code ein: on(click){ trace("Das Ereignis " + eventObj.type + " wurde übertragen"); } In die geschweiften Klammern ({}) können Sie einen beliebigen Code eingeben. 4 Wählen Sie Steuerung > Film testen, und aktivieren Sie das Kontrollkästchen, um das Ergebnis im Bedienfeld Ausgabe anzuzeigen. Weitere Informationen finden Sie in den einzelnen Einträgen zu den Ereignissen in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Komponentenereignis-Listener verwenden Am besten verwenden Sie Listener, um Komponentenereignisse zu verarbeiten. Ereignisse werden von Komponenten übertragen, und jedes Objekt, das dem Ereignis-Broadcaster (Komponenteninstanz) als Listener zugewiesen ist, kann über das Ereignis benachrichtigt werden. Der Listener wird einer Funktion zugewiesen, die das Ereignis verarbeitet. Sie können einer Komponenteninstanz mehrere Listener zuweisen. Außerdem können Sie einen Listener mehreren Komponenteninstanzen zuweisen. Wenn Sie ein Ereignisprozedurmodell verwenden möchten, müssen Sie ein Listener-Objekt erstellen, das über eine Eigenschaft mit dem Namen des Ereignisses verfügt. Die Eigenschaft wird einer Rückruffunktion zugewiesen. Rufen Sie anschließend die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, und geben Sie ihr den Namen des Ereignisses und den Namen des Listener-Objekts. Das Aufrufen der Methode UIEventDispatcher.addEventListener() wird als „Registrieren“ oder „Zuweisen“ eines Listener-Objekts bezeichnet, wie das folgende Beispiel veranschaulicht: listenerObject.eventName = function(evtObj){ // Hier Code eingeben }; componentInstance.addEventListener("eventName", listenerObject); Wenn das Schlüsselwort this im obigen Code in einer Rückruffunktion verwendet wird, ist es nur innerhalb des listenerObject gültig. Bei dem Parameter evtObj handelt es sich um ein Ereignis-Objekt, das automatisch erstellt wird, wenn ein Ereignis ausgelöst und an die Rückruffunktion des Listener-Objekts übergeben wird. Das Ereignis-Objekt verfügt über Eigenschaften, die Informationen zum Ereignis enthalten. Weitere Informationen hierzu finden Sie unter „UIEventDispatcher-Klasse“ auf Seite 617. Weitere Informationen zu den Ereignissen, die von Komponenten übertragen werden, finden Sie in den Einträgen zu den jeweiligen Komponenten in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. 26 Kapitel 2: Komponenten verwenden So weisen Sie einen Ereignis-Listener zu: 1 Ziehen Sie eine Button-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor den Instanznamen button ein. 3 Ziehen Sie eine TextInput-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 4 Geben Sie im Eigenschafteninspektor den Instanznamen meinText ein. 5 Klicken Sie in der Zeitleiste auf Bild 1. 6 Wählen Sie Fenster > Aktionen. 7 Geben Sie im Bedienfeld Aktionen den folgenden Code ein: form = new Object(); form.click = function(evt){ meinText.text = evt.target; } button.addEventListener("click", form); Die Eigenschaft target des Ereignisobjekts ist ein Verweis auf die Instanz, die das Ereignis überträgt. Dieser Code zeigt den Wert der Eigenschaft target im Texteingabefeld an. Zusätzliche Ereignissyntax Neben einem Listener-Objekt können Sie auch eine Funktion als Listener verwenden. Ein Listener ist eine Funktion, wenn er nicht zu einem Objekt gehört. Der folgende Code erstellt beispielsweise die Listener-Funktion meinHandler und weist sie buttonInstance zu: function meinHandler(eventObj){ if (eventObj.type == "click"){ // Hier Code eingeben } } buttonInstance.addEventListener("click", meinHandler); Hinweis: Wenn Sie eine Funktion als Listener verwenden, ist das Schlüsselwort this in diesem Fall buttonInstance, nicht die Zeitleiste, auf der die Funktion definiert ist. Sie können außerdem Listener-Objekte verwenden, die eine handleEvent-Methode unterstützen. Unabhängig vom Namen des Ereignisses wird die handleEvent-Methode des Listener-Objekts aufgerufen. Sie müssen eine if else- oder switch-Anweisung verwenden, um mehrere Ereignisse zu verarbeiten. Dadurch wird die Syntax allerdings sehr unübersichtlich. Der folgende Code verwendet beispielsweise eine if else-Anweisung, um die Ereignisse click und enter zu verarbeiten: meinObj.handleEvent = function(o){ if (o.type == "click"){ // Hier Code eingeben } else if (o.type == "enter"){ // Hier Code eingeben } } target.addEventListener("click", meinObj); target2.addEventListener("enter", meinObj); Komponentenereignisse 27 Es gibt einen zusätzlichen Syntaxstil für Ereignisse, der nur verwendet werden sollte, wenn Sie eine Komponente erstellen und wissen, dass ein bestimmtes Objekt der einzige Listener für ein Ereignis ist. In diesem Fall macht sich der Vorteil des Ereignismodells der Version 2 bemerkbar. Hier wird eine Methode immer auf der Komponenteninstanz aufgerufen, die sich aus dem Ereignisnamen plus der Prozedur zusammensetzt. Wenn Sie beispielsweise das Ereignis click verarbeiten möchten, müssten Sie den folgenden Code eingeben: componentInstance.clickHandler = function(o){ // Hier Code eingeben } Wenn das Schlüsselwort this im obigen Code in einer Rückruffunktion verwendet wird, ist es nur innerhalb componentInstance gültig. Weitere Informationen hierzu finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. Benutzerdefinierte Fokusnavigation erstellen Wenn ein Benutzer zur Navigation in einer Flash-Anwendung die Tabulatortaste drückt oder klickt, bestimmt der FocusManager-Klasse, welche Komponente den Fokus erhält. Es ist nicht erforderlich, einer Anwendung eine FocusManager-Instanz hinzuzufügen oder einen Code zu erstellen, um den FocusManager zu aktivieren. Wenn ein RadioButton-Objekt den Fokus erhält, wird dieses Objekt sowie alle Objekte mit demselben groupName-Wert vom FocusManager überprüft, und der Fokus wird demjenigen Objekt gegeben, für das die Eigenschaft selected auf true gesetzt ist. Jede modale Window-Komponente enthält eine FocusManager-Instanz, sodass die Steuerelemente in diesem Fenster eine eigene und in sich geschlossene Tabulatorreihenfolge erhalten. Hierdurch wird verhindert, dass ein Benutzer mit der Tabulatortaste zu Komponenten in anderen Fenstern gelangt. Wenn Sie eine Fokusnavigation in einer Anwendung erstellen möchten, setzen Sie die Eigenschaft auf eine beliebige Komponente (einschließlich Schaltflächen), die den Fokus erhalten soll. Wenn ein Benutzer die Tabulatortaste drückt, sucht der FocusManager-Klasse nach einem aktivierten Objekt mit einer tabIndex-Eigenschaft, die höher ist als der aktuelle Wert von tabIndex. Wenn der FocusManager-Klasse die höchste tabIndex-Eigenschaft erreicht, kehrt er zu Null zurück. Im folgenden Beispiel erhält zuerst das Objekt comment (TextArea-Komponente o. Ä.) und anschließend das Objekt okButton den Eingabefokus: tabIndex comment.tabIndex = 1; okButton.tabIndex = 2; Sie können einen Tabulatorindexwert auch mit Hilfe des Bedienfelds Eingabehilfen zuweisen. Wenn kein Element auf der Bühne über einen Tabulatorindexwert verfügt, verwendet der FocusManager die z-Reihenfolge. Die z-Reihenfolge wird in erster Linie durch die Reihenfolge festgelegt, in der Komponenten auf die Bühne gezogen werden. Sie können die endgültige z-Reihenfolge jedoch auch mit Hilfe der Befehle Modifizieren, Anordnen, In den Vordergrund bzw. Hintergrund festlegen. Wenn eine Komponente in einer Anwendung den Fokus erhalten soll, rufen Sie auf. FocusManager.setFocus() 28 Kapitel 2: Komponenten verwenden Sie können eine Schaltfläche erstellen, die beim Betätigen der Eingabetaste durch den Anwender den Fokus erhält, indem Sie die Eigenschaft FocusManager.defaultPushButton auf den Instanznamen der betreffenden Schaltfläche setzen: FocusManager.defaultPushButton = okButton; Der FocusManager-Klasse überschreibt das standardmäßige Fokusrechteck von Flash Player und zeichnet ein angepasstes Fokusrechteck mit abgerundeten Ecken. Komponententiefe in einem Dokument verwalten Wenn Sie eine Komponente ober- oder unterhalb eines anderen Objekts in einer Anwendung positionieren möchten, müssen Sie den DepthManager-Klasse verwenden. Die DepthManagerAPI ermöglicht es Ihnen, UI-Komponenten in einer geeigneten Z-Reihenfolge zu platzieren (beispielsweise ein Kombinationslistenfeld, das vor anderen Komponenten aufklappt, eine Einfügemarke, die im Vordergrund angezeigt wird, Dialogfelder, die sich vor Inhalten befinden usw.) Der DepthManager hat zwei Hauptaufgaben: Sie können den DepthManager zur Verwaltung der relativen Tiefenzuweisungen innerhalb eines Dokuments verwenden und zur Verwaltung von festgelegten Tiefen in der Hauptzeitleiste für Funktionen auf Systemebene, beispielsweise den Cursor oder QuickInfos. Rufen Sie die DepthManager-Methoden auf, um die entsprechenden Funktionen zu verwenden (siehe „DepthManager-Klasse“ auf Seite 295). Mit dem folgenden Code wird die Komponenteninstanz loader unter die Komponente button platziert: loader.setDepthBelow(button); Einen Preloader mit Komponenten verwenden Standardmäßig ist für Komponenten die Option In erstes Bild exportieren aktiviert. Dadurch werden die Komponenten noch vor der Darstellung des ersten Bildes der Anwendung geladen. Wenn Sie einen Preloader für eine Anwendung erstellen möchten, muss die Option In erstes Bild exportieren für jedes Symbol eines kompilierten Clips in Ihrer Bibliothek deaktiviert werden. Hinweis: Wenn Sie zur Anzeige des Fortschritts beim Ladevorgang die ProgressBar-Komponente verwenden, lassen Sie die Option In erstes Bild exportieren für diese Komponente aktiviert. Einen Preloader mit Komponenten verwenden 29 Komponenten aus Version 1 für die Architektur von Version 2 aktualisieren Die Komponenten in Version 2 sind mit verschiedenen Webstandards kompatibel (hinsichtlich Ereignissen, Stilen, Get-/Set-Eigenschaften usw.) und unterscheiden sich grundlegend von den entsprechenden Komponenten in Version 1, die mit Macromedia Flash MX veröffentlicht wurden sowie in den DRKs, die vor Macromedia Flash MX 2004 erschienen sind. Komponenten aus Version 2 haben andere APIs und wurden in ActionScript 2.0 geschrieben. Die gleichzeitige Verwendung von Komponenten aus Version 1 und Version 2 in derselben Anwendung kann daher zu unvorhergesehenen Effekten führen. Informationen zur Aktualisierung von Komponenten aus Version 1 für die Verwendung in Ereignisverarbeitung, Stilen und Get-/SetZugriff auf Eigenschaften statt auf Methoden finden Sie in Kapitel 5, „Komponenten erstellen“, auf Seite 703. Flash-Anwendungen mit Komponenten aus Version 1 funktionieren einwandfrei im Flash Player 6 und Flash Player 7, wenn Sie für den Flash Player 6 oder den Flash Player 6, Release 65, veröffentlicht werden. Wenn Sie Ihre Anwendungen dahingehend aktualisieren möchten, dass sie auch für die Veröffentlichung mit Flash Player 7 funktionieren, müssen Sie Ihren Code auf die Verwendung der strikten Datentypisierung umstellen. Weitere Informationen finden Sie unter „Klassen mit ActionScript 2.0 erstellen“ im ActionScript-Referenzhandbuch. 30 Kapitel 2: Komponenten verwenden KAPITEL 3 Komponenten individuell anpassen Sie können das Aussehen von Komponenten ändern, wenn Sie sie in verschiedenen Anwendungen verwenden. In Macromedia Flash MX 2004 und Macromedia Flash MX Professional 2004 lässt sich dies auf drei verschiedene Arten bewerkstelligen: • Verwenden Sie die Styles-API. • Weisen Sie Themen zu. • Ändern Sie die Skins einer Komponente, oder ersetzen Sie sie. Die Styles-API (Application Programming Interface) verfügt über Methoden und Eigenschaften, mit denen Sie die Farbe und Textformatierungen einer Komponente ändern können. Ein Thema ist eine Sammlung von Stilen und Skins, die das Aussehen einer Komponente festlegen. Skins sind Symbole, die zur Anzeige von Komponenten verwendet werden. Skinning bezeichnet den Prozess, bei dem das Aussehen einer Komponente geändert wird, indem die ursprünglichen Grafiken geändert oder ersetzt werden. Skins können ein kleiner Teil, beispielsweise eine Ecke oder Kante eines Rahmens, oder ein zusammengesetzter Teil, beispielsweise das gesamte Bild einer Schaltfläche im Up-Zustand sein, d. h., wenn nicht auf die Schaltfläche geklickt wurde. Außerdem können Skins Symbole ohne Grafik sein und einen Code enthalten, der einen Teil der Komponente zeichnet. Stile zur Farb- und Textanpassung in einer Komponente verwenden Jede Komponenteninstanz verfügt über Stileigenschaften und eine setStyle()- und getStyle()-Methode (siehe UIObject.setStyle() und UIObject.getStyle()), die Sie zum Ändern und Zugreifen auf die Stileigenschaften verwenden können. Sie können Stile verwenden, um eine Komponente wie folgt anzupassen: • Sie können Stile auf einer Komponenteninstanz festlegen. Sie können die Farb- und Texteigenschaften einer einzelnen Komponenteninstanz ändern. Dies ist in einigen Situation hilfreich, kann allerdings auch zeitintensiv sein, wenn Sie einzelne Eigenschaften für alle Komponenten in einem Dokument festlegen müssen. 31 • Verwenden Sie das Stylesheet _global, mit dem Sie die Stile für alle Komponenten in einem • • Dokument festlegen. Wenn das gesamte Dokument einheitlich aussehen soll, können Sie Stile in diesem Stylesheet erstellen. Erstellen Sie benutzerdefinierte Stylesheets, und wenden Sie sie auf bestimmte Komponenteninstanzen an. Außerdem können Sie Komponentengruppen in einem Dokument denselben Stil zuweisen. Erstellen Sie hierfür benutzerdefinierte Stylesheets, die Sie auf bestimmte Komponenten anwenden. Erstellen Sie Standardklassen-Stylesheets. Sie können außerdem ein Standardklassen-Stylesheet definieren, sodass jede Instanz einer Klasse das Standardaussehen aufweist. Änderungen, die Sie an den Stileigenschaften vornehmen, werden beim Anzeigen der Komponenten auf der Bühne in der Live-Vorschau nicht dargestellt. Weitere Informationen hierzu finden Sie unter „Komponenten in der Live-Vorschau“ auf Seite 20. Stile auf einer Komponenteninstanz festlegen Sie können einen ActionScript-Code erstellen, um Stileigenschaften auf einer beliebigen Komponenteninstanz festzulegen und abzurufen. Die Methoden UIObject.setStyle() und UIObject.getStyle() können direkt aus einer beliebigen Komponente aufgerufen werden. Der folgende Code beispielsweise stellt die Textfarbe auf einer Button-Instanz namens meinButton ein: meinButton.setStyle("color", "0xFF00FF"); Obwohl Sie auf die Stile als Eigenschaften (z. B. meinButton.color = 0xFF00FF) direkt zugreifen können, verwenden Sie am besten die Methoden setStyle() und getStyle(), damit die Stile korrekt funktionieren. Weitere Informationen hierzu finden Sie unter „Stileigenschaftswerte festlegen“ auf Seite 37. Hinweis: Vermeiden Sie es, die Methode UIObject.setStyle() mehrmals nacheinander aufzurufen, um mehrere Eigenschaften einzustellen. Vielmehr sollten Sie, wenn Sie mehrere Eigenschaften oder die Eigenschaften mehrerer Komponenteninstanzen ändern möchten, ein benutzerdefiniertes Stilformat erstellen. Weitere Informationen hierzu finden Sie unter „Stile für bestimmte Komponenten festlegen“ auf Seite 33. So legen Sie neue oder geänderte Eigenschaften für eine einzelne Komponenteninstanz fest: 1 Wählen Sie die gewünschte Komponenteninstanz auf der Bühne aus. 2 Geben Sie ihr im Eigenschafteninspektor den Namen meineComp. 3 Öffnen Sie das Bedienfeld Aktionen, und wählen Sie dann Szene 1 und Ebene 1: Bild 1. 4 Geben Sie den folgenden Code ein, um die Farbe der Instanz in blau zu ändern: meineComp.setStyle("themeColor", "haloBlue"); Die folgende Syntax legt eine Eigenschaft und einen Wert für eine Komponenteninstanz fest: instanceName.setStyle("property", value); 5 Wählen Sie Steuerung > Film testen, um das Ergebnis der Änderung zu überprüfen. Eine Liste der unterstützten Stile finden Sie unter „Unterstützte Stile“ auf Seite 38. 32 Kapitel 3: Komponenten individuell anpassen Globale Stile festlegen Das Stylesheet _global ist allen Flash-Komponenten zugewiesen, die mit Version 2 der Macromedia Komponenten-Architektur erstellt wurden. Das _global-Objekt verfügt über eine Eigenschaft namens style (_global.style), die eine Instanz von CSSStyleDeclaration ist. Die Eigenschaft style fungiert als _global-Stylesheet. Wenn Sie einen Eigenschaftswert auf dem _global-Stylesheet ändern, wirkt sich diese Änderung auf sämtliche in Ihrem Flash-Dokument enthaltenen Komponenten aus. Manche Stile sind für die CSSStyleDeclaration einer Komponentenklasse eingestellt (z. B. der Stil von TextArea- und TextInput-Komponenten). Da das Klassen-Stylesheet bei der Bestimmung der Stilwerte Vorrang vor dem _global-Stylesheet hat, hätte es keine Auswirkungen auf TextArea oder TextInput, wenn Sie backgroundColor für das _globalStylesheet einstellen würden. Weitere Informationen hierzu finden Sie unter „Globale Stile, benutzerdefinierte Stile und Klassenstile im selben Dokument verwenden“ auf Seite 35. backgroundColor So ändern Sie eine oder mehrere Eigenschaften im globalen Stylesheet: 1 Stellen Sie sicher, dass das Dokument mindestens eine Komponenteninstanz enthält. 2 3 4 5 Weitere Informationen hierzu finden Sie unter „Komponenten in Flash-Dokumente aufnehmen“ auf Seite 21. Erstellen Sie eine neue Ebene in der Zeitleiste, und weisen Sie ihr einen Namen zu. Wählen Sie einen Rahmen in der neuen Ebene aus, in der bzw. vor der die Komponente angezeigt wird. Öffnen Sie das Bedienfeld Aktionen. Verwenden Sie die folgende Syntax, um beliebige Eigenschaften auf dem _global-Stylesheet zu ändern. Hierbei brauchen Sie nur diejenigen Eigenschaften anzugeben, die Sie ändern möchten, wie das folgende Beispiel veranschaulicht: _global.style.setStyle("color", 0xCC6699); _global.style.setStyle("themeColor", "haloBlue") _global.style.setStyle("fontSize",16); _global.style.setStyle("fontFamily" , "_serif"); Eine Liste der Stile finden Sie unter „Unterstützte Stile“ auf Seite 38. 6 Wählen Sie Steuerung > Film testen, um das Ergebnis der Änderung zu überprüfen. Stile für bestimmte Komponenten festlegen Mit Hilfe benutzerdefinierter Stylesheets können Sie einzelnen Komponenten in Ihrem FlashDokument bestimmte Eigenschaften zuweisen. Sie können eine neue Instanz des CSSStyleDeclaration-Objekts erstellen, einen benutzerdefinierten Stilnamen festlegen und ihn in die Liste _global.styles (_global.styles.newStyle) aufnehmen, die Eigenschaften und Werte für den Stil festlegen und einer Instanz zuweisen. Der Zugriff auf das CSSStyleDeclarationObjekt ist nur möglich, wenn Sie mindestens eine Komponenteninstanz auf der Bühne platziert haben. Ein benutzerdefiniertes Stilformat lässt sich auf dieselbe Art und Weise bearbeiten wie die Eigenschaften im _global-Stylesheet. Verwenden Sie die CSSStyleDeclaration-Instanz anstelle des _global-Stylesheets. Weitere Informationen zum _global-Stylesheet finden Sie unter „Globale Stile festlegen“ auf Seite 33. Stile zur Farb- und Textanpassung in einer Komponente verwenden 33 Weitere Informationen zu den Eigenschaften des CSSStyleDeclaration-Objekts finden Sie unter „Unterstützte Stile“ auf Seite 38. Eine Liste der Stile, die von den einzelnen Komponenten unterstützt werden, finden Sie in den Einträgen zur jeweiligen Komponente in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. So erstellen Sie ein benutzerdefiniertes Stylesheet für bestimmte Komponenten: 1 Stellen Sie sicher, dass das Dokument mindestens eine Komponenteninstanz enthält. 2 3 4 5 Weitere Informationen hierzu finden Sie unter „Komponenten in Flash-Dokumente aufnehmen“ auf Seite 21. In diesem Beispiel werden drei Button-Komponenten mit den Instanznamen a, b und c verwendet. Wenn Sie verschiedene Komponenten verwenden, müssen Sie ihnen im Eigenschafteninspektor Instanznamen geben und diese Instanznamen in Schritt 9 verwenden. Erstellen Sie eine neue Ebene in der Zeitleiste, und weisen Sie ihr einen Namen zu. Wählen Sie einen Rahmen in der neuen Ebene aus, in der bzw. vor der die Komponente angezeigt wird. Rufen Sie das Bedienfeld Aktionen im Expertenmodus auf. Erstellen Sie in einer Anweisung mit der folgenden Syntax eine Instanz des CSSStyleDeclaration-Objekts, die das neue benutzerdefinierte Stilformat definiert: var styleObj = new mx.styles.CSSStyleDeclaration; 6 Legen Sie die Eigenschaft styleName des Stylesheets fest, um den Stil zu benennen: styleObj.styleName = "newStyle"; 7 Übernehmen Sie den Stil in die globale Stilliste: _global.styles.newStyle = styleObj; Hinweis: Sie können auch ein CSSStyleDeclaration-Objekt erstellen und es einem neuen Stylesheet zuordnen, indem Sie die folgende Syntax verwenden: var styleObj = _global.styles.newStyle = new mx.styles.CSSStyleDeclaration(); 8 Verwenden Sie die folgende Syntax, um die Eigenschaften festzulegen, die Sie für das meinStyle-Stylesheet definieren möchten: styleObj.fontFamily = "_sans"; styleObj.fontSize = 14; styleObj.fontWeight = "bold"; styleObj.textDecoration = "underline"; styleObj.color = 0x336699; styleObj.setStyle("themeColor", "haloBlue"); 9 Verwenden Sie im selben Skriptfenster die folgende Syntax, um die Eigenschaft styleName von zwei bestimmten Komponenten dem benutzerdefinierten Stylesheet zuzuweisen: a.setStyle("styleName", "newStyle"); b.setStyle("styleName", "newStyle"); Sie können außerdem auf Stile in einem benutzerdefinierten Stylesheet zugreifen, indem Sie die Methoden setStyle() und getStyle() verwenden. Der folgende Code legt den Stil backgroundColor auf dem Stylesheet newStyle fest: _global.styles.newStyle.setStyle("backgroundColor", "0xFFCCFF"); 34 Kapitel 3: Komponenten individuell anpassen Stile für eine Komponentenklasse festlegen Sie können ein Klassen-Stylesheet für eine beliebige Komponentenklasse definieren, beispielsweise Button oder CheckBox, die die Standardstile für jede Instanz dieser Klasse festlegen. Sie müssen zunächst das Stylesheet erstellen, bevor Sie die Instanzen erstellen. Bei einigen Komponenten, wie etwa TextArea und TextInput, sind die Klassen-Stylesheets standardmäßig vordefiniert, da ihre Eigenschaften borderStyle und backgroundColor individuell angepasst werden müssen. Der folgende Code erstellt ein Klassen-Stylesheet für eine CheckBox-Komponente und legt blau als Farbe für das Kontrollkästchen fest: var o = _global.styles.CheckBox = new mx.styles.CSSStyleDeclaration(); o.color = 0x0000FF; Sie können außerdem auf Stile in einem Klassen-Stylesheet zugreifen, indem Sie die Methoden setStyle() und getStyle() verwenden. Der folgende Code legt den Farbstil im RadioButtonStylesheet fest: _global.styles.RadioButton.setStyle("color", "blue"); Weitere Informationen zu unterstützten Stilen finden Sie unter „Unterstützte Stile“ auf Seite 38. Globale Stile, benutzerdefinierte Stile und Klassenstile im selben Dokument verwenden Wenn Sie einen Stil an nur einer Stelle im Dokument festlegen, wird diese Definition von Flash verwendet, wenn ein Eigenschaftswert erforderlich ist. In einem Flash-Dokument können jedoch ein _global-Stylesheet, benutzerdefinierte Stylesheets und Stileigenschaften direkt auf Komponenteninstanzen und Standardklassen-Stylesheets festgelegt sein. In einem solchen Fall wird der Eigenschaftswert bestimmt, indem in einer bestimmten Reihenfolge nach der Definition an all diesen Stellen gesucht wird. Zunächst wird von Flash nach einer Stileigenschaft in der Komponenteninstanz gesucht. Wenn der Stil hier nicht festgelegt ist, wird die Eigenschaft styleName der Instanz überprüft, um festzustellen, ob ihr ein Stylesheet zugewiesen ist. Wenn der Eigenschaft styleName kein Stylesheet zugewiesen wurde, wird auf dem Standardklassen-Stylesheet nach der Eigenschaft gesucht. Wenn kein Klassen-Stylesheet vorhanden ist und die Eigenschaft nicht dessen Wert übernimmt, wird das _global-Stylesheet überprüft. Wenn die Eigenschaft nicht im _global-Stylesheet definiert ist, ist sie undefined. Wenn kein Klassen-Stylesheet vorhanden ist und die Eigenschaft dessen Wert übernimmt, wird in der übergeordneten Instanz nach der Eigenschaft gesucht. Wenn die Eigenschaft hier nicht definiert ist, wird die Eigenschaft styleName der übergeordneten Instanz überprüft, wenn diese nicht definiert ist, wird so lange nach übergeordneten Instanzen gesucht, bis die _global-Ebene erreicht wird. Wenn die Eigenschaft nicht im _global-Stylesheet definiert ist, ist sie undefined. Mit Hilfe des StyleManager kann in Flash festgestellt werden, ob ein Stil den Wert übernimmt. Weitere Informationen hierzu finden Sie unter „StyleManager-Klasse“ auf Seite 555. Hinweis: Der CSS-Wert inherit wird nicht unterstützt. Stile zur Farb- und Textanpassung in einer Komponente verwenden 35 Farbstileigenschaften Farbstileigenschaften verhalten sich anders als andere Eigenschaften. Alle Farbeigenschaften verfügen über einen Namen, der mit „Color“ endet, beispielsweise backgroundColor, disabledColor und color. Wenn Farbstileigenschaften geändert werden, wird die Farbe unmittelbar in der Instanz und allen entsprechenden untergeordneten Instanzen geändert. Alle anderen Stileigenschaftsänderungen markieren das Objekt einfach als ein Objekt, das neu gezeichnet werden muss. Änderungen werden erst im nächsten Bild angezeigt. Der Wert einer Farbstileigenschaft kann eine Zahl, eine Zeichenfolge oder ein Objekt sein. Wenn der Wert eine Zahl ist, gibt sie den RGB-Wert der Farbe als hexadezimale Zahl an (0xRRGGBB). Wenn der Wert eine Zeichenfolge ist, muss er ein Farbname sein. Farbnamen sind Zeichenfolgen, die auf häufig verwendete Farben verweisen. Neue Farbnamen können mit Hilfe des StyleManager hinzugefügt werden (siehe „StyleManager-Klasse“ auf Seite 555). Eine Übersicht über die standardmäßig festgelegten Farbnamen finden Sie in der folgenden Tabelle: Farbname Wert black 0x000000 white 0xFFFFFF red 0xFF0000 green 0x00FF00 blue 0x0000FF magenta 0xFF00FF yellow 0xFFFF00 cyan 0x00FFFF Hinweis: Wenn der Farbname nicht definiert ist, kann die Komponente nicht richtig gezeichnet werden. Sie können einen beliebigen gültigen ActionScript-Bezeichner verwenden, um Ihre eigenen Farbnamen zu erstellen, beispielsweise WindowText oder ButtonText. Verwenden Sie den StyleManager, um neue Farben zu definieren, wie das folgende Beispiel veranschaulicht: mx.styles.StyleManager.registerColorName("spezial_blau", 0x0066ff); Die meisten Komponenten können ein Objekt nicht als Farbstileigenschaftswert verarbeiten. Einige Komponenten können jedoch Farbobjekte verarbeiten, die Farbverläufe oder andere Farbkombinationen darstellen. Weitere Informationen hierzu finden Sie im Abschnitt „Stile verwenden“ in den Einträgen zu den einzelnen Komponenten Kapitel 4, „KomponentenReferenz“, auf Seite 51. 36 Kapitel 3: Komponenten individuell anpassen Sie können Klassen-Stylesheets und Farbnamen verwenden, um die Farben von Text und Symbolen auf dem Bildschirm problemlos zu steuern. Wenn Sie beispielsweise einen Konfigurationsbildschirm erstellen möchten, der wie unter Microsoft Windows aussieht, müssen Sie Farbnamen wie ButtonText und WindowText sowie Klassen-Stylesheets wie Button, CheckBox und Window definieren. Wenn Sie die Farbstileigenschaften in den Stylesheets auf ButtonText und WindowText einstellen und eine Benutzeroberfläche bereitstellen, in der der Benutzer die ButtonText- und WindowText-Werte ändern kann, können Sie dieselben Farbschemata wie Microsoft Windows, Mac OS und andere Betriebssysteme bieten. Stileigenschaftswerte festlegen Sie können die Methode UIObject.setStyle() verwenden, um eine Stileigenschaft in einer Komponenteninstanz, dem globalen Stylesheet, einem benutzerdefinierten Stylesheet oder einem Klassen-Stylesheet festzulegen. Der folgende Code legt den Stil color einer Instanz eines Optionsfelds auf rot ein: meinRadioButton.setStyle("color", "red"); Der folgende Code legt den Stil color des benutzerdefinierten CheckBox-Stylesheets fest: _global.styles.CheckBox.setStyle("color", "white"); Die Methode UIObject.setStyle() erkennt, ob ein Stil übernommen wird, und benachrichtigt die untergeordneten Instanzen, wenn sich deren Stil ändert. Außerdem wird die Komponenteninstanz benachrichtigt, dass sie automatisch neu gezeichnet werden muss, um den neuen Stil wiederzugeben. Verwenden Sie daher zum Festlegen oder Ändern von Stilen setStyle(). Sie können die Erstellung von Stylesheets jedoch optimieren, indem Sie die Eigenschaften direkt auf einem Objekt festlegen. Weitere Informationen hierzu finden Sie unter „Globale Stile festlegen“ auf Seite 33, „Stile für bestimmte Komponenten festlegen“ auf Seite 33 und „Stile für eine Komponentenklasse festlegen“ auf Seite 35. Sie können die Methode UIObject.getStyle() verwenden, um eine Stileigenschaft aus einer Komponenteninstanz, dem globalen Stylesheet, einem benutzerdefinierten Stylesheet oder einem Klassen-Stylesheet abzurufen. Der folgende Code ruft den Wert der Farbeigenschaft ab und weist ihn der Variablen o zu: var o = meinRadioButton.getStyle("color"); Der folgende Code ruft den Wert einer Stileigenschaft ab, der im _global-Stylesheet definiert ist: var r = _global.style.getValue("marginRight"); Wenn der Stil nicht definiert ist, gibt getStyle() möglicherweise den Wert undefined zurück. Dennoch wird von getStyle() erkannt, wie Stileigenschaften übernommen werden. Obwohl es sich bei Stilen um Eigenschaften handelt, sollten Sie UIObject.getStyle() verwenden, um darauf zuzugreifen. Sie müssen also nicht wissen, ob der Stil übernommen wird. Weitere Informationen hierzu finden Sie unter UIObject.getStyle() und UIObject.setStyle(). Stile zur Farb- und Textanpassung in einer Komponente verwenden 37 Unterstützte Stile Flash MX 2004 und Flash MX Professional 2004 bieten zwei Themen: Halo (HaloTheme.fla) und Sample (SampleTheme.fla). Jedes Thema unterstützt verschiedene Stile. Das Sample-Thema verwendet alle Stile der Stil-Mechanismen der Version 2 und wird bereitgestellt, damit Sie eine Auswahl dieser Stile in einem Dokument anzeigen können. Das Halo-Thema unterstützt eine Auswahl der vom Sample-Thema unterstützten Stile. Die folgenden Stileigenschaften werden von den meisten Komponenten der Version 2 im Sample-Stil unterstützt. Informationen darüber, welche Halo-Stile von den einzelnen Komponenten unterstützt werden, finden Sie in Kapitel 4, „Komponenten-Referenz“, auf Seite 51. Wenn Sie ungültige Werte eingeben, wird der Standardwert verwendet. Beachten Sie dies, wenn Sie CSS-Stylesheets wiederverwenden, deren Werte außerhalb des von Macromedia zugelassenen Wertespektrums liegen. Komponenten können die folgenden Stile unterstützen: 38 Stil Beschreibung backgroundColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Der Standardwert ist „transparent“. borderColor Der schwarze Bereich eines dreidimensionalen Rahmens oder der Farbereich eines zweidimensionalen Rahmens. Der Standardwert ist „0x000000“ (schwarz). borderStyle Der Komponentenrahmen: „none“, „inset“, „outset“ oder „solid“. Dieser Stil übernimmt den Wert nicht. Der Standardwert ist „solid“. buttonColor Das Aussehen einer Schaltfläche und ein Bereich eines dreidimensionalen Rahmens. Der Standardwert ist „0xEFEEEF“ (hellgrau). color Der Text einer Komponentenbezeichnung. Der Standardwert ist „0x000000“ (schwarz). disabledColor Die Farbe für deaktivierten Text. Die Standardfarbe ist „0x848384“ (dunkelgrau). fontFamily Die Schriftart für Text. Der Standardwert ist „_sans“. fontSize Die Punktgröße der Schriftart. Der Standardwert ist 10. fontStyle Der Schriftstil: „normal“ oder „italic“. Der Standardwert ist „normal“. fontWeight Die Schriftstärke: „normal“ oder „bold“. Der Standardwert ist „normal“. highlightColor Ein Bereich des dreidimensionalen Rahmens. Der Standardwert ist „0xFFFFFF“ (weiß). marginLeft Eine Zahl, die den linken Textrand kennzeichnet. Der Standardwert ist 0. Kapitel 3: Komponenten individuell anpassen Stil Beschreibung marginRight Eine Zahl, die den rechten Textrand kennzeichnet. Der Standardwert ist 0. scrollTrackColor Der Hauptteil der Bildlaufleiste. Der Standardwert ist „0xEFEEEF“ (hellgrau). shadowColor Ein Bereich des dreidimensionalen Rahmens. Der Standardwert ist „0x848384“ (dunkelgrau). symbolBackgroundColor Die Hintergrundfarbe von Kontrollkästchen und Optionsfeldern. Der Standardwert ist „0xFFFFFF“ (weiß). symbolBackgroundDisabledColor Die Hintergrundfarbe von Kontrollkästchen und Optionsfeldern, wenn diese deaktiviert sind. Der Standardwert ist „0xEFEEEF“ (hellgrau). symbolBackgroundPressedColor Die Hintergrundfarbe von Kontrollkästchen und Optionsfeldern, wenn diese aktiviert sind. Der Standardwert ist „0xFFFFFF“ (weiß). symbolColor Das Häkchen eines Kontrollkästchens oder der Punkt eines Optionsfelds. Der Standardwert ist „0x000000“ (schwarz). symbolDisabledColor Die Farbe für das Häkchen eines Kontrollkästchens oder für den Punkt eines Optionsfelds, wenn diese deaktiviert sind. Der Standardwert ist „0x848384“ (dunkelgrau). textAlign Die Textausrichtung: „left“, „right“ oder „center“. Der Standardwert ist „left“. textDecoration Die Textauszeichnung: „none“ oder „underline“. Der Standardwert ist „none“. textIndent Eine Zahl, die den Texteinzug kennzeichnet. Der Standardwert ist 0. Themen Themen sind Sammlungen von Stilen und Skins. Das Standardthema für Flash MX 2004 und Flash MX Professional 2004 heißt Halo (HaloTheme.fla). Das Halo-Thema wurde entwickelt, damit Sie Ihren Benutzern ansprechende und ausdrucksstarke Anwendungen zur Verfügung stellen können. In Flash MX 2004 und Flash MX Professional 2004 ist ein weiteres Thema namens Sample vorhanden (SampleTheme.fla). Das Sample-Thema bietet Ihnen viele Experimentiermöglichkeiten mit allen Stilen, die für Komponenten der Version 2 verfügbar sind. Das Halo-Thema unterstützt nur eine Auswahl aller verfügbaren Stile. Die Themendateien finden Sie in folgenden Ordnern: • First Run\ComponentFLA (Windows) • First Run/ComponentFLA (Macintosh) Sie können neue Themen erstellen und sie einer Anwendung zuweisen, um das Aussehen und Verhalten aller Komponenten zu ändern. Sie können beispielsweise ein zwei- oder ein dreidimensionales Thema erstellen. Themen 39 Die Komponenten der Version 2 verwenden Skins (Grafiksymbole oder Movieclip-Symbole) für die Darstellung der Komponenten. Die .as-Datei, die jede Komponente definiert, enthält Code, der die spezifischen Skins für die Komponente lädt. Sie können problemlos ein neues Thema erstellen, indem Sie das Halo- oder Sample-Thema kopieren und die Grafiken in den Skins ändern. Ein Thema kann außerdem neue Stile enthalten. Sie müssen den ActionScript-Code verwenden, um ein globales Stylesheet und weitere Stylesheets zu erstellen. Weitere Informationen hierzu finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Dokumenten ein Thema zuweisen Wenn Sie einem Dokument ein neues Thema zuweisen möchten, öffnen Sie die FLA-Datei eines Themas als externe Bibliothek, und ziehen Sie den Themenordner aus der externen Bibliothek in die Dokumentbibliothek. In den folgenden Schritten wird dieser Vorgang detailliert beschrieben. So weisen Sie einem Dokument ein Thema zu: 1 Wählen Sie Datei > Öffnen, und öffnen Sie das Dokument, das Komponenten der Version 2 in Flash verwendet. Wahlweise können Sie auch Datei > Neu wählen und ein neues Dokument erstellen, das Komponenten der Version 2 verwendet. 2 Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, beispielsweise ThemeApply.fla. 3 Wählen Sie Datei > Importieren > Externe Bibliothek öffnen, und wählen Sie die FLA-Datei des Themas, das Sie Ihrem Dokument zuweisen möchten. Wenn Sie kein neues Thema erstellt haben, können Sie das Sample-Thema verwenden, das sich im Ordner Flash 2004/en/Configuration/SampleFLA befindet. 4 Wählen Sie im Bedienfeld Bibliothek des Themas die Option Flash UI Components 2 > Themes > MMDefault, und ziehen Sie den Ordner Assets beliebiger Komponenten in Ihrem Dokument in die Bibliothek von ThemeApply.fla. Wenn Sie sich nicht sicher sind, welche Komponenten im Dokument enthalten sind, können Sie den gesamten Ordner Themes auf die Bühne ziehen. Die Skins innerhalb des Ordners Themes in der Bibliothek werden automatisch den Komponenten im Dokument zugewiesen. Hinweis: In der Live-Vorschau der Komponenten auf der Bühne wird das neue Thema nicht wiedergegeben. 5 Wählen Sie Steuerung > Film testen, um das Dokument mit dem neuen, angewendeten Thema anzuzeigen. 40 Kapitel 3: Komponenten individuell anpassen Neue Themen erstellen Wenn Sie das Halo- oder Sample-Thema nicht verwenden möchten, können Sie eines der beiden Themen ändern, um ein neues Thema zu erstellen. Einige Skins in den Themen haben eine festgelegte Größe. Sie können deren Größe jedoch ändern. Hierbei werden die Komponenten automatisch an die veränderte Größe angepasst. Andere Skins setzen sich aus mehreren, teils statischen, teils bearbeitbaren Bestandteilen zusammen. Einige Skins, beispielsweise RectBorder und ButtonSkin, verwenden die ActionScriptZeichnungs-API zum Zeichnen der Grafiken, da dies hinsichtlich Größe und Leistung effizienter ist. Sie können den ActionScript-Code in solchen Skins als Vorlage verwenden, um die Skins an Ihre persönlichen Bedürfnisse anzupassen. So erstellen Sie ein neues Thema: 1 Wählen Sie die FLA-Datei des Themas, die Sie als Vorlage verwenden möchten, und erstellen 2 3 4 5 6 7 8 Sie eine Kopie. Geben Sie der Kopie einen eindeutigen Namen, beispielsweise MeinThema.fla. Wählen Sie Datei > MeinThema.fla in Flash öffnen. Wählen Sie Fenster > Bibliothek, um die Bibliothek aufzurufen. Doppelklicken Sie auf ein beliebiges Skin-Symbol, das Sie ändern möchten, um es im Symbolbearbeitungsmodus zu öffnen. Die Skins befinden sich im Ordner Themes > MMDefault > Component Assets (in diesem Beispiel Themes > MMDefault > RadioButton Assets). Ändern Sie das Symbol, oder löschen Sie die Grafik, und erstellen Sie eine neue Grafik. Möglicherweise müssen Sie Ansicht > Vergrößern auswählen, um die Ansicht zu vergrößern. Wenn Sie Skins bearbeiten, müssen Sie den Registrierungspunkt beibehalten, damit sie anschließend korrekt dargestellt werden. Die linke obere Ecke eines bearbeiteten Symbols muss immer am Punkt (0,0) ausgerichtet sein. Nachdem Sie die gewünschten Änderungen am Skin-Symbol vorgenommen haben, klicken Sie auf die Schaltfläche Zurück auf der linken Seite der Infoleiste am oberen Rand der Bühne, um in den Dokumentbearbeitungsmodus zurückzukehren. Wiederholen Sie die Schritte 4 bis 6, bis Sie alle gewünschten Skins geändert haben. Weisen Sie die Datei MeinThema.fla einem Dokument zu, indem Sie die Schritte ausführen, die im vorherigen Abschnitt „Dokumenten ein Thema zuweisen“ auf Seite 40 beschrieben wurden. Themen 41 Skinning-Komponenten Skins sind Symbole, die von einer Komponente zur Darstellung verwendet werden. Skins können entweder Grafiksymbole oder Movieclip-Symbole sein. Die meisten Skins enthalten Formen, die das Aussehen der Komponente darstellen. Einige Skins enthalten nur ActionScript-Code, der die Komponente im Dokument zeichnet. Komponenten der Version 2 sind kompilierte Clips, Sie können deren Bestände nicht in der Bibliothek anzeigen. Dennoch werden FLA-Dateien installiert, die alle Komponenten-Skins enthalten. Diese FLA-Dateien werden Themen genannt. Jedes Thema hat ein eigenes Aussehen und Verhalten, aber enthält Skins mit denselben Symbolnamen und Verknüpfungsbezeichnern. Hierdurch können Sie ein Thema auf die Bühne in einem Dokument ziehen, um dessen Aussehen zu ändern. Weitere Informationen zu Themen finden Sie unter „Themen“ auf Seite 39. Sie können FLA-Dateien auch zum Bearbeiten von Komponenten-Skins verwenden. Die Skins befinden sich im Bedienfeld Bibliothek jeder FLA-Datei eines Themas im Ordner Themes. Jede Komponente setzt sich aus vielen Skins zusammen. Der Pfeil nach unten der ScrollBarUnterkomponente besteht beispielsweise aus drei Skins: ScrollDownArrowDisabled, ScrollDownArrowUp und ScrollDownArrowDown. Einige dieser Skins werden von mehreren Komponenten verwendet. Komponenten, die Bildlaufleisten verwenden (dazu gehören ComboBox, List und ScrollPane), nutzen gemeinsam die im Ordner ScrollBar Skins abgelegten Skins. Sie können vorhandene Skins bearbeiten und neue Skins erstellen, um das Aussehen einer Komponente zu ändern. Die .as-Datei, die jede Komponentenklasse definiert, enthält Code, der die spezifischen Skins für die Komponente lädt. Alle Komponenten-Skins verfügen über eine Skin-Eigenschaft, die dem Verknüpfungsbezeichner eines Skin-Symbols zugewiesen wird. Der gedrückte Zustand für den Pfeil nach unten der ScrollBar-Komponente hat beispielsweise den Skin-Eigenschaftennamen downArrowDownName. Der Standardwert der Eigenschaft downArrowDownName ist ScrollDownArrowDown. Dies ist der Verknüpfungsbezeichner des Skin-Symbols. Sie können Skins bearbeiten und sie einer Komponente zuweisen, indem Sie diese Skin-Eigenschaften verwenden. Es ist nicht erforderlich, die .as-Datei der Komponente zu ändern, um deren SkinEigenschaften zu modifizieren. Sie können der Konstruktorfunktion der Komponente die SkinEigenschaftswerte übergeben, wenn die Komponente in Ihrem Dokument erstellt wird. Wählen Sie eine der folgenden Skinning-Methoden für Komponenten in Abhängigkeit davon, welche der folgenden Vorgänge Sie ausführen möchten: • Um alle Skins in einem Dokument durch neue Skins zu ersetzen, wobei jede Komponente dasselbe Aussehen hat, wenden Sie ein Thema an (siehe „Themen“ auf Seite 39). Hinweis: Besonders für Einsteiger ist diese Skinning-Methode geeignet, da sie keine Skripterstellung erfordert. • Um verschiedene Skins für mehrere Instanzen derselben Komponente zu verwenden, • 42 bearbeiten Sie die vorhandenen Skins, und legen Sie Skin-Eigenschaften fest (siehe nächster Abschnitt, „Komponenten-Skins bearbeiten“ auf Seite 43 und „Bearbeitete Skins einer Komponente zuweisen“ auf Seite 44). Um Skins in einer Unterkomponente (etwa eine Bildlaufleiste in einer List-Komponente) zu bearbeiten, erstellen Sie eine Unterklasse der Komponente (siehe „Bearbeitete Skins einer Unterkomponente zuweisen“ auf Seite 45). Kapitel 3: Komponenten individuell anpassen • Ersetzen Sie die Prototyp-Skin-Eigenschaften zur Änderung von Skins, auf die aus der Hauptkomponente nicht direkt zugegriffen werden kann (etwa auf eine List-Komponente in einer ComboBox-Komponente) (siehe „Prototyp-Skin-Eigenschaften ändern“ auf Seite 48). Hinweis: Die oben beschriebenen Methoden sind nach aufsteigendem Schwierigkeitsgrad aufgelistet. Komponenten-Skins bearbeiten Wenn Sie bestimmte Skins für eine Komponenteninstanz verwenden möchten, aber andere Skins für eine andere Instanz der Komponente, müssen Sie eine FLA-Datei eines Themas öffnen und ein neues Skin-Symbol erstellen. Komponenten ermöglichen eine einfache Verwendung verschiedener Skins für verschiedene Instanzen. So bearbeiten Sie Skins: 1 Wählen Sie Datei > Öffnen, und öffnen Sie die FLA-Datei des Themas, die Sie als Vorlage verwenden möchten. 2 Wählen Sie Datei > Speichern unter, und geben Sie der Datei einen eindeutigen Namen, beispielsweise MeinThema.fla. 3 Wählen Sie die Skins aus, die Sie bearbeiten möchten (in diesem Beispiel RadioTrueUp). 4 5 6 7 8 9 Die Skins befinden sich im Ordner Themes > MMDefault > Component Assets (in diesem Beispiel Themes > MMDefault > RadioButton Assets > States). Wählen Sie im Optionsmenü der Bibliothek die Option Duplizieren, oder klicken Sie mit der rechten Maustaste auf das Symbol, und geben Sie dem Symbol einen eindeutigen Namen, beispielsweise MeinRadioTrueUp. Klicken Sie im Dialogfeld Symboleigenschaften auf die Schaltfläche Erweitert, und aktivieren Sie die Option Export für ActionScript. Ein auf den Symbolnamen abgestimmter Verknüpfungsbezeichner wird automatisch eingegeben. Doppelklicken Sie auf die neue Skin in der Bibliothek, um sie im Symbolbearbeitungsmodus zu öffnen. Modifizieren Sie den Movieclip, oder löschen Sie ihn, und erstellen Sie einen neuen Movieclip. Möglicherweise müssen Sie Ansicht > Vergrößern auswählen, um die Ansicht zu vergrößern. Wenn Sie Skins bearbeiten, müssen Sie den Registrierungspunkt beibehalten, damit sie anschließend korrekt dargestellt werden. Die linke obere Ecke eines bearbeiteten Symbols muss immer am Punkt (0,0) ausgerichtet sein. Nachdem Sie die gewünschten Änderungen am Skin-Symbol vorgenommen haben, klicken Sie auf die Schaltfläche Zurück auf der linken Seite der Infoleiste am oberen Rand der Bühne, um in den Dokumentbearbeitungsmodus zurückzukehren. Wählen Sie Datei > Speichern, und lassen Sie die Datei MeinThema.fla geöffnet. Nun müssen Sie ein neues Dokument erstellen, in dem die bearbeitete Skin einer Komponente zugewiesen werden soll. Weitere Informationen finden Sie im nächsten Abschnitt sowie unter „Bearbeitete Skins einer Komponente zuweisen“ auf Seite 44, „Bearbeitete Skins einer Unterkomponente zuweisen“ auf Seite 45, und „Prototyp-Skin-Eigenschaften ändern“ auf Seite 48. Informationen zur Anwendung neuer Skins finden Sie unter „Skinning-Komponenten“ auf Seite 42. Hinweis: Änderungen, die Sie an Komponenten-Skins vornehmen, werden beim Anzeigen der Komponenten auf der Bühne in der Live-Vorschau nicht dargestellt. Skinning-Komponenten 43 Bearbeitete Skins einer Komponente zuweisen Wenn Sie eine Skin bearbeitet haben, müssen Sie sie einer Komponente in einem Dokument zuweisen. Sie können entweder die Methode createClassObject() verwenden, um die Komponenteninstanzen dynamisch zu erstellen, oder die Komponenteninstanzen manuell auf der Bühne platzieren. Je nachdem, wie Sie die Komponenten in ein Dokument einfügen, können Sie zwei verschiedene Methoden verwenden, um Skins Komponenteninstanzen zuzuweisen. So erstellen Sie eine Komponente dynamisch und übernehmen eine bearbeitete Skin: 1 Wählen Sie Datei > Neu, um ein neues Flash-Dokument zu erstellen. 2 Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, beispielsweise DynamicSkinning.fla. 3 Ziehen Sie beliebige Komponenten vom Bedienfeld Komponenten auf die Bühne, einschließlich der Komponente, deren Skin Sie bearbeitet haben (in diesem Beispiel die RadioButton-Komponente), und löschen Sie sie. Hierdurch werden die Symbole der Bibliothek des Dokuments hinzugefügt, aber sie werden nicht im Dokument angezeigt. 4 Ziehen Sie MeinRadioTrueUp und andere benutzerdefinierte Symbole aus der Datei MeinThema.fla auf die Bühne der Datei DynamicSkinning.fla, und löschen Sie sie. Hierdurch werden die Symbole der Bibliothek des Dokuments hinzugefügt, aber sie werden nicht im Dokument angezeigt. 5 Öffnen Sie das Bedienfeld Aktionen, und geben Sie in Bild 1 Folgendes ein: import mx.controls.RadioButton createClassObject(RadioButton, "meinRadio", 0, {trueUpIcon:"MeinRadioTrueUp", label: "Mein Radio Button"}); 6 Wählen Sie Steuerung > Film testen. So fügen Sie eine Komponente manuell der Bühne hinzu und übernehmen eine bearbeitete Skin: 1 Wählen Sie Datei > Neu, um ein neues Flash-Dokument zu erstellen. 2 Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, 3 4 5 6 beispielsweise ManualSkinning.fla. Ziehen Sie Komponenten vom Bedienfeld Komponenten auf die Bühne, einschließlich der Komponente, deren Skin Sie bearbeitet haben (in diesem Beispiel die RadioButtonKomponente). Ziehen Sie MeinRadioTrueUp und andere benutzerdefinierte Symbole von der Datei MeinThema.fla auf die Bühne der Datei ManualSkinning.fla, und löschen Sie sie. Hierdurch werden die Symbole der Bibliothek des Dokuments hinzugefügt, aber sie werden nicht im Dokument angezeigt. Wählen Sie die RadioButton-Komponente auf der Bühne, und öffnen Sie das Bedienfeld Aktionen. Weisen Sie der RadioButton-Instanz den folgenden Code zu: onClipEvent(initialize){ trueUpIcon = "MeinRadioTrueUp"; } 7 Wählen Sie Steuerung > Film testen. 44 Kapitel 3: Komponenten individuell anpassen Bearbeitete Skins einer Unterkomponente zuweisen In manchen Fällen möchten Sie möglicherweise die Skins von Unterkomponenten einer Komponente ändern, obwohl die Skin-Eigenschaften nicht direkt verfügbar sind. Beispielsweise können Sie die Skins der Bildlaufleiste in einer List-Komponente nicht direkt ändern. Der folgende Code ermöglicht den Zugriff auf die Skins für die Bildlaufleiste. Alle Bildlaufleisten, die nach der Ausführung dieses Codes erstellt werden, verfügen auch über die neuen Skins. Wenn eine Komponente aus Unterkomponenten besteht, werden die Unterkomponenten wie in den Einträgen der einzelnen Komponenten in Kapitel 4, „Komponenten-Referenz“, auf Seite 51 identifiziert. So weisen Sie einer Unterkomponente eine neue Skin hinzu: 1 Führen Sie die unter „Komponenten-Skins bearbeiten“ auf Seite 43 beschriebenen Schritte aus, 2 3 4 5 6 bearbeiten Sie jedoch eine ScrollBar-Skin. Bearbeiten Sie in diesem Beispiel die ScrollDownArrowDown-Skin, und benennen Sie sie in MeinScrollDownArrowDown um. Wählen Sie Datei > Neu, um ein neues Flash-Dokument zu erstellen. Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, beispielsweise SubcomponentProject.fla. Doppelklicken Sie auf die List-Komponente im Bedienfeld Komponenten, um sie zur Bühne hinzuzufügen, und drücken Sie die Rücktaste, um sie von der Bühne zu entfernen. Hierdurch werden die Komponenten dem Bedienfeld Bibliothek hinzugefügt, aber sie werden nicht im Dokument angezeigt. Ziehen Sie MeinScrollDownArrowDown und andere bearbeitete Symbole der Datei MeinThema.fla auf die Bühne der Datei SubcomponentProject.fla, und löschen Sie sie. Hierdurch werden die Komponenten dem Bedienfeld Bibliothek hinzugefügt, aber sie werden nicht im Dokument angezeigt. Führen Sie einen der folgenden Schritte aus: ■ Wenn Sie alle Bildlaufleisten in einem Dokument ändern möchten, geben Sie den folgenden Code in das Bedienfeld Aktionen in Bild 1 der Zeitleiste ein: import mx.controls.List import mx.controls.scrollClasses.ScrollBar ScrollBar.prototype.downArrowDownName = "MeinScrollDownArrowDown"; Dann haben Sie zum einen die Möglichkeit, den folgenden Code in Bild 1 einzutragen, um eine Liste dynamisch zu erstellen. createClassObject(List, "meineListBox", 0, {dataProvider: ["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]}); ■ Zum anderen können Sie eine List-Komponente aus der Bibliothek auf die Bühne ziehen. Wenn Sie eine bestimmte Bildlaufleiste in einem Dokument ändern möchten, geben Sie den folgenden Code in das Bedienfeld Aktionen in Bild 1 der Zeitleiste ein: import mx.controls.List import mx.controls.scrollClasses.ScrollBar var oldName = ScrollBar.prototype.downArrowDownName; ScrollBar.prototype.downArrowDownName = "MeinScrollDownArrowDown"; createClassObject(List, "meineList1", 0, {dataProvider: ["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]}); meineList1.redraw(true); ScrollBar.prototype.downArrowDownName = oldName; Skinning-Komponenten 45 Hinweis: Sie müssen ausreichend Daten festlegen, damit die Bildlaufleisten angezeigt werden. Wahlweise können Sie auch die Eigenschaft vScrollPolicy auf true setzen. 7 Wählen Sie Steuerung > Film testen. Sie können auch Unterkomponenten-Skins für alle Komponenten in einem Dokument festlegen, indem Sie die Skin-Eigenschaft auf dem prototype-Objekt der Unterkomponente im #initclip-Bereich eines Skin-Symbols festlegen. Weitere Informationen zum Prototypobjekt finden Sie unter Function.prototype im ActionScript-Lexikon. So verwenden Sie „#initclip“, um eine bearbeitete Skin allen Komponenten in einem Dokument zuzuweisen: 1 Führen Sie die unter „Komponenten-Skins bearbeiten“ auf Seite 43 beschriebenen Schritte aus, 2 3 4 5 6 7 bearbeiten Sie jedoch eine ScrollBar-Skin. Bearbeiten Sie in diesem Beispiel die ScrollDownArrowDown-Skin, und benennen Sie sie in MeinScrollDownArrowDown um. Wählen Sie Datei > Neu, und erstellen Sie ein neues Flash-Dokument. Speichern Sie es mit einem eindeutigen Namen, z. B. SkinsInitExample.fla. Wählen Sie aus der Bibliothek des bearbeiteten Themenbeispiels das MeinScrollDownArrowDown-Symbol, ziehen Sie es auf die Bühne von SkinsInitExample.fla, und löschen Sie es. Damit ist das Symbol der Bibliothek hinzugefügt worden, ohne dass es auf der Bühne sichtbar wird. Wählen Sie MeinScrollDownArrowDown aus der Bibliothek von SkinsInitExample.fla, und wählen Sie aus dem Optionsmenü die Option Verknüpfung. Aktivieren Sie das Kontrollkästchen Export für ActionScript. Klicken Sie auf OK. Die Option In erstes Bild exportieren wird automatisch aktiviert. Doppelklicken Sie auf die neue Skin in der Bibliothek, um sie im Symbolbearbeitungsmodus zu öffnen. Geben Sie den folgenden Code in Bild 1 des MeinScrollDownArrowDown-Symbols ein: #initclip 10 import mx.controls.scrollClasses.ScrollBar; ScrollBar.prototype.downArrowDownName = "MeinScrollDownArrowDown"; #endinitclip 8 Sie können dem Dokument auf eine der folgenden Arten eine List-Komponente hinzufügen. ■ ■ Ziehen Sie eine List-Komponente aus dem Bedienfeld Komponenten auf die Bühne. Geben Sie eine ausreichende Anzahl Label-Parameter ein, damit die vertikale Bildlaufleiste angezeigt wird. Ziehen Sie eine List-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Geben Sie folgenden Code in Bild 1 der Hauptzeitleiste von SkinsInitExample.fla ein: createClassObject(mx.controls.List, "meineListBox1", 0, {dataProvider: ["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]}); Hinweis: Geben Sie ausreichend Daten ein, damit die vertikale Bildlaufleiste angezeigt wird, oder setzen Sie vScrollPolicy auf true. Im folgenden Beispiel wird beschrieben, wie Sie auf ein Objekt, das sich bereits auf der Bühne befindet, eine Skinning-Methode anwenden. In diesem Beispiel werden Skinning-Methoden nur auf Listen angewendet. Die Anwendung von Skinning-Methoden auf TextArea- oder ScrollPaneLaufleisten ist nicht möglich. 46 Kapitel 3: Komponenten individuell anpassen So verwenden Sie „#initclip“, um eine bearbeitete Skin bestimmten Komponenten in einem Dokument zuzuweisen: 1 Führen Sie die unter „Komponenten-Skins bearbeiten“ auf Seite 43 beschriebenen Schritte aus, 2 3 4 5 6 7 bearbeiten Sie jedoch eine ScrollBar-Skin. Bearbeiten Sie in diesem Beispiel die ScrollDownArrowDown-Skin, und benennen Sie sie in MeinScrollDownArrowDown um. Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, beispielsweise MeinVScrollTest.fla. Ziehen Sie MeinScrollDownArrowDown aus der Themenbibliothek in die Bibliothek von MeinVScrollTest.fla. Wählen Sie Einfügen > Neues Symbol, und geben Sie diesem einen eindeutigen Namen, beispielsweise MeineVScrollBar. Aktivieren Sie das Kontrollkästchen Export für ActionScript. Klicken Sie auf OK. Die Option In erstes Bild exportieren wird automatisch aktiviert. Geben Sie den folgenden Code in Bild 1 des MeineScrollBar-Symbols ein: #initclip 10 import MeineVScrollBar Object.registerClass("VScrollBar", MeineVScrollBar); #endinitclip 8 Ziehen Sie eine List-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 9 Geben Sie im Eigenschafteninspektor so viele Label-Parameter wie nötig ein, damit die vertikale Bildlaufleiste angezeigt wird. 10 Wählen Sie Datei > Speichern. 11 Wählen Sie Datei > Neu, und erstellen Sie eine neue ActionScript-Datei. 12 Geben Sie den folgenden Code ein: import mx.controls.VScrollBar import mx.controls.List class MeineVScrollBar extends VScrollBar{ function init():Void{ if (_parent instanceof List){ downArrowDownName = "MeinScrollDownArrowDown"; } super.init(); } } 13 Wählen Sie Datei > Speichern, um die Datei unter dem Namen MeineVScrollBar.as zu speichern. 14 Klicken Sie auf einen freien Bereich der Bühne, und wählen Sie im Eigenschafteninspektor die Schaltfläche Einstellungen für Veröffentlichungen. 15 Wählen Sie die Schaltfläche Einstellungen für die ActionScript-Version. 16 Klicken Sie auf die Plus-Schaltfläche (+), um einen neuen Klassenpfad hinzuzufügen. Wählen Sie dann die Schaltfläche Ziel, und suchen Sie auf der Festplatte den Speicherort für die Datei MeineComboBox.as. 17 Wählen Sie Steuerung > Film testen. Skinning-Komponenten 47 Prototyp-Skin-Eigenschaften ändern Wenn eine Komponente Skin-Variablen nicht direkt unterstützt, können Sie eine Unterklasse der Komponente erstellen und die Skins ersetzen. Die ComboBox-Komponente unterstützt beispielsweise nicht den Skinning-Mechanismus für die Dropdown-Liste, weil sie eine ListKomponente als Dropdown-Liste verwendet. Wenn eine Komponente aus Unterkomponenten besteht, werden die Unterkomponenten wie in den Einträgen der einzelnen Komponenten in Kapitel 4, „Komponenten-Referenz“, auf Seite 51 identifiziert. So wenden Sie die Skinning-Methode auf eine Unterkomponente an: 1 Führen Sie die unter „Komponenten-Skins bearbeiten“ auf Seite 43 beschriebenen Schritte aus, 2 3 4 5 6 7 bearbeiten Sie jedoch eine ScrollBar-Skin. Bearbeiten Sie in diesem Beispiel die ScrollDownArrowDown-Skin, und benennen Sie sie in MeinScrollDownArrowDown um. Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. Wählen Sie Datei > Speichern, und geben Sie der Datei einen eindeutigen Namen, beispielsweise MeinComboTest.fla. Ziehen Sie MeinScrollDownArrowDown aus der obigen Themenbibliothek auf die Bühne von MeinComboTest.fla, und löschen Sie es. Damit ist das Symbol der Bibliothek hinzugefügt worden, ohne dass es auf der Bühne sichtbar wird. Wählen Sie Einfügen > Neues Symbol, und geben Sie diesem einen eindeutigen Namen, beispielsweise MeineComboBox. Wählen Sie die Option Export für ActionScript, und klicken Sie auf OK. Die Option In erstes Bild exportieren wird automatisch aktiviert. Geben Sie den folgenden Code in das Bedienfeld Aktionen in die Aktionen in Bild 1 von MeineComboBox ein: #initclip 10 import MeineComboBox Object.registerClass("ComboBox", MeineComboBox); #endinitclip 8 Ziehen Sie eine ComboBox-Komponente auf die Bühne. 9 Geben Sie im Eigenschafteninspektor so viele Label-Parameter wie nötig ein, damit die vertikale Bildlaufleiste angezeigt wird. 10 Wählen Sie Datei > Speichern. 11 Wählen Sie Datei > Neu, und erstellen Sie eine neue ActionScript-Datei (nur für Flash Professional). 12 Geben Sie den folgenden Code ein: import mx.controls.ComboBox import mx.controls.scrollClasses.ScrollBar class MeineComboBox extends ComboBox{ function getDropdown():Object{ var oldName = ScrollBar.prototype.downArrowDownName; ScrollBar.prototype.downArrowDownName = "MeinScrollDownArrowDown"; var r = super.getDropdown(); ScrollBar.prototype.downArrowDownName = oldName; return r; } } 48 Kapitel 3: Komponenten individuell anpassen 13 Wählen Sie Datei > Speichern, um die Datei unter dem Namen MeineComboBox.as zu speichern. 14 Klicken Sie auf einen freien Bereich der Bühne, und wählen Sie im Eigenschafteninspektor die Schaltfläche Einstellungen für Veröffentlichungen. 15 Wählen Sie die Schaltfläche Einstellungen für die ActionScript-Version. 16 Klicken Sie auf die Plus-Schaltfläche (+), um einen neuen Klassenpfad hinzuzufügen. Wählen Sie dann die Schaltfläche Ziel, und suchen Sie auf der Festplatte den Speicherort für die Datei MeineComboBox.as. 17 Wählen Sie Steuerung > Film testen. Skinning-Komponenten 49 50 Kapitel 3: Komponenten individuell anpassen KAPITEL 4 Komponenten-Referenz In diesem Referenzkapitel werden die einzelnen Komponenten mit ihren Programmierschnittstellen (API) beschrieben. Die Beschreibungen der einzelnen Komponenten enthalten jeweils die folgenden Angaben: • • • • • • • Tastaturinteraktion Live-Vorschau Eingabehilfen Einstellen der Komponentenparameter Verwenden von Komponenten in Anwendungen Anpassen von Komponenten mit Stilen und Skins ActionScript-Methoden, -Eigenschaften und -Ereignisse Die Komponenten sind in alphabetischer Reihenfolge aufgelistet. Ergänzend dazu sind in den nachfolgenden Tabellen die Komponenten entsprechend den verschiedenen Kategorien zusammengefasst. Komponenten der Benutzeroberfläche (UI) Komponente Beschreibung Accordion-Komponente (nur Flash Professional) Ein Satz von vertikalen Ansichten mit Schaltflächen, über die Anwender zwischen Ansichten wechseln können. Alert-Komponente (nur Flash Professional) Ein Fenster mit einer an den Anwender gerichteten Frage und Schaltflächen, mit denen der Anwender auf diese Frage reagieren kann. Button-Komponente Eine in der Größe veränderbare Schaltfläche, die durch Zuweisen eines eigenen Symbols angepasst werden kann. CheckBox-Komponente Ermöglicht dem Anwender die Auswahl eines booleschen Werts (true/false). ComboBox-Komponente Ermöglicht dem Anwender die Auswahl einer Option aus einer Liste mit verschiedenen Auswahlmöglichkeiten. Diese Komponente kann durch ein bearbeitbares Textfeld oberhalb der Liste ergänzt werden, mit dem der Anwender die Liste durchsuchen kann. 51 Komponente Beschreibung DateChooser-Komponente (nur Flash Professional) Ermöglicht dem Anwender die Auswahl von Datumsangaben aus einem Kalender. DateField-Komponente (nur Flash Professional) Ein nicht auswählbares Textfeld mit Kalendersymbol. Wenn der Anwender auf eine beliebige Stelle innerhalb der Begrenzungsbox klickt, wird eine DateChooser-Komponente angezeigt. DataGrid-Komponente (nur Flash Professional) Hier können Anwender mehrere Datenspalten anzeigen lassen und bearbeiten. Label-Komponente Ein nicht bearbeitbares, einzeiliges Textfeld. List-Komponente Ermöglicht dem Anwender die Auswahl einer oder mehrerer Optionen aus einer scrollenden Liste. Loader-Komponente Container, der eine geladene SWF- oder JPEG-Datei enthält. Menu-Komponente (nur Flash Professional) Ermöglicht dem Anwender die Auswahl eines Befehls aus einer Liste; entspricht einem Menü in einer Desktop-Anwendung. MenuBar-Komponente (nur Flash Professional) Eine horizontale Menüleiste. NumericStepper-Komponente Pfeilschaltflächen, mit denen der Wert einer Zahl durch Klicken erhöht oder verringert werden kann. 52 ProgressBar-Komponente Zeigt den Fortschritt eines Vorgangs an, gewöhnlich eines Ladevorgangs. RadioButton-Komponente Ermöglicht dem Anwender die Auswahl zwischen sich gegenseitig ausschließenden Optionen. ScrollPane-Komponente Zeigt Filme, Bitmaps und SWF-Dateien in einem begrenzten Bereich an; bei Bedarf wird automatisch eine Bildlaufleiste eingeblendet. TextArea-Komponente Ein mehrzeiliges Textfeld mit optionaler Bearbeitungsmöglichkeit. TextInput-Komponente Ein einzeiliges Texteingabefeld mit optionaler Bearbeitungsmöglichkeit. Tree-Komponente (nur Flash Professional) Ermöglicht dem Anwender die Bearbeitung hierarchisch strukturierter Informationen. Window-Komponente Ein verschiebbares Fenster mit Titelleiste, Beschriftung, Rahmen und einer Schließen-Schaltfläche für die Darstellung von Inhalten am Bildschirm des Anwenders. Kapitel 4: Komponenten-Referenz Datenkomponenten Komponente Beschreibung Datenbindungsklassen (nur Flash Professional) Mit diesen Klassen wird die Flash-Funktion zur Datenbindung zur Laufzeit implementiert. DataHolder-Komponente (nur Flash Professional) Enthält Daten und kann als Verbindung zwischen Komponenten verwendet werden. DataProvider-API Diese Komponente ist das Modell für Datenlisten mit linearem Zugriff. Dieses Modell bietet einfache Bearbeitungsfunktionen für Arrays, deren Änderungen übertragen werden. DataSet-Komponente (nur Flash Professional) Ein Baustein für die Erstellung datengesteuerter Anwendungen. RDBMSResolverKomponente (nur Flash Professional) Hiermit können Sie Daten in eine beliebige, unterstützte Datenquelle zurückspeichern. Diese Resolver-Komponente übersetzt die XML, die von einem Webdienst, von JavaBean, einem Servlet oder einer ASP-Seite empfangen und analysiert werden kann. Webdienst-Klassen (nur Flash Professional) Diese Klassen ermöglichen den Zugriff auf Webdienste, die das Simple Object Access Protocol (SOAP) im mx.services-Paket verwenden. WebServiceConnector-Klasse Ermöglicht den nicht skriptgesteuerten Zugriff auf die (nur Flash Professional) Methodenaufrufe von Webdiensten. XMLConnector-Komponente (nur Flash Professional) Liest und schreibt XML-Dokumente unter Verwendung der HTTPMethoden GET und POST. XUpdateResolverKomponente (nur Flash Professional) Hiermit können Sie Daten in eine beliebige, unterstützte Datenquelle zurückspeichern. Diese Resolver-Komponente übersetzt das DeltaPacket in XUpdate. Media-Komponenten Komponente Beschreibung MediaController-Komponente Steuert die Streaming-Media-Wiedergabe in einer Anwendung. MediaDisplay-Komponente Zeigt Streaming-Media in einer Anwendung an MediaPlayback-Komponente Eine Kombination der MediaDisplay- und MediaControllerKomponenten. Weitere Informationen zu diesen Komponenten finden Sie unter „Media-Komponenten (nur Flash Professional)“ auf Seite 360. Media-Komponenten 53 Manager Komponente Beschreibung DepthManager-Klasse Verwaltet die Stapeltiefe von Objekten. FocusManager-Klasse Wickelt die Navigation zwischen den am Bildschirm angezeigten Komponenten mit Hilfe der Tabulatortaste ab. Verwaltet außerdem Fokusänderungen beim Klicken innerhalb der Anwendung. PopUpManager-Klasse Ermöglicht das Ein- und Ausblenden von Popupfenstern. StyleManager-Klasse Ermöglicht das Registrieren von Stilen und verwaltet vererbte Stile. Bildschirme Komponente Beschreibung Form-Klasse (nur Flash Professional) Hiermit können Sie Formularanwendungsbildschirme zur Laufzeit bearbeiten. Screen-Klasse (nur Flash Professional) Basisklasse für die Slide- und Form-Klassen. Slide-Klasse (nur Flash Professional) Hiermit können Sie Präsentationsbildschirme zur Laufzeit bearbeiten. Accordion-Komponente (nur Flash Professional) Die Accordion-Komponente ist ein Navigator, der eine Sequenz von untergeordneten (Child-) Elementen enthält, die er einzeln anzeigt. Die untergeordneten Elemente müssen eine Unterklasse der UIObject-Klasse sein (die alle mit Version 2 der Macromedia Komponenten-Architektur erstellten Komponenten und Bildschirme enthält), meistens sind untergeordnete Elemente jedoch eine Unterklasse der View-Klasse. Zu ihr gehören Movieclips, die der mx.core.View-Klasse zugewiesen sind. Um die Reihenfolge der Tabstopps in den untergeordneten Elementen der Accordion-Komponente beizubehalten, müssen die untergeordneten Elemente auch Instanzen der View-Klasse sein. Eine Accordion-Komponente erstellt und verwaltet Kopfzeilenschaltflächen, die ein Benutzer drücken kann, um zwischen den untergeordneten Elementen der Accordion-Komponente navigieren zu können. Die Accordion-Komponente hat ein vertikales Layout mit Kopfzeilenschaltflächen, die sich über die Breite der Komponente erstrecken. Eine Kopfzeile ist mit jedem untergeordneten Element verknüpft, und jede Kopfzeile gehört zur AccordionKomponente (und nicht zum untergeordneten Element). Wenn der Benutzer auf eine Kopfzeile klickt, wird das zugehörige untergeordnete Element unter dieser Kopfzeile angezeigt. Der Übergang zum neuen untergeordneten Element erfolgt mit einer Übergangsanimation. 54 Kapitel 4: Komponenten-Referenz Eine Accordion-Komponente mit untergeordneten Elementen akzeptiert den Fokus und ändert die Darstellung ihrer Kopfzeilen, um den Fokus anzuzeigen. Wenn ein Benutzer eine AccordionKomponente ansteuert, zeigt die ausgewählte Kopfzeile das Fokussymbol an. AccordionKomponenten ohne untergeordnete Elemente akzeptieren keinen Fokus. Wenn auf Komponenten geklickt wird, die beim ausgewählten untergeordneten Element den Fokus akzeptieren, erhalten diese den Fokus. Wenn eine Accordion-Instanz den Fokus hat, können Sie diese mit Hilfe der folgenden Tasten steuern: Taste Beschreibung Pfeil nach unten, Pfeil nach rechts Verschiebt den Fokus auf die Kopfzeile des nächsten untergeordneten Elements. Der Fokus bricht vom letzten zum ersten um, ohne das untergeordnete Element zu ändern. Pfeil nach oben, Pfeil nach links Verschiebt den Fokus auf die Kopfzeile des vorherigen untergeordneten Elements. Der Fokus bricht vom ersten zum letzten um, ohne das untergeordnete Element zu ändern. <Ende> Wählt das letzte untergeordnete Element aus. Eingabetaste/Leertaste Wählt das mit der Kopfzeile, die den Fokus hat, verknüpfte untergeordnete Element aus. <Pos 1> Wählt das erste untergeordnete Element aus. Bild-ab-Taste Wählt das nächste untergeordnete Element aus. Die Auswahl bricht vom letzten zum ersten untergeordneten Element um. Bild-auf-Taste Wählt das vorherige untergeordnete Element aus. Die Auswahl bricht vom ersten zum letzten untergeordneten Element um. <Umschalt>+<Tab> Verschiebt den Fokus auf die vorherige Komponente. Diese Komponente kann sich innerhalb des ausgewählten untergeordneten Elements oder außerhalb der Accordion-Komponente befinden; sie wird jedoch nie eine weitere Kopfzeile in derselben Accordion-Komponente sein. <Tab> Verschiebt den Fokus auf die nächste Komponente. Diese Komponente kann sich innerhalb des ausgewählten untergeordneten Elements oder außerhalb der Accordion-Komponente befinden; sie wird jedoch nie eine weitere Kopfzeile in derselben Accordion-Komponente sein. Die Accordion-Komponente kann keinen Bildschirmleseprogrammen bereitgestellt werden. Accordion-Komponente verwenden (nur Flash Professional) Die Accordion-Komponente kann zur Darstellung von mehrteiligen Formularen verwendet werden. Beispielsweise kann eine Accordion-Komponente mit drei untergeordneten Elementen Formulare darstellen, bei denen der Benutzer seine Versandadresse, Rechnungsadresse und Zahlungsinformationen für eine E-Commerce-Transaktion ausfüllt. Die Verwendung einer Accordion-Komponente anstelle von mehreren Webseiten minimiert die Serverlast und gibt dem Benutzer ein besseres Fortschritts- und Kontextgefühl in einer Anwendung. Accordion-Komponente (nur Flash Professional) 55 Accordion-Parameter Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede Accordion-Komponenteninstanz festlegen: childSymbols Ein Array, das die Verknüpfungsbezeichner der Bibliothekssymbole festlegt, mit denen die untergeordneten Elemente der Accordion-Komponente erstellt werden. Der Standardwert ist [] (leeres Array). childNames Ein Array, das die Instanznamen der untergeordneten Elemente der AccordionKomponente festlegt. Der Standardwert ist [] (leeres Array). Ein Array, das die Textbezeichnungen für die Kopfzeilen der AccordionKomponente festlegt. Der Standardwert ist [] (leeres Array). childLabels Ein Array, das die Verknüpfungsbezeichner der Bibliothekssymbole festlegt, die als Symbole in den Kopfzeilen der Accordion-Komponente zu verwenden sind. Der Standardwert ist [] (leeres Array). childIcons Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die Accordion-Komponente über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter „Accordion-Klasse (nur Flash Professional)“ auf Seite 60. Anwendungen mit der Accordion-Komponente erstellen In diesem Beispiel wird der Checkout-Abschnitt eines Online-Shops entwickelt. Das Design erfordert eine Accordion-Komponente mit drei Formularen, in denen Benutzer ihre Versandadresse, ihre Rechnungsadresse und Zahlungsinformationen eingeben. Die Formulare für die Versandadresse und die Rechnungsadresse sind identisch. So fügen Sie mit Hilfe von Bildschirmen einer Anwendung eine Accordion-Komponente hinzu: 1 Wählen Sie in Flash Datei > Neu und dann Flash-Formularanwendung. 2 Doppelklicken Sie auf den Text Form1, und geben Sie den Namen addressForm ein. 3 4 5 6 56 Der Bildschirm adressForm wird zwar nicht in der Bibliothek angezeigt, ist jedoch ein Symbol der Screen-Klasse (einer Unterklasse der View-Klasse), das die Accordion-Komponente als untergeordnetes Element verwenden kann. Wählen Sie das Formular im Eigenschafteninspektor aus, und stellen Sie seine sichtbare Eigenschaft auf false ein. Dadurch wird der Inhalt des Formulars in der Anwendung ausgeblendet; das Formular wird nur in der Accordion-Komponente angezeigt. Ziehen Sie Komponenten, wie z. B. die Label- und TextInput-Komponenten, aus dem Bedienfeld Komponenten auf das Formular, um ein Scheinadressformular zu erstellen. Ordnen Sie sie an, und stellen Sie im Parameterfenster des Komponenten-Inspektors ihre Eigenschaften ein. Positionieren Sie die Formularelemente in der linken oberen Ecken des Formulars. Die linke obere Ecke des Formulars wird in der linken oberen Ecke der Accordion-Komponente platziert. Wiederholen Sie die Schritte 2-4, um den Bildschirm checkoutForm zu erstellen. Erstellen Sie ein neues Formular mit dem Namen accordionForm. Kapitel 4: Komponenten-Referenz 7 Ziehen Sie eine Accordion-Komponente aus dem Bedienfeld Komponenten auf das Formular accordionForm, und nennen Sie sie meinAccordion. 8 Wählen Sie meinAccordion aus, und führen Sie im Eigenschafteninspektor die folgenden Schritte durch: ■ Geben Sie für die childSymbols-Eigenschaft addressForm, addressForm und checkoutForm ein. Diese Strings legen die Namen der Bildschirme fest, mit denen die untergeordneten Elemente der Accordion-Komponente erstellt werden. Hinweis: Die ersten beiden untergeordneten Elemente sind Instanzen desselben Bildschirms, weil die Formulare für die Versandadresse und die Rechnungsadresse identische Komponenten haben. Geben Sie für die childNames-Eigenschaft shippingAddress, billingAddress und checkout ein. Bei diesen Strings handelt es sich um die ActionScript-Namen der untergeordneten Elemente der Accordion-Komponente. ■ Geben Sie für die childLabels-Eigenschaft ShippingAddress, BillingAddress und Checkout ein. Bei diesen Strings handelt es sich um die Textbezeichnungen in den Kopfzeilen der Accordion-Komponente. 9 Wählen Sie Steuerung > Film testen. ■ So fügen Sie einer Anwendung eine Accordion-Komponente hinzu: 1 Wählen Sie Datei > Neu, und erstellen Sie ein neues Flash-Dokument. 2 Wählen Sie Einfügen > Neues Symbol, und nennen Sie es AddressForm. 3 Klicken Sie im Dialogfeld Neues Symbol erstellen auf die Schaltfläche Erweitert, und wählen 4 5 6 7 8 Sie Export für ActionScript. Geben Sie im Feld der ActionScript 2-Klasse mx.core.View ein. Damit die Reihenfolge der Tabstopps in den untergeordneten Elementen der AccordionKomponente beibehalten wird, müssen die untergeordneten Elemente auch Instanzen der View-Klasse sein. Ziehen Sie Komponenten, wie z. B. die Label- und TextInput-Komponenten, aus dem Bedienfeld Komponenten auf die Bühne, um ein Scheinadressformular zu erstellen. Ordnen Sie sie an, und stellen Sie im Parameterfenster des Komponenten-Inspektors ihre Eigenschaften ein. Positionieren Sie die Formularelemente relativ zu 0, 0 (Mitte) auf der Bühne. Die 0, 0Koordinate des Movieclips wird in der linken oberen Ecke der Accordion-Komponente platziert. Wählen Sie Bearbeiten > Dokument bearbeiten, um zur Hauptzeitleiste zurückzukehren. Wiederholen Sie die Schritte 2-5, um den Movieclip checkoutForm zu erstellen. Ziehen Sie eine Accordion-Komponente aus dem Bedienfeld Komponenten auf die Bühne in der Hauptzeitleiste. Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: ■ Geben Sie den Instanznamen meinAccordion ein. ■ Geben Sie für die childSymbols-Eigenschaft AddressForm, AddressForm und CheckoutForm ein. Accordion-Komponente (nur Flash Professional) 57 Diese Strings legen die Namen der Movieclips fest, mit denen die untergeordneten Elemente der Accordion-Komponente erstellt werden. Hinweis: Die ersten beiden untergeordneten Elemente sind Instanzen desselben Movieclips, weil die Formulare für die Versandadresse und die Rechnungsadresse identisch sind. Geben Sie für die childNames-Eigenschaft shippingAddress, billingAddress und checkout ein. Bei diesen Strings handelt es sich um die ActionScript-Namen der untergeordneten Elemente der Accordion-Komponente. ■ Geben Sie für die childLabels-Eigenschaft ShippingAddress, BillingAddress und Checkout ein. Bei diesen Strings handelt es sich um die Textbezeichnungen in den Kopfzeilen der Accordion-Komponente. ■ Geben Sie für die childIcons-Eigenschaft AddressIcon, AddressIcon und CheckoutIcon ein. Diese Strings legen die Verknüpfungsbezeichner der Movieclip-Symbole fest, die als Symbole in den Kopfzeilen der Accordion-Komponente verwendet werden. Sie müssen diese Movieclip-Symbole erstellen, wenn die Kopfzeilen Symbole enthalten sollen. 9 Wählen Sie Steuerung > Film testen. ■ So fügen Sie mit ActionScript-Anweisungen einer Accordion-Komponente untergeordnete Elemente hinzu: 1 Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. 2 Ziehen Sie die Accordion-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 3 Geben Sie im Eigenschafteninspektor den Instanznamen meinAccordion ein. 4 Ziehen Sie eine TextInput-Komponente auf die Bühne, und löschen Sie sie. Dadurch wird sie zur Bibliothek hinzugefügt, damit Sie sie in Schritt 6 dynamisch instanziieren können. 5 Geben Sie im Bedienfeld Aktionen in Bild 1 der Zeitleiste Folgendes ein: meinAccordion.createChild("View", "shippingAddress", { label: "Shipping Address" }); meinAccordion.createChild("View", "billingAddress", { label: "Billing Address" }); meinAccordion.createChild("View", "payment", { label: "Payment" }); Mit diesem Code wird die createChild()-Methode zur Erstellung der Child-Ansichten aufgerufen. 6 Geben Sie im Bedienfeld Aktionen unterhalb des in Schritt 4 eingegebenen Codes den folgenden Code ein: var o = meinAccordion.shippingAddress.createChild("TextInput", "firstName"); o.move(20, 38); o.setSize(116, 20); o = meinAccordion.shippingAddress.createChild("TextInput", "lastName"); o.move(175, 38); o.setSize(145, 20); Mit diesem Code werden den untergeordneten Elementen der Accordion-Komponente Komponenteninstanzen (zwei TextInput-Komponenten) hinzugefügt. 58 Kapitel 4: Komponenten-Referenz Accordion-Komponente individuell anpassen (nur Flash Professional) Eine Accordion-Komponente kann horizontal und vertikal sowohl während des Authorings als auch zur Laufzeit transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()). Die Methode setSize() und das Werkzeug Transformieren ändern nur die Breite der Kopfzeilen der Accordion-Komponente und die Breite und Höhe ihres Inhaltsbereichs. Die Höhe der Kopfzeilen und die Breite und Höhe der untergeordneten Elemente werden nicht geändert. Das Begrenzungsrechteck einer Accordion-Komponente kann nur geändert werden, wenn die Methode setSize() aufgerufen wird. Wenn die Kopfzeilen zu klein für den Bezeichnungstext sind, werden die Bezeichnungen abgeschnitten. Ist der Inhaltsbereich einer Accordion-Komponente kleiner als ein untergeordnetes Element, wird das untergeordnete Element abgeschnitten. Stile mit der Accordion-Komponente verwenden Sie haben die Möglichkeit, Stileigenschaften festzulegen, um die Darstellung des Rahmens und des Hintergrunds einer Accordion-Komponente zu ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Accordion-Komponenten unterstützen die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der seinen Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. backgroundColor Die Hintergrundfarbe. borderColor Die Rahmenfarbe. borderStyle Der Rahmenstil; mögliche Werte sind „none“, „solid“, „inset“, „outset“, „default“, „alert“. Der Wert „default“ entspricht dem Aussehen des Rahmens der Window-Komponente und der Wert „alert“ dem des Rahmens der AlertKomponente. headerHeight Die Höhe der Kopfzeilenschaltflächen in Pixel. color Die Farbe des Kopfzeilentextes. disabledColor Die Farbe einer deaktivierten Accordion-Komponente. fontFamily Der Schriftname für die Kopfzeilenbezeichnungen. fontSize Die Punktgröße für die Schrift der Kopfzeilenbezeichnungen. fontStyle Der Schriftstil für die Kopfzeilenbezeichnungen: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für die Kopfzeilenbezeichnungen: „normal“ oder „bold“ (fett). Accordion-Komponente (nur Flash Professional) 59 Stil Beschreibung textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). openDuration Die Dauer der Übergangsanimation in Millisekunden. openEasing Die von der Animation verwendete Tweening-Funktion. Skins mit der Accordion-Komponente verwenden Die Accordion-Komponente stellt die visuellen Zustände ihrer Kopfzeilenschaltflächen mit Hilfe von Skins dar. Um beim Authoring für die Schaltflächen und die Titelleiste Skins zu verwenden, ändern Sie die Skinsymbole im Ordner Flash UI Components 2/Themes/MMDefault/ Accordion Assets skins states in der Bibliothek einer der FLA-Dateien für Themen. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Eine Accordion-Komponente besteht aus ihrem Rahmen und Hintergrund, ihren Kopfzeilenschaltflächen und ihren untergeordneten Elementen. Der Rahmen und der Hintergrund unterstützen Stile, jedoch keine Skins. Den Kopfzeilen können über den unten aufgeführten Teil der von der Schaltfläche geerbten Skins zwar Skins, dafür jedoch keine Stile zugewiesen werden. Eine Accordion-Komponente verwendet die folgenden Skineigenschaften, um Kopfzeilenschaltflächen Skins dynamisch zuzuweisen: Eigenschaft Beschreibung Standardwert falseUpSkin Up-Status (Schaltfläche accordionHeaderSkin nicht geklickt) falseDownSkin Pressed-Status (Schaltfläche geklickt) accordionHeaderSkin falseOverSkin Rollover-Status. accordionHeaderSkin trueUpSkin Toggle-Status (Schaltfläche mit Umschaltfunktion) accordionHeaderSkin Accordion-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > Accordion ActionScript-Klassenname mx.containers.Accordion Eine Accordion-Komponente ist eine Komponente mit untergeordneten Elementen, die einzeln angezeigt werden. Jedes untergeordnete Element hat eine entsprechende Kopfzeilenschaltfläche, die mit dem untergeordneten Element erstellt wird. Ein untergeordnetes Element muss eine Instanz der UIObject-Klasse sein. Ein Movieclip-Symbol wird automatisch eine Instanz der UIObject-Klasse, wenn es ein untergeordnetes Element einer Accordion-Klasse wird. Damit die Reihenfolge der Tabstopps in den untergeordneten Elementen der Accordion-Komponente beibehalten wird, müssen die untergeordneten Elemente auch Instanzen der View-Klasse sein. Wenn Sie ein Movieclip-Symbol als untergeordnetes Element verwenden, müssen Sie das Feld ActionScript 2.0-Klasse auf mx.core.View einstellen, damit es von der View-Klasse erbt. 60 Kapitel 4: Komponenten-Referenz Die mit ActionScript festgelegte Eigenschaft der Accordion-Klasse überschreibt den gleichnamigen Parameter, der in den Bedienfeldern des Eigenschafteninspektors bzw. des Komponenten-Inspektors festgelegt wurde. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.Accordion.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineAccordionInstance.version);. Übersicht: Methoden der Accordion-Klasse Methode Beschreibung Accordion.createChild() Erstellt ein untergeordnetes Element für die Accordion-Klasse. Accordion.createSegment() Erstellt ein untergeordnetes Element für die Accordion-Klasse. Die Parameter für diese Methode unterscheiden sich von denen der createChild()-Methode. Accordion.destroyChildAt() Löscht ein untergeordnetes Element an einer festgelegten Indexposition. Accordion.getChildAt() Ruft einen Verweis auf ein untergeordnetes Element an einer festgelegten Indexposition ab. Erbt alle Methoden von UIObject, UIComponent und mx.core.View. Übersicht: Eigenschaften der Accordion-Klasse Eigenschaft Beschreibung Accordion.numChildren Die Anzahl der untergeordneten Elemente einer Accordion-Instanz. Accordion.selectedChild Ein Verweis auf das ausgewählte untergeordnete Element. Accordion.selectedIndex Die Indexposition des ausgewählten untergeordneten Elements. Erbt alle Eigenschaften von UIObject, UIComponent und mx.core.View. Übersicht: Ereignisse der Accordion-Klasse Ereignis Beschreibung Accordion.change Broadcastübertragung an alle registrierten Listener, wenn die Accordion-Eigenschaften selectedIndex und selectedChild durch einen Mausklick oder einen Tastendruck geändert werden. Erbt alle Ereignisse von UIObject, UIComponent und mx.core.View. Accordion-Komponente (nur Flash Professional) 61 Accordion.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } meineAccordionInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn sich die AccordionEigenschaften selectedIndex und selectedChild ändern. Dieses Ereignis wird nur als Broadcastübertragung verteilt, wenn der Wert selectedChild oder selectedIndex durch einen Mausklick oder einen Tastendruck geändert wird (nicht, wenn der Wert mit ActionScript geändert wird). Dieses Ereignis wird als Broadcastübertragung verteilt, bevor die Übergangsanimation auftritt. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Die AccordionKomponente setzt ein change-Ereignis ab, wenn eine ihrer Schaltflächen gedrückt wird, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Sie rufen die addEventListener()-Methode auf und übergeben ihr als Parameter einen Verweis auf die Prozedur. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird die Prozedur meinAccordionListener definiert und der meinAccordion.addEventListener()-Methode als zweiter Parameter übergeben. Das Ereignisobjekt wird von der change-Prozedur im Parameter evtObject erfasst. Wenn das change-Ereignis als Broadcastübertragung verteilt wird, wird eine trace-Anweisung an das Bedienfeld Ausgabe gesendet. meinAccordionListener = new Object(); meinAccordionListener.change = function(){ trace("Changed to different view"); } meinAccordion.addEventListener("change", meinAccordionListener); 62 Kapitel 4: Komponenten-Referenz Accordion.createChild() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.createChild(classOrSymbolName, instanceName[, initialProperties]) Parameter Dieser Parameter kann entweder die Konstruktorfunktion für die zu instanziierende UIObject-Klasse sein oder der Verknüpfungsname, ein Verweis auf das zu instanziierende Symbol. Bei der Klasse muss es sich um die UIObject-Klasse oder eine Unterklasse von UIObject handeln, meistens ist es jedoch eine View-Klasse oder eine Unterklasse der View-Klasse. classOrSymbolName instanceName Der Instanzname der neuen Instanz. initialProperties Ein optionaler Parameter, der Ausgangseigenschaften für die neue Instanz festlegt. Sie können die folgenden Eigenschaften verwenden: • • label Dieser String gibt die Textbezeichnung an, die die neue untergeordnete Instanz bei ihrer Kopfzeile verwendet. icon Dieser String gibt den Verknüpfungsbezeichner des Bibliothekssymbols an, das das untergeordnete Element für das Symbol in seiner Kopfzeile verwendet. Rückgaben Ein Verweis auf eine Instanz der UIObject-Klasse, die das neu erstellte untergeordnete Element ist. Beschreibung Methode (geerbt von View); erstellt das untergeordnete Element für die Accordion-Komponente. Das neu erstellte untergeordnete Element wird am Ende der Liste mit den untergeordneten Elementen der Accordion-Komponente hinzugefügt. Mit dieser Methode können Sie Ansichten innerhalb der Accordion-Komponente positionieren. Das erstellte untergeordnete Element ist eine Instanz der Klasse oder des im Parameter classOrSymbolName angegebenen MovieclipSymbols. Mit den label- und icon-Eigenschaften können Sie eine Textbezeichnung und ein Symbol für die zugehörige Accordion-Kopfzeile für jedes untergeordnete Element im Parameter initialProperties festlegen. Wenn ein untergeordnetes Element erstellt wird, wird ihm in der Reihenfolge der Erstellung eine Indexzahl zugewiesen, und die numChildren-Eigenschaft wird um 1 erhöht. Accordion-Komponente (nur Flash Professional) 63 Beispiel Mit dem folgenden Code wird eine Instanz des Movieclip-Symbols PaymentForm mit dem Namen payment als letztes untergeordnetes Element von meinAccordion erstellt: var child = meinAccordion.createChild("PaymentForm", "payment", { label: "Payment", Icon: "payIcon" }); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Mit dem folgenden Code wird ein untergeordnetes Element erstellt, das eine Instanz der ViewKlasse ist: var child = meinAccordion.createChild(mx.core.View, "payment", { label: "Payment", Icon: "payIcon" }); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Mit dem folgenden Code wird auch ein untergeordnetes Element erstellt, das eine Instanz der View-Klasse ist; hier wird jedoch „import“ verwendet, um auf den Konstruktor für die ViewKlasse zu verweisen: import mx.core.View var child = meinAccordion.createChild(View, "payment", { label: "Payment", Icon: "payIcon" }); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Accordion.createSegment() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. meinAccordion.createSegment(classOrSymbolName, instanceName[, label[, icon]]) Parameter classOrSymbolName Dieser Parameter kann entweder ein Verweis auf die Konstruktorfunktion für die zu instanziierende UIObject-Klasse sein oder der Verknüpfungsname des zu instanziierenden Symbols. Bei der Klasse muss es sich um die UIObject-Klasse oder eine Unterklasse von UIObject handeln, meistens ist es jedoch eine View-Klasse oder eine Unterklasse der View-Klasse. instanceName Der Instanzname der neuen Instanz. Dieser String gibt die Textbezeichnung an, die die neue untergeordnete Instanz bei ihrer Kopfzeile verwendet. Dieser Parameter ist optional. label Dieser String ist ein Verweis auf den Verknüpfungsbezeichner des Bibliothekssymbols, das das untergeordnete Element für das Symbol in seiner Kopfzeile verwendet. Dieser Parameter ist optional. icon Rückgaben Ein Verweis auf die neu erstellte UIObject-Instanz. 64 Kapitel 4: Komponenten-Referenz Beschreibung Methode; erstellt das untergeordnete Element für die Accordion-Komponente. Das neu erstellte untergeordnete Element wird am Ende der Liste mit den untergeordneten Elementen der Accordion-Komponente hinzugefügt. Mit dieser Methode können Sie Ansichten innerhalb der Accordion-Komponente positionieren. Das erstellte untergeordnete Element ist eine Instanz der Klasse oder des im Parameter classOrSymbolName angegebenen Movieclip-Symbols. Mit den label- und icon-Parametern können Sie eine Textbezeichnung und ein Symbol für die zugehörige Accordion-Kopfzeile für jedes untergeordnete Element festlegen. Die createSegment()-Methode unterscheidet sich von der createChild()-Methode insofern, als label und icon direkt als Parameter und nicht als Eigenschaften eines initialPropertiesParameters übergeben werden. Wenn ein untergeordnetes Element erstellt wird, wird ihm in der Reihenfolge der Erstellung eine Indexzahl zugewiesen, und die numChildren-Eigenschaft wird um 1 erhöht. Beispiel Im folgenden Beispiel wird eine Instanz des Movieclip-Symbols PaymentForm mit dem Namen payment als letztes untergeordnetes Element von meinAccordion erstellt: var child = meinAccordion.createSegment("PaymentForm", "payment", "Payment", "payIcon"); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Mit dem folgenden Code wird ein untergeordnetes Element erstellt, das eine Instanz der ViewKlasse ist: var child = meinAccordion.createSegment(mx.core.View, "payment", { label: "Payment", Icon: "payIcon" }); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Mit dem folgenden Code wird auch ein untergeordnetes Element erstellt, das eine Instanz der View-Klasse ist; hier wird jedoch „import“ verwendet, um auf den Konstruktor für die ViewKlasse zu verweisen: import mx.core.View var child = meinAccordion.createSegment(View, "payment", { label: "Payment", Icon: "payIcon" }); child.cardType.text = "Visa"; child.cardNumber.text = "1234567887654321"; Accordion.destroyChildAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.destroyChildAt(index) Accordion-Komponente (nur Flash Professional) 65 Parameter index Die Indexzahl des zu löschenden Accordion-Childs. Jedem untergeordneten Element eines Accordion wird in der Reihenfolge, in der es erstellt wurde, eine Indexzahl mit der Basis 0 zugewiesen. Rückgaben Keine. Beschreibung Methode (geerbt von View); löscht eines der untergeordneten Elemente von Accordion. Das zu löschende untergeordnete Element wird durch seinen Index angegeben, welcher an die Methode im Parameter index übergeben wird. Wenn diese Methode aufgerufen wird, wird die entsprechende Kopfzeile ebenfalls gelöscht. Wenn das gelöschte untergeordnete Element ausgewählt wird, wird ein neues untergeordnetes Element ausgewählt. Wenn es ein weiteres untergeordnetes Element gibt, so wird es ausgewählt. Wenn es kein weiteres untergeordnetes Element gibt, wird das vorherige untergeordnete Element ausgewählt. Wenn es kein vorheriges untergeordnetes Element gibt, ist die Auswahl nicht definiert. Hinweis: Durch Aufruf der destroyChildAt()-Methode wird die Eigenschaft numChildren um 1 verringert. Beispiel Mit dem folgenden Code wird das letzte untergeordnete Element von meinAccordion gelöscht: meinAccordion.destroyChildAt(meinAccordion.numChildren - 1); Siehe auch Accordion.createChild() Accordion.getChildAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.getChildAt(index) Parameter index Die Indexzahl eines Accordion-Childs. Jedem untergeordneten Element eines Accordion wird in der Reihenfolge, in der es erstellt wurde, ein Index mit der Basis 0 zugewiesen. Rückgaben Ein Verweis zur UIObject-Instanz an der angegebenen Indexposition. 66 Kapitel 4: Komponenten-Referenz Beschreibung Methode; gibt einen Verweis zum untergeordneten Element an der angegebenen Indexposition zurück. Jedes Accordion-Child erhält für seine Position einen Indexzahl. Diese Indexzahl hat die Basis 0, das erste untergeordnete Element ist also 0, das zweite untergeordnete Element 1 usw. Beispiel Mit dem folgenden Code wird ein Verweis auf das letzte untergeordnete Element von meinAccordion abgerufen: var lastChild:UIObject = meinAccordion.getChildAt(meinAccordion.numChildren 1); Accordion.numChildren Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.numChildren Beschreibung Eigenschaft (geerbt von View); gibt die Anzahl der untergeordneten Elemente (Child UIObjects) in einer Accordion-Instanz an. Kopfzeilen zählen nicht als untergeordnete Elemente. Jedes Accordion-Child erhält für seine Position einen Indexzahl. Diese Indexzahl hat die Basis 0, das erste untergeordnete Element ist also 0, das zweite untergeordnete Element 1 usw. Der Code meinAccordion.numChild - 1 verweist immer auf das letzte untergeordnete Element, das einem Accordion hinzugefügt wurde. Wenn ein Accordion beispielsweise 7 untergeordnete Elemente hat, hat das letzte untergeordnete Element den Index 6. Die Eigenschaft numChildren hat nicht die Basis 0, der Wert von meinAccordion.numChildren würde also 7 sein. Das Ergebnis von 7 - 1 ist 6, was die Indexzahl des letzten untergeordneten Elements ist. Beispiel Im folgenden Beispiel wird das letzte untergeordnete Element ausgewählt: meinAccordion.selectedIndex = meinAccordion.numChildren - 1; Accordion.selectedChild Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.selectedChild Accordion-Komponente (nur Flash Professional) 67 Beschreibung Eigenschaft; das ausgewählte untergeordnete Element, wenn es ein oder mehrere untergeordnete Elemente gibt; nicht definiert, wenn es keine untergeordneten Elemente gibt. Diese Eigenschaft ist entweder vom Typ UIObject oder nicht definiert. Wenn das Accordion untergeordnete Elemente hat, entspricht der Code meinAccordion.selectedChild dem Code meinAccordion.getChildAt(meinAccordion.selectedIndex). Wird diese Eigenschaft auf ein untergeordnetes Element eingestellt, startet das Accordion die Übergangsanimation, um das angegebene untergeordnete Element anzuzeigen. Durch die Änderung des Wertes von selectedChild wird auch der Wert von selectedIndex geändert. Der Standardwert ist meinAccordion.getChildAt(0), wenn das Accordion untergeordnete Elemente hat. Hat das Accordion keine untergeordneten Elemente, ist der Standardwert undefined. Beispiel Im folgenden Beispiel wird die Bezeichnung der ausgewählten Child-Ansicht abgefragt: var selectedLabel = meinAccordion.selectedChild.label; Im folgenden Beispiel soll das Zahlungsformular die ausgewählte Child-Ansicht sein: meinAccordion.selectedChild = meinAccordion.payment; Siehe auch Accordion.selectedIndex Accordion.selectedIndex Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinAccordion.selectedIndex Beschreibung Eigenschaft; der von Null ausgehende Index des ausgewählten untergeordneten Elements in einem Accordion mit einem oder mehreren untergeordneten Elementen. Bei einem Accordion ohne Child-Ansichten ist der einzig gültige Wert undefined. Jedes Accordion-Child erhält für seine Position einen Indexzahl. Diese Indexzahl hat die Basis 0, das erste untergeordnete Element ist also 0, das zweite untergeordnete Element 1 usw. Die gültigen Werte von selectedIndex sind 0, 1, 2 ... n - 1, wobei n die Anzahl der untergeordneten Elemente ist. 68 Kapitel 4: Komponenten-Referenz Wird diese Eigenschaft auf ein untergeordnetes Element eingestellt, startet das Accordion die Übergangsanimation, um das angegebene untergeordnete Element anzuzeigen. Durch die Änderung des Wertes von selectedIndex wird auch der Wert von selectedChild geändert. Beispiel Im folgenden Beispiel wird an den Index des ausgewählten untergeordneten Elements erinnert: var oldSelectedIndex = meinAccordion.selectedIndex; Im folgenden Beispiel wird das letzte untergeordnete Element ausgewählt: meinAccordion.selectedIndex = meinAccordion.numChildren - 1; Siehe auch Accordion.selectedChild, Accordion.numChildren Alert-Komponente (nur Flash Professional) Mit der Alert-Komponente können Sie ein Fenster mit einer an den Benutzer gerichteten Meldung und Antwortschaltflächen einblenden. Das Alert-Fenster verfügt über eine Titelleiste, die Sie mit Text ausfüllen können, eine Meldung, die Sie individuell anpassen können, und Schaltflächen, deren Bezeichnungen Sie ändern können. Ein Alert-Fenster kann eine beliebige Kombination der folgenden Schaltflächen aufweisen: Ja, Nein, OK und Abbrechen. Sie können die Textbezeichnungen auf den Schaltflächen mit Hilfe der folgenden Eigenschaften ändern: Alert.yesLabel, Alert.noLabel, Alert.okLabel und Alert.cancelLabel. Die Reihenfolge der Schaltflächen in einem Alert-Fenster kann nicht geändert werden; sie ist immer OK, Ja, Nein, Abbrechen. Um ein Alert-Fenster einzublenden, müssen Sie die Alert.show()-Methode aufrufen. Die AlertKomponente muss in der Bibliothek vorhanden sein, damit die Methode erfolgreich aufgerufen werden kann. Sie müssen die Alert-Komponente aus dem Bedienfeld Komponenten auf die Bühne ziehen und dann die Alert-Komponente von der Bühne löschen. Hierdurch wird die Komponente zur Bibliothek hinzugefügt, sie wird jedoch nicht im Dokument angezeigt. Die Live-Vorschau für die Alert-Komponente ist ein leeres Fenster. Der Text und die Schaltflächen eines Alert-Fensters können für Bildschirmleseprogramme zugänglich gemacht werden. Wenn Sie einer Anwendung die Alert-Komponente hinzufügen, können Sie diese im Bedienfeld Eingabehilfen für Bildschirmleseprogramme verfügbar machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.AlertAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie im Abschnitt „Barrierefreie Inhalte erstellen“ in der Hilfe „Flash verwenden“. Alert-Komponente (nur Flash Professional) 69 Alert-Komponente verwenden (nur Flash Professional) Die Alert-Komponente kann immer dann verwendet werden, wenn Sie einem Benutzer etwas mitteilen möchten. Beispielsweise könnten Sie ein Alert-Fenster einblenden, wenn ein Benutzer ein Formular nicht richtig ausfüllt, wenn eine Aktie einen gewissen Preis erreicht oder wenn ein Benutzer eine Anwendung beendet, ohne seine Sitzung zu speichern. Alert-Parameter Die Alert-Komponente unterstützt keine Authoring-Parameter. Sie müssen die ActionScriptMethode Alert.show() aufrufen, um ein Alert-Fenster einzublenden. Mit anderen ActionScriptEigenschaften können Sie das Alert-Fenster in einer Anwendung ändern. Weitere Informationen finden Sie unter „Alert-Klasse (nur Flash Professional)“ auf Seite 72. Anwendungen mit der Alert-Komponente erstellen Im folgenden Verfahren wird erklärt, wie Sie einer Anwendung beim Authoring eine AlertKomponente hinzufügen. In diesem Beispiel wird die Alert-Komponente angezeigt, wenn eine Aktie einen bestimmten Preis erreicht. So erstellen Sie eine Anwendung mit einer Alert-Komponente: 1 Doppelklicken Sie im Bedienfeld Komponenten auf die Alert-Komponente, um sie der Bühne hinzuzufügen. 2 Drücken Sie die Rücktaste (Windows) bzw. <Entf> (Macintosh), um die Komponente von der Bühne zu löschen. Hierdurch wird die Komponente zur Bibliothek hinzugefügt, sie wird jedoch nicht in der Anwendung angezeigt. 3 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, um eine Ereignisprozedur für das click-Ereignis zu definieren: import mx.controls.Alert meinClickHandler = function (evt){ if (evt.detail == Alert.OK){ trace("start stock app"); // startStockApplication(); } } Alert.show("Launch Stock Application?", "Stock Price Alert", Alert.OK | Alert.CANCEL, this, meinClickHandler, "stockIcon", Alert.OK); Mit diesem Code wird ein Alert-Fenster mit den Schaltflächen OK und Abbrechen erstellt. Wenn auf eine der Schaltflächen geklickt wird, wird die meinClickHandler-Funktion aufgerufen. Wenn jedoch auf die Schaltfläche OK geklickt wird, wird die startStockApplication()-Methode aufgerufen. 4 Steuerung > Film testen 70 Kapitel 4: Komponenten-Referenz Alert-Komponente individuell anpassen (nur Flash Professional) Die Alert-Komponente positioniert sich in der Mitte der Komponente, die als ihr ParentParameter übergeben wurde. Das übergeordnete Element (Parent) muss eine UIComponentKlasse sein. Wenn es ein Movieclip ist, können Sie den Clip als mx.core.View registrieren, sodass es von UIComponent erbt. Das Alert-Fenster dehnt sich horizontal automatisch aus, um seine Größe an den Meldungstext oder die angezeigten Schaltflächen anzupassen. Wenn Sie große Textmengen anzeigen möchten, sollten Sie Zeilenumbrüche in den Text einfügen. Die Alert-Komponente reagiert nicht auf die setSize()-Methode. Stile mit der Alert-Komponente verwenden Sie können Stileigenschaften festlegen, um das Erscheinungsbild der Alert-Komponente zu ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Alert-Komponenten unterstützen die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). buttonStyleDeclaration Eine (statische) CSSStyleDeclaration-Klasse für die Stile des Schaltflächentextes. messageStyleDeclaration Eine (statische) CSSStyleDeclaration-Klasse für die Stile des Meldungstextes, des Rahmens und des Hintergrunds. titleStyleDeclaration Eine (statische) CSSStyleDeclaration-Klasse für die Stile des Titeltextes. Alert-Komponente (nur Flash Professional) 71 Skins mit der Alert-Komponente verwenden Die Alert-Komponente stellt die visuellen Zustände ihre Kopfzeilenschaltflächen mit Hilfe von Window-Skins dar. Um beim Authoring für die Schaltflächen und die Titelleiste Skins zu verwenden, ändern Sie die Skinsymbole im Ordner Flash UI Components 2/Themes/ MMDefault/Window Assets skins states in der Bibliothek einer der FLA-Dateien für Themen. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Die RectBorder.as-Klasse enthält ActionScript-Code, der zur Darstellung der Feldrahmen in der Alert-Komponente verwendet wird. Sie können Alert-Komponenten wie folgt mit RectBorderStilen ändern: var meinAlert = Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this); meinAlert.setStyle("borderStyle", "inset"); Weitere Informationen zu RectBorder-Stilen finden Sie unter „Skins mit der List-Komponente verwenden“ auf Seite 323. Eine Alert-Komponente verwendet die folgenden Skineigenschaften, um den Schaltflächen und der Titelleiste Skins dynamisch zuzuweisen: Eigenschaft Beschreibung Standardwert buttonUp Der Up-Status der Schaltfläche. ButtonSkin buttonDown Der Pressed-Status der Schaltfläche. ButtonSkin buttonOver Der Rollover-Status der Schaltfläche. ButtonSkin titleBackground Die Titelleiste des Fensters. TitleBackground Alert-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > ScrollView > Window > Alert ActionScript-Klassenname mx.controls.Alert Um die Alert-Komponente zu verwenden, ziehen Sie eine Alert-Komponente auf die Bühne und löschen sie, sodass die Komponente sich zwar in der Dokumentbibliothek befindet, jedoch nicht in der Anwendung sichtbar ist. Rufen Sie dann Alert.show() auf, um ein Alert-Fenster anzuzeigen. Sie können Alert.show() Parameter übergeben, die dem Alert-Fenster eine Meldung, eine Titelleiste und Schaltflächen hinzufügen. Da ActionScript asynchron ist, blockiert die Alert-Komponente nicht. Das heißt, die Zeilen des ActionScript-Code sind nach dem Aufruf von Alert.show() fortlaufend. Sie müssen Listener hinzufügen, um die click-Ereignisse zu verarbeiten, die übertragen werden, wenn ein Benutzer auf eine Schaltfläche klickt, und dann Ihren Code fortzusetzen, nachdem das Ereignis übertragen wurde. Hinweis: In blockierenden Betriebssystemumgebungen (wie z. B. Microsoft Windows) würde der Aufruf von Alert.show() erst zurückgegeben werden, nachdem der Benutzer eine Aktion ausgeführt hat, z. B. auf eine Schaltfläche geklickt hat. 72 Kapitel 4: Komponenten-Referenz Übersicht: Methoden der Alert-Klasse Ereignis Beschreibung Alert.show() Erstellt ein Alert-Fenster mit optionalen Parametern. Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der Alert-Klasse Eigenschaft Beschreibung Alert.buttonHeight Die Höhe jeder Schaltfläche in Pixel. Der Standardwert ist 22. Alert.buttonWidth Die Breite jeder Schaltfläche in Pixel. Der Standardwert ist 100. Alert.cancelLabel Der Bezeichnungstext der Schaltfläche Abbrechen. Alert.noLabel Der Bezeichnungstext der Schaltfläche Nein. Alert.okLabel Der Bezeichnungstext der Schaltfläche OK. Alert.yesLabel Der Bezeichnungstext der Schaltfläche Ja. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der Alert-Klasse Ereignis Beschreibung Alert.click Broadcastübertragung, wenn auf eine Schaltfläche in einem Alert-Fenster geklickt wird. Erbt alle Ereignisse von UIObject und UIComponent. Alert.buttonHeight Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.buttonHeight Beschreibung Eigenschaft (Klasse); eine (statische) Klasseneigenschaft, die die Höhe der Schaltflächen ändert. Siehe auch Alert.buttonWidth Alert-Komponente (nur Flash Professional) 73 Alert.buttonWidth Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.buttonWidth Beschreibung Eigenschaft (Klasse); eine (statische) Klasseneigenschaft, die die Breite der Schaltflächen ändert. Siehe auch Alert.buttonHeight Alert.click Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung clickHandler = function(eventObject){ // Hier Code eingeben } Alert.show(message[, title[, flags[, parent[, clickHandler[, icon[, defaultButton]]]]]]) Beschreibung Ereignis; sendet einen Broadcast an den registrierten Listener, wenn auf eine der Schaltflächen OK, Ja, Nein oder Abbrechen geklickt wird. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Die AlertKomponente setzt ein click-Ereignis ab, wenn eine ihrer Schaltflächen gedrückt wird, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Sie rufen die Alert.show()-Methode auf und übergeben ihr den Namen der Prozedur als Parameter. Wenn im Alert-Fenster auf eine Schaltfläche geklickt wird, wird der Listener aufgerufen. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Alert.click-Ereignisses hat eine zusätzliche detail-Eigenschaft, deren Wert je nachdem, auf welche Schaltfläche geklickt wurde, einer der folgenden ist: Alert.OK, Alert.CANCEL, Alert.YES, Alert.NO. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) 74 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird die Prozedur meinClickHandler definiert und der Alert.show()Methode als fünfter Parameter übergeben. Das Ereignisobjekt wird von meinClickHandler im Parameter evt erfasst. Die detail-Eigenschaft des Ereignisobjekts wird dann innerhalb einer trace-Anweisung verwendet, um den Namen der Schaltfläche, auf die geklickt wurde (Alert.OK oder Alert.CANCEL), an das Bedienfeld Ausgabe zu senden: meinClickHandler = function(evt){ if(evt.detail == Alert.OK){ trace(Alert.okLabel); }else if (evt.detail == Alert.CANCEL){ trace(Alert.cancelLabel); } } Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this, meinClickHandler); Alert.cancelLabel Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.cancelLabel Beschreibung Eigenschaft (Klasse); eine (statische) Klasseneigenschaft, die den Bezeichnungstext auf der Schaltfläche Abbrechen angibt. Beispiel Im folgenden Beispiel wird die Bezeichnung der Schaltfläche Abbrechen auf Abbruch („cancellation“) eingestellt: Alert.cancelLabel = "cancellation"; Alert.noLabel Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.noLabel Beschreibung Eigenschaft (Klasse); eine (statische) Klasseneigenschaft, die den Bezeichnungstext auf der Schaltfläche Nein angibt. Alert-Komponente (nur Flash Professional) 75 Beispiel Im folgenden Beispiel wird die Bezeichnung der Schaltfläche Nein auf „nyet“ eingestellt: Alert.noLabel = "nyet"; Alert.okLabel Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.okLabel Beschreibung Eigenschaft (Klasse); eine (statische) Klasseneigenschaft, die den Bezeichnungstext auf der Schaltfläche OK angibt. Beispiel Im folgenden Beispiel wird die Bezeichnung der Schaltfläche OK auf „okay“ eingestellt: Alert.okLabel = "okay"; Alert.show() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.show(message[, title[, flags[, parent[, clickHandler[, icon[, defaultButton]]]]]]) Parameter message title Titel Die anzuzeigende Meldung. Der Text in der Alert-Titelleiste. Dieser Parameter ist optional. Wenn der Parameter nicht angegeben wird, ist die Titelleiste leer. Ein optionaler Parameter, der die im Alert-Fenster anzuzeigenden Schaltflächen angibt. Der Standardwert ist Alert.ok, der eine OK-Schaltfläche anzeigt. Wenn Sie mehr als einen Wert verwenden, trennen Sie die Werte mit einem Balken |. Bei dem Wert kann es sich um einen oder mehrere der Folgenden handeln: flags 76 Kapitel 4: Komponenten-Referenz • • • • Alert.OK Alert.CANCEL Alert.YES Alert.NO Sie können auch Alert.NONMODAL verwenden, um anzugeben, dass das Alert-Fenster modusunabhängig ist. Ein modusunabhängiges Fenster ermöglicht einem Benutzer die Interaktion mit anderen Fenstern in der Anwendung. parent Das Parent-Fenster für die Alert-Komponente. Das Alert-Fenster zentriert sich im Parent-Fenster. Verwenden Sie den Wert null oder undefined, um die _root-Zeitleiste anzugeben. Das Parent-Fenster muss von der UIComponent-Klasse erben. Sie können das Parent-Fenster mit mx.core.View registrieren, damit es von UIComponent erbt. Dieser Parameter ist optional. clickHandler Ein Handler für die click-Ereignisübertragung, wenn auf die Schaltflächen geklickt wird. Zusätzlich zu den Objekteigenschaften des Standard-click-Ereignisses gibt es eine weitere detail-Eigenschaft, die den Wert für den Schaltflächenparameter enthält, auf den geklickt wurde (Alert.OK, Alert.CANCEL, Alert.YES, Alert.NO). Bei diesem Handler kann es sich um eine Funktion oder ein Objekt handeln. Weitere Informationen finden Sie in Kapitel 2, „Komponentenereignis-Listener verwenden“, auf Seite 26. Ein String, der den Verknüpfungsbezeichner eines Symbols in der Bibliothek darstellt, der als Symbol verwendet werden kann, das links vom Text angezeigt wird. Dieser Parameter ist optional. icon defaultButton Gibt an, auf welche Schaltfläche geklickt wurde, wenn ein Benutzer die Eingabetaste drückt. Dieser Parameter kann folgende Werte annehmen: • • • • Alert.OK Alert.CANCEL Alert.YES Alert.NO Rückgaben Die Instanz der Alert-Klasse, die erstellt wird. Beschreibung Methode (Klasse); eine (statische) Klassenmethode, die ein Alert-Fenster mit einer Nachricht, einem optionalen Titel, optionalen Schaltflächen und einem optionalen Symbol anzeigt. Der Titel des Alert-Fensters wird im oberen Bereich angezeigt und wird links ausgerichtet. Das Symbol wird links vom Nachrichtentext angezeigt. Die Schaltflächen werden zentriert unterhalb des Nachrichtentextes und des Symbols angezeigt. Beispiel Der folgende Code ist ein einfaches Beispiel eines modusabhängigen Alert-Fensters mit einer OKSchaltfläche: Alert.show("Hallo Welt!"); Der folgende Code definiert eine Klickprozedur, die eine Nachricht zum Bedienfeld Ausgabe mit der Information sendet, auf welche Schaltfläche geklickt wurde: Alert-Komponente (nur Flash Professional) 77 meinClickHandler = function(evt){ trace (evt.detail + "wurde angeklickt"); } Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this, meinClickHandler); Hinweis: Die detail-Eigenschaft des Ereignisobjekts gibt eine Zahl zurück, die jeweils eine Schaltfläche darstellt. Die Schaltfläche OK wird durch 4, die Schaltfläche Abbrechen durch 8, die Schaltfläche Ja durch 1 und die Schaltfläche Nein durch 2 dargestellt. Alert.yesLabel Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Alert.yesLabel Beschreibung Eigenschaft (Klasse); eine Klasseneigenschaft (statisch), die den Beschriftungstext auf der Schaltfläche Ja angibt. Beispiel Im folgenden Beispiel wird die Beschriftung der Schaltfläche OK auf „da“ gesetzt: Alert.yesLabel = "da"; Button-Komponente Die Button-Komponente ist eine rechteckige Schaltfläche mit veränderlicher Größe als Bestandteil der Benutzeroberfläche. Sie können Schaltflächen eigene Symbole zuweisen. Außerdem können Sie das Verhalten von Schaltflächen ändern und herkömmliche Schaltflächen in Schaltflächen mit Umschaltfunktion umwandeln. Ein Schaltfläche mit Umschaltfunktion (Toggle-Schaltfläche) bleibt nach dem Klicken so lange aktiviert, bis der Anwender erneut darauf klickt. Schaltflächen können innerhalb der Anwendung aktiviert oder deaktiviert werden. Im deaktivierten Zustand reagiert die Schaltfläche nicht auf Maus- und Tastatureingaben. Aktivierte Schaltflächen erhalten den Eingabefokus, wenn darauf geklickt wird oder wenn sie mit der Tabulatortaste angesteuert werden. Schaltflächeninstanzen mit Eingabefokus können mit den folgenden Tasten gesteuert werden: 78 Taste Beschreibung <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Objekt. Leertaste Drückt die Komponente bzw. gibt diese frei und löst das Ereignis click aus. <Tab> Verschiebt den Fokus auf das nächste Objekt. Kapitel 4: Komponenten-Referenz Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Die Änderungen an den Parametern der einzelnen Schaltflächeninstanzen, die beim Authoring im Eigenschafteninspektor oder im Komponenten-Inspektor vorgenommen werden, werden jeweils in einer Live-Vorschau angezeigt. Anstelle eigener Symbole werden in der Live-Vorschau auf der Bühne allerdings graue Quadrate angezeigt. Die einer Anwendung hinzugefügten Button-Komponenten können Sie über das Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Zeile in den Code einzufügen: mx.accessibility.ButtonAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der Button-Komponente arbeiten Die Schaltfläche (Button) gehört zu den grundlegenden Bestandteilen von Formularen und WebAnwendungen. Mit Schaltflächen können Sie dem Anwender die Möglichkeit geben, Ereignisse zu initiieren. Die meisten Formulare enthalten beispielsweise eine Schaltfläche Abschicken, mit der die Übertragung der eingegebenen Daten an den Server eingeleitet wird. In Präsentationen ermöglichen Schaltflächen wie Zurück und Weiter das Navigieren zwischen den einzelnen Seiten. Sie können einer Schaltfläche ein Symbol zuweisen, indem Sie einen Movieclip oder ein Grafiksymbol auswählen oder erstellen und als Symbol zuweisen. Damit die Schaltfläche korrekt angezeigt wird, muss das Symbol mit den Koordinaten 0, 0 registriert werden. Wählen Sie im Bedienfeld Bibliothek das gewünschte Symbol aus, öffnen Sie über das Menü Optionen das Dialogfeld Verknüpfung, und geben Sie einen Verknüpfungsbezeichner ein. Derselbe Wert ist auch als Symbolparameter im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor anzugeben. Sie können diesen Wert auch für die ActionScript-Eigenschaft Button.icon eingeben. Hinweis: Wenn das Symbol größer als die Schaltfläche ist, ragt es über deren Begrenzungen hinaus. Parameter der Button-Komponente Jeder Instanz einer Button-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: Mit label legen Sie den Schaltflächentext fest. Der Standardtext lautet „Button“. Mit icon können Sie der Schaltfläche ein eigenes Symbol zuweisen. Der Wert entspricht dem Verknüpfungsbezeichner eines Movieclips oder eines Grafiksymbols in der Bibliothek. Ein Standardwert ist nicht vorhanden. Mit toggle können Sie der Schaltfläche eine Umschaltfunktion zuweisen. Wenn Sie diesen Parameter auf den Wert „true“ setzen, bleibt die Schaltfläche nach dem Klicken so lange aktiviert, bis der Anwender erneut darauf klickt. Wenn Sie diesen Parameter auf den Wert „false“ setzen, verhält sich die Schaltfläche wie eine normale Schaltfläche. Der Standardwert ist „false“. Button-Komponente 79 Wenn Sie diesen Parameter auf „true“ setzen, können Sie mit dem zusätzlichen Parameter selected festlegen, ob die Schaltfläche im aktivierten (true) oder deaktivierten (false) Ausgangszustand angezeigt wird. Der Standardwert lautet false. Mit labelPlacement legen Sie die Ausrichtung des Beschriftungstexts der Schaltfläche in Bezug zum Symbol fest. Diesem Parameter können die vier Werte left (links), right (rechts), top (oben) und bottom (unten) zugewiesen werden. Der Standardwert ist right. Weitere Informationen finden Sie unter Button.labelPlacement. Sie können diese und weitere Optionen für Button-Komponenten über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter Button-Klasse. Anwendungen mit der Button-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine ButtonKomponente hinzufügen. Im Beispiel wird beschrieben, wie Sie eine Schaltfläche mit dem Beschriftungstext „Hilfe“ und einem eigenen Symbol erstellen, mit der der Anwender ein Hilfesystem aufrufen kann. Führen Sie die folgenden Schritte aus, um eine Anwendung mit einer Button-Komponente zu erstellen: 1 Ziehen Sie eine Button-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor den Instanznamen helpBtn ein. 3 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: Geben Sie Hilfe als Wert für den Parameter label ein. ■ Geben Sie HelpIcon als Wert für den Parameter icon ein. Sie können der Schaltfläche ein Symbol zuweisen, indem Sie den Verknüpfungsbezeichner eines Movieclips oder Grafiksymbols aus der Bibliothek als Wert für den Parameter icon zuweisen. Im Beispiel lautet der Verknüpfungsbezeichner „HelpIcon“. ■ Weisen Sie der Eigenschaft toggle den Wert „true“ zu. 4 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: ■ clippyListener = new Object(); clippyListener.click = function (evt){ clippyHelper.enabled = evt.target.selected; } helpBtn.addEventListener("click", clippyListener); Mit der letzten Codezeile wird der Instanz helpBtn eine Ereignisprozedur click hinzugefügt. Die Prozedur aktiviert und deaktiviert die Instanz clippyHelper, bei der es sich beispielsweise um ein Bedienfeld mit einer Online-Hilfe handeln kann. 80 Kapitel 4: Komponenten-Referenz Die Button-Komponente anpassen Button-Komponenten können sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie hierzu die Methode setSize() (siehe UIObject.setSize()) oder die entsprechenden Eigenschaften und Methoden der ButtonKlasse (siehe Button-Klasse). Wenn die Größe der Schaltfläche geändert wird, wird die Größe des Symbols und der Beschriftung nicht automatisch angepasst. Die Begrenzungsbox einer Schaltflächeninstanz ist nicht sichtbar. Sie markiert zugleich den Kollisionsbereich der Instanz. Wenn Sie eine Instanz vergrößern, vergrößert sich auch der Kollisionsbereich. Wenn der Platz innerhalb der Begrenzungsbox nicht für die Beschriftung ausreicht, wird diese unvollständig angezeigt. Wenn das Symbol größer als die Schaltfläche ist, ragt es über deren Begrenzungen hinaus. Stile für die Button-Komponente verwenden Durch Zuweisen von Stileigenschaften können Sie die Gestaltung einer Schaltflächeninstanz ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die Button-Komponente unterstützt die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil: „normal“ oder „italic“. fontWeight Die Schriftstärke: „normal“ oder „bold“. Skins für die Button-Komponente verwenden Die Button-Komponente verwendet für die Darstellung der Schaltflächenzustände das ZeichnenAPI von ActionScript. Wenn Sie beim Authoring der Button-Komponente Skins zuweisen möchten, bearbeiten Sie den ActionScript-Code in der Datei ButtonSkin.as, die im Ordner First Run\Classes\mx\skins\halo gespeichert ist. Button-Komponenten, die Sie mit der Methode UIObject.createClassObject() dynamisch (zur Laufzeit) erstellen, können Sie dynamisch Skins zuweisen. Sie können einer Komponente zur Laufzeit Skins zuweisen, indem Sie die Skin-Eigenschaften des Parameters initObject anpassen, der an die Methode createClassObject() übergeben wird. Diese Skin-Eigenschaften legen die Namen der Symbole fest, die für die verschiedenen Zustände der Schaltfläche verwendet werden sollen (mit oder ohne Schaltflächensymbol). Button-Komponente 81 Wenn Sie beim Authoring den Parameter icon oder zur Laufzeit die ActionScript-Eigenschaft icon festlegen, wird derselbe Verknüpfungsbezeichner für drei Symbolzustände zugewiesen: falseUpIcon, falseDownIcon und trueUpIcon. Sie können abweichende Symbole für die einzelnen Symbolzustände (von denen es insgesamt acht gibt) zuweisen, indem Sie die Eigenschaften des Parameters initObject anpassen, der an die Methode createClassObject() übergeben wird. Auf diese Weise können Sie beispielsweise erreichen, dass ein anderes Symbol angezeigt wird, wenn der Anwender gerade auf eine Schaltfläche klickt. Im folgenden Codebeispiel wird ein Objekt mit der Bezeichnung initObject erstellt, das als Parameter initObject die Skin-Eigenschaften des neuen Verknüpfungsbezeichners für das Symbol einstellt. In der letzten Codezeile wird durch einen Aufruf der Methode createClassObject() eine neue Instanz der Button-Klasse mit den im Parameter initObject übergebenen Eigenschaften erzeugt: var initObject = new Object(); initObject.falseUpIcon = "MeinFalseUpIcon"; initObject.falseDownIcon = "MeinFalseDownIcon"; initObject.trueUpIcon = "MeinTrueUpIcon"; createClassObject(mx.controls.Button, "ButtonInstance", 0, initObject); Weitere Informationen hierzu finden Sie unter „Skinning-Komponenten“ auf Seite 42 und UIObject.createClassObject(). Aktivierte Schaltflächen werden im Over-Status angezeigt, wenn sich der Mauszeiger darüber befindet. Beim Klicken auf die Schaltfläche erhält diese den Eingabefokus, und sie wird im Down-Status angezeigt. Beim Loslassen der Maustaste wird die Schaltfläche wieder im OverStatus angezeigt. Wenn der Mauszeiger bei gedrückter Maustaste verschoben wird, sodass er sich nicht mehr über der Schaltfläche befindet, kehrt diese wieder in den Ausgangszustand zurück, behält aber den Eingabefokus. Wenn der Parameter toggle auf „true“ gesetzt ist, ändert sich der Zustand erst beim Loslassen der Maustaste über der Schaltfläche. Deaktivierte Schaltflächen werden unabhängig von den Bedienvorgängen des Anwenders immer im Disabled-Status angezeigt. Für Button-Komponenten sind die folgenden Skin-Eigenschaften verfügbar: 82 Eigenschaft Beschreibung falseUpSkin Up-Status (Schaltfläche nicht geklickt). Der Standardwert ist RectBorder. falseDownSkin Pressed-Status (Schaltfläche geklickt). Der Standardwert ist RectBorder. falseOverSkin Over-Status (Mauszeiger über der Schaltfläche). Der Standardwert ist RectBorder. falseDisabledSkin Disabled-Status (Schaltfläche deaktiviert). Der Standardwert ist RectBorder. trueUpSkin Toggle-Status (Schaltfläche mit Umschaltfunktion). Der Standardwert ist RectBorder. trueDownSkin Pressed-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. trueOverSkin Over-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. Kapitel 4: Komponenten-Referenz Eigenschaft Beschreibung trueDisabledSkin Disabled-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. falseUpIcon Symbol im Up-Status. Der Standardwert ist undefined. falseDownIcon Symbol im Pressed-Status. Der Standardwert ist undefined. falseOverIcon Symbol im Over-Status. Der Standardwert ist undefined. falseDisabledIcon Symbol im Disabled-Status. Der Standardwert ist undefined. trueUpIcon Symbol im Toggle-Status. Der Standardwert ist undefined. trueOverIcon Symbol im Over-Status bei Toggle-Schaltflächen. Der Standardwert ist undefined. trueDownIcon Symbol im Pressed-Status bei Toggle-Schaltflächen. Der Standardwert ist undefined. trueDisabledIcon Symbol im Disabled-Status bei Toggle-Schaltflächen. Der Standardwert ist undefined. Button-Klasse Vererbung UIObject > UIComponent > SimpleButton > Button ActionScript-Klassenname mx.controls.Button Mit Hilfe der Eigenschaften der Button-Klasse können Sie Schaltflächen Symbole und Beschriftungstexte zuweisen sowie Schaltflächen mit einer Umschaltfunktion versehen. Per ActionScript zugewiesene Eigenschaften der Button-Klasse haben Vorrang vor gleichnamigen Parametern, die im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor festgelegt werden. Die Button-Komponente verwendet ein mit dem FocusManager gezeichnetes, angepasstes Rechteck mit abgerundeten Ecken, das das standardmäßige Fokus-Rechteck von Flash Player ersetzt. Weitere Informationen finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.Button.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineButtonInstance.version);. Die Komponentenklasse Button ist nicht mit dem integrierten Button-Objekt von ActionScript identisch. Button-Komponente 83 Übersicht: Methoden der Button-Klasse Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften für die Button-Klasse Methode Beschreibung SimpleButton.emphasized Gibt an, ob eine Schaltfläche aussieht wie eine Standardschaltfläche. SimpleButton.emphasizedStyleDeclaration Die Stildeklaration, wenn die emphasizedEigenschaft auf true eingestellt ist. Button.icon Gibt das Symbol der Schaltflächeninstanz an. Button.label Gibt den innerhalb der Schaltfläche angezeigten Text an. Button.labelPlacement Gibt die Ausrichtung des Beschriftungstexts in Bezug zum Symbol an. Button.selected Wenn die Eigenschaft toggle auf true gesetzt ist, gibt diese Eigenschaft an, ob die Schaltfläche gedrückt (true) oder nicht gedrückt (false) ist. Button.toggle Gibt an, ob die Schaltfläche als Toggle-Schaltfläche (mit Umschaltfunktion) fungiert. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der Button-Klasse Methode Beschreibung Button.click Broadcast beim Drücken der Maustaste über einer Schaltflächeninstanz und beim Betätigen der Leertaste. Erbt alle Ereignisse von UIObject und UIComponent. Button.click Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(click){ ... } 84 Kapitel 4: Komponenten-Referenz Verwendung 2: listenerObject = new Object(); listenerObject.click = function(eventObject){ ... } buttonInstance.addEventListener("click", listenerObject) Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn die Maustaste über der Schaltfläche gedrückt (losgelassen) oder wenn die Schaltfläche den Fokus hat und die Leertaste betätigt wird. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der Button-Komponente zugewiesen werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Button-Komponenteninstanz meineButtonComponent zugewiesen ist, wird _level0.meineButtonComponent an das Bedienfeld Ausgabe gesendet. on(click){ trace(this); } Beachten Sie das abweichende Verhalten von this, wenn dieses Schlüsselwort innerhalb einer on()-Prozedur verwendet wird, die einem normalen Flash-Schaltflächensymbol zugewiesen ist. Wird this innerhalb einer on()-Prozedur verwendet, die einem Schaltflächensymbol zugewiesen ist, bezieht sich dieses Schlüsselwort auf die Zeitleiste, die die betreffende Schaltfläche enthält. Wenn beispielsweise der folgende Code der Schaltflächensymbolinstanz meinButton zugewiesen wird, wird „_level0“ an das Ausgabebedienfeld gesendet: on(release) { trace(this); } Hinweis: Für das integrierte Button-Objekt von ActionScript gibt es kein click-Ereignis, sondern nur ein release-Ereignis mit weitgehend ähnlicher Funktion. Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (buttonInstance) setzt ein Ereignis (in diesem Fall click) ab, und das Ereignis reagiert auf eine Funktion (auch als Handler bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject). Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Das Ereignisobjekt verfügt über einen Satz von Eigenschaften mit Informationen zum Ereignis. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode addEventListener() (siehe UIEventDispatcher.addEventListener()) für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Button-Komponente 85 Beispiel Im folgenden Beispiel, das einem Bild in der Zeitleiste zugewiesen ist, wird eine Meldung an das Ausgabebedienfeld gesendet, wenn auf eine Schaltfläche mit der Bezeichnung buttonInstance geklickt wird. In der ersten Codezeile wird der Schaltfläche eine Beschriftung zugewiesen. Die zweite Zeile bewirkt, dass sich die Schaltfläche als Toggle-Schaltfläche (mit Umschaltfunktion) verhält. In der dritten Zeile wird ein Listener-Objekt mit der Bezeichnung form erstellt. In der vierten Zeile wird eine Funktion für das click-Ereignis des Listener-Objekts definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts entspricht der Komponente, die das Ereignis erzeugt (in diesem Fall buttonInstance). Der Zugriff auf die Eigenschaft Button.selected erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode addEventListener() durch buttonInstance aufgerufen; dabei werden das Ereignis click und das Listener-Objekt form als Parameter übergeben: buttonInstance.label = "Mausklick testen" buttonInstance.toggle = true; form = new Object(); form.click = function(eventObj){ trace("Die gewählte Eigenschaft wurde geändert in " + eventObj.target.selected); } buttonInstance.addEventListener("click", form); Im folgenden Codebeispiel wird ebenfalls beim Klicken auf buttonInstance eine Meldung an das Ausgabebedienfeld gesendet. Die on()-Prozedur muss buttonInstance direkt zugewiesen werden: on(click){ trace("Klick auf Button-Komponente"); } Siehe auch UIEventDispatcher.addEventListener() SimpleButton.emphasized Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.emphasized Beschreibung Eigenschaft; gibt an, ob die Schaltfläche hervorgehoben (true) ist oder nicht (false). Im hervorgehobenen Zustand entspricht die Darstellung einer Standardschaltfläche. Verwenden Sie generell die Eigenschaft FocusManager.defaultPushButton, und stellen Sie nicht die Eigenschaft emphasized direkt ein. Der Standardwert lautet false. 86 Kapitel 4: Komponenten-Referenz Die emphasized-Eigenschaft ist eine statische Eigenschaft der SimpleButton-Klasse. Sie müssen deshalb direkt von SimpleButton aus darauf zugreifen, wie im Folgenden dargestellt: SimpleButton.emphasizedStyleDeclaration = "foo"; Wenn Sie nicht FocusManager.defaultPushButton verwenden, empfiehlt es sich, eine Schaltfläche in den hervorgehobenen Status zu versetzen oder über den hervorgehobenen Status die Farbe von Text zu ändern. Im folgenden Beispiel wird die Eigenschaft emphasized für die Schaltflächeninstanz meinButton festgelegt: _global.styles.foo = new CSSStyleDeclaration(); _global.styles.foo.color = 0xFF0000; SimpleButton.emphasizedStyleDeclaration = "foo"; meinButton.emphasized = true; Siehe auch SimpleButton.emphasizedStyleDeclaration SimpleButton.emphasizedStyleDeclaration Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.emphasizedStyleDeclataion Beschreibung Eigenschaft; ein String mit der Stildeklaration zur Formatierung einer Schaltfläche, wenn die Eigenschaft emphasized auf true eingestellt ist. Siehe auch SimpleButton.emphasized Button.icon Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.icon Button-Komponente 87 Beschreibung Eigenschaft; eine Zeichenfolge, die den Verknüpfungsbezeichner eines Symbols aus der Bibliothek angibt, das als Symbol einer Schaltflächeninstanz verwendet werden soll. Als Symbol kann wahlweise ein Movieclip-Symbol oder ein Grafiksymbol mit Registrierungspunkt in der oberen linken Ecke verwendet werden. Die Größe der Schaltfläche wird nicht automatisch an die Größe des Symbols angepasst. Um zu verhindern, dass das Symbol über die Schaltfläche hinausragt, müssen Sie deren Größe erforderlichenfalls selbst anpassen. Um einer Schaltfläche ein eigenes Symbol zuzuweisen, müssen Sie zunächst einen Movieclip oder ein Grafiksymbol erstellen. Wählen Sie das gewünschte Symbol im Symbolbearbeitungsmodus auf der Bühne aus, und geben Sie in den Feldern X und Y im Eigenschafteninspektor jeweils den Wert 0 ein. Wählen Sie den Movieclip im Bedienfeld Bibliothek aus, und wählen Sie anschließend im Menü Optionen den Befehl Verknüpfung. Wählen Sie Export für ActionScript, und geben Sie im Textfeld Bezeichner einen Bezeichner ein. Der Standardwert ist ein leerer String (""); hierdurch wird der Schaltfläche kein Symbol zugewiesen. Mit der Eigenschaft labelPlacement können Sie die Position des Symbols in Bezug zur Schaltfläche festlegen. Beispiel Im folgenden Codebeispiel wird einer Schaltflächeninstanz ein Movieclip aus dem Bedienfeld Bibliothek als Symbol zugewiesen, dessen Verknüpfungsbezeichner hapiness lautet: meinButton.icon = "hapiness" Siehe auch Button.labelPlacement Button.label Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.label Beschreibung Eigenschaft; gibt den Beschriftungstext für eine Schaltflächeninstanz an. Standardmäßig wird der Beschriftungstext mittig innerhalb der Schaltfläche ausgerichtet. Ein mit dieser Methode zugewiesener Beschriftungstext hat Vorrang vor einem Text, der beim Authoring über den entsprechenden Parameter im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor zugewiesen wurde. Der Standardwert ist Button. 88 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Codebeispiel wird der Text „Aus Liste entfernen“ als Beschriftung zugewiesen: buttonInstance.label = "Aus Liste entfernen"; Siehe auch Button.labelPlacement Button.labelPlacement Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.labelPlacement Beschreibung Eigenschaft; gibt die Position des Beschriftung in Bezug zum Symbol an. Der Standardwert ist right. Symbol und Beschriftungstext werden immer vertikal und horizontal zentriert innerhalb des Begrenzungsbereichs der Schaltfläche ausgerichtet. Für labelPlacement können die folgenden Werte angegeben werden: • • • • Der Beschriftungstext wird rechts vom Symbol positioniert. left Der Beschriftungstext wird links vom Symbol positioniert. bottom Der Beschriftungstext wird unterhalb des Symbols positioniert. top Der Beschriftungstext wird oberhalb des Symbols positioniert. right Beispiel Im folgenden Codebeispiel wird der Beschriftungstext links vom Symbol positioniert. In der zweiten Codezeile wird der Wert der Eigenschaft labelPlacement an das Ausgabebedienfeld gesendet. iconInstance.labelPlacement = "left"; trace(iconInstance.labelPlacement); Button.selected Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.selected Button-Komponente 89 Beschreibung Eigenschaft; ein boolescher Wert, der angibt, ob die Schaltfläche gedrückt (true) oder nicht gedrückt (false) ist. Die Eigenschaft selected kann nur auf true gesetzt werden, wenn auch die Eigenschaft toggle den Wert true hat. Wenn die Eigenschaft toggle den Wert false hat, bleibt die Zuweisung des Werts true für die Eigenschaft selected ohne Auswirkungen. Der Standardwert lautet false. Das Ereignis click wird nicht ausgelöst, wenn sich der Wert der Eigenschaft selected mit ActionScript ändert. Es wird ausgelöst, wenn ein Benutzer die Schaltfläche verwendet. Beispiel Im folgenden Beispiel wird der Wert der Eigenschaft toggle auf true und der Wert der Eigenschaft selected ebenfalls auf true gesetzt; dadurch befindet sich die Schaltfläche im gedrückten Zustand. Die Aktion trace sendet den Wert true an das Ausgabebedienfeld: ButtonInstance.toggle = true; // "toggle" muss "true" sein, damit die gewählte // Eigenschaft gesetzt werden kann ButtonInstance.selected = true; // Zeigt den Toggle-Status der Schaltfläche an trace(ButtonInstance.selected); // Aktion "trace" übergibt "true" Siehe auch Button.toggle Button.toggle Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung buttonInstance.toggle Beschreibung Eigenschaft; ein boolescher Wert, der angibt, ob sich die Schaltfläche als Toggle-Schaltfläche mit Umschaltfunktion (true) oder wie eine normale Schaltfläche (false) verhält. Der Standardwert ist false. Eine Toggle-Schaltfläche bleibt nach dem Klicken so lange im gedrückten Zustand, bis erneut darauf geklickt wird. Beispiel Im folgenden Codebeispiel wird die Eigenschaft toggle auf true gesetzt, sodass die Instanz meinButton als Toggle-Schaltfläche fungiert. meinButton.toggle = true; 90 Kapitel 4: Komponenten-Referenz CellRenderer-API Die CellRenderer-API ist ein Satz von Eigenschaften und Methoden, den die List-basierten Komponenten (List, DataGrid, Tree und Menu) verwenden, um benutzerdefinierten Zellinhalt für jede ihrer Zeilen anzuzeigen und zu manipulieren. Diese benutzerdefinierte Zelle kann eine vorgefertigte Komponente enthalten, wie beispielsweise eine CheckBox, oder eine von Ihnen erstellte Klasse. Mit List-Klassen arbeiten Zur Verwendung der CellRenderer-API benötigen Sie Vorkenntnisse zur List-Klasse. Die Komponenten DataGrid, Tree und Menu sind eine Erweiterung der List-Klasse, daher ist ein Verständnis der List-Klasse Voraussetzung zum Verständnis dieser Komponenten. Hinweis: Eine Komponente ist eine Klasse, aber eine Klasse ist nicht notwendigerweise eine Komponente. Zusammensetzung der List-Klasse List-Klassen setzen sich aus Zeilen zusammen. Diese Zeilen zeigen Rollover- und Auswahlmarkierungen an, werden als Aktiv-Zustand zur Zeilenauswahl verwendet und spielen beim Scrollen eine wichtige Rolle. Abgesehen von Auswahlmarkierungen und Symbolen (wie beispielsweise die Knotensymbole und Erweiterungspfeile einer Tree-Komponente), besteht eine Zeile aus einer Zelle (oder im Falle von DataGrid aus mehreren Zellen). Bei der Standardbedingung sind diese Zellen TextField-Objekte, die die CellRenderer-API implementieren. Sie können eine List-Klasse jedoch anweisen, für jede Zeile eine andere Komponentenklasse als Zelle zu verwenden. Die einzige Voraussetzung ist, dass die Klasse die CellRenderer-API implementiert, die die List-Klasse zur Kommunikation mit der Zelle verwendet. Stapelanordnung einer Zeile in einer List- oder DataGrid-Komponente. Hinweis: Wenn eine Zelle über Ereignisprozeduren (onPress usw.) für Schaltflächen verfügt, empfängt der Hintergrund-Kollisionsbereich möglicherweise keine Eingabe, die zur Auslösung der Ereignisse notwendig ist. Scrolling-Verhalten der List-Klasse List-Klassen verwenden zum Scrollen einen eher komplexen Algorithmus. Eine Liste ordnet nur so viele Zeilen an, wie sie auf einmal anzeigen kann; Elemente unterhalb des Werts der rowCountEigenschaft erhalten keine Zeilen. Wenn ein Bildlauf in einer Liste durchgeführt wird, werden alle Zeilen nach oben oder unten verschoben (je nach Bildlaufrichtung). Die Liste recycelt daraufhin die Zeilen, die aus dem Anzeigebereich verschwunden sind; sie initialisiert diese neu und verwendet sie für die neuen Zeilen, die in den Anzeigebereich verschoben werden, indem der Wert der alten Zeile auf das neue Element in der Anzeige gesetzt wird und die alte Zeile dorthin verschoben wird, wo das neue Element durch den Bildlauf in der Anzeige erscheint. CellRenderer-API 91 Durch dieses Bildlaufverhalten können Sie nicht davon ausgehen, dass eine Zelle für nur einen Wert verwendet wird. Da Zeilen wiederverwendet werden, muss der CellRenderer in der Lage sein, ihren Status komplett zurückzusetzen, wenn sie auf einen neuen Wert gesetzt werden. Wenn Ihr CellRenderer beispielsweise ein Symbol zur Anzeige eines Elements erstellt, muss dieses Symbol möglicherweise entfernt werden, wenn ein anderes Element mit diesem wiedergegeben wird. Gehen Sie beispielsweise davon aus, dass Ihr CellRenderer ein Behälter ist, der mit der Zeit mit unzähligen Elementwerten gefüllt wird, und er muss in der Lage sein, sich komplett von der Anzeige eines Werts zur Anzeige eines anderen zu verändern. Ihre Zelle sollte sogar in der Lage sein, undefinierte Elemente ordnungsgemäß widerzugeben, was möglicherweise das Entfernen des gesamten alten Inhalts der Zelle zur Folge hat. Mit der CellRenderer-API arbeiten Sie müssen eine Klasse mit 4 Methoden erstellen (CellRenderer.getPreferredHeight(), CellRenderer.getPreferredWidth(), CellRenderer.setSize(), CellRenderer.setValue()), die die List-basierte Komponente zur Kommunikation mit der Zelle verwendet. Es gibt zwei Methoden und eine Eigenschaft (CellRenderer.getCellIndex(), und CellRenderer.listOwner), die einer Zelle automatisch zugeordnet werden, um ihr die Kommunikation mit der List-basierten Komponente zu ermöglichen. Nehmen wir beispielsweise an, eine Zelle verfügt über ein integriertes Kontrollkästchen, über das eine Zeile ausgewählt wird, wenn auf diese geklickt wird. Der CellRenderer benötigt einen Verweis auf die List-basierte Komponente, die sie enthält, um die selectedIndex-Eigenschaft der List-basierten Komponente aufzurufen. Die Zelle muss außerdem wissen, welcher Elementindex zurzeit wiedergegeben wird, sodass sie selectedIndex auf die korrekte Zahl setzen kann; die Zelle kann zu diesem Zweck CellRenderer.listOwner und CellRenderer.getCellIndex() verwenden. Sie müssen diese APIs nicht implementieren; die Zelle empfängt diese automatisch, wenn sie innerhalb der List-basierten Komponente platziert wird. CellRenderer.getDataLabel() Für die CellRenderer-API zu implementierende Methoden Sie müssen einen Klasse mit den folgenden Methoden erstellen, sodass die Komponenten List, DataGrid, Tree oder Menu mit der Zelle kommunizieren können: Name Beschreibung CellRenderer.getPreferredHeight() Gibt die bevorzugte Höhe einer Zelle zurück. 92 CellRenderer.getPreferredWidth() Gibt die bevorzugte Breite einer Zelle zurück. CellRenderer.setSize() Legt die Breite und Höhe einer Zelle fest. CellRenderer.setValue() Legt den in der Zelle anzuzeigenden Inhalt fest. Kapitel 4: Komponenten-Referenz Durch die CellRenderer-API zur Verfügung gestellte Methoden Im Folgenden werden die Methoden beschrieben, die die Komponenten List, DataGrid, Tree und Menu an die Zelle übergeben, wenn diese innerhalb der Komponente erstellt wird. Sie müssen diese Methoden nicht implementieren. Name Beschreibung CellRenderer.getDataLabel() Gibt einen String zurück, der den Namen des CellRendererDatenfeldes enthält. CellRenderer.getCellIndex() Gibt ein Objekt mit zwei Feldern zurück, columnIndex und rowIndex, die die Position der Zelle angeben. Durch die CellRenderer-API zur Verfügung gestellte Eigenschaften Im Folgenden wird die Eigenschaft beschrieben, die die Komponenten List, DataGrid, Tree und Menu an die Zelle übergeben, wenn diese innerhalb der Komponente erstellt wird. Sie müssen diese Eigenschaft nicht implementieren. Name Beschreibung CellRenderer.listOwner Ein Verweis auf die List-Komponente, die die Zelle enthält. CellRenderer.getDataLabel() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.getDataLabel() Parameter Keine. Rückgaben Ein String. Beschreibung Methode; gibt einen String zurück, der den Namen des CellRenderer-Datenfeldes enthält. Beispiel Der folgende Code liefert der Zelle die Information, dass sie das Datenfeld "Price" wiedergibt. Die Variable p ist nun gleich "Price": var p = getDataLabel(); CellRenderer-API 93 CellRenderer.getCellIndex() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.getCellIndex() Parameter Keine. Rückgaben Ein Objekt mit zwei Feldern: columnIndex und itemIndex. Beschreibung Methode; gibt ein Objekt mit zwei Feldern zurück, columnIndex und itemIndex, die die Zelle im Raster finden. Jedes Feld ist eine Ganzzahl, die die Spaltenposition und Elementposition einer Zelle angibt. Für andere Komponenten als DataGrid ist der Wert von columnIndex immer 0. Beispiel In diesem Beispiel wird dataProvider eines DataGrid aus einer Zelle bearbeitet: var index = getCellIndex(); var colName = listOwner.getColumnAt(index.columnIndex).columnName; listOwner.dataProvider.editField(index.itemIndex, colName, someVal); CellRenderer.getPreferredHeight() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.getPreferredHeight() Parameter Keine. Rückgaben Die korrekte Höhe der Zelle. Beschreibung Methode; die bevorzugte Höhe einer Zelle. Dies ist besonders wichtig, um die richtige Texthöhe innerhalb der Zelle zu erlangen. Wenn Sie diesen Wert höher als die rowHeight-Eigenschaft der Komponente setzen, ragen die Zellen oben und unten über die Zeilen hinaus. 94 Kapitel 4: Komponenten-Referenz Beispiel In diesen Beispiel wird der Wert 20 zurückgegeben, wodurch angegeben wird, dass die Zelle 20 Pixel hoch ist: function getPreferredHeight(Void) :Number { return 20; } CellRenderer.getPreferredWidth() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.getPreferredWidth() Parameter Keine. Rückgaben Keine. Beschreibung Methode; die bevorzugte Breite einer Zelle. Wenn Sie mehr Breite festlegen, als der Komponente zur Verfügung steht, wird die Zelle möglicherweise abgeschnitten. Beispiel In diesem Beispiel wird der Wert 3 zurückgegeben, wodurch angegeben wird, dass die Zelle dreimal größer als die Länge des Strings ist, der von ihr wiedergegeben wird: function getPreferredWidth(Void) : Number { return meinString.length*3; } CellRenderer.listOwner Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.listOwner CellRenderer-API 95 Beschreibung Eigenschaft; ein Verweis auf die Liste, die die Zelle enthält. Bei dieser Liste kann es sich um DataGrid, Tree oder List handeln. Beispiel In diesem Beispiel wird das in der Liste ausgewählte Element in einer Zelle gefunden: var s = listOwner.selectedItem; CellRenderer.setSize() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.setSize(width, height) Parameter width Eine Zahl, die die Breite angibt, mit der die Komponente angeordnet werden soll. height Eine Zahl, die die Höhe angibt, mit der die Komponente angeordnet werden soll. Rückgaben Keine. Beschreibung Methode; enthält die Information für die Listenzellen, mit welcher Größe diese anzuordnen sind. Das Layout sollte vom CellRenderer durchgeführt werden, sodass dieses in den angegebenen Bereich passt, ansonsten ragt die visuelle Anzeige der Zelle möglicherweise über andere Listenbereiche hinaus und erscheint unterbrochen. Beispiel In diesem Beispiel wird die Größe eines Bildes innerhalb der Zelle angepasst, damit dieses in die durch die Liste festgelegte Grenzen passt: function setSize(w:Number, h:Number) : Void { image._width = w-2; image._height = w-2; image._x = image._y = 1; } 96 Kapitel 4: Komponenten-Referenz CellRenderer.setValue() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung componentInstance.setValue(suggested, item, selected) Parameter suggested Ein Wert, der ggf. für den CellRenderer-Text zu verwenden ist. Ein Objekt, das das gesamte wiederzugebende Element darstellt. Der CellRenderer kann beliebige Eigenschaften dieses Objekts, die zur Wiedergabe benötigt werden, verwenden. item Ein Boolescher Wert, der angibt, ob die Zeile, in der sich die Zelle befindet, ausgewählt ist (true) oder nicht (false). selected Rückgaben Keine. Beschreibung Methode; übernimmt die angegebenen Werte und erstellt eine Darstellung dieser innerhalb der Zelle. Dadurch wird jeglicher Unterschied beseitigt, der zwischen dem, was in der Zelle dargestellt wurde, und dem, was in der Zelle für das neue Element dargestellt werden muss, besteht. Beachten Sie, dass jede Zelle während Ihrer Existenz zahlreiche Werte in der Liste darstellen kann. Dies ist die wichtigste Methode jedes CellRenderers. Beispiel In diesem Beispiel wird ein Bild in eine Loader-Komponente innerhalb der Zelle geladen, abhängig vom übergebenen Wert: function setValue(suggested, item, selected) : Void { //Loader leeren loader.contentPath = undefined; // die Liste verfügt über URLs für unterschiedliche Bilder in ihrem // Datenprovider if (suggested!=undefined) loader.contentPath = suggested; } CellRenderer-API 97 CheckBox-Komponente Kontrollkästchen sind quadratische Felder, die ausgewählt werden können bzw. deren Auswahl aufgehoben werden kann. Ausgewählte Kontrollkästchen werden durch Häkchen gekennzeichnet. Kontrollkästchen können mit einem Beschriftungstext versehen werden, der wahlweise links, rechts, über oder unter dem Kontrollkästchen positioniert werden kann. Kontrollkästchen können in der Anwendung aktiviert und deaktiviert werden. Wenn der Anwender auf die Beschriftung eines aktivierten Kontrollkästchens klickt, erhält dieses den Eingabefokus und wird im gedrückten Zustand angezeigt. Wenn der Mauszeiger bei gedrückter Maustaste den Begrenzungsbereich eines Kontrollkästchens oder des zugehörigen Beschriftungstexts verlässt, wird die Komponente wieder im ursprünglichen Zustand angezeigt und behält den Eingabefokus. Der Status eines Kontrollkästchens ändert sich erst, wenn die Maustaste über der Komponente losgelassen wird. Darüber hinaus gibt es für Kontrollkästchen zwei deaktivierte Zustände (ausgewählt und nicht ausgewählt), in denen keine Interaktion per Maus oder Tastatur möglich ist. Deaktivierte Kontrollkästchen werden unabhängig von der Interaktion des Anwenders im deaktivierten Zustand angezeigt. Im deaktivierten Zustand reagiert die Schaltfläche nicht auf Maus- und Tastatureingaben. Eine CheckBox-Instanz erhält den Eingabefokus, wenn der Anwender darauf klickt oder die Instanz mit der Tabulatortaste ansteuert. Eine CheckBox-Instanz mit Eingabefokus lässt sich mit den folgenden Tasten steuern: Taste Beschreibung <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Element. Leertaste Wählt die Komponente aus bzw. hebt die Auswahl der Komponente auf und löst das Ereignis click aus. <Tab> Verschiebt den Fokus auf das nächste Element. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Die Änderungen an den Parametern der einzelnen CheckBox-Instanzen, die beim Authoring im Eigenschafteninspektor oder im Komponenten-Inspektor vorgenommen werden, werden jeweils in einer Live-Vorschau angezeigt. Die einer Anwendung hinzugefügten CheckBox-Komponenten können Sie über das Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.CheckBoxAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. 98 Kapitel 4: Komponenten-Referenz Mit der CheckBox-Komponente arbeiten Kontrollkästchen gehören zu den grundlegenden Bestandteilen von Formularen und WebAnwendungen. Sie können Kontrollkästchen immer dann verwenden, wenn mehrere boolesche Werte (true oder false) abgefragt werden sollen, die sich nicht gegenseitig ausschließen. Ein Beispiel wäre ein Formular zur Erfassung persönlicher Angaben eines Kunden, in dem dieser über entsprechende Kontrollkästchen seine Hobbys auswählen kann. CheckBox-Parameter Jeder Instanz einer CheckBox-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: Mit label legen Sie den Beschriftungstext für das Kontrollkästchen fest. Der Standardwert ist defaultValue. Mit selected legen Sie den Ausgangszustand des Kontrollkästchens, true oder false, fest. Mit labelPlacement legen Sie die Ausrichtung des Beschriftungstexts in Bezug zum Kontrollkästchen fest. Diesem Parameter können die vier Werte left (links), right (rechts), top (oben) und bottom (unten) zugewiesen werden. Der Standardwert ist right. Weitere Informationen finden Sie unter CheckBox.labelPlacement. Sie können mit ActionScript-Eigenschaften, -Methoden und -Ereignissen diese und weitere Optionen für die CheckBox-Komponenten steuern. Weitere Informationen finden Sie unter (und somit die CheckBox-Klasse selbst) definieren. Anwendungen mit der CheckBox-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine CheckBoxKomponente hinzufügen. Die Komponente wird anhand eines Beispiels für ein Abfrageformular einer Online-Partnervermittlung erläutert. Die Kunden können mit Hilfe dieses Formulars die Datenbank nach möglichen Partnern durchsuchen. Mit dem Kontrollkästchen Alter eingrenzen kann der Suchvorgang auf Partner beschränkt werden, die bestimmten Altersvorgaben entsprechen. Wenn das Kontrollkästchen Alter eingrenzen ausgewählt wird, kann der Kunde das gewünschte Mindest- und Höchstalter in die entsprechenden Textfelder eingeben. Diese Textfelder sind nur verfügbar, wenn die Option Alter eingrenzen ausgewählt ist. Führen Sie die folgenden Schritte aus, um eine Anwendung mit der CheckBox-Komponente zu erstellen: 1 Ziehen Sie zwei TextInput-Komponenten aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor die Instanznamen minimumAge und maximumAge ein. 3 Ziehen Sie eine CheckBox-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 4 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: ■ ■ Geben Sie als Instanznamen restrictAge ein. Geben Sie Restrict Age als Wert für den Parameter label ein. CheckBox-Komponente 99 5 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: restrictAgeListener = new Object(); restrictAgeListener.click = function (evt){ minimumAge.enabled = evt.target.selected; maximumAge.enabled = evt.target.selected; } restrictAge.addEventListener("click", restrictAgeListener); Durch diesen Code wird eine Ereignisprozedur click erstellt, die die bereits auf der Bühne platzierten Textfeldkomponenten minimumAge und maximumAge aktiviert und deaktiviert. Weitere Informationen zum Ereignis click finden Sie unter CheckBox.click. Weitere Informationen zur TextInput-Komponente finden Sie unter „TextInput-Komponente“ auf Seite 569. Die CheckBox-Komponente anpassen CheckBox-Komponenten können sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit können Sie hierzu die Methode setSize() (UIObject.setSize()) sowie die entsprechenden Eigenschaften und Methoden der CheckBoxKlasse verwenden (siehe (und somit die CheckBox-Klasse selbst) definieren). Wenn die Größe eines Kontrollkästchen geändert wird, ändert sich nur die Größe der Begrenzungsbox; die Größe des Beschriftungstexts und des Kontrollkästchensymbols bleibt gleich. Die Begrenzungsbox einer CheckBox-Instanz ist nicht sichtbar. Sie markiert zugleich den Kollisionsbereich der Instanz. Wenn Sie eine Instanz vergrößern, vergrößert sich auch der Kollisionsbereich. Wenn der Platz innerhalb der Begrenzungsbox nicht für die Beschriftung ausreicht, wird diese unvollständig angezeigt. Stile für die CheckBox-Komponente verwenden Durch Zuweisen von Stileigenschaften können Sie die Gestaltung einer CheckBox-Instanz ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die CheckBox-Komponente unterstützt die folgenden Kranz-Stile: 100 Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil: „normal“ oder „italic“. Kapitel 4: Komponenten-Referenz Stil Beschreibung fontWeight Die Schriftstärke: „normal“ oder „bold“. textDecoration Die Textauszeichnung: „none“ oder „underline“. Skins für die CheckBox-Komponente verwenden Die CheckBox-Komponente verwendet für die Darstellung der Schaltflächenzustände Symbole aus dem Bedienfeld Bibliothek. Sie können der CheckBox-Komponente beim Authoring Skins zuweisen, indem Sie die Symbole im Bedienfeld Bibliothek anpassen. Die Skins für die CheckBox-Komponente befinden sich im Ordner Flash UI Components 2/Themes/ MMDefault/CheckBox Assets/states in der Bibliothek der Datei HaloTheme.fla oder der Datei SampleTheme.fla. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Für CheckBox-Komponenten sind die folgenden Skin-Eigenschaften verfügbar: Eigenschaft Beschreibung falseUpSkin Up-Status (Schaltfläche nicht geklickt). Der Standardwert ist RectBorder. falseDownSkin Pressed-Status (Schaltfläche geklickt). Der Standardwert ist RectBorder. falseOverSkin Over-Status (Mauszeiger über der Schaltfläche). Der Standardwert ist RectBorder. falseDisabledSkin Disabled-Status (Schaltfläche deaktiviert). Der Standardwert ist RectBorder. trueUpSkin Toggle-Status (Schaltfläche mit Umschaltfunktion). Der Standardwert ist RectBorder. trueDownSkin Pressed-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. trueOverSkin Over-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. trueDisabledSkin Disabled-Status bei Toggle-Schaltflächen. Der Standardwert ist RectBorder. (und somit die CheckBox-Klasse selbst) definieren Vererbung UIObject > UIComponent > SimpleButton > Button > CheckBox ActionScript-Klassenname mx.controls.CheckBox Mit Hilfe der Eigenschaften der CheckBox-Klasse können Sie Kontrollkästchen zur Laufzeit Beschriftungstexte zuweisen und wahlweise links oder rechts vom Kontrollkästchen bzw. darüber oder darunter positionieren. Per ActionScript zugewiesene Eigenschaften der CheckBox-Klasse haben Vorrang vor gleichnamigen Parametern, die im Bedienfeld Eigenschafteninspektor oder KomponentenInspektor festgelegt werden. CheckBox-Komponente 101 Die CheckBox-Komponente verwendet ein mit dem FocusManager gezeichnetes, angepasstes Rechteck mit abgerundeten Ecken, das das standardmäßige Fokus-Rechteck von Flash Player ersetzt. Weitere Informationen finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.CheckBox.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineCheckBoxInstance.version);. Übersicht: Methoden der CheckBox-Klasse Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der CheckBox-Klasse Eigenschaft Beschreibung CheckBox.label Gibt den Text an, der neben dem Kontrollkästchen als Beschriftung angezeigt wird. CheckBox.labelPlacement Gibt die Ausrichtung des Beschriftungstexts in Bezug zum Kontrollkästchen an. CheckBox.selected Gibt an, ob das Kontrollkästchen ausgewählt (true) oder nicht ausgewählt (false) ist. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der CheckBox-Klasse Ereignis Beschreibung CheckBox.click Wird ausgelöst, wenn die Maustaste über einer Schaltflächeninstanz losgelassen wird. Erbt alle Ereignisse von UIObject und UIComponent. CheckBox.click Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 102 Kapitel 4: Komponenten-Referenz Verwendung Verwendung 1: on(click){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.click = function(eventObject){ ... } checkBoxInstance.addEventListener("click", listenerObject) Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn die Maustaste über dem Kontrollkästchen gedrückt (losgelassen) oder wenn das Kontrollkästchen den Fokus hat und die Leertaste betätigt wird. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der CheckBox-Komponente zugewiesen werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code dem Kontrollkästchen meineCheckBox zugewiesen wird, wird „_level0.meineCheckBox“ an das Ausgabebedienfeld gesendet: on(click){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (checkBoxInstance) setzt ein Ereignis (in diesem Fall click) ab, und das Ereignis reagiert auf eine Funktion (auch als Handler bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject). Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Das Ereignisobjekt verfügt über einen Satz von Eigenschaften mit Informationen zum Ereignis. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode addEventListener() (siehe UIEventDispatcher.addEventListener()) für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) CheckBox-Komponente 103 Beispiel In diesem Beispiel, das einem Bild in der Zeitleiste zugewiesen ist, wird eine Meldung an das Ausgabebedienfeld gesendet, wenn auf eine Schaltfläche mit der Bezeichnung checkBoxInstance geklickt wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das click-Ereignis des Listener-Objekts definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts entspricht der Komponente, die das Ereignis erzeugt (in diesem Fall checkBoxInstance). Der Zugriff auf die Eigenschaft CheckBox.selected erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode addEventListener() durch checkBoxInstance aufgerufen; dabei werden das Ereignis click und das Listener-Objekt form als Parameter übergeben: form = new Object(); form.click = function(eventObj){ trace("Die gewählte Eigenschaft wurde geändert in " + eventObj.target.selected); } checkBoxInstance.addEventListener("click", form); Im folgenden Codebeispiel wird ebenfalls beim Klicken auf checkBoxInstance eine Meldung an das Ausgabebedienfeld gesendet. Die on()-Prozedur muss checkBoxInstance direkt zugewiesen werden: on(click){ trace("Klick auf CheckBox-Komponente"); } Siehe auch UIEventDispatcher.addEventListener() CheckBox.label Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung checkBoxInstance.label Beschreibung Eigenschaft; gibt den Beschriftungstext für das Kontrollkästchen an. Standardmäßig erscheint die Bezeichnung rechts neben dem Kontrollkästchen. Diese Eigenschaft hat Vorrang vor einem Beschriftungsparameter, der im Bedienfeld mit den Parametern für den Clip angegeben wird. 104 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird der Text festgelegt, der neben der CheckBox-Komponente angezeigt wird, und der Wert an das Ausgabebedienfeld gesendet: checkBox.label = "Aus Liste entfernen"; trace(checkBox.label) Siehe auch CheckBox.labelPlacement CheckBox.labelPlacement Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung checkBoxInstance.labelPlacement Beschreibung Eigenschaft; eine Zeichenfolge, die die Position der Beschriftung in Bezug zum Kontrollkästchen angibt. Im Folgenden sind die vier zulässigen Werte angegeben (die gepunkteten Linien stehen für den Begrenzungsbereich einer Komponente. Sie sind in einem Dokument nicht sichtbar): • right Das Kontrollkästchen wird in der oberen linken Ecke des Begrenzungsbereichs positioniert. Die Beschriftung befindet sich rechts vom Kontrollkästchen. Dies ist der Standardwert. • left • bottom Die Beschriftung befindet sich unterhalb des Kontrollkästchens. Die Gruppe aus Kontrollkästchen und Beschriftung wird horizontal und vertikal zentriert. • top Das Kontrollkästchen wird in der oberen rechten Ecke des Begrenzungsbereichs positioniert. Die Beschriftung befindet sich links vom Kontrollkästchen. Die Beschriftung befindet sich oberhalb des Kontrollkästchens. Die Gruppe aus Kontrollkästchen und Beschriftung wird horizontal und vertikal zentriert. Sie können den Begrenzungsbereich einer Komponente mit dem Befehl Transformieren oder zur Laufzeit mit der Eigenschaft UIObject.setSize() ändern. Weitere Informationen finden Sie unter „Die CheckBox-Komponente anpassen“ auf Seite 100. CheckBox-Komponente 105 Beispiel Im folgenden Beispiel wird der Beschriftungstext links vom Kontrollkästchen positioniert: checkBox_mc.labelPlacement = "left"; Siehe auch CheckBox.label CheckBox.selected Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung checkBoxInstance.selected Beschreibung Eigenschaft; ein boolescher Wert, mit dem das Kontrollkästchen ausgewählt (true) bzw. die Auswahl des Kontrollkästchens aufgehoben (false) wird. Beispiel Im folgenden Beispiel wird die Instanz checkbox1 ausgewählt: checkbox1.selected = true; ComboBox-Komponente Ein Kombinationsfeld kann statisch oder bearbeitbar sein. Statische Kombinationsfelder ermöglichen dem Anwender die Auswahl einer einzelnen Option aus einer Dropdown-Liste. Bearbeitbare Kombinationsfelder ermöglichen dem Benutzer wahlweise die direkte Eingabe von Text in ein Textfeld oberhalb der Liste oder die Auswahl einer Option aus einer Dropdown-Liste. Wenn die Dropdown-Liste über den unteren Dokumentrand hinausreicht, wird sie nach oben statt nach unten geöffnet. Ein Kombinationsfeld setzt sich aus drei Komponenten zusammen: einer Button-Komponente, einer TextInput-Komponente und einer List-Komponente. Wenn in der Liste eine Auswahl getroffen wird, wird die Bezeichnung der Auswahl in das Textfeld oben im Kombinationsfeld kopiert. Dabei spielt es keine Rolle, ob die Auswahl mit der Maus oder über die Tastatur durchgeführt wurde. 106 Kapitel 4: Komponenten-Referenz Eine ComboBox-Komponente erhält den Fokus, wenn auf das Textfeld oder die Schaltfläche geklickt wird. Wenn eine ComboBox-Komponente den Fokus hat und bearbeitbar ist, werden alle Tastatureingaben an das Textfeld übermittelt und entsprechend den Regeln der TextInputKomponente verarbeitet (siehe „TextInput-Komponente“ auf Seite 569). Davon ausgenommen sind die folgenden Tastenkombinationen: Taste Beschreibung <Strg>+<Nach-unten> Öffnet die Dropdown-Liste und setzt den Fokus auf die Liste. <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Objekt. <Tab> Verschiebt den Fokus auf das nächste Objekt. Wenn eine ComboBox-Komponente den Fokus hat und statisch ist, wird durch alphanumerische Tastatureingaben die Auswahl innerhalb der Dropdown-Liste auf das nächste Element mit dem entsprechenden Anfangsbuchstaben nach oben bzw. unten verschoben. Statische Kombinationsfelder können darüber hinaus mit den folgenden Tasten gesteuert werden: Taste Beschreibung <Strg>+<Nach-unten> Öffnet die Dropdown-Liste und setzt den Fokus auf die Liste. <Strg>+<Nach-oben> Schließt die Dropdown-Liste, wenn diese in den selbstständigen und Browser-Versionen des Flash-Players geöffnet ist. <Nach-unten> Verschiebt die Auswahl um ein Element nach unten. <Ende> Verschiebt die Auswahl an das Ende der Liste. <Esc> Schließt die Dropdown-Liste und gibt den Fokus zurück an das Kombinationsfeld im Filmtestmodus. Eingabetaste Schließt die Dropdown-Liste und gibt den Fokus zurück an das Kombinationsfeld. <Pos 1> Verschiebt die Auswahl an den Anfang der Liste. Bild-ab-Taste Verschiebt die Auswahl um eine Seite nach unten. Bild-auf-Taste Verschiebt die Auswahl um eine Seite nach oben. <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Objekt. <Tab> Verschiebt den Fokus auf das nächste Objekt. ComboBox-Komponente 107 Wenn das Dropdown-Listenfeld einer ComboBox-Komponente den Fokus hat, wird durch alphanumerische Tastatureingaben die Auswahl innerhalb der Dropdown-Liste auf das nächste Element mit dem entsprechenden Anfangsbuchstaben nach oben bzw. unten verschoben. Dropdown-Listenfelder können darüber hinaus mit den folgenden Tasten gesteuert werden: Taste Beschreibung <Strg>+<Nach-oben> Wenn die Dropdown-Liste geöffnet ist, wird sie geschlossen und das Textfeld erhält wieder den Fokus in den selbstständigen und Browser-Versionen des Flash Players. <Nach-unten> Verschiebt die Auswahl um ein Element nach unten. <Ende> Die Einfügemarke wird zum Ende des Textfelds verschoben. Eingabetaste Wenn die Dropdown-Liste geöffnet ist, wird sie geschlossen und das Textfeld erhält wieder den Fokus. <Esc> Wenn die Dropdown-Liste geöffnet ist, wird sie im Filmtestmodus geschlossen und das Textfeld erhält wieder den Fokus. <Pos 1> Die Einfügemarke wird zum Anfang des Textfelds verschoben. Bild-ab-Taste Verschiebt die Auswahl um eine Seite nach unten. Bild-auf-Taste Verschiebt die Auswahl um eine Seite nach oben. <Tab> Verschiebt den Fokus auf das nächste Objekt. <Umschalt>-<Ende> Wählt den Text von der Einfügemarke bis zur Endposition aus. <Umschalt>-<Pos 1> Wählt den Text von der Einfügemarke bis zur ersten Position aus. <Umschalt>-<Tab> Verschiebt den Fokus auf das vorherige Objekt. <Nach-oben> Verschiebt die Auswahl um ein Element nach oben. Hinweis: Die Seitengröße beim Blättern innerhalb der Dropdown-Liste mit der Bild-auf-Taste und Bild-ab-Taste entspricht der Anzahl der Elemente, die in den angezeigten Ausschnitt passen, minus eins. Beispiel: Bei einer zehnzeiligen Dropdown-Liste werden beim Durchlaufen mit der Bild-abTaste die Elemente 0 bis 9, dann die Elemente 9 bis 18, dann die Elemente 18 bis 27 angezeigt usw. Die jeweils letzte angezeigte Zeile wird also immer zur ersten angezeigten Zeile der nächsten Seite. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Die Änderungen an den Parametern der einzelnen ComboBox-Instanzen, die beim Authoring im Eigenschafteninspektor oder im Komponenten-Inspektor vorgenommen werden, werden jeweils in einer Live-Vorschau angezeigt. In der Live-Vorschau wird allerdings die Dropdown-Liste nicht geöffnet, und das erste Element wird hier als ausgewähltes Element angezeigt. Die einer Anwendung hinzugefügten ComboBox-Komponenten können Sie über das Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.ComboBoxAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. 108 Kapitel 4: Komponenten-Referenz Mit der ComboBox-Komponente arbeiten Sie können die ComboBox-Komponente in Formularen und Anwendungen verwenden, in denen ein Element aus einer Liste auszuwählen ist. Ein Beispiel wäre ein Formular zur Eingabe der Anschrift, in dem der Kunde die Region seines Wohnorts über eine Dropdown-Liste auswählt. Mit bearbeitbaren Kombinationsfeldern lassen sich auch komplexere Dateneingaben erfassen. Ein Beispiel hierfür wäre ein Formular zur Anforderung einer Wegbeschreibung, bei dem Ausgangsund Zielort über ein bearbeitbares Kombinationsfeld eingegeben werden. Mit Hilfe der Dropdown-Liste könnten sich dabei bei früheren Anfragen eingetragene Angaben abrufen lassen. ComboBox-Parameter Jeder Instanz einer ComboBox-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: Mit editable legen Sie fest, ob die ComboBox-Komponente bearbeitbar (true) oder nur auswählbar (false) ist. Der Standardwert lautet false. Mit labels weisen Sie der ComboBox-Komponente ein Array aus Textwerten zu. Mit data weisen Sie den einzelnen Elementen der ComboBox-Komponente Datenwerte zu. Bei dem Parameter data handelt es sich um ein Array. Mit rowCount legen Sie die maximale Anzahl der Elemente fest, die ohne Verwendung der Bildlaufleiste gleichzeitig angezeigt werden können. Der Standardwert ist 5. Sie können diese und weitere Optionen für ComboBox-Instanzen über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter ComboBox-Klasse. Anwendungen mit der ComboBox-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine ComboBoxKomponente hinzufügen. In diesem Beispiel wird im Kombinationsfeld eine Liste mit Städten angezeigt, die über das Dropdown-Listenfeld ausgewählt werden können. Führen Sie die folgenden Schritte aus, um eine Anwendung mit einer ComboBoxKomponente zu erstellen: 1 Ziehen Sie eine ComboBox-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Wählen Sie das Werkzeug Transformieren aus, und passen Sie die Größe der Komponente auf der Bühne an. Die Größe des Kombinationsfelds auf der Bühne kann nur beim Authoring geändert werden. Normalerweise braucht nur die Breite des Kombinationsfelds entsprechend der Länge der Einträge angepasst zu werden. 3 Wählen Sie das Kombinationsfeld aus, und geben Sie im Eigenschafteninspektor den Instanznamen comboBox ein. 4 Führen Sie im Bedienfeld Komponenten-Inspektor oder im Eigenschafteninspektor die folgenden Schritte aus: ■ Geben Sie München, Hamburg und Stuttgart als Werte für den Parameter label ein. Doppelklicken Sie auf das Parameterfeld label, um das Dialogfeld Werte zu öffnen. Klicken Sie anschließend auf das Pluszeichen, um Elemente hinzuzufügen. ComboBox-Komponente 109 Geben Sie BY.swf, HH.swf und BW.swf als Werte für den Parameter data ein. Diese (imaginären) SWF-Dateien sollen im Beispiel geöffnet werden, wenn der Anwender eine Stadt aus dem Kombinationsfeld auswählt. 5 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: ■ form = new Object(); form.change = function (evt){ trace(evt.target.selectedItem.label); } comboBox.addEventListener("change", form); In der letzten Codezeile wird der ComboBox-Instanz die Ereignisprozedur change hinzugefügt. Weitere Informationen finden Sie unter ComboBox.change. Die ComboBox-Komponente anpassen Sie können ComboBox-Komponenten beim Authoring horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Text, der zu lang ist, um in das Kombinationsfeld zu passen, wird unvollständig angezeigt. Sie müssen die Größe des Kombinationsfelds beim Authoring entsprechend der Länge des Beschriftungstexts anpassen. Bei bearbeitbaren Kombinationsfeldern umfasst der Kollisionsbereich nur die Schaltfläche; das Textfeld gehört nicht zum Kollisionsbereich. Bei statischen Kombinationsfeldern umfasst der Kollisionsbereich die Schaltfläche und das Textfeld. Stile für die ComboBox-Komponente verwenden Durch Zuweisen von Stileigenschaften können Sie die Gestaltung einer ComboBox-Komponente ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Für Kombinationsfelder gibt es zwei eigene Stile. Darüber hinaus übernehmen die einzelnen Elemente eines Kombinationsfelds (Schaltfläche, Textfeld, Dropdown-Liste) die Stile der jeweiligen Komponententypen: • Bei der Schaltfläche handelt es sich um eine Schaltflächeninstanz mit den entsprechenden • • 110 Stilen. (Weitere Informationen finden Sie unter „Stile für die Button-Komponente verwenden“ auf Seite 81.) Beim Text handelt es sich um eine TextInput-Instanz mit den entsprechenden Stilen. (Weitere Informationen finden Sie unter „Stile mit der TextInput-Komponente verwenden“ auf Seite 572.) Bei der Dropdown-Liste handelt es sich um eine List-Instanz mit den entsprechenden Stilen. (Weitere Informationen finden Sie unter „Stile mit der List-Komponente verwenden“ auf Seite 322.) Kapitel 4: Komponenten-Referenz Die ComboBox-Komponente unterstützt die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil: „normal“ oder „italic“. fontWeight Die Schriftstärke: „normal“ oder „bold“. textDecoration Die Textauszeichnung: „none“ oder „underline“. openDuration Die Anzahl der Millisekunden für das Einblenden des DropdownListenfelds. Der Standardwert ist 250. openEasing Eine Referenz auf eine Tweening-Funktion, die die Animation der Dropdown-Liste steuert. Standardmäßig wird eine Sinus-Animation verwendet. Eine Liste mit weiteren Formeln können Sie auf der Website von Robert Penner unter www.robertpenner.com/easing/ herunterladen. Skins für die ComboBox-Komponente verwenden Die ComboBox-Komponente verwendet für die Darstellung der Schaltflächenzustände Symbole aus dem Bedienfeld Bibliothek. Die ComboBox-Komponente verfügt über Skin-Variablen für die Pfeilschaltfläche nach unten. Darüber hinaus werden Bildlaufleisten- und Listen-Skins verwendet. Sie können der ComboBox-Komponente beim Authoring Skins zuweisen, indem Sie die Symbole im Bedienfeld Bibliothek anpassen und die Komponente als SWC neu exportieren. Die Skins für die ComboBox-Komponente befinden sich im Ordner Flash UI Components 2/ Themes/MMDefault/ComboBox Assets/states in der Bibliothek der Datei HaloTheme.fla oder SampleTheme.fla. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Die ComboBox-Komponente unterstützt die folgenden Skin-Eigenschaften: Eigenschaft Beschreibung ComboDownArrowDisabledName Nach-unten-Pfeil im Disabled-Status (Schaltfläche deaktiviert). Der Standardwert ist RectBorder. ComboDownArrowDownName Nach-unten-Pfeil im Down-Status (Schaltfläche geklickt). Der Standardwert ist RectBorder. ComboDownArrowUpName Nach-unten-Pfeil im Up-Status (Schaltfläche nicht geklickt). Der Standardwert ist RectBorder. ComboDownArrowOverName Nach-unten-Pfeil im Over-Status (Mauszeiger über der Schaltfläche). Der Standardwert ist RectBorder. ComboBox-Komponente 111 ComboBox-Klasse Vererbung UIObject > UIComponent > ComboBase > ComboBox ActionScript-Klassenname mx.controls.ComboBox Die ComboBox-Komponente setzt sich aus drei Unterkomponenten zusammen: Button, TextInput und List. Die APIs der einzelnen Unterkomponenten sind größtenteils direkt von der ComboBox-Komponente aus verfügbar und werden in den Tabellen mit den Methoden, Eigenschaften und Ereignissen der ComboBox-Klasse aufgelistet. Die Dropdown-Liste eines Kombinationsfelds wird entweder als Array- oder als DataProviderObjekt umgesetzt. Wenn Sie ein DataProvider-Objekt verwenden, verändert sich die Liste zur Laufzeit. Die Datenquelle einer ComboBox-Instanz kann dynamisch durch den Wechsel zu einem neuen Array- oder DataProvider-Objekt geändert werden. Die Elemente eines Kombinationsfelds werden anhand der Position indiziert; die Zählung der Indizes beginnt bei 0. Als Elemente können fungieren: • Grunddatentypen • Objekte mit den Eigenschaften label und data Hinweis: Ein Objekt kann mit der Eigenschaft ComboBox.labelFunction oder ComboBox.labelField die Eigenschaft label bestimmen. Elemente aller Grunddatentypen werden in Zeichenfolgen umgewandelt, sofern es sich bei dem verwendeten Datentyp nicht bereits um eine Zeichenfolge handelt. Bei Objekten als Elementen muss für die Eigenschaft label eine Zeichenfolge angegeben werden; für die Eigenschaft data kann ein beliebiger ActionScript-Wert angegeben werden. Bei der Übergabe von Elementen an Methoden der ComboBox-Komponente müssen die beiden Parameter label und data angegeben werden, die sich auf die oben genannten Eigenschaften beziehen. Methoden, die ein Element zurückgeben, geben dieses als Objekt zurück. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.ComboBox.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineComboBoxInstance.version);. Übersicht: Methoden der ComboBox-Klasse 112 Eigenschaft Beschreibung ComboBox.addItem() Fügt ein Element am Ende der Liste hinzu. ComboBox.addItemAt() Fügt ein Element am Ende der Liste mit dem angegebenen Index hinzu. ComboBox.close() Schließt die Dropdown-Liste. ComboBox.getItemAt() Gibt das Element an der angegebenen Indexposition zurück. ComboBox.open() Öffnet die Dropdown-Liste. Kapitel 4: Komponenten-Referenz Eigenschaft Beschreibung ComboBox.removeAll() Entfernt alle Elemente aus der Liste. ComboBox.removeItemAt() Entfernt das Element an der angegebenen Position aus der Liste. ComboBox.replaceItemAt() Ersetzt ein Element in der Liste durch ein anderes angegebenes Element. Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der ComboBox-Klasse Eigenschaft Beschreibung ComboBox.dataProvider Das Datenmodell für die Elemente in der Liste. ComboBox.dropdown Gibt eine Referenz auf die in der ComboBox enthaltene ListKomponente zurück. ComboBox.dropdownWidth Die Breite der Dropdown-Liste in Pixeln. ComboBox.editable Gibt an, ob die ComboBox bearbeitbar ist. ComboBox.labelField Gibt an, welches Datenfeld als Bezeichnung für die Dropdown-Liste verwendet wird. ComboBox.labelFunction Gibt eine Funktion zur Berechnung des Bezeichnungsfelds für die Dropdown-Liste an. ComboBox.length Schreibgeschützte Eigenschaft. Die Länge der Dropdown-Liste. ComboBox.rowCount Die maximale Anzahl der gleichzeitig angezeigten Listenelemente. ComboBox.selectedIndex Der Index des ausgewählten Elements in der Dropdown-Liste. ComboBox.selectedItem Der Wert des ausgewählten Elements in der Dropdown-Liste. ComboBox.text Die Textzeichenfolge im Textfeld. ComboBox.textField Eine Referenz auf die TextInput-Komponente im Kombinationsfeld. ComboBox.value Der Wert des Textfelds (bearbeitbares Kombinationsfeld) oder der Dropdown-Liste (statisches Kombinationsfeld). Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der ComboBox-Klasse Ereignis Beschreibung ComboBox.change Broadcast, wenn sich der Wert des Kombinationsfelds durch Bedienvorgänge des Anwenders ändert. ComboBox.close Broadcast beim Ausblenden der Dropdown-Liste. ComboBox.enter Broadcast beim Betätigen der Eingabetaste. ComboBox.itemRollOut Broadcast, wenn der Mauszeiger von einem Element der DropdownListe weggezogen wird. ComboBox-Komponente 113 Ereignis Beschreibung ComboBox.itemRollOver Broadcast, wenn der Mauszeiger auf ein Element der DropdownListe gezogen wird. ComboBox.open Broadcast beim Einblenden der Dropdown-Liste. ComboBox.scroll Broadcast beim Scrollen in der Dropdown-Liste. Erbt alle Ereignisse von UIObject und UIComponent. ComboBox.addItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: comboBoxInstance.addItem(label[, data]) Verwendung 2: comboBoxInstance.addItem({label:label[, data:data]}) Verwendung 3: comboBoxInstance.addItem(obj); Parameter label data obj Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element mit beliebigem Datentyp. Dieser Parameter ist optional. Ein Objekt mit einer label-Eigenschaft und einer optionalen data-Eigenschaft. Rückgaben Der Index des hinzugefügten Elements. Beschreibung Methode; fügt ein neues Element am Ende des Listenfelds hinzu. Beispiel Mit dem folgenden Code wird ein Element zur Instanz meineComboBox hinzugefügt: meineComboBox.addItem("Hinzugefügtes Element"); 114 Kapitel 4: Komponenten-Referenz ComboBox.addItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung comboBoxInstance.addItemAt(index, label[, data]) Parameter index Eine positive Zahl oder die Zahl 0 für die Position, an der das Element eingefügt wird (Index des neuen Elements). label data Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element mit beliebigem Datentyp. Dieser Parameter ist optional. Rückgaben Der Index des hinzugefügten Elements. Beschreibung Methode; fügt ein neues Element am Ende der Liste an der mit dem Parameter index angegebenen Position hinzu. Indizes, deren Wert größer ist als ComboBox.length, werden ignoriert. Beispiel Mit dem folgenden Code wird ein Element an Index 3, also an der vierten Position der Liste des Kombinationsfelds eingefügt (der Index 0 entspricht der ersten Position): meineBox.addItemAt(3, "Viertes Element"); ComboBox.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(change){ // Hier Code eingeben } ComboBox-Komponente 115 Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn sich der Wert des Kombinationsfelds durch Bedienvorgänge des Anwenders ändert. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(change){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode addEventListener() (siehe UIEventDispatcher.addEventListener()) für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird der Instanzname der Komponente, die das Ereignis change generiert hat, an das Ausgabebedienfeld gesendet: form.change = function(eventObj){ trace("Wert geändert in " + eventObj.target.value); } meineCombo.addEventListener("change", form); Siehe auch UIEventDispatcher.addEventListener() 116 Kapitel 4: Komponenten-Referenz ComboBox.close() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.close() Parameter Keine. Rückgaben Keine. Beschreibung Methode; schließt die Dropdown-Liste. Beispiel Im folgenden Beispiel wird die Dropdown-Liste des Kombinationsfelds meineBox geschlossen: meineBox.close(); Siehe auch ComboBox.open() ComboBox.close Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(close){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.close = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("close", listenerObject) ComboBox-Komponente 117 Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn die Liste des Kombinationsfelds eingeklappt wird. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(close){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall close) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, wenn die Dropdown-Liste geschlossen wird: form.close = function(){ trace("Das Kombinationsfeld wurde geschlossen"); } meineCombo.addEventListener("close", form); Siehe auch UIEventDispatcher.addEventListener() ComboBox.dataProvider Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung comboBoxInstance.dataProvider 118 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; das Datenmodell der in der Liste angezeigten Elemente. Als Wert für diese Eigenschaft kann ein Array oder ein Objekt verwendet werden, das die DataProvider-Schnittstelle implementiert. Der Standardwert ist [] (leeres Array). Hierbei handelt es sich um eine Eigenschaft der List-Komponente, auf die jedoch von ComboBox-Instanzen aus direkt zugegriffen werden kann. Die List-Komponente und andere datenorientierte Komponenten erweitern den Methodenvorrat des Prototyps des Array-Objekts, sodass dieser der DataProvider-Schnittstelle entspricht (weitere Informationen finden Sie im Abschnitt zu DataProvider.as). Arrays, die zeitgleich mit einer Liste existieren, verfügen automatisch über alle erforderlichen Methoden (addItem(), getItemAt() usw.) für die Verwendung als Listenmodell. Diese Arrays können somit für Broadcasts von Modelländerungen an mehrere Komponenten verwendet werden. Wenn das Array Objekte enthält, wird anhand der Eigenschaft labelField oder labelFunction ermittelt, welche Teile des Elements angezeigt werden. Der Standardwert ist label. Wenn also ein Feld dieses Namens vorhanden ist, wird es angezeigt; andernfalls wird eine Liste aller Felder mit Kommas als Trennzeichen angezeigt. Hinweis: Wenn alle Indizes des Arrays Zeichenfolgen und keine Objekte enthalten, können die Elemente in der Liste nicht sortiert werden und der Auswahlstatus kann nicht dauerhaft gespeichert werden. Die Auswahl geht bei jedem Sortiervorgang verloren. Als Datenprovider für Listen eignen sich alle Instanzen, die die DataProvider-Schnittstelle implementierten. Hierzu gehören unter anderem Flash Remoting RecordSets und Firefly DataSets. Beispiel Im folgenden Beispiel werden die Elemente einer Dropdown-Liste aus einem Array aus Zeichenfolgen übernommen: comboBox.dataProvider = ["Postzustellung","Paketdienst","Paketdienst mit Expresszustellung"]; Im folgenden Beispiel wird ein Datenprovider-Array erstellt und der Eigenschaft dataProvider zugewiesen: meinDP = new Array(); list.dataProvider = meinDP; for (var i=0; i<accounts.length; i++) { // Diese Änderungen des DataProvider werden per Broadcast an die Liste // übermittelt meinDP.addItem({ label: accounts[i].name, data: accounts[i].accountID }); } ComboBox.dropdown Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. ComboBox-Komponente 119 Verwendung meineComboBox.dropdown Beschreibung Eigenschaft (schreibgeschützt); gibt eine Referenz auf die im Kombinationsfeld enthaltene ListKomponente zurück. Die List-Unterkomponente wird erst dann im Kombinationsfeld erzeugt, wenn sie angezeigt werden muss. Wenn Sie jedoch auf die Eigenschaft dropdown zugreifen, wird die Liste unmittelbar erstellt. Siehe auch ComboBox.dropdownWidth ComboBox.dropdownWidth Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.dropdownWidth Beschreibung Eigenschaft; die maximale Breite der Dropdown-Liste in Pixeln. Der Standardwert ist die Breite der ComboBox-Komponente (TextInput-Instanz plus SimpleButton-Instanz). Beispiel Im folgenden Codebeispiel wird dropdownWidth auf 150 Pixel gesetzt: meineComboBox.dropdownWidth = 150; Siehe auch ComboBox.dropdown ComboBox.editable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.editable 120 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; gibt an, ob das Kombinationsfeld bearbeitbar (true) oder statisch (false) ist. Bei bearbeitbaren Kombinationsfeldern können auch nicht in der Dropdown-Liste enthaltene Werte in das Textfeld eingegeben werden. Bei nicht bearbeitbaren Kombinationsfeldern können nur die in der Dropdown-Liste enthaltenen Werte in das Textfeld eingegeben werden. Der Standardwert lautet false. Wenn Sie diese Eigenschaft auf true setzen, wird der Inhalt des Textfelds gelöscht. Außerdem wird der ausgewählte Index (und damit das ausgewählte Element) auf undefined gesetzt. Mit dem folgenden Code können Sie ein Kombinationsfeld bearbeitbar machen und dabei das ausgewählte Element beibehalten: var ix = meineComboBox.selectedIndex; meineComboBox.editable = true; // Löscht den Text im Textfeld meineComboBox.selectedIndex = ix; // Kopiert die Bezeichnung wieder ins // Textfeld Beispiel Mit dem folgenden Code wird meineComboBox zu einem bearbeitbaren Kombinationsfeld: meineComboBox.editable = true; ComboBox.enter Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(enter){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.enter = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("enter", listenerObject) Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn die Eingabetaste im Textfeld betätigt wird. Ein Broadcast für dieses Ereignis erfolgt nur bei bearbeitbaren Kombinationsfeldern. Bei diesem Ereignis handelt es sich um ein Ereignis der TextInput-Komponente, das über Kombinationsfelder ausgelöst wird. Weitere Informationen finden Sie unter TextInput.enter. ComboBox-Komponente 121 Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(enter){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall enter) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, wenn die Dropdown-Liste geschlossen wird: form.enter = function(){ trace("Eingabeereignis für Kombinationsfeld wurde ausgelöst"); } meineCombo.addEventListener("enter", form); Siehe auch UIEventDispatcher.addEventListener() ComboBox.getItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung comboBoxInstance.getItemAt(index) Parameter index Eine Zahl größer oder gleich 0 und kleiner als der Wert von ComboBox.length. Der Index des abzurufenden Elements. 122 Kapitel 4: Komponenten-Referenz Rückgaben Das Elementobjekt oder der Elementwert mit dem angegebenen Index. Wenn der Index außerhalb des gültigen Bereichs liegt, ist der Wert nicht definiert. Beschreibung Methode; ruft das Element an der angegebenen Indexposition ab. Beispiel Mit dem folgenden Code wird das Element mit der Indexposition 4 abgerufen: trace(meineBox.getItemAt(4).label); ComboBox.itemRollOut Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(itemRollOut){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.itemRollOut = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("itemRollOut", listenerObject) Ereignisobjekt Zusätzlich zu den Standardeigenschaften des Ereignisobjekts hat das Ereignis itemRollOut die folgende Eigenschaft: index. index ist die Nummer des Elements, von dem der Mauszeiger weggeführt wurde. Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn der Mauszeiger aus der Dropdown-Liste heraus bewegt wird. Bei diesem Ereignis handelt es sich um ein Ereignis der List-Komponente, das über Kombinationsfelder ausgelöst wird. Weitere Informationen finden Sie unter List.itemRollOut. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: ComboBox-Komponente 123 on(itemRollOut){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall itemRollOut) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die das Element angibt, über dem sich der Mauszeiger beim Verlassen der Dropdown-Liste befand: form.itemRollOut = function (eventObj) { trace("Beim Verlassen der Liste befand sich der Mauszeiger über Element " + eventObj.index + "."); } meineCombo.addEventListener("itemRollOut", form); Siehe auch ComboBox.itemRollOver, UIEventDispatcher.addEventListener() ComboBox.itemRollOver Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(itemRollOver){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.itemRollOver = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("itemRollOver", listenerObject) 124 Kapitel 4: Komponenten-Referenz Ereignisobjekt Zusätzlich zu den Standardeigenschaften des Ereignisobjekts hat das Ereignis itemRollOver die folgende Eigenschaft: index. index ist die Nummer des Elements, über dem sich der Mauszeiger befindet. Beschreibung Ereignis; Broadcast an alle registrierten Listener, wenn der Mauszeiger über die Elemente in der Dropdown-Liste bewegt wird. Bei diesem Ereignis handelt es sich um ein Ereignis der ListKomponente, das über Kombinationsfelder ausgelöst wird. Weitere Informationen finden Sie unter List.itemRollOver. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(itemRollOver){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall itemRollOver) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die die Indexnummer des Elements angibt, über dem sich der Mauszeiger befindet: form.itemRollOver = function (eventObj) { trace("Der Mauszeiger befindet sich über Element Nr. " + eventObj.index + "."); } meineCombo.addEventListener("itemRollOver", form); Siehe auch ComboBox.itemRollOut, UIEventDispatcher.addEventListener() ComboBox-Komponente 125 ComboBox.labelField Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.labelField Beschreibung Eigenschaft; der Name des Felds im dataProvider-Arrayobjekt, das als Bezeichnungsfeld verwendet wird. Bei dieser Eigenschaft handelt es sich um eine Eigenschaft der List-Komponente, die bei Instanzen der ComboBox-Komponente zur Verfügung steht. Weitere Informationen finden Sie unter List.labelField. Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird die Eigenschaft dataProvider auf ein Array aus Zeichenfolgen gesetzt und über die Eigenschaft labelField das Feld name als Bezeichnung für die DropdownListe zugewiesen: meineComboBox.dataProvider = [ {name:"Gerd", gender:"männlich"}, {name:"Susanne", gender:"weiblich"} ]; meineComboBox.labelField = "name"; Siehe auch List.labelFunction ComboBox.labelFunction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.labelFunction Beschreibung Eigenschaft; eine Funktion zur Berechnung der Bezeichnung eines dataProvider-Elements. Diese Funktion muss von Ihnen definiert werden. Der Standardwert ist undefined. 126 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird ein Datenprovider erstellt und anschließend eine Funktion definiert, die den Bezeichnungstext für die Dropdown-Liste angibt. meineComboBox.dataProvider = [ {firstName:"Norbert", lastName:"Petersen", age:"sehr jung"}, {firstName:"Gerd", lastName:"Groß", age:"jung"}, {firstName:"Christian", lastName:"Waldmeister", age:"alt"}, {firstName:"Gregor", lastName:"Jablonski", age:"sehr alt"} ]; meineComboBox.labelFunction = function(itemObj){ return (itemObj.lastName + ", " + itemObj.firstName); } Siehe auch List.labelField ComboBox.length Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.length Beschreibung Eigenschaft (schreibgeschützt); die Länge der Dropdown-Liste. Bei dieser Eigenschaft handelt es sich um eine Eigenschaft der List-Komponente, die bei Instanzen der ComboBox-Komponente zur Verfügung steht. Weitere Informationen finden Sie unter List.length. Der Standardwert ist 0. Beispiel Im folgenden Beispiel wird der Wert von length in einer Variablen gespeichert: dropdownItemCount = meineBox.length; ComboBox.open() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.open() Parameter Keine. ComboBox-Komponente 127 Rückgaben Keine. Beschreibung Eigenschaft; öffnet die Dropdown-Liste. Beispiel Mit dem folgenden Code wird die Dropdown-Liste für die Instanz combo1 geöffnet: combo1.open(); Siehe auch ComboBox.close() ComboBox.open Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(open){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.open = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("open", listenerObject) Beschreibung Ereignis; Broadcast an alle registrierten Listener beim Einblenden der Dropdown-Liste. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(open){ trace(this); } 128 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall open) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die die Indexnummer des Elements angibt, über dem sich der Mauszeiger befindet: form.open = function () { trace("Das Kombinationsfeld wurde mit dem Text " + meineBox.text + "geöffnet."); } meineBox.addEventListener("open", form); Siehe auch ComboBox.close, UIEventDispatcher.addEventListener() ComboBox.removeAll() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung comboBoxInstance.removeAll() Parameter Keine. Rückgaben Keine. Beschreibung Methode; entfernt alle Elemente aus der Liste. Bei dieser Methode handelt es sich um eine Methode der List-Komponente, die bei Instanzen der ComboBox-Komponente zur Verfügung steht. ComboBox-Komponente 129 Beispiel Mit dem folgenden Code wird die Liste gelöscht: meineCombo.removeAll(); Siehe auch ComboBox.removeItemAt(), ComboBox.replaceItemAt() ComboBox.removeItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.removeItemAt(index) Parameter Eine Zahl für die Position des Elements, das aus der Liste entfernt werden soll. Die Bezugsbasis für diesen Wert ist 0. index Rückgaben Ein Objekt; das aus der Liste entfernte Element (nicht definiert, wenn keine Elemente vorhanden sind). Beschreibung Methode; entfernt das Element an der angegebenen index-Position. Nachdem das mit dem Parameter index angegebene Element entfernt wurde, werden die verbleibenden Indexwerte entsprechend angepasst. Bei dieser Methode handelt es sich um eine Methode der ListKomponente, die bei Instanzen der ComboBox-Komponente zur Verfügung steht. Beispiel Mit dem folgenden Code wird das Element mit der Indexposition 3 entfernt: meineCombo.removeItemAt(3); Siehe auch ComboBox.removeAll(), ComboBox.replaceItemAt() ComboBox.replaceItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 130 Kapitel 4: Komponenten-Referenz Verwendung comboBoxInstance.replaceItemAt(index, label[, data]) Parameter index Eine positive Zahl oder die Zahl 0 für die Position, an der das Element eingefügt wird (Index des neuen Elements). label data Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element. Dieser Parameter ist optional. Rückgaben Keine. Beschreibung Methode; ersetzt den Inhalt des im Parameter index angegebenen Elements. Bei dieser Methode handelt es sich um eine Methode der List-Komponente, die bei Instanzen der ComboBoxKomponente zur Verfügung steht. Beispiel Im folgenden Beispiel wird der Inhalt des Elements an der dritten Indexposition geändert: meineCombo.replaceItemAt(3, "Neue Bezeichnung"); Siehe auch ComboBox.removeAll(), ComboBox.removeItemAt() ComboBox.rowCount Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.rowCount Beschreibung Eigenschaft; die maximale Anzahl der in der Dropdown-Liste angezeigten Reihen. Der Standardwert ist 5. Wenn die Anzahl der Elemente in der Dropdown-Liste dem Wert der Eigenschaft rowCount entspricht oder diesen übersteigt, wird die Größe der Liste geändert und erforderlichenfalls eine Bildlaufleiste eingeblendet. Wenn die Anzahl der Elemente in der Dropdown-Liste kleiner ist als der Wert der Eigenschaft rowCount, wird die Größe der Liste entsprechend angepasst. In diesem Punkt weicht das Verhalten von der List-Komponente ab, bei der immer die in der Eigenschaft rowCount festgelegte Zeilenanzahl angezeigt wird, auch wenn das Listenfeld dabei nicht vollständig durch die Elemente ausgefüllt wird. Bei negativen oder nicht ganzzahligen Werten ist das Verhalten nicht definiert. ComboBox-Komponente 131 Beispiel Im folgenden Beispiel wird die Anzahl der sichtbaren Zeilen im Kombinationsfeld auf höchstens 20 festgelegt: meineComboBox.rowCount = 20; ComboBox.scroll Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(scroll){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.scroll = function(eventObject){ // Hier Code eingeben } comboBoxInstance.addEventListener("scroll", listenerObject) Ereignisobjekt Neben den Standardeigenschaften für Ereignisobjekte verfügt das scroll-Ereignis über die zusätzliche Eigenschaft direction. Hierbei handelt es sich um eine Zeichenfolge mit dem Wert horizontal oder vertical, die die Richtung des Bildlaufs angibt. Bei Instanzen der ComboBox-Komponente ist der Wert von scroll immer vertical. Beschreibung Ereignis; Broadcast an alle registrierten Listener beim Scrollen in der Dropdown-Liste. Bei dieser Eigenschaft handelt es sich um eine Eigenschaft der List-Komponente, die bei Instanzen der ComboBox-Komponente zur Verfügung steht. Im ersten Beispiel wird eine on()-Prozedur verwendet, die direkt einer Instanz der ComboBoxKomponente zugewiesen werden muss. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn beispielsweise der folgende Code der Instanz meineBox der ComboBox-Komponente zugewiesen wird, wird „_level0.meineBox“ an das Ausgabebedienfeld gesendet: on(scroll){ trace(this); } 132 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (comboBoxInstance) setzt ein Ereignis (in diesem Fall scroll) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die die Indexnummer des beim Scrollen angesteuerten Elements angibt: form.scroll = function (eventObj) { trace("Das beim Scrollen angesteuerte Element hat die Indexnummer " + eventObj.target.vPosition + "."); } meineCombo.addEventListener("scroll", form); Siehe auch UIEventDispatcher.addEventListener() ComboBox.selectedIndex Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.selectedIndex Beschreibung Eigenschaft; der Index des ausgewählten Elements in der Dropdown-Liste. Der Standardwert ist 0. Durch Zuweisen dieser Eigenschaft wird die aktuelle Auswahl gelöscht, das angegebene Element ausgewählt und dessen Bezeichnung im Textfeld des Kombinationsfelds angezeigt. Wenn der angegebene Wert für selectedIndex außerhalb des gültigen Bereichs liegt, wird er ignoriert. Sobald Text in das Textfeld eines bearbeitbaren Kombinationsfelds eingegeben wird, wird selectedIndex auf undefined gesetzt. ComboBox-Komponente 133 Beispiel Mit dem folgenden Code wird das letzte Element der Liste ausgewählt: meineComboBox.selectedIndex = meineComboBox.length-1; Siehe auch ComboBox.selectedItem ComboBox.selectedItem Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.selectedItem Beschreibung Eigenschaft; der Wert des ausgewählten Elements in der Dropdown-Liste. Bei bearbeitbaren Kombinationsfeldern ist der Rückgabewert von selectedItem nicht definiert, wenn Text in das Textfeld eingegeben wird. Der Wert ist nur definiert, wenn ein Element aus der Dropdown-Liste ausgewählt oder der Wert per ActionScript zugewiesen wurde. Bei statischen Kombinationsfeldern ist der Wert von selectedItem immer gültig. Beispiel Im folgenden Beispiel wird das ausgewählte Element (selectedItem) angezeigt, wenn der Datenprovider Grunddatentypen enthält: var item = meineComboBox.selectedItem; trace("Sie haben das Element " + item + " ausgewählt."); Im folgenden Beispiel wird das ausgewählte Element (selectedItem) angezeigt, wenn der Datenprovider Objekte mit den Eigenschaften label und data enthält: var obj = meineComboBox.selectedItem; trace("Die Bezeichnung der gewählten Farbe lautet: " + obj.label); trace("Der Hexadezimalwert der gewählten Farbe ist: " + obj.data); Siehe auch ComboBox.dataProvider, ComboBox.selectedIndex ComboBox.text Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 134 Kapitel 4: Komponenten-Referenz Verwendung meineComboBox.text Beschreibung Eigenschaft; der Text im Textfeld. Bei bearbeitbaren Kombinationsfeldern kann dieser Wert abgefragt und zugewiesen werden. Bei statischen Kombinationsfeldern ist dieser Wert schreibgeschützt, d. h., er kann nur abgefragt werden. Beispiel Im folgenden Beispiel wird der aktuelle Wert der Eigenschaft text für ein bearbeitbares Kombinationsfeld zugewiesen: meineComboBox.text = "Zürich"; ComboBox.textField Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.textField Beschreibung Eigenschaft (schreibgeschützt); gibt eine Referenz auf die im Kombinationsfeld enthaltene TextInput-Komponente zurück. Mit dieser Eigenschaft können Sie auf die zugrunde liegende TextInput-Komponente und deren Eigenschaften zugreifen. Sie können damit beispielsweise den Auswahlstatus des Textfelds ändern oder bei der Eingabe nur bestimmte Zeichen zulassen. Beispiel Im folgenden Codebeispiel wird das Textfeld meineComboBox so angepasst, dass nur Zahlen eingegeben werden können: meineComboBox.textField.restrict = "0-9"; ComboBox.value Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung meineComboBox.value ComboBox-Komponente 135 Beschreibung Eigenschaft (schreibgeschützt); bei bearbeitbaren Kombinationsfeldern gibt value den Wert des Textfelds zurück. Bei statischen Kombinationsfeldern gibt value den Wert der Dropdown-Liste zurück. Der Wert der Dropdown-Liste entspricht dem Wert im Feld data oder (falls das Feld data nicht vorhanden ist) dem Wert im Feld label. Beispiel Im folgenden Beispiel werden dem Kombinationsfeld mit Hilfe der Eigenschaft dataProvider Daten zugewiesen. Dann wird der Wert value im Ausgabebedienfeld angezeigt. Zum Schluss wird das Listenelement „Zürich“ ausgewählt und im Textfeld angezeigt. cb.dataProvider = [ {label:"Bern", data:"BE"}, {label:"Genf", data:"GE"}, {label:"Zürich", data:"ZH"}]; cb.editable = true; cb.selectedIndex = 1; trace('Bearbeitbarer Wert ist "Zürich": '+ cb.value); cb.editable = false; cb.selectedIndex = 1; trace('Nicht bearbeitbarer Wert ist "ZH": '+ cb.value); Datenbindungsklassen (nur Flash Professional) Die Datenbindungsklassen stellen die Laufzeitfunktionen für die Datenbindung in Flash MX Professional 2004 zur Verfügung. In der Flash-Authoring-Umgebung können Sie auf der Registerkarte Bindungen im Bedienfeld Komponenten-Inspektor Datenbindungen visuell erstellen und konfigurieren. Alternativ können Sie Bindungen auch mit den Klassen im mx.data.binding-Paket direkt erstellen und konfigurieren. Eine Übersicht zu Datenbindungen und Informationen zum visuellen Erstellen von Datenbindungen im Flash-Authoring-Tool finden Sie unter „Datenbindung (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Datenbindungsklassen zur Laufzeit verfügbar machen (nur Flash Professional) Damit die Datenbindungsklassen zur Laufzeit verfügbar sind, muss sich die DataBindingClassesKomponente in der Bibliothek der FLA-Datei befinden. Wenn Sie in der Flash-AuthoringUmgebung Bindungen visuell erstellen, wird diese Komponente der Bibliothek des Dokuments automatisch hinzugefügt. Wenn Sie jedoch nur mit ActionScript zur Laufzeit Bindungen erstellen, müssen Sie diese Komponente der Bibliothek des Dokuments manuell hinzufügen. Informationen zum Hinzufügen dieser Komponente zu einem Dokument finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. 136 Kapitel 4: Komponenten-Referenz Klassen im mx.data.binding-Paket (nur Flash Professional) Die folgende Tabelle enthält die Klassen im mx.data.binding-Paket. Klasse Beschreibung Binding-Klasse (nur Flash Professional) Erstellt eine Bindung zwischen zwei Endpunkten. ComponentMixins-Klasse (nur Flash Professional) Fügt Komponenten datenbindungsspezifische Funktionen hinzu. CustomFormatter-Klasse (nur Flash Professional) Basisklasse zum Erstellen von benutzerdefinierten FormatterKlassen. CustomValidator-Klasse (nur Flash Professional) Basisklasse zum Erstellen von benutzerdefinierten ValidatorKlassen. DataType-Klasse (nur Flash Professional) Ermöglicht Lese- und Schreibzugriff auf Datenfelder einer Komponenteneigenschaft. EndPoint-Klasse (nur Flash Professional) Definiert Quelle oder Ziel einer Bindung. TypedValue-Klasse (nur Flash Professional) Enthält einen Datenwert und Informationen über seinen Datentyp. Binding-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.Binding Die Binding-Klasse definiert eine Verknüpfung zwischen zwei Endpunkten, einer Quelle und einem Ziel. Sie wartet auf Änderungen an der Quelle und kopiert die geänderten Daten in das Ziel, wenn sich die Quelle geändert hat. Sie können eigene Bindungen mit der Binding-Klasse (und den zugehörigen Klassen) erstellen oder dazu die Registerkarte Bindungen im Bedienfeld Komponenten-Inspektor verwenden (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor). Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Übersicht: Methoden der Binding-Klasse Methode Beschreibung Binding.execute() Fragt die Daten der Quellkomponente ab, formatiert sie und weist sie der Zielkomponente zu. Datenbindungsklassen (nur Flash Professional) 137 Konstruktor für die Binding-Klasse Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung new Binding(source, destination, [format], [isTwoWay]) Parameter source Der Quellendpunkt der Bindung. Dieser Parameter hat nominell den Typ mx.data.binding.EndPoint, es kann sich dabei aber um jedes ActionScript-Objekt handeln, das die erforderlichen Endpunktfelder besitzt (siehe EndPoint-Klasse (nur Flash Professional)). destination Der Zielendpunkt der Bindung. Dieser Parameter hat nominell den Typ mx.data.binding.EndPoint, es kann sich dabei aber um jedes ActionScript-Objekt handeln, das die erforderlichen Endpunktfelder besitzt (siehe EndPoint-Klasse (nur Flash Professional)). format (Optional) Ein Objekt mit Formatierungsinformationen. Das Objekt muss folgende Eigenschaften besitzen: • • Eine ActionScript-Klasse, die die Klasse mx.data.binding.DataAccessor erweitert. settings Ein Objekt, dessen Eigenschaften optionale Einstellungen für die FormatterKlasse enthalten, die durch cls angegeben ist. cls (Optional) Ein Boolescher Wert, der angibt, ob das neue Binding-Objekt bidirektional ist (true) oder nicht (false). Der Standardwert lautet false. isTwoWay Rückgaben Keine. Beschreibung Konstruktor; erstellt ein neues Binding-Objekt. Sie können Datenbindungen zu jedem ActionScript-Objekt erstellen, das Eigenschaften besitzt und Ereignisse erzeugt, einschließlich (aber nicht begrenzt auf ) Komponenten. Ein Binding-Objekt existiert, solange der innerste Movieclip sowohl die Quell- als auch die Zielkomponenten enthält. Wenn beispielsweise ein Movieclip namens „A“ die Komponenten „X“ und „Y“ enthält und zwischen „X“ und „Y“ eine Bindung besteht, ist die Bindung gültig, solange Movieclip „A“ existiert. Hinweis: Es ist nicht erforderlich, einen Bezug auf das neue Binding-Objekt zu erhalten (obwohl dies möglich ist). Sofort nach seiner Erstellung wartet das Binding-Objekt darauf, ob einer der Endpunkte ein change-Ereignis ausgibt. In einigen Fällen soll aber möglicherweise ein Bezug auf das neue Binding-Objekt erhalten bleiben, um später seine execute()-Methode aufrufen zu können (siehe Binding.execute()). 138 Kapitel 4: Komponenten-Referenz Beispiel Beispiel 1: In diesem Beispiel besteht zwischen der Eigenschaft text einer TextInputKomponente (src_txt) und der Eigenschaft text einer anderen TextInput-Komponente (dest_txt) eine Bindung. Wenn das src_txt-Textfeld den Fokus verliert (d. h., wenn das Ereignis focusOut erzeugt wird), wird der Wert der Eigenschaft text in dest_txt.text kopiert. import mx.data.binding.*; var src = new EndPoint(); src.component = src_txt; src.property = "text"; src.event = "focusOut"; var dest= new EndPoint(); dest.component = dest_txt; dest.property = "text"; new Binding(src, dest); Beispiel 2: Dieses Beispiel veranschaulicht die Erstellung eines Binding-Objekts, das eine benutzerdefinierte Formatter-Klasse verwendet. Weitere Informationen zum Erstellen von benutzerdefinierten Formatter-Klassen finden Sie unter „CustomFormatter-Klasse (nur Flash Professional)“ auf Seite 140. import mx.data.binding.*; var src = new EndPoint(); src.component = src_txt; src.property = "text"; src.event = "focusOut"; var dest= new EndPoint(); dest.component = text_dest; dest.property = "text"; new Binding(src, dest, {cls: mx.data.formatters.Custom, settings: {classname: "com.meinecompany.SpecialFormatter"}}); Binding.execute() Verfügbarkeit Flash Player 6. Edition Flash MX Professional 2004. Verwendung meineBinding.execute([reverse]) Parameter Ein Boolescher Wert, der angibt, ob die Bindung auch vom Ziel zur Quelle ausgeführt werden soll (true) oder nur von der Quelle zum Ziel (false). Der Standardwert ist false. reverse Datenbindungsklassen (nur Flash Professional) 139 Rückgaben Wert null, wenn die Bindung erfolgreich ausgeführt wurde. Andernfalls wird ein Array mit Fehlermeldungen (Strings) zurückgegeben, die die Fehler beschreiben, die die Ausführung der Bindung verhindert haben. Beschreibung Methode; fragt die Daten der Quellkomponente ab und weist sie der Zielkomponente zu. Wenn bei der Bindung ein Formatierer verwendet wird, werden die Daten formatiert, bevor sie dem Ziel zugewiesen werden. Mit dieser Methode wird außerdem die Gültigkeit der Daten überprüft und entweder ein validoder invalid-Ereignis durch die Ziel- und Quellkomponenten ausgegeben. Die Daten werden dem Ziel auch dann zugewiesen, wenn sie ungültig sind (ausgenommen, das Ziel ist schreibgeschützt). Wenn der Parameter reverse mit true belegt ist und die Bindung bidirektional ist, wird die Bindung in umgekehrter Richtung ausgeführt (vom Ziel zur Quelle). Beispiel Wenn der folgende Code einer Instanz einer Button-Komponente hinzugefügt ist und auf die Schaltfläche geklickt wird, wird die Bindung in umgekehrter Richtung ausgeführt (d. h., von der Zielkomponente zur Quellkomponente). on(click){ _root.meineBinding.execute(true); } CustomFormatter-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.CustomFormatter Die CustomFormatter-Klasse definiert die Methoden format() und unformat(), mit denen Datenwerte eines bestimmten Datentyps in einen String umgewandelt werden können (und umgekehrt). Standardmäßig haben diese Methoden keine Funktion, sie müssen in einer Unterklasse von mx.data.binding.CustomFormatter implementiert werden. Um einen benutzerdefinierten Formatierer zu erstellen, erzeugen Sie zuerst eine Unterklasse von CustomFormatter, die die Methoden format() und unformat() implementiert. Sie können diese Klasse dann einer Bindung zwischen Komponenten zuweisen, indem Sie entweder ein neues Binding-Objekt mit ActionScript erstellen (siehe „Binding-Klasse (nur Flash Professional)“ auf Seite 137) oder die Registerkarte Bindungen im Bedienfeld Komponenten-Inspektor verwenden. Informationen zum Zuweisen einer Formatter-Klasse mit dem KomponentenInspektor finden Sie unter „Schema-Formatierer (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Sie können eine Formatter-Klasse außerdem mit der Registerkarte Schema im Bedienfeld Komponenten-Inspektor einer Komponenteneigenschaft zuweisen. In diesem Fall wird der Formatierer jedoch nur dann verwendet, wenn die Daten als String benötigt werden. Hingegen wird ein Formatierer, der mit der Registerkarte Bindungen zugewiesen oder mit ActionScript erstellt wurde, immer verwendet, wenn die Bindung ausgeführt wird. Ein Beispiel zum Erstellen und Zuweisen eines benutzerdefinierten Formatierers mit ActionScript finden Sie unter „Beispiel für einen benutzerdefinierten Formatierer“ auf Seite 141. 140 Kapitel 4: Komponenten-Referenz Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Beispiel für einen benutzerdefinierten Formatierer Das folgende Beispiel zeigt, wie Sie mit ActionScript eine benutzerdefinierte Formatter-Klasse erstellen und anschließend auf eine Bindung zwischen zwei Komponenten anwenden. In diesem Beispiel ist der aktuelle Wert einer NumericStepper-Komponente (die Eigenschaft value) mit dem aktuellen Wert einer TextInput-Komponente (der Eigenschaft text) verknüpft. Die benutzerdefinierte Formatter-Klasse formatiert den aktuellen numerischen Wert der NumericStepper-Komponente (z. B. 1, 2 oder 3) als das entsprechende deutsche Wort (z. B. „eins“, „zwei“ oder „drei“), bevor dieser Wert der TextInput-Komponente zugewiesen wird. So erstellen und verwenden Sie einen benutzerdefinierten Formatierer: 1 Erzeugen Sie in Flash MX Professional 2004 eine neue ActionScript-Datei. 2 Fügen Sie der Datei den folgenden Code hinzu: // NumberFormatter.as class NumberFormatter extends mx.data.binding.CustomFormatter { // Zahl formatieren, String zurückgeben function format(rawValue) { var returnValue; var strArray = new Array('eins', 'zwei', 'drei'); var numArray = new Array(1, 2, 3); returnValue = 0; for (var i = 0; i<strArray.length; i++) { if (rawValue == numArray[i]) { returnValue = strArray[i]; break; } } return returnValue; } // formatierten Wert umwandeln, Rohdatenwert zurückgeben function unformat(formattedValue) { var returnValue; var strArray = new Array('eins', 'zwei', 'drei'); var numArray = new Array(1, 2, 3); returnValue = "invalid"; for (var i = 0; i<strArray.length; i++) { if (formattedValue == strArray[i]) { returnValue = numArray[i]; break; } } return returnValue; } } 3 Speichern Sie die ActionScript-Datei als NumberFormatter.as. 4 Erstellen Sie ein neues Flash-Dokument (FLA). 5 Öffnen Sie über Fenster > Entwicklungs-Bedienfelder > Komponenten das Bedienfeld Komponenten. Datenbindungsklassen (nur Flash Professional) 141 6 Ziehen Sie eine TextInput-Komponente auf die Bühne, und geben Sie ihr den Namen textInput. 7 Ziehen Sie eine NumericStepper-Komponente auf die Bühne, und geben Sie ihr den Namen stepper. 8 Öffnen Sie die Zeitleiste (Fenster > Zeitleiste), und wählen Sie das erste Bild auf Ebene 1. 9 Öffnen Sie das Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen). 10 Fügen Sie im Bedienfeld Aktionen folgenden Code hinzu: import mx.data.binding.*; var x:NumberFormatter; var customBinding = new Binding({component:stepper, property:"value", event:"change"}, {component:textInput, property:"text", event:"enter,change"}, {cls:mx.data.formatters.Custom, settings:{classname:"NumberFormatter"}}); Die zweite Codezeile (var x:NumberFormatter) stellt sicher, dass der Byte-Code für die benutzerdefinierte Formatter-Klasse in der kompilierten SWF-Datei enthalten ist. 11 Wählen Sie Fenster > Andere Bedienfelder > Allgemeine Bibliotheken > Klassen, um die Klassenbibliothek zu öffnen. 12 Öffnen Sie die Bibliothek des Dokuments. Wählen Sie dazu Fenster > Bibliothek. 13 Ziehen Sie die DataBindingClasses-Komponente aus der Klassenbibliothek in die Bibliothek des Dokuments. Dadurch machen Sie die Datenbindungs-Laufzeitklassen für das Dokument verfügbar. Weitere Informationen finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. 14 Speichern Sie die FLA-Datei im selben Ordner, in dem NumberFormatter.as gespeichert ist. 15 Testen Sie die Datei (Steuerung > Film testen). Klicken Sie auf die Schaltflächen der NumericStepper-Komponente. Die Inhalte der TextInput-Komponente werden dann aktualisiert. Übersicht: Methoden der CustomFormatter-Klasse Methode Beschreibung CustomFormatter.format() Wandelt Daten aus einem Rohdatentyp in einen Textstring um. CustomFormatter.unformat() Wandelt einen Textstring in einen Rohdatentyp um. CustomFormatter.format() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Diese Methode wird automatisch aufgerufen, d. h., Sie rufen sie nicht direkt auf. 142 Kapitel 4: Komponenten-Referenz Parameter rawData Die zu formatierenden Daten. Rückgaben Ein formatierter Wert. Beschreibung Methode; wandelt Daten aus einem Rohdatentyp in ein neues Objekt um. Diese Methode ist standardmäßig nicht implementiert. Sie müssen diese Methode in der Unterklasse von mx.data.binding.CustomFormatter definieren. Beispiel Weitere Informationen hierzu finden Sie unter „Beispiel für einen benutzerdefinierten Formatierer“ auf Seite 141. CustomFormatter.unformat() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Diese Methode wird automatisch aufgerufen, d. h., Sie rufen sie nicht direkt auf. Parameter formattedData Die formatierten Daten, die wieder in den Rohdatentyp umgewandelt werden sollen. Rückgaben Ein unformatierter Wert. Beschreibung Methode; wandelt Daten aus dem Stringformat (oder einem anderen Datentyp) in den Rohdatentyp um. Diese Umwandlung ist das genaue Gegenteil der Umwandlung, die mit CustomFormatter.format() durchgeführt wird. Diese Methode ist standardmäßig nicht implementiert. Sie müssen diese Methode in der Unterklasse von mx.data.binding.CustomFormatter definieren. Weitere Informationen finden Sie unter „Beispiel für einen benutzerdefinierten Formatierer“ auf Seite 141. Datenbindungsklassen (nur Flash Professional) 143 CustomValidator-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.CustomValidator Mit der CustomValidator-Klasse können Sie benutzerdefinierte Überprüfungen für ein Datenfeld in einer Komponente durchführen. Um eine benutzerdefinierte Validator-Klasse zu erzeugen, erstellen Sie zuerst eine Unterklasse von mx.data.binding.CustomValidator, die eine Methode namens validate() implementiert. Dieser Methode wird automatisch ein zu überprüfender Wert übergeben. Weitere Informationen zum Implementieren dieser Methode finden Sie unter CustomValidator.validate(). Weisen Sie anschließend die benutzerdefinierte Validator-Klasse einem Feld einer Komponente zu. Verwenden Sie dazu die Registerkarte Schema im Bedienfeld Komponenten-Inspektor. Ein Beispiel zum Erstellen und Verwenden einer benutzerdefinierten Validator-Klasse finden Sie im Abschnitt Beispiel des Eintrags CustomValidator.validate(). So weisen Sie einen benutzerdefinierten Validierer zu: 1 Wählen Sie im Bedienfeld Komponenten-Inspektor (Fenster > Komponenten-Inspektor) die Registerkarte Schema. 2 Wählen Sie das Feld aus, das Sie überprüfen möchten. Wählen Sie anschließend im Popupmenü data type (Datentyp) die Option Custom (Benutzerdefiniert). 3 Wählen Sie das Feld validation options (Überprüfungseinstellungen) am unteren Rand der Registerkarte Schema aus. Klicken Sie dann auf das Lupensymbol, um das Dialogfeld Benutzerdefinierte Überprüfungseinstellungen zu öffnen. 4 Geben Sie im Textfeld der ActionScript-Klasse den Namen der von Ihnen erstellten benutzerdefinierten Validator-Klasse ein. Damit die angegebene Klasse in die veröffentlichte SWF-Datei aufgenommen wird, muss sie sich im Klassenpfad befinden. Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Übersicht: Methoden der CustomValidator-Klasse Methode Beschreibung CustomValidator.validate() Führt eine Datenüberprüfung durch. CustomValidator.validationError() Meldet Überprüfungsfehler. 144 Kapitel 4: Komponenten-Referenz CustomValidator.validate() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Diese Methode wird automatisch aufgerufen, d. h., Sie rufen sie nicht direkt auf. Parameter value Die zu überprüfenden Daten; können einem beliebigen Datentyp angehören. Rückgaben Keine. Beschreibung Methode; wird automatisch aufgerufen, um die Gültigkeit der im Parameter value enthaltenen Daten zu überprüfen. Sie müssen diese Methode in der von Ihnen erzeugten Unterklasse von CustomValidator implementieren; die standardmäßige Implementierung hat keine Wirkung. Sie können die Daten mit Hilfe von beliebigem ActionScript-Code untersuchen und überprüfen. Falls die Daten nicht gültig sind, sollte diese Methode this.validationError() mit einer entsprechenden Meldung aufrufen. Sie können this.validationError() mehrmals aufrufen, wenn mehrere Überprüfungsprobleme bei den Daten auftreten. Da die Methode validate() wiederholt aufgerufen werden kann, sollten Sie ihr keinen Code hinzufügen, dessen Verarbeitung lange andauert. Ihre Implementierung dieser Methode sollte nur die Gültigkeit überprüfen und anschließend alle Fehler mit CustomValidator.validationError() mitteilen. Ebenso sollte Ihre Implementierung keine Aktionen als Folge des Überprüfungstests durchführen, z. B. eine Warnung des Endbenutzers. Erstellen Sie stattdessen Ereignis-Listener für die Ereignisse valid und invalid, und alarmieren Sie den Endbenutzer über diese Ereignis-Listener (siehe Beispiel unten). Beispiel Die folgende Vorgehensweise verdeutlicht, wie eine benutzerdefinierte Überprüfungsklasse erstellt und verwendet wird. Die Methode validate() der CustomValidator-Klasse, OddNumbersOnly.as, legt alle Werte als ungültig fest, die keine ungerade Zahl sind. Die Überprüfung tritt immer dann ein, wenn sich eine NumericStepper-Komponente ändert, die an die Eigenschaft text einer Label-Komponente gebunden ist. Datenbindungsklassen (nur Flash Professional) 145 So erstellen und verwenden Sie eine benutzerdefinierte Überprüfungsklasse: 1 Erstellen Sie in Flash MX Professional 2004 eine neue ActionScript (AS)-Datei. 2 Fügen Sie der AS-Datei den folgenden Code hinzu: class OddNumbersOnly extends mx.data.binding.CustomValidator { public function validate(value) { // Bei dem Wert muss es sich um eine Zahl handeln var n = Number(value); if (String(n) == "NaN") { this.validationError("'" + value + "' ist keine Zahl."); return; } // Die Zahl muss ungerade sein if (n % 2 == 0) { this.validationError("'" + value + "' ist keine ungerade Zahl."); return; } // Daten sind in Ordnung, kein Handlungsbedarf, nur zurückkehren } } 3 Speichern Sie die AS-Datei unter OddNumbersOnly.as. Hinweis: Der Name der AS-Datei muss mit dem Namen der Klasse übereinstimmen. 4 Erstellen Sie ein neues Flash-Dokument (FLA). 5 Öffnen Sie über Fenster > Entwicklungs-Bedienfelder > Komponenten das Bedienfeld Komponenten. 6 Ziehen Sie eine NumericStepper-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und nennen Sie sie stepper. 7 Ziehen Sie eine Label-Komponente auf die Bühne, und nennen Sie sie textLabel. 8 Ziehen Sie eine TextArea-Komponente auf die Bühne, und nennen Sie status. 9 Wählen Sie die NumericStepper-Komponente aus, und öffnen Sie den KomponentenInspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor). 10 Wählen Sie im Komponenten-Inspektor die Registerkarte Bindungen aus, und klicken Sie auf die Schaltfläche Bindung hinzufügen (+). 11 Wählen Sie im Dialogfeld Bindung hinzufügen die (einzig vorhandene) Eigenschaft Value, und klicken Sie auf OK. 12 Doppelklicken Sie im Komponenten-Inspektor im Fenster Bindungsattribute der Registerkarte Bindungen auf bound to (Gebunden an), um das Dialogfeld Gebunden an zu öffnen. 13 Wählen Sie im Dialogfeld Gebunden an im Fenster Komponentenpfad die Label-Komponente und im Fenster Schema-Standort die Eigenschaft text aus. Klicken Sie auf OK. 14 Wählen Sie die Label-Komponente auf der Bühne aus, und klicken Sie im Bedienfeld Komponenten-Inspektor auf die Registerkarte Schema. 15 Wählen Sie im Fenster der Schema-Attribute im Popupmenü data type (Datentyp) die Option Custom (Benutzerdefiniert) aus. 16 Doppelklicken Sie im Fenster der Schema-Attribute auf das Feld validation options (Überprüfungseinstellungen), um das Dialogfeld Benutzerdefinierte Überprüfungseinstellungen zu öffnen. 146 Kapitel 4: Komponenten-Referenz 17 Geben Sie OddNumbersOnly im Textfeld der ActionScript-Klasse ein, also den Namen der ActionScript-Klasse, die Sie zuvor erstellt haben. Klicken Sie auf OK. 18 Öffnen Sie die Zeitleiste (Fenster > Zeitleiste), und wählen Sie das erste Bild auf Ebene 1. 19 Öffnen Sie das Bedienfeld Aktionen (Fenster > Aktionen). 20 Fügen Sie im Bedienfeld Aktionen folgenden Code hinzu: function dataIsInvalid(evt) { if (evt.property == "text") { status.text = evt.messages; } } function dataIsValid(evt) { if (evt.property == "text") { status.text = "OK"; } } textLabel.addEventListener("valid", dataIsValid); textLabel.addEventListener("invalid", dataIsInvalid); 21 Speichern Sie die FLA-Datei unter OddOnly.fla in demselben Ordner, der die Datei OddNumbersOnly.as enthält. 22 Testen Sie die SWF-Datei (Steuerung > Film testen). Klicken Sie auf die Pfeile in der NumericStepper-Komponente, um deren Wert zu ändern. Beachten Sie die Meldung, die in der TextArea-Komponente angezeigt wird, wenn Sie gerade und ungerade Zahlen wählen. CustomValidator.validationError() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung this.validationError(errorMessage) Hinweis: Diese Methode kann nur von einer benutzerdefinierten Überprüfungsklasse aus aufgerufen werden; das Schlüsselwort this bezieht sich auf das aktuelle CustomValidator-Objekt. Parameter errorMessage Ein String, der die auszugebende Fehlermeldung enthält. Rückgaben Keine. Datenbindungsklassen (nur Flash Professional) 147 Beschreibung Methode; Sie können diese Methode von der validate()-Methode Ihrer Unterklasse von CustomValidator aus aufrufen, um Überprüfungsfehler zu melden. Falls Sie diese Methode nicht aufrufen, wird ein valid-Ereignis erzeugt, wenn validate() abgeschlossen ist. Falls Sie diese Methode ein oder mehrere Male von der validate()-Methode aus aufrufen, wird ein invalidEreignis erzeugt, nachdem validate() zurückgegeben wird. Alle Meldungen, die Sie an validationError() übergeben, sind in der „messages“-Eigenschaft des Ereignisobjekts verfügbar, das an die invalid-Ereignisprozedur weitergeleitet wurde. Beispiel Siehe Abschnitt „Beispiel“ zu CustomValidator.validate(). EndPoint-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.EndPoint Die EndPoint-Klasse definiert die Quelle oder das Ziel einer Bindung. EndPoint-Objekte definieren eine Konstante, eine Komponenteneigenschaft oder ein bestimmtes Feld einer Komponenteneigenschaft, von dem Daten abgerufen bzw. dem Daten zugewiesen werden können. Sie können auch ein Ereignis oder eine Liste von Ereignissen definieren, auf die ein Binding-Objekt wartet; wenn das angegebene Ereignis eintritt, wird die Bindung ausgeführt. Wenn Sie mit dem Binding-Klassenkonstruktor einen neue Bindung erstellen, übergeben Sie ihr zwei EndPoint-Objekte: eines für die Quelle und eines für das Ziel. new mx.data.binding.Binding(srcEndPoint, destEndPoint); Die EndPoint-Objekte, srcEndPoint und destEndPoint, können wie folgt definiert werden: var srcEndPoint = new mx.data.binding.EndPoint(); var destEndPoint = new mx.data.binding.EndPoint(); srcEndPoint.component = source_txt; srcEndPoint.property = "text"; srcEndPoint.event = "focusOut"; destEndPoint.component = dest_txt; destEndPoint.property = "text"; Dieser Code bedeutet Folgendes: „Wenn das Quelltextfeld den Fokus verliert, kopiere den Wert seiner text-Eigenschaft in die text-Eigenschaft des Zieltextfelds“. Sie können dem Binding-Konstruktor anstelle eigens erstellter EndPoint-Objekte auch generische ActionScript-Objekte übergeben. Als einzige Bedingung müssen diese Objekte die erforderlichen EndPoint-Eigenschaften definieren, nämlich component und property. Der folgende Code ist gleichbedeutend mit dem oben aufgeführten. var srcEndPoint = {component:source_txt, property:"text"}; var destEndPoint = {component:dest_txt, property:"text"}; new mx.data.binding.Binding(srcEndPoint, destEndPoint); Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. 148 Kapitel 4: Komponenten-Referenz Übersicht: Eigenschaften der EndPoint-Klasse Methode Beschreibung EndPoint.constant Eine Konstante. EndPoint.component Ein Verweis auf eine Komponenteninstanz. EndPoint.property Der Name einer Eigenschaft der Komponenteninstanz, der durch EndPoint.component festgelegt ist. EndPoint.location Die Position eines Datenfelds in der Eigenschaft der Komponenteninstanz. EndPoint.event Der Name eines Ereignisses oder einer Liste von Ereignissen, die die Komponenteninstanz erzeugt, wenn die Daten sich ändern. Konstruktor für die EndPoint-Klasse Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung new EndPoint() Rückgaben Keine. Beschreibung Konstruktor; erstellt ein neues EndPoint-Objekt. Beispiel In diesem Beispiel wird das neue EndPoint-Objekt source_txt erstellt und dessen Eigenschaften component und property Werte zugewiesen. var source_obj = new mx.data.binding.EndPoint(); source_obj.component = meinTextField; source_obj.property = "text"; EndPoint.constant Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung endPoint_src.constant Datenbindungsklassen (nur Flash Professional) 149 Beschreibung Eigenschaft; eine einem EndPoint-Objekt zugewiesene Konstante. Diese Eigenschaft kann nur auf EndPoints-Objekte angewendet werden, die die Quelle und nicht das Ziel einer Bindung zwischen Komponenten darstellen. Bei dem Wert kann es sich um jeden Datentyp handeln, der mit dem Ziel der Bindung kompatibel ist. Falls angegeben, werden alle anderen EndPointEigenschaften des angegebenen EndPoint-Objekts ignoriert. Beispiel In diesem Beispiel wird der konstanten Eigenschaft eines EndPoint-Objekts die Stringkonstante „Hallo“ zugewiesen. var sourceEndPoint = new mx.data.binding.EndPoint(); sourceEndPoint.constant="Hallo"; EndPoint.component Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung endPointObj.component Beschreibung Eigenschaft; ein Verweis auf eine Komponenteninstanz. Beispiel In diesem Beispiel wird eine Instanz der List-Komponente (listBox1) als Komponentenparameter eines EndPoint-Objekts zugewiesen. var sourceEndPoint = new mx.data.binding.EndPoint(); sourceEndPoint.component=listBox1; EndPoint.property Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung endPointObj.property 150 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; gibt einen Eigenschaftsnamen der Komponenteninstanz an, welche durch EndPoint.component angegeben wird, das die bindbaren Daten enthält. Hinweis: EndPoint.component und EndPoint.property müssen zusammen eine gültige Kombination aus ActionScript-Objekt und -Eigenschaft darstellen. Beispiel In diesem Beispiel wird die text-Eigenschaft einer TextInput-Komponente (text_1) an die gleiche Eigenschaft in einer anderen TextInput-Komponente (text_2) gebunden. var sourceEndPoint = {component:text_1, property:"text"}; var destEndPoint = {component:text_2, property:"text"}; new Binding(sourceEndPoint, destEndPoint); EndPoint.location Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung endPointObj.location Beschreibung Eigenschaft; gibt die Position eines Datenfelds in der Eigenschaft der Komponenteninstanz an. Eine Position kann auf vier Arten angegeben werden: als String, der einen XPath-Ausdruck oder einen ActionScript-Pfad enthält, als String-Array oder als Objekt. XPath-Ausdrücke können nur dann verwendet werden, wenn es sich bei den Daten um ein XMLObjekt handelt. Eine Liste der unterstützten XPath-Ausdrücke finden Sie in der Hilfe „Flash verwenden“ unter „Unterstützte XPath-Ausdrücke“. (Siehe Beispiel 1 unten.) Bei XML- und ActionScript-Objekten können Sie auch einen String angeben, der einen ActionScript-Pfad enthält. Ein ActionScript-Pfad enthält die Namen der Felder, getrennt durch Punkte (z. B. "a.b.c"). Auch ein String-Array kann als Position angegeben werden. Jeder String im Array gibt eine weitere Verschachtelungsebene an. Diese Technik lässt sich sowohl für XML- als auch ActionScript-Daten anwenden. (Siehe Beispiel 2 unten.) Wird ein String-Array mit ActionScriptDaten verwendet, ist dies gleichbedeutend mit der Verwendung eines ActionScripts, d. h. das Array ["a","b","c"] entspricht "a.b.c". Wenn Sie ein Objekt als Position angeben, muss das Objekt zwei Eigenschaften angeben: path und indices. Die path-Eigenschaft ist ein String-Array, wie oben behandelt, außer dass einer oder mehrere der angegebenen Strings das Sonder-Token "[n]" sein können. Zu jedem Auftreten dieses Tokens in path muss ein entsprechendes Indexelement in indices existieren. Bei der Auswertung des Pfades werden die Indizes zur Indizierung in Arrays verwendet. Das Indexelement kann ein beliebiger EndPoint sein. Dieser Positionstyp lässt sich nur auf ActionScript- und nicht auf XML-Daten anwenden. (Siehe Beispiel 3 unten.) Datenbindungsklassen (nur Flash Professional) 151 Beispiel Beispiel 1: In diesem Beispiel wird mit einem XPath-Ausdruck die Position des Knotens zip in einem XML-Objekt angegeben. var sourceEndPoint = new mx.databinding.EndPoint(); var sourcObj=new Object(); sourceObj.xml=new XML("<zip>94103</zip>"); sourceEndPoint.component=sourceObj; sourceEndPoint.property="xml"; sourceEndPoint.location="/zip";// Beispiel 2: In diesem Beispiel wird mit einem String-Array eine verschachtelte Movieclipeigenschaft angezeigt. var sourceEndPoint = new mx.data.binding.EndPoint(); //vorausgesetzt, movieClip1.ball.position existiert ssourceEndPoint.component=movieClip1; sourceEndPoint.property="ball"; //auf movieClip1.ball.position.x zugreifen sourceEndPoint.location=["position","x"]; Beispiel 3: Dieses Beispiel zeigt, wie mit einem Objekt die Position eines Datenfelds in einer komplexen Datenstruktur angegeben wird. var city=new Object(); city.theaters = [{theater: "t1", movies: [{name: "Good,Bad,Ugly"}, {name:"Matrix Reloaded"}]}, {theater: "t2", movies: [{name: "Gladiator"}, {name: "Catch me if you can"}]}]; var srcEndPoint = new EndPoint(); srcEndPoint.component=city; srcEndPoint.property="theaters"; srcEndPoint.location = {path: ["[n]","movies","[n]","name"], indices: [{constant:0},{constant:0}]}; EndPoint.event Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung endPointObj.event Beschreibung Eigenschaft; gibt den Namen eines Ereignisses oder ein Array von Ereignisnamen an, der bzw. das von der Komponente erzeugt wird, wenn die der gebundenen Eigenschaft zugewiesenen Daten sich ändern. Bei Eintritt des Ereignisses wird die Bindung ausgeführt. Das angegebene Ereignis gilt nur für Komponenten, die als Quelle einer Bindung oder als Ziel einer bidirektionalen Bindung verwendet werden. Weitere Informationen zum Erstellen von bidirektionalen Bindungen finden Sie unter „Binding-Klasse (nur Flash Professional)“ auf Seite 137. 152 Kapitel 4: Komponenten-Referenz Beispiel In diesem Beispiel wird die text-Eigenschaft einer TextInput-Komponente (src_txt) an die gleiche Eigenschaft einer anderen TextInput-Komponente (dest_txt) gebunden. Die Ausführung der Bindung erfolgt, wenn die Ereignisse focusOut oder enter von der src_txtKomponente ausgelöst werden. var source = {component:src_txt, property:"text", event:["focusOut", "enter"]}; var dest = {component:meinTextArea, property:"text"}; var newBind = new mx.data.binding.Binding(source, dest); ComponentMixins-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.ComponentMixins Die ComponentMixins-Klasse definiert Eigenschaften und Methoden, die jedem Objekt, das Quelle oder Ziel einer Bindung ist, oder jeder Komponente, die Ziel eines Aufrufs der Methode ComponentMixins.initComponent() ist, automatisch hinzugefügt werden. Diese Eigenschaften und Methoden haben keinen Einfluss auf die Funktionalität normaler Komponenten. Vielmehr fügen Sie bei der Datenbindung nützliche Funktionen hinzu. Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Übersicht: Methoden der ComponentMixins-Klasse Methode Beschreibung ComponentMixins.getField() Gibt ein Objekt zum Abrufen und Festlegen des Werts eines Felds an einer bestimmten Position in einer Komponenteneigenschaft zurück. ComponentMixins.initComponent() Fügt einer Komponente die ComponentMixinMethoden hinzu. ComponentMixins.refreshFromSources() Führt alle Bindungen aus, die diese Komponente als Ziel-EndPoint besitzen. ComponentMixins.refreshDestinations() Führt alle Bindungen aus, die dieses Objekt als QuellEndPoint besitzen. ComponentMixins.validateProperty() Überprüft, ob die Daten in der angegebenen Eigenschaft gültig sind. Datenbindungsklassen (nur Flash Professional) 153 ComponentMixins.getField() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung componentInstance.getField(propertyName, [location]) Parameter propertyName Ein String, der den Namen einer Eigenschaft der angegebenen Komponente enthält. (Optional) Die Position eines Felds in der Komponenteneigenschaft. Dies ist hilfreich, wenn es sich bei der in propertyName angegebenen Komponenteneigenschaft um eine komplexe Datenstruktur handelt und Sie an einem bestimmten Feld dieser Struktur interessiert sind. Diese Eigenschaft kann eine der folgenden drei Formen besitzen: location • Ein String, der einen XPath-Ausdruck enthält. Dies gilt nur für XML-Datenstrukturen. Eine • • Liste der unterstützten XPath-Ausdrücke finden Sie in der Hilfe „Flash verwenden“ unter „Unterstützte XPath-Ausdrücke“. Ein String, der durch Punkte getrennte Feldnamen enthält, z. B. "a.b.c". Diese Form ist für alle komplexen Daten zugelassen (ActionScript oder XML). Ein String-Array, in dem jeder String ein Feldname ist, z. B. ["a", "b", "c"]. Diese Form ist für alle komplexen Daten zugelassen (ActionScript oder XML). Rückgaben Ein DataType-Objekt. Beschreibung Methode; gibt ein DataType-Objekt zurück, mit dessen Methoden Sie den Datenwert in der Komponenteneigenschaft an der angegebenen Feldposition abrufen oder festlegen können. Weitere Informationen finden Sie unter „DataType-Klasse (nur Flash Professional)“ auf Seite 158. Beispiel In diesem Beispiel wird mit der Methode DataType.setAsString() der Wert eines Felds festgelegt, das sich in der Eigenschaft einer Komponente befindet. In diesem Fall handelt es sich bei der Eigenschaft (results) um eine komplexe Datenstruktur. import mx.data.binding.*; var field : DataType = meineComponent.getField("results", "po.address.name1"); field.setAsString("Teri Randall"); Siehe auch DataType.setAsString() 154 Kapitel 4: Komponenten-Referenz ComponentMixins.initComponent() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung mx.data.binding.ComponentMixins.initComponent(componentInstance) Parameter componentInstance Ein Verweis auf eine Komponenteninstanz. Rückgaben Keine. Beschreibung Methode (statisch); fügt der durch componentInstance angegebenen Komponente alle ComponentMixins-Methoden hinzu. Diese Methode wird für alle an einer Bindung beteiligten Komponenten automatisch aufgerufen. Damit die ComponentMixins-Methoden für eine Komponente verfügbar werden, die nicht an einer Datenbindung beteiligt ist, müssen Sie diese Methode für die Komponente explizit aufrufen. Beispiel Der folgende Code macht die ComponentMixins-Methoden für eine DataSet-Komponente verfügbar. mx.data.binding.ComponentMixins.initComponent(_root.meinDataSet); ComponentMixins.refreshFromSources() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung componentInstance.refreshFromSources() Rückgaben Keine. Beschreibung Methode; führt alle Bindungen aus, bei denen componentInstance das Ziel-EndPoint-Objekt ist. Mit dieser Methode können Sie Bindungen ausführen, die konstante Quellen besitzen oder Quellen, die kein „Geänderte Daten“-Ereignis auslösen. Datenbindungsklassen (nur Flash Professional) 155 Beispiel Im folgenden Beispiel werden alle Bindungen ausgeführt, bei denen die ListBoxKomponenteninstanz cityList das Ziel-EndPoint-Objekt ist. cityList.refreshFromSources(); ComponentMixins.refreshDestinations() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung componentInstance.refreshDestinations() Rückgaben Keine. Beschreibung Methode; führt alle Bindungen aus, bei denen componentInstance der Quell-EndPoint ist. Mit dieser Methode können Sie Bindungen ausführen, deren Quellen kein „Geänderte Daten“Ereignis auslösen. Beispiel Im folgenden Beispiel werden alle Bindungen ausgeführt, bei denen die DataSetKomponenteninstanz user_data das Quell-EndPoint-Objekt ist. user_data.refreshDestinations(); ComponentMixins.validateProperty() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung componentInstance.validateProperty(propertyName) Parameter propertyName Ein String, der den Namen einer zu componentInstance gehörenden Eigenschaft enthält. Rückgaben Ein Array oder null. 156 Kapitel 4: Komponenten-Referenz Beschreibung Methode; bestimmt, ob die Daten in propertyName gemäß den Schema-Einstellungen der Eigenschaft gültig sind. Die Schema-Einstellungen der Eigenschaft werden im KomponentenInspektor auf der Registerkarte Schema festgelegt. Die Methode gibt null zurück, wenn die Daten gültig sind; andernfalls gibt sie ein Array von Fehlermeldungen als Strings zurück. Die Überprüfung betrifft nur die Felder, für die Schema-Informationen verfügbar sind. Handelt es sich bei einem Feld um ein Objekt, das weitere Felder enthält, wird jedes untergeordnete Feld überprüft. Treten dabei erneut Felder mit weiteren Feldern auf, werden auch diese überprüft usw. Jedes einzelne Feld führt je nach Bedarf ein valid- oder ein invalid-Ereignis aus. Für jedes in propertyName enthaltene Datenfeld führt diese Funktion valid- bzw. invalid-Ereignisse wie folgt aus: • Ist der Wert des Felds null und nicht erforderlich, gibt die Methode null zurück. Es werden keine Ereignisse erzeugt. • Wenn der Wert des Felds null beträgt und erforderlich ist, wird ein Fehler zurückgegeben und • • ein invalid-Ereignis erzeugt. Wenn der Wert des Felds ungleich Null ist und das Schema des Felds keinen Validator besitzt, gibt die Methode null zurück. Es werden keine Ereignisse erzeugt. Wenn der Wert ungleich Null ist und das Schema des Felds einen Validator definiert, werden die Daten von dem Validator-Objekt verarbeitet. Wenn die Daten gültig sind, wird ein validEreignis erzeugt und null zurückgegeben; andernfalls wird ein invalid-Ereignis erzeugt und ein Array von Fehlerstrings zurückgegeben. Beispiel In den folgenden Beispielen wird gezeigt, wie mit validateProperty() sichergestellt wird, dass vom Benutzer eingegebener Text eine gültige Länge besitzt. Die gültige Länge bestimmen Sie, indem Sie die Überprüfungseinstellungen für den String-Datentyp im Komponenten-Inspektor auf der Registerkarte Schema festlegen. Wenn der Benutzer im Textfeld einen String ungültiger Länge eingibt, werden die von der validateProperty()-Methode zurückgegebenen Fehlermeldungen im Bedienfeld Ausgabe angezeigt. So überprüfen Sie vom Benutzer eingegebenen Text in einer TextInput-Komponente: 1 Ziehen Sie eine TextInput-Komponente aus dem Bedienfeld Komponenten (Fenster > 2 3 4 5 6 Entwicklungs-Bedienfelder > Komponenten) auf die Bühne, und nennen Sie sie zipCode_txt. Wählen Sie die TextInput-Komponente aus, und klicken Sie im Komponenten-Inspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten) auf die Registerkarte Schema. Wählen Sie im Schemabaum-Feld (das oberste Feld der Registerkarte Schema) die textEigenschaft aus. Wählen Sie ZipCode (Postleitzahl) im Feld der Schema-Attribute (das unterste Feld der Registerkarte Schema) aus dem Popupmenü data type (Datentyp) aus. Öffnen Sie die Zeitleiste, falls sie noch nicht geöffnet ist, indem Sie Fenster > Zeitleiste wählen. Klicken Sie in der Zeitleiste auf das erste Bild in Ebene 1, und öffnen Sie das Bedienfeld Aktionen (Fenster > Aktionen). Datenbindungsklassen (nur Flash Professional) 157 7 Fügen Sie im Bedienfeld Aktionen folgenden Code hinzu: // ComponentMixin-Methoden zur TextInput-Komponente hinzufügen // Beachten Sie, dass dieser Schritt nur dann erforderlich ist, // wenn die Komponente weder als Quelle noch als Ziel // bereits an einer Datenbindung beteiligt ist. mx.data.binding.ComponentMixins.initComponent(zipCode_txt); // Ereignis-Listener-Funktion für Komponente definieren: validateResults = function (eventObj) { var errors:Array = eventObj.target.validateProperty("text"); if (errors != null) { trace(errors); } }; // Der Komponente die Listener-Funktion zuweisen: zipCode_txt.addEventListener("enter", validateResults); 8 Wählen Sie Fenster > Andere Bedienfelder > Allgemeine Bibliotheken > Klassen aus, um die Klassenbibliothek zu öffnen. 9 Öffnen Sie die Bibliothek, indem Sie Fenster > Bibliothek wählen. 10 Ziehen Sie die DataBindingClasses-Komponente aus der Klassenbibliothek in das Bedienfeld Bibliothek des Dokuments. Dieser Schritt ist erforderlich, damit der SWF-Datei die Laufzeitklassen für die Datenbindung zur Laufzeit zur Verfügung stehen. Weitere Informationen finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. 11 Testen Sie die SWF-Datei, indem Sie Steuerung > Film testen wählen. Geben Sie auf der Bühne in der TextInput-Komponente eine ungültige Postleitzahl ein, beispielsweise eine, die nur aus Buchstaben besteht oder aus weniger als fünf Ziffern besteht. Beachten Sie die im Bedienfeld Ausgabe angezeigten Fehlermeldungen. DataType-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.DataType Die DataType-Klasse bietet Schreib- und Lesezugriff auf Datenfelder einer Komponenteneigenschaft. Um ein DataType-Objekt abzurufen, rufen Sie die Funktion ComponentMixins.getField() zu einer Komponente auf. Danach können Sie Methoden des DataType-Objekts aufrufen, um die Werte des Felds abzurufen und festzulegen. Der Unterschied zwischen dem Abrufen und Festlegen von Feldwerten mit den DataTypeObjektmethoden und dem direkten Abrufen bzw. Festlegen derselben Werte auf einer Komponenteninstanz besteht darin, dass die Daten im letzteren Fall in ihrer „rohen“ Form geliefert werden. Im Gegensatz dazu werden diese Werte gemäß den Schema-Einstellungen des Felds verarbeitet, wenn Sie Feldwerte mit Methoden der DataType-Klasse abrufen oder festlegen. Beispielweise ruft der folgende Code den Wert einer Komponenteneigenschaft direkt ab und weist ihn einer Variablen zu. Die Variable, propVar, enthält den aktuellen Wert der Eigenschaft propName als „rohen“ Wert. var propVar = meineComponent.propName; 158 Kapitel 4: Komponenten-Referenz Im nächsten Beispiel wird der Wert derselben Eigenschaft mit der Methode DataType.getAsString() abgerufen. In diesem Fall ist der stringVar zugewiesene Wert der Wert von propName, nachdem dieser gemäß seiner Schema-Einstellungen verarbeitet und danach als String zurückgegeben wurde. var dataTypeObj:mx.data.binding.DataType = meineComponent.getField("propName"); var stringVar: String = dataTypeObj.getAsString(); Weitere Informationen darüber, wie Sie die Schema-Einstellungen eines Felds festlegen, finden Sie unter „Mit Schemata auf der Registerkarte ,Schema‘ arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Sie können mit den Methoden der DataType-Klasse auch Felder in verschiedenen Datentypen abrufen und festlegen. Die DataType-Klasse wandelt die Rohdaten, falls möglich, automatisch in den erforderlichen Typ um. Im oben aufgeführten Beispiel werden die abgerufenen Daten auch dann in den Typ „String“ umgewandelt, wenn die Rohdaten einen anderen Typ aufweisen. Die Methode ComponentMixins.getField() ist für Komponenten verfügbar, die in eine Datenbindung (als Quelle, Ziel oder Index) einbezogen oder mit der Methode ComponentMixins.initComponent() initialisiert wurden. Weitere Informationen finden Sie unter „ComponentMixins-Klasse (nur Flash Professional)“ auf Seite 153. Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Übersicht: Methoden der DataType-Klasse Methode Beschreibung DataType.getAsBoolean() Ruft den aktuellen Wert des Felds als Booleschen Wert ab. DataType.getAsNumber() Ruft den aktuellen Wert des Felds als Zahl ab. DataType.getAsString() Ruft den aktuellen Wert des Felds als Stringwert ab. DataType.getAnyTypedValue() Ruft den aktuellen Wert des Felds ab. DataType.getTypedValue() Ruft den aktuellen Wert des Felds in der Form des angeforderten DataType ab. DataType.setAnyTypedValue() Legt einen neuen Wert für das Feld fest. DataType.setAsBoolean() Legt für das Feld den neuen Wert fest, der als Boolescher Wert angegeben ist. DataType.setAsNumber() Legt für das Feld den neuen Wert fest, der als Zahl angegeben ist. DataType.setAsString() Legt für das Feld den neuen Wert fest, der als String angegeben ist. DataType.setTypedValue() Legt einen neuen Wert für das Feld fest. Datenbindungsklassen (nur Flash Professional) 159 Übersicht: Eigenschaften der DataType-Klasse Eigenschaft Beschreibung DataType.encoder Liefert einen Verweis auf das mit diesem Feld verknüpfte EncoderObjekt. DataType.formatter Liefert einen Verweis auf das mit diesem Feld verknüpfte Formatter-Objekt. DataType.kind Liefert einen Verweis auf das mit diesem Feld verknüpfte KindObjekt. DataType.encoder Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.encoder Beschreibung Eigenschaft; liefert einen Verweis auf das mit diesem Feld verknüpfte Encoder-Objekt, falls eines existiert. Mit dieser Eigenschaft können Sie auf alle Eigenschaften und Methoden zugreifen, die mit dem Encoder definiert wurden, der dem Feld auf der Registerkarte Schema des Komponenten-Inspektors zugewiesen wurde. Wurde dem betreffenden Feld kein Encoder zugewiesen, gibt diese Eigenschaft undefined zurück. Weitere Informationen zu den mit Flash MX Professional 2004 gelieferten Encodern finden Sie unter „Schema-Encoder (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Beispiel Im folgenden Beispiel wird davon ausgegangen, dass das Feld, auf das zugegriffen wird (isValid) den Booleschen Encoder (mx.data.encoders.Bool) verwendet. Dieser Encoder wird mit Flash MX Professional 2004 geliefert und enthält die Eigenschaft trueStrings, die festlegt, welche Strings als Boolesche Werte mit dem Wert true interpretiert werden sollen. Der folgende Code legt für die trueStrings-Eigenschaft für den Encoder eines Felds die Strings „yes“ und „oui“ fest. var meinField:mx.data.binding.DataType = dataSet.getField("isValid"); meinField.encoder.trueStrings = "Yes,Oui"; 160 Kapitel 4: Komponenten-Referenz DataType.formatter Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.formatter Beschreibung Eigenschaft; liefert einen Verweis auf das mit diesem Feld verknüpfte Formatter-Objekt, falls eines existiert. Mit dieser Eigenschaft können Sie auf alle Eigenschaften und Methoden des Formatter-Objekts zugreifen, das dem Feld auf der Registerkarte Schema des KomponentenInspektors zugewiesen wurde. Wurde dem betreffenden Feld kein Formatierer zugewiesen, gibt diese Eigenschaft undefined zurück. Weitere Informationen zu den mit Flash MX Professional 2004 gelieferten Formatierern finden Sie unter „Schema-Formatierer (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Beispiel In diesem Beispiel wird davon ausgegangen, dass das Feld, auf das zugegriffen wird, den mit Flash MX Professional 2004 gelieferten Zahlenformatierer (mx.data.formatters.NumberFormatter) verwendet. Dieser Formatierer enthält die Eigenschaft precision, die festlegt, wie viele Stellen nach dem Dezimalzeichen angezeigt werden. Dieser Code legt für die precision-Eigenschaft bei einem Feld, das diesen Formatierer verwendet, zwei Dezimalstellen fest. var meinField:DataType = dataGrid.getField("currentBalance"); meinField.formatter.precision = 2; DataType.getAsBoolean() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.getAsBoolean() Rückgaben Ein Boolescher Wert. Beschreibung Methode; ruft den aktuellen Wert des Felds als Booleschen Wert ab. Der Wert wird gegebenenfalls in Boolesches Format umgewandelt. Datenbindungsklassen (nur Flash Professional) 161 Beispiel In diesem Beispiel wird das Feld propName, das zu der Komponente meineComponent gehört, als Boolescher Wert abgerufen und einer Variablen zugewiesen. var dataTypeObj:mx.data.binding.DataType = meineComponent.getField("propName"); var propValue:Boolean = dataTypeObj.getAsBoolean(); DataType.getAsNumber() Verfügbarkeit Flash Player 6. Edition Flash MX Professional 2004. Verwendung dataTypeObject.getAsNumber() Rückgaben Eine Zahl. Beschreibung Methode; ruft den aktuellen Wert des Felds als Zahl ab. Der Wert wird gegebenenfalls in Zahlenformat umgewandelt. Beispiel In diesem Beispiel wird das Feld propName, das zu der Komponente meineComponent gehört, als Zahl abgerufen und einer Variablen zugewiesen. var dataTypeObj:mx.data.binding.DataType = meineComponent.getField("propName"); var propValue:Number = dataTypeObj.getAsNumber(); Siehe auch DataType.getAnyTypedValue() DataType.getAsString() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.getAsString() Rückgaben Ein String. 162 Kapitel 4: Komponenten-Referenz Beschreibung Methode; ruft den aktuellen Wert des Felds als String ab. Der Wert wird gegebenenfalls in das Stringformat umgewandelt. Beispiel In diesem Beispiel wird die Komponenteneigenschaft propName, die zu der Komponente meineComponent gehört, als String abgerufen und einer Variablen zugewiesen. var dataTypeObj:mx.data.binding.DataType = meineComponent.getField("propName"); var propValue:String = dataTypeObj.getAsString(); Siehe auch DataType.getAnyTypedValue() DataType.getAnyTypedValue() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.getAnyTypedValue(suggestedTypes) Parameter Ein Array von Strings, die absteigend nach Priorität geordnet die für das Feld suggestedTypes gewünschten Datentypen festlegen. Weitere Informationen finden Sie unten im Abschnitt „Beschreibung“. Rückgaben Aktueller Wert des Felds in der Form eines der im Array suggestedTypes angegebenen Datentypen. Beschreibung Methode; ruft den aktuellen Wert des Felds ab und verarbeitet ihn dabei gemäß den Informationen im Schema des Felds. Falls das Feld einen Wert liefert, der dem ersten in suggestedTypes angegebenen Datentyp entspricht, gibt die Methode den Wert des Felds als diesen Datentyp zurück. Andernfalls versucht die Methode, den Wert des Felds als den zweiten im Array suggestedTypes angegebenen Datentyp zu extrahieren usw. Wenn Sie null als ein Element im Array suggestedTypes angeben, gibt die Methode den Wert des Felds als den Datentyp zurück, der im Bedienfeld Schema festgelegt ist. Die Angabe von null führt immer zu einer Rückgabe eines Werts. Verwenden Sie null deshalb nur am Ende des Arrays. Kann ein Wert nicht in der Form eines der vorgeschlagenen Typen zurückgegeben werden, wird er als der Typ zurückgegeben, der im Bedienfeld Schema festgelegt ist. Datenbindungsklassen (nur Flash Professional) 163 Beispiel In diesem Beispiel wird versucht, den Wert eines Felds (productInfo.available) in der results-Eigenschaft einer XMLConnector-Komponente zuerst als Zahl oder, falls dies fehlschlägt, als String abzurufen. import mx.data.binding.DataType; import mx.data.binding.TypedValue; var f: DataType = meinXmlConnector.getField("results", "productInfo.available"); var b: TypedValue = f.getAnyTypedValue(["Number", "String"]); Siehe auch ComponentMixins.getField() DataType.getTypedValue() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.getTypedValue(requestedType) Parameter requestedType Ein String, der den Namen eines Datentyps enthält, oder null. Rückgaben Ein TypedValue-Objekt (siehe „TypedValue-Klasse (nur Flash Professional)“ auf Seite 169) Beschreibung Methode; gibt den Wert des Felds in der durch requestedType festgelegten Form zurück, falls „requestedType“ festgelegt ist und das Feld seinen Wert in dieser Form liefern kann. Kann das Feld seinen Wert nicht in der angeforderten Form liefern, gibt die Methode null zurück. Falls null als requestedType festgelegt ist, gibt die Methode den Wert des Felds als Standardtyp zurück. Beispiel var bool:TypedValue = field.getTypedValue("Boolean"); 164 Kapitel 4: Komponenten-Referenz DataType.kind Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.kind Beschreibung Eigenschaft; liefert einen Verweis auf das mit diesem Feld verknüpfte Kind-Objekt. Damit können Sie auf Eigenschaften und Methoden des Kind-Objekts zugreifen. DataType.setAnyTypedValue() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.setAnyTypedValue(newTypedValue) Parameter newValue Ein TypedValue-Objektwert, der in diesem Feld festgelegt werden soll. Weitere Informationen zu TypedValue-Objekten finden Sie unter „TypedValue-Klasse (nur Flash Professional)“ auf Seite 169. Rückgaben Ein Array von Strings, die alle beim Versuch der Festlegung des neuen Werts aufgetretenen Fehler beschreiben. Fehler können unter folgenden Bedingungen auftreten: • Die gelieferten Daten lassen sich nicht in den Datentyp dieses Felds umwandeln. Beispiel: "abc" kann nicht in eine Zahl umgewandelt werden. • Die Daten besitzen einen zulässigen Typ, erfüllen jedoch nicht die Überprüfungskriterien des Felds. • Das Feld ist schreibgeschützt. Hinweis: Der eigentliche Text der Meldung(en) variiert je nach Datentyp, Formatierer und Encoder, die im Schema des Felds festgelegt sind. Beschreibung Methode; legt einen neuen Wert für das Feld fest und verarbeitet es dabei gemäß den Informationen im Schema des Felds. Datenbindungsklassen (nur Flash Professional) 165 Bei dieser Methode wird zuerst DataType.setTypedValue() aufgerufen, um den Wert festzulegen. Wenn dies fehlschlägt, prüft die Methode, ob das Zielobjekt String-Daten, Boolesche Daten oder Zahlendaten annimmt. Ist dies der Fall, wird versucht, die entsprechenden ActionScript-Umwandlungsfunktionen zu verwenden. Beispiel In diesem Beispiel wird ein neues TypedValue-Objekt (ein Boolesches Objekt) erstellt und dieser Wert anschließend dem DataType-Objekt field zugewiesen. Alle auftretenden Fehler werden dem Array errors zugewiesen. import mx.data.binding.*; var t:TypedValue = new TypedValue (true, "Boolean"); var errors: Array = field.setAnyTypedValue (t); Siehe auch DataType.setTypedValue() DataType.setAsBoolean() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.setAsBoolean(newBooleanValue) Parameter newBooleanValue Ein Boolescher Wert. Rückgaben Keine. Beschreibung Methode; legt für das Feld den neuen Wert fest, der als Boolescher Wert angegeben ist. Der Wert wird in den für dieses Feld richtigen Datentyp umgewandelt und als solcher gespeichert. Beispiel var bool: Boolean = true; field.setAsBoolean (bool); 166 Kapitel 4: Komponenten-Referenz DataType.setAsNumber() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.setAsNumber(newNumberValue) Parameter newNumberValue Eine Zahl. Rückgaben Keine. Beschreibung Methode; legt für das Feld den neuen Wert fest, der als Zahl angegeben ist. Der Wert wird in den für dieses Feld richtigen Datentyp umgewandelt und als solcher gespeichert. Beispiel var num: Number = 32; field.setAsNumber (num); DataType.setAsString() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.setAsString(newStringValue) Parameter newStringValue Ein String. Rückgaben Keine. Beschreibung Methode; legt für das Feld den neuen Wert fest, der als String angegeben ist. Der Wert wird in den für dieses Feld richtigen Datentyp umgewandelt und als solcher gespeichert. Beispiel var stringVal: String = "Der neue Wert"; field.setAsString (stringVal); Datenbindungsklassen (nur Flash Professional) 167 DataType.setTypedValue() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataTypeObject.setTypedValue(newTypedValue) Parameter newValue Ein TypedValue-Objektwert, der in diesem Feld festgelegt werden soll. Weitere Informationen zu TypedValue-Objekten finden Sie unter „TypedValue-Klasse (nur Flash Professional)“ auf Seite 169. Rückgaben Ein Array von Strings, die alle beim Versuch der Festlegung des neuen Werts aufgetretenen Fehler beschreiben. Fehler können unter folgenden Bedingungen auftreten: • Der Typ der gelieferten Daten ist nicht zulässig. • Die gelieferten Daten lassen sich nicht in den Datentyp dieses Felds umwandeln. Beispiel: "abc" kann nicht in eine Zahl umgewandelt werden. • Die Daten besitzen einen zulässigen Typ, erfüllen jedoch nicht die Überprüfungskriterien des • Felds. Das Feld ist schreibgeschützt. Hinweis: Der eigentliche Text der Meldung(en) variiert je nach Datentyp, Formatierer und Encoder, die im Schema des Felds festgelegt sind. Beschreibung Methode; legt einen neuen Wert für das Feld fest und verarbeitet es dabei gemäß den Informationen im Schema des Felds. Diese Methode verhält sich ähnlich wie DataType.setAnyTypedValue(), versucht jedoch weniger stark, die Daten in einen zulässigen Typ umzuwandeln. Weitere Informationen finden Sie unter DataType.setAnyTypedValue(). Beispiel In diesem Beispiel wird ein neues TypedValue-Objekt (ein Boolesches Objekt) erstellt und dieser Wert anschließend dem DataType-Objekt field zugewiesen. Alle auftretenden Fehler werden dem Array errors zugewiesen. import mx.data.binding.*; var bool:TypedValue = new TypedValue (true, "Boolean"); var errors: Array = field.setTypedValue (bool); Siehe auch DataType.setTypedValue() 168 Kapitel 4: Komponenten-Referenz TypedValue-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.binding.TypedValue Ein TypedValue ist ein Objekt, das einen Datenwert und Informationen zu dessen Datentyp enthält. TypedValue-Objekte werden als Parameter für verschiedene Methoden der DataTypeKlasse geliefert und von diesen zurückgegeben. Die Datentypinformationen in den TypedValueObjekten helfen DataType-Objekten bei der Entscheidung, wann und wie Typumwandlungen durchgeführt werden müssen. Hinweis: Damit diese Klasse zur Laufzeit verfügbar ist, müssen Sie die DataBindingClassesKomponente dem FLA-Dokument hinzufügen. Weitere Informationen dazu finden Sie unter „Mit Datenbindung und Webdiensten zur Laufzeit arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Eine Übersicht der Klassen im mx.data.binding-Paket finden Sie unter „Datenbindungsklassen (nur Flash Professional)“ auf Seite 136. Übersicht: Eigenschaften der TypedValue-Klasse Eigenschaft Beschreibung TypedValue.type Enthält das mit dem Wert des TypedValue-Objekts verknüpfte Schema. TypedValue.typeName Enthält den Datentypnamen des TypedValue-Objektwerts. TypedValue.value Enthält den Datenwert des TypedValue-Objekts. Konstruktor für die TypedValue-Klasse Verfügbarkeit Flash Player 6 Version 79. Verwendung new mx.data.binding.TypedValue(value, typeName, [type]) Parameter value Ein Datenwert. Der Typ kann beliebig sein. typeName Ein String, der den Datentypnamen des Werts enthält. (Optional) Ein Schema-Objekt, das das Schema der Daten genauer beschreibt. Dieses Feld ist nur unter bestimmten Umständen erforderlich, beispielsweise beim Festlegen von Daten in der dataProvider-Eigenschaft einer DataSet-Komponente. type Beschreibung Konstruktor; erstellt ein neues TypedValue-Objekt. Datenbindungsklassen (nur Flash Professional) 169 TypedValue.type Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung typedValueObject.type Beschreibung Eigenschaft; enthält das mit dem Wert des TypedValue-Objekts verknüpfte Schema. Diese Eigenschaft wird nur unter bestimmten Umständen verwendet. Beispiel In diesem Beispiel wird „null“ im Bedienfeld Ausgabe angezeigt. var t: TypedValue = new TypedValue (true, "Boolean", null); trace(t.type); TypedValue.typeName Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung typedValueObject.typeName Beschreibung Eigenschaft; enthält den Datentypnamen des TypedValue-Objektwerts. Beispiel In diesem Beispiel wird „Boolean“ im Bedienfeld Ausgabe angezeigt. var t: TypedValue = new TypedValue (true, "Boolean", null); trace(t.typeName); TypedValue.value Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung typedValueObject.value 170 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; enthält den Datenwert des TypedValue-Objekts. Beispiel In diesem Beispiel wird „true“ im Bedienfeld Ausgabe angezeigt. var t: TypedValue = new TypedValue (true, "Boolean", null); trace(t.value); DataGrid-Komponente (nur Flash Professional) Die DataGrid-Komponente lässt sich zur Erstellung von leistungsstarken datenbetriebenen Darstellungen und Anwendungen einsetzen. Sie können die DataGrid-Komponente verwenden, um ein (aus einer Datenbankabfrage in ColdFusion, Java oder .Net abgerufenes) Recordset mit Macromedia Flash Remoting zu instanziieren und in Spalten anzuzeigen. Außerdem lassen sich Daten aus einem Datensatz oder einem Array zum Füllen einer DataGrid-Komponente verwenden. Die V2-DataGrid-Komponente wurde verbessert und umfasst nun horizontales Scrollen, verstärkte Ereignisunterstützung (z. B. für bearbeitbare Zellen), erweiterte Sortiermöglichkeiten und Leistungsoptimierungen. Eigenschaften wie Schriftart, Farbe und Ränder von Spalten in einem Raster können angepasst und in der Größe geändert werden. Ein benutzerdefinierter Movieclip lässt sich als „CellRenderer“ für alle Spalten eines Rasters verwenden. (Ein CellRenderer zeigt den Inhalt einer Zelle an.) Sie können mit Hilfe von Bildlaufleisten in den Daten eines Rasters navigieren, Bildlaufleisten ausschalten und mit den DataGrid-Methoden einen Seitenansichtsstil erstellen. Wenn Sie einer Anwendung die DataGrid-Komponente hinzufügen, können Sie die Komponente mit Hilfe des Bedienfelds Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Zeile in den Code einzufügen: mx.accessibility.DataGridAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der DataGrid-Komponente interagieren (nur Flash Professional) Die Interaktion mit einer DataGrid-Komponente kann über die Maus oder die Tastatur erfolgen. Wenn DataGrid.sortableColumns true und DataGridColumn.sortOnHeaderRelease ebenfalls true ist, wird durch Klicken in der Spaltenüberschrift das Raster nach den Zellwerten der Spalte sortiert. Wenn DataGrid.resizableColumns true ist, können Sie durch Klicken zwischen den Spalten die Spaltengröße ändern. Klicken innerhalb einer bearbeitbaren Zelle verschiebt den Fokus auf diese Zelle. Das Klicken auf eine nicht bearbeitbare Zelle hat keine Auswirkungen. Eine einzelne Zelle ist dann bearbeitbar, wenn die Eigenschaften DataGrid.editable und DataGridColumn.editable der Zelle true sind. DataGrid-Komponente (nur Flash Professional) 171 Besitzt eine DataGrid-Instanz durch Klicken oder durch Drücken der Tabulatortaste den Fokus, können Sie sie mit folgenden Tasten steuern: Taste Beschreibung Nach-unten-Taste Wenn eine Zelle bearbeitet wird, verschiebt sich die Einfügemarke an das Textende der Zelle. Ist die Zelle nicht bearbeitbar, erfolgt die Auswahl mit der Nach-unten-Taste wie mit der List-Komponente. Nach-oben-Taste Wenn eine Zelle bearbeitet wird, verschiebt sich die Einfügemarke an den Textanfang der Zelle. Ist die Zelle nicht bearbeitbar, erfolgt die Auswahl mit der Nach-oben-Taste wie mit der List-Komponente. Nach-rechts-Taste Wenn eine Zelle bearbeitet wird, verschiebt sich die Einfügemarke ein Zeichen nach rechts. Ist die Zelle nicht bearbeitbar, hat die Nach-rechtsTaste keine Wirkung. Nach-links-Taste Wenn eine Zelle bearbeitet wird, verschiebt sich die Einfügemarke ein Zeichen nach links. Ist die Zelle nicht bearbeitbar, hat die Nach-linksTaste keine Wirkung. Eingabetaste/ Umschalt+Eingabetaste Ist eine Zelle bearbeitbar, wird die Änderung übernommen und die Einfügemarke an die Zelle in derselben Spalte der nächsten Zeile verschoben (je nach Verwendung der Umschalttaste nach oben bzw. unten). Umschalt+Tab/Tab Verschiebt den Fokus auf das vorherige Element. Wird die Tabulatortaste gedrückt, erstreckt sich der Fokus von der letzten Spalte des Rasters bis zur ersten Spalte in der nächsten Zeile. Werden die Tasten <Umschalt>+<Tab> gedrückt, wird die Fokusrichtung umgekehrt. DataGrid-Komponente verwenden (nur Flash Professional) Die DataGrid-Komponente lässt sich als Grundlage für zahlreiche Typen datenbetriebener Anwendungen einsetzen. Sie können auf einfache Weise eine formatierte Tabellenansicht einer Datenbankabfrage (oder anderer Daten) anzeigen oder mit den CellRenderer-Möglichkeiten komplexere und bearbeitbare Teilbereiche von Benutzeroberflächen erstellen. Die DataGridKomponente kann beispielsweise für folgende Einsatzzwecke verwendet werden: • Webmail-Client • Suchergebnisseiten • Tabellenkalkulationsanwendungen, z. B. Darlehensberechnungen und Steuerformularanwendungen Die DataGrid-Komponente besteht aus folgenden beiden APIs: DataGrid-Klasse und DataGridColumn-Klasse. 172 Kapitel 4: Komponenten-Referenz Mit der DataGrid-Komponente arbeiten: Datenmodell und Ansicht Vom Konzept besteht die DataGrid-Komponente aus einem Datenmodell und einer Ansicht, in der die Daten dargestellt werden. Das Datenmodell setzt sich aus drei Hauptteilen zusammen: • DataProvider Hierbei handelt es sich um eine Liste von Elementen, mit denen das Datenraster gefüllt werden soll. Arrays, die sich im selben Bild wie eine DataGrid-Komponente befinden, erhalten automatisch Methoden (von der DataProvider-API), mit denen Sie Daten manipulieren und Änderungen an mehrere Ansichten senden können. Alle Objekte, die die DataProviderSchnittstelle implementieren, können der Eigenschaft DataGrid.dataProvider zugewiesen werden (einschließlich Recordsets, Datensätze usw.). Der folgende Code erstellt den Datenprovider meinDP: meinDP = new Array({name:"Chris", price:"Unbezahlbar"}, {name:"Nigel", price:"Billig"}); • Item (Element) Hierbei handelt es sich um ein ActionScript-Objekt, das zum Speichern von Informationen in den Zellen einer Spalte verwendet wird. Ein Datenraster ist eigentlich eine Liste, die mehrere Datenspalten anzeigen kann. Eine Liste kann als ein Array aufgefasst werden; jede indizierte Position der Liste entspricht einem Element. Bei der DataGrid-Komponente besteht jedes Element aus Feldern. Im folgenden Code ist der Inhalt in geschweiften Klammern ({}) ein Element: meinDP = new Array({name:"Chris", price:"Unbezahlbar"}, {name:"Nigel", price:"Billig"}); • Field (Feld) Bezeichner, die den Namen der Spalten in den Elementen angeben. Dies entspricht der Eigenschaft columnNames in der Spaltenliste. In der List-Komponente lauten die Felder normalerweise label und data, doch in der DataGrid-Komponente können die Felder alle Bezeichner sein. Im folgenden Code lauten die Felder name und price: meinDP = new Array({name:"Chris", price:"Unbezahlbar"}, {name:"Nigel", price:"Billig"}); Die Ansicht besteht aus drei Hauptteilen: • Row (Zeile) • Hierbei handelt es sich um ein Ansichtsobjekt, um die Rasterelemente durch Anordnung von Zellen darzustellen. Jede Zeile wird horizontal unter der vorherigen angeordnet. Column (Spalte) Sie besteht aus Ansichtsobjekten (Instanzen der DataGridColumn-Klasse), die für die Anzeige der einzelnen Spalten verantworlich sind, z. B. Breite, Farbe, Größe usw. Spalten können einem Datenraster auf drei Arten hinzugefügt werden: Weisen Sie DataGrid.dataProvider ein DataProvider-Objekt zu (dadurch wird für jedes Feld im ersten Element automatisch eine Spalte erzeugt); geben Sie an, dass DataGrid.columnNames festlegt, welche Felder angezeigt werden; oder erzeugen Sie Spalten mit dem Konstruktor für die DataGridColumn-Klasse, und rufen Sie DataGrid.addColumn() auf, um sie dem Raster hinzuzufügen. Zum Formatieren von Spalten richten Sie Stileigenschaften für das gesamte Datenraster ein oder definieren DataGridColumn-Objekte, richten deren Stilformate einzeln ein und fügen sie dem Datenraster hinzu. DataGrid-Komponente (nur Flash Professional) 173 • Cell (Zelle) Hierbei handelt es sich um ein Objekt, das für die Darstellung der einzelnen Felder jedes Elements verantwortlich ist. Um mit dem Datenraster zu kommunizieren, müssen diese Komponenten die CellRenderer-Schnittstelle implementieren (siehe „CellRenderer-API“ auf Seite 91). Bei einem einfachen Datenraster ist eine Zelle ein integriertes ActionScriptTextField-Objekt. DataGrid-Parameter Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede DataGrid-Komponenteninstanz festlegen: multipleSelection können (true) oder Ein Boolescher Wert, der angibt, ob mehrere Elemente ausgewählt werden nicht (false). Der Standardwert lautet false. Die Höhe jeder Zeile in Pixel. Ein Ändern der Schriftgröße hat keinen Einfluss auf die Zeilenhöhe. Der Standardwert ist 20. rowHeight editable Ein Boolescher Wert, der angibt, ob nicht (false). Der Standardwert lautet false. das Raster bearbeitet werden kann (true) oder Mit Hilfe von ActionScript können Sie diese und weitere Optionen für die DataGridKomponente über die Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter „DataGrid-Klasse (nur Flash Professional)“ auf Seite 176. Anwendungen mit der DataGrid-Komponente erstellen Um eine Anwendung mit der DataGrid-Komponenten zu erstellen, müssen Sie zuerst bestimmen, woher die Daten stammen. Die Daten können aus einem Recordset stammen, der aus einer Datenbankabfrage in Macromedia ColdFusion, Java oder .Net mit Flash Remoting geliefert wird. Die Datenquelle kann auch ein Datensatz oder ein Array sein. Um die Daten in ein Raster zu übertragen, legen Sie für die Eigenschaft DataGrid.dataProvider das Recordset, den Datensatz oder das Array fest. Sie können die Daten mit Hilfe der Methoden der DataGrid- und DataGridColumn-Klassen auch lokal erstellen. Alle Array-Objekte im selben Bild wie eine DataGrid-Komponente kopieren die Methoden, Eigenschaften und Ereignisse der DataProviderKlasse. So fügen Sie einer Anwendung eine DataGrid-Komponente mit Flash Remoting hinzu: 1 Wählen Sie in Flash Datei > Neu und Flash-Dokument aus. 2 Doppelklicken Sie im Bedienfeld Komponenten auf die DataGrid-Komponente, um sie der Bühne hinzuzufügen. 3 Geben Sie im Eigenschafteninspektor den Instanznamen meinDataGrid ein. 4 Geben Sie im Bedienfeld Aktionen in Bild 1 den folgenden Code ein: meinDataGrid.dataProvider = recordSetInstance; Der Flash Remoting-Recordset recordSetInstance wird der Eigenschaft dataProvider von meinDataGrid zugewiesen. 5 Wählen Sie Steuerung > Film testen. 174 Kapitel 4: Komponenten-Referenz So fügen Sie einer Anwendung eine DataGrid-Komponente mit Hilfe eines lokalen Datenproviders zu: 1 Wählen Sie in Flash Datei > Neu und Flash-Dokument aus. 2 Doppelklicken Sie im Bedienfeld Komponenten auf die DataGrid-Komponente, um sie der Bühne hinzuzufügen. 3 Geben Sie im Eigenschafteninspektor den Instanznamen meinDataGrid ein. 4 Geben Sie im Bedienfeld Aktionen in Bild 1 den folgenden Code ein: meinDP = new Array({name:"Chris", price:"Unbezahlbar"}, {name:"Nigel", price:"Billig"}); meinDataGrid.dataProvider = meinDP; Die Felder name und price werden als Spaltenüberschrift verwendet. Mit ihren Werten werden die Zellen in allen Zeilen gefüllt. 5 Wählen Sie Steuerung > Film testen. Die DataGrid-Komponente anpassen (nur Flash Professional) Sie können eine DataGrid-Komponente beim Authoring oder zur Laufzeit horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()). Ist keine horizontale Bildlaufleiste vorhanden, werden die Spaltenbreiten proportional angepasst. Falls eine Größenanpassung der Spalte (und damit der Zellen) eintritt, wird der Text in den Zellen möglicherweise abgeschnitten. Stile mit der DataGrid-Komponente verwenden Sie können Stileigenschaften festlegen, um die Darstellung der DataGrid-Komponente zu ändern. Die DataGrid-Komponente erbt die Kranz-Stile von der List-Komponente. (Weitere Informationen hierzu finden Sie unter „Stile mit der List-Komponente verwenden“ auf Seite 322.) Außerdem unterstützt die DataGrid-Komponente die folgenden Kranz-Stile: Stil Beschreibung backgroundColor Die Hintergrundfarbe lässt sich für das gesamte Raster oder für einzelne Spalten festlegen. labelStyle Der Schriftstil lässt sich für das gesamte Raster oder für einzelne Spalten festlegen. headerStyle Eine CSS-Stil-Deklaration für die Spaltenüberschrift, die auf ein Raster oder eine Spalte angewendet werden kann. vGridLines Ein Boolescher Wert, der angibt, ob vertikale Rasterlinien angezeigt werden (true) oder nicht (false). hGridLines Ein Boolescher Wert, der angibt, ob horizontale Rasterlinien angezeigt werden sollen (true) oder nicht (false). vGridLineColor Die Farbe der vertikalen Rasterlinien. hGridLineColor Die Farbe der horizontalen Rasterlinien. headerColor Die Farbe der Spaltenüberschriften. DataGrid-Komponente (nur Flash Professional) 175 Verwenden Sie folgende Syntax, um einen der in der obigen Tabelle genannten Stile für eine Spalte festzulegen: grid.getColumnAt(3).setStyle("backgroundColor", 0xff00aa) Skins mit der DataGrid-Komponente verwenden Die Skins zur Darstellung der visuellen Zustände der DataGrid-Komponente gehören zu den Unterkomponenten, aus denen das Datenraster gebildet wird (ScrollPane und RectBorder). Weitere Informationen finden Sie unter „Skins mit der ScrollPane-Komponente verwenden“ auf Seite 516 und „Skins mit der List-Komponente verwenden“ auf Seite 323. Für Rollover- und Auswahl-Elemente wird jedoch die ActionScript-API zum Zeichnen verwendet. Um beim Authoring für diese Teile des Datenrasters Skins zu verwenden, muss der ActionScript-Code für die Skinsymbole im Ordner Flash UI Components 2/Themes/ MMDefault/datagrid/skins states in der Bibliothek einer der als Themen bezeichneten FLADateien geändert werden. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. DataGrid-Klasse (nur Flash Professional) Vererbung mx.core.UIObject > mx.core.UIComponent > mx.core.View > mx.core.ScrollView > mx.controls.listclasses.ScrollSelectList > mx.controls.List ActionScript-Klassenname mx.controls.DataGrid Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.DataGrid.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineDataGridInstance.version);. Übersicht: Methoden der DataGrid-Klasse 176 Methode Beschreibung DataGrid.addColumn() Fügt dem Datenraster eine Spalte hinzu. DataGrid.addColumnAt() Fügt dem Datenraster an einer bestimmten Position eine Spalte hinzu. DataGrid.addItem() Fügt dem Datenraster ein Element hinzu. DataGrid.addItemAt() Fügt dem Datenraster an einer bestimmten Position ein Element hinzu. DataGrid.editField() Ersetzt die Zellendaten an einer bestimmten Position. DataGrid.getColumnAt() Ruft einen Verweis auf eine Spalte an einer bestimmten Position ab. DataGrid.getColumnIndex() Ruft den Index der Spalte ab. DataGrid.removeAllColumns() Entfernt alle Spalten aus einem Datenraster. Kapitel 4: Komponenten-Referenz Methode Beschreibung DataGrid.removeColumnAt() Entfernt eine Spalte an einer bestimmten Position aus dem Datenraster. DataGrid.replaceItemAt() Ersetzt ein Element an einer bestimmten Position durch ein anderes Element. DataGrid.spaceColumnsEqually() Legt für alle Spalten dieselbe Breite fest. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Eigenschaften der DataGrid-Klasse Eigenschaft Beschreibung DataGrid.columnCount Schreibgeschützte Eigenschaft. Die Anzahl der angezeigten Spalten. DataGrid.columnNames Ein Array mit den Feldnamen innerhalb jedes Elements, die als Spalten angezeigt werden. DataGrid.dataProvider Das Datenmodell für das Datenraster. DataGrid.editable Ein Boolescher Wert, der angibt, ob das Datenraster bearbeitet werden kann (true) oder nicht (false). DataGrid.focusedCell Definiert die Zelle mit dem Fokus. DataGrid.headerHeight Die Höhe der Spaltenüberschriften in Pixel. DataGrid.hScrollPolicy Gibt an, ob eine horizontale Bildlaufleiste angezeigt wird ("on"), nicht angezeigt wird ("off") oder nur bei Bedarf angezeigt wird ("auto"). DataGrid.resizableColumns Ein Boolescher Wert, der angibt, ob die Breite der Spalten geändert werden kann (true) oder nicht (false). DataGrid.selectable Ein Boolescher Wert, der angibt, ob das Datenraster ausgewählt werden kann (true) oder nicht (false). DataGrid.showHeaders Ein Boolescher Wert, der angibt, ob die Spaltenüberschriften angezeigt werden (true) oder nicht (false). DataGrid.sortableColumns Ein Boolescher Wert, der angibt, ob die Spalten sortiert werden können (true) oder nicht (false). DataGrid-Komponente (nur Flash Professional) 177 Übersicht: Ereignisse der DataGrid-Klasse Ereignis Beschreibung DataGrid.cellEdit Broadcastübertragung, wenn der Zellenwert sich geändert hat. DataGrid.cellFocusIn Broadcastübertragung, wenn eine Zelle den Fokus erhält. DataGrid.cellFocusOut Broadcastübertragung, wenn eine Zelle den Fokus verliert. DataGrid.cellPress Broadcastübertragung, wenn in eine Zelle geklickt wird. DataGrid.change Broadcastübertragung, wenn ein Element ausgewählt wurde. DataGrid.columnStretch Broadcastübertragung, wenn ein Benutzer die Größe einer Spalte geändert hat. DataGrid.headerRelease Broadcastübertragung, wenn ein Benutzer auf eine Überschrift klickt und die Maustaste wieder loslässt. DataGrid.addColumn() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.addColumn(dataGridColumn) meinDataGrid.addColumn(name) Parameter dataGridColumn name Eine Instanz der DataGridColumn-Klasse. Ein String, der den Namen eines neu einzufügenden DataGridColumn-Objekts angibt. Rückgaben Ein Verweis auf das DataGridColumn-Objekt, das hinzugefügt wurde. Beschreibung Methode; fügt eine neue Spalte am Ende des Datenrasters hinzu. Weitere Informationen finden Sie unter „DataGridColumn-Klasse (nur Flash Professional)“ auf Seite 197. Beispiel Mit dem folgendem Code wird ein neues DataGridColumn-Objekt mit dem Namen Violett hinzugefügt: import mx.controls.gridclasses.DataGridColumn; meinGrid.addColumn(new DataGridColumn("Violett")); 178 Kapitel 4: Komponenten-Referenz DataGrid.addColumnAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meinDataGrid.addColumnAt(index, name) Verwendung 2: meinDataGrid.addColumnAt(index, dataGridColumn) Parameter index Die Indexposition, an der das DataGridColumn-Objekt hinzugefügt wird. Die erste Position ist 0. Ein String, der den Namen des DataGridColumn-Objekts angibt. Es muss entweder der Parameter index oder der Parameter dataGridColumn angegeben werden. name dataGridColumn Eine Instanz der DataGridColumn-Klasse. Rückgaben Ein Verweis auf das DataGridColumn-Objekt, das hinzugefügt wurde. Beschreibung Methode; fügt eine neue Spalte an der angegebenen Position hinzu. Die Spalten werden nach rechts verschoben und deren Indizes entsprechend erhöht. Weitere Informationen finden Sie unter „DataGridColumn-Klasse (nur Flash Professional)“ auf Seite 197. Beispiel Im folgenden Beispiel wird ein neues DataGridColumn-Objekt mit dem Namen "Gruen" in der zweiten und vierten Spalte hinzugefügt: import mx.controls.gridclasses.DataGridColumn; meinGrid.addColumnAt(1, "Gruen"); meinGrid.addColumnAt(3, new DataGridColumn("Violett")); DataGrid.addItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.addItem(item) DataGrid-Komponente (nur Flash Professional) 179 Parameter item Eine Instanz des Objekts, das dem Raster hinzugefügt wird. Rückgaben Ein Verweis auf die Instanz, die hinzugefügt wurde. Beschreibung Methode; fügt ein Element am Ende des Rasters (nach dem letzten Element) hinzu. Hinweis: Der Unterschied zur Methode List.addItem() besteht darin, dass ein Objekt und kein String übergeben wird. Beispiel Im folgenden Beispiel wird dem Raster meinGrid ein neues Objekt hinzugefügt: var anObject= {name:"Jim!!", age:30}; var addedObject = meinGrid.addItem(anObject); DataGrid.addItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.addItemAt(index, item) Parameter index Die Reihenfolge (unter den Child-Knoten), in der der Knoten hinzugefügt werden soll. Die erste Position ist 0. item Ein String, der den Knoten angibt. Rückgaben Ein Verweis auf die Objektinstanz, die hinzugefügt wurde. Beschreibung Methode; fügt dem Raster ein Element an der angegebenen Position hinzu. Beispiel Im folgenden Beispiel wird dem Raster eine Objektinstanz an der Indexposition 4 hinzugefügt: var anObject= {name:"Jim!!", age:30}; var addedObject = meinGrid.addItemAt(4, anObject); 180 Kapitel 4: Komponenten-Referenz DataGrid.cellEdit Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.cellEdit = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("cellEdit", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn der Zellenwert geändert wurde. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Die DataGridKomponente setzt ein cellEdit-Ereignis ab, wenn der Wert einer Zelle geändert wurde, und dieses Ereignis wird durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.cellEdit hat vier weitere Eigenschaften: columnIndex itemIndex oldValue type Eine Zahl, die den Index der Zielspalte angibt. Eine Zahl, die den Index der Zielzeile angibt. Der vorherige Wert der Zelle. Der String "cellEdit". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinDataGridListener definiert und als zweiter Parameter an die Methode meinDataGrid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur cellEdit im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses cellEdit wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: meinDataGridListener = new Object(); meinDataGridListener.cellEdit = function(event){ var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")"; trace("Der Wert der Zelle " + cell + " wurde geändert"); } meinDataGrid.addEventListener("cellEdit", meinDataGridListener); Hinweis: Das Raster muss bearbeitet werden können, damit dieser Code funktioniert. DataGrid-Komponente (nur Flash Professional) 181 DataGrid.cellFocusIn Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.cellFocusIn = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("cellFocusIn", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn eine bestimmte Zelle den Fokus erhält. Dieses Ereignis wird erst dann in einer Broadcastübertragung gesendet, nachdem das editCell- und cellFocusOut-Ereignis einer zuvor geänderten Zelle in einer Broadcastübertragung gesendet wurden. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn eine DataGridKomponente ein cellFocusIn-Ereignis absetzt, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.cellFocusIn hat drei weitere Eigenschaften: columnIndex itemIndex type Eine Zahl, die den Index der Zielspalte angibt. Eine Zahl, die den Index der Zielzeile angibt. Der String "cellFocusIn". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur cellFocusIn im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses cellFocusIn wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: var meinListener = new Object(); meinListener.cellFocusIn = function(event) { var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")"; trace("Die Zelle " + cell + " hat den Fokus erhalten"); }; grid.addEventListener("cellFocusIn", meinListener); Hinweis: Das Raster muss bearbeitet werden können, damit dieser Code funktioniert. 182 Kapitel 4: Komponenten-Referenz DataGrid.cellFocusOut Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.cellFocusOut = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("cellFocusOut", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn der Benutzer eine Zelle mit Fokus verlässt. Mit Hilfe der Eigenschaften des Ereignisobjekts können Sie feststellen, welche Zelle verlassen wurde. Dieses Ereignis wird in einer Broadcastübertragung gesendet, nachdem das cellEdit-Ereignis und bevor ein eventuell nachfolgendes cellFocusIn-Ereignis von der nächsten Zelle in einer Broadcastübertragung gesendet wird. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn eine DataGridKomponente ein cellFocusOut-Ereignis absetzt, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.cellFocusOut hat drei weitere Eigenschaften: columnIndex itemIndex type Eine Zahl, die den Index der Zielspalte angibt. Die erste Position ist 0. Eine Zahl, die den Index der Zielzeile angibt. Die erste Position ist 0. Der String "cellFocusOut". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur cellFocusOut im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses cellFocusOut wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: var meinListener = new Object(); meinListener.cellFocusOut = function(event) { var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")"; trace("Die Zelle " + cell + " hat den Fokus verloren"); }; grid.addEventListener("cellFocusOut", meinListener); Hinweis: Das Raster muss bearbeitet werden können, damit dieser Code funktioniert. DataGrid-Komponente (nur Flash Professional) 183 DataGrid.cellPress Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.cellPress = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("cellPress", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn ein Benutzer die Maustaste über einer Zelle drückt. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn eine DataGridKomponente ein cellPress-Ereignis in einer Broadcastübertragung sendet, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.cellPress hat drei weitere Eigenschaften: columnIndex itemIndex type Eine Zahl, die den Index der Zielspalte angibt. Die erste Position ist 0. Eine Zahl, die den Index der Zielzeile angibt. Die erste Position ist 0. Der String "cellPress". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur cellPress im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses cellPress wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: var meinListener = new Object(); meinListener.cellPress = function(event) { var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")"; trace("Es wurde in die Zelle " + cell + " geklickt"); }; grid.addEventListener("cellPress", meinListener); 184 Kapitel 4: Komponenten-Referenz DataGrid.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn ein Element ausgewählt wurde. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn eine DataGridKomponente ein change-Ereignis absetzt, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.change hat eine weitere Eigenschaft, type, mit dem Wert "change". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur change im Parameter eventObject wiedergegeben. Wenn das change-Ereignis als Broadcastübertragung verteilt wird, wird eine trace-Anweisung an das Bedienfeld Ausgabe gesendet. var meinListener = new Object(); meinListener.change = function(event) { trace("Die Auswahl wurde geändert auf " + event.target.selectedIndex); }; grid.addEventListener("change", meinListener); DataGrid-Komponente (nur Flash Professional) 185 DataGrid.columnCount Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.columnCount Beschreibung Eigenschaft (schreibgeschützt); die Anzahl der angezeigten Spalten. Beispiel Im folgenden Beispiel wird die Anzahl der angezeigten Spalten in der DataGrid-Instanz grid abgerufen: var c = grid.columnCount; DataGrid.columnNames Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.columnNames Beschreibung Eigenschaft; ein Array mit Feldnamen von jedem Element, die als Spalten angezeigt werden. Beispiel In folgendem Beispiel wird festgelegt, dass in der Instanz grid nur die angegebenen drei Felder als Spalten angezeigt werden sollen: grid.columnNames = ["Name", "Beschreibung", "Preis"]; DataGrid.columnStretch Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. 186 Kapitel 4: Komponenten-Referenz Verwendung listenerObject = new Object(); listenerObject.columnStretch = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("columnStretch", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn ein Benutzer die Breite einer Spalte ändert. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn eine DataGridKomponente ein columnStretch-Ereignis absetzt, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.columnStretch hat zwei weitere Eigenschaften: columnIndex type Eine Zahl, die den Index der Zielspalte angibt. Die erste Position ist 0. Der String "columnStretch". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur columnStretch im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses columnStretch wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: var meinListener = new Object(); meinListener.columnStretch = function(event) { trace("Die Größe der Spalte " + event.columnIndex + " wurde geändert"); }; grid.addEventListener("columnStretch", meinListener); DataGrid-Komponente (nur Flash Professional) 187 DataGrid.dataProvider Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.dataProvider Beschreibung Eigenschaft; das Datenmodell der in der DataGrid-Komponente angezeigten Elemente. Das Datenraster fügt dem Prototypen der Array-Klasse Methoden hinzu, damit jedes ArrayObjekt der DataProvider-Schnittstelle entspricht (siehe Datei DataProvider.as im Ordner Classes/mx/controls/listclasses). Ein Array, das sich in demselben Bild oder Bildschirm wie ein Datenraster befindet, verfügt automatisch über alle erforderlichen Methoden (addItem(), getItemAt() usw.), um als Datenmodell des Datenrasters zu funktionieren und Änderungen des Datenmodells in einer Broadcastübertragung an mehrere Komponenten zu senden. In einer DataGrid-Komponente können Sie die Felder angeben, die in der Eigenschaft angezeigt werden soll. DataGrid.columnNames Wenn Sie die Spaltengruppe für das Datenraster nicht definieren (indem Sie die Eigenschaft DataGrid.columnNames festlegen oder die Methode DataGrid.addColumn() aufrufen), bevor die Eigenschaft DataGrid.dataProvider festgelegt wird, generiert das Datenraster Spalten für jedes Feld im ersten Element des Datenproviders, sobald das Element empfangen wird. Jedes Objekt, das die DataProvider-Schnittstelle implementiert, kann als Datenprovider für ein Datenraster verwendet werden (einschließlich Flash Remoting RecordSets, Datensätze und Arrays). Beispiel Im folgenden Beispiel wird ein Array zur Verwendung als Datenprovider erstellt und direkt der Eigenschaft dataProvider zugeordnet: grid.dataProvider = [{name:"Chris", price:"OhnePreis"}, {name:"Nigel", Price:"Billig"}]; Im folgenden Beispiel wird ein neues Array-Objekt mit einer Zuordnung zur DataProvider-Klasse erstellt. Mit Hilfe einer for-Schleife werden dem Raster 20 Elemente hinzugefügt: meinDP = new Array(); for (var i=0; i<20; i++) meinDP.addItem({name:"Nivesh", price:"OhnePreis"}); list.dataProvider = meinDP 188 Kapitel 4: Komponenten-Referenz DataGrid.editable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.editable Beschreibung Eigenschaft; gibt an, ob das Datenraster von einem Benutzer geändert werden kann (true) oder nicht (false). Für diese Eigenschaft muss der Wert true festgelegt werden, damit einzelne Spalten geändert werden können und eine Zelle den Fokus erhalten kann. Der Standardwert lautet false. Beispiel Im folgenden Beispiel wird als Bildlaufposition der obere Rand der Anzeige festgelegt: meinDataGrid.editable = true; DataGrid.editField() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.editField(index, colName, data) Parameter index Der Index der Zielzelle. Die Bezugsbasis für diese Zahl ist 0. colName Ein String, der den Namen der Spalte (bzw. des Feldes) angibt, in der sich die Zielzelle befindet. Der Wert, der in der Zielzelle gespeichert werden soll. Dieser Parameter kann einen beliebigen Datentyp haben. data Rückgaben Die Daten der Zelle. Beschreibung Methode; ersetzt die Zellendaten an der angegebenen Position. Beispiel In folgendem Beispiel wird ein Wert im Raster platziert: var prevValue = meinGrid.editField(5, "Name", "Neo"); DataGrid-Komponente (nur Flash Professional) 189 DataGrid.focusedCell Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.focusedCell Beschreibung Eigenschaft; eine Objektinstanz, mit der die Zelle, die den Fokus hat, definiert wird (nur im Bearbeitungsmodus). Das Objekt muss die Felder columnIndex und itemIndex haben, in denen jeweils mit Ganzzahlen der Index der Spalte und des Elements der Zelle angegeben wird. Der Ursprungswert ist (0,0). Der Standardwert ist undefined. Beispiel In folgendem Beispiel wird als Zelle mit dem Fokus die Zelle in Spalte 3 und Reihe 4 festgelegt: grid.focusedCell = {columnIndex:2, itemIndex:3}; DataGrid.getColumnAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index) Parameter index Der Index des DataGridColumn-Objekts, das zurückgegeben werden soll. Die Bezugsbasis für diese Zahl ist 0. Rückgaben Ein DataGridColumn-Objekt. Beschreibung Methode; ruft einen Verweis auf das DataGridColumn-Objekt am angegebenen Index ab. Beispiel Im folgenden Beispiel wird das DataGridColumn-Objekt am Index 4 abgerufen: var aColumn = meinGrid.getColumnAt(4); 190 Kapitel 4: Komponenten-Referenz DataGrid.getColumnIndex() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnIndex(index) Parameter index Der Index des DataGridColumn-Objekts, das zurückgegeben werden soll. Rückgaben Ein DataGridColumn-Objekt. Beschreibung Methode; ruft einen Verweis auf das DataGridColumn-Objekt am angegebenen Index ab. DataGrid.headerHeight Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.headerHeight Beschreibung Eigenschaft; die Höhe der Titelleiste des Datenrasters. Der Standardwert ist 20. Beispiel Im folgenden Beispiel wird als Bildlaufposition der obere Rand der Anzeige festgelegt: meinDataGrid.headerHeight = 30; DataGrid-Komponente (nur Flash Professional) 191 DataGrid.headerRelease Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.headerRelease = function(eventObject){ // Hier Code eingeben } meineDataGridInstance.addEventListener("headerRelease", listenerObject) Beschreibung Ereignis; sendet Broadcastübertragung an alle registrierten Listener, wenn auf eine Spaltenüberschrift geklickt wurde. Sie können dieses Ereignis zusammen mit der Eigenschaft DataGridColumn.sortOnHeaderRelease verwenden, um festzulegen, dass keine automatische Sortierung ausgeführt wird, sondern nur bei Bedarf sortiert wird. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn die DataGridKomponente ein headerRelease-Ereignis absetzt, wird das Ereignis durch eine Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Ereignisses DataGrid.headerRelease hat zwei weitere Eigenschaften: columnIndex type Eine Zahl, die den Index der Zielspalte angibt. Der String "headerRelease". Weitere Informationen finden Sie unter „Ereignisobjekte“ auf Seite 619. Beispiel Im folgenden Beispiel wird die Prozedur meinListener definiert und als zweiter Parameter an die Methode grid.addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur headerRelease im Parameter eventObject wiedergegeben. Bei der Broadcastübertragung des Ereignisses headerRelease wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: var meinListener = new Object(); meinListener.headerRelease = function(event) { trace("Es wurde auf die Überschrift der Spalte " + event.columnIndex + " geklickt"); }; grid.addEventListener("headerRelease", meinListener); 192 Kapitel 4: Komponenten-Referenz DataGrid.hScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.hScrollPolicy Beschreibung Eigenschaft; gibt an, ob das Datenraster eine horizontale Bildlaufleiste hat. Diese Eigenschaft kann einen der folgenden drei Werte haben: "on", "off" und "auto". Der Standardwert lautet off. Wenn Sie für hScrollPolicy den Wert "off" festlegen, wird die Breite der Spalten entsprechend der unveränderlichen Gesamtbreite proportional angepasst. Beispiel Im folgenden Beispiel wird für die Eigenschaft der horizontalen Bildlaufleiste der Wert für die automatische Anzeige festgelegt: meinDataGrid.hScrollPolicy = "auto"; DataGrid.removeAllColumns() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.removeAllColumns() Parameter Keine. Rückgaben Keine. Beschreibung Methode; entfernt alle DataGridColumn-Objekte aus dem Datenraster. Das Aufrufen dieser Methode wirkt sich nicht auf den Datenprovider aus. Beispiel Im folgenden Beispiel werden alle DataGridColumn-Objekte aus meinDataGrid entfernt: meinDataGrid.removeAllColumns(); DataGrid-Komponente (nur Flash Professional) 193 DataGrid.removeColumnAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.removeColumnAt(index) Parameter Der Index der Spalte, die entfernt werden soll. index Rückgaben Ein Verweis auf das DataGridColumn-Objekt, das entfernt wurde. Beschreibung Methode; entfernt das DataGridColumn-Objekt an der angegebenen Indexposition. Beispiel Im folgenden Beispiel wird das DataGridColumn-Objekt an der Indexposition 2 aus meinDataGrid entfernt: meinDataGrid.removeColumnAt(2); DataGrid.replaceItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.replaceItemAt(index, item) Parameter index item Der Index des Elements, das ersetzt werden soll. Ein Objekt, durch das der Elementwert ersetzt werden soll. Rückgaben Der vorherige Wert. Beschreibung Methode; ersetzt das Element an der angegebenen Indexposition. 194 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird das Element an der Indexposition 4 durch das in aNewValue definierte Element ersetzt: var aNewValue = {name:"Jim", value:"muede"}; var prevValue = meinGrid.replaceItemAt(4, aNewValue); DataGrid.resizableColumns Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.resizableColumns Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Spalten des Rasters von einem Betrachter geändert werden können (true) oder nicht (false). Für diese Eigenschaft muss der Wert true festgelegt werden, damit die Größe einzelner Spalten geändert werden kann. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass Benutzer die Größe von Spalten nicht ändern können: meinDataGrid.resizableColumns = false; DataGrid.selectable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.selectable Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob ein Benutzer das Datenraster auswählen kann (true) oder nicht (false). Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass das Raster nicht ausgewählt werden kann: meinDataGrid.selectable = false; DataGrid-Komponente (nur Flash Professional) 195 DataGrid.showHeaders Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.showHeaders Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob im Datenraster die Spaltenüberschriften angezeigt werden (true) oder nicht (false). Spaltenüberschriften sind farblich unterlegt, damit sie von anderen Zeilen im Raster unterschieden werden können. Benutzer können auf eine Spaltenüberschrift klicken, um den Inhalt der jeweiligen Spalte zu sortieren, sofern für DataGrid.sortableColumns der Wert true festgelegt ist. Der Standardwert lautet true. Beispiel Im folgenden Beispiel werden die Spaltenüberschriften ausgeblendet: meinDataGrid.showHeaders = false; Siehe auch DataGrid.sortableColumns DataGrid.sortableColumns Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.sortableColumns Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob der Inhalt der Spalten im Datenraster sortiert werden kann (true), indem ein Benutzer auf die Spaltenüberschrift klickt, oder nicht (false). Für diese Eigenschaft muss der Wert true festgelegt werden, damit der Inhalt einzelner Spalten sortiert werden kann. Für diese Eigenschaft muss der Wert true festgelegt werden, damit das Ereignis headerRelease in einer Broadcastübertragung gesendet wird. Der Standardwert lautet true. 196 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird das Sortieren deaktiviert: meinDataGrid.sortableColumns = false; Siehe auch DataGrid.headerRelease DataGrid.spaceColumnsEqually() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.spaceColumnsEqually() Parameter Keine. Rückgaben Keine. Beschreibung Methode; weist allen Spalten dieselbe Breite zu. Beispiel Im folgenden Beispiel wird den Spalten von meinGrid dieselbe Breite zugewiesen, wenn auf eine der Spaltenüberschriften geklickt und die Maustaste wieder losgelassen wird: meinGrid.showHeaders = true meinGrid.dataProvider = [{guitar:"Flying V", name:"maggot"}, {guitar:"SG", name:"dreschie"}, {guitar:"jagstang", name:"vitapup"}]; gridLO = new Object(); gridLO.headerRelease = function(){ meinGrid.spaceColumnsEqually(); } meinGrid.addEventListener("headerRelease", gridLO); DataGridColumn-Klasse (nur Flash Professional) ActionScript-Klassenname mx.controls.gridclassesDataGridColumn Sie können DataGridColumn-Objekte erstellen und als Spalten eines Datenrasters konfigurieren. Viele Methoden der DataGrid-Klasse dienen zur Verwaltung von DataGridColumn-Objekten. DataGridColumn-Objekte werden im Datenraster in einem Array mit der Bezugsbasis 0 gespeichert, wobei 0 der Spalte ganz links entspricht. Nachdem Spalten hinzugefügt oder erstellt wurden, können Sie DataGrid.getColumnAt(index) aufrufen, um darauf zuzugreifen. DataGrid-Komponente (nur Flash Professional) 197 Es gibt drei verschiedene Möglichkeiten, um in einem Raster Spalten hinzuzufügen oder zu erstellen. Wenn Sie Ihre Spalten konfigurieren möchten, sollten Sie die zweite oder dritte Möglichkeit wählen, bevor Sie dem Datenraster Daten hinzufügen, damit Sie keine Spalten zweimal erstellen müssen. • Wenn Sie einem Raster ohne konfigurierte DataGridColumn-Objekte ein DataProvider• • Objekt oder ein Element mit mehreren Feldern hinzufügen, wird automatisch für jedes Feld eine Spalte generiert, und zwar in umgekehrter Reihenfolge der for..in-Schleife. DataGrid.columnNames nimmt die Feldnamen der gewünschten Elementfelder auf und generiert für jedes der aufgelisteten Felder ein DataGridColumn-Objekt in der entsprechenden Reihenfolge. Auf diese Weise können Sie Spalten bei minimalem Konfigurationsaufwand schnell auswählen und sortieren. Dabei werden alle zuvor vorhandenen Spalteninformationen entfernt. Die flexibelste Art, Spalten hinzuzufügen, ist es, sie vorab als DataGridColumn-Objekte zu erstellen und dann mit der Methode DataGrid.addColumn() dem Datenraster hinzuzufügen. Der Vorteil dieser Vorgehensweise ist, dass Sie die Größe und Formatierung der Spalten optimal festlegen können, bevor sie dem Datenraster hinzugefügt werden (dadurch wird die erforderliche Prozessorleistung reduziert). Weitere Informationen finden Sie unter „Konstruktor für die DataGridColumn-Klasse“ auf Seite 199. Übersicht: Eigenschaften der DataGridColumn-Klasse Eigenschaft Beschreibung DataGridColumn.cellRenderer Der Verknüpfungsbezeichner eines Symbols, mit dem die Zellen in dieser Spalte angezeigt werden. DataGridColumn.columnName Schreibgeschützte Eigenschaft. Der Name des Feldes, das dieser Spalte zugeordnet ist. DataGridColumn.editable Ein Boolescher Wert, der angibt, ob die Spalte bearbeitet werden kann (true) oder nicht (false). DataGridColumn.headerRenderer Der Name einer Klasse, mit der die Überschrift der Spalte angezeigt werden kann. DataGridColumn.headerText Der Text der Überschrift für diese Spalte. DataGridColumn.labelFunction Eine Funktion, die angibt, welches Feld eines Elements angezeigt werden soll. DataGridColumn.resizable Ein Boolescher Wert, der angibt, ob die Breite der Spalte geändert werden kann (true) oder nicht (false). DataGridColumn.sortable Ein Boolescher Wert, der angibt, ob die Spalte sortiert werden kann (true) oder nicht (false). DataGridColumn.sortOnHeaderRelease Ein Boolescher Wert, der angibt, ob eine Spalte sortiert wird (true), wenn ein Benutzer auf die Spaltenüberschrift klickt, oder nicht (false). DataGridColumn.width 198 Kapitel 4: Komponenten-Referenz Die Breite einer Spalte in Pixel. Konstruktor für die DataGridColumn-Klasse Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung new DataGridColumn(name) Parameter Ein String, der den Namen des DataGridColumn-Objekts angibt. Dieser Parameter gibt das Feld jedes angezeigten Elements an. name Rückgaben Keine. Beschreibung Konstruktor; erstellt ein DataGridColumn-Objekt. Mit diesem Konstruktor können Sie Spalten erstellen, um sie einer DataGrid-Komponente hinzuzufügen. Nachdem Sie DataGridColumnObjekte erstellt haben, können Sie sie dem Datenraster hinzufügen, indem Sie die Methode DataGrid.addColumn() aufrufen. Beispiel Im folgenden Beispiel wird das DataGridColumn-Objekt Position erstellt: import mx.controls.gridclasses.DataGridColumn; var column = new DataGridColumn("Position"); DataGridColumn.cellRenderer Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).cellRenderer Beschreibung Eigenschaft; der Verknüpfungsbezeichner für ein Symbol, mit dem Zellen in dieser Spalte angezeigt werden. Alle Klassen, die für diese Eigenschaft verwendet werden, müssen die CellRenderer-Schnittstelle implementieren. (Weitere Informationen finden Sie unter „CellRenderer-API“ auf Seite 91.) Der Standardwert ist undefined. DataGrid-Komponente (nur Flash Professional) 199 Beispiel Das folgende Beispiel richtet einen neuen CellRenderer mit Hilfe eines Verknüpfungsbezeichners ein: meinGrid.getColumnAt(3).cellRenderer = "MeinCellRenderer"; DataGridColumn.columnName Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).columnName Beschreibung Eigenschaft (schreibgeschützt); der Name des Feldes, das dieser Spalte zugeordnet ist. Der Standardwert ist der Name, der im DataGridColumn-Konstruktor aufgerufen wird. Beispiel Im folgenden Beispiel wird der Name der Spalte an der dritten Indexposition der Variablen name zugeordnet. var name = meinGrid.getColumnAt(3).columnName; Siehe auch Konstruktor für die DataGridColumn-Klasse DataGridColumn.editable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).editable Beschreibung Eigenschaft; gibt an, ob die Spalte von einem Benutzer geändert werden kann (true) oder nicht (false). Für die Eigenschaft DataGrid.editable muss der Wert true festgelegt werden, damit einzelne Spalten geändert werden können, selbst wenn für DataGridColumn.editable der Wert true festgelegt ist. Der Standardwert lautet true. 200 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird festgelegt, dass die erste Spalte in dem Raster nicht geändert werden kann: meinDataGrid.getColumnAt(0).editable = false; Siehe auch DataGrid.editable DataGridColumn.headerRenderer Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).headerRenderer Beschreibung Eigenschaft; ein String, der einen Klassennamen angibt, der zum Anzeigen der Überschrift für diese Spalte verwendet werden soll. Alle Klassen, die für diese Eigenschaft verwendet werden, müssen die CellRenderer-Schnittstelle implementieren. (Weitere Informationen finden Sie unter „CellRenderer-API“ auf Seite 91.) Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird ein neuer HeaderRenderer mit Hilfe eines Verknüpfungsbezeichners eingerichtet: meinGrid.getColumnAt(3).headerRenderer = "MeinHeaderRenderer"; DataGridColumn.headerText Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).headerText Beschreibung Eigenschaft; der Text der Spaltenüberschrift. Der Standardwert ist der Spaltenname. Beispiel Im folgenden Beispiel wird als Spaltenüberschrift „Der Preis“ festgelegt: var meineColumn = new DataGridColumn("Preis"); meineColumn.headerText = "Der Preis"; DataGrid-Komponente (nur Flash Professional) 201 DataGridColumn.labelFunction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).labelFunction Beschreibung Eigenschaft; gibt eine Funktion an, mit der festgelegt wird, welches Feld bzw. welche Feldkombination für jedes Element angezeigt werden soll. Diese Funktion erhält genau einen Parameter, nämlich item, bei dem es sich um das gerenderte Element handelt, und muss einen String zurückgeben, der den anzuzeigenden Text darstellt. Mit dieser Eigenschaft können virtuelle Spalten erstellt werden, die kein übereinstimmendes Feld in diesem Element haben. Beispiel Im folgenden Beispiel wird eine virtuelle Spalte erstellt: var meineCol = meinGrid.addColumn("Teilsumme"); meineCol.labelFunction = function(item) { return "$" + (item.price + (item.price * salesTax)); }; DataGridColumn.resizable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).resizable Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Größe einer Spalte von einem Benutzer geändert werden kann (true) oder nicht (false). Für die Eigenschaft DataGrid.resizableColumns muss der Wert true festgelegt sein, damit diese Eigenschaft wirksam wird. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass die Größe der Spalte an der Indexposition 1 nicht geändert werden kann: meinGrid.getColumnAt(1).resizable = false; 202 Kapitel 4: Komponenten-Referenz DataGridColumn.sortable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).sortable Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob der Inhalt einer Spalte von einem Benutzer sortiert werden kann (true) oder nicht (false). Für die Eigenschaft DataGrid.sortableColumns muss der Wert true festgelegt sein, damit diese Eigenschaft wirksam wird. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass der Inhalt der Spalte an der Indexposition 1 nicht sortiert werden kann: meinGrid.getColumnAt(1).sortable = false; DataGrid-Komponente (nur Flash Professional) 203 DataGridColumn.sortOnHeaderRelease Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).sortOnHeaderRelease Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob der Inhalt einer Spalte automatisch sortiert wird (true), wenn ein Benutzer auf die Spaltenüberschrift klickt, oder nicht (false). Für diese Eigenschaft kann der Wert true nur festgelegt werden, wenn auch für DataGridColumn.sortable der Wert true festgelegt ist. Wenn für DataGridColumn.sortOnHeaderRelease der Wert false festgelegt ist, können Sie das Ereignis headerRelease auslösen, um den Inhalt bei Bedarf zu sortieren. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass Sie das Ereignis headerRelease auslösen können, um den Inhalt bei Bedarf zu sortieren: meinGrid.getColumnAt(7).sortOnHeaderRelease = false; DataGridColumn.width Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDataGrid.getColumnAt(index).width Beschreibung Eigenschaft; eine Zahl, mit der die Breite der Spalte in Pixel angegeben wird. Der Standardwert ist 50. Beispiel Im folgenden Beispiel wird die Breite einer Spalte auf die Hälfte des Standardwerts verringert: meinGrid.getColumnAt(4).width = 25; 204 Kapitel 4: Komponenten-Referenz DataHolder-Komponente (nur Flash Professional) Die DataHolder-Komponente ist ein Repository für Daten und dient zum Generieren von Ereignissen, wenn diese Daten geändert werden. Die Hauptfunktion dieser Komponente ist die Speicherung von Daten und die Verbindung zwischen anderen Komponenten mit Hilfe von Datenbindung. Zunächst besitzt die DataHolder-Komponente nur eine bindbare Eigenschaft mit dem Namen data. Im Bedienfeld Komponenten-Inspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor) auf der Registerkarte Schema können Sie weitere Eigenschaften hinzufügen. Weitere Informationen zur Registerkarte Schema finden Sie in der Hilfe „Flash verwenden“ unter „Mit Schemata auf der Registerkarte ,Schema‘ arbeiten (nur Flash Professional)“. Sie können einer DataHolder-Eigenschaft einen beliebigen Datentyp zuordnen, indem Sie entweder eine Bindung zwischen den Daten und einer anderen Eigenschaft erstellen, oder indem Sie Ihren eigenen ActionScript-Code verwenden. Wenn sich der Wert dieser Daten ändert, gibt die DataHolder-Komponente ein Ereignis aus, dessen Name dem der Eigenschaft entspricht, und alle Bindungen, die der Eigenschaft zugeordnet sind, werden ausgeführt. Die DataHolder-Komponente ist nützlich, wenn Sie keine direkte Bindung zwischen Komponenten erstellen können (z. B. bei Verbindungen, Komponenten der Benutzerschnittstelle oder DataSet-Komponenten). In den folgenden Abschnitten werden einige Fälle erläutert, in denen die Verwendung einer DataHolder-Komponente sinnvoll ist: • Wenn ein Datenwert von ActionScript generiert wird, kann es sinnvoll sein, ihn mit einigen • anderen Komponenten zu verbinden. In diesem Fall können Sie eine DataHolderKomponente einrichten, die Eigenschaften mit den gewünschten Bindungen enthält. Wenn diesen Eigenschaften neue Werte zugeordnet werden (z. B. mit Hilfe von ActionScript), werden diese Werte an die Datenbindungsobjekte verteilt. Möglicherweise haben Sie einen Datenwert, der aus einer komplexen indizierten Datenbindung stammt, wie im folgenden Diagramm gezeigt. Web Service-Methode getMovies Ergebnisse Ergebnisse[movieList.selectedIndex] DataModel meinDataModel UI ListBox movieList data.movieTitle UI TextField Titel data.movieRating UI TextField Bewertung data.movieTimes UI ListBox Wiederholungen In diesem Fall ist es nützlich, den Datenwert an eine DataHolder-Komponente (in der Abbildung mit DataModel bezeichnet) zu binden und diese dann für Bindungen zur Benutzerschnittstelle zu verwenden. DataHolder-Komponente (nur Flash Professional) 205 Anwendungen mit der DataHolder-Komponente erstellen (nur Flash Professional ) In diesem Beispiel wird dem Schema (Array) einer DataHolder-Komponente eine ArrayEigenschaft hinzugefügt, deren Wert durch den von Ihnen erstellten ActionScript-Code bestimmt wird. Anschließend wird diese Array-Eigenschaft im Bedienfeld Komponenten-Inspektor auf der Registerkarte Bindungen an die Eigenschaft dataProvider einer DataGrid-Komponente gebunden. So verwenden Sie die DataHolder-Komponente in einer einfachen Anwendung: 1 Erstellen Sie in Flash MX Professional 2004 eine neue Datei. 2 Öffnen Sie das Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > Komponenten), ziehen Sie eine DataHolder-Komponente auf die Bühne, und geben Sie ihr den Namen dataHolder. 3 Ziehen Sie eine DataGrid-Komponente auf die Bühne, und geben Sie ihr den Namen namesGrid. 4 Wählen Sie die DataHolder-Komponente aus, und öffnen Sie das Bedienfeld KomponentenInspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor). 5 Klicken Sie im Bedienfeld Komponenten-Inspektor auf die Registerkarte Schema. 6 Klicken Sie im oberen Feld der Registerkarte Schema auf die Schaltfläche zum Hinzufügen von Komponenteneigenschaften (+). 7 Geben Sie im unteren Feld der Registerkarte Schema als Feldname namesArray ein, und wählen Sie im Popupmenü data type (Datentyp) den Eintrag Array aus. 8 Klicken Sie im Bedienfeld Komponenten-Inspektor auf die Registerkarte Bindungen, und fügen Sie eine Bindung zwischen der Eigenschaft namesArray der DataHolder-Komponente und der Eigenschaft dataProvider der DataGrid-Komponente hinzu. Weitere Informationen zum Erstellen von Bindungen auf der Registerkarte Bindungen finden Sie in der Hilfe „Flash verwenden“ unter „Mit Bindungen auf der Registerkarte ,Bindungen‘ arbeiten (nur Flash Professional)“. 9 Wählen Sie in der Zeitleiste (Fenster > Zeitleiste) das erste Bild in Ebene 1 aus, und öffnen Sie das Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen). 10 Geben Sie im Bedienfeld Aktionen den folgenden Code ein: dataHolder.namesArray= [{name:"Tim"},{name:"Paul"},{name:"Jason"}]; Mit diesem Code werden mehrere Objekte an das Array namesArray übergeben. Bei der Ausführung dieser Variablenzuordnung wird auch die zuvor von Ihnen eingerichtete Bindung zwischen der DataHolder-Komponente und der DataGrid-Komponente ausgeführt. 11 Testen Sie die Datei mit Steuerung > Film testen. Übersicht: Eigenschaften der DataHolder-Klasse 206 Eigenschaft Beschreibung DataHolder.data Bindbare Standardeigenschaft für die DataHolder-Komponente. Kapitel 4: Komponenten-Referenz DataHolder.data Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung dataHolder.data Beschreibung Eigenschaft; das Standardelement im Schema eines DataHolder-Objekts. Diese Eigenschaft ist kein „permanentes“ Element der DataHolder-Komponente. Stattdessen handelt es sich um die bindbare Standardeigenschaft für jede Instanz der Komponente. Im Bedienfeld KomponentenInspektor auf der Registerkarte Schema können Sie eigene bindbare Eigenschaften hinzufügen oder die Standardeigenschaft data löschen. Weitere Informationen zur Registerkarte Schema finden Sie in der Hilfe „Flash verwenden“ unter „Mit Schemata auf der Registerkarte ,Schema‘ arbeiten (nur Flash Professional)“. Beispiel Ein Beispiel für die Verwendung dieser Komponente finden Sie unter „Anwendungen mit der DataHolder-Komponente erstellen (nur Flash Professional )“ auf Seite 206. DataProvider-API ActionScript-Klassenname mx.controls.listclasses.DataProvider Die DataProvider-API umfasst eine Reihe von Methoden und Eigenschaften, die für die Kommunikation zwischen einer Datenquelle und einer List-basierten Klasse erforderlich sind. Arrays, RecordSets und DataSet implementieren diese API. Sie können eine DataProviderkompatible Klasse erstellen, indem Sie alle in diesem Dokument beschriebenen Methoden und Eigenschaften implementieren. Eine List-basierte Komponente kann dann diese Klasse als Datenprovider verwenden. Mit den Methoden der DataProvider-API können Sie die Daten in einer beliebigen Komponente zur Anzeige von Daten (auch Ansicht genannt) abrufen und ändern. Die DataProvider-API sendet auch change-Ereignisse als Broadcastübertragungen, wenn die Daten geändert werden. Mehrere Ansichten können denselben Datenprovider verwenden, und alle Ansichten empfangen die change-Ereignisse. Ein Datenprovider ist (wie ein Array) eine lineare Sammlung von Elementen. Jedes Element ist ein Objekt, das aus vielen Datenfeldern besteht. Wie bei einem Array können Sie mit Hilfe von DataProvider.getItemAt() über die jeweilige Indexposition auf die Elemente zugreifen. Datenprovider werden meistens in Verbindung mit Arrays verwendet. Datenorientierte Komponenten wenden alle Methoden der DataProvider-API auf Array.prototype an, wenn sich ein Array-Objekt in demselben Bild oder Bildschirm wie die datenorientierte Komponente befindet. Auf diese Weise können Sie die Daten jedes vorhandenen Arrays für Ansichten mit der Eigenschaft dataProvider verwenden. DataProvider-API 207 Mit Hilfe der DataProvider-API können mit Komponenten der Version 2, die Ansichten für Daten liefern (z. B. DataGrid-, List- und Tree-Komponente) auch Flash Remoting RecordSets und Daten aus der DataSet-Komponente angezeigt werden. Die DataProvider-API ermöglicht den datenorientierten Komponenten die Kommunikation mit ihren Datenprovidern. In der Dokumentation zu Macromedia Flash ist „DataProvider“ der Name der API, ist eine Eigenschaft jeder Komponente, die eine Ansicht für Daten darstellt, und „Datenprovider“ ist der generische Begriff für eine Datenquelle. dataProvider Methoden der DataProvider-API Name Beschreibung DataProvider.addItem() Fügt ein Element am Ende des Datenproviders hinzu. DataProvider.addItemAt() Fügt dem Datenprovider ein Element an der angegebenen Position hinzu. DataProvider.editField() Ändert ein Feld des Datenproviders. DataProvider.getEditingData() Ruft die Daten für die Bearbeitung vom Datenprovider ab. DataProvider.getItemAt() Ruft einen Verweis auf das Element an der angegebenen Position ab. DataProvider.getItemID() Gibt die eindeutige ID des Elements zurück. DataProvider.removeAll() Entfernt alle Elemente aus einem Datenprovider. DataProvider.removeItemAt() Entfernt ein Element an der angegebenen Position aus einem Datenprovider. DataProvider.replaceItemAt() Ersetzt das Element an der angegebenen Position durch ein anderes Element. DataProvider.sortItems() Sortiert die Elemente in einem Datenprovider. DataProvider.sortItemsBy() Sortiert die Elemente in einem Datenprovider gemäß einer angegebenen Vergleichsfunktion. Eigenschaften der DataProvider-API Name Beschreibung DataProvider.length Die Anzahl der Elemente in einem Datenprovider. Ereignisse der DataProvider-API 208 Name Beschreibung DataProvider.modelChanged Broadcastübertragung, wenn der Datenprovider geändert wird. Kapitel 4: Komponenten-Referenz DataProvider.addItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.addItem(item) Parameter item Ein Objekt, das Daten enthält. Dazu gehört auch ein Element in einem Datenprovider. Rückgaben Keine. Beschreibung Methode; fügt ein Element am Ende des Datenproviders hinzu. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen addItems ausgelöst. Beispiel Im folgenden Beispiel wird ein Element am Ende des Datenproviders meinDP hinzugefügt: meinDP.addItem({ label: "Dies ist ein Element"}); DataProvider.addItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.addItemAt(index, item) Parameter Eine Zahl größer oder gleich 0, die die Position angibt, an der das Element eingefügt werden soll, d. h. die Indexposition des neuen Elements. index item Ein Objekt, das die Daten für das Element enthält. Rückgaben Keine. DataProvider-API 209 Beschreibung Methode; fügt dem Datenprovider an der angegebenen Indexposition ein neues Element hinzu. Indizes, die zu groß sind, werden ignoriert. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen addItems ausgelöst. Beispiel Im folgenden Beispiel wird dem Datenprovider meinDP an vierter Position ein Element hinzugefügt. meinDP.addItemAt(3, {label : "Dies ist das vierte Element"}); DataProvider.editField() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.editField(index, fieldName, newData) Parameter index Eine Zahl größer oder gleich 0, mit der die Indexposition des Elements angegeben wird. Ein String, der den Namen des Feldes in dem zu ändernden Element angibt. fieldName newData Die neuen Daten, die an den Datenprovider übergeben werden. Rückgaben Keine. Beschreibung Methode; ändert ein Feld des Datenproviders. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen updateField ausgelöst. Beispiel Mit folgendem Code wird das Feld Bezeichnung des dritten Elements geändert: meinDP.editField(2, "Bezeichnung", "meineNeuenDaten"); 210 Kapitel 4: Komponenten-Referenz DataProvider.getEditingData() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.getEditingData(index, fieldName) Parameter index Eine Zahl größer oder gleich 0 und kleiner als der Wert von DataProvider.length. Der Index des abzurufenden Elements. fieldName Ein String, der den Namen des zu bearbeitenden Feldes angibt. Rückgaben Die bearbeitbaren, formatierten Daten, die verwendet werden sollen. Beschreibung Methode; ruft die zu bearbeitenden Daten vom Datenprovider ab. Auf diese Weise kann das Datenmodell unterschiedliche Datenformate zum Bearbeiten und Anzeigen bereitstellen. Beispiel Mit dem folgenden Code wird ein bearbeitbarer String für das Feld „Preis“ abgerufen: trace(meinDP.getEditingData(4, "Preis"); DataProvider.getItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.getItemAt(index) Parameter Eine Zahl größer oder gleich 0 und kleiner als der Wert von DataProvider.length. Der Index des abzurufenden Elements. index Rückgaben Ein Verweis auf das abgerufene Element; der Wert ist undefined, wenn sich die angegebene Indexposition außerhalb des zulässigen Bereichs befindet. DataProvider-API 211 Beschreibung Methode; ruft einen Verweis auf das Element an der angegebenen Position ab. Beispiel Mit dem folgenden Code wird die Bezeichnung des fünften Elements angezeigt: trace(meinDP.getItemAt(4).label); DataProvider.getItemID() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 Professional. Verwendung meinDP.getItemID(index) Parameter index Eine Zahl größer oder gleich 0. Rückgaben Eine Zahl als eindeutige ID des Elements. Beschreibung Methode; gibt eine eindeutige ID für das Element zurück. Diese Methode wird hauptsächlich zum Verfolgen einer Auswahl verwendet. Diese ID wird in datenorientierten Komponenten dazu verwendet, eine Liste der ausgewählten Elemente zu erstellen. Beispiel In diesem Beispiel wird die ID des vierten Elements abgerufen: var ID = meinDP.getItemID(3); DataProvider.modelChanged Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.modelChanged = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("modelChanged", listenerObject 212 Kapitel 4: Komponenten-Referenz Beschreibung Ereignis; sendet Broadcastübertragung an alle Ansichts-Listener, wenn der Datenprovider geändert wird. Ein Listener wird einem Modell normalerweise hinzugefügt, indem die Eigenschaft dataProvider zugeordnet wird. V2-Komponenten basieren auf einem Dispatcher/Listener-Ereignismodell. Wenn ein Datenprovider auf irgendeine Weise geändert wird, sendet er das Ereignis modelChanged als Broadcastübertragung; das Ereignis wird von datenorientierten Komponenten empfangen, und diese aktualisieren die Anzeigen mit den geänderten Daten. Das Ereignisobjekt des Ereignisses Menu.modelChanged hat fünf weitere Eigenschaften: • • • • • Mit der Eigenschaft eventName werden die modelChanged-Ereignisse in Unterkategorien unterteilt. Anhand dieser Informationen brauchen datenorientierte Komponenten die Ansicht der Komponenteninstanz, die den Datenprovider verwendet, nicht vollständig zu aktualisieren. Folgende Werte der Eigenschaft eventName werden unterstützt: ■ updateAll Die gesamte Ansicht muss aktualisiert werden, abgesehen von der Bildlaufposition. ■ addItems Eine Reihe von Elementen wurden hinzugefügt. ■ removeItems Eine Reihe von Elementen wurden gelöscht. ■ updateItems Eine Reihe von Elementen müssen aktualisiert werden. ■ sort Die Daten wurden sortiert. ■ updateField Ein Feld innerhalb eines Elements muss geändert und aktualisiert werden. ■ updateColumn Die Definition eines gesamten Feldes innerhalb des dataProvider muss aktualisiert werden. ■ filterModel Das Modell wurde gefiltert, und die Ansicht muss aktualisiert werden (Bildlaufposition zurücksetzen). ■ schemaLoaded Die Felddefinition des dataProvider wurde deklariert. firstItem Die Indexposition des ersten betroffenen Elements. lastItem Die Indexposition des letzten betroffenen Elements. Dieser Wert stimmt mit dem Wert für firstItem überein, wenn nur ein Element betroffen ist. removedIDs Ein Array der Element-IDs, die entfernt wurden. fieldName Ein String, der den Namen des betroffenen Feldes angibt. eventName (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird die Prozedur listener definiert und als zweiter Parameter an die Methode addEventListener() übergeben. Das Ereignisobjekt wird von der Prozedur modelChanged im Parameter evt wiedergegeben. Bei der Broadcastübertragung des Ereignisses modelChanged wird folgende trace-Anweisung an das Bedienfeld Ausgabe gesendet: listener = new Object(); listener.modelChanged = function(evt){ trace(evt.eventName); } meineList.addEventListener("modelChanged", listener); DataProvider-API 213 DataProvider.length Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.length Beschreibung Eigenschaft (schreibgeschützt); die Anzahl der Elemente im Datenprovider. Beispiel In diesem Beispiel wird die Anzahl der Elemente im Datenprovider meinArray an das Bedienfeld Ausgabe gesendet: trace(meinArray.length); DataProvider.removeAll() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.removeAll() Parameter Keine. Rückgaben Keine. Beschreibung Methode; entfernt alle Elemente im Datenprovider. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen removeItems ausgelöst. Beispiel In diesem Beispiel werden alle Elemente aus dem Datenprovider entfernt: meinDP.removeAll(); 214 Kapitel 4: Komponenten-Referenz DataProvider.removeItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.removeItemAt(index) Parameter Eine Zahl größer oder gleich 0, mit der die Indexposition des zu entfernenden Elements angegeben wird. index Rückgaben Keine. Beschreibung Methode; entfernt das Element an der angegebenen Indexposition. Die Indizes nach der entfernten Indexposition werden jeweils um 1 reduziert. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen removeItems ausgelöst. Beispiel In diesem Beispiel wird das Element an vierter Position entfernt: meinDP.removeItemAt(3); DataProvider.replaceItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDP.replaceItemAt(index, item) Parameter index item Eine Zahl, die größer als bzw. gleich 0 ist. Die Indexposition des zu ändernden Elements. Ein Objekt, das das neue Element darstellt. Rückgaben Keine. DataProvider-API 215 Beschreibung Methode; ersetzt den Inhalt des Elements an der angegebenen Indexposition. Mit dieser Methode wird das Ereignis modelChanged mit dem Ereignisnamen removeItems ausgelöst. Beispiel Im folgenden Beispiel wird das Element an Indexposition 3 durch das Element mit der Bezeichnung „new label“ (neue Bezeichnung) ersetzt. meinDP.replaceItemAt(3, {label : "new label"}); DataProvider.sortItems() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinDP.sortItems([compareFunc], [optionsFlag]) Parameter Ein Verweis auf eine Funktion, die zwei Elemente miteinander vergleicht, um deren Sortierfolge zu bestimmen. Weitere Informationen finden Sie unter Array.sort() im ActionScript-Lexikon. Dieser Parameter ist optional. compareFunc Ermöglicht die Durchführung mehrerer unterschiedlicher Sortieroperationen in einem einzelnen Array, ohne dass dabei das gesamte Array repliziert bzw. wiederholt neu sortiert werden muss. Dieser Parameter ist optional. optionsFlag optionsFlag • • • • • kann die folgenden Werte haben: Array.DESCENDING: Die Sortierung erfolgt vom höchsten zum niedrigsten Wert. Array.CASEINSENSITIVE: Bei der Sortierung wird die Groß-/Kleinschreibung ignoriert. Array.NUMERIC: Die Sortierung erfolgt in numerischer Reihenfolge, sofern es sich bei den beiden verglichenen Elementen um Zahlen handelt. Führen Sie andernfalls einen StringVergleich durch (dabei wird je nach Einstellung die Groß-/Kleinschreibung ignoriert). Array.UNIQUESORT: Wenn zwei Objekte in dem Array identisch sind oder identische Sortierfelder haben, gibt diese Methode anstelle eines sortierten Arrays einen Fehlercode (0) zurück. Array.RETURNINDEXEDARRAY: Gibt das Ergebnis der Sortieroperation in Form eines ganzzahligen, indizierten Arrays zurück. Wenn z. B. das folgende Array anhand des Parameters optionsFlag mit dem Wert Array.RETURNINDEXEDARRAY sortiert wird, wird die zweite Codezeile zurückgegeben, und das Array bleibt unverändert: ["a", "d", "c", "b"] [0, 3, 2, 1] 216 Kapitel 4: Komponenten-Referenz Sie können diese Optionen zu einem Wert zusammenfassen. Im folgenden Code werden z. B. Option 3 und Option 1 miteinander kombiniert: array.sort (Array.NUMERIC | Array.DESCENDING) Rückgaben Keine. Beschreibung Methode; sortiert die Elemente im Datenprovider gemäß der mit dem Parameter compareFunc festgelegten Vergleichsfunktion bzw. gemäß einer oder mehrerer Sortieroptionen, die mit dem Parameter optionsFlag definiert wurden. Diese Methode löst das Ereignis modelChanged mit dem Ereignisnamen sort aus. Beispiel Im folgenden Beispiel werden die Elemente basierend auf den mit Großbuchstaben beginnenden Bezeichnungen sortiert. Die Elemente a und b werden an die Funktion übergeben und enthalten die Felder label und data: meineList.sortItems(upperCaseFunc); function upperCaseFunc(a,b){ return a.label.toUpperCase() > b.label.toUpperCase(); } DataProvider.sortItemsBy() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinDP.sortItemsBy(fieldName, order, [optionsFlag]) Parameter fieldName Ein String mit dem Namen des Felds, nach dem sortiert werden soll. Normalerweise ist dieser Wert "label" oder "data". Ein String, der angibt, ob die Elemente in aufsteigender ("ASC") oder absteigender Reihenfolge ("DESC") sortiert werden sollen. order Ermöglicht die Durchführung mehrerer unterschiedlicher Sortieroperationen in einem einzelnen Array, ohne dass dabei das gesamte Array repliziert bzw. wiederholt neu sortiert werden muss. Dieser Parameter ist optional. optionsFlag optionsFlag • • kann die folgenden Werte haben: Array.DESCENDING: Die Sortierung erfolgt vom höchsten zum niedrigsten Wert. Array.CASEINSENSITIVE: Bei der Sortierung wird die Groß-/Kleinschreibung ignoriert. DataProvider-API 217 • • • Array.NUMERIC: Die Sortierung erfolgt in numerischer Reihenfolge, sofern es sich bei den beiden verglichenen Elementen um Zahlen handelt. Führen Sie andernfalls einen StringVergleich durch (dabei wird je nach Einstellung die Groß-/Kleinschreibung ignoriert). Array.UNIQUESORT: Wenn zwei Objekte in dem Array identisch sind oder identische Sortierfelder haben, gibt diese Methode anstelle eines sortierten Arrays einen Fehlercode (0) zurück. Array.RETURNINDEXEDARRAY: Gibt das Ergebnis der Sortieroperation in Form eines ganzzahligen, indizierten Arrays zurück. Wenn z. B. das folgende Array anhand des Parameters optionsFlag mit dem Wert Array.RETURNINDEXEDARRAY sortiert wird, wird die zweite Codezeile zurückgegeben, und das Array bleibt unverändert: ["a", "d", "c", "b"] [0, 3, 2, 1] Sie können diese Optionen zu einem Wert zusammenfassen. Im folgenden Code werden z. B. Option 3 und Option 1 miteinander kombiniert: array.sort (Array.NUMERIC | Array.DESCENDING) Rückgaben Keine. Beschreibung Methode; sortiert die Elemente im Datenprovider alphabetisch oder numerisch in der angegebenen Reihenfolge nach dem angegebenen Feldnamen. Wenn die durch fieldName bezeichneten Elemente Textstrings und Ganzzahlen enthalten, werden die Elemente mit den Ganzzahlen zuerst aufgelistet. Der Parameter fieldName ist normalerweise „label“ oder „data“, erfahrene Programmierer können jedoch einen beliebigen Grundwert angeben. Sie können mit dem Parameter optionsFlag nach Wunsch einen Sortierungstyp angeben. Diese Methode löst das Ereignis modelChanged mit dem Ereignisnamen sort aus. Beispiel Im folgenden Code werden die Elemente in einer Liste in aufsteigender Reihenfolge nach den Bezeichnungen der Listenelemente sortiert: meinDP.sortItemsBy("label", "ASC"); DataSet-Komponente (nur Flash Professional) Mit der DataSet-Komponente können Sie Daten als Objektsammlungen bearbeiten, die indiziert, sortiert, durchsucht, gefiltert und geändert werden können. Zum Funktionsumfang der DataSet-Komponente gehören DataSetIterator, ein Methodensatz zum Durchlaufen und Manipulieren einer Datensammlung, sowie DeltaPacket, ein Satz Benutzeroberflächen und Klassen, der die Aktualisierung von Datensammlungen erleichtert. In der Regel arbeiten Sie mit diesen Klassen und Benutzeroberflächen nicht direkt, sondern nur indirekt über die von der DataSet-Klasse bereitgestellten Methoden. 218 Kapitel 4: Komponenten-Referenz Die von der DataSet-Komponente verwalteten Elemente werden auch als Übertragungsobjekte bezeichnet. Übertragungsobjekte stellen Geschäftsdaten, die sich auf einem Server befinden, mittels öffentlicher Attribute oder Zugriffsmethoden zum Lesen oder Schreiben von Daten bereit. Mit der DataSet-Komponente können Entwickler mit hoch entwickelten clientseitigen Objekten arbeiten, die ihre serverseitigen Gegenstücke widerspiegeln, oder (im einfachsten Fall) mit einer Sammlung von anonymen Objekten mit öffentlichen Attributen, die den Feldern in einem Datensatz entsprechen. Weitere Informationen zu Übertragungsobjekten finden Sie in „Core J2EE Patterns Transfer Object“ unter java.sun.com/blueprints/corej2eepatterns/Patterns/ TransferObject.html. Hinweis: Für die DataSet-Komponente benötigen Sie mindestens Flash Player 7. DataSet-Komponente verwenden (nur Flash Professional) Die DataSet-Komponente wird normalerweise in einer Anwendung mit anderen Komponenten kombiniert, um eine Datenquelle zu manipulieren und zu aktualisieren. Dabei wird mit einer Connector-Komponente eine Verbindung zu einer externen Datenquelle hergestellt, mit UIKomponenten werden Daten aus der Datenquelle angezeigt, und mit einer ResolverKomponente werden Aktualisierungen des Datensatzes in ein Format übersetzt, das an die externe Datenquelle übermittelt werden kann. Mit Hilfe der so genannten Datenbindung lassen sich die Eigenschaften dieser unterschiedlichen Komponenten dann aneinander binden. Allgemeine Informationen zur DataSet-Komponente und zu ihrem Einsatz mit anderen Komponenten finden Sie unter „Datenverwaltung (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Parameter der DataSet-Komponente Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder im Bedienfeld Komponenten-Inspektor für jede DataSet-Komponenteninstanz festlegen: itemClassName Der Name der Übertragungsobjektklasse, die jedes Mal instanziiert wird, wenn ein neues Element erforderlich ist. Hinweis: Damit die angegebene Klasse zur Laufzeit verfügbar ist, müssen Sie außerdem im Code der SWF-Datei einen vollständig qualifizierten Verweis auf diese Klasse erstellen (Beispiel: var meinItem:mein.package.meinItem;). Lautet der Wert dieses Parameters true, wird auf den Datensatz ein Filter angewendet, sodass der Satz nur Objekte enthält, die den Filterkriterien entsprechen. filtered logChanges Lautet der Wert dieses Parameters true, werden von dem Datensatz alle Veränderungen (Datenänderungen oder Methoden-Aufrufe) in der Eigenschaft deltaPacket aufgezeichnet. readOnly Lautet der Wert dieses Parameters true, kann der Datensatz nicht modifiziert werden. Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die DataSet-Komponente über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter „DataSet-Klasse (nur Flash Professional)“ auf Seite 221. DataSet-Komponente (nur Flash Professional) 219 Anwendungen mit der DataSet-Komponente erstellen Normalerweise wird die DataSet-Komponente mit anderen UI-Komponenten und häufig auch mit einer Connector-Komponente (z. B. XMLConnector- oder WebServiceConnectorKomponente) kombiniert. Die Elemente in dem Datensatz werden mit Hilfe der ConnectorKomponente bzw. mit unformatierten ActionScript-Daten gefüllt und dann an UI-Steuerungen gebunden (z. B. List- oder DataGrid-Komponenten). So erstellen Sie mit der DataSet-Komponente eine Anwendung: 1 Wählen Sie in Flash MX Professional 2004 Datei > Neu. Wählen Sie in der Spalte Typ die 2 3 4 5 6 7 8 Option Flash-Dokument aus, und klicken Sie auf OK. Öffnen Sie das Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > Komponenten), sofern es nicht bereits geöffnet ist. Ziehen Sie eine DataSet-Komponente aus dem Bedienfeld Komponenten auf die Bühne. Geben Sie für die Komponente im Eigenschafteninspektor den Namen userData ein. Ziehen Sie eine DataGrid-Komponente auf die Bühne, und geben Sie ihr den Namen userGrid. Stellen Sie die Größe der DataGrid-Komponente auf ca. 300 x 100 Pixel (Breite x Höhe) ein. Ziehen Sie eine Button-Komponente auf die Bühne, und geben Sie ihr den Namen nextBtn. Wählen Sie in der Zeitleiste das erste Bild in Ebene 1 aus, und öffnen Sie das Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen). Fügen Sie im Bedienfeld Aktionen folgenden Code hinzu: var recData = [{id:0, firstName:"Mick", lastName:"Jones"}, {id:1, firstName:"Joe", lastName:"Strummer"}, {id:2, firstName:"Paul", lastName:"Simonon"}]; userData.items = recData; Dadurch wird die Eigenschaft items des DataSet-Objekts mit einem Array von Objekten gefüllt, die jeweils die drei Eigenschaften firstName, lastName und id aufweisen. 9 Um die Inhalte der DataSet-Komponente an die Inhalte der DataGrid-Komponente zu binden, öffnen Sie das Bedienfeld Komponenten-Inspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor), und klicken Sie auf die Registerkarte Bindungen. 10 Wählen Sie die DataGrid-Komponente (userGrid) auf der Bühne aus, und klicken Sie im Bedienfeld Komponenten-Inspektor auf die Schaltfläche Bindung hinzufügen (+). 11 Wählen Sie im Dialogfeld Bindung hinzufügen den Eintrag „dataProvider : Array“ aus, und klicken Sie auf OK. 12 Doppelklicken Sie im Bedienfeld Komponenten-Inspektor auf das Feld bound to. 13 Wählen Sie im Dialogfeld Gebunden an in der Spalte Komponentenpfad den Eintrag „DataSet <userData>“ aus und dann in der Spalte Schema-Standort den Eintrag „dataProvider : Array“. 14 Um den ausgewählten Index der DataSet-Komponente an den ausgewählten Index der DataGrid-Komponente zu binden, klicken Sie im Bedienfeld Komponenten-Inspektor erneut auf die Schaltfläche Bindung hinzufügen (+). 15 Wählen Sie in dem daraufhin angezeigten Dialogfeld den Eintrag „selectedIndex : Number“ aus. Klicken Sie auf OK. 16 Doppelklicken Sie im Bedienfeld Komponenten-Inspektor auf das Feld bound to, um das Dialogfeld Gebunden an zu öffnen. 17 Wählen Sie in der Spalte Komponentenpfad den Eintrag „DataSet <userData>“ aus und dann in der Spalte Schema-Standort den Eintrag „selectedIndex : Number“. 220 Kapitel 4: Komponenten-Referenz 18 Wählen Sie die Button-Komponente (nextBtn) aus, und öffnen Sie das Bedienfeld Aktionen (Fenster > Entwicklungs-Bedienfelder > Aktionen), sofern es nicht bereits geöffnet ist. 19 Geben Sie im Bedienfeld Aktionen den folgenden Code ein: on(click){ _parent.userData.next(); } Dieser Code navigiert mit Hilfe der Methode DataSet.next() zum nächsten Element in der Elementsammlung des DataSet-Objekts. Da Sie die Eigenschaft selectedIndex des DataGrid-Objekts an die gleichnamige Eigenschaft des DataSet-Objekts gebunden haben, ändert sich das aktuelle (ausgewählte) Element im DataGrid-Objekt, wenn das aktuelle Element im DataSet-Objekt modifiziert wird. 20 Speichern Sie die Datei, und wählen Sie Steuerung > Film testen, um die SWF-Datei zu testen. Das DataGrid-Objekt wird mit den angegebenen Elementen gefüllt. Wenn Sie auf die Schaltfläche klicken, ändert sich das ausgewählte Element im DataGrid-Objekt. DataSet-Klasse (nur Flash Professional) ActionScript-Klassenname mx.data.components.DataSet Übersicht: Methoden der DataSet-Klasse Methode Beschreibung DataSet.addItem() Fügt das angegebene Element der Sammlung hinzu. DataSet.addSort() Erstellt eine neue, sortierte Ansicht der Elemente in der Sammlung. DataSet.applyUpdates() Teilt Listenern mit, dass an dem DataSet-Objekt durchgeführte Änderungen bereit sind. DataSet.changesPending() Gibt an, ob das DeltaPacket-Objekt Elemente enthält. DataSet.clear() Löscht alle Elemente aus der aktuellen Ansicht der Sammlung. DataSet.createItem() Gibt ein neu initialisiertes Sammlungselement zurück. DataSet.disableEvents() Stoppt das Senden von DataSet-Ereignissen an Listener. DataSet.enableEvents() Setzt das Senden von DataSet-Ereignissen an Listener fort. DataSet.find() Durchsucht die aktuelle Ansicht der Sammlung nach einem Element. DataSet.findFirst() Durchsucht die aktuelle Ansicht der Sammlung nach der ersten Fundstelle eines Elements. DataSet.findLast() Durchsucht die aktuelle Ansicht der Sammlung nach der letzten Fundstelle eines Elements. DataSet.first() Geht in der aktuellen Ansicht der Sammlung zum ersten Element. DataSet.getItemId() Gibt die eindeutige ID des angegebenen Elements zurück. DataSet.getIterator() Gibt einen Klon des aktuellen Iterators zurück. DataSet.hasNext() Gibt an, ob der aktuelle Iterator sich am Ende seiner Ansicht der Sammlung befindet. DataSet-Komponente (nur Flash Professional) 221 Methode Beschreibung DataSet.hasPrevious() Gibt an, ob der aktuelle Iterator sich am Anfang seiner Ansicht der Sammlung befindet. DataSet.hasSort() Gibt an, ob die angegebene Sortierung vorhanden ist. DataSet.isEmpty() Gibt an, ob die Sammlung Elemente enthält. DataSet.last() Geht in der aktuellen Ansicht der Sammlung zum letzten Element. DataSet.loadFromSharedObj() Ruft die Inhalte eines DataSet-Objekts von einem gemeinsamen Objekt ab. DataSet.locateById() Verschiebt den aktuellen Iterator zu dem Element mit der angegebenen ID. DataSet.next() Geht in der aktuellen Ansicht der Sammlung zum nächsten Element. DataSet.previous() Geht in der aktuellen Ansicht der Sammlung zum vorherigen Element. DataSet.removeAll() Entfernt alle Elemente aus der Sammlung. DataSet.removeItem() Entfernt das angegebene Element aus der Sammlung. DataSet.removeRange() Entfernt die Bereichseinstellungen des aktuellen Iterators. DataSet.removeSort() Entfernt die angegebene Sortierung aus dem DataSet-Objekt. DataSet.saveToSharedObj() Speichert die Daten in dem DataSet-Objekt in einem gemeinsamen Objekt. DataSet.setIterator() Legt den aktuellen Iterator für das DataSet-Objekt fest. DataSet.setRange() Legt die Bereichseinstellungen des aktuellen Iterators fest. DataSet.skip() Geht in der aktuellen Ansicht der Sammlung um eine bestimmte Anzahl von Elementen vorwärts oder zurück. DataSet.useSort() Legt die angegebene Sortierung als aktive Sortierung fest. Übersicht: Eigenschaften der DataSet-Klasse 222 Eigenschaft Beschreibung DataSet.currentItem Gibt das aktuelle Element der Sammlung zurück. DataSet.dataProvider Gibt die DataProvider-Schnittstelle zurück. DataSet.deltaPacket Gibt Änderungen zurück, die an der Sammlung durchgeführt wurden, oder weist der Sammlung Änderungen zu. DataSet.filtered Gibt an, ob Elemente gefiltert werden. DataSet.filterFunc Benutzerdefinierte Funktion zum Filtern von Elementen in der Sammlung. DataSet.items Elemente in der Sammlung. DataSet.itemClassName Objekt, das beim Zuweisen von Elementen erstellt werden soll. Kapitel 4: Komponenten-Referenz Eigenschaft Beschreibung DataSet.length Gibt an, wie viele Elemente sich in der aktuellen Ansicht der Sammlung befinden. DataSet.logChanges Gibt an, ob Änderungen an der Sammlung oder an Elementen der Sammlung aufgezeichnet werden. DataSet.properties Enthält die Eigenschaften (Felder) für alle Übertragungsobjekte in dieser Sammlung. DataSet.readOnly Gibt an, ob die Sammlung geändert werden kann. DataSet.schema Legt das Schema der Sammlung im XML-Format fest. DataSet.selectedIndex Enthält die Indexposition des aktuellen Elements innerhalb der Sammlung. Übersicht: Ereignisse der DataSet-Klasse Ereignis Beschreibung DataSet.addItem Broadcastübertragung, bevor ein Element der Sammlung hinzugefügt wird. DataSet.afterLoaded Broadcastübertragung, nachdem die Eigenschaft items zugewiesen wurde. DataSet.deltaPacketChanged Broadcastübertragung, wenn das DeltaPacket des DataSetObjekts verändert wurde und einsatzbereit ist. DataSet.calcFields Broadcastübertragung, wenn berechnete Felder aktualisiert werden müssen. DataSet.iteratorScrolled Broadcastübertragung, wenn die Position des Iterators geändert wird. DataSet.modelChanged Broadcastübertragung, wenn Elemente in der Sammlung auf irgendeine Weise geändert wurden. DataSet.newItem Broadcastübertragung, wenn das DataSet-Objekt ein neues Element erstellt, aber bevor das Element der Sammlung hinzugefügt wird. DataSet.removeItem Broadcastübertragung, bevor ein Element entfernt wird. DataSet.resolveDelta Broadcastübertragung, wenn ein DeltaPacket-Objekt dem DataSet-Objekt zugewiesen wird, das Meldungen enthält. DataSet.addItem Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. DataSet-Komponente (nur Flash Professional) 223 Verwendung on(addItem) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.addItem = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("addItem", listenerObject) Beschreibung Ereignis; wird generiert, kurz bevor dieser Sammlung ein neues Übertragungsobjekt hinzugefügt wird. Wenn Sie der Eigenschaft result des Ereignisobjekts den Wert false zuweisen, wird der Hinzufügen-Vorgang abgebrochen; bei dem Wert true hingegen ist der Vorgang zulässig. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: Das DataSet-Objekt, das das Ereignis generiert hat. target type Der String "addItem". item Ein Verweis zu dem hinzuzufügenden Element in der Sammlung. result Ein Boolescher Wert, der angibt, ob das angegebene Element hinzugefügt werden soll. Der Standardwert ist true. Beispiel Die folgende Ereignisprozedur on(addItem) (einem DataSet-Objekt zugewiesen) bricht das Hinzufügen des neuen Elements ab, wenn eine benutzerdefinierte Funktion namens userHasAdminPrivs() den Wert false zurückgibt; andernfalls ist das Hinzufügen des Elements zulässig. on(addItem) { if(globalObj.userHasAdminPrivs()) { // Hinzufügen von Elementen ist zulässig. eventObj.result = true; } else { // Hinzufügen von Elementen ist nicht zulässig; Benutzer hat keine // Administratorrechte. eventObj.result = false; } } Siehe auch DataSet.removeItem 224 Kapitel 4: Komponenten-Referenz DataSet.addItem() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.addItem([obj]) Parameter obj Ein Objekt, das dieser Sammlung hinzugefügt werden soll. Dieser Parameter ist optional. Rückgaben Gibt true zurück, wenn das Element der Sammlung hinzugefügt wurde. Andernfalls wird false zurückgegeben. Beschreibung Methode; fügt das angegebene Übertragungsobjekt der Sammlung hinzu, damit es dort verwaltet werden kann. Das neu hinzugefügte Element wird zum aktuellen Element des Datensatzes. Wenn kein Parameter des Typs obj festgelegt wurde, wird ein neues Objekt automatisch mit Hilfe von DataSet.createItem() erstellt. Die Position des neuen Elements innerhalb der Sammlung hängt davon ab, ob für den aktuellen Iterator eine Sortierung angegeben wurde. Wenn keine Sortierung verwendet wird, wird das angegebene Element am Ende der Sammlung eingefügt. Wenn eine Sortierung verwendet wird, wird das Element in der Sammlung an der Position eingefügt, die sich aus der aktuellen Sortierung ergibt. Weitere Informationen zur Initialisierung und zum Erstellen des Übertragungsobjekts finden Sie unter DataSet.createItem(). Beispiel meinDataSet.addItem(meinDataSet.createItem()); Siehe auch DataSet.createItem() DataSet.addSort() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.addSort(name, fieldList, sortOptions) DataSet-Komponente (nur Flash Professional) 225 Parameter name Ein String, der den Namen der Sortierung angibt. fieldList Ein Array von Strings mit den Feldnamen, nach denen sortiert werden soll. Mindestens einer der folgenden ganzzahligen Werte (Konstanten), die die bei der Sortierung verwendeten Optionen angeben. Wenn Sie mehrere Werte einsetzen, fügen Sie zwischen den einzelnen Werten den bitweisen OR-Operator (|) ein. Sie müssen einen der folgenden Werte verwenden: sortOptions • • • • DataSetIterator.Ascending Sortiert Elemente in aufsteigender Reihenfolge. Dies ist die Standardoption, sofern keine andere Option gewählt wurde. DataSetIterator.Descending Sortiert Elemente in absteigender Reihenfolge nach den angegebenen Elementeigenschaften. DataSetIterator.Unique Verhindert die Sortierung, wenn Felder identische Werte aufweisen. DataSetIterator.CaseInsensitive Ignoriert die Groß-/Kleinschreibung, wenn im Rahmen der Sortieroperation zwei Strings miteinander verglichen werden. Wenn es sich bei der Eigenschaft, nach der sortiert werden soll, um einen String handelt, wird die Groß-/ Kleinschreibung standardmäßig beachtet. Es wird eine DataSetError-Ausnahme ausgegeben, wenn die Sortieroption DataSetIterator.Unique festgelegt wurde und die zu sortierenden Daten nicht eindeutig sind, wenn der angegebene Sortierungsname bereits hinzugefügt wurde oder wenn eine im fieldListArray angegebene Eigenschaft in diesem Datensatz nicht existiert. Rückgaben Keine. Beschreibung Methode; erstellt für den aktuellen Iterator anhand der von dem Parameter fieldList festgelegten Eigenschaften eine neue Sortierung in aufsteigender oder absteigender Reihenfolge. Die neue Sortierung wird dem aktuellen Iterator automatisch zugewiesen, nachdem sie erstellt und zum späteren Gebrauch in der Sortierungssammlung gespeichert wurde. Beispiel Mit dem folgenden Code wird eine neue Sortierung namens "rank" erstellt. Die Sortierung wird nach dem Feld "classRank" des DataSet-Objekts in absteigender Reihenfolge für eindeutige Daten durchgeführt, wobei die Groß-/Kleinschreibung beachtet wird. meinDataSet.addSort("rank", ["classRank"], DataSetIterator.Descending | DataSetIterator.Unique | DataSetIterator.CaseInsensitive); Siehe auch DataSet.removeSort() 226 Kapitel 4: Komponenten-Referenz DataSet.afterLoaded Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(afterLoaded) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.afterLoaded = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("afterLoaded", listenerObject) Beschreibung Ereignis; sofortige Broadcastübertragung, nachdem die Eigenschaft DataSet.items zugewiesen wurde. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: Das DataSet-Objekt, das das Ereignis generiert hat. target type Der String "afterLoaded". Beispiel Im folgenden Beispiel wird ein Formular namens contactForm (nicht angezeigt) eingeblendet, sobald die Elemente in dem DataSet contact_ds zugewiesen worden sind. contact_ds.addEventListener("afterLoaded", loadListener); loadListener = new Object(); loadListener.afterLoaded = function (eventObj) { if(eventObj.target == "contact_ds") { contactForm.visible = true; } } DataSet.applyUpdates() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.applyUpdates() Rückgaben Keine. DataSet-Komponente (nur Flash Professional) 227 Beschreibung Methode; signalisiert, dass die Eigenschaft DataSet.deltaPacket einen Wert hat, auf den Sie entweder über Datenbindung oder direkt mit ActionScript zugreifen können. Bevor diese Methode aufgerufen wird, hat die Eigenschaft DataSet.deltaPacket den Wert null. Diese Methode ist wirkungslos, wenn Ereignisse mit der Methode DataSet.disableEvents() deaktiviert wurden. Beim Aufruf dieser Methode wird außerdem eine Transaktions-ID für die aktuelle Eigenschaft DataSet.deltaPacket erstellt, und es wird ein Ereignis des Typs deltaPacketChanged ausgegeben. Weitere Informationen finden Sie unter DataSet.deltaPacket. Beispiel Mit dem folgenden Code wird die Methode applyUpdates() für meinDataSet aufgerufen. meinDataSet.applyUpdates(); Siehe auch DataSet.deltaPacket DataSet.calcFields Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(calcFields) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.calcFields = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("calcFields", listenerObject) Beschreibung Ereignis; wird generiert, wenn die Werte von berechneten Feldern für das aktuelle Element der Sammlung ermittelt werden müssen. Ein berechnetes Feld ist ein Feld, für dessen Eigenschaft kind (Typ) im Bedienfeld Komponenten-Inspektor auf der Registerkarte Schema die Option Calculated (Berechnet) gewählt wurde. Der von Ihnen erstellte Ereignis-Listener calcFields sollte die erforderliche Berechnung durchführen und den Wert des berechneten Feldes festlegen. Dieses Ereignis wird auch aufgerufen, wenn der Wert eines nicht berechneten Feldes (ein Feld, für dessen Eigenschaft kind (Typ) im Bedienfeld Komponenten-Inspektor auf der Registerkarte Schema die Option Data (Daten) gewählt wurde) aktualisiert wird. Weitere Informationen zur Eigenschaft kind finden Sie unter „Schema-Typen (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Vorsicht: Ändern Sie nicht die Werte der nicht berechneten Felder dieses Ereignisses, da dies zu einer Endlosschleife führt. Stellen Sie in dem Ereignis calcFields nur die Werte der berechneten Felder ein. 228 Kapitel 4: Komponenten-Referenz DataSet.changesPending() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.changesPending() Rückgaben Ein Boolescher Wert. Beschreibung Methode; gibt true zurück, wenn für die Sammlung bzw. ein Element in der Sammlung Änderungen anstehen, die noch nicht in einem DeltaPacket-Objekt weitergegeben wurden. Andernfalls wird false zurückgegeben. Beispiel Mit dem folgenden Code wird eine Schaltfläche zum Speichern von Änderungen (nicht angezeigt) aktiviert, wenn an der DataSet-Sammlung bzw. an einem Element in der Sammlung Änderungen durchgeführt wurden, die noch nicht in einem DeltaPacket-Objekt erfasst worden sind. if( data_ds.changesPending() ) { saveChanges_btn.enabled = true; } DataSet.clear() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.clear() Rückgaben Keine. Beschreibung Methode; entfernt die Elemente aus der aktuellen Ansicht der Sammlung. Welche Elemente als „anzeigbar“ betrachtet werden, hängt von den gegenwärtigen Filter- und Bereichseinstellungen des aktuellen Iterators ab. Daher werden möglicherweise nicht alle Elemente aus der Sammlung entfernt, wenn Sie diese Methode aufrufen. Wenn Sie alle Elemente unabhängig von der Ansicht des aktuellen Iterators aus der Sammlung löschen möchten, setzen Sie DataSet.removeAll() ein. DataSet-Komponente (nur Flash Professional) 229 Wenn DataSet.logChanges auf true eingestellt ist und Sie diese Methode aufrufen, wird in DataSet.deltaPacket für jedes einzelne Element in der Sammlung der Eintrag „remove“ eingefügt. Beispiel Im folgenden Beispiel werden alle Elemente aus der aktuellen Ansicht der DataSet-Sammlung entfernt. Da die Eigenschaft logChanges auf true eingestellt ist, wird der Vorgang protokolliert. meinDataSet.logChanges= true; meinDataSet.clear(); Siehe auch DataSet.deltaPacket, DataSet.logChanges DataSet.createItem() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.createItem([itemData]) Parameter itemData Mit dem Element verknüpfte Daten. Dieser Parameter ist optional. Rückgaben Das neu erstellte Element. Beschreibung Methode; erstellt ein Element, das nicht mit der Sammlung verknüpft ist. Sie können die erstellte Objektklasse mit der Eigenschaft DataSet.itemClassName angeben. Wenn Sie keinen Wert für DataSet.itemClassName festlegen und den Parameter itemData auslassen, wird ein anonymes Objekt erstellt. Die Eigenschaften dieses anonymen Objekts werden anhand des zurzeit von DataSet.schema angegebenen Schemas auf die Standardwerte eingestellt. Wenn diese Methode aufgerufen wird, werden alle Listener für das Ereignis DataSet.newItem benachrichtigt; die Listener können dann das Element manipulieren, bevor es von dieser Methode zurückgegeben wird. Die angegebenen optionalen Elementdaten dienen zur Initialisierung der Klasse, die mit der Eigenschaft DataSet.itemClassName festgelegt wurde, oder aber sie werden als das Element selbst betrachtet, falls DataSet.itemClassName leer ist. Es wird eine Ausnahme des Typs DataSetError ausgegeben, wenn die mit der Eigenschaft angegebene Klasse nicht geladen werden kann. DataSet.itemClassName 230 Kapitel 4: Komponenten-Referenz Beispiel contact.itemClassName = "Contact"; var itemData = new XML("<contact_info><name>John Smith</ name><phone>555.555.4567</phone><zip><pre>94025</pre><post>0556</post></ zip></contact_info>"); contact.addItem(contact.createItem(itemData)); Siehe auch DataSet.itemClassName, DataSet.newItem, DataSet.schema DataSet.currentItem Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.currentItem Beschreibung Eigenschaft (schreibgeschützt); gibt das aktuelle Element der DataSet-Sammlung zurück oder, falls die Sammlung leer ist bzw. die Ansicht der Sammlung des aktuellen Iterators keine Elemente enthält, den Wert null. Mit dieser Eigenschaft können Sie direkt auf das Element innerhalb der Sammlung zugreifen. Wenn Sie direkt auf das Objekt zugreifen und es verändern, werden diese Änderungen (in der Eigenschaft DataSet.deltaPacket) nicht protokolliert, und den Eigenschaften dieses Objekts werden keine der Schema-Einstellungen zugewiesen. Beispiel Im folgenden Beispiel wird der Wert der Eigenschaft customerName angezeigt, die in dem aktuellen Element des Datensatzes customerData definiert ist. trace(customerData.currentItem.customerName); DataSet.dataProvider Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.dataProvider Beschreibung Eigenschaft; die DataProvider-Schnittstelle für diesen Datensatz. Diese Eigenschaft liefert Daten an UI-Steuerungen wie die List- und DataGrid-Komponenten. DataSet-Komponente (nur Flash Professional) 231 Beispiel Mit dem folgenden Code wird die Eigenschaft dataProvider eines DataSet-Objekts der entsprechenden Eigenschaft einer DataGrid-Komponente zugewiesen. meinGrid.dataProvider = meinDataSet.dataProvider; DataSet.deltaPacket Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.deltaPacket Beschreibung Eigenschaft; gibt ein DeltaPacket-Objekt zurück, das alle Änderungsoperationen enthält, die an der dataSet-Sammlung und deren Elementen vorgenommen wurden. Diese Eigenschaft ist null, bis DataSet.applyUpdates() für dataSet aufgerufen wird. Wenn DataSet.applyUpdates() aufgerufen wird, wird dem DeltaPacket-Objekt eine Transaktions-ID zugewiesen. Diese Transaktions-ID ermöglicht die Identifizierung des DeltaPacket-Objekts auf seinem Weg vom Server und zurück zum Client. Alle nachfolgenden Zuweisungen eines DeltaPacket-Objekts mit einer entsprechenden Transaktions-ID zur Eigenschaft deltaPacket werden als Reaktion des Servers auf die zuvor gesendeten Änderungen interpretiert. Wenn ein DeltaPacket-Objekt mit einer entsprechenden ID vorliegt, wird die Sammlung aktualisiert, und die in dem Paket angegebenen Fehler werden gemeldet. Fehler- oder Servermeldungen werden an die Listener des Ereignisses DataSet.resolveDelta weitergeleitet. Beachten Sie, dass die DataSet.logChanges-Einstellungen ignoriert werden, wenn DataSet.deltaPacket ein DeltaPacket-Objekt mit einer entsprechenden ID zugewiesen wird. Liegt ein DeltaPacket-Objekt ohne entsprechende Transaktions-ID vor, wird die Sammlung aktualisiert, als würde die DataSet-API direkt verwendet. Je nach der aktuellen DataSet.logChanges -Einstellung für dataSet und das DeltaPacket-Objekt können hierdurch zusätzliche Delta-Einträge entstehen. Es wird eine Ausnahme des Typs DataSetError ausgegeben, wenn einem DeltaPacket-Objekt eine entsprechende Transaktions-ID zugewiesen wird und eines der Elemente in dem neu zugewiesenen DeltaPacket-Objekt in dem ursprünglichen DeltaPacket-Objekt nicht gefunden werden kann. Siehe auch DataSet.applyUpdates(), DataSet.logChanges, DataSet.resolveDelta 232 Kapitel 4: Komponenten-Referenz DataSet.deltaPacketChanged Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(deltaPacketChanged) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.deltaPacketChanged = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("deltaPacketChanged", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn die Eigenschaft deltaPacket des angegebenen DataSetObjekts geändert wurde und einsatzbereit ist. Siehe auch DataSet.deltaPacket DataSet.disableEvents() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.disableEvents() Rückgaben Keine. Beschreibung Methode; deaktiviert Ereignisse für das DataSet-Objekt. Sind Ereignisse deaktiviert, werden keine UI-Steuerungen (wie etwa eine DataGrid-Komponente) aktualisiert, wenn Elemente in der Sammlung geändert werden oder wenn mit dem DataSet-Objekt ein anderes Element in der Sammlung angesteuert wird. DataSet.enableEvents() dient zum erneuten Aktivieren der Ereignisse. Die Methode disableEvents() kann mehrmals aufgerufen werden; enableEvents() muss dann genauso oft aufgerufen werden, um die Weitergabe von Ereignissen zu reaktivieren. DataSet-Komponente (nur Flash Professional) 233 Beispiel Im folgenden Beispiel werden zuerst Ereignisse deaktiviert und dann erst Elemente in der Sammlung verändert. Dadurch wird verhindert, dass das DataSet-Objekt die Steuerungen aktualisiert und somit die Leistung beeinträchtigt. // Ereignisse für den Datensatz deaktivieren. meinDataSet.disableEvents(); meinDataSet.last(); while(meinDataSet.hasPrevious()) { var price = meinDataSet.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.price = price; meinDataSet.previous(); } // Datensatz zur Aktualisierung der Steuerungen auffordern. meinDataSet.enableEvents(); Siehe auch DataSet.enableEvents() DataSet.enableEvents() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.enableEvents() Rückgaben Keine. Beschreibung Methode; reaktiviert Ereignisse für das DataSet-Objekt, nachdem sie durch einen Aufruf an DataSet.disableEvents() deaktiviert wurden. Wenn Sie Ereignisse für das DataSet-Objekt reaktivieren möchten, müssen Sie die Methode enableEvents() mindestens genau so oft aufrufen, wie disableEvents() zuvor aufgerufen wurde. Beispiel Im folgenden Beispiel werden zuerst Ereignisse deaktiviert und dann erst Elemente in der Sammlung verändert. Dadurch wird verhindert, dass das DataSet-Objekt die Steuerungen aktualisiert und somit die Leistung beeinträchtigt. 234 Kapitel 4: Komponenten-Referenz // Ereignisse für den Datensatz deaktivieren. meinDataSet.disableEvents(); meinDataSet.last(); while(meinDataSet.hasPrevious()) { var price = meinDataSet.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.price = price; meinDataSet.previous(); } // Datensatz zur Aktualisierung der Steuerungen auffordern. meinDataSet.enableEvents(); Siehe auch DataSet.disableEvents() DataSet.filtered Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.filtered Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Daten in dem aktuellen Iterator gefiltert sind. Der Wert true bedeutet, dass die von DataSet.filterFunc angegebene Filterfunktion für jedes Element der Sammlung aufgerufen wird. Beispiel Im folgenden Beispiel ist die Filterung für das DataSet-Objekt employee_ds aktiviert. Angenommen, jeder Eintrag in der DataSet-Sammlung enthält ein Feld namens empType. Die folgende Filterfunktion gibt true zurück, wenn das Feld empType im aktuellen Element auf "management" eingestellt wurde; andernfalls gibt sie den Wert false zurück. employee_ds.filtered = true; employee_ds.filterFunc = function(item:Object) { // Angestellte herausfiltern, die dem Management angehören. return(item.empType != "management"); } Siehe auch DataSet.filterFunc DataSet-Komponente (nur Flash Professional) 235 DataSet.filterFunc Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.filterFunc = function(item:Object) { // true|false zurückgeben; }; Beschreibung Eigenschaft; gibt eine Funktion an, die bestimmt, welche Elemente in der aktuellen Ansicht der Sammlung berücksichtigt werden. Wenn DataSet.filtered auf true eingestellt ist, wird die dieser Eigenschaft zugewiesene Funktion für jedes Übertragungsobjekt in der Sammlung aufgerufen. Für jedes Element, das an die Funktion übergeben wird, sollte der Wert true zurückgegeben werden, wenn das Element in der aktuellen Ansicht berücksichtigt werden soll, bzw. false, wenn das Element nicht angezeigt werden soll. Beispiel Im folgenden Beispiel ist die Filterung für das DataSet-Objekt employee_ds aktiviert. Die angegebene Filterfunktion gibt true zurück, wenn das Feld empType in allen Elementen auf "management" eingestellt ist; andernfalls gibt sie false zurück. employee_ds.filtered = true; employee_ds.filterFunc = function(item:Object) { // Angestellte herausfiltern, die dem Management angehören. return(item.empType != "management"); } Siehe auch DataSet.filtered DataSet.find() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.find(searchValues) Parameter searchValues Ein Array mit einem oder mehreren Feldwerten, nach denen die aktuelle Sortierung durchsucht werden soll. 236 Kapitel 4: Komponenten-Referenz Rückgaben Gibt true zurück, wenn die Werte gefunden wurden; andernfalls wird false zurückgegeben Beschreibung Methode; durchsucht die aktuelle Ansicht der Sammlung nach einem Element mit den in searchValues angegebenen Feldwerten. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filter- und Bereichseinstellungen ab. Wenn ein Element gefunden wird, wird es zum aktuellen Element des DataSet-Objekts. Die Reihenfolge der in searchValues angegebenen Werte muss mit der Feldliste der aktuellen Sortierung exakt übereinstimmen (siehe Beispiel). Wenn die aktuelle Sortierung nicht eindeutig ist, ist das gefundene Übertragungsobjekt möglicherweise nicht das einzige seiner Art. Die erste oder letzte Fundstelle eines Übertragungsobjekts in einer nicht eindeutigen Sortierung lässt sich mit DataSet.findFirst() oder DataSet.findLast() identifizieren. Die Konvertierung der Daten basiert auf dem Typ des zugrunde liegenden Feldes sowie auf dem in dem Array angegebenen Typ. Wenn Sie beispielsweise ["05-02-02"] als Suchwert angeben, wird der Wert anhand des zugrunde liegenden Datumsfeldes und anhand der Methode DataType.setAsString() des Wertes konvertiert. Wenn Sie [new Date().getTime()] angeben, wird die Methode DataType.setAsNumber() des Datums verwendet. Beispiel Im folgenden Beispiel wird ein Element in der aktuellen Sammlung gesucht, dessen Felder name und id die Werte "Bobby" und 105 enthalten. Wenn das Element gefunden wird, wird mit der Methode DataSet.getItemId() die eindeutige ID des Elements in der Sammlung abgerufen, und mit der Methode DataSet.locateById() wird der aktuelle Iterator zu diesem Element verschoben. var studentID:String = null; studentData.addSort("id", ["name","id"]); // Übertragungsobjekt mit den Werten "Bobby" and 105 suchen. // Die Reihenfolge der Suchfelder muss mit der Reihenfolge // der Felder in der addSort()-Methode übereinstimmen. if(studentData.find(["Bobby", 105])) { studentID = studentData.getItemId(); } // Mit der locateByID()-Methode den aktuellen // Iterator zu dem Element in der Sammlung verschieben, dessen ID studentID // lautet. if(studentID != null) { studentData.locateById(studentID); } Siehe auch DataSet.applyUpdates(), DataSet.getItemId(), DataSet.locateById() DataSet-Komponente (nur Flash Professional) 237 DataSet.findFirst() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.findFirst(searchValues) Parameter searchValues Ein Array mit einem oder mehreren Feldwerten, nach denen die aktuelle Sortierung durchsucht werden soll. Rückgaben Gibt true zurück, wenn die Elemente gefunden wurden; andernfalls wird false zurückgegeben. Beschreibung Methode; durchsucht die aktuelle Ansicht der Sammlung nach dem ersten Element mit den in searchValues angegebenen Feldwerten. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filter- und Bereichseinstellungen ab. Die Reihenfolge der in searchValues angegebenen Werte muss mit der Feldliste der aktuellen Sortierung exakt übereinstimmen (siehe Beispiel). Die Konvertierung der Daten basiert auf dem Typ des zugrunde liegenden Feldes sowie auf dem in dem Array angegebenen Typ. Wenn der Suchwert beispielsweise ["05-02-02"] lautet, wird der Wert anhand des zugrunde liegenden Datumsfeldes und anhand der Methode setAsString() des Datums konvertiert. Wenn der angegebene Wert [new Date().getTime()] lautet, wird die Methode setAsNumber() des Datums verwendet. Beispiel Im folgenden Beispiel wird die aktuelle Sammlung nach dem ersten Element durchsucht, dessen Felder name und age die Werte "Bobby" und "13" enthalten. Wenn das Element gefunden wird, wird mit DataSet.getItemId() die eindeutige ID des Elements in der Sammlung abgerufen, und mit DataSet.locateById() wird der aktuelle Iterator zu diesem Element verschoben. var studentID:String = null; studentData.addSort("nameAndAge", ["name", "age"]); // Erstes Übertragungsobjekt mit den angegebenen Werten suchen. // Die Reihenfolge der Suchfelder muss mit der Reihenfolge // der Felder in der addSort()-Methode übereinstimmen. if(studentData.findFirst(["Bobby", "13"])) { studentID = studentData.getItemId(); } 238 Kapitel 4: Komponenten-Referenz // Mit der locateByID()-Methode den aktuellen // Iterator zu dem Element in der Sammlung verschieben, dessen ID studentID // lautet. if(studentID != null) { studentData.locateById(studentID); } Siehe auch DataSet.applyUpdates(), DataSet.getItemId(), DataSet.locateById() DataSet.findLast() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.findLast(searchValues) Parameter searchValues Ein Array mit einem oder mehreren Feldwerten, nach denen die aktuelle Sortierung durchsucht werden soll. Rückgaben Gibt true zurück, wenn die Elemente gefunden wurden; andernfalls wird false zurückgegeben. Beschreibung Methode; durchsucht die aktuelle Ansicht der Sammlung nach dem letzten Element mit den in searchValues angegebenen Feldwerten. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filter- und Bereichseinstellungen ab. Die Reihenfolge der in searchValues angegebenen Werte muss mit der Feldliste der aktuellen Sortierung exakt übereinstimmen (siehe Beispiel). Die Konvertierung der Daten basiert auf dem Typ des zugrunde liegenden Feldes sowie auf dem in dem Array angegebenen Typ. Wenn der Suchwert beispielsweise ["05-02-02"] lautet, wird der Wert anhand des zugrunde liegenden Datumsfeldes und anhand der Methode setAsString() des Datums konvertiert. Wenn der angegebene Wert [new Date().getTime()] lautet, wird die Methode setAsNumber() des Datums verwendet. Beispiel Im folgenden Beispiel wird die aktuelle Sammlung nach dem letzten Element durchsucht, dessen Felder name und age die Werte "Bobby" und "13" enthalten. Wenn das Element gefunden wird, wird mit der Methode DataSet.getItemId() die eindeutige ID des Elements in der Sammlung abgerufen, und mit der Methode DataSet.locateById() wird der aktuelle Iterator zu diesem Element verschoben. DataSet-Komponente (nur Flash Professional) 239 var studentID:String = null; studentData.addSort("nameAndAge", ["name", "age"]); // Letztes Übertragungsobjekt mit den angegebenen Werten suchen. // Die Reihenfolge der Suchfelder muss mit der Reihenfolge // der Felder in der addSort()-Methode übereinstimmen. if(studentData.findLast(["Bobby", "13"])) { studentID = studentData.getItemId(); } // Mit der locateByID()-Methode den aktuellen // Iterator zu dem Element in der Sammlung verschieben, dessen ID studentID // lautet. if(studentID != null) { studentData.locateById(studentID); } Siehe auch DataSet.applyUpdates(), DataSet.getItemId(), DataSet.locateById() DataSet.first() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.first() Rückgaben Keine. Beschreibung Methode; erklärt das erste Element in der aktuellen Ansicht der Sammlung zum aktuellen Element. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filterund Bereichseinstellungen ab. Beispiel Mit dem folgenden Code wird der Datensatz userData zum ersten Element der Sammlung bewegt, und dann wird der Wert der in diesem Element enthaltenen Eigenschaft price mit Hilfe der Eigenschaft DataSet.currentItem angezeigt. inventoryData.first(); trace("Der Preis für das erste Element beträgt" + inventoryData.currentItem.price); Siehe auch DataSet.last() 240 Kapitel 4: Komponenten-Referenz DataSet.getItemId() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.getItemId([index]) Parameter Eine Zahl, die angibt, für welches Element in der aktuellen Elementansicht die zugehörige ID abgerufen werden soll. Dieser Parameter ist optional. index Rückgaben Ein String. Beschreibung Methode; gibt die ID des aktuellen Elements in der Sammlung bzw. des mit index festgelegten Elements zurück. Die ID ist nur innerhalb dieser Sammlung eindeutig und wird automatisch von DataSet.addItem() zugewiesen. Beispiel Mit dem folgenden Code wird die eindeutige ID des aktuellen Elements in der Sammlung abgerufen und dann im Bedienfeld Ausgabe angezeigt. var itemNo:String = meinDataSet.getItemId(); trace("Employee id("+ itemNo+ ")"); Siehe auch DataSet.addItem() DataSet.getIterator() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.getIterator() Rückgaben Ein ValueListIterator-Objekt. DataSet-Komponente (nur Flash Professional) 241 Beschreibung Methode; gibt einen neuen Iterator für diese Sammlung zurück. Der neue Iterator ist ein Klon des gegenwärtig eingesetzten Iterators und reproduziert auch dessen aktuelle Position innerhalb der Sammlung. Diese Methode sollte von erfahrenen Programmierern eingesetzt werden, die gleichzeitig auf mehrere Ansichten einer Sammlung zugreifen möchten. Beispiel meinIterator:ValueListIterator = meinDataSet.getIterator(); meinIterator.sortOn(["name"]); meinIterator.find({name:"John Smith"}).phone = "555-1212"; DataSet.hasNext() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.hasNext() Rückgaben Ein Boolescher Wert. Beschreibung Methode; gibt false zurück, wenn der aktuelle Iterator sich am Ende seiner Ansicht der Sammlung befindet; andernfalls wird true zurückgegeben. Beispiel Im folgenden Beispiel werden alle Elemente in der aktuellen Ansicht der Sammlung durchlaufen (vom ersten Element aus), und für jedes Element wird die Eigenschaft price berechnet. meinDataSet.first(); while(meinDataSet.hasNext()) { var price = meinDataSet.currentItem.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.currentItem.price = price; meinDataSet.next(); } Siehe auch DataSet.currentItem, DataSet.first(), DataSet.next() 242 Kapitel 4: Komponenten-Referenz DataSet.hasPrevious() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.hasPrevious() Rückgaben Ein Boolescher Wert. Beschreibung Methode; gibt false zurück, wenn der aktuelle Iterator sich am Anfang seiner Ansicht der Sammlung befindet; andernfalls wird true zurückgegeben. Beispiel Im folgenden Beispiel werden alle Elemente in der aktuellen Ansicht der Sammlung durchlaufen (vom letzten Element aus), und für jedes Element wird die Eigenschaft price berechnet. meinDataSet.last(); while(meinDataSet.hasPrevious()) { var price = meinDataSet.currentItem.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.currentItem.price = price; meinDataSet.previous(); } Siehe auch DataSet.currentItem, DataSet.skip(), DataSet.previous() DataSet.hasSort() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.hasSort(sortName) Parameter sortName Ein String, der den Namen einer mit DataSet.addSort() erstellten Sortierung enthält. Rückgaben Ein Boolescher Wert. DataSet-Komponente (nur Flash Professional) 243 Beschreibung Methode; gibt true zurück, wenn die von sortName angegebene Sortierung vorhanden ist; andernfalls wird false zurückgegeben. Beispiel Mit dem folgenden Code wird getestet, ob eine Sortierung namens „customerSort“ vorhanden ist. Wenn die Sortierung bereits existiert, wird sie mit Hilfe der Methode DataSet.useSort() zur aktuellen Sortierung erklärt. Wenn eine solche Sortierung nicht existiert, wird sie mit Hilfe der Methode DataSet.addSort() erstellt. if(meinDataSet.hasSort("customerSort")) meinDataSet.useSort("customerSort"); } else { meinDataSet.addSort("customerSort", ["customer"], DataSetIterator.Descending); } Siehe auch DataSet.applyUpdates(), DataSet.useSort() DataSet.isEmpty() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.isEmpty() Rückgaben Ein Boolescher Wert. Beschreibung Methode; gibt true zurück, wenn das angegebene DataSet-Objekt keine Elemente enthält (d. h., wenn dataSet.length == 0). Beispiel Im folgenden Beispiel wird eine Schaltfläche zum Löschen von Einträgen (nicht angezeigt) deaktiviert, wenn das zugehörige DataSet-Objekt leer ist. if(userData.isEmpty()){ delete_btn.enabled = false; } Siehe auch DataSet.length 244 Kapitel 4: Komponenten-Referenz DataSet.items Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinDataSet.items Beschreibung Eigenschaft; ein von meinDataSet verwaltetes Element-Array. Beispiel Im folgenden Beispiel wird der Eigenschaft items eines DataSet-Objekts ein Objekt-Array zugewiesen. var recData = [{id:0, firstName:"Mick", lastName:"Jones"}, {id:1, firstName:"Joe", lastName:"Strummer"}, {id:2, firstName:"Paul", lastName:"Simonon"}]; meinDataSet.items = recData; DataSet.itemClassName Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.itemClassName Beschreibung Eigenschaft; ein String mit dem Namen der Klasse, die erstellt werden sollte, wenn der Sammlung Elemente hinzugefügt werden. Die von Ihnen angegebene Klasse muss die TransferObjectSchnittstelle wie im folgenden Beispiel gezeigt implementieren. interface mx.data.to.TransferObject { function clone():Object; function getPropertyData():Object; function setPropertyData(propData:Object):Void; } Sie können diese Eigenschaft auch im Eigenschafteninspektor einstellen. DataSet-Komponente (nur Flash Professional) 245 Damit die angegebene Klasse zur Laufzeit verfügbar ist, müssen Sie außerdem im Code der SWFDatei einen vollständig qualifizierten Verweis auf diese Klasse erstellen, wie im folgenden Beispiel gezeigt: var meinItem:mein.package.meinItem; Wenn Sie versuchen, den Wert dieser Eigenschaft zu ändern, nachdem das Array DataSet.items geladen wurde, wird eine Ausnahme des Typs DataSetError ausgegeben. Weitere Informationen zur TransferObject-Schnittstelle finden Sie unter „TransferObjectSchnittstelle“ auf Seite 581. DataSet.iteratorScrolled Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(iteratorScrolled) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.iteratorScrolled = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("iteratorScrolled", listenerObject) Beschreibung Ereignis; wird sofort generiert, nachdem der aktuelle Iterator beim Scrollen ein neues Element in der Sammlung angesteuert hat. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: target type Das DataSet-Objekt, das das Ereignis generiert hat. Der String "iteratorScrolled". scrolled Eine Zahl, die angibt, wie viele Elemente der Iterator beim Scrollen durchlaufen hat. Positive Werte bedeuten, dass der Iterator sich in der Sammlung vorwärts bewegt hat, und negative Werte, dass er sich rückwärts bewegt hat. Beispiel Im folgenden Beispiel wird die Statusleiste einer Anwendung (nicht angezeigt) aktualisiert, wenn sich die Position des aktuellen Iterators ändert. on(iteratorScrolled) { var dataSet:mx.data.components.DataSet = eventObj.target; var statusBarText = dataSet.fullname+" Acct #: "+dataSet.getField("acctnum").getAsString(); setStatusBar(statusBarText); } 246 Kapitel 4: Komponenten-Referenz DataSet.last() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.last() Rückgaben Keine. Beschreibung Methode; erklärt das letzte Element in der aktuellen Ansicht der Sammlung zum aktuellen Element. Beispiel Der folgende Code, der mit einer Button-Komponente verknüpft ist, geht zu dem letzten Element in der DataSet-Sammlung. function goLast(eventObj:obj) { inventoryData.last(); } goLast_btn.addEventListener("click", goLast); Siehe auch DataSet.first() DataSet.length Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.length Beschreibung Eigenschaft (schreibgeschützt); gibt an, wie viele Elemente sich in der aktuellen Ansicht der Sammlung befinden. Die Anzahl der anzeigbaren Elemente hängt von den aktuellen Filter- und Bereichseinstellungen ab. DataSet-Komponente (nur Flash Professional) 247 Beispiel Im folgenden Beispiel wird eine Warnung eingeblendet, wenn ein Benutzer mit einer bearbeitbaren DataGrid-Komponente oder auf andere Weise in einem Datensatz nicht genügend Einträge erstellt hat. if(meinDataSet.length < MIN_REQUIRED) { alert("Sie benötigen mindestens "+MIN_REQUIRED); } DataSet.loadFromSharedObj() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.loadFromSharedObj(objName, [localPath]) Parameter Ein String, der den Namen des abzurufenden gemeinsamen Objekts angibt. Der Name darf zwar Schrägstriche enthalten (z. B. „Mitarbeiter/Adressen“), aber weder Leerzeichen noch eines der folgenden Zeichen: objName ~ % & \ ; : " ' , < > ? # localPath Ein optionaler Stringparameter mit dem vollständigen oder unvollständigen Pfad zu der SWF-Datei, die das gemeinsame Objekt erstellt hat. Anhand dieses Strings lässt sich feststellen, wo das gemeinsame Objekt auf dem Computer gespeichert wurde. Der Standardwert ist der vollständige Pfadname der SWF-Datei. Rückgaben Keine. Beschreibung Methode; lädt alle relevanten Daten, die zur Wiederherstellung dieser DataSet-Sammlung aus einem gemeinsamen Objekt erforderlich sind. Mit DataSet.saveToSharedObj() können Sie eine DataSet-Sammlung in einem gemeinsamen Objekt speichern. Die Methode DataSet.loadFromSharedObject() überschreibt alle Daten oder anstehenden Änderungen, die diese DataSet-Sammlung möglicherweise enthält. Beachten Sie, dass der Instanzname der DataSet-Sammlung zur Identifizierung der Daten innerhalb des angegebenen gemeinsamen Objekts dient. Diese Methode gibt eine Ausnahme des Typs DataSetError aus, wenn das angegebene gemeinsame Objekt unauffindbar ist oder wenn beim Abruf der Daten aus dem Objekt Probleme auftreten. Beispiel Im folgenden Beispiel wird versucht, ein gemeinsames Objekt namens webapp/customerInfo zu laden, das mit dem Datensatz meinDataSet verknüpft ist. Die Methode wird in einem Codeblock des Typs try...catch aufgerufen. 248 Kapitel 4: Komponenten-Referenz try { meinDataSet.loadFromSharedObj("webapp/customerInfo"); } catch(e:DataSetError) { trace("Gemeinsames Objekt kann nicht geladen werden."); } Siehe auch DataSet.saveToSharedObj() DataSet.locateById() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.locateById(id) Parameter id Ein Stringbezeichner für das in der Sammlung zu suchende Element. Rückgaben Ein Boolescher Wert. Beschreibung Methode; bewegt den aktuellen Iterator zu dem Sammlungselement, dessen ID mit id übereinstimmt. Diese Methode gibt true zurück, wenn die angegebene ID mit einem Element in der Sammlung übereinstimmt; anderenfalls wird false zurückgegeben. Beispiel Im folgenden Beispiel wird mit DataSet.find() ein Element in der aktuellen Sammlung gesucht, dessen Felder name und id die Werte "Bobby" und 105 enthalten. Wenn das Element gefunden wird, wird mit der Methode DataSet.getItemId() die eindeutige ID dieses Elements abgerufen, und mit der Methode DataSet.locateById() wird der aktuelle Iterator zu diesem Element bewegt. var studentID:String = null; studentData.addSort("id", ["name","id"]); if(studentData.find(["Bobby", 105])) { studentID = studentData.getItemId(); studentData.locateById(studentID); } Siehe auch DataSet.applyUpdates(), DataSet.find(), DataSet.getItemId() DataSet-Komponente (nur Flash Professional) 249 DataSet.logChanges Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.logChanges Beschreibung Eigenschaft; Boolescher Wert, der angibt, ob Änderungen an dem Datensatz oder dessen Elementen in DataSet.deltaPacket aufgezeichnet (true) bzw. nicht aufgezeichnet (false) werden sollen. Wenn der Wert dieser Eigenschaft true lautet, werden alle sammlungs- oder elementspezifischen Vorgänge protokolliert. Zu den sammlungsspezifischen Änderungen gehören das Hinzufügen von Elementen sowie das Entfernen von Elementen aus der Sammlung. Zu den elementspezifischen Vorgängen gehören Änderungen an Elementeigenschaften sowie alle Methodenaufrufe, die mit Hilfe der DataSet-Komponente für Elemente durchgeführt werden. Beispiel Im folgenden Beispiel wird die Protokollierung für das DataSet-Objekt userData deaktiviert. userData.logChanges = false; Siehe auch DataSet.deltaPacket DataSet.modelChanged Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Beschreibung on(modelChanged) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.modelChanged = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("modelChanged", listenerObject) 250 Kapitel 4: Komponenten-Referenz Beschreibung Ereignis; Broadcastübertragung, wenn die Sammlung sich auf irgendeine Weise ändert, z. B. wenn Elemente der Sammlung hinzugefügt bzw. daraus entfernt werden, wenn einer Elementeigenschaft ein anderer Wert zugewiesen wurde oder wenn die Sammlung gefiltert oder sortiert wird. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: Das DataSet-Objekt, das das Ereignis generiert hat. target type Der String "iteratorScrolled". firstItem Der Index (Zahl) des ersten Elements in der Sammlung, auf das die Änderung sich ausgewirkt hat. lastItem Der Index (Zahl) des letzten Elements in der Sammlung, auf das die Änderung sich ausgewirkt hat (stimmt mit firstItem überein, wenn nur ein Element betroffen war). fieldName undefined, Ein String mit dem Namen des betroffenen Feldes. Diese Eigenschaft ist es sei denn, eine Eigenschaft des DataSet-Objekts wurde geändert. Ein String mit einer Beschreibung der durchgeführten Änderung. Dieser Parameter kann folgende Werte enthalten: eventName Stringwert Beschreibung "addItems" Mehrere Elemente wurden hinzugefügt. "filterModel" Das Modell wurde gefiltert, und die Ansicht muss aktualisiert (und die Bildlaufposition zurückgesetzt) werden. "removeItems" Mehrere Elemente wurden gelöscht. "schemaLoaded" Die Felddefinition des Datenproviders wurde deklariert. "sort" Die Daten wurden sortiert. "updateAll" Die gesamte Ansicht mit Ausnahme der Bildlaufposition muss aktualisiert werden. "updateColumn" Eine Felddefinition innerhalb des Datenproviders muss vollständig aktualisiert werden. "updateField" Ein Feld in einem Element wurde verändert und muss aktualisiert werden. "updateItems" Mehrere Elemente müssen aktualisiert werden. Beispiel Im folgenden Beispiel wird eine Schaltfläche zum Löschen von Elementen deaktiviert, wenn die Elemente aus der Sammlung entfernt wurden und das DataSet-Zielobjekt nun leer ist. on(modelChanged) { delete_btn.enabled = ((eventObj.eventName == "removeItems") && (eventObj.target.isEmpty())); } Siehe auch DataSet.isEmpty() DataSet-Komponente (nur Flash Professional) 251 DataSet.newItem Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(newItem) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.newItem = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("newItem", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn mit DataSet.createItem() ein neues Übertragungsobjekt erstellt wird. Ein Listener für dieses Ereignis kann an dem Element Änderungen vornehmen, bevor das Element der Sammlung hinzugefügt wird. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: target Das DataSet-Objekt, das das Ereignis generiert hat. type Der String "iteratorScrolled". item Ein Verweis auf das erstellte Element. Beispiel Im folgenden Beispiel wird ein neu erstelltes Element geändert, bevor es der Sammlung hinzugefügt wird. function newItemEvent(evt:Object):Void { var employee:Object = evt.item; employee.name = "newGuy"; // Eigenschaftendaten sind XML employee.zip = employee.getPropertyData().firstChild.childNodes[1].attributes.zip; } employees_ds.addEventListener("newItem", newItemEvent); DataSet.next() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.next() 252 Kapitel 4: Komponenten-Referenz Rückgaben Keine. Beschreibung Methode; erklärt das nächste Element in der aktuellen Ansicht der Sammlung zum aktuellen Element. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filterund Bereichseinstellungen ab. Beispiel Im folgenden Beispiel werden alle Elemente in einem DataSet-Objekt ausgehend vom ersten Element durchlaufen, und es wird für ein Feld jedes Elements eine Berechnung durchgeführt. meinDataSet.first(); while(meinDataSet.hasNext()) { var price = meinDataSet.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.price = price; meinDataSet.next(); } Siehe auch DataSet.first(), DataSet.hasNext() DataSet.previous() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.previous() Rückgaben Keine. Beschreibung Methode; erklärt das vorherige Element in der aktuellen Ansicht der Sammlung zum aktuellen Element. Welche Elemente sich in der aktuellen Ansicht befinden, hängt von den aktuellen Filterund Bereichseinstellungen ab. Im folgenden Beispiel werden alle Elemente in der aktuellen Ansicht der Sammlung ausgehend vom letzten Element durchlaufen, und es wird für ein Feld jedes Elements eine Berechnung durchgeführt. DataSet-Komponente (nur Flash Professional) 253 meinDataSet.last(); while(meinDataSet.hasPrevious()) { var price = meinDataSet.price; price = price * 0,5; // Alles zum halben Preis! meinDataSet.price = price; meinDataSet.previous(); } Siehe auch DataSet.first(), DataSet.hasNext() DataSet.properties Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.properties Beschreibung Eigenschaft (schreibgeschützt); gibt ein Objekt zurück, das alle für ein beliebiges Übertragungsobjekt in dieser Sammlung verfügbaren Eigenschaften (Felder) enthält. Beispiel Im folgenden Beispiel werden alle Namen der Eigenschaften angezeigt, die das DataSet-Objekt meinDataSet enthält. for(var i in meinDataSet.properties) { trace("Feld '"+i+ "' hat den Wert "+ meinDataSet.properties[i]); } DataSet.readOnly Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.readOnly Beschreibung Eigenschaft; Boolescher Wert, der angibt, ob diese Sammlung geändert werden kann (false) oder ob sie schreibgeschützt ist (true). Wenn Sie diese Eigenschaft auf true einstellen, kann die Sammlung nicht aktualisiert werden. Sie können diese Eigenschaft auch im Eigenschafteninspektor einstellen. 254 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird das DataSet-Objekt meinDataSet schreibgeschützt; danach wird versucht, den Wert einer Eigenschaft zu ändern, die zu dem aktuellen Element in der Sammlung gehört. Daraufhin wird eine Ausnahme ausgegeben. meinDataSet.readOnly = true; // Hierdurch wird ein Ausnahmefehler ausgelöst. meinDataSet.currentItem.price = 15; Siehe auch DataSet.currentItem DataSet.removeAll() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.removeAll() Parameter Keine. Rückgaben Keine. Beschreibung Methode; entfernt alle Elemente aus der DataSet-Sammlung. Beispiel Mit diesem Beispiel werden alle Elemente aus der Datensatz-Sammlung contact_ds entfernt: contact_ds.removeAll(); DataSet-Komponente (nur Flash Professional) 255 DataSet.removeItem Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(removeItem) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.removeItem = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("removeItem", listenerObject) Beschreibung Ereignis; Erstellung unmittelbar bevor ein neues Element aus dieser Sammlung entfernt wird. Wenn Sie die Eigenschaft result des Ereignisobjekts auf false einstellen, wird der Löschvorgang abgebrochen. Wenn Sie sie auf true einstellen, ist der Löschvorgang zulässig. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: Das DataSet-Objekt, das das Ereignis generiert hat. target type Der String "removeitem". item Eine Referenz auf das zu entfernende Element in der Sammlung. result Eine Boolescher Wert, der angibt, ob das Element entfernt werden soll. Der Standardwert ist true. Beispiel In diesem Beispiel bricht die Ereignisprozedur on(removeitem) die Löschung des neuen Elements ab, wenn eine benutzerdefinierte Funktion mit dem Namen userHasAdminPrivs() den Wert false zurückgibt. Andernfalls ist die Löschung zulässig. on(removeItem) { if(globalObj.userHasAdminPrivs()) { // Löschung des Elements zulassen. eventObj.result = true; } else { // Löschung des Elements nicht zulassen. Der Benutzer hat keine // Administratorrechte. eventObj.result = false; } } Siehe auch DataSet.addItem 256 Kapitel 4: Komponenten-Referenz DataSet.removeItem() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.removeItem([item]) Parameter item Das zu entfernende Element. Dieser Parameter ist optional. Rückgaben Ein Boolescher Wert. Gibt true zurück, wenn das Element entfernt werden konnte, gibt false zurück, wenn es nicht entfernt werden konnte. Beschreibung Methode; entfernt das angegebene Element aus der Sammlung oder entfernt das aktuelle Element, wenn der Parameter item ausgelassen wurde. Dieser Vorgang wird in DataSet.deltaPacket protokolliert, wenn DataSet.logChanges true ist. Beispiel Der folgende Code, der einer Instanz der Button-Komponente zugewiesen wurde, entfernt das aktuelle Element aus dem DataSet-Objekt mit der Bezeichnung usersData, das sich auf derselben Zeitleiste befindet wie die Button-Instanz. on(click){ _parent.usersData.removeItem(); } Siehe auch DataSet.deltaPacket, DataSet.logChanges DataSet.removeRange() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.removeRange() Rückgaben Keine. DataSet-Komponente (nur Flash Professional) 257 Beschreibung Methode; entfernt die aktuellen Einstellungen für den Endpunkt, die mit Hilfe von DataSet.setRange() für den aktuellen Iterator angegeben wurden. Beispiel meinDataSet.addSort("name_id", ["name", "id"]); meinDataSet.setRange(["Bobby", 105],["Cathy", 110]); while(meinDataSet.hasNext()) { meinDataSet.gradeLevel ="5"; // Änderung aller Ebenen in diesem Bereich meinDataSet.next(); } meinDataSet.removeRange(); meinDataSet.removeSort("name_id"); Siehe auch DataSet.applyUpdates(), DataSet.hasNext(), DataSet.next(), DataSet.removeSort(), DataSet.setRange() DataSet.removeSort() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.removeSort(sortName) Parameter sortName Ein String, der den Namen der Sortierung angibt, die entfernt werden soll. Rückgaben Keine. Beschreibung Methode; entfernt die angegebene Sortierung aus dem DataSet-Objekt, sofern die betreffende Sortierung vorhanden ist. Wenn die angegebene Sortierung nicht vorhanden ist, wird ein Ausnahmefehler des Typs DataSetError ausgegeben. Beispiel meinDataSet.addSort("name_id", ["name", "id"]); meinDataSet.setRange(["Bobby", 105],["Cathy", 110]); while(meinDataSet.hasNext()) { meinDataSet.gradeLevel ="5"; // Änderung aller Ebenen in diesem Bereich meinDataSet.next(); } meinDataSet.removeRange(); meinDataSet.removeSort("name_id"); 258 Kapitel 4: Komponenten-Referenz Siehe auch DataSet.applyUpdates(), DataSet.hasNext(), DataSet.next(), DataSet.removeRange(), DataSet.setRange() DataSet.resolveDelta Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung on(resolveDelta) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.resolveDelta = function (eventObj) { // Hier Code eingeben } dataSet.addEventListener("resolveDelta", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn DataSet.deltaPacket ein DeltaPacket-Objekt zugewiesen wird, dessen Transaktions-ID mit der eines zuvor aus dem DataSet-Objekt abgerufenen DeltaPacket-Objekts übereinstimmt, und das Meldungen enthält, die mit einem beliebigen Delta- oder DeltaItem-Objekt innerhalb dieses DeltaPacket-Objekts in Zusammenhang stehen. Mit diesem Ereignis haben Sie die Möglichkeit zur Korrektur von Fehlern, die der Server bei dem Versuch, zuvor übermittelte Änderungen anzuwenden, zurückgibt. Üblicherweise wird mit Hilfe dieses Ereignisses ein Dialogfeld mit einem Hinweis auf die in Konflikt stehenden Werte angezeigt, sodass der Benutzer die Möglichkeit hat, vor einer erneuten Übermittlung der Daten entsprechende Änderungen vorzunehmen. Das Ereignisobjekt (eventObj) enthält folgende Eigenschaften: target type Das DataSet-Objekt, das das Ereignis generiert hat. Der String "resolveDelta". Ein Array aus Delta- und zugehörigen DeltaItem-Objekten, die Meldungen über Längen ungleich Null enthalten. data Beispiel Mit diesem Beispiel wird ein Formular mit der Bezeichnung reconcileForm angezeigt (nicht abgebildet) und eine Methode auf diesem Formular-Objekt aufgerufen (setReconcileData()), mit der der Benutzer vom Server zurückgegebene, in Konflikt stehende Werte korrigieren kann. DataSet-Komponente (nur Flash Professional) 259 meinDataSet.addEventListener("resolveDelta", resolveDelta); function resolveDelta(eventObj:Object) { reconcileForm.visible = true; reconcileForm.setReconcileData(eventObj.data); } // im reconcileForm-Code function setReconcileData(data:Array):Void { var di:DeltaItem; var ops:Array = ["property", "method"]; var cl:Array; // change-Liste var msg:String; for (var i = 0; i<data.length; i++) { cl = data[i].getChangeList(); for (var j = 0; j<cl.length; j++) { di = cl[j]; msg = di.getMessage(); if (msg.length>0) { trace("Das Problem '"+msg+"' ist bei der Durchführung einer Modifikation vom Typ '"+ops[di.kind]+"' auf/mit '"+di.name+"' aufgetreten. Aktueller Serverwert: ["+di.curValue+"], übermittelter Wert: ["+di.newValue+"] Bitte korrigieren!"); } } } } DataSet.saveToSharedObj() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.saveToSharedObj(objName, [localPath]) Parameter Ein String, der den Namen des gemeinsamen Objekts angibt, das erstellt werden soll. Der Name darf zwar Schrägstriche enthalten (z. B. „Mitarbeiter/Adressen“), aber weder Leerzeichen noch eines der folgenden Zeichen: objName ~ % & \ ; : " ' , < > ? # localPath Ein optionaler Stringparameter mit dem vollständigen oder unvollständigen Pfad zu der SWF-Datei, die das gemeinsame Objekt erstellt hat. Mit Hilfe des Strings wird bestimmt, wo das Objekt auf dem Rechner des Benutzers gespeichert werden soll. Der Standardwert ist der vollständige Pfadname der SWF-Datei. Rückgaben Keine. 260 Kapitel 4: Komponenten-Referenz Beschreibung Methode; speichert alle relevanten Daten, die zur Wiederherstellung dieser DataSet-Sammlung in einem gemeinsamen Objekt erforderlich sind. Damit kann der Benutzer seine Arbeit auch dann fortsetzen, wenn die Verbindung zu den Quelldaten getrennt wurde, sofern diese in einem Netzwerk abgelegt sind. Mit dieser Methode werden alle Daten überschrieben, die sich möglicherweise in dem angegebenen gemeinsamen Objekt für diese Datensatz-Sammlung befinden. Mit Hilfe von DataSet.loadFromSharedObj() lässt sich eine DataSet-Sammlung aus einem gemeinsamen Objekt wiederherstellen. Beachten Sie, dass der Instanzname der DataSetSammlung zur Identifizierung der Daten innerhalb des angegebenen gemeinsamen Objekts dient. Wenn das gemeinsame Objekt nicht erstellt werden kann oder wenn beim Füllen des Objekts mit Daten Probleme auftreten, gibt diese Methode den Ausnahmefehler DataSetError aus. Beispiel In diesem Beispiel wird saveToSharedObj() in einem try..catch-Block aufgerufen, und es wird eine Fehlermeldung angezeigt, wenn beim Speichern der Daten im gemeinsamen Objekt Probleme auftreten. try { meinDataSet.saveToSharedObj("webapp/customerInfo"); } catch(e:DataSetError) { trace("Gemeinsames Objekt kann nicht erstellt werden.”); } Siehe auch DataSet.loadFromSharedObj() DataSet.schema Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.schema Beschreibung Eigenschaft; ermöglicht die XML-Darstellung des Schemas für dieses DataSet-Objekt. Der XMLCode, der dieser Eigenschaft zugewiesen wird, muss folgendes Format aufweisen: DataSet-Komponente (nur Flash Professional) 261 <?xml version="1.0"?> <Eigenschaften> <property name="propertyName"> <type name="dataType" /> <encoder name="dataType"> <options> <dataFormat>format options<dataFormat/> <options/> <encoder/> <kind name="dataKind"> <options/> </kind> </property> <property> ... </property> ... </properties> Ein Ausnahmefehler des Typs DataSetError wird ausgegeben, wenn der angegebene XML-Code nicht das oben beschriebene Format aufweist. Beispiel meinDataSet.schema = new XML("<properties><property name="billable"> ..etc.. </properties>"); DataSet.selectedIndex Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.selectedIndex Beschreibung Eigenschaft; gibt den ausgewählten Index innerhalb der Sammlung an. Sie können diese Eigenschaft mit dem ausgewählten Element in einer DataGrid- oder List-Komponente und umgekehrt verbinden. Ein Beispiel, in dem dies veranschaulicht wird, finden Sie unter „Anwendungen mit der DataSet-Komponente erstellen“ auf Seite 220. Beispiel Im folgenden Beispiel wird der ausgewählte Index eines DataSet-Objekts (userData) auf den Index in einer DataGrid-Komponente (userGrid) eingestellt. userData.selectedIndex = userGrid.selectedIndex; 262 Kapitel 4: Komponenten-Referenz DataSet.setIterator() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.setIterator(iterator) Parameter Ein Iterator-Objekt, das von einem Aufruf von DataSet.getIterator() zurückgegeben wird. iterator Rückgaben Keine. Beschreibung Methode; weist diesem DataSet-Objekt den angegebenen Iterator zu und macht ihn zum aktuellen Iterator. Der Iterator muss aus einem früheren Aufruf von DataSet.getIterator() auf das DataSet-Objekt, dem er zugewiesen wird, stammen. Andernfalls wird ein Ausnahmefehler des Typs DataSetError ausgegeben. Beispiel meinIterator:ValueListIterator = meinDataSet.getIterator(); meinIterator.sortOn(["name"]); meinDataSet.setIterator(meinIterator); Siehe auch DataSet.getIterator() DataSet.setRange() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.setRange(startValues, endValues) Parameter Ein Array aus Schlüsselwerten aus den Eigenschaften des ersten Transferobjekts startValues in dem Bereich. endValues Ein Array aus Schlüsselwerten aus den Eigenschaften des letzten Transferobjekts in dem Bereich. DataSet-Komponente (nur Flash Professional) 263 Rückgaben Keine. Beschreibung Methode; legt die Endpunkte für den aktuellen Iterator fest. Die Endpunkte bestimmen den Bereich, auf den die Funktionen des Iterators beschränkt bleiben. Dies ist nur zulässig, wenn für den aktuellen Iterator mit Hilfe von DataSet.applyUpdates() eine gültige Sortierung festgelegt wurde. Einen Bereich für den aktuellen Iterator festzulegen ist wirkungsvoller als der Einsatz eines Filters, wenn Sie eine Gruppierung der Werte wünschen (siehe DataSet.filterFunc). Beispiel meinDataSet.addSort("name_id", ["name", "id"]); meinDataSet.setRange(["Bobby", 105],["Cathy", 110]); while(meinDataSet.hasNext()) { meinDataSet.gradeLevel ="5"; // Änderung aller Ebenen in diesem Bereich meinDataSet.next(); } meinDataSet.removeRange(); meinDataSet.removeSort("name_id"); Siehe auch DataSet.applyUpdates(), DataSet.hasNext(), DataSet.next(), DataSet.removeRange(), DataSet.removeSort() DataSet.skip() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.skip(offSet) Parameter Eine Ganzzahl, die die Anzahl der Datensätze angibt, um die die Iteratorposition verschoben werden soll. offSet Rückgaben Keine. Beschreibung Methode; verschiebt die aktuelle Position des Iterators in der Sammlung um die Anzahl an Datensätzen nach vorne oder nach hinten, die durch offSet angegeben wird. Bei positiven offSet-Werten wird die Iteratorposition nach vorne verschoben, bei negativen nach hinten. Wenn der angegebene offSet-Wert über den Anfang (oder das Ende) der Sammlung hinausgeht, wird der Iterator an den Anfang (oder ans Ende) der Sammlung verschoben. 264 Kapitel 4: Komponenten-Referenz Beispiel In diesem Beispiel wird der aktuelle Iterator zunächst auf das erste Element in der Sammlung und dann auf das vorletzte Element positioniert. Für ein Feld dieses Elements wird schließlich eine Berechnung durchgeführt. meinDataSet.first(); // Verschieben auf das vorletzte Element var itemsToSkip = meinDataSet.length - 2; meinDataSet.skip(itemsToSkip).price = meinDataSet.amount * 10; DataSet.useSort() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung dataSet.useSort(sortName, order) Parameter sortName Ein String, der den Namen der Sortierung enthält, die verwendet werden soll. order Ein ganzzahliger Wert, der die Sortierreihenfolge der Sortierung angibt. DataSetIterator.Ascending oder DataSetIterator.Descending sein. Der Wert muss Rückgaben Keine. Beschreibung Methode; ändert die Sortierung für den aktuellen Iterator auf die Sortierung, die von sortName angegeben wird, sofern diese existiert. Wenn die von sortName angegebene Sortierung nicht existiert, wird ein Ausnahmefehler vom Typ DataSetError ausgegeben. Eine Sortierung können Sie mit Hilfe von DataSet.applyUpdates() erstellen. Beispiel Dieser Code bestimmt mit Hilfe von DataSet.hasSort(), ob eine Sortierung mit der Bezeichnung "customer" vorhanden ist. Ist das der Fall, ruft der Code DataSet.useSort() auf, sodass "customer" zur aktuellen Sortierung wird. Andernfalls erstellt der Code mit Hilfe von DataSet.addSort() eine Sortierung mit dieser Bezeichnung. if(meinDataSet.hasSort("customer")) { meinDataSet.useSort("customer"); } else { meinDataSet.addSort("customer", ["customer"], DataSetIterator.Descending); } Siehe auch DataSet.applyUpdates(), DataSet.hasSort() DataSet-Komponente (nur Flash Professional) 265 DateChooser-Komponente (nur Flash Professional) Bei der DateChooser-Komponente handelt es sich um einen Kalender, über den der Benutzer ein Datum auswählen kann. Mit Hilfe von Schaltflächen lassen sich die Monate durchsuchen und gewünschte Tage per Mausklick auswählen. Zur Festlegung der Namen von Monaten und Wochentagen, zur Bestimmung des ersten Tages in einer Woche oder eines deaktivierten Datums oder auch zur Hervorhebung des aktuellen Datums können Sie entsprechende Parameter verwenden. Eine Live-Vorschau jeder DateChooser-Instanz zeigt während des Authorings die im Eigenschafteninspektor oder Komponenten-Inspektor angegebenen Werte. DateChooser-Komponente verwenden (nur Flash Professional) Der DateChooser kann überall dort verwendet werden, wo der Benutzer ein Datum auswählen soll. Beispielsweise ist der Einsatz der DateChooser-Komponente bei einem Hotelreservierungssystem denkbar, bei dem bestimmte Tage auswählbar und andere deaktiviert sein sollen. Ein anderes Einsatzgebiet wäre eine Anwendung, die aktuelle Ereignisse anzeigt, z. B. Konferenzen oder das aktuelle Theaterprogramm, wenn der Benutzer ein Datum auswählt. DateChooser-Parameter Jeder Instanz einer DateChooser-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: Mit monthNames werden die in der Kopfzeile des Kalenders angezeigten Monatsnamen festgelegt. Bei dem Wert handelt es sich um ein Array, und die Standardwerte lauten ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]. Mit dayNames werden die Namen der Wochentage festgelegt. Bei dem Wert handelt es sich um ein Array, und die Standardwerte lauten ["S", "M", "D", "M", "D", "F", "S"]. Mit firstDayOfWeek wird angegeben, welcher Wochentag (0 - 6, wobei 0 das erste Element im Array dayNames bezeichnet) in der ersten Spalte des DateChooser angezeigt wird. Mit dieser Eigenschaft wird die Anzeigereihenfolge der Tagesspalten geändert. Mit disabledDays werden die deaktivierten Wochentage bestimmt. Dieser Parameter ist ein Array, das bis zu 7 Werte enthalten kann. Der Standardwert ist [] (leeres Array). gibt an, ob das aktuelle Datum hervorgehoben werden soll oder nicht. Der Standardwert lautet true. showToday Sie können diese und weitere Optionen für die DateChooser-Komponente über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter „DateChooser-Klasse (nur Flash Professional)“ auf Seite 268. 266 Kapitel 4: Komponenten-Referenz Anwendungen mit der DateChooser-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine DateChooserKomponente hinzufügen. In diesem Beispiel soll der DateChooser die Auswahl eines Datums für ein Flugreservierungssystem ermöglichen. Alle Tage vor dem 15. Oktober, alle Montage sowie eine Periode über die Feiertage im Dezember sollen deaktiviert werden. So erstellen Sie eine Anwendung mit einer DateChooser-Komponente: 1 Doppelklicken Sie im Bedienfeld Komponenten auf die DateChooser-Komponente, damit sie der Bühne hinzugefügt wird. 2 Geben Sie im Eigenschafteninspektor den Instanznamen flightCalendar ein. 3 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, um den auswählbaren Datumsbereich festzulegen: flightCalendar.selectableRange = {rangeStart:new Date(2003, 9, 15), rangeEnd:new Date(2003, 11, 31)} Mit diesem Code wird der Eigenschaft selectableRange in einem ActionScript-Objekt, das zwei Date-Objekte mit den Variablennamen rangeStart und rangeEnd enthält, ein Wert zugewiesen. Sie legen damit die obere und die untere Grenze des Bereichs fest, aus dem der Benutzer ein Datum auswählen kann. 4 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, um einen Bereich festzulegen, der auf Grund von Feiertagen deaktiviert sein soll: flightCalendar.disabledRanges = [{rangeStart: new Date(2003, 11, 15), rangeEnd: new Date(2003, 11, 26)}]; 5 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, damit alle Montage deaktiviert werden. flightCalendar.disabledDays=[1]; 6 Steuerung > Film testen Anpassen der DateChooser-Komponente (nur Flash Professional) DateChooser-Komponenten können sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()). Stile für die DateChooser-Komponente verwenden Mit Hilfe der Stileigenschaften können Sie das Aussehen einer DateChooser-Instanz festlegen. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. DateChooser-Komponente (nur Flash Professional) 267 Eine DateChooser-Komponente unterstützt folgende Kranz-Stile: Stil Beschreibung themeColor Die Hervorhebungsfarbe für das Rollover und die ausgewählten Daten. Dies ist der einzige Farbstil, der seinen Wert nicht übernimmt. Mögliche Wert sind "haloGreen", "haloBlue" und "haloOrange". color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Die Textauszeichnung: „none“ oder „underline“. Skins für die DateChooser-Komponente verwenden Das Erscheinungsbild der DateChooser-Komponente wird mit Hilfe von Skins bestimmt. Um dem DateChooser beim Authoring Skins zuweisen zu können, modifizieren Sie in der Bibliothek von einer der FLA-Dateien des Themas die Skin-Symbole im Ordner Flash UI Components 2/ Themes/MMDefault/DateChooser Assets/Elements/Month skins states. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Nur die Bildlaufregler für die Monate können in dieser Komponente dynamisch mit Skins versehen werden. Für DataChooser-Komponenten sind die folgenden Skin-Eigenschaften verfügbar: Eigenschaft Beschreibung falseUpSkin Up-Status (Schaltfläche nicht geklickt). Die Standardwerte lauten fwdMonthUp und backMonthUp. falseDownSkin Der Down-Zustand. Die Standardwerte lauten fwdMonthDown und backMonthDown. falseDisabledSkin Disabled-Status (Schaltfläche deaktiviert). Die Standardwerte lauten fwdMonthDisabled und backMonthDisabled. DateChooser-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > DateChooser ActionScript-Klassenname mx.controls.DateChooser Mit den Eigenschaften der DateChooser-Klasse können Sie auf das ausgewählte Datum sowie auf den angezeigten Monat und das angezeigte Jahr zugreifen. Weiterhin können Sie die Namen der Tage und Monate festlegen, deaktivierte und auswählbare Tage festlegen, den ersten Tag der Woche bestimmen und angeben, ob das aktuelle Datum hervorgehoben werden soll. 268 Kapitel 4: Komponenten-Referenz Per ActionScript zugewiesene Eigenschaften der DateChooser-Klasse haben Vorrang vor gleichnamigen Parametern, die im Bedienfeld Eigenschafteninspektor oder KomponentenInspektor festgelegt werden. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.DateChooser.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meinDC.version);. Übersicht: Methoden der DateChooser-Klasse Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der DateChooser-Klasse Eigenschaft Beschreibung DateChooser.dayNames Ein Array, das die Namen der Wochentage angibt. DateChooser.disabledDays Ein Array, das die Tage der Woche angibt, die für den gesamten zutreffenden Datumsbereich im DateChooser deaktiviert sind. DateChooser.disabledRanges Ein Bereich deaktivierter Tage oder ein einzelner deaktivierter Tag. DateChooser.displayedMonth Eine Zahl, die ein Element im Array monthNames angibt, das im DateChooser angezeigt wird. DateChooser.displayedYear Eine Zahl, die das anzuzeigende Jahr angibt. DateChooser.firstDayOfWeek Eine Zahl, die ein Element im Array dayNames angibt, das in der ersten Spalte des DateChooser angezeigt wird. DateChooser.monthNames Ein Array aus Strings, die die Monatsnamen bezeichnen. DateChooser.selectableRange Ein einzelnes auswählbares Datum oder ein Bereich auswählbarer Daten. DateChooser.selectedDate Ein Date-Objekt, das das ausgewählte Datum angibt. DateChooser.showToday Ein Boolescher Wert, der angibt, ob das aktuelle Datum hervorgehoben ist. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der DateChooser-Klasse Ereignis Beschreibung DateChooser.change Broadcastübertragung, wenn ein Datum ausgewählt wurde. DateChooser.scroll Broadcastübertragung, wenn Schaltflächen für Monate betätigt wurden. Erbt alle Ereignisse von UIObject und UIComponent. DateChooser-Komponente (nur Flash Professional) 269 DateChooser.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(change){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ ... } chooserInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn ein Datum ausgewählt wurde. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateChooser-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn dem DateChooser meinDC beispielsweise der folgende Code zugewiesen wird, wird „_level0.meinDC“ an das Bedienfeld Ausgabe gesendet: on(change){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (chooserInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) 270 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel, das für ein Bild der Zeitleiste geschrieben wurde, wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn ein DateChooser mit der Bezeichnung meinDC geändert wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis change im Listener-Objekt definiert. Eine trace()-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts entspricht der Komponente, die das Ereignis erzeugt (in diesem Fall meinDC). Der Zugriff auf die Eigenschaft NumericStepper.maximum erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDC aus aufgerufen, und das Ereignis change und das Listener-Objekt form werden als Parameter an sie übergeben: form.change = function(eventObj){ trace("date selected " + eventObj.target.selectedDate) ; } meinDC.addEventListener("change", form); DateChooser.dayNames Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.dayNames Beschreibung Eigenschaft; ein Array, das die Namen der Wochentage enthält. Sonntag ist der erste Tag (auf Indexposition 0), und die übrigen Tage folgen in der üblichen Reihenfolge. Der Standardwert lautet ["S", "M", "D", "M", "D", "F", "S"]. Beispiel Im folgenden Beispiel wird der Wert des 5. Tages in der Abfolge (Donnerstag) von „D“ auf „R“ geändert: meinDC.dayNames[4] = "R"; DateChooser.disabledDays Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.disabledDays DateChooser-Komponente (nur Flash Professional) 271 Beschreibung Eigenschaft; ein Array, das die deaktivierten Tage der Woche angibt. Jedes Datum eines Monats, das auf den angegebenen Tag fällt, ist deaktiviert. Die Elemente dieses Arrays können Werte zwischen 0 (Sonntag) und 6 (Samstag) haben. Der Standardwert ist [] (leeres Array). Beispiel Im folgenden Beispiel werden Samstage und Sonntage deaktiviert, sodass der Benutzer nur Werktage auswählen kann: meinDC.disabledDays = [0, 6]; DateChooser.disabledRanges Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.disabledRanges Beschreibung Eigenschaft; deaktiviert ein bestimmtes Datum oder einen Datumsbereich. Bei dieser Eigenschaft handelt es sich um ein Objekt-Array. Jedes Objekt in diesem Array muss entweder ein DateObjekt sein, das den zu deaktivierenden Einzeltag angibt, oder ein Objekt, das entweder eine der Eigenschaften rangeStart oder rangeEnd oder beide Eigenschaften enthält. Die Werte dieser beiden Eigenschaften müssen Date-Objekte sein. Die Eigenschaften rangeStart und rangeEnd bezeichnen Start- und Enddatum des Bereichs. Wenn eine der beiden Eigenschaften fehlt, setzt sich der Bereich unbegrenzt in die entsprechende Richtung fort. Der Standardwert für disabledRanges ist undefined. Geben Sie bei der Definition der Daten für die Eigenschaft disabledRanges jeweils ein vollständiges Datum an, also z. B. new Date(2003,6,24) statt new Date(). Wenn Sie kein vollständiges Datum angeben wird die Zeit als 00:00:00 zurückgegeben. Beispiel Im folgenden Beispiel wird ein Array mit den Date-Objekten rangeStart und rangeEnd definiert, wobei der Bereich vom 7. Mai bis zum 7. Juni deaktiviert werden soll: meinDC.disabledRanges = [ {rangeStart: new Date(2003, 4, 7), rangeEnd: new Date(2003, 5, 7)}]; Im folgenden Beispiel werden alle Tage nach dem 7. November deaktiviert: meinDC.disabledRanges = [ {rangeStart: new Date(2003, 10, 7)} ]; Im folgenden Beispiel werden alle Tage vor dem 7. Oktober deaktiviert: meinDC.disabledRanges = [ {rangeEnd: new Date(2002, 9, 7)} ]; Im folgenden Beispiel wird lediglich der 7. Dezember deaktiviert: meinDC.disabledRanges = [ new Date(2003, 11, 7) ]; 272 Kapitel 4: Komponenten-Referenz DateChooser.displayedMonth Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.displayedMonth Beschreibung Eigenschaft; eine Zahl, die angibt, welcher Monat angezeigt wird. Die Zahl gibt ein Element aus dem Array monthNames an, wobei 0 den ersten Monat bezeichnet. Standardwert ist der Monat des aktuellen Datums. Beispiel Im folgenden Beispiel wird Dezember als der anzuzeigende Monat festgelegt: meinDC.displayedMonth = 11; Siehe auch DateChooser.displayedYear DateChooser.displayedYear Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.displayedYear Beschreibung Eigenschaft; eine vierstellige Zahl, die angibt, welches Jahr angezeigt wird. Der Standardwert ist das aktuelle Jahr. Beispiel Im folgenden Beispiel wird 2010 als das anzuzeigende Jahr festgelegt: meinDC.displayedYear = 2010; Siehe auch DateChooser.displayedMonth DateChooser-Komponente (nur Flash Professional) 273 DateChooser.firstDayOfWeek Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.firstDayOfWeek Beschreibung Eigenschaft; eine Zahl, die angibt, welcher Wochentag (0 - 6, wobei 0 das erste Element im Array dayNames bezeichnet) in der ersten Spalte der DateChooser-Komponente angezeigt wird. Die Änderung dieser Eigenschaft ändert zwar die Anordnung der Tagesspalten, hat aber keinen Einfluss auf die Reihenfolge der Eigenschaft dayNames. Der Standardwert ist 0 (Sonntag) Beispiel Im folgenden Beispiel wird Montag als erster Tag der Woche festgelegt: meinDC.firstDayOfWeek = 1; Siehe auch DateChooser.dayNames DateChooser.monthNames Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.monthNames Beschreibung Eigenschaft; ein Array mit Strings, die die Monate bezeichnen, wie sie in der Kopfzeile der DateChooser-Komponente angezeigt werden. Der Standardwert lautet ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]. Beispiel Im folgenden Beispiel werden die Monatsbezeichnungen für die Instanz meinDC eingestellt. meinDC.monthNames = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; 274 Kapitel 4: Komponenten-Referenz DateChooser.scroll Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(scroll){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.scroll = function(eventObject){ ... } meinDC.addEventListener("scroll", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn eine Monatsschaltfläche betätigt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateChooser-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Mit dem folgenden Code, der dem Stepper meinDC zugeordnet ist, wird beispielsweise „_level0.meinDC“ an das Bedienfeld Ausgabe gesendet: on(scroll){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (meinDC) setzt ein Ereignis (in diesem Fall scroll) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Die Ereignisprozedur des Ereignisses scroll hat eine zusätzliche Eigenschaft (detail), die nur einen der folgenden Werte annehmen kann: nextMonth, previousMonth, nextYear, previousYear. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) DateChooser-Komponente (nur Flash Professional) 275 Beispiel In diesem, in einem Bild der Zeitleiste geschriebenen Beispiel wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn auf einer DateChooser-Instanz mit der Bezeichnung meinDC eine Monatsschaltfläche betätigt wurde. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis scroll im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinDC. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDC aus aufgerufen, und das Ereignis scroll und das Listener-Objekt form werden als Parameter an sie übergeben: form = new Object(); form.scroll = function(eventObj){ trace(eventObj.detail); } meinDC.addEventListener("scroll", form); DateChooser.selectableRange Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.selectableRange Beschreibung Eigenschaft; legt ein einzelnes auswählbares Datum oder einen auswählbaren Datumsbereich fest. Der Benutzer hat nicht die Möglichkeit, über den Auswahlbereich hinaus zu scrollen. Der Wert dieser Eigenschaft ist ein Objekt, das aus zwei Date-Objekten mit der Bezeichnung rangeStart und rangeEnd besteht. Die Eigenschaften rangeStart und rangeEnd bezeichnen Start- und Enddatum des Auswahlbereichs. Wenn lediglich rangeStart ausgewählt wird, sind alle Tage, die auf rangeStart folgen, aktiviert. Wenn lediglich rangeEnd ausgewählt wird, sind alle Tage, die vor rangeEnd liegen, aktiviert. Der Standardwert ist undefined. Wenn Sie lediglich einen einzelnen Tag aktivieren möchten, können Sie als Wert für ein einzelnes Date-Objekt auswählen. selectableRange Geben Sie bei der Festlegung der Daten ein vollständiges Datum an. also z. B. new Wenn Sie kein vollständiges Datum angeben wird die Zeit Date(2003,6,24) statt new Date(). als 00:00:00 zurückgegeben. Der Wert von DateChooser.selectedDate wird auf undefined gesetzt, wenn er außerhalb des Auswahlbereichs liegt. Die Werte von DateChooser.displayedMonth und DateChooser.displayedYear werden auf den nächstgelegenen letzten Monat eingestellt, wenn der aktuelle Monat außerhalb des Auswahlbereichs liegt. Beispiel: Wenn es sich beim aktuellen Monat um den August handelt und der Auswahlbereich auf Juni 2003 bis Juli 2003 festgelegt wurde, wird der angezeigte Monat auf Juli 2003 angepasst. 276 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird als Auswahlbereich der Zeitraum vom 7. Mai bis 7. Juni (jeweils einschließlich) festgelegt: meinDC.selectableRange = {rangeStart: new Date(2001, 4, 7), rangeEnd: new Date(2003, 5, 7)}; Im folgenden Beispiel wird als Auswahlbereich der Zeitraum nach dem 7. Mai (einschließlich) festgelegt: meinDC.selectableRange = {rangeStart: new Date(2003, 4, 7)}; Im folgenden Beispiel wird als Auswahlbereich der Zeitraum vor dem 7. Juni (einschließlich) festgelegt: meinDC.selectableRange = {rangeEnd: new Date(2003, 5, 7) }; Im folgenden Beispiel wird lediglich der 7. Juni als auswählbares Datum festgelegt: meinDC.selectableRange = new Date(2003, 5, 7); DateChooser.selectedDate Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDC.selectedDate Beschreibung Eigenschaft; ein Date-Objekt, das das ausgewählte Datum angibt, sofern dieser Wert in den Wertebereich der Eigenschaft selectableRange fällt. Der Standardwert ist undefined. Die Eigenschaft selectedDate kann nicht innerhalb des Wertebereichs der Eigenschaft disabledRange, außerhalb des Wertebereichs der Eigenschaft selectableRange oder für einen deaktivierten Tag eingestellt werden. Wenn die Eigenschaft selectedDate auf einen der zuvor genannten Zeiträume eingestellt wird, ist der Wert undefined. Beispiel Im folgenden Beispiel wird das gewählte Datum auf den 7. Juni eingestellt: meinDC.selectedDate = new Date(2003, 5, 7); DateChooser.showToday Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. DateChooser-Komponente (nur Flash Professional) 277 Verwendung meinDC.showToday Beschreibung Eigenschaft; bestimmt, ob das aktuelle Datum hervorgehoben wird. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird die Hervorhebung des aktuellen Datums deaktiviert: meinDC.showToday = false; DateField-Komponente (nur Flash Professional) Die DateField-Komponente ist ein nicht auswählbares Textfeld, das das Datum mit dem Kalendersymbol rechts davon anzeigt. Wenn kein Datum ausgewählt wurde, ist das Textfeld leer, und im DateChooser wird der Monat des aktuellen Datums angezeigt. Wenn der Benutzer an eine beliebige Stelle innerhalb der Begrenzungsbox des Datumsfeldes klickt, wird ein DateChooser geöffnet, der die Tage im Monat des ausgewählten Datums anzeigt. Wenn der DateChooser geöffnet ist, kann der Benutzer mit Hilfe der Bildlaufregler für die Monate durch die Monate und Jahre scrollen und ein Datum auswählen. Wenn ein Datum ausgewählt wurde, wird der DateChooser geschlossen. Die Live-Vorschau der DateField-Komponente zeigt beim Authoring nicht die im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor angegebenen Werte, da es sich um eine Popup-Komponente handelt, die beim Authoring nicht sichtbar ist. DateField-Komponente verwenden (nur Flash Professional) Die DateField-Komponente kann überall dort verwendet werden, wo der Benutzer ein Datum auswählen soll. Beispielsweise ist der Einsatz der DateField-Komponente bei einem Hotelreservierungssystem denkbar, bei dem bestimmte Tage auswählbar und andere deaktiviert sein sollen. Ein anderes Einsatzgebiet wäre eine Anwendung, die aktuelle Ereignisse anzeigt, z. B. Konferenzen oder das aktuelle Theaterprogramm, wenn der Benutzer ein Datum auswählt. DateField-Parameter Jeder Instanz einer DateField-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: Mit monthNames werden die in der Kopfzeile des Kalenders angezeigten Monatsnamen festgelegt. Bei dem Wert handelt es sich um ein Array, und die Standardwerte lauten ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]. Mit dayNames werden die Namen der Wochentage festgelegt. Bei dem Wert handelt es sich um ein Array, und die Standardwerte lauten ["S", "M", "D", "M", "D", "F", "S"]. Mit firstDayOfWeek wird angegeben, welcher Wochentag (0 - 6, wobei 0 das erste Element im Array dayNames bezeichnet) in der ersten Spalte des DateChooser angezeigt wird. Mit dieser Eigenschaft wird die Anzeigereihenfolge der Tagesspalten geändert. Der Standardwert ist 0, d. h. "S". 278 Kapitel 4: Komponenten-Referenz Mit disabledDays werden die deaktivierten Wochentage bestimmt. Dieser Parameter ist ein Array, das bis zu 7 Werte enthalten kann. Der Standardwert ist [] (leeres Array). gibt an, ob das aktuelle Datum hervorgehoben werden soll oder nicht. Der Standardwert lautet true. showToday Sie können diese und weitere Optionen für die DateField-Komponente über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter „DateField-Klasse (nur Flash Professional)“ auf Seite 281. Anwendungen mit der DateField-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine DateFieldKomponente hinzufügen. In diesem Beispiel soll die DateField-Komponente die Auswahl eines Datums für ein Flugreservierungssystem ermöglichen. Alle Tage vor dem aktuellen Datum sowie eine 15-tägige Periode über die Feiertage im Dezember sollen deaktiviert werden. Weiterhin finden einige Flüge montags nicht statt, daher müssen für diese Flüge alle Montage deaktiviert werden. So erstellen Sie eine Anwendung mit einer DateField-Komponente: 1 Doppelklicken Sie im Bedienfeld Komponenten auf die DateField-Komponente, damit sie der Bühne hinzugefügt wird. 2 Geben Sie im Eigenschafteninspektor den Instanznamen flightCalendar ein. 3 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, um den auswählbaren Datumsbereich festzulegen: flightCalendar.selectableRange = {rangeStart:new Date(2001, 9, 1), rangeEnd:new Date(2003, 11, 1)}; Mit diesem Code wird der Eigenschaft selectableRange in einem ActionScript-Objekt, das zwei Date-Objekte mit den Variablennamen rangeStart und rangeEnd enthält, ein Wert zugewiesen. Sie legen damit die obere und die untere Grenze des Bereichs fest, aus dem der Benutzer ein Datum auswählen kann. 4 Geben Sie im Bedienfeld Aktionen folgenden Code in Bild 1 der Zeitleiste ein, damit die deaktivierten Bereiche – einer im Dezember, der andere für alle Tage vor dem aktuellen Datum – eingestellt werden: flightCalendar.disabledRanges = [{rangeStart: new Date(2003, 11, 15), rangeEnd: new Date(2003, 11, 31)}, {rangeEnd: new Date(2003, 6, 16)}]; 5 Geben Sie im Bedienfeld Aktionen den folgenden Code in Bild 1 der Zeitleiste ein, damit alle Montage deaktiviert werden. flightCalendar.disabledDays=[1]; 6 Steuerung > Film testen DateField-Komponente anpassen (nur Flash Professional) Sie können eine DateField-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()). Die Festlegung der Breite hat keinen Einfluss auf die Ausmaße des DateChooser innerhalb der DateField-Komponente. Gleichwohl können Sie mit Hilfe der Eigenschaft pullDown auf die DateChooser-Komponente zugreifen und ihre Größe einstellen. DateField-Komponente (nur Flash Professional) 279 Stile für die DateField-Komponente verwenden Mit Hilfe der Stileigenschaften können Sie das Aussehen einer DateField-Instanz festlegen. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Eine DateField-Komponente unterstützt folgende Kranz-Stile: Stil Beschreibung themeColor Die Hervorhebungsfarbe für das Rollover und die ausgewählten Daten. Dies ist der einzige Farbstil, der seinen Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Die Textauszeichnung: „none“ oder „underline“. Skins für die DateField-Komponente verwenden Das Erscheinungsbild des Popup-Symbols einer DateField-Komponente wird mit Hilfe von Skins festgelegt: Um dem Popup-Symbol beim Authoring Skins zuweisen zu können, modifizieren Sie in der Bibliothek von einer der FLA-Dateien des Themas die Skin-Symbole im Ordner Flash UI Components 2/Themes/MMDefault/DateField Elements skins states. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. In dieser Komponente kann nur die Schaltfläche für das Popup-Symbol mit Skins versehen werden. Mit den folgenden Skin-Eigenschaften wird das Popup-Symbol einer DateFieldKomponente dynamisch gestaltet: 280 Eigenschaft Beschreibung openDateUp Der Zustand Up des Popup-Symbols. openDateDown Der Zustand Down des Popup-Symbols. openDateOver Der Zustand Over des Popup-Symbols. openDateDisabled Der Zustand Disabled des Popup-Symbols. Kapitel 4: Komponenten-Referenz DateField-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > ComboBase > DateField ActionScript-Klassenname mx.controls.DateField Mit den Eigenschaften der DateField-Klasse können Sie auf das ausgewählte Datum sowie auf den angezeigten Monat und das angezeigte Jahr zugreifen. Weiterhin können Sie die Namen der Tage und Monate festlegen, deaktivierte und auswählbare Tage festlegen, den ersten Tag der Woche bestimmen und angeben, ob das aktuelle Datum hervorgehoben werden soll. Per ActionScript zugewiesene Eigenschaften der DateField-Klasse haben Vorrang vor gleichnamigen Parametern, die im Bedienfeld Eigenschafteninspektor oder KomponentenInspektor festgelegt werden. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.DateField.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineDateFieldInstance.version);. Übersicht: Methoden der DateField-Klasse Methode Beschreibung DateField.close() Schließt den Popup-DateChooser (Unterkomponente). DateField.open() Öffnet den Popup-DateChooser (Unterkomponente). Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der DateField-Klasse Eigenschaft Beschreibung DateField.dateFormatter Eine Funktion, mit der das im Textfeld anzuzeigende Datum formatiert wird. DateField.dayNames Ein Array, das die Namen der Wochentage angibt. DateField.disabledDays Ein Array, das die Tage der Woche angibt, die für den gesamten zutreffenden Datumsbereich im DateChooser deaktiviert sind. DateField.disabledRanges Ein Bereich deaktivierter Tage oder ein einzelner deaktivierter Tag. DateField.displayedMonth Eine Zahl, die ein Element im Array monthNames angibt, das im DateChooser angezeigt wird. DateField.displayedYear Eine Zahl, die das anzuzeigende Jahr angibt. DateField.firstDayOfWeek Eine Zahl, die ein Element im Array dayNames angibt, das in der ersten Spalte des DateChooser angezeigt wird. DateField.monthNames Ein Array aus Strings, die die Monatsnamen bezeichnen. DateField-Komponente (nur Flash Professional) 281 Eigenschaft Beschreibung DateField.pullDown Eine Referenz auf die DateChooser-Unterkomponente. Diese Eigenschaft ist schreibgeschützt. DateField.selectableRange Ein einzelnes auswählbares Datum oder ein Bereich auswählbarer Daten. DateField.selectedDate Ein Date-Objekt, das das ausgewählte Datum angibt. DateField.showToday Ein Boolescher Wert, der angibt, ob das aktuelle Datum hervorgehoben ist. Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der DateField-Klasse Ereignis Beschreibung DateField.change Broadcastübertragung, wenn ein Datum ausgewählt wurde. DateField.close Broadcastübertragung, wenn die DateChooser-Unterkomponente geschlossen wird. DateField.open Broadcastübertragung, wenn die DateChooser-Unterkomponente geöffnet wird. DateField.scroll Broadcastübertragung, wenn Schaltflächen für Monate betätigt wurden. Erbt alle Ereignisse von UIObject und UIComponent. DateField.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(change){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ ... } meinDF.addEventListener("change", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn ein Datum ausgewählt wurde. 282 Kapitel 4: Komponenten-Referenz Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateField-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn dem DateField meinDF beispielsweise der folgende Code zugewiesen wird, wird „_level0.meinDF“ an das Bedienfeld Ausgabe gesendet: on(change){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (chooserInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden, für ein Bild der Zeitleiste geschriebenen Beispiel wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn ein DateField namens meinDF geändert wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis change im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinDF. Der Zugriff auf die Eigenschaft DateField.selectedDate erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDF aus aufgerufen, und das Ereignis change und das Listener-Objekt form werden als Parameter an sie übergeben: form.change = function(eventObj){ trace("date selected " + eventObj.target.selectedDate) ; } meinDF.addEventListener("change", form); DateField.close() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.close() DateField-Komponente (nur Flash Professional) 283 Parameter Keine. Rückgaben Keine. Beschreibung Methode; schließt das Popupmenü. Beispiel Mit dem folgenden Code wird der Popup-DateChooser der DateField-Instanz meinDF geschlossen: meinDF.close(); DateField.close Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(close){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.close = function(eventObject){ ... } meinDF.addEventListener("close", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn die DateChooserUnterkomponente geschlossen wird, nachdem der Benutzer in einen Bereich außerhalb des Symbols geklickt oder ein Datum ausgewählt hat. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateField-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn dem DateField meinDF beispielsweise der folgende Code zugewiesen wird, wird „_level0.meinDF“ an das Bedienfeld Ausgabe gesendet: on(close){ trace(this); } 284 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (meinDF) setzt ein Ereignis (in diesem Fall close) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden, für ein Bild der Zeitleiste geschriebenen Beispiel wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn der DateChooser in meinDF geschlossen wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis close im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinDF. Der Zugriff auf die Eigenschaft erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDF aus aufgerufen, und das Ereignis close und das Listener-Objekt form werden als Parameter an sie übergeben: form.close = function(eventObj){ trace("PullDown Closed" + eventObj.target.selectedDate); } meinDF.addEventListener("close", form); DateField.dateFormatter Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.dateFormatter Beschreibung Eigenschaft; Funktion, formatiert das im Textfeld anzuzeigende Datum. Die Funktion muss ein Date-Objekt als Parameter erhalten und einen String im anzuzeigenden Format zurückgeben. DateField-Komponente (nur Flash Professional) 285 Beispiel Im folgenden Beispiel wird die Funktion so eingestellt, dass sie das Format des anzuzeigenden Datums zurückgibt: meinDF.dateFormatter = function(d:Date){ return d.getFullYear()+"/ "+(d.getMonth()+1)+"/ "+d.getDate(); }; DateField.dayNames Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.dayNames Beschreibung Eigenschaft; ein Array, das die Namen der Wochentage enthält. Sonntag ist der erste Tag (auf Indexposition 0), und die übrigen Tage folgen in der üblichen Reihenfolge. Der Standardwert lautet ["S", "M", "D", "M", "D", "F", "S"]. Beispiel Im folgenden Beispiel wird der Wert des 5. Tages in der Abfolge (Donnerstag) von „D“ auf „R“ geändert: meinDF.dayNames[4] = "R"; DateField.disabledDays Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.disabledDays Beschreibung Eigenschaft; ein Array, das die deaktivierten Tage der Woche angibt. Jedes Datum eines Monats, das auf den angegebenen Tag fällt, ist deaktiviert. Die Elemente dieses Arrays können Werte zwischen 0 (Sonntag) und 6 (Samstag) haben. Der Standardwert ist [] (leeres Array). Beispiel Im folgenden Beispiel werden Samstage und Sonntage deaktiviert, sodass der Benutzer nur Werktage auswählen kann: meinDF.disabledDays = [0, 6]; 286 Kapitel 4: Komponenten-Referenz DateField.disabledRanges Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.disabledRanges Beschreibung Eigenschaft; deaktiviert ein bestimmtes Datum oder einen Datumsbereich. Bei dieser Eigenschaft handelt es sich um ein Objekt-Array. Jedes Objekt in diesem Array muss entweder ein DateObjekt sein, das den zu deaktivierenden Einzeltag angibt, oder ein Objekt, das entweder eine der Eigenschaften rangeStart oder rangeEnd oder beide Eigenschaften enthält. Die Werte dieser beiden Eigenschaften müssen Date-Objekte sein. Die Eigenschaften rangeStart und rangeEnd bezeichnen Start- und Enddatum des Bereichs. Wenn eine der beiden Eigenschaften fehlt, setzt sich der Bereich unbegrenzt in die entsprechende Richtung fort. Der Standardwert für disabledRanges ist undefined. Geben Sie bei der Definition der Daten für die Eigenschaft disabledRanges jeweils ein vollständiges Datum an, also z. B. new Date(2003,6,24) statt new Date(). Wenn Sie kein vollständiges Datum angeben wird die Zeit als 00:00:00 zurückgegeben. Beispiel Im folgenden Beispiel wird ein Array mit den Date-Objekten rangeStart und rangeEnd definiert, wobei der Bereich vom 7. Mai bis zum 7. Juni deaktiviert werden soll: meinDF.disabledRanges = [ {rangeStart: new Date(2003, 4, 7), rangeEnd: new Date(2003, 5, 7)}]; Im folgenden Beispiel werden alle Tage nach dem 7. November deaktiviert: meinDF.disabledRanges = [ {rangeStart: new Date(2003, 10, 7)} ]; Im folgenden Beispiel werden alle Tage vor dem 7. Oktober deaktiviert: meinDF.disabledRanges = [ {rangeEnd: new Date(2002, 9, 7)} ]; Im folgenden Beispiel wird lediglich der 7. Dezember deaktiviert: meinDF.disabledRanges = [ new Date(2003, 11, 7) ]; DateField.displayedMonth Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.displayedMonth DateField-Komponente (nur Flash Professional) 287 Beschreibung Eigenschaft; eine Zahl, die angibt, welcher Monat angezeigt wird. Die Zahl gibt ein Element aus dem Array monthNames an, wobei 0 den ersten Monat bezeichnet. Standardwert ist der Monat des aktuellen Datums. Beispiel Im folgenden Beispiel wird Dezember als der anzuzeigende Monat festgelegt: meinDF.displayedMonth = 11; Siehe auch DateField.displayedYear DateField.displayedYear Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.displayedYear Beschreibung Eigenschaft; eine Zahl, die angibt, welches Jahr angezeigt wird. Der Standardwert ist das aktuelle Jahr. Beispiel Im folgenden Beispiel wird 2010 als das anzuzeigende Jahr festgelegt: meinDF.displayedYear = 2010; Siehe auch DateField.displayedMonth DateField.firstDayOfWeek Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.firstDayOfWeek 288 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; eine Zahl, die angibt, welcher Wochentag (0 - 6, wobei 0 das erste Element im Array dayNames bezeichnet) in der ersten Spalte der DateField-Komponente angezeigt wird. Die Änderung dieser Eigenschaft ändert zwar die Anordnung der Tagesspalten, hat aber keinen Einfluss auf die Reihenfolge der Eigenschaft dayNames. Der Standardwert ist 0 (Sonntag) Beispiel Im folgenden Beispiel wird Montag als erster Tag der Woche festgelegt: meinDF.firstDayOfWeek = 1; Siehe auch DateField.dayNames DateField.monthNames Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.monthNames Beschreibung Eigenschaft; ein Array mit Strings, die die Monate bezeichnen, wie sie in der Kopfzeile der DateField-Komponente angezeigt werden. Der Standardwert lautet ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]. Beispiel Im folgenden Beispiel werden die Monatsbezeichnungen für die Instanz meinDF eingestellt. meinDF.monthNames = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; DateField.open() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.open() Parameter Keine. DateField-Komponente (nur Flash Professional) 289 Rückgaben Keine. Beschreibung Methode; öffnet den Popup-DateChooser (Unterkomponente). Beispiel Mit dem folgenden Code wird der Popup-DateChooser der Instanz df geöffnet: df.open(); DateField.open Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(open){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.open = function(eventObject){ ... } meinDF.addEventListener("open", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn eine DateChooserUnterkomponente geöffnet wird, nachdem ein Benutzer auf das Symbol geklickt hat. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateField-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn dem DateField meinDF beispielsweise der folgende Code zugewiesen wird, wird „_level0.meinDF“ an das Bedienfeld Ausgabe gesendet: on(open){ trace(this); } 290 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (meinDF) setzt ein Ereignis (in diesem Fall open) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden, für ein Bild der Zeitleiste geschriebenen Beispiel wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn ein Stepper namens meinDF geöffnet wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis open im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinDF. Der Zugriff auf die Eigenschaft DateField.selectedDate erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDF aus aufgerufen, und das Ereignis open und das Listener-Objekt form werden als Parameter an sie übergeben: form.open = function(eventObj){ trace("Popup wurde geöffnet, und das ausgewählte Datum lautet: " + eventObj.target.selectedDate) ; } meinDF.addEventListener("open", form); DateField.pullDown Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.pullDown Beschreibung Eigenschaft (schreibgeschützt); gibt eine Referenz auf die in der DateField-Komponente enthaltene DateChooser-Komponente zurück. Die DateChooser-Unterkomponente wird instanziiert, wenn ein Benutzer auf die DateField-Komponente klickt. Wenn jedoch die Eigenschaft pullDown referenziert wird, bevor der Benutzer auf die Komponente klickt, wird der DateChooser instanziiert und dann ausgeblendet. DateField-Komponente (nur Flash Professional) 291 Beispiel Im folgenden Beispiel wird die Sichtbarkeit der DateChooser-Unterkomponente auf false gesetzt und ihre Größe auf 300 x 300 Pixel eingestellt. meinDF.pullDown._visible = false; meinDF.pullDown.setSize(300.300); DateField.scroll Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: on(scroll){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.scroll = function(eventObject){ ... } meinDF.addEventListener("scroll", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn eine Monatsschaltfläche betätigt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der DateField-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Wenn dem DateField meinDF beispielsweise der folgende Code zugewiesen wird, wird „_level0.meinDF“ an das Bedienfeld Ausgabe gesendet: on(scroll){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (meinDF) setzt ein Ereignis (in diesem Fall scroll) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Die Ereignisprozedur des Ereignisses scroll hat eine zusätzliche Eigenschaft (detail), die nur einen der folgenden Werte annehmen kann: nextMonth, previousMonth, nextYear, previousYear. 292 Kapitel 4: Komponenten-Referenz Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel In diesem, auf einem Bild der Zeitleiste geschriebenen Beispiel wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn auf einer DateField-Instanz mit der Bezeichnung meinDF eine Monatsschaltfläche betätigt wurde. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis scroll im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinDF. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinDateField aus aufgerufen, und das Ereignis scroll und das Listener-Objekt form werden als Parameter an sie übergeben: form = new Object(); form.scroll = function(eventObj){ trace(eventObj.detail); } meinDF.addEventListener("scroll", form); DateField.selectableRange Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.selectableRange Beschreibung Eigenschaft; legt ein einzelnes auswählbares Datum oder einen auswählbaren Datumsbereich fest. Der Wert dieser Eigenschaft ist ein Objekt, das aus zwei Date-Objekten mit der Bezeichnung rangeStart und rangeEnd besteht. Die Eigenschaften rangeStart und rangeEnd bezeichnen Start- und Enddatum des Auswahlbereichs. Wenn lediglich rangeStart ausgewählt wird, sind alle Tage, die auf rangeStart folgen, aktiviert. Wenn lediglich rangeEnd ausgewählt wird, sind alle Tage, die vor rangeEnd liegen, aktiviert. Der Standardwert ist undefined. Wenn Sie lediglich einen einzelnen Tag aktivieren möchten, können Sie als Wert für selectableRange ein einzelnes Date-Objekt auswählen. Geben Sie bei der Festlegung der Daten ein vollständiges Datum an. also z. B. new Wenn Sie kein vollständiges Datum angeben wird die Zeit Date(2003,6,24) statt new Date(). als 00:00:00 zurückgegeben. Der Wert von DateField.selectedDate wird auf undefined gesetzt, wenn er außerhalb des Auswahlbereichs liegt. DateField-Komponente (nur Flash Professional) 293 Die Werte von DateField.displayedMonth und DateField.displayedYear werden auf den nächstgelegenen letzten Monat eingestellt, wenn der aktuelle Monat außerhalb des Auswahlbereichs liegt. Beispiel: Wenn es sich beim aktuellen Monat um den August handelt und der Auswahlbereich auf Juni 2003 bis Juli 2003 festgelegt wurde, wird der angezeigte Monat auf Juli 2003 angepasst. Beispiel Im folgenden Beispiel wird als Auswahlbereich der Zeitraum vom 7. Mai bis 7. Juni (jeweils einschließlich) festgelegt: meinDF.selectableRange = {rangeStart: new Date(2001, 4, 7), rangeEnd: new Date(2003, 5, 7)}; Im folgenden Beispiel wird als Auswahlbereich der Zeitraum nach dem 7. Mai (einschließlich) festgelegt: meinDF.selectableRange = {rangeStart: new Date(2003, 4, 7)}; Im folgenden Beispiel wird als Auswahlbereich der Zeitraum vor dem 7. Juni (einschließlich) festgelegt: meinDF.selectableRange = {rangeEnd: new Date(2003, 5, 7) }; Im folgenden Beispiel wird lediglich der 7. Juni als auswählbares Datum festgelegt: meinDF.selectableRange = new Date(2003, 5, 7); DateField.selectedDate Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinDF.selectedDate Beschreibung Eigenschaft; ein Date-Objekt, das das ausgewählte Datum angibt, sofern dieser Wert in den Wertebereich der Eigenschaft selectableRange fällt. Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird das gewählte Datum auf den 7. Juni eingestellt: meinDF.selectedDate = new Date(2003, 5, 7); DateField.showToday Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. 294 Kapitel 4: Komponenten-Referenz Verwendung meinDF.showToday Beschreibung Eigenschaft; bestimmt, ob das aktuelle Datum hervorgehoben wird. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird die Hervorhebung des aktuellen Datums deaktiviert: meinDF.showToday = false; DepthManager-Klasse ActionScript-Klassenname mx.managers.DepthManager Mit der DepthManager-Klasse werden der ActionScript MovieClip-Klasse Funktionen hinzugefügt, mit denen Sie die Zuordnungen von relativen Tiefenebenen von Komponenten und Movieclips verwalten können, darunter auch _root. Darüber hinaus können mit dieser Klasse reservierte Tiefenebenen in einem speziellen Clip der höchsten Tiefenebene auf der _root-Ebene für Systemdienste, wie beispielsweise Cursor oder QuickInfo, verwaltet werden. Das API für die relative Tiefenanordnung setzt sich aus den folgenden Methoden zusammen: • • • • • DepthManager.createChildAtDepth() DepthManager.createClassChildAtDepth() DepthManager.setDepthAbove() DepthManager.setDepthBelow() DepthManager.setDepthTo() Das API für den reservierten Tiefenbereich setzt sich aus den folgenden Methoden zusammen: • • DepthManager.createClassObjectAtDepth() DepthManager.createObjectAtDepth() Übersicht: Methoden der DepthManager-Klasse Methode Beschreibung DepthManager.createChildAtDepth() Erstellt eine untergeordnete Instanz des angegebenen Symbols auf der angegebenen Tiefenebene. DepthManager.createClassChildAtDepth() Erstellt ein Objekt der angegebenen Klasse auf der angegebenen Tiefenebene. DepthManager.createClassObjectAtDepth() Erstellt eine Instanz der angegebenen Klasse auf der angegebenen Tiefenebene im speziellen Clip der höchsten Tiefenebene. DepthManager.createObjectAtDepth() Erstellt ein Objekt auf der angegebenen Tiefenebene im Clip der höchsten Tiefenebene. DepthManager.setDepthAbove() Weist die Tiefenebene über der angegebenen Instanz zu. DepthManager-Klasse 295 Methode Beschreibung DepthManager.setDepthBelow() Weist die Tiefenebene unterhalb der angegebenen Instanz zu. DepthManager.setDepthTo() Weist die Tiefenebene der angegebenen Instanz im Clip der höchsten Tiefenebene zu. DepthManager.createChildAtDepth() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung movieClipInstance.createChildAtDepth(linkageName, depthFlag[, initObj]) Parameter linkageName Ein Verknüpfungsbezeichner. Bei diesem Parameter handelt es sich um einen String. depthFlag Einer der folgenden Werte: DepthManager.kTop, DepthManager.kBottom, DepthManager.kTopmost, DepthManager.kNotopmost. Die Markierungen der Tiefenebenen sind statische Eigenschaften der DepthManager-Klasse. Sie müssen entweder auf das DepthManager-Paket verweisen (beispielsweise mx.managers.DepthManager.kTopmost) oder mit der import-Anweisung das DepthManager-Paket importieren. initObj Ein Initialisierungsobjekt. Dieser Parameter ist optional. Rückgaben Ein Verweis auf das erstellte Objekt. Beschreibung Methode; erstellt eine untergeordnete Instanz des im Parameter linkageName angegebenen Symbols auf der im Parameter depthFlag angegebenen Tiefenebene. Beispiel Im folgenden Beispiel wird eine minuteHand-Instanz des MinuteSymbol-Movieclips erstellt und oben auf die Uhr gesetzt: import mx.managers.DepthManager; minuteHand = clock.createChildAtDepth("MinuteSymbol", DepthManager.kTop); 296 Kapitel 4: Komponenten-Referenz DepthManager.createClassChildAtDepth() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung movieClipInstance.createClassChildAtDepth( className, depthFlag[, initObj] ) Parameter Ein Klassenname. className depthFlag Einer der folgenden Werte: DepthManager.kTop, DepthManager.kBottom, DepthManager.kTopmost, DepthManager.kNotopmost. Die Markierungen der Tiefenebenen sind statische Eigenschaften der DepthManager-Klasse. Sie müssen entweder auf das DepthManager-Paket verweisen (beispielsweise mx.managers.DepthManager.kTopmost) oder mit der import-Anweisung das DepthManager-Paket importieren. initObj Ein Initialisierungsobjekt. Dieser Parameter ist optional. Rückgaben Ein Verweis auf das erstellte untergeordnete Objekt. Beschreibung Methode; erstellt eine untergeordnete Instanz der im Parameter className angegebenen Klasse auf der im Parameter depthFlag angegebenen Tiefenebene. Beispiel Mit dem folgenden Code wird ein Fokusrechteck auf alle NoTopmost-Objekte gesetzt: import mx.managers.DepthManager this.ring = createClassChildAtDepth(mx.skins.RectBorder, DepthManager.kTop); Mit dem folgenden Code wird eine Instanz der Button-Klasse erstellt und ihr ein Wert für die Eigenschaft label als initObj-Parameter übergeben: import mx.managers.DepthManager button1 = createClassChildAtDepth(mx.controls.Button, DepthManager.kTop, {label: "Schaltfläche oben"}); DepthManager.createClassObjectAtDepth() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung DepthManager.createClassObjectAtDepth(className, depthSpace[, initObj]) DepthManager-Klasse 297 Parameter Ein Klassenname. className Einer der folgenden Werte: DepthManager.kCursor, DepthManager.kTooltip. Die Markierungen der Tiefenebenen sind statische Eigenschaften der DepthManager-Klasse. Sie müssen entweder auf das DepthManager-Paket verweisen (beispielsweise mx.managers.DepthManager.kCursor) oder mit der import-Anweisung das DepthManagerPaket importieren. depthSpace initObj Ein Initialisierungsobjekt. Dieser Parameter ist optional. Rückgaben Ein Verweis auf das erstellte Objekt. Beschreibung Methode; erstellt ein Objekt der im Parameter className angegebenen Klasse auf der im Parameter depthSpace angegebenen Tiefenebene. Diese Methode ermöglicht den Zugriff auf die reservierten Tiefenbereiche im speziellen Clip der höchsten Tiefenebene. Beispiel Im folgenden Beispiel wird ein Objekt aus der Button-Klasse erstellt: import mx.managers.DepthManager meinCursorButton = createClassObjectAtDepth(mx.controls.Button, DepthManager.kCursor, {label: "Cursor"}); DepthManager.createObjectAtDepth() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung DepthManager.createObjectAtDepth(linkageName, depthSpace[, initObj]) Parameter linkageName Ein Verknüpfungsbezeichner. Einer der folgenden Werte: DepthManager.kCursor, DepthManager.kTooltip. Die Markierungen der Tiefenebenen sind statische Eigenschaften der DepthManager-Klasse. Sie müssen entweder auf das DepthManager-Paket verweisen (beispielsweise mx.managers.DepthManager.kCursor) oder mit der import-Anweisung das DepthManagerPaket importieren. depthSpace initObj Ein Initialisierungsobjekt. Rückgaben Ein Verweis auf das erstellte Objekt. 298 Kapitel 4: Komponenten-Referenz Beschreibung Methode; erstellt ein Objekt auf der angegebenen Tiefenebene. Diese Methode ermöglicht den Zugriff auf die reservierten Tiefenbereiche im speziellen Clip der höchsten Tiefenebene. Beispiel Im folgenden Beispiel wird eine Instanz des TooltipSymbol-Symbols erstellt und auf der für QuickInfos vorgesehenen Tiefenebene platziert: import mx.managers.DepthManager meinCursorTooltip = createObjectAtDepth("TooltipSymbol", DepthManager.kTooltip); DepthManager.setDepthAbove() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung movieClipInstance.setDepthAbove(instance) Parameter instance Ein Instanzname. Rückgaben Keine. Beschreibung Methode; weist einer Movieclip- oder einer Komponenten-Instanz eine Tiefenebene über der im Parameter instance angegebenen Instanz zu. DepthManager.setDepthBelow() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung movieClipInstance.setDepthBelow(instance) Parameter instance Ein Instanzname. Rückgaben Keine. DepthManager-Klasse 299 Beschreibung Methode; weist einer Movieclip- oder einer Komponenten-Instanz eine Tiefenebene unter der im Parameter instance angegebenen Instanz zu. Beispiel Mit dem folgenden Code wird der Instanz textInput eine Tiefenebene unter der Instanz button zugewiesen: textInput.setDepthBelow(button); DepthManager.setDepthTo() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung movieClipInstance.setDepthTo(depth) Parameter depth Eine Tiefenebene. Rückgaben Keine. Beschreibung Methode; weist movieClipInstance die im Parameter depth angegebene Tiefenebene zu. Durch diese Methode wird eine Instanz in eine andere Tiefenebene verschoben, sodass für ein weiteres Objekt Platz geschaffen wird. Beispiel Im folgenden Beispiel wird die Tiefenebene der Instanz mc1 auf 10 festgelegt: mc1.setDepthTo(10); Weitere Informationen zu Tiefenebenen und Stapelanordnung finden Sie unter „Nächsthöhere verfügbare Tiefe bestimmen“ im ActionScript-Referenzhandbuch. 300 Kapitel 4: Komponenten-Referenz FocusManager-Klasse Mit dem FocusManager können Sie die Reihenfolge festlegen, in der die Komponenten den Fokus erhalten, wenn der Anwender die Tabulatortaste zum Navigieren in der Anwendung verwendet. Mit dem FocusManager-API können Sie festlegen, welche Schaltfläche aktiviert wird, wenn der Anwender die Eingabetaste betätigt. Formulare sollten beispielsweise so aufgebaut sein, dass der Anwender mit der Tabulatortaste zwischen den einzelnen Feldern wechseln und die Daten mit der Eingabetaste abschicken kann. Unterstützung für den FocusManager ist in allen Komponenten implementiert; Sie brauchen hierfür keinen Code zu schreiben. Der FocusManager interagiert darüber hinaus mit dem System-Manager, der die FocusManager-Instanzen beim Aktivieren und Deaktivieren von Popupfenstern aktiviert bzw. deaktiviert. Modale Fenster haben jeweils eine eigene FocusManager-Instanz und fungieren bei der Navigation mit der Tabulatortaste als geschlossene Einheit. Dadurch wird verhindert, dass Komponenten in anderen Fenstern angesteuert werden. Der FocusManager erkennt Optionsfeldgruppen (Optionsfelder mit definierter RadioButton.groupName-Eigenschaft) und weist derjenigen Instanz in der Gruppe den Fokus zu, bei der die Eigenschaft selected auf true gesetzt ist. Wenn die Tabulatortaste betätigt wird, überprüft der FocusManager, ob das nächste Objekt denselben Gruppennamen (groupName) hat wie das aktuelle Objekt. Wenn dies der Fall ist, erhält automatisch das nächste Objekt mit einem anderen groupName den Fokus. Diese Funktion kann auch für andere Komponentengruppen verwendet werden, die die Eigenschaft groupName unterstützen. Der FocusManager verwaltet Fokusänderungen infolge von Mausklicks. Wenn der Anwender auf ein Objekt klickt, erhält dieses den Fokus. Der FocusManager weist Komponenten in einer Anwendung nicht automatisch den Fokus zu. Im Hauptfenster und in Popupfenstern wird der Fokus nur dann standardmäßig auf eine Komponente gelegt, wenn FocusManager.setFocus() aufgerufen wurde. Mit dem FocusManager arbeiten Der FocusManager weist Komponenten nicht automatisch den Fokus zu. Wenn Sie einer Komponente beim Laden einer Anwendung den Fokus zuweisen möchten, müssen Sie ein Skript schreiben, das explizit FocusManager.setFocus() aufruft. Sie können eine Anwendung für die fokusgesteuerte Navigation einrichten, indem Sie Objekten (wie z. B. Schaltflächen), die einen Eingabefokus erhalten sollen, die Eigenschaft tabIndex zuweisen. Wenn der Benutzer die Tabulatortaste drückt, sucht der FocusManager nach einem aktivierten Objekt, bei dem der Wert der Eigenschaft tabIndex höher ist als der aktuelle Wert von tabIndex. Nachdem der maximale Wert der Eigenschaft tabIndex erreicht wurde, fängt der FocusManager wieder bei Null an. Im folgenden Beispiel erhält zuerst das Objekt comment (TextArea-Komponente o. ä.) und anschließend das Objekt okButton den Eingabefokus: comment.tabIndex = 1; okButton.tabIndex = 2; Sie können einen Tabulatorindexwert auch mit Hilfe des Bedienfelds Eingabehilfen zuweisen. Wenn kein Element auf der Bühne über einen Tabulatorindexwert verfügt, verwendet der FocusManager die z-Reihenfolge. Die z-Reihenfolge wird in erster Linie durch die Reihenfolge festgelegt, in der Komponenten auf die Bühne gezogen werden. Sie können die endgültige zReihenfolge jedoch auch mit Hilfe der Befehle Modifizieren, Anordnen, In den Vordergrund bzw. Hintergrund festlegen. FocusManager-Klasse 301 Sie können eine Schaltfläche erstellen, die beim Betätigen der Eingabetaste durch den Anwender den Fokus erhält, indem Sie die Eigenschaft FocusManager.defaultPushButton auf den Instanznamen der betreffenden Schaltfläche setzen: focusManager.defaultPushButton = okButton; Hinweis: Der FocusManager reagiert darauf, wann Objekte auf der Bühne platziert werden (die Tiefenebene von Objekten) und nicht auf ihre jeweilige relative Position auf der Bühne. In diesem Punkt unterscheidet sich das Verhalten bei der Navigation mit der Tabulatortaste von dem des Flash Players. FocusManager-Parameter Der FocusManager unterstützt keine Authoring-Parameter. Sie müssen die ActionScriptMethoden und -Eigenschaften der FocusManager-Klasse im Bedienfeld Aktionen verwenden. Weitere Informationen finden Sie unter FocusManager-Klasse. Anwendungen mit dem FocusManager erstellen Gehen Sie wie im Folgenden beschrieben vor, um ein Fokusschema in einer Flash-Anwendung zu erstellen. 1 Ziehen Sie die TextInput-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Weisen Sie der Komponente im Eigenschafteninspektor den Instanznamen comment zu. 3 Ziehen Sie die Button-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 4 Weisen Sie der Komponente im Eigenschafteninspektor den Instanznamen okButton und dem Parameter label den Wert OK zu. 5 Geben Sie im ersten Bild des Bedienfelds Aktionen den folgenden Code ein: comment.tabIndex = 1; okButton.tabIndex = 2; focusManager.setFocus(comment); focusManager.defaultPushButton = okButton; lo = new Object(); lo.click = function(evt){ trace(evt.target + " wurde angeklickt"); } okButton.addEventListener("click", lo); In diesem Beispiel wird die Tabulatorreihenfolge festgelegt sowie eine Standardschaltfläche zugewiesen, an die ein click-Ereignis übermittelt wird, wenn der Anwender die Eingabetaste betätigt. Den FocusManager anpassen Sie können die Farbe des Fokusrings im Halo-Thema ändern, indem Sie den Wert des Stils ändern. themeColor Der FocusManager verwendet FocusRect-Skin zum Zeichnen des Fokus. Dieses Skin kann ersetzt oder bearbeitet werden, und Unterklassen können benutzerdefinierte Fokusindikatoren zeichnen, indem sie UIComponent.drawFocus außer Kraft setzen. 302 Kapitel 4: Komponenten-Referenz FocusManager-Klasse Vererbung UIObject > UIComponent > FocusManager ActionScript-Klassenname mx.managers.FocusManager Übersicht: Methoden der FocusManager-Klasse Methode Beschreibung FocusManager.getFocus() Gibt eine Referenz auf das Objekt mit dem Fokus zurück. FocusManager.sendDefaultPushButtonEvent() Sendet ein click-Ereignis an Listener-Objekte, die für die Standardschaltfläche registriert sind. FocusManager.setFocus() Weist dem angegebenen Objekt den Fokus zu. Übersicht: Eigenschaften der FocusManager-Klasse Eigenschaft Beschreibung FocusManager.defaultPushButton Das Objekt, an das ein click-Ereignis gesendet wird, wenn der Anwender die Eingabetaste betätigt. FocusManager.defaultPushButtonEnabled Gibt an, ob die Verarbeitung von Tastatureingaben für die Standardschaltfläche aktiviert (true) oder deaktiviert (false) ist. Der Standardwert lautet true. FocusManager.enabled Gibt an, ob die Navigation mit der Tabulatortaste aktiviert (true) oder deaktiviert (false) ist. Der Standardwert lautet true. FocusManager.nextTabIndex Der nächste Wert der Eigenschaft tabIndex. FocusManager.defaultPushButton Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004. Verwendung focusManager.defaultPushButton Beschreibung Eigenschaft; gibt die Standardschaltfläche für die Anwendung an. Wenn der Anwender die Eingabetaste betätigt, wird ein click-Ereignis an die für die Standardschaltfläche registrierten Listener gesendet. Der Standardwert ist undefined; der Datentyp für die Eigenschaft ist Objekt. Im FocusManager wird mit der Stildeklaration emphasized der SimpleButton-Klasse die aktuelle Standardschaltfläche angegeben. FocusManager-Klasse 303 Der Wert der Eigenschaft defaultPushButton ist immer die Schaltfläche mit dem Fokus. Die Eigenschaft defaultPushButton bewirkt nicht, dass die Standardschaltfläche von vornherein den Fokus erhält. Wenn in einer Anwendung mehrere Schaltflächen verfügbar sind, erhält die Schaltfläche mit dem Fokus das click-Ereignis, sobald die Eingabetaste gedrückt wird. Wenn der Fokus beim Drücken der Eingabetaste auf einer anderen Komponente liegt, wird die Eigenschaft defaultPushButton auf ihren ursprünglichen Wert zurückgesetzt. Beispiel Mit dem folgenden Code wird die Standardschaltfläche für die Instanz OKButton festgelegt: FocusManager.defaultPushButton = OKButton; Siehe auch FocusManager.defaultPushButtonEnabled, FocusManager.sendDefaultPushButtonEvent() FocusManager.defaultPushButtonEnabled Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung focusManager.defaultPushButtonEnabled Beschreibung Eigenschaft; ein boolescher Wert, der bestimmt, ob die Verarbeitung von Tastatureingaben für die Standardschaltfläche aktiviert (true) oder deaktiviert (false) ist. Wenn defaultPushButtonEnabled auf false gesetzt ist, kann die Komponente beim Betätigen der Eingabetaste direkt reagieren und den Vorgang intern verarbeiten.Sie müssen die standardmäßige Verarbeitung der Tastatureingaben wieder aktivieren; betrachten Sie hierfür die Methode onKillFocus() (weitere Informationen finden Sie unter MovieClip.onKillFocus im ActionScript-Lexikon) oder das Ereignis focusOut der Komponente. Der Standardwert lautet true. Beispiel Mit dem folgenden Code wird die Verarbeitung der Tastatureingaben durch die Standardschaltfläche deaktiviert: focusManager.defaultPushButtonEnabled = false; FocusManager.enabled Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 304 Kapitel 4: Komponenten-Referenz Verwendung focusManager.enabled Beschreibung Eigenschaft; ein Boolescher Wert, mit dem festgelegt wird, ob die Tabulatorverarbeitung für eine bestimmte Gruppe von Objekten mit Fokus aktiviert (true) oder deaktiviert (false) ist. (Beispielsweise kann ein weiteres Popupfenster über einen eigenen FocusManager verfügen.) Wenn enabled auf false gesetzt wird, kann die Komponente beim Betätigen der Tabulatortaste direkt reagieren und den Vorgang intern verarbeiten. Sie müssen die Verarbeitung durch den FocusManager wieder aktivieren; betrachten Sie hierfür die Methode onKillFocus() (weitere Informationen hierzu finden Sie unter MovieClip.onKillFocus im ActionScript-Lexikon) oder das Ereignis focusOut der Komponente. Der Standardwert lautet true. Beispiel Der folgende Code deaktiviert die Tabulatorverarbeitung: focusManager.enabled = false; FocusManager.getFocus() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung focusManager.getFocus() Parameter Keine. Rückgaben Eine Referenz auf das Objekt mit dem Fokus. Beschreibung Methode; gibt eine Referenz auf das Objekt zurück, das gerade den Eingabefokus hat. Beispiel Mit dem folgenden Code wird der Fokus auf meinOKButton gesetzt, wenn meinInputText gerade den Fokus hat: if (focusManager.getFocus() == meinInputText) { focusManager.setFocus(meinOKButton); } Siehe auch FocusManager.setFocus() FocusManager-Klasse 305 FocusManager.nextTabIndex Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung FocusManager.nextTabIndex Beschreibung Eigenschaft; die nächste verfügbare Tabulatorindexnummer. Mit dieser Eigenschaft können Sie die Eigenschaft tabIndex eines Objekts dynamisch festlegen. Beispiel Mit dem folgenden Code erhält die Instanz meinecheckbox den nächsthöheren tabIndex-Wert: meinecheckbox.tabIndex = focusManager.nextTabIndex; Siehe auch UIComponent.tabIndex FocusManager.sendDefaultPushButtonEvent() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung focusManager.sendDefaultPushButtonEvent() Parameter Keine. Rückgaben Keine. Beschreibung Methode; sendet ein click-Ereignis an Listener-Objekte, die für die Standardschaltfläche registriert sind. Mit dieser Methode können Sie click-Ereignisse programmgesteuert senden. Beispiel Mit dem folgenden Code wird das click-Ereignis der Standardschaltfläche ausgelöst, und die Felder für den Benutzernamen und das Kennwort werden ausgefüllt, wenn ein Benutzer die CheckBox-Instanz chb auswählt (das Kontrollkästchen ist hier mit „Automatische Anmeldung“ bezeichnet): 306 Kapitel 4: Komponenten-Referenz name_txt.tabIndex = 1; password_txt.tabIndex = 2; chb.tabIndex = 3; submit_ib.tabIndex = 4; focusManager.defaultPushButton = submit_ib; chbObj = new Object(); chbObj.click = function(o){ if (chb.selected == true){ name_txt.text = "Judith"; password_txt.text = "foobar"; focusManager.sendDefaultPushButtonEvent(); } else { name_txt.text = ""; password_txt.text = ""; } } chb.addEventListener("click", chbObj); submitObj = new Object(); submitObj.click = function(o){ if (password_txt.text != "foobar"){ trace("Fehler beim Absenden"); } else { trace("Super! sendDefaultPushButtonEvent hat funktioniert!"); } } submit_ib.addEventListener("click", submitObj); Siehe auch FocusManager.defaultPushButton, FocusManager.sendDefaultPushButtonEvent() FocusManager.setFocus() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung focusManager.setFocus(object) Parameter object Eine Referenz auf das Objekt, das den Fokus erhalten soll. Rückgaben Keine. Beschreibung Methode; setzt den Fokus auf das angegebene Objekt. FocusManager-Klasse 307 Beispiel Mit dem folgenden Code erhält meinOKButton den Fokus: focusManager.setFocus(meinOKButton); Siehe auch FocusManager.getFocus() Form-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > Loader > Screen > Form ActionScript-Klassenname mx.screens.Form Die Form-Klasse bietet das Laufzeitverhalten der Formulare, die Sie im Übersichtsfenster in Flash MX Professional 2004 erstellen. Eine Übersicht zum Arbeiten mit Bildschirmen finden Sie unter „Mit Bildschirmen arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Form-Klasse verwenden (nur Flash Professional) Formulare dienen sowohl als Container für Grafikobjekte (z. B. UI-Elemente in einer Anwendung) und als Anwendungsstatus. Sie können das Übersichtsfenster verwenden, um die verschiedenen Zustände einer von Ihnen erstellten Anwendung, bei der jedes Formular einen anderen Anwendungsstatus besitzt, darzustellen. Die folgende Abbildung stellt z. B. das Übersichtsfenster für eine Beispielanwendung dar, die für die Verwendung von Formularen geeignet ist. Ansicht des Übersichtsfensters bei einer Beispielanwendung für Formulare 308 Kapitel 4: Komponenten-Referenz Diese Abbildung stellt eine Übersicht einer Beispielanwendung mit dem Namen „Employee Directory“ dar, die aus mehreren Formularen besteht. Das Formular „entryForm“ (in der obigen Abbildung ausgewählt) enthält mehrere Benutzeroberflächenobjekte, einschließlich Texteingabefelder, Bezeichnungen und eine Schaltfläche. Der Entwickler kann dem Benutzer dieses Formular einfach anzeigen, indem er die Sichtbarkeit wechselt (mit der Eigenschaft Form.visible ), während er auch gleichzeitig die Sichtbarkeit der anderen Formulare wechselt. Mit dem Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten) können Sie Formularen auch Verhalten und Steuerungen zuordnen. Weitere Informationen zum Hinzufügen von Übergängen und Steuerungen zu Bildschirmen finden Sie unter „Steuerungen und Übergänge für Bildschirme mit Verhalten erstellen (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Da die Form-Klasse die Loader-Klasse erweitert, können Sie einfach externe Inhalte (entweder SWF- oder JPEG-Dateien) in ein Formular laden. Der Inhalt eines Formulars kann z. B. eine separate SWF-Datei sein, die wiederum Formulare enthalten kann. So können Sie Ihre Formularanwendungen modularisieren und somit sowohl die Pflege der Anwendung vereinfachen als auch die Downloadzeit verkürzen. Weitere Informationen finden Sie unter „Externe Inhalte in Bildschirme laden (nur Flash Professional)“ auf Seite 501. Form-Objektparameter Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede Form-Objektinstanz festlegen: Gibt an, ob der durch den Parameter contentPath angegebene Inhalt automatisch geladen werden soll (true), oder ob mit dem Laden gewartet werden soll, bis die Methode Loader.load() aufgerufen wird (false). Der Standardwert lautet true. autoload contentPath Gibt den Inhalt des Formulars an. Dabei kann es sich um den Verknüpfungsbezeichner eines Movieclips oder die absolute bzw. relative URL für eine in die Folie zu ladende SWF- oder JPG-Datei handeln. Standardgemäß wird der geladene Inhalt so abgeschnitten, dass er in die Folie passt. visible Gibt an, ob das Formular beim ersten Laden angezeigt wird (true) oder nicht (false). Übersicht: Methoden der Form-Klasse Methode Beschreibung Form.getChildForm() Gibt das untergeordnete Formular an der angegebenen Indexposition zurück. Erbt alle Methoden von UIObject, UIComponent, View, Loader-Komponente und ScreenKlasse (nur Flash Professional). Form-Klasse (nur Flash Professional) 309 Übersicht: Eigenschaften der Form-Klasse Eigenschaft Beschreibung Form.currentFocusedForm Gibt das Formular am Ende der Verzweigung zurück, das den aktuellen globalen Fokus enthält. Form.indexInParentForm Gibt den Index (Bezugsbasis null) dieses Formulars in der Liste der Unterformulare des übergeordneten Formulars zurück. Form.visible Gibt an, ob das Formular angezeigt wird, wenn das übergeordnete Formular, die Folie, der Movieclip oder die SWF-Datei angezeigt wird. Form.numChildForms Gibt die Anzahl an untergeordneten Formulare dieses Formulars zurück. Form.parentIsForm Gibt an, ob das übergeordnete Objekt dieses Formulars ebenfalls ein Formular ist. Form.rootForm Gibt den Stamm der Formularstruktur oder der untergeordneten Struktur, die das Formular enthält, zurück. Erbt alle Methoden von UIObject, UIComponent, View, Loader-Komponente und ScreenKlasse (nur Flash Professional). Form.currentFocusedForm Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung mx.screens.Form.currentFocusedForm Beschreibung Eigenschaft (schreibgeschützt); gibt das Form-Objekt, das den aktuellen globalen Fokus enthält, zurück. Der aktuelle Fokus kann sich auf dem Formular selbst oder einem Movieclip, einem Textobjekt oder einer Komponente innerhalb dieses Formulars befinden. Er kann null sein, wenn es keinen aktuellen Fokus gibt. Beispiel Der folgende Code, der einer Schaltfläche (nicht angezeigt) zugewiesen ist, zeigt den Namen des Formulars mit dem aktuellen Fokus an. trace("Das Formular mit dem aktuellen Fokus ist: " + mx.screens.Form.currentFocusedForm); 310 Kapitel 4: Komponenten-Referenz Form.getChildForm() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.getChildForm(childIndex) Parameter Eine Zahl, die den Index (Bezugsbasis null) des zurückzugebenden untergeordneten Formulars angibt. childIndex Rückgaben Ein Form-Objekt. Beschreibung Methode; gibt das untergeordnete Formular von meinForm, dessen Index childIndex ist, zurück. Beispiel Im folgenden Beispiel werden im Bedienfeld Ausgabe die Namen aller untergeordneten FormObjekte, die zum Stamm-Form-Objekt mit dem Namen Application (Anwendung) gehören, angezeigt. for (var i:Number = 0; i < _root.Application.numChildForms; i++) { var childForm:mx.screens.Form = _root.Application.getChildForm(i); trace(childForm._name); } Siehe auch Form.numChildForms Form.indexInParentForm Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.indexInParentForm Beschreibung Eigenschaft (schreibgeschützt); enthält den Index (Bezugsbasis null) von meinForm in der Liste der untergeordneten Formulare des übergeordneten Formulars. Falls es sich bei dem übergeordneten Objekt von meinForm um einen Bildschirm handelt und nicht um ein Formular (es ist z. B. eine Folie), dann ist indexInParentForm immer 0. Form-Klasse (nur Flash Professional) 311 Beispiel var meinIndex:Number = meinForm.indexInParent; if (meinForm == meinForm._parent.getChildForm(meinIndex)) { trace("Ich bin, wo ich sein sollte"); } Siehe auch Form.getChildForm() Form.numChildForms Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.numChildForms Beschreibung Eigenschaft (schreibgeschützt); gibt die Anzahl an untergeordneten Formularen von meinForm zurück. Diese Eigenschaft enthält keine Folien, die in meinForm enthalten sind, sondern nur Formulare. Beispiel Der folgende Code durchläuft alle untergeordneten Formulare, die in meinForm enthalten sind, und zeigt deren Namen im Bedienfeld Ausgabe an. var howManyKids:Number = meinForm.numChildForms; for(i=0; i<howManyKids; i++) { var childForm = meinForm.getChildForm(i); trace(childForm._name); } Siehe auch Form.getChildForm() Form.parentIsForm Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.parentIsForm 312 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft (schreibgeschützt): Gibt einen Booleschen Wert (true oder false) zurück, der angibt, ob das übergeordnete Objekt des angegebenen Formulars ebenfalls ein Formular ist (true) oder nicht (false). Bei „false“ befindet sich meinForm auf der obersten Stufe der Formularhierarchie. Beispiel if (meinForm.parentIsForm) { trace("Ich habe "+meinForm._parent.numChildScreens+" gleichgeordnete Bildschirme"); } else { trace("Ich bin das Stammformular und habe keine gleichgeordneten Elemente"); } Form.rootForm Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.rootForm Beschreibung Eigenschaft (schreibgeschützt); gibt das Formular an den Anfang der Formularhierarchie, die meinForm enthält, zurück. Sollte meinForm in einem Objekt enthalten sein, das kein Formular ist (z. B. eine Folie), so gibt diese Eigenschaft meinForm zurück. Beispiel Im folgenden Beispiel wird ein Bezug auf das Stammformular von meinForm in einer Variable mit dem Namen root platziert. Falls sich der Wert, der root zugewiesen wurde, auf meinForm bezieht, befindet sich meinForm an der Spitze der Formularstruktur. var root:mein.screens.Form = meinForm.rootForm; if(rootForm == meinForm) { trace("meinForm ist das oberste Formular in der Struktur"); } Form.visible Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinForm.visible Form-Klasse (nur Flash Professional) 313 Beschreibung Eigenschaft; gibt an, ob meinForm angezeigt wird, wenn das übergeordnete Formular, die Folie, der Movieclip oder der Film angezeigt wird. Sie können diese Eigenschaft auch mit dem Eigenschafteninspektor in der Flash-Authoring-Umgebung einstellen. Wenn diese Eigenschaft auf true eingestellt ist, erhält meinForm ein Ereignis reveal; wenn sie auf false eingestellt ist, erhält meinForm ein Ereignis hide. Sie können Formularen Übergänge hinzufügen, die ausgeführt werden, wenn ein Formular eines dieser Ereignisse erhält. Weitere Informationen zum Hinzufügen von Übergängen zu Bildschirmen finden Sie unter „Steuerungen und Übergänge für Bildschirme mit Verhalten erstellen (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Beispiel Der folgende Code, der einer Instanz der Button-Komponente zugewiesen ist, setzt die Eigenschaft visible des Formulars, das die Schaltfläche enthält, auf false. on(click){ _parent.visible = true; } Label-Komponente Bei einer Label-Komponente handelt es sich um einen einzeiligen Bezeichnungstext. Der Bezeichnungstext kann mit Hilfe von HTML-Tags formatiert werden. Sie können auch die Ausrichtung und Größe der Bezeichnung steuern. Label-Komponenten haben keine Ränder, können keinen Fokus erhalten und übermitteln keine Ereignisse. Die Änderungen an den Parametern der einzelnen Label-Instanzen, die beim Authoring im Eigenschafteninspektor oder im Komponenten-Inspektor vorgenommen werden, werden jeweils in einer Live-Vorschau angezeigt. Wegen des fehlenden Rahmens müssen Sie beim Authoring einen Textinhalt mit dem Parameter text zuweisen, um eine Label-Komponente in der LiveVorschau sichtbar zu machen. Der Parameter autoSize wird in der Live-Vorschau nicht unterstützt. Die einer Anwendung hinzugefügten Label-Komponenten können Sie über das Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.LabelAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der Label-Komponente arbeiten Mit der Label-Komponente können Sie Textbezeichnungen für andere Komponenten eines Formulars erzeugen. So können Sie beispielsweise ein Texteingabefeld (TextInput), in das der Anwender seinen Namen eingeben soll, mit der Bezeichnung „Name:“ versehen. Wenn Sie eine Anwendung mit Komponenten aus Version 2 (v2) der Macromedia Komponenten-Architektur erstellen, empfiehlt es sich, anstelle normaler Textfelder die Label-Komponente zu verwenden, bei der Sie mit Hilfe von Stilen eine einheitliche Gestaltung erreichen können. 314 Kapitel 4: Komponenten-Referenz Label-Parameter Jeder Instanz einer Label-Komponente können beim Authoring im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor die folgenden Parameter zugewiesen werden: text gibt den Text der Bezeichnung an; der Standardwert ist Label. html gibt an, ob in der Bezeichnung HTML-Formatierungen verwendet werden (true oder false). Wenn der Parameter html auf true gesetzt ist, können keine Stile zur Formatierung Bezeichnung verwendet werden. Der Standardwert lautet false. der Der Parameter autoSize gibt an, ob Größe und Ausrichtung der Bezeichnung automatisch an den Textumfang angepasst werden. Der Standardwert ist none. Für diesen Parameter können die folgenden Werte angegeben werden: • Mit none werden die Größe und Ausrichtung der Bezeichnung nicht an den Text angepasst. • Mit left wird die Bezeichnung am rechten und unteren Rand an den Text angepasst. Linker • • und oberer Rand werden nicht verändert. Mit center wird die Bezeichnung am unteren Rand an den Text angepasst. Die horizontale Mitte der Bezeichnung bleibt an der Position der ursprünglichen horizontalen Mitte verankert. Mit right wird die Bezeichnung am linken und unteren Rand an den Text angepasst. Oberer und rechter Rand werden nicht verändert. Hinweis: Die Eigenschaft autoSize der Label-Komponente unterscheidet sich von der Eigenschaft autoSize des integrierten ActionScript-Objekts TextField. Sie können diese und weitere Optionen für Label-Instanzen über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter Label-Klasse. Anwendungen mit der Label-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine Label-Komponente hinzufügen. Im Beispiel befindet sich die Bezeichnung neben einem Kombinationsfeld mit Datumsangaben in einer Anwendung zum Einkaufen in einem Online-Warenhaus. Führen Sie die folgenden Schritte aus, um eine Anwendung mit einer Label-Komponente zu erstellen: 1 Ziehen Sie eine Label-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Bedienfeld Komponenten-Inspektor für den Parameter label den Wert Expiration Date ein. Die Label-Komponente anpassen Label-Komponenten können sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Außerdem können Sie den Authoring-Parameter autoSize setzen, um die Größe der Bezeichnung automatisch an den Text anzupassen (in der LiveVorschau funktioniert das allerdings nicht). Weitere Informationen finden Sie unter „LabelParameter“ auf Seite 315. Zur Laufzeit können Sie die Methode setSize() (siehe UIObject.setSize()) oder Label.autoSize verwenden. Label-Komponente 315 Stile für die Label-Komponente verwenden Durch Zuweisen von Stileigenschaften können Sie die Gestaltung einer Label-Instanz ändern. Ein Stil kann immer nur für den gesamten Text innerhalb einer Instanz der Label-Komponente zugewiesen werden. Sie können also nicht den Stil color für ein Wort auf blue und für ein anderes Wort innerhalb derselben Bezeichnung auf red setzen. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen zu Stilen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die Label-Komponente unterstützt die folgenden Stile: Stil Beschreibung color Die Standardfarbe für Text. embedFonts Die in das Dokument einzubettenden Schriftarten. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“. fontWeight Der Schriftstil für den Text: „normal“ oder „bold“. textAlign Die Textausrichtung: „left“ (links), „right“ (rechts) oder „center“ (zentriert). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). Skins für die Label-Komponente verwenden Die Label-Komponente unterstützt keine Skins. Weitere Informationen zur Verwendung von Skins für Komponenten finden Sie unter „SkinningKomponenten“ auf Seite 42. Label-Klasse Vererbung UIObject > Label ActionScript-Klassenname mx.controls.Label Mit den Eigenschaften der Label-Klasse können Sie zur Laufzeit einen Text für die Bezeichnung angeben, HTML für die Textformatierung verwenden und die Größe des Bezeichnungsfelds an den Textumfang anpassen. Per ActionScript zugewiesene Eigenschaften der Label-Klasse haben Vorrang vor gleichnamigen Parametern, die im Bedienfeld Eigenschafteninspektor oder Komponenten-Inspektor festgelegt werden. 316 Kapitel 4: Komponenten-Referenz Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.Label.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineLabelInstance.version);. Übersicht: Methoden der Label-Klasse Erbt alle Methoden von UIObject. Übersicht: Eigenschaften der Label-Klasse Eigenschaft Beschreibung Label.autoSize Eine Zeichenfolge, die angibt, ob und auf welche Weise die Größe und Ausrichtung der Bezeichnung an den Wert der Eigenschaft text angepasst wird. Die folgenden Werte können angegeben werden: none (keine Anpassung), left (links), center (zentriert) und right (rechts). Der Standardwert ist none. Label.html Ein boolescher Wert, der angibt, ob in der Bezeichnung HTML-Formatierungen verwendet werden (true oder false). Label.text Text der Beschriftung. Erbt alle Eigenschaften von UIObject. Übersicht: Ereignisse der Label-Klasse Erbt alle Ereignisse von UIObject. Label.autoSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung labelInstance.autoSize Beschreibung Eigenschaft; eine Zeichenfolge, die angibt, ob und auf welche Weise die Größe und Ausrichtung der Bezeichnung an den Wert der Eigenschaft text angepasst werden. Die folgenden Werte können angegeben werden: none (keine Anpassung), left (links), center (zentriert) und right (rechts). Der Standardwert ist none. • Mit none werden die Größe und Ausrichtung der Bezeichnung nicht an den Text angepasst. • Mit left wird die Bezeichnung am rechten und unteren Rand an den Text angepasst. Linker und oberer Rand werden nicht verändert. Label-Komponente 317 • Mit center wird die Bezeichnung am unteren Rand an den Text angepasst. Die horizontale • Mitte der Bezeichnung bleibt an der Position der ursprünglichen horizontalen Mitte verankert. Mit right wird die Bezeichnung am linken und unteren Rand an den Text angepasst. Oberer und rechter Rand werden nicht verändert. Hinweis: Die Eigenschaft autoSize der Label-Komponente unterscheidet sich von der Eigenschaft autoSize des integrierten ActionScript-Objekts TextField. Label.html Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung labelInstance.html Beschreibung Eigenschaft; ein boolescher Wert, der angibt, ob in der Bezeichnung HTML-Formatierungen verwendet werden (true oder false). Der Standardwert lautet false. Label-Komponenten, bei denen die Eigenschaft html auf true gesetzt ist, können nicht mit Hilfe von Stilen formatiert werden. Farbzuweisungen mit <font color> werden auch dann nicht unterstützt, wenn Label.html auf gesetzt wird. Im folgenden Beispiel wird das Wort „Hallo“ schwarz angezeigt, obwohl die HTML-Anweisung <font color> eine rote Farbgebung vorsieht: true lbl.html = true; lbl.text = "<font color=\"#FF0000\">Hallo</font> Welt"; Wenn Sie reinen Text aus HTML-formatiertem Text abrufen möchten, setzen Sie die Eigenschaft HTML auf false, und greifen Sie dann auf die Eigenschaft text zu. Dadurch wird die HTMLFormatierung entfernt. Es empfiehlt sich, zunächst den Beschriftungstext in eine nicht am Bildschirm angezeigte Label- oder TextArea-Komponente zu kopieren und erst dann den reinen Text abzurufen. Beispiel Im folgenden Beispiel wird die Eigenschaft html auf true gesetzt, sodass in der Bezeichnung HTML-Formatierungen verwendet werden können. Anschließend wird für die Eigenschaft text eine Zeichenfolge mit HTML-Tags zugewiesen. labelControl.html = true; labelControl.text = "König <b>Ubu</b>"; Der Name „Ubu“ wird in fetter Schrift angezeigt. 318 Kapitel 4: Komponenten-Referenz Label.text Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung labelInstance.text Beschreibung Eigenschaft; der Inhalt des Bezeichnungstexts. Der Standardwert ist Label. Beispiel Mit dem folgenden Code wird die Eigenschaft text der Label-Instanz labelControl festgelegt und der Wert an das Ausgabebedienfeld gesendet: labelControl.text = "König Ubu"; trace(labelControl.text); List-Komponente Bei der List-Komponente handelt es sich um ein scrollbares Listenfeld zur Auswahl eines oder mehrerer Elemente. In Listen können auch Grafiken und andere Komponenten angezeigt werden. Die in der Liste angezeigten Werte werden im Dialogfeld Werte hinzugefügt, das Sie durch Klicken auf das Parameterfeld label oder data aufrufen können. Sie können auch mit den Methoden List.addItem() und List.addItemAt() Elemente zur Liste hinzufügen. Die List-Komponente verwendet einen von Null ausgehenden Index, wobei das Element mit dem Indexwert 0 an oberster Stelle der Liste angezeigt wird. Wenn Sie Elemente mit den Methoden und Eigenschaften der List-Klasse hinzufügen, entfernen oder ersetzen, müssen Sie in bestimmten Fällen die Indizes der Elemente angeben. Die Liste erhält den Fokus, wenn Sie darauf klicken oder sie mit der Tabulatortaste ansteuern. Sie kann dann mit den folgenden Tasten gesteuert werden: Taste Beschreibung Alphanumerische Tasten Steuert das nächste Element an, dessen Beschriftung mit Key.getAscii() beginnt. <Strg> Elemente auswählen bzw. Auswahl aufheben. Wenn beim Klicken die Steuerungstaste gedrückt gehalten wird, können mehrere nicht aufeinander folgende Elemente innerhalb der Liste markiert werden. Durch abermaliges Klicken kann die Auswahl einzelner Elemente wieder aufgehoben werden. <Nach-unten> Verschiebt die Auswahl um ein Element nach unten. <Pos 1> Verschiebt die Auswahl an den Anfang der Liste. Bild-ab-Taste Verschiebt die Auswahl um eine Seite nach unten. Bild-auf-Taste Verschiebt die Auswahl um eine Seite nach oben. List-Komponente 319 Taste Beschreibung <Umschalt> Mehrere aufeinander folgende Elemente auswählen. Wenn beim Klicken die Umschalttaste gehalten gedrückt wird, können mehrere aufeinander folgende Elemente innerhalb der Liste markiert werden. <Nach-oben> Verschiebt die Auswahl um ein Element nach oben. Hinweis: Die Seitengröße beim Blättern innerhalb der Dropdown-Liste mit der Bild-auf-Taste und Bild-ab-Taste entspricht der Anzahl der Elemente, die in den angezeigten Ausschnitt passen, minus eins. Beispiel: Bei einer zehnzeiligen Dropdown-Liste werden beim Durchlaufen mit der Bild-abTaste die Elemente 0 bis 9, dann die Elemente 9 bis 18, dann die Elemente 18 bis 27 angezeigt usw. Die jeweils letzte angezeigte Zeile wird also immer zur ersten angezeigten Zeile der nächsten Seite. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Die Änderungen an den Parametern der einzelnen List-Instanzen, die beim Authoring im Eigenschafteninspektor oder im Komponenten-Inspektor vorgenommen werden, werden jeweils in einer Live-Vorschau angezeigt. Die einer Anwendung hinzugefügten List-Komponenten können Sie über das Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.ListAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der List-Komponente arbeiten Sie können beim Erstellen der Liste festlegen, ob der Anwender nur ein einzelnes Element oder auch mehrere Elemente auf einmal auswählen kann. Ein Beispiel: Das Sortiment eines OnlineShops umfasst 30 Artikel, die in einer scrollbaren Liste ausgewählt werden können. Beim Bestellvorgang wählt der Kunde durch Klicken den gewünschten Artikel aus. Die Zeilen eines Listenfelds können auch Movieclips enthalten. Ein Beispiel wäre eine E-MailAnwendung, in der die verschiedenen Postfächer als List-Komponenten umgesetzt sind, wobei jedes Listenelement einer Nachricht entspricht und grafische Symbole den Anwender über Priorität und Status der einzelnen Nachrichten informieren. Parameter der List-Komponente Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede List-Komponenteninstanz festlegen: Ein Array von Werten, die die Daten der Liste ausmachen. Der Standardwert ist [] (leeres Array). Für diese Eigenschaft gibt es keine entsprechende Laufzeit-Eigenschaft. data Ein Array aus Textwerten, die als Bezeichnungswerte für die Liste verwendet werden. Der Standardwert ist [] (leeres Array). Für diese Eigenschaft gibt es keine entsprechende LaufzeitEigenschaft. labels Ein boolescher Wert, der angibt, ob der Anwender mehrere Werte (true) oder nur einen Wert (false) auswählen kann. Der Standardwert lautet false. multipleSelection 320 Kapitel 4: Komponenten-Referenz rowHeight Gibt die Höhe einer einzelnen Zeile in Pixel an. Der Standardwert ist 20. Durch Zuweisen einer Schriftart ändert sich die Zeilenhöhe nicht. Sie können diese und weitere Optionen für List-Instanzen über die entsprechenden Eigenschaften, Methoden und Ereignisse in ActionScript steuern. Weitere Informationen finden Sie unter List-Klasse. Anwendungen mit der List-Komponente erstellen Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine List-Komponente hinzufügen. Die Liste in diesem Beispiel enthält drei Elemente. Führen Sie die folgenden Schritte aus, um eine einfache List-Komponente zu einer Anwendung hinzuzufügen: 1 Ziehen Sie eine List-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Markieren Sie die Liste, und wählen Sie Modifizieren > Transformieren, um die Größe des Listenfelds an die Anwendung anzupassen. 3 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: ■ Geben Sie den Instanznamen meineList ein. ■ Geben Sie Item1, Item2 und Item3 als Werte für den Parameter label ein. ■ Geben Sie item1.html, item2.html und item3.html als Werte für den Parameter data ein. 4 Wählen Sie Steuerung > Film testen, um die Liste mit den Elementen anzuzeigen. Mit Hilfe der Werte der Eigenschaft data in Ihrer Anwendung können Sie auch HTMLDateien öffnen. Im Folgenden wird erläutert, wie Sie einer Anwendung beim Authoring eine List-Komponente hinzufügen. Die Liste in diesem Beispiel enthält drei Elemente. Führen Sie die folgenden Schritte aus, um einer Anwendung eine List-Komponente hinzuzufügen: 1 Ziehen Sie eine List-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Markieren Sie die Liste, und wählen Sie Modifizieren > Transformieren, um die Größe des Listenfelds an die Anwendung anzupassen. 3 Geben Sie im Bedienfeld Aktionen den Instanznamen meineList ein. 4 Wählen Sie das erste Bild in der Zeitleiste aus, und geben Sie im Bedienfeld Aktionen den folgenden Code ein: meineList.dataProvider = meinDP; Wenn Sie einen Datenprovider namens meinDP definiert haben, wird die Liste mit Daten ausgefüllt. Weitere Informationen zu Datenprovidern finden Sie unter List.dataProvider. 5 Wählen Sie Steuerung > Film testen, um die Liste mit den Elementen anzuzeigen. Die List-Komponente anpassen Sie können die List-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode List.setSize() (siehe UIObject.setSize()). List-Komponente 321 Wenn die Größe einer Liste geändert wird, schrumpfen die Listenzeilen horizontal, wobei der enthaltene Text gegebenenfalls abgeschnitten wird. Vertikal werden der Liste nach Bedarf Zeilen hinzugefügt, oder es werden Zeilen aus ihr entfernt. Die Bildlaufleisten werden automatisch positioniert. Weitere Informationen zu Bildlaufleisten finden Sie unter „ScrollPane-Komponente“ auf Seite 513. Stile mit der List-Komponente verwenden Sie können Stileigenschaften festlegen, um das Erscheinungsbild der List-Komponente zu ändern. Die List-Komponente verwendet die folgenden Kranz-Stile: Stil Beschreibung alternatingRowColors Gibt Farben für Zeilen in einem abwechselnden Muster an. Bei dem Wert kann es sich um ein Array von zwei oder mehr Farben handeln, beispielsweise 0xFF00FF, 0xCC6699 und 0x996699. backgroundColor Die Hintergrundfarbe der Liste. Dieser Stil wird in der Klassenstildeklaration ScrollSelectList definiert. borderColor Der schwarze Bereich eines dreidimensionalen Randes oder der farbige Bereich eines zweidimensionalen Randes. borderStyle Der Stil der Begrenzungsbox. Mögliche Werte sind: none, solid, inset und outset. Dieser Stil wird in der Klassenstildeklaration ScrollSelectList definiert. defaultIcon Der Name des Standardsymbols, das für Listenzeilen verwendet wird. Der Standardwert ist undefined. rollOverColor Die Farbe einer Zeile, über die der Mauszeiger bewegt wurde. selectionColor Die Farbe einer ausgewählten Zeile. selectionEasing Eine Referenz auf eine Abbremsgleichung (Funktion), die zur Steuerung des programmatischen Tweening dient. disabledColor Die Farbe für deaktivierten Text. textRollOverColor Die Farbe, die Text annimmt, wenn der Zeiger über ihn hinweg geführt wird. textSelectedColor Die Farbe, die Text annimmt, wenn er ausgewählt wird. selectionDisabledColor Die Farbe, die eine Zeile annimmt, wenn sie ausgewählt und deaktiviert wurde. selectionDuration Die Länge aller Übergänge beim Auswählen von Elementen. useRollOver Legt fest, ob die Markierung aktiviert wird, wenn der Mauszeiger über eine Zeile geführt wird. Die List-Komponente verwendet außerdem die Stileigenschaften der Label-Komponente (siehe „Stile für die Label-Komponente verwenden“ auf Seite 316), der ScrollPane-Komponente (siehe „ScrollPane-Komponente“ auf Seite 513) und von RectBorder. 322 Kapitel 4: Komponenten-Referenz Skins mit der List-Komponente verwenden Alle Skins in der List-Komponente sind in den Unterkomponenten enthalten, aus denen die Liste besteht (ScrollPane-Komponente und „RectBorder“). Weitere Informationen finden Sie unter „ScrollPane-Komponente“ auf Seite 513. Mit der Methode setStyle() (siehe UIObject.setStyle()) können Sie die folgenden RectBorder-Stileigenschaften ändern: RectBorder-Stile Randposition borderColor a highlightColor b borderColor c shadowColor d borderCapColor e shadowCapColor f shadowCapColor g borderCapColor h Mit den Stileigenschaften werden die folgenden Positionen für den Rand festgelegt: List-Klasse Vererbung UIObject > UIComponent > View > ScrollView > ScrollSelectList > List ActionScript-Klassenname mx.controls.List Die List-Komponente besteht aus drei Teilen: • Elementen • Zeilen • Einem Datenprovider Ein Element ist ein ActionScript-Objekt, das zur Speicherung der Informationseinheiten in der Liste dient. Eine Liste kann als ein Array aufgefasst werden; jede indizierte Position des Arrays entspricht einem Element. Ein Element ist ein Objekt, das in der Regel eine Eigenschaft label (die angezeigt wird) und eine Eigenschaft data (die zur Datenspeicherung verwendet wird) besitzt. List-Komponente 323 Eine Zeile ist eine Komponente, die zur Anzeige eines Elements dient. Zeilen werden entweder standardmäßig durch die Liste angegeben (mit der SelectableRow-Klasse), oder Sie können sie auch selbst angeben, normalerweise als Unterklasse der SelectableRow-Klasse. Die SelectableRowKlasse implementiert die Schnittstelle CellRenderer; dies ist die Gruppe von Eigenschaften und Methoden, mit Hilfe derer die Liste die einzelnen Zeilen manipuliert und Daten und Statusinformationen (z. B. „Größe“ oder „ausgewählt“) zur Anzeige an die Reihe gesendet werden. Ein Datenprovider ist ein Datenmodell der Elementliste in einer Liste. Arrays, die sich im selben Bild wie eine Liste befinden, erhalten automatisch Methoden, mit denen Sie Daten manipulieren und Änderungen an mehrere Ansichten senden können. Sie können eine Array-Instanz aufbauen oder eine von einem Server abrufen und als Datenmodell für mehrere List-, ComboBox- oder DataGrid-Objekte usw. verwenden. Die List-Komponente verfügt über eine Reihe von Methoden, die als Proxy für ihren Datenprovider dienen (z. B. addItem() und removeItem()). Wenn der Liste kein externer Datenprovider zugeordnet wird, erstellen diese Methoden automatisch eine Datenprovider-Instanz, die durch List.dataProvider zur Verfügung gestellt wird. Um der Registerreihenfolge einer Anwendung die List-Komponente hinzuzufügen, legen Sie die Eigenschaft tabIndex fest (siehe UIComponent.tabIndex). Die List-Komponente setzt das Standard-Fokusrechteck des Flash Players mit Hilfe von FocusManager außer Kraft, um ein Fokusrechteck mit abgerundeten Ecken zu zeichnen. Weitere Informationen finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.List.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineListInstance.version);. Übersicht: Methoden der List-Klasse Methode Beschreibung List.addItem() Fügt ein Element am Ende der Liste hinzu. List.addItemAt() Fügt der Liste an der angegebenen Indexposition ein Element hinzu. List.getItemAt() Gibt das Element an der angegebenen Indexposition zurück. List.removeAll() Entfernt alle Elemente aus der Liste. List.removeItemAt() Entfernt das Element an der angegebenen Indexposition. List.replaceItemAt() Ersetzt das Element an der angegebenen Indexposition durch ein anderes Element. List.setPropertiesAt() Wendet die angegebenen Eigenschaften auf das angegebene Element an. 324 List.sortItems() Sortiert die Elemente in der Liste anhand der angegebenen Vergleichsfunktion. List.sortItemsBy() Sortiert die Elemente in der Liste anhand einer angegebenen Eigenschaft. Kapitel 4: Komponenten-Referenz Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der List-Klasse Eigenschaft Beschreibung List.cellRenderer Weist die zur Anzeige der einzelnen Listenzeilen zu verwendende Klasse oder das zu verwendende Symbol zu. List.dataProvider Die Quelle der Listenelemente. List.hPosition Die horizontale Position der Liste. List.hScrollPolicy Gibt an, ob die horizontale Bildlaufleiste angezeigt (on) oder ausgeblendet wird (off). List.iconField Ein Feld innerhalb jedes Elements, das zur Angabe von Symbolen dient. List.iconFunction Eine Funktion, die festlegt, welches Symbol verwendet wird. List.labelField Gibt ein Feld für jedes Element an, das als Bezeichnungstext verwendet werden soll. List.labelFunction Eine Funktion, die festlegt, welche Felder für jedes Element als Bezeichnungstext verwendet werden. List.length Die Länge der Liste in Elementen. Diese Eigenschaft ist schreibgeschützt. List.maxHPosition Gibt an, über wie viele Pixel ein Bildlauf in der Liste nach rechts durchgeführt werden kann, wenn List.hScrollPolicy auf on eingestellt ist. List.multipleSelection Gibt an, ob mehrere Auswahlen in der Liste erlaubt (true) oder nicht erlaubt sind (false). List.rowCount Die Anzahl der Zeilen, die in der Liste zumindest teilweise sichtbar sind. List.rowHeight Die Pixelhöhe der einzelnen Zeilen in der Liste. List.selectable Gibt an, ob die Liste ausgewählt werden kann (true) oder nicht (false). List.selectedIndex Der Index einer Auswahl in einer Liste, in der nur ein Element ausgewählt werden kann. List.selectedIndices Ein Array der ausgewählten Elemente in einer Liste, in der mehrere Elemente ausgewählt werden können. List.selectedItem Das ausgewählte Element in einer Liste, in der nur ein Element ausgewählt werden kann. Diese Eigenschaft ist schreibgeschützt. List.selectedItems Die ausgewählten Elemente in einer Liste, in der mehrere Elemente ausgewählt werden können. Diese Eigenschaft ist schreibgeschützt. List.vPosition Führt einen Bildlauf in der Liste durch, damit das oberste sichtbare Element das mit der zugewiesenen Nummer ist. List.vScrollPolicy Gibt an, ob die vertikale Bildlaufleiste angezeigt ("on"), ausgeblendet ("off") oder nur bei Bedarf angezeigt wird ("auto"). Erbt alle Eigenschaften von UIObject und UIComponent. List-Komponente 325 Übersicht: Ereignisse der List-Klasse Ereignis Beschreibung List.change Wird per Broadcast gesendet, wenn die Auswahl sich aufgrund einer Benutzerinteraktion ändert. List.itemRollOut Wird per Broadcast gesendet, wenn der Mauszeiger über Listenelemente und dann von ihnen weg geführt wird. List.itemRollOver Wird per Broadcast gesendet, wenn der Mauszeiger über Listenelemente geführt wird. List.scroll Wird per Broadcast gesendet, wenn in einer Liste ein Bildlauf durchgeführt wird. Erbt alle Ereignisse von UIObject und UIComponent. List.addItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.addItem(label[, data]) listInstance.addItem(itemObject) Parameter label Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element. Dieser Parameter ist optional und kann einen beliebigen Datentyp enthalten. data itemObject Ein Elementobjekt, das normalerweise die Eigenschaften label und data hat. Rückgaben Der Index des hinzugefügten Elements. Beschreibung Methode; fügt ein neues Element am Ende des Listenfelds hinzu. Im ersten Verwendungsbeispiel wird ein Elementobjekt immer mit der angegebenen Eigenschaft label und, falls diese angegeben wird, auch mit der Eigenschaft data erstellt. Im zweiten Verwendungsbeispiel wird das angegebene Elementobjekt hinzugefügt. Durch den Aufruf dieser Methode wird der Datenprovider der List-Komponente modifiziert. Wenn der Datenprovider mit anderen Komponenten gemeinsam verwendet wird, werden diese Komponenten ebenfalls aktualisiert. 326 Kapitel 4: Komponenten-Referenz Beispiel Beide der folgenden Codezeilen fügen der Instanz meineList ein Element hinzu. Um diesen Code auszuprobieren, ziehen Sie eine Liste auf die Bühne, und geben Sie ihr den Instanznamen meineList. Fügen Sie Bild 1 in der Zeitleiste den folgenden Code hinzu: meineList.addItem("Dies ist ein Element"); meineList.addItem({label:"Georg",age:"sehr alt",data:123}); List.addItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.addItemAt(index, label[, data]) listInstance.addItemAt(index, itemObject) Parameter label Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element. Dieser Parameter ist optional und kann einen beliebigen Datentyp enthalten. data index Eine Zahl, die größer oder gleich Null ist und die Position des Elements angibt. itemObject Ein Elementobjekt, das normalerweise die Eigenschaften label und data hat. Rückgaben Der Index des hinzugefügten Elements. Beschreibung Methode; fügt an der durch den Parameter index angegebenen Position ein neues Element hinzu. Im ersten Verwendungsbeispiel wird ein Elementobjekt immer mit der angegebenen Eigenschaft label und, falls diese angegeben wird, auch mit der Eigenschaft data erstellt. Im zweiten Verwendungsbeispiel wird das angegebene Elementobjekt hinzugefügt. Durch den Aufruf dieser Methode wird der Datenprovider der List-Komponente modifiziert. Wenn der Datenprovider mit anderen Komponenten gemeinsam verwendet wird, werden diese Komponenten ebenfalls aktualisiert. Beispiel Die folgende Codezeile fügt an der dritten Indexposition ein Element hinzu, bei dem es sich um das vierte Element in der Liste handelt: meineList.addItemAt(3,{label:'Rot',data:0xFF0000}); List-Komponente 327 List.cellRenderer Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.cellRenderer Beschreibung Eigenschaft; weist den CellRenderer zu, der für die einzelnen Listenzeilen verwendet werden soll. Diese Eigenschaft muss eine Klassenobjektreferenz oder ein Symbol-Verknüpfungsbezeichner sein. Alle Klassen, die für diese Eigenschaft verwendet werden, müssen die „CellRenderer-API“ auf Seite 91 implementieren. Beispiel Das folgende Beispiel richtet einen neuen CellRenderer mit Hilfe eines Verknüpfungsbezeichners ein: meineList.cellRenderer = "ComboBoxCell"; List.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(change){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } listInstance.addEventListener("change", listenerObject) 328 Kapitel 4: Komponenten-Referenz Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der ausgewählte Index der Liste sich aufgrund einer Benutzerinteraktion ändert. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der List-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Instanz meineBox der List-Komponente angehängt wird, sendet „_level0.meineBox“ an das Bedienfeld Ausgabe: on(click){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (listInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Anschließend rufen Sie die Methode addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. Beispiel Im folgenden Beispiel wird der Instanzname der Komponente, die das Ereignis change generiert hat, an das Ausgabebedienfeld gesendet: form.change = function(eventObj){ trace("Wert geändert in " + eventObj.target.value); } meineList.addEventListener("change", form); Siehe auch UIEventDispatcher.addEventListener() List.dataProvider Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.dataProvider List-Komponente 329 Beschreibung Eigenschaft; das Datenmodell der in der Liste angezeigten Elemente. Als Wert für diese Eigenschaft kann ein Array oder ein Objekt verwendet werden, das die DataProvider-Schnittstelle implementiert. Der Standardwert ist [] (leeres Array). Weitere Informationen zur Schnittstelle DataProvider finden Sie unter „DataProvider-API“ auf Seite 207. Die List-Komponente und andere Komponenten fügen dem Prototyp des Array-Objekts Methoden hinzu, damit sie die Voraussetzungen der Schnittstelle DataProvider erfüllen. Deshalb verfügt jedes Array, das zur gleichen Zeit wie eine Liste existiert, automatisch über alle benötigten Methoden (addItem(), getItemAt() usw.), um als Datenmodell für die Liste dienen zu können, und kann zum Broadcast von Modelländerungen an mehreren Komponenten verwendet werden. Wenn das Array Objekte enthält, wird auf die Eigenschaften List.labelField oder List.labelFunction zugegriffen, um festzustellen, welche Teile des Elements angezeigt werden sollen. Der Standardwert ist label. Wenn also das Feld label vorhanden ist, wird es zur Anzeige ausgewählt. Wenn es nicht vorhanden ist, wird eine durch Kommas getrennte Liste aller Felder angezeigt. Hinweis: Wenn alle Indizes des Arrays Zeichenfolgen und keine Objekte enthalten, können die Elemente in der Liste nicht sortiert werden und der Auswahlstatus kann nicht dauerhaft gespeichert werden. Die Auswahl geht bei jedem Sortiervorgang verloren. Jede Instanz, mit der die DataProvider-Schnittstelle implementiert wird, kann als Datenprovider für die List-Komponente dienen. Hierzu gehören unter anderem Flash Remoting RecordSets und Firefly DataSets. Beispiel Das folgende Beispiel füllt die Liste mit einem String-Array aus: list.dataProvider = ["Postzustellung","Paketdienst","Paketdienst mit Expresszustellung"]; Im folgenden Beispiel wird ein Datenprovider-Array erstellt und der Eigenschaft dataProvider zugewiesen: meinDP = new Array(); list.dataProvider = meinDP; for (var i=0; i<accounts.length; i++) { // Diese Änderungen des DataProvider werden per Broadcast an die Liste // übermittelt meinDP.addItem({ label: accounts[i].name, data: accounts[i].accountID }); } List.getItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.getItemAt(index) 330 Kapitel 4: Komponenten-Referenz Parameter index Eine Zahl größer oder gleich 0 und kleiner als der Wert von List.length. Der Index des abzurufenden Elements. Rückgaben Das indizierte Elementobjekt. Undefined, wenn der Index außerhalb des zulässigen Bereichs liegt. Beschreibung Methode; ruft das Element an der angegebenen Indexposition ab. Beispiel Der folgende Code zeigt die Bezeichnung des Elements an Indexposition 4 an: trace(meineList.getItemAt(4).label); List.hPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.hPosition Beschreibung Eigenschaft; führt in der Liste einen horizontalen Bildlauf auf die angegebene Pixelanzahl durch. Sie können hPosition nur festlegen, wenn der Wert von hScrollPolicy "on" ist und für die Liste unter maxHPosition ein Wert höher als 0 angegeben ist. Beispiel Im folgenden Beispiel wird die horizontale Bildlaufposition von meineList abgerufen: var scrollPos = meineList.hPosition; Im folgenden Beispiel wird die horizontale Bildlaufposition ganz nach links gesetzt: meineList.hPosition = 0; List.hScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.hScrollPolicy List-Komponente 331 Beschreibung Eigenschaft; ein String, der festlegt, ob die horizontale Bildlaufleiste angezeigt wird; mögliche Werte sind on und off. Der Standardwert lautet off. Die horizontale Bildlaufleiste kann Text nicht messen; Sie müssen eine maximale horizontale Bildlaufposition angeben, siehe List.maxHPosition. Hinweis: Der Wert auto wird für List.hScrollPolicy nicht unterstützt. Beispiel Der folgende Code ermöglicht der Liste einen horizontalen Bildlauf um bis zu 200 Pixel: meineList.hScrollPolicy = "on"; meineList.Box.maxHPosition = 200; Siehe auch List.hPosition, List.maxHPosition List.iconField Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.iconField Beschreibung Eigenschaft; gibt den Namen eines Feldes an, das als Symbolbezeichner verwendet werden soll. Wenn das Feld den Wert undefined hat, wird das durch den Stil defaultIcon angegebene Standardsymbol verwendet. Wenn der Stil defaultIcon nicht definiert ist, wird kein Symbol verwendet. Beispiel Im folgenden Beispiel wird die Eigenschaft iconField auf die Eigenschaft icon der einzelnen Elemente eingestellt: list.iconField = "icon" Siehe auch List.iconFunction List.iconFunction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 332 Kapitel 4: Komponenten-Referenz Verwendung listInstance.iconFunction Beschreibung Eigenschaft; gibt eine Funktion an, mit der festgestellt wird, welches Symbol die einzelnen Zeilen zur Anzeige ihres Elements verwenden. Diese Funktion erhält den Parameter item, bei dem es sich um das gerenderte Element handelt, und muss einen String zurückgeben, der den Symbolbezeichner des Symbols darstellt. Beispiel Im folgenden Beispiel werden Symbole hinzugefügt, die anzeigen, ob es sich bei einer Datei um ein Bild- oder Textdokument handelt. Wenn das Feld data.fileExtension den Wert jpg oder gif enthält, wird als Symbol pictureIcon verwendet usw.: list.iconFunction = function(item){ var type = item.data.fileExtension; if (type=="jpg" || type=="gif") { return "pictureIcon"; } else if (type=="doc" || type=="txt") { return "docIcon"; } } List.itemRollOut Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(itemRollOut){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.itemRollOut = function(eventObject){ // Hier Code eingeben } listInstance.addEventListener("itemRollOut", listenerObject) Ereignisobjekt Zusätzlich zu den Standardeigenschaften des Ereignisobjekts hat das Ereignis itemRollOut die folgende Eigenschaft: index. index ist die Nummer des Elements, von dem der Mauszeiger weggeführt wurde. List-Komponente 333 Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der Mauszeiger über die Listenelemente geführt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der List-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Listeninstanz meineList angehängt wird, sendet „_level0.meineList“ an das Bedienfeld Ausgabe: on(itemRollOut){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (listInstance) setzt ein Ereignis (in diesem Fall itemRollOut) ab, und das Ereignis wird von einer Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die die Indexnummer des Elements angibt, über dem sich der Mauszeiger befindet: form.itemRollOut = function (eventObj) { trace("Der Zeiger wurde von Element Nr. " + eventObj.index + " weg bewegt."); } meineList.addEventListener("itemRollOut", form); Siehe auch List.itemRollOver List.itemRollOver Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 334 Kapitel 4: Komponenten-Referenz Verwendung Verwendung 1: on(itemRollOver){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.itemRollOver = function(eventObject){ // Hier Code eingeben } listInstance.addEventListener("itemRollOver", listenerObject) Ereignisobjekt Zusätzlich zu den Standardeigenschaften des Ereignisobjekts hat das Ereignis itemRollOver die folgende Eigenschaft: index. index ist die Nummer des Elements, über dem sich der Mauszeiger befindet. Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der Mauszeiger über die Listenelemente geführt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der List-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Listeninstanz meineList angehängt wird, sendet „_level0.meineList“ an das Bedienfeld Ausgabe: on(itemRollOver){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (listInstance) setzt ein Ereignis (in diesem Fall itemRollOver) ab, und das Ereignis wird von einer Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) List-Komponente 335 Beispiel Im folgenden Beispiel wird eine Meldung an das Ausgabebedienfeld gesendet, die die Indexnummer des Elements angibt, über dem sich der Mauszeiger befindet: form.itemRollOver = function (eventObj) { trace("Der Mauszeiger befindet sich über Element Nr. " + eventObj.index + "."); } meineList.addEventListener("itemRollOver", form); Siehe auch List.itemRollOut List.labelField Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.labelField Beschreibung Eigenschaft; gibt ein Feld in jedem Element an, das als Bezeichnungstext verwendet werden soll. Diese Eigenschaft nimmt den Wert des Feldes entgegen und verwendet ihn als Bezeichnung. Der Standardwert lautet label. Beispiel Im folgenden Beispiel wird die Eigenschaft labelField als Feld Name der einzelnen Elemente festgelegt: Für die Bezeichnung des in der zweiten Zeile des Codes eingefügten Elements wird „Nina“ angezeigt: list.labelField = "Name"; list.addItem({name: "Nina", age: 25}); Siehe auch List.labelFunction List.labelFunction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.labelFunction 336 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; gibt eine Funktion an, mit der entschieden wird, welches Feld (oder welche Feldkombination) der einzelnen Elemente angezeigt werden soll. Diese Funktion erhält genau einen Parameter, nämlich item, bei dem es sich um das gerenderte Element handelt, und muss einen String zurückgeben, der den anzuzeigenden Text darstellt. Beispiel Im folgenden Beispiel zeigt die Bezeichnung einige formatierte Details des Elements an: list.labelFunction = function(item){ return "Der Produktpreis " + item.productID + ", " + item.productName + " ist Euro" + item.price; } Siehe auch List.labelField List.length Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.length Beschreibung Eigenschaft (schreibgeschützt); die Anzahl der Elemente in der Liste. Beispiel Im folgenden Beispiel wird der Wert von length in eine Variable gesetzt: var len = meineList.length; List.maxHPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.maxHPosition List-Komponente 337 Beschreibung Eigenschaft; gibt an, über wie viele Pixel ein Bildlauf in der Liste durchgeführt werden kann, wenn List.hScrollPolicy auf on eingestellt ist. Die Liste stellt keine präzise Messung der Breite des enthaltenen Textes an. Sie müssen maxHPosition festlegen, um anzugeben, wie viel Bildlauf die Liste benötigt. Es wird kein horizontaler Bildlauf in der Liste durchgeführt, wenn diese Eigenschaft nicht festgelegt ist. Beispiel Im folgenden Beispiel wird eine Liste mit 400 Pixeln horizontalem Bildlauf erstellt: meineList.hScrollPolicy = "on"; meineList.maxHPosition = 400; Siehe auch List.hScrollPolicy List.multipleSelection Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.multipleSelection Beschreibung Eigenschaft; gibt an, ob mehrere Elemente (true) oder nur ein Element ausgewählt werden können (false). Der Standardwert lautet false. Beispiel Das folgende Beispiel prüft, ob mehrere Elemente ausgewählt werden können: if (meineList.multipleSelection){ // Hier Code eingeben } Das folgende Beispiel erlaubt mehrere Auswahlen in der Liste: meineList.selectMultiple = true; List.removeAll() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.removeAll() 338 Kapitel 4: Komponenten-Referenz Parameter Keine. Rückgaben Keine. Beschreibung Methode; entfernt alle Elemente aus der Liste. Durch den Aufruf dieser Methode wird der Datenprovider der List-Komponente modifiziert. Wenn der Datenprovider mit anderen Komponenten gemeinsam verwendet wird, werden diese Komponenten ebenfalls aktualisiert. Beispiel Mit dem folgenden Code wird die Liste gelöscht: meineList.removeAll(); List.removeItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.removeItemAt(index) Parameter index Ein String, der unter List.length. die Bezeichnung für das neue Element angibt. Ein Wert über Null und Rückgaben Ein Objekt; das aus der Liste entfernte Element (nicht definiert, wenn keine Elemente vorhanden sind). Beschreibung Methode; entfernt das Element an der angegebenen index-Position. Nachdem das mit dem Parameter index angegebene Element entfernt wurde, werden die verbleibenden Indexwerte entsprechend angepasst. Durch den Aufruf dieser Methode wird der Datenprovider der List-Komponente modifiziert. Wenn der Datenprovider mit anderen Komponenten gemeinsam verwendet wird, werden diese Komponenten ebenfalls aktualisiert. Beispiel Mit dem folgenden Code wird das Element mit der Indexposition 3 entfernt: meineList.removeItemAt(3); List-Komponente 339 List.replaceItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.replaceItemAt(index, label[, data]) listInstance.replaceItemAt(index, itemObject) Parameter Eine Zahl über Null und unter List.length, die die Position angibt, an der das Element eingefügt werden soll (der Index des neuen Elements). index label Eine Zeichenfolge, die die Bezeichnung für das neue Element angibt. Die Daten für das Element. Dieser Parameter ist optional und kann einen beliebigen Typ enthalten. data itemObject. Ein Objekt, label und data enthält. das als Element eingesetzt wird und gewöhnlich die Eigenschaften Rückgaben Keine. Beschreibung Methode; ersetzt den Inhalt des im Parameter index angegebenen Elements. Durch den Aufruf dieser Methode wird der Datenprovider der List-Komponente modifiziert. Wenn der Datenprovider mit anderen Komponenten gemeinsam verwendet wird, werden diese Komponenten ebenfalls aktualisiert. Beispiel Im folgenden Beispiel wird die vierte Indexposition geändert: meineList.replaceItemAt(3, "neue Bezeichnung"); List.rowCount Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.rowCount 340 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; die Anzahl der Zeilen, die in der Liste zumindest teilweise sichtbar sind. Sie ist praktisch, wenn Sie eine Liste anhand von Pixeln skaliert haben und ihre Zeilen zählen müssen. Umgekehrt können Sie durch Festlegen der Zeilenanzahl garantieren, dass eine genaue Anzahl von Zeilen angezeigt wird, ohne abgeschnittene Zeilen am unteren Rand. Der Code meineList.rowCount = num entspricht dem Code meineList.setSize(meineList.width, h) (dabei ist h die Höhe, die zur Anzeige von num Elementen benötigt wird). Der Standardwert basiert auf der Höhe der Liste, wie sie beim Authoring angegeben oder durch die Methode list.setSize() festgelegt wurde (siehe UIObject.setSize()). Beispiel Im folgenden Beispiel wird die Anzahl der sichtbaren Elemente in einer Liste festgestellt: var rowCount = meineList.rowCount; Im folgenden Beispiel wird festgelegt, dass die Liste vier Elemente anzeigen soll: meineList.rowCount = 4; Im folgenden Beispiel wird die abgeschnittene Zeile unten in der Liste entfernt, sofern eine vorhanden ist: meineList.rowCount = meineList.rowCount; Im folgenden Beispiel wird eine Liste auf die niedrigste Zeilenanzahl festgelegt, die vollständig angezeigt werden kann: meineList.rowCount = 1; trace("meineList hat "+meineList.rowCount+" Zeilen"); List.rowHeight Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.rowHeight Beschreibung Eigenschaft; die Höhe der einzelnen Zeilen in der Liste in Pixeln. Wenn Sie die Schrift einstellen, wird dadurch nicht die Größe der Zeilen an die Schrift angepasst. Deshalb stellen Sie am besten durch Einstellung der Eigenschaft rowHeight sicher, dass die Elemente vollständig angezeigt werden. Der Standardwert ist 20. Beispiel Im folgenden Beispiel werden alle Zeilen auf 30 Pixel eingestellt: meineList.rowHeight = 30; List-Komponente 341 List.scroll Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(scroll){ // Hier Code eingeben } Verwendung 2: listenerObject = new Object(); listenerObject.scroll = function(eventObject){ // Hier Code eingeben } listInstance.addEventListener("scroll", listenerObject) Ereignisobjekt Neben den Standardeigenschaften für Ereignisobjekte verfügt das scroll-Ereignis über die zusätzliche Eigenschaft direction. Hierbei handelt es sich um eine Zeichenfolge mit dem Wert horizontal oder vertical, die die Richtung des Bildlaufs angibt. Bei Instanzen der ComboBox-Komponente ist der Wert von scroll immer vertical. Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn ein Bildlauf in einer Liste durchgeführt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der List-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Listeninstanz meineList angehängt wird, sendet „_level0.meineList“ an das Bedienfeld Ausgabe: on(scroll){ trace(this); } 342 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (listInstance) setzt ein Ereignis (in diesem Fall scroll) ab, und das Ereignis wird von einer Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten ListenerObjekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird der Instanzname der Komponente, die das Ereignis change generiert hat, an das Ausgabebedienfeld gesendet: form.scroll = function(eventObj){ trace("Bildlauf in Liste"); } meineList.addEventListener("scroll", form); List.selectable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.selectable Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Liste ausgewählt werden kann (true) oder nicht (false). Der Standardwert lautet true. List.selectedIndex Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.selectedIndex List-Komponente 343 Beschreibung Eigenschaft; der ausgewählte Index einer Liste, in der nur ein Element ausgewählt werden kann. Der Wert ist undefined, wenn nichts ausgewählt ist, und entspricht dem zuletzt ausgewählten Element, wenn mehrere Auswahlen vorliegen. Wenn Sie selectedIndex einen Wert zuweisen, wird die aktuelle Auswahl aufgehoben und das angegebene Element ausgewählt. Beispiel Im folgenden Beispiel wird das Element nach dem derzeit ausgewählten Element ausgewählt. Wenn nichts ausgewählt ist, wird Element 0 folgendermaßen ausgewählt: var selIndex = meineList.selectedIndex; meineList.selectedIndex = (selIndex==undefined ? 0 : selIndex+1); Siehe auch List.selectedIndices, List.selectedItem, List.selectedItems List.selectedIndices Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.selectedIndices Beschreibung Eigenschaft; ein Array der Indizes der ausgewählten Elemente. Wenn Sie diese Eigenschaft zuweisen, wird die aktuelle Auswahl ersetzt. Wenn Sie selectedIndices auf ein Array der Länge 0 (oder undefined) einstellen, wird die aktuelle Auswahl aufgehoben. Der Wert ist undefined, wenn nichts ausgewählt wurde. Die Eigenschaft selectedIndices wird in der Reihenfolge aufgeführt, in der die Elemente ausgewählt wurden. Wenn Sie auf das zweite Element, anschließend auf das dritte Element und schließlich auf das erste Element klicken, gibt selectedIndices [1,2,0] zurück. Beispiel Im folgenden Beispiel werden die ausgewählten Indizes abgerufen: var selIndices = meineList.selectedIndices; Im folgenden Beispiel werden vier Elemente ausgewählt: var meinArray = new Array (1,4,5,7); meineList.selectedIndices = meinArray; Siehe auch List.selectedIndex, List.selectedItem, List.selectedItems 344 Kapitel 4: Komponenten-Referenz List.selectedItem Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.selectedItem Beschreibung Eigenschaft (schreibgeschützt); ein Elementobjekt in einer Liste, in der nur ein Element ausgewählt werden kann. (In einer Liste, in der mehrere Elemente ausgewählt können und auch mehrere Elemente ausgewählt sind, gibt selectedItem das Element zurück, das zuletzt ausgewählt wurde.) Wenn es keine Auswahl gibt, ist der Wert undefined. Beispiel Im folgenden Beispiel wird die ausgewählte Bezeichnung angezeigt: trace(meineList.selectedItem.label); Siehe auch List.selectedIndex, List.selectedIndices, List.selectedItems List.selectedItems Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.selectedItems Beschreibung Eigenschaft (schreibgeschützt); ein Array der ausgewählten Elementobjekte. In einer Liste, in der mehrere Elemente ausgewählt werden können, können Sie mit selectedItems auf den Satz der Elemente zugreifen, die als Elementobjekte ausgewählt wurden. Beispiel Im folgenden Beispiel wird ein Array ausgewählter Elementobjekte abgerufen: var meinObjArray = meineList.selectedItems; Siehe auch List.selectedIndex, List.selectedItem, List.selectedIndices List-Komponente 345 List.setPropertiesAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.setPropertiesAt(index, styleObj) Parameter Eine Zahl über Null oder unter List.length, die den Index des Elements angibt, das geändert werden soll. index styleObj Ein Objekt, das die einzustellenden Eigenschaften und Werte aufführt. Rückgaben Keine. Beschreibung Methode; wendet die vom Parameter styleObj angegebenen Eigenschaften auf das vom Parameter index angegebene Element an. Als Eigenschaften werden icon und backgroundColor unterstützt. Beispiel Im folgenden Beispiel wird das vierte Element schwarz gefärbt und erhält ein Symbol: meineList.setPropertiesAt(3, {backgroundColor:0x000000, icon: "Datei"}); List.sortItems() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.sortItems(compareFunc) Parameter compareFunc Eine Referenz auf eine Funktion. Mit dieser Funktion werden zwei Elemente verglichen, um ihre Sortierfolge festzustellen. Weitere Informationen finden Sie unter Array.sort() im ActionScript-Lexikon. 346 Kapitel 4: Komponenten-Referenz Rückgaben Der Index des hinzugefügten Elements. Beschreibung Methode; sortiert die Elemente in der Liste anhand des Parameters compareFunc. Beispiel Im folgenden Beispiel werden die Elemente basierend auf den mit Großbuchstaben beginnenden Bezeichnungen sortiert. Beachten Sie, dass die Parameter a und b, die an die Funktion übergeben werden, Elemente mit den Eigenschaften label und data sind: meineList.sortItems(upperCaseFunc); function upperCaseFunc(a,b){ return a.label.toUpperCase() > b.label.toUpperCase(); } Siehe auch List.sortItemsBy() List.sortItemsBy() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.sortItemsBy(fieldName, order) Parameter fieldName Ein String, der den Namen der Eigenschaft angibt, anhand derer die Sortierung durchgeführt werden soll. Normalerweise ist dieser Wert label oder data. order Ein String, der angibt, ob die Elemente in aufsteigender (ASC) oder absteigender Reihenfolge (DESC) sortiert werden sollen. Rückgaben Keine. Beschreibung Methode; sortiert die Elemente in der Liste alphabetisch oder numerisch in der angegebenen Reihenfolge anhand des angegebenen Parameters fieldName. Wenn die durch fieldName bezeichneten Elemente Textstrings und Ganzzahlen enthalten, werden die Elemente mit den Ganzzahlen zuerst aufgelistet. Der Parameter fieldName ist normalerweise label oder data, Sie können jedoch einen beliebigen Grunddatenwert angeben. List-Komponente 347 Beispiel Der folgende Code sortiert die Elemente in der Liste surnameMenu in aufsteigender Reihenfolge nach den Bezeichnungen der Listenelemente: nachnameMenue.sortItemsBy("label", "ASC"); Siehe auch List.sortItems() List.vPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.vPosition Beschreibung Eigenschaft; führt einen Bildlauf in der Liste durch, damit der Index das oberste sichtbare Element darstellt. Wenn der Index außerhalb des zulässigen Bereichs liegt, wird der nächste Index innerhalb des zulässigen Bereichs angesteuert. Der Standardwert ist 0. Beispiel Im folgenden Beispiel wird die Position der Liste auf das erste Indexelement eingestellt: meineList.vPosition = 0; List.vScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung listInstance.vScrollPolicy Beschreibung Eigenschaft; ein String, der festlegt, ob die Liste den vertikalen Bildlauf unterstützt. Diese Eigenschaft kann die folgenden Werte annehmen: on, off oder auto. Mit dem Wert auto wird die Bildlaufleiste nur bei Bedarf angezeigt. 348 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird die Bildlaufleiste deaktiviert: meineList.vScrollPolicy = "off"; Mit List.vPosition lässt sich der Bildlauf nach wie vor durchführen. Siehe auch List.vPosition Loader-Komponente Die Loader-Komponente ist ein Behälter, der eine SWF- oder JPEG-Datei anzeigen kann. Sie können den Inhalt des Loaders skalieren oder die Größe des Loaders selbst ändern, um sie an die Größe des Inhalts anzupassen. Als Standard wird der Inhalt so skaliert, dass er in den Loader passt. Sie können den Inhalt auch zur Laufzeit laden und den Ladevorgang überwachen. Die Loader-Komponente kann nicht den Fokus erhalten. Jedoch kann der Inhalt, der in der Loader-Komponente geladen ist, den Fokus annehmen und mit ihm interagieren. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Eine Live-Vorschau der einzelnen Loaderinstanzen spiegelt die Änderungen wieder, die im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring vorgenommen wurden. Inhalt, der in die Loader-Komponente geladen wird, kann für Eingabehilfen aktiviert werden. Wenn das der Fall ist, können Sie ihn mit dem Bedienfeld Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der Loader-Komponente arbeiten Sie können einen Loader immer dann verwenden, wenn Sie Inhalt von einem entfernten Speicherort abrufen und in eine Flash-Anwendung übertragen müssen. Beispielsweise können Sie mit einem Loader ein Firmenlogo (JPEG-Datei) in ein Formular einfügen. Außerdem können Sie mit einem Loader ältere Flash-Projekte wiederverwenden. Wenn Sie z. B. eine Flash-Anwendung bereits erstellt haben und sie erweitern möchten, können Sie mit dem Loader die alte Anwendung in die neue Anwendung übertragen, beispielsweise als Bereich in einer Registerkartenoberfläche. Oder Sie können die Loader-Komponente in einer Anwendung zur Fotoanzeige einsetzen. Steuern Sie mit Loader.load(), Loader.percentLoaded und Loader.complete den Zeitablauf der Bildladevorgänge und die Anzeige der Fortschrittleisten während des Ladens. Parameter der Loader-Komponente Im Folgenden sind die Authoring-Parameter aufgeführt, die Sie für die einzelnen Instanzen der Loader-Komponente im Eigenschafteninspektor oder Komponenten-Inspektor festlegen können: autoload gibt an, ob der Inhalt automatisch geladen werden soll (true), oder ob mit dem Laden gewartet werden soll, bis die Methode Loader.load() aufgerufen wird (false). Der Standardwert lautet true. Loader-Komponente 349 contentPath ist eine absolute oder relative URL, die angibt, welche Datei in den Loader geladen werden soll. Ein relativer Pfad muss relativ zu der SWF-Datei angegeben werden, in die der Inhalt geladen wird. Die URL muss sich in derselben Subdomäne befinden wie die URL, unter der der Flash-Inhalt gegenwärtig gespeichert ist. Wenn Sie den Flash Player verwenden oder im Filmtestmodus testen möchten, müssen alle SWF-Dateien im selben Ordner gespeichert sein. Die Dateinamen dürfen außerdem keine Laufwerks- und Ordnerbezeichnungen enthalten. Der Standardwert ist undefined, bis der Ladevorgang begonnen hat. scaleContent gibt an, ob der Inhalt so skaliert wird, dass er in den Loader passt (true), oder ob der Loader so skaliert wird, dass der Inhalt hineinpasst (false). Der Standardwert lautet true. Sie können zusätzliche Optionen für Loaderinstanzen mit den Methoden, Eigenschaften und Ereignissen von ActionScript festlegen. Weitere Informationen finden Sie unter Loader-Klasse. Eine Anwendung mit der Loader-Komponente erstellen Im folgenden Verfahren wird erklärt, wie Sie einer Anwendung beim Authoring die LoaderKomponente hinzufügen. In diesem Beispiel lädt der Loader eine JPEG-Logodatei aus einer imaginären URL. So erstellen Sie eine Anwendung mit der Loader-Komponente: 1 Ziehen Sie die Loader-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Wählen Sie den Loader auf der Bühne aus, und passen Sie mit dem Werkzeug Frei transformieren seine Größe an die Maße des Firmenlogos an. 3 Geben Sie im Eigenschafteninspektor den Instanznamen logo ein. 4 Wählen Sie den Loader auf der Bühne und im Bedienfeld Komponenten-Inspektor aus, und geben Sie den contentPath-Parameter http://corp.com/websites/logo/corplogo.jpg ein. Die Loader-Komponente anpassen Sie können die Loader-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()). Das Größenverhalten der Loader-Komponente wird durch die Eigenschaft scaleContent gesteuert. Wenn scaleContent = true gilt, wird der Inhalt skaliert, damit er in die Grenzen des Loaders passt (und erneut skaliert, wenn UIObject.setSize() aufgerufen wird). Wenn die Eigenschaft scaleContent = false ist, wird die Größe der Komponente auf die Größe des Inhalts fixiert, und die Methode UIObject.setSize() bleibt wirkungslos. Stile mit der Loader-Komponente verwenden Die Loader-Komponente verwendet keine Stile. 350 Kapitel 4: Komponenten-Referenz Skins mit der Loader-Komponente verwenden Die Loader-Komponente verwendet „RectBorder“, das wiederum die ActionScript-ZeichnungsAPI verwendet. Mit der Methode setStyle() (siehe UIObject.setStyle()) können Sie die folgenden RectBorder-Stileigenschaften ändern: RectBorder-Stile Buchstabe borderColor a highlightColor b borderColor c shadowColor d borderCapColor e shadowCapColor f shadowCapColor g borderCapColor h Mit den Stileigenschaften werden die folgenden Positionen für den Rand festgelegt: Loader-Klasse Vererbung UIObject > UIComponent > View > Loader ActionScript-Klassenname mx.controls.Loader Mit den Eigenschaften der Loader-Klasse können Sie angeben, welcher Inhalt geladen werden soll, und den Ladefortschritt zur Laufzeit überwachen. Wenn Sie eine Eigenschaft der Loader-Klasse mit ActionScript einstellen, werden die Parameter mit dem gleichen Namen im Eigenschafteninspektor und Komponenten-Inspektor außer Kraft gesetzt. Weitere Informationen finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.Loader.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineLoaderInstance.version); Loader-Komponente 351 Übersicht: Methoden der Loader-Klasse Methode Beschreibung Loader.load() Lädt den Inhalt, der von der Eigenschaft contentPath angegeben wird. Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der Loader-Klasse Eigenschaft Beschreibung Loader.autoLoad Ein Boolescher Wert, der angibt, ob der Inhalt automatisch geladen wird (true) oder ob Sie Loader.load() aufrufen müssen (false). Loader.bytesLoaded Eine schreibgeschützte Eigenschaft, die angibt, wie viele Byte bereits geladen wurden. Loader.bytesTotal Eine schreibgeschützte Eigenschaft, die angibt, wie viele Byte der Inhalt insgesamt umfasst. Loader.content Eine Referenz auf den Inhalt, der von der Eigenschaft Loader.contentPath angegeben wird. Diese Eigenschaft ist schreibgeschützt. Loader.contentPath Ein String, der die URL des zu ladenden Inhalts angibt. Loader.percentLoaded Eine Zahl, die angibt, wie viel Prozent des Inhalts bereits geladen wurden. Diese Eigenschaft ist schreibgeschützt. Loader.scaleContent Ein Boolescher Wert, der angibt, ob der Inhalt so skaliert wird, dass er in den Loader passt (true), oder ob der Loader so skaliert wird, dass der Inhalt hineinpasst (false). Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der Loader-Klasse Ereignis Beschreibung Loader.complete Wird ausgelöst, wenn der Inhalt fertig geladen ist. Loader.progress Wird ausgelöst, während der Inhalt geladen wird. Erbt alle Eigenschaften von UIObject und UIComponent 352 Kapitel 4: Komponenten-Referenz Loader.autoLoad Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.autoLoad Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob der Inhalt automatisch geladen wird (true) oder ob gewartet wird, bis Loader.load() aufgerufen wird (false). Der Standardwert lautet true. Beispiel Mit dem folgenden Code wird die Loader-Komponente so eingerichtet, dass sie auf einen Aufruf an Loader.load() wartet: loader.autoload = false; Loader.bytesLoaded Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.bytesLoaded Beschreibung Eigenschaft (schreibgeschützt); gibt an, wie viel Byte im Inhalt bereits geladen wurden. Der Standardwert ist 0, bis der Ladevorgang beginnt. Beispiel Mit dem folgenden Code werden eine Fortschrittleiste (ProgressBar) und die LoaderKomponente erstellt. Anschließend wird ein Listener-Objekt mit der Ereignisprozedur progress erstellt, das den Fortschritt des Ladevorgangs anzeigt. Der Listener wird bei der Instanz loader folgendermaßen registriert: createClassObject(mx.controls.ProgressBar, "pBar", 0); createClassObject(mx.controls.Loader, "loader", 1); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. der Loader. pBar.setProgress(loader.bytesLoaded, loader.bytesTotal); // zeigt den // Fortschritt } loader.addEventListener("progress", loadListener); loader.content = "logo.swf"; Loader-Komponente 353 Wenn Sie eine Instanz mit der Methode createClassObject() erstellen, müssen Sie sie mit den Methoden move() und setSize() auf der Bühne platzieren. Weitere Informationen hierzu finden Sie in den Abschnitten UIObject.move() und UIObject.setSize(). Siehe auch Loader.bytesTotal, UIObject.createClassObject() Loader.bytesTotal Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.bytesTotal Beschreibung Eigenschaft (schreibgeschützt); die Größe des Inhalts in Byte. Der Standardwert ist 0, bis der Ladevorgang beginnt. Beispiel Mit dem folgenden Code werden eine Fortschrittleiste (ProgressBar) und die LoaderKomponente erstellt. Anschließend wird ein Listener-Ladeobjekt mit der Ereignisprozedur progress erstellt, das den Fortschritt des Ladevorgangs anzeigt. Der Listener wird bei der Loaderinstanz folgendermaßen registriert: createClassObject(mx.controls.ProgressBar, "pBar", 0); createClassObject(mx.controls.Loader, "loader", 1); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. der Loader. pBar.setProgress(loader.bytesLoaded, loader.bytesTotal); // zeigt den // Fortschritt } loader.addEventListener("progress", loadListener); loader.content = "logo.swf"; Siehe auch Loader.bytesLoaded 354 Kapitel 4: Komponenten-Referenz Loader.complete Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(complete){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.complete = function(eventObject){ ... } loaderInstance.addEventListener("complete", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der Inhalt fertig geladen ist. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der Loader-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Instanz meineLoaderComponent der Loader-Komponente angehängt wird, sendet „_level0.meineLoaderComponent“ an das Bedienfeld Ausgabe: on(complete){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (loaderInstance) setzt ein Ereignis (in diesem Fall complete) ab, und das Ereignis wird von einer Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten ListenerObjekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Loader-Komponente 355 Beispiel Im folgenden Beispiel wird die Loader-Komponente erstellt und anschließend ein ListenerObjekt mit der Ereignisprozedur complete definiert, das die Eigenschaft visible des Loaders auf true einstellt: createClassObject(mx.controls.Loader, "loader", 0); loadListener = new Object(); loadListener.complete = function(eventObj){ loader.visible = true; } loader.addEventListener("complete", loadListener); loader.contentPath = "logo.swf"; Loader.content Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.content Beschreibung Eigenschaft (schreibgeschützt); eine Referenz auf den Inhalt des Loaders. Der Wert ist undefined, bis der Ladevorgang beginnt. Siehe auch Loader.contentPath Loader.contentPath Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.contentPath Beschreibung Eigenschaft; ein String, der eine absolute oder relative URL der Datei angibt, die in den Loader geladen werden soll. Ein relativer Pfad muss relativ zu der SWF-Datei angegeben werden, in die der Inhalt geladen wird. Die URL muss sich in derselben Subdomäne befinden wie die SWFDatei, in die der Inhalt geladen wird. Wenn Sie den Flash Player oder den Filmtestmodus in Flash verwenden, müssen alle SWFDateien im selben Ordner gespeichert sein. Die Dateinamen dürfen außerdem keine Laufwerksund Ordnerbezeichnungen enthalten. 356 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird die Loaderinstanz angewiesen, den Inhalt der Datei logo.swf anzuzeigen: loader.contentPath = "logo.swf"; Loader.load() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.load(path) Parameter path Ein optionaler Parameter, der den Wert für die Eigenschaft contentPath vor dem Laden angibt. Wenn Sie keinen Wert angeben, wird der aktuelle Wert von contentPath wie vorliegend verwendet. Rückgaben Keine. Beschreibung Methode; weist den Loader an, mit dem Laden des Inhalts zu beginnen. Beispiel Im folgenden Code wird eine Loaderinstanz erstellt und die Eigenschaft autoload auf false eingestellt, sodass der Loader mit dem Laden des Inhalts warten muss, bis die Methode load() aufgerufen wird. Anschließend wird load() aufgerufen und der zu ladende Inhalt angegeben: createClassObject(mx.controls.Loader, "loader", 0); loader.autoload = false; loader.load("logo.swf"); Loader.percentLoaded Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.percentLoaded Loader-Komponente 357 Beschreibung Eigenschaft (schreibgeschützt); eine Zahl, die angibt, wie viel Prozent des Inhalts bereits geladen wurden. Normalerweise dient diese Eigenschaft dazu, dem Benutzer den Fortschritt in leicht lesbarer Form anzuzeigen. Mit dem folgenden Code runden Sie die Zahl auf die nächste ganze Zahl auf: Math.round(bytesLoaded/bytesTotal*100)) Beispiel Im folgenden Beispiel werden eine Loaderinstanz und anschließend ein Listener-Objekt mit einer Prozedur progress erstellt, die anzeigt, wie viel Prozent geladen werden, und den Prozentwert an das Bedienfeld Ausgabe sendet: createClassObject(Loader, "loader", 0); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. der Loader. trace("logo.swf ist " + loader.percentLoaded + "% geladen."); // Ladevorgang // verfolgen } loader.addEventListener("complete", loadListener); loader.content = "logo.swf"; Loader.progress Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(progress){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.progress = function(eventObject){ ... } loaderInstance.addEventListener("progress", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, während der Inhalt geladen wird. Dieses Ereignis wird ausgelöst, wenn der Ladevorgang vom Parameter autoload oder durch einen Aufruf an Loader.load() ausgelöst wird. Das Ereignis progress wird nicht immer gesendet. Das Ereignis complete kann per Broadcast gesendet werden, ohne dass Ereignisse des Typs progress gesendet werden. Das kann insbesondere der Fall sein, wenn es sich beim geladenen Inhalt um eine lokale Datei handelt. 358 Kapitel 4: Komponenten-Referenz Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der Loader-Komponente angehängt werden. Das Schlüsselwort this in einer on()-Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Instanz meineLoaderComponent der Loader-Komponente angehängt wird, sendet „_level0.meineLoaderComponent“ an das Bedienfeld Ausgabe: on(progress){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (loaderInstance) setzt ein Ereignis (in diesem Fall progress) ab, und das Ereignis wird von einer Funktion (auch als Prozedur bezeichnet) des von Ihnen erstellten ListenerObjekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Code werden eine Loaderinstanz und anschließend ein Listener-Objekt mit einer Ereignisprozedur erstellt, die an das Bedienfeld Ausgabe meldet, wie viel Prozent des Inhalts geladen wurden: createClassObject(mx.controls.Loader, "loader", 0); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. der Loader. trace("logo.swf ist " + loader.percentLoaded + "% geladen."); // Ladevorgang // verfolgen } loader.addEventListener("progress", loadListener); loader.contentPath = "logo.swf"; Loader.scaleContent Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung loaderInstance.scaleContent Loader-Komponente 359 Beschreibung Eigenschaft; gibt an, ob der Inhalt so skaliert wird, dass er in den Loader passt (true), oder ob der Loader so skaliert wird, dass der Inhalt hineinpasst (false). Der Standardwert lautet true. Beispiel Der folgende Code bewirkt, dass sich der Loader in der Größe an den Inhalt anpasst: loader.stretchContent = false; Media-Komponenten (nur Flash Professional) Die Streaming-Media-Komponenten erleichtern die Integration von Streaming-Media in FlashPräsentationen. Diese Komponenten bieten Ihnen verschiedene Möglichkeiten, Ihre Medien anzuzeigen. Die folgenden drei Media-Komponenten sind verfügbar: • Mit der MediaDisplay-Komponente können Medien ohne unterstützende Benutzeroberfläche • • in Flash-Inhalte gestreamt werden. Diese Komponente eignet sich für Video- und Audiodaten. Die Anwendungsbenutzer haben keine Kontrolle über die Medien, wenn die MediaDisplayKomponente allein eingesetzt wird. Die MediaController-Komponente ergänzt die MediaDisplay-Komponente durch eine Benutzeroberfläche, die gängige Steuerelemente für die Medienwiedergabe enthält (z. B. Abspielen, Pause). Die Medien werden zu keinem Zeitpunkt in den MediaController geladen oder von diesem abgespielt. Der MediaController dient ausschließlich zur Steuerung der Wiedergabe in einer MediaPlayback- oder MediaDisplay-Instanz. Zu den Funktionen der MediaController-Komponente gehört eine „Schublade“, d. h. wenn die Maus sich über der Komponente befindet, wird der Inhalt der Wiedergabesteuerungen verfügbar. Die MediaPlayback-Komponente stellt eine Kombination der MediaDisplay-Komponente und der MediaController-Komponente dar und liefert Methoden zum Streamen von Medieninhalten. Beachten Sie hinsichtlich Media-Komponenten Folgendes: • Für die Media-Komponenten benötigen Sie mindestens Flash Player 7. • Die Media-Komponenten bieten keine Unterstützung für Suchläufe. Sie können diese • • 360 Funktionalität aber durch Bewegen des Wiedergabereglers erzielen. In der Live-Vorschau werden nur die Komponentengröße und die Controller-Richtlinien wiedergegeben. Die Media-Komponenten bieten keine Unterstützung für Eingabehilfen. Kapitel 4: Komponenten-Referenz Mit Media-Komponenten arbeiten (nur Flash Professional) Die MediaPlayback-Komponente und die MediaController-Komponente reagieren auf Mausund Tastaturaktivitäten. Die MediaDisplay-Komponente reagiert weder auf Tastatur- noch auf Mausereignisse. Die folgende Tabelle gibt Ihnen einen Überblick darüber, welche Aktionen durchgeführt werden können, wenn die MediaPlayback-Komponente und die MediaControllerKomponente den Fokus erhalten: Ziel Navigation Beschreibung Wiedergabesteuerungen Maus über eines Controllers Steuerung bewegen Schaltfläche wird hervorgehoben. Wiedergabesteuerungen Einzelner Klick eines Controllers mit linker Maustaste Die Benutzer können mit Hilfe der Wiedergabesteuerungen eines Controllers auf die Wiedergabe der Audio- und Videomedien Einfluss nehmen, indem sie auf die Steuerungen klicken und so die zugehörigen Reaktionen auslösen. Die Schaltflächen Pause/Abspielen und Zum Anfang/Zum Ende verhalten sich der Norm entsprechend. Beim Drücken der Maustaste wird die Schaltfläche auf dem Bildschirm in ihrem gedrückten Zustand hervorgehoben; beim Loslassen der Maustaste wird die Schaltfläche in ihren ursprünglichen, d. h. nicht ausgewählten, Zustand zurückversetzt. Die Schaltfläche Zum Ende ist bei der Wiedergabe von FLV-Mediendateien deaktiviert. Reglersteuerungen eines Regler vor- und Anhand des Wiedergabereglers lässt sich feststellen, Controllers zurückschieben an welcher Stelle der Benutzer sich in dem Medieninhalt befindet. Der Anzeigegriff bewegt sich in horizontaler Richtung (Standardeinstellung) vom Anfang (links) bis zum Ende (rechts) der Medienwiedergabe. Wenn die Steuerungen vertikal ausgerichtet sind, bewegt sich der Wiedergaberegler von unten nach oben. Während der Bewegung des Anzeigegriffs von links nach rechts werden alle Abschnitte links des Griffs hervorgehoben. Dies bedeutet, dass der zugehörige Inhalt bereits wiedergegeben bzw. ausgewählt wurde. Die Abschnitte rechts des Anzeigegriffs werden nicht hervorgehoben, bis der Griff sich über sie bewegt. Der Benutzer kann den Anzeigegriff ziehen, um die Stelle, von der aus die Wiedergabe der Medieninhalte erfolgt, zu ändern. Die Medienwiedergabe beginnt automatisch an der Stelle, an der die Maus gelassen wird, sofern die Medienwiedergabe bereits gestartet wurde. Wurde die Medienwiedergabe angehalten, kann der Regler zwar auch verschoben und losgelassen werden, aber die Wiedergabe bleibt angehalten. Es gibt auch einen Lautstärkeregler, der sowohl in horizontalen als auch vertikalen Layouts von links (stumm) nach rechts (volle Lautstärke) bewegt werden kann. Media-Komponenten (nur Flash Professional) 361 Ziel Navigation Beschreibung Navigation im Wiedergabe-Controller <Tab>, <Umschalt>+ <Tab> Bewegt den Fokus innerhalb der ControllerKomponente von einer Schaltfläche zur nächsten, wobei das ausgewählte Element jeweils hervorgehoben wird. Diese Art der Navigation funktioniert bei den Steuerungen Pause/Abspielen, Zum Anfang, Zum Ende, Lautstärke aus und Volle Lautstärke. Mit der Taste <Tab> lässt sich der Fokus von links nach rechts und von oben nach unten bewegen. Mit <Umschalt>+<Tab> lässt sich der Fokus von rechts nach links und von unten nach oben bewegen. Wenn die Steuerung über die Taste <Tab> den Fokus erhält, wird der Fokus sofort an die Schaltfläche Abspielen/Pause weitergegeben. Befindet der Fokus sich bei der Schaltfläche Volle Lautstärke und die Taste <Tab> wird gedrückt, wird der Fokus an die nächste Steuerung in der Reihenfolgenposition auf der Bühne weitergegeben. Eine Steuerungsschaltfläche <Leertaste> oder Wählt das Element im Fokus aus. Beim Drücken wird <Eingabe> die Schaltfläche in ihrem gedrückten Zustand angezeigt. Beim Loslassen wird die Schaltfläche in ihren ausgewählten Mouse-Over-Zustand zurückversetzt. Media-Komponenten (nur Flash Professional) Bevor Sie Media-Komponenten einsetzen, sollten Sie sich mit ihrer Funktionsweise vertraut machen. Details hierzu finden Sie in diesem Abschnitt. Die meisten der genannten Eigenschaften können direkt im Bedienfeld Komponenten-Inspektor eingestellt werden. Weitere Informationen hierzu finden Sie unter „Bedienfeld „Komponenten-Inspektor“ bei MedienKomponenten verwenden“ auf Seite 368. Abgesehen von den Layouteigenschaften, die weiter hinten in diesem Abschnitt behandelt werden, können für die MediaDisplay-Komponente und die MediaPlayback-Komponente die folgenden Eigenschaften eingestellt werden: • Der Medientyp, d. h. MP3 oder FLV (siehe Media.mediaType und Media.setMedia()). • Der relative oder absolute Inhaltspfad, der die zu streamende Mediendatei enthält (siehe Media.contentPath). • Cue-Point-Objekte, einschließlich der zugehörigen Namen, Zeitangabe- und PlayerEigenschaften (siehe Media.addCuePoint() und Media.cuePoints). Für den Cue-Point kann ein beliebiger Name ausgewählt werden; wählen Sie einen prägnanten Namen, wenn Sie Listener- und Trace-Ereignisse verwenden. Ein Cue-Point gibt ein Ereignis des Typs cuePoint über eine Broadcastübertragung weiter, wenn der Wert seiner Zeitangabe-Eigenschaft mit der Position des Abspielkopfes der zugehörigen MediaPlayback-Komponente bzw. MediaDisplayKomponente übereinstimmt. Bei der Player-Eigenschaft handelt es sich um einen Verweis auf die MediaPlayback-Instanz, mit der sie verknüpft ist. Cue-Points können später mit Hilfe von Media.removeCuePoint() und Media.removeAllCuePoints() entfernt werden. 362 Kapitel 4: Komponenten-Referenz Die Streaming-Media-Komponenten geben eine Reihe einander ergänzender Ereignisse über eine Broadcastübertragung weiter. Mit den folgenden Broadcast-Ereignissen können andere Elemente in Bewegung gesetzt werden: • Ein change-Ereignis wird von der MediaDisplay-Komponente und der MediaPlayback- • • • • Komponente während der Medienwiedergabe ununterbrochen über eine Broadcastübertragung weitergegeben. (Weitere Informationen finden Sie unter Media.change.) Ein progress-Ereignis wird von der MediaDisplay-Komponente und der MediaPlaybackKomponente während des Ladens der Medien ununterbrochen über eine Broadcastübertragung weitergegeben. (Weitere Informationen finden Sie unter Media.progress.) Ein click-Ereignis wird von der MediaController-Komponente und der MediaPlaybackKomponente bei jedem Klick auf die Schaltfläche Pause/Abspielen über eine Broadcastübertragung weitergegeben. In diesem Fall liefert die detail-Eigenschaft des Ereignisobjekts Informationen darüber, auf welche Schaltfläche geklickt wurde. (Weitere Informationen finden Sie unter Media.click.) Ein volume-Ereignis wird von der MediaController-Komponente und der MediaPlaybackKomponente über eine Broadcastübertragung weitergegeben, wenn der Benutzer die Einstellung der Lautstärkeregler ändert. (Weitere Informationen finden Sie unter Media.volume.) Ein playheadChange-Ereignis wird von der MediaController-Komponente und der MediaPlayback-Komponente über eine Broadcastübertragung weitergegeben, wenn der Benutzer den Wiedergaberegler bewegt. (Weitere Informationen finden Sie unter Media.playheadChange.) Die MediaDisplay-Komponente und die MediaController-Komponente lassen sich miteinander kombinieren. Ihr Verhalten ist mit der MediaPlayback-Komponente vergleichbar, aber sie bieten hinsichtlich des Layouts eine größere Flexibilität. Wenn Sie also bei der Präsentation Ihrer Medien flexible Gestaltungsmöglichkeiten wünschen, setzen Sie die MediaDisplay-Komponente und die MediaController-Komponente ein. Anderenfalls liefert die MediaPlayback-Komponente optimale Ergebnisse. MediaDisplay-Komponente Wenn Sie eine MediaDisplay-Komponente auf der Bühne platzieren, wird sie ohne sichtbare Benutzeroberfläche gezeichnet. Sie ist einfach ein Behälter zur Ablage und Wiedergabe von Medien. Wie Videomedien aussehen, die in einer MediaDisplay-Komponente abgespielt werden, hängt von den folgenden Eigenschaften ab: • Media.aspectRatio • Media.autoSize • Höhe • Breite Hinweis: Der Benutzer kann nichts sehen, es sei denn, es werden Medien abgespielt. Die Media.aspectRatio-Eigenschaft hat vor den anderen Eigenschaften Vorrang. Wenn Media.aspectRatio den Wert true hat (Standardwert), passt die Komponente stets die Größe der abgespielten Medien an, nachdem die Komponentengröße festgelegt wurde, damit das Seitenverhältnis der Medien erhalten bleibt. Media-Komponenten (nur Flash Professional) 363 Wenn der Wert für Media.autoSize bei FLV-Dateien true lautet, werden die abzuspielenden Medien unabhängig von der Komponentengröße in ihrer bevorzugten Größe wiedergegeben. Sollte die MediaDisplay-Instanz also nicht dieselbe Größe wie die Medien haben, erstrecken die Medien sich über die Instanzbegrenzungen hinaus bzw. füllen diese nicht ganz aus. Wenn Media.autoSize den Wert false hat, wird die Instanzgröße so weit wie möglich genutzt, und das Seitenverhältnis bleibt erhalten. Wenn der Wert sowohl für Media.autoSize als auch für Media.aspectRatio false lautet, wird die exakte Größe der Komponente verwendet. Hinweis: Da MP3-Dateien keine Bilder enthalten, zeigt die Einstellung Media.autoSize hier keine Wirkung. Bei MP3-Dateien beträgt die kleinstmögliche Größe 60 x 256 Pixel (Höhe x Breite) in der Standardausrichtung. Die MediaDisplay-Komponente unterstützt auch die Eigenschaft Media.volume. Dieser Eigenschaft können Ganzzahlwerte von 0 bis 100 zugewiesen werden. Bei dem Wert 0 ist die Lautstärke deaktiviert, und bei dem Wert 100 werden Medien in voller Lautstärke wiedergegeben. Die Standardeinstellung ist 75. MediaController-Komponente Das Aussehen der Benutzeroberfläche der MediaController-Komponente hängt von den Eigenschaften Media.controllerPolicy und Media.backgroundStyle ab. Die Eigenschaft Media.controllerPolicy bestimmt, ob der Mediensteuerungssatz immer eingeblendet, immer ausgeblendet oder nur sichtbar ist, wenn die Maus sich über dem Steuerungsteil der Komponente befindet. Im ausgeblendeten Zustand zeigt der Controller eine modifizierte Fortschrittleiste an, bei der es sich um eine kombinierte Lade- und Wiedergabeleiste handelt. Im unteren Bereich der Leiste wird der Fortschritt der geladenen Daten angezeigt und direkt darüber der Fortschritt des Abspielkopfes. Im eingeblendeten Zustand wird eine umfangreichere Version der kombinierten Lade-/Wiedergabeleiste mit den folgenden Elementen angezeigt: • Text auf der linken Seite gibt den Wiedergabestatus an (Streaming oder Pause) und Text auf der rechten Seite die Position des Abspielkopfes in Sekunden • Position des Abspielkopfes • Ein Regler, der gezogen werden kann, um durch die Medien zu navigieren Die folgenden Elemente werden ebenfalls mit der MediaController-Komponente bereitgestellt: • Schaltfläche Abspielen/Pause • Die Schaltflächengruppe Zum Anfang/Zum Ende, die zur Navigation zum Anfang bzw. Ende der Medien dienen • Eine Lautstärkesteuerung, die sich aus einem Regler, einer Schaltfläche zur Deaktivierung der Lautstärke sowie einer Schaltfläche zur Aktivierung der vollen Lautstärke zusammensetzt Sowohl im ausgeblendeten als auch im eingeblendeten Zustand der MediaControllerKomponente wird die Eigenschaft Media.backgroundStyle eingesetzt. Diese Eigenschaft bestimmt, ob der Controller mit einem Farbhintergrund versehen wird (Standardeinstellung) oder ob der Filmhintergrund hinter den Steuerungen erscheint. Die MediaController-Komponente hat eine Ausrichtungseinstellung, Media.horizontal, mit deren Hilfe die Komponente in horizontaler (Standardeinstellung) bzw. vertikaler Ausrichtung dargestellt werden kann. Bei der horizontalen Ausrichtung bewegt sich die Wiedergabeleiste bei der Medienwiedergabe von links nach rechts. Bei der vertikalen Ausrichtung bewegt sich die Wiedergabeleiste bei der Medienwiedergabe von unten nach oben. 364 Kapitel 4: Komponenten-Referenz Die MediaDisplay-Komponente und die MediaController-Komponente können über die Methoden Media.associateDisplay() und Media.associateController() miteinander verknüpft werden. Wenn diese Methoden aufgerufen werden, kann die MediaController-Instanz ihre Steuerungen anhand von Ereignissen aktualisieren, die von der MediaDisplay-Instanz übertragen werden, und die MediaDisplay-Komponente kann auf die Einstellung reagieren, die der Benutzer über den MediaController vornimmt. MediaPlayback-Komponente Die MediaPlayback-Komponente stellt eine Kombination der MediaController- und MediaDisplay-Steuerungen dar. Beide Unterkomponenten sind in der MediaPlaybackKomponente enthalten. Die MediaController- und MediaDisplay-Bestandteile werden stets an die Größe der MediaPlayback-Komponenteninstanz angepasst. Die MediaPlayback-Komponente bestimmt das Layout der Steuerungen anhand von Media.controlPlacement. Die Platzierungsoptionen für die Steuerungen lauten top, bottom, left und right und geben an, wo die Steuerungen im Verhältnis zur Anzeige dargestellt werden. Bei dem Wert right wird eine Steuerung beispielsweise vertikal ausgerichtet und rechts neben der Anzeige platziert. Media-Komponenten verwenden (nur Flash Professional) Bei der Bereitstellung von Informationen über das Internet spielen Medien eine immer größere Rolle. Viele Anbieter sind daher daran interessiert, den Webbenutzern eine Methode zu bieten, mit deren Hilfe sie die Medien streamen und dann steuern können. Media-Komponenten können beispielsweise in den folgenden Szenarios eingesetzt werden: • • • • Unternehmenspräsentation anhand von Medien Streamen von Filmen oder einer Filmvorschau Streamen von Musiktiteln oder Auszügen Bereitstellen von Lehrmaterial in Form von Medien MediaPlayback-Komponente verwenden Nehmen wir einmal an, Sie müssen für Ihre Kunden eine Website entwickeln, auf der WebsiteBesucher sich in einer Rich Media-Umgebung eine Vorschau der DVDs und CDs ansehen können, die Sie zum Kauf anbieten. Im nachfolgenden Beispiel werden die hierzu erforderlichen Schritte erläutert. Dabei wird davon ausgegangen, dass Ihre Website für die Aufnahme von Streaming-Komponenten bereit ist. So erstellen Sie ein Flash-Dokument, das eine CD- oder DVD-Vorschau anzeigt: 1 Wählen Sie in Flash Datei > Neu und dann Flash-Dokument. 2 Öffnen Sie das Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > Komponenten), und doppelklicken Sie auf die MediaPlayback-Komponente. Dadurch wird eine Instanz der Komponente auf der Bühne platziert. 3 Wählen Sie die Instanz der MediaPlayback-Komponente aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinMedia ein. 4 Wählen Sie im Bedienfeld Komponenten-Inspektor (Fenster > Entwicklungs-Bedienfelder > Komponenten-Inspektor) den zu streamenden Medientyp (MP3 oder FLV) aus. Media-Komponenten (nur Flash Professional) 365 5 Wenn Sie den Typ FLV auswählen, müssen Sie die Dauer des Videos in die Textfelder Video Length (Videolänge) im Format HH:MM:SS eingeben. 6 Geben Sie den Speicherort der Videovorschau im Textfeld URL an. Beispiel: http://mein.web.com/Videovorschau/Filmname.flv. 7 Legen Sie die gewünschten Optionen für die Kontrollkästchen Automatically Play (Automatisch abspielen), Use Preferred Media Size (Bevorzugte Mediengröße verwenden) und Respect Aspect Ratio (Seitenverhältnis beibehalten) fest. 8 Geben Sie an, wo die Steuerung in der MediaPlayback-Komponente platziert werden soll. 9 Fügen Sie gegen Ende der Medien einen Cue-Point ein, der mit einem Listener verbunden wird, um den Benutzer über ein Popupfenster darauf hinzuweisen, dass er den Film kaufen kann. Geben Sie dem Cue-Point den Namen cuePointName, und platzieren Sie ihn kurz (d. h. wenige Sekunden) vor dem Ende des Clips. Führen Sie hierzu folgende Schritte aus: a Doppelklicken Sie auf eine Window-Komponente, damit sie auf der Bühne angezeigt wird. b Löschen Sie die Window-Komponente. Dadurch wird ein Element namens Window in die Bibliothek eingefügt. c Erstellen Sie ein Textfeld, und geben Sie Text ein, der den Benutzer darauf hinweist, dass er den Film kaufen kann. d Konvertieren Sie dieses Textfeld mit Modifizieren > In Symbol konvertieren in einen Movieclip, und geben Sie dem Clip den Namen meinSale_mc. e Klicken Sie in der Bibliothek mit der rechten Maustaste auf den Movieclip meinSale_mc, wählen Sie Verknüpfung und dann die Option Export für ActionScript. Der Movieclip wird dadurch in Ihre Laufzeitbibliothek eingefügt. 366 Kapitel 4: Komponenten-Referenz 10 Fügen Sie Bild 1 den folgenden ActionScript-Code hinzu. Mit diesem Code wird ein Listener erstellt, der den Benutzer über ein Popupfenster darauf hinweist, dass er den Film kaufen kann. // Importiert die Klassen, die zum dynamischen Erstellen des Popupfensters // erforderlich sind import mx.containers.Window; import mx.managers.PopUpManager; // Erstellt ein Listener-Objekt, das das Popupfenster mit den // Verkaufsdetails einblendet var saleListener = new Object(); saleListener.cuePoint = function(evt){ var saleWin = PopUpManager.createPopUp(_root, Window, false, {closeButton: true, title: "Filmverkauf ", contentPath: "meinSale_mc"}); // Vergrößert das Fenster, damit der Inhalt hineinpasst saleWin.setSize(80, 80); var delSaleWin = new Object(); delSaleWin.click = function(evt){ saleWin.deletePopUp(); } saleWin.addEventListener("click", delSaleWin); } meinMedia.addEventListener("cuePoint", saleListener); MediaDisplay-Komponente und MediaController-Komponente verwenden Nehmen wir einmal an, Sie möchten den Stil und das Aussehen Ihrer Medienanzeige stärker beeinflussen. Sie müssen in diesem Fall die MediaDisplay-Komponente und die MediaController-Komponente miteinander kombinieren, um das gewünschte Ergebnis zu erzielen. Im folgenden Beispiel, das eine Abwandlung des vorigen Beispiels darstellt, erfahren Sie, wie Sie eine Flash-Anwendung erstellen, die Ihre CD- und DVD-Vorschaumedien anzeigt. So erstellen Sie ein Flash-Dokument, das eine CD- oder DVD-Vorschau anzeigt: 1 Wählen Sie in Flash Datei > Neu und dann Flash-Dokument. 2 Doppelklicken Sie im Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > 3 4 5 6 7 Komponenten) auf die MediaController-Komponente und die MediaDisplay-Komponente. Dadurch wird eine Instanz jeder Komponente auf der Bühne platziert. Wählen Sie die Instanz der MediaDisplay-Komponente aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinDisplay ein. Wählen Sie die Instanz der MediaController-Komponente aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinController ein. Starten Sie das Bedienfeld Komponenten-Inspektor über den Eigenschafteninspektor, und wählen Sie den zu streamenden Medientyp (MP3 oder FLV) aus. Wenn Sie den Typ FLV auswählen, müssen Sie die Dauer des Videos in die Textfelder Video Length (Videolänge) im Format HH:MM:SS eingeben. Geben Sie den Speicherort der Videovorschau im Textfeld URL an. Beispiel: http://mein.web.com/Videovorschau/Filmname.flv. Media-Komponenten (nur Flash Professional) 367 8 Legen Sie die gewünschten Optionen für die Kontrollkästchen Automatically Play (Automatisch abspielen), Use Preferred Media Size (Bevorzugte Mediengröße verwenden) und Respect Aspect Ratio (Seitenverhältnis beibehalten) fest. 9 Wählen Sie die MediaController-Instanz aus. Legen Sie dann im Bedienfeld KomponentenInspektor eine vertikale Ausrichtung fest, indem Sie der Eigenschaft horizontal den Wert false zuordnen. 10 Wählen Sie im Bedienfeld Komponenten-Inspektor für backgroundStyle die Option none. Dadurch wird die MediaController-Instanz angewiesen, keinen Hintergrund zu zeichnen, sondern die Medien zwischen den Steuerungen auszufüllen. 11 Verknüpfen Sie die MediaController-Instanz und die MediaDisplay-Instanz mit Hilfe eines Verhaltens, sodass die MediaController-Instanz die Bewegung des Abspielkopfes und andere Einstellungen der MediaDisplay-Instanz korrekt widerspiegelt und die MediaDisplay-Instanz auf Mausklicks reagiert: a Wählen Sie die MediaDisplay-Instanz aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinMediaDisplay ein. b Wählen Sie die MediaController-Instanz aus, die das Verhalten auslöst. c Öffnen Sie das Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten), klicken Sie dort auf die Schaltfläche Hinzufügen (+), und wählen Sie Medien > Anzeige verknüpfen. d Wählen Sie im Fenster Anzeige verknüpfen unter _root meinMediaDisplay aus, und klicken Sie auf OK. Weitere Informationen zum Einsatz von Verhalten bei Media-Komponenten finden Sie unter „Media-Komponenten mittels Verhalten steuern“ auf Seite 369. Bedienfeld „Komponenten-Inspektor“ bei Medien-Komponenten verwenden Mit dem Bedienfeld Komponenten-Inspektor lassen sich u. a. Parameter und Eigenschaften für Media-Komponenten mühelos einstellen. Um dieses Bedienfeld anzuzeigen, klicken Sie auf der Bühne auf die gewünschte Komponente und dann im geöffneten Eigenschafteninspektor auf Komponenten-Inspektor starten. Das Bedienfeld Komponenten-Inspektor eignet sich für folgende Zwecke: • Medien automatisch abspielen (siehe Media.activePlayControl und Media.autoPlay) • Seitenverhältnis der Medien erhalten oder ignorieren (siehe Media.aspectRatio) • Automatische Anpassung der Mediengröße an die Komponenten-Instanz aktivieren oder • • • • • • • • 368 deaktivieren (siehe Media.autoSize) Farbhintergrund aktivieren oder deaktivieren (siehe Media.backgroundStyle) Pfad zu den Medien in Form einer URL festlegen (siehe Media.contentPath) Sichtbarkeit der Wiedergabesteuerungen festlegen (siehe Media.controllerPolicy) Cue-Point-Objekte hinzufügen (siehe Media.addCuePoint()) Cue-Point-Objekte löschen (siehe Media.removeCuePoint()) Ausrichtung von MediaController-Instanzen festlegen (siehe Media.horizontal) Typ der abgespielten Medien festlegen (siehe Media.setMedia()) Wiedergabedauer von FLV-Medien festlegen (siehe Media.totalTime) Kapitel 4: Komponenten-Referenz • Die letzten Ziffern der Zeitanzeige auf Millisekunden oder Bilder pro Sekunde (FPS, Frames per Second) einstellen Bei der Arbeit mit dem Bedienfeld Komponenten-Inspektor beachten Sie bitte Folgendes: • Bei dem Videotyp MP3 wird die Zeitangabesteuerung entfernt, da diese Informationen bei • MP3-Dateien automatisch eingelesen werden. Bei FLV-Dateien müssen Sie die Gesamtdauer der Medien (Media.totalTime) eingeben, damit die Wiedergabeleiste der MediaPlaybackKomponente (bzw. einer verbundenen MediaController-Komponente) den Wiedergabestatus korrekt widerspiegeln kann. Bei dem Dateityp FLV wird die Option Milliseconds (Millisekunden) angezeigt. Falls diese nicht aktiviert wurde, wird das Popupmenü FPS (Frames per Second; Bilder pro Sekunde) verfügbar. Wenn die Option Milliseconds (Millisekunden) aktiviert ist, wird die FPSSteuerung nicht angezeigt. In diesem Modus wird die in der Wiedergabeleiste zur Laufzeit angezeigte Zeit im Format HH:MM:SS.mmm (H = Stunde, M = Minuten, S = Sekunden, m = Millisekunden) angegeben, und Cue-Points werden in der Einheit Sekunden definiert. Wenn Milliseconds (Millisekunden) deaktiviert ist, wird die FPS-Steuerung aktiviert. Die auf der Wiedergabeleiste angezeigte Zeit wird im Format HH:MM:SS.FF (F = Frames per Second oder Bilder pro Sekunde) angegeben, und Cue-Points werden in der Einheit Bilder definiert. Hinweis: Die FPS-Eigenschaft kann nur über das Bedienfeld Komponenten-Inspektor eingestellt werden. Ein mit Hilfe von ActionScript festgelegter FPS-Wert ist wirkungslos und wird ignoriert. Media-Komponenten mittels Verhalten steuern Verhalten sind vorgefertigte ActionScript-Skripts, die Sie Objektinstanzen wie beispielsweise MediaDisplay-Komponenten zuweisen können. Auf diese Weise profitieren Sie von der Leistungsfähigkeit und den umfassenden Steuerungsmöglichkeiten von ActionScript, ohne selbst programmieren zu müssen. Um eine Media-Komponente mit Hilfe eines Verhaltens zu steuern, müssen Sie das gewünschte Verhalten über das Bedienfeld Verhalten einer Media-Komponenteninstanz zuweisen. Dazu müssen Sie zuerst das Ereignis angeben, das das Verhalten auslöst (z. B. das Erreichen eines bestimmten Cue-Points), dann ein Zielobjekt auswählen (die Media-Komponenten, auf die sich das Verhalten auswirkt) und bei Bedarf Einstellungen für das Verhalten vornehmen (z. B. der Movieclip innerhalb der Medien, der angezeigt werden soll). Die folgenden Verhalten sind in Flash MX Professional 2004 bereits enthalten und dienen zur Steuerung eingebetteter Media-Komponenten: Verhalten Funktion Parameter Controller verknüpfen Verknüpft eine MediaControllerKomponente mit einer MediaDisplayKomponente Instanzname der MediaControllerZielkomponenten Anzeige verknüpfen Verknüpft eine MediaDisplayKomponente mit einer MediaControllerKomponente Instanzname der MediaControllerZielkomponenten Media-Komponenten (nur Flash Professional) 369 Verhalten Funktion Parameter CuePointNavigation für benanntes Bild Name des Bildes und Name des Platziert eine Aktion auf einer Cue-Points (die Namen sollten MediaDisplay- bzw. MediaPlaybackInstanz, die einen angegebenen Movieclip identisch sein) anweist, zu einem Bild zu navigieren, dessen Name mit dem Namen eines bestimmten Cue-Points übereinstimmt CuePointWeist ein folienbasiertes Flash-Dokument Name der Folie und Name des Cue-Points (die Namen sollten Navigation für Folien an, zu einer Folie zu navigieren, deren Namen mit dem Namen eines bestimmten identisch sein) Cue-Points übereinstimmt So verknüpfen Sie eine MediaDisplay-Komponente mit einer MediaControllerKomponente: 1 Platzieren Sie eine MediaDisplay-Instanz und eine MediaController-Instanz auf der Bühne. 2 Wählen Sie die MediaDisplay-Instanz aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinMediaDisplay ein. 3 Wählen Sie die MediaController-Instanz aus, die das Verhalten auslöst. 4 Öffnen Sie das Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten), klicken Sie dort auf die Schaltfläche Hinzufügen (+), und wählen Sie Medien > Anzeige verknüpfen. 5 Wählen Sie im Fenster Anzeige verknüpfen unter _root meinMediaDisplay aus, und klicken Sie auf OK. Hinweis: Wenn Sie die MediaDisplay-Komponente mit der MediaController-Komponente verknüpft haben, ist es nicht notwendig, die MediaController-Komponente mit der MediaDisplayKomponente zu verknüpfen. So verknüpfen Sie eine MediaController-Komponente mit einer MediaDisplayKomponente: 1 Platzieren Sie eine MediaDisplay-Instanz und eine MediaController-Instanz auf der Bühne. 2 Wählen Sie die MediaController-Instanz aus, und geben Sie im Eigenschafteninspektor den Instanznamen meinMediaController ein. 3 Wählen Sie die MediaDisplay-Instanz aus, die das Verhalten auslösen soll. 4 Öffnen Sie das Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten), klicken Sie dort auf die Schaltfläche Hinzufügen (+), und wählen Sie Medien > Controller verknüpfen. 5 Wählen Sie im Fenster Controller verknüpfen unter _root meinMediaController aus, und klicken Sie auf OK. So verwenden Sie das Verhalten „CuePoint-Navigation für benanntes Bild“: 1 Platzieren Sie eine MediaDisplay- oder MediaPlayback-Komponenteninstanz auf der Bühne. 2 Wählen Sie das Bild aus, zu dem die Medien navigieren sollen, und geben Sie im Eigenschafteninspektor den Bildnamen meinLabeledFrame ein. 3 Wählen Sie die MediaDisplay- oder MediaPlayback-Instanz aus. 4 Klicken Sie im Bedienfeld Komponenten-Inspektor auf die Schaltfläche Hinzufügen (+), geben Sie die Cue-Point-Zeiten im Format HH:MM:SS:mmm oder HH:MM:SS:FF ein, und geben Sie dem Cue-Point den Namen meinLabeledFrame. 370 Kapitel 4: Komponenten-Referenz Der Cue-Point gibt an, wie viel Zeit vergehen soll, bevor zum ausgewählten Bild gesprungen wird. Wenn Sie beispielsweise nach 5 Sekunden zum Bild meinLabeledFrame springen möchten, geben Sie im Textfeld SS den Wert 5 und im Textfeld Name meinLabeledFrame ein. 5 Öffnen Sie das Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten). Klicken Sie auf die Schaltfläche Hinzufügen (+), und wählen Sie Medien > CuePointNavigation für benanntes Bild. 6 Wählen Sie im Fenster CuePoint-Navigation für benanntes Bild den Clip _root aus, und klicken Sie auf OK. So verwenden Sie das Verhalten „CuePoint-Navigation für Folie“: 1 Öffnen Sie das neue Dokument als Flash-Folienpräsentation. 2 Platzieren Sie eine MediaDisplay- oder MediaPlayback-Komponenteninstanz auf der Bühne. 3 Klicken Sie im Übersichtsfenster links von der Bühne auf die Schaltfläche Bildschirm einfügen 4 5 6 7 (+), um eine zweite Folie hinzuzufügen. Wählen Sie dann die zweite Folie aus, und benennen Sie sie in meineSlide um. Wählen Sie die MediaDisplay- oder MediaController-Instanz aus. Klicken Sie im Bedienfeld Komponenten-Inspektor auf die Schaltfläche Hinzufügen (+), und geben Sie die Cue-Point-Zeit im Format HH:MM:SS:mmm bzw. HH:MM:SS:FF ein. Geben Sie dem Cue-Point dann den Namen MeineSlide. Der Cue-Point gibt an, wie viel Zeit vergehen soll, bevor zur ausgewählten Folie gesprungen wird. Wenn Sie beispielsweise nach 5 Sekunden zur Folie meineSlide springen möchten, geben Sie im Textfeld SS den Wert 5 und im Textfeld Name meineSlide ein. Öffnen Sie das Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten). Klicken Sie auf die Schaltfläche Hinzufügen (+), und wählen Sie Medien > CuePointNavigation für Folie. Wählen Sie im Fenster CuePoint-Navigation für Folie unter dem Clip _root die Option Präsentation aus, und klicken Sie auf OK. Parameter der Media-Komponente (nur Flash Professional) Die folgenden Tabellen enthalten Authoring-Parameter, die Sie im Eigenschafteninspektor für eine Media-Komponenteninstanz setzen können: Parameter der MediaDisplay-Komponente Name Typ Standardwert Beschreibung Automatically Play (Automatisch abspielen, Media.autoPlay) Boolean Ausgewählt Legt fest, ob die Medienwiedergabe sofort nach dem Laden beginnt. Use Preferred Media Size Boolean Ausgewählt (Bevorzugte Mediengröße verwenden, Media.autoSize) Legt fest, ob die mit der MediaDisplayInstanz verknüpfte Mediendatei der Komponentengröße entspricht oder ob einfach die Standardgröße verwendet wird. FPS Gibt die Zahl der Bilder pro Sekunde (Frames per Second) an. Wenn die Option Milliseconds (Millisekunden) ausgewählt ist, ist dieses Steuerelement deaktiviert. Integer 30 Media-Komponenten (nur Flash Professional) 371 Name Typ Standardwert Beschreibung Cue-Points (Media.cuePoints) Array Nicht definiert Ein Array mit Cue-Point-Objekten, jeweils mit einem Namen und einer gültigen Zeitangabe im Format HH:MM:SS:mmm (Option Milliseconds (Millisekunden) ausgewählt) oder HH:MM:SS:FF. FLV oder MP3 (Media.mediaType) „FLV“ oder „MP3“ „FLV“ Gibt den wiederzugebenden Medientyp an. Milliseconds (Millisekunden) Boolean Nicht ausgewählt Legt fest, ob die Wiedergabeleiste Bilder oder Millisekunden verwendet und ob CuePoints in Sekunden oder Bildern angeben werden. Wenn diese Option ausgewählt ist, wird das FPS-Steuerelement nicht angezeigt. URL (Media.contentPath) String Nicht definiert Ein String mit dem Pfad und dem Dateinamen der wiederzugebenden Mediendatei. Nicht definiert Die zur Wiedergabe der FLV-Datei erforderliche Gesamtzeit. Diese Einstellung ist erforderlich, damit die Wiedergabeleiste korrekt funktioniert. Dieses Steuerelement wird nur angezeigt, wenn der Medientyp FLV ausgewählt ist. Video Length (Videolänge, Integer Media.totalTime) Parameter der MediaController-Komponente Name Typ activePlayControl (Aktive Wiedergabesteuerung, String: „pause“ Media.activePlayControl) oder „play“ backgroundStyle (Hintergrundstil, Media.backgroundStyle) controllerPolicy (Controller-Richtlinien, Media.controllerPolicy) horizontal (Media.horizontal) 372 Standardwert Beschreibung „pause“ „default“ String: „default“ oder „none“ „auto“, „on“ oder „off“ „auto“ Boolean true Kapitel 4: Komponenten-Referenz Legt fest, ob sich die Wiedergabeleiste bei der Instanziierung im Pause- oder im Wiedergabemodus befindet. Legt fest, ob die MediaController-Instanz mit einem Farbhintergrund versehen wird. Legt fest, ob die Steuerung je nach Mausposition geöffnet oder geschlossen wird oder im geöffneten oder geschlossenen Zustand fixiert ist. Legt fest, ob der Steuerungsbereich der Instanz vertikal oder horizontal ausgerichtet ist. Der Wert true bedeutet, dass die Komponente horizontal ausgerichtet ist. Name Typ Standardwert Beschreibung enabled (aktiviert) Boolean true Legt fest, ob die Steuerung durch den Benutzer geändert werden kann. Der Wert true bedeutet, dass eine Änderung möglich ist. visible (sichtbar) Boolean true Legt fest, ob die Steuerung für den Benutzer sichtbar ist. Der Wert true bedeutet, dass sie angezeigt wird. minHeight (Mindesthöhe) Integer 0 Die kleinste zulässige Höhe für diese Instanz (in Pixel). minWidth (Mindestbreite) Integer 0 Die kleinste zulässige Breite für diese Instanz (in Pixel). Parameter der MediaPlayback-Komponente Name Typ Control Placement (Platzierung, „bottom“ „top“, „bottom“ , „left“, „right“ Position der Steuerung. Der Wert bezieht sich auf die Ausrichtung. Media.controllerPolicy Boolean Legt fest, ob die Steuerung je nach Mausposition geöffnet oder geschlossen wird. Automatically Play (Automatisch abspielen, Media.autoPlay) Boolean Ausgewählt Media.controlPlacement) Standardwert Beschreibung true Legt fest, ob die Medienwiedergabe sofort nach dem Laden beginnt. Use Preferred Media Size Boolean Ausgewählt (Bevorzugte Mediengröße verwenden, Media.autoSize) Legt fest, ob die Größe der MediaController-Instanz an die Mediendatei angepasst wird oder ob andere Einstellungen verwendet werden. FPS Integer 30 Anzahl der Bilder pro Sekunde. Wenn die Option Milliseconds (Millisekunden) ausgewählt ist, ist dieses Steuerelement deaktiviert. Cue-Points (Media.cuePoints) Array Nicht definiert Ein Array mit Cue-Point-Objekten, jeweils mit einem Namen und einer gültigen Zeitangabe im Format HH:MM:SS:mmm (Option Milliseconds (Millisekunden) ausgewählt) oder HH:MM:SS:FF. FLV oder MP3 (Media.mediaType) „FLV“ oder „MP3“ „FLV“ Gibt den wiederzugebenden Medientyp an. Media-Komponenten (nur Flash Professional) 373 Name Typ Milliseconds (Millisekunden) Boolean Nicht ausgewählt Legt fest, ob die Wiedergabeleiste Bilder oder Millisekunden verwendet und ob CuePoints in Sekunden oder Bildern angeben werden. Wenn diese Option ausgewählt ist, ist das FPS-Steuerelement deaktiviert. URL (Media.contentPath) String Nicht definiert Ein String mit dem Pfad und dem Dateinamen der wiederzugebenden Mediendatei. Nicht definiert Die zur Wiedergabe der FLV-Datei erforderliche Gesamtzeit. Diese Einstellung ist erforderlich, damit die Wiedergabeleiste korrekt funktioniert. Video Length (Videolänge, Integer Media.totalTime) Standardwert Beschreibung Anwendungen mit Media-Komponenten erstellen (nur Flash Professional) Die Erstellung von Flash-Inhalten mit Hilfe von Media-Komponenten ist sehr einfach und erfordert meist nur wenige Schritte. Dieses Beispiel veranschaulicht die Erstellung einer Anwendung zur Wiedergabe einer kleinen, öffentlich verfügbaren Mediendatei. So fügen Sie einer Anwendung eine Media-Komponente hinzu: 1 Wählen Sie in Flash Datei > Neu und dann Flash-Dokument. 2 Öffnen Sie das Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > 3 4 5 6 Komponenten), und doppelklicken Sie auf die MediaPlayback-Komponente, um sie der Bühne hinzuzufügen. Geben Sie im Eigenschafteninspektor den Instanznamen meinMedia ein. Klicken Sie im Eigenschafteninspektor auf Komponenten-Inspektor starten. Geben Sie im Bedienfeld Komponenten-Inspektor im Textfeld URL folgendes ein: http://www.cathphoto.com/c.flv. Wählen Sie Steuerung > Film testen, um die Mediendatei wiederzugeben. Media-Komponenten anpassen (nur Flash Professional) Sie können die Darstellung von Media-Komponenten mittels Skinning anpassen. Vollständige Informationen zum Anpassen von Komponenten finden Sie in Kapitel 3, „Komponenten individuell anpassen“, auf Seite 31. Stile mit der Media-Komponente verwenden Die Verwendung von Stilen wird bei Media-Komponenten nicht unterstützt. 374 Kapitel 4: Komponenten-Referenz Skins mit der Media-Komponente verwenden Die Media-Komponenten unterstützen kein dynamisches Skinning. Sie können jedoch das Quelldokument der Media-Komponente öffnen und die Bestände ändern, um die gewünschte Darstellung zu erzielen. Dabei ist es am sinnvollsten, zuerst eine Kopie der Datei anzulegen und mit dieser Kopie zu arbeiten, damit das installierte Original erhalten bleibt und wieder verwendet werden kann. Sie finden das Quelldokument der Media-Komponente im folgenden Verzeichnis: • Windows: C:\Dokumente und Einstellungen\Benutzer\Lokale Einstellungen\ • Anwendungsdaten\Macromedia\Flash MX 2004\Sprache\Configuration\ComponentFLA.fla Macintosh: HD Drive:Users:Benutzer:Library:Application Support:Macromedia:Flash MX 2004:Sprache:Configuration:ComponentFLA.fla Weitere Informationen zu Komponenten-Skins finden Sie unter „Skinning-Komponenten“ auf Seite 42. Media-Klasse (nur Flash Professional) Vererbung mx.core.UIComponent ActionScript-Klassennamen mx.controls.MediaController, mx.controls.MediaDisplay, mx.controls.MediaPlayback Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse selbst verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.MediaPlayback.version); Hinweis: Der Code trace(meineMediaInstance.version); gibt undefined zurück. Übersicht: Methoden der Media-Klasse Methode Komponenten Beschreibung Media.addCuePoint() MediaDisplay, MediaPlayback Fügt der Komponenteninstanz ein Cue-PointObjekt hinzu. Media.associateController() MediaDisplay Verknüpft eine MediaDisplay-Instanz mit einer MediaController-Instanz. Media.associateDisplay() MediaController Verknüpft eine MediaController-Instanz mit einer MediaDisplay-Instanz. Media.displayFull() MediaPlayback Setzt die Komponenteninstanz in den VollbildWiedergabemodus. Media.displayNormal() MediaPlayback Setzt die Komponenteninstanz wieder auf die ursprüngliche Bildgröße zurück. Media.getCuePoint() MediaDisplay, MediaPlayback Gibt ein Cue-Point-Objekt zurück. Media.play() MediaDisplay, MediaPlayback Gibt die mit der Komponenteninstanz verknüpfte Mediendatei ab einem festgelegten Startpunkt wieder. Media-Komponenten (nur Flash Professional) 375 Methode Komponenten Beschreibung Media.pause() MediaDisplay, MediaPlayback Setzt den Abspielkopf an der aktuellen Position in der Medienzeitleiste in den Pausemodus. Media.removeAllCuePoints() MediaDisplay, MediaPlayback Löscht alle Cue-Point-Objekte, die mit einer bestimmten Komponenteninstanz verknüpft sind. Media.removeCuePoint() MediaDisplay, MediaPlayback Löscht einen angegebenen Cue-Point, der mit einer bestimmten Komponenteninstanz verknüpft ist. Media.setMedia() MediaDisplay, MediaPlayback Legt den Medientyp und den Pfad zum angegebenen Medientyp fest. Media.stop() MediaDisplay, MediaPlayback Stoppt den Abspielkopf und verschiebt ihn zur Position 0, d. h., an den Anfang der Mediendatei. Übersicht: Eigenschaften der Media-Klasse 376 Eigenschaft Komponenten Media.activePlayControl MediaController Legt den Zustand der Komponente beim Laden zur Laufzeit fest. Media.aspectRatio MediaDisplay, MediaPlayback Legt fest, ob die Komponenteninstanz das Bildseitenverhältnis beibehält. Media.autoPlay MediaDisplay, MediaPlayback Legt fest, ob die Komponenteninstanz sofort mit dem Zwischenspeichern und der Wiedergabe beginnt. Media.autoSize MediaDisplay, MediaPlayback Legt fest, wie die Größe des Medien anzeigenden Teils der MediaDisplay- oder MediaPlaybackKomponente bestimmt wird. Media.backgroundStyle MediaController Legt fest, ob die Komponenteninstanz mit einem Farbhintergrund versehen wird. Media.bytesLoaded MediaDisplay, MediaPlayback Die Anzahl der geladenen Byte, die für die Wiedergabe zur Verfügung stehen. Media.bytesTotal MediaDisplay, MediaPlayback Die Anzahl der Byte, die in die Komponenteninstanz geladen werden sollen. Media.contentPath MediaDisplay, MediaPlayback Ein String mit dem relativen Pfad und dem Dateinamen der zu streamenden und wiederzugebenden Mediendatei. Media.controllerPolicy MediaController, Legt fest, ob die Steuerelemente in der MediaPlayback Komponente während der Wiedergabe ausgeblendet sind und nur angezeigt werden, wenn ein Mouse-Over-Ereignis ausgelöst wird, oder ob alle Steuerelemente ständig ein- bzw. ausgeblendet sind. Media.controlPlacement MediaPlayback Kapitel 4: Komponenten-Referenz Beschreibung Legt fest, wo sich die Steuerelemente für die Komponente im Verhältnis zur Komponente befinden. Eigenschaft Komponenten Beschreibung Media.cuePoints MediaDisplay, MediaPlayback Ein Array mit Cue-Point-Objekten, die einer bestimmten Komponenteninstanz zugewiesen wurden. Media.horizontal MediaController Legt die Ausrichtung der Komponenteninstanz fest. Media.mediaType MediaDisplay, MediaPlayback Legt den wiederzugebenden Medientyp fest. Media.playheadTime MediaDisplay, MediaPlayback Enthält die aktuelle Position des Abspielkopfes (in Sekunden) für die Zeitleiste der wiedergegebenen Mediendatei. Media.playing MediaDisplay, MediaPlayback Gibt einen Booleschen Wert zurück, der angibt, ob eine bestimmte Komponenteninstanz eine Mediendatei wiedergibt. Media.preferredHeight MediaDisplay, MediaPlayback Der Standardwert für die Höhe einer FLVMediendatei. Media.preferredWidth MediaDisplay, MediaPlayback Der Standardwert für die Breite einer FLVMediendatei. Media.totalTime MediaDisplay, MediaPlayback Eine Ganzzahl, die die Gesamtlänge der Mediendatei angibt (in Sekunden). Media.volume MediaDisplay, MediaPlayback Eine Ganzzahl zwischen 0 (Minimum) und 100 (Maximum), die die Lautstärke angibt. Übersicht: Ereignisse der Media-Klasse Ereignis Komponenten Beschreibung Media.change MediaDisplay, MediaPlayback Ständige Broadcastübertragung, während die Mediendatei wiedergegeben wird. Media.click MediaController, Broadcastübertragung, wenn der Benutzer auf MediaPlayback die Schaltfläche Abspielen/Pause klickt. Media.complete MediaDisplay, MediaPlayback Benachrichtigung, dass der Abspielkopf das Ende der Mediendatei erreicht hat. Media.cuePoint MediaDisplay, MediaPlayback Benachrichtigung, dass der Abspielkopf einen bestimmten Cue-Point erreicht hat. Media.playheadChange MediaController, Broadcastübertragung durch die MediaPlayback Komponenteninstanz, wenn der Benutzer den Wiedergaberegler verschiebt oder auf die Schaltfläche Zum Anfang oder Zum Ende klickt. Media.progress MediaDisplay, MediaPlayback Media.volume MediaController, Broadcastübertragung, wenn der Benutzer die MediaPlayback Lautstärke ändert. Wird kontinuierlich erzeugt, bis die Mediendatei vollständig geladen ist. Media-Komponenten (nur Flash Professional) 377 Media.activePlayControl Anwendbar auf MediaController Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.activePlayControl Beschreibung Eigenschaft; ein Boolescher Wert, der festlegt, in welchem Zustand sich die MediaControllerKomponente beim Laden zur Laufzeit befindet. Der Wert true bedeutet, dass sich die MediaController-Komponente zur Laufzeit im Wiedergabezustand befindet. Der Wert false zeigt an, dass sie sich zur Laufzeit im Pausezustand befindet. Verwenden Sie diese Eigenschaft in Verbindung mit der Eigenschaft autoPlay, sodass sich zur Laufzeit beide entweder im Pauseoder im Wiedergabezustand befinden. Der Standardwert lautet true. Beispiel Im folgenden Beispiel befindet sich die Steuerung beim ersten Laden zur Laufzeit im Pausezustand: meinMedia.activePlayControl = false; Siehe auch Media.autoPlay Media.addCuePoint() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.addCuePoint(cuePointName, cuePointTime) Parameter cuePointName Ein String, mit dem der Cue-Point benannt werden kann. Eine Zahl, die angibt, wann ein cuePoint-Ereignis als Broadcast übertragen wird (in Sekunden). cuePointTime 378 Kapitel 4: Komponenten-Referenz Rückgaben Keine. Beschreibung Methode; fügt einer MediaPlayback- oder MediaDisplay-Komponenteninstanz ein Cue-PointObjekt hinzu. Wenn die Abspielkopfzeit einer Cue-Point-Zeit entspricht, wird ein cuePointEreignis per Broadcast übertragen. Beispiel Mit dem folgenden Code wird ein Cue-Point namens Homerun zu meinMedia bei Zeit = 16 Sekunden hinzugefügt. meinMedia.addCuePoint("Homerun", 16); Siehe auch Media.cuePoint, Media.cuePoints, Media.getCuePoint(), Media.removeAllCuePoints(), Media.removeCuePoint() Media.aspectRatio Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.aspectRatio Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob eine MediaDisplay- oder MediaPlayback-Instanz ihr Bildseitenverhältnis während der Wiedergabe beibehält. Der Wert true bedeutet, dass das Bildseitenverhältnis beibehalten wird; der Wert false bedeutet, dass das Bildseitenverhältnis während der Wiedergabe geändert werden kann. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird festgelegt, dass das Bildseitenverhältnis während der Wiedergabe geändert werden kann: meinMedia.aspectRatio = false; Media-Komponenten (nur Flash Professional) 379 Media.associateController() Anwendbar auf MediaDisplay Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.associateController(instanceName) Parameter instanceName Ein String mit dem Instanznamen der zu verknüpfenden MediaController- Komponente. Rückgaben Keine. Beschreibung Methode; verknüpft eine MediaDisplay-Komponenteninstanz mit einer gegebenen MediaController-Instanz. Wenn Sie mit der Methode Media.associateDisplay() eine MediaController-Instanz mit einer MediaDisplay-Instanz verknüpft haben, ist es nicht erforderlich, Media.associateController() zu verwenden. Beispiel Mit dem folgenden Code wird meinMedia mit meinController verknüpft: meinMedia.associateController(meinController); Siehe auch Media.associateDisplay() Media.associateDisplay() Anwendbar auf MediaController Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.associateDisplay(instanceName) 380 Kapitel 4: Komponenten-Referenz Parameter instanceName Ein String mit dem Instanznamen der zu verknüpfenden MediaDisplay- Komponente. Rückgaben Keine. Beschreibung Methode; verknüpft eine MediaController-Komponenteninstanz mit einer gegebenen MediaDisplay-Instanz. Wenn Sie mit der Methode Media.associateController() eine MediaDisplay-Instanz mit einer MediaController-Instanz verknüpft haben, ist es nicht erforderlich, Media.associateDisplay() zu verwenden. Beispiel Mit dem folgenden Code wird meinMedia mit meinDisplay verknüpft: meinMedia.associateDisplay(meinDisplay); Siehe auch Media.associateController() Media.autoPlay Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.autoPlay Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die MediaPlayback- oder MediaDisplay-Instanz sofort versucht, mit dem Zwischenspeichern und der Wiedergabe zu beginnen. Der Wert true zeigt an, dass das Steuerelement zur Laufzeit mit dem Zwischenspeichern und der Wiedergabe beginnt. Der Wert false zeigt an, dass das Steuerelement zur Laufzeit gestoppt ist. Diese Eigenschaft ist abhängig von den Eigenschaften contentPath und mediaType. Falls contentPath und mediaType nicht belegt sind, findet zur Laufzeit keine Wiedergabe statt. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird das Steuerelement beim ersten Laden zur Laufzeit nicht gestartet: meinMedia.autoPlay = false; Media-Komponenten (nur Flash Professional) 381 Siehe auch Media.contentPath, Media.mediaType Media.autoSize Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.autoSize Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, wie die Größe des Medien anzeigenden Teils der MediaDisplay- oder MediaPlayback-Komponente bestimmt wird. Bei der MediaDisplay-Komponente verhält sich diese Eigenschaft wie folgt: • Wenn Sie diese Eigenschaft mit true belegen, zeigt Flash die Mediendatei in der bevorzugten • Größe an, unabhängig von der Größe der Komponente. Sollte die MediaDisplay-Instanz also nicht dieselbe Größe wie die Medien haben, erstrecken die Medien sich über die Instanzbegrenzungen hinaus bzw. füllen diese nicht ganz aus. Wenn Sie diese Eigenschaft mit false belegen, verwendet Flash soweit möglich die Instanzgröße, wobei das Bildseitenverhältnis erhalten bleibt. Wenn der Wert sowohl für Media.autoSize als auch für Media.aspectRatio false lautet, wird die exakte Größe der Komponente verwendet. Bei der MediaPlayback-Komponente verhält sich diese Eigenschaft wie folgt: • Wenn Sie diese Eigenschaft mit true belegen, zeigt Flash die Mediendatei in der bevorzugten • Größe an, sofern der Wiedergabebereich nicht kleiner ist als die bevorzugte Größe. Wenn das der Fall ist, verkleinert Flash das Medium, sodass es in die Instanz passt und das Bildseitenverhältnis beibehalten wird. Falls die bevorzugte Größe kleiner ist als der Medienbereich der Instanz, bleiben Teile des Medienbereichs ungenutzt. Wenn Sie diese Eigenschaft mit false belegen, verwendet Flash soweit möglich die Instanzgröße, wobei das Bildseitenverhältnis erhalten bleibt. Wenn sowohl Media.autoSize als auch Media.aspectRatio mit false belegt sind, wird der Medienbereich der Komponente ausgefüllt. Dieser Bereich ist definiert als der Bereich oberhalb der Steuerung (im Standardlayout), mit einer 8 Pixel breiten Umrandung, die den Rand der Komponente darstellt. Der Standardwert lautet true. 382 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel erfolgt die Wiedergabe nicht entsprechend der Mediengröße: meinMedia.autoSize = false; Siehe auch Media.aspectRatio Media.backgroundStyle Anwendbar auf MediaController Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.backgroundStyle Beschreibung Eigenschaft; der Wert "default" gibt an, dass die MediaController-Instanz mit einem Farbhintergrund versehen wird. Der Wert "none" bedeutet, dass kein Farbhintergrund verwendet wird. Der Standardwert ist "default". Dies ist keine Stileigenschaft und wird daher nicht durch die Stileinstellungen beeinflusst. Beispiel Im folgenden Beispiel wird festgelegt, dass die Steuerung nicht mit einem Farbhintergrund versehen wird: meinMedia.backgroundStyle = "none"; Media.bytesLoaded Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.bytesLoaded Media-Komponenten (nur Flash Professional) 383 Beschreibung Schreibgeschützte Eigenschaft; die Anzahl der bereits in die Komponente geladenen Byte, die für die Wiedergabe verfügbar sind. Der Standardwert ist undefined. Beispiel Mit dem folgenden Code wird eine Variable namens PlaybackLoad erzeugt, die mit der Anzahl der in der for-Schleife geladenen Byte belegt wird. // Variable erstellen, in der die Anzahl der geladenen Byte abgelegt wird var PlaybackLoad = meinMedia.bytesLoaded; // Funktion ausführen, bis die Wiedergabebereitschaft erreicht ist for (PlaybackLoad < 150) { someFunction(); } Media.bytesTotal Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.bytesTotal Beschreibung Eigenschaft; die Anzahl der Byte, die in die MediaPlayback- oder MediaDisplay-Komponente geladen werden sollen. Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird dem Benutzer die Größe der zu streamenden Mediendatei mitgeteilt: meinTextField.text = meinMedia.bytesTotal; Media.change Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. 384 Kapitel 4: Komponenten-Referenz Verwendung listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("change", listenerObject) Beschreibung Ereignis; Broadcastübertragung durch die MediaDisplay- und MediaPlayback-Komponenten während der Medienwiedergabe. Der bereits beendete Anteil in Prozent kann von der Komponenteninstanz abgefragt werden. Siehe dazu auch folgendes Beispiel. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Media.change-Ereignisses besitzt zwei zusätzliche Eigenschaften: Eine Referenz auf das übertragende Objekt. target type Der String "change", der den Ereignistyp angibt. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird mit Hilfe eines Objekt-Listeners die Position des Abspielkopfes (Media.playheadTime) ermittelt, anhand der der bereits beendete Anteil berechnet werden kann: var meinPlayerListener = new Object(); meinPlayerListener.change = function(eventObject){ var meinePosition = meinPlayer.playheadTime; var meinePercentPosition = (meinePosition/totalTime); } meinPlayer.addEventListener("change", meinPlayerListener); Siehe auch Media.playing, Media.pause() Media.click Anwendbar auf MediaController, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Media-Komponenten (nur Flash Professional) 385 Verwendung var meinMediaListener = new Object() meinMediaListener.click = function(){ // Hier Code eingeben } meinPlayer.addEventListener("click", meinMediaListener); Beschreibung Ereignis; Broadcastübertragung, wenn der Benutzer auf die Schaltfläche Abspielen/Pause klickt. Anhand des Detailfeldes kann ermittelt werden, auf welche Schaltfläche geklickt wurde. Das Media.click-Ereignisobjekt besitzt folgende Eigenschaften: detail Der String "pause" oder "play". target Eine Referenz auf die MediaController- oder MediaPlayback-Komponenteninstanz. type Der String "click". Beispiel Im folgenden Beispiel wird ein Popupfenster geöffnet, wenn der Benutzer auf Abspielen klickt: var meinMediaListener = new Object() meinMediaListener.click = function(){ PopUpManager.createPopup(_root, mx.containers.Window, false, {contentPath: movieSale}); } meinMedia.addEventListener("click", meinMediaListener); Media.complete Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.complete = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("complete", listenerObject) Beschreibung Ereignis; Benachrichtigung, dass der Abspielkopf das Ende der Mediendatei erreicht hat. Das Media.complete-Ereignisobjekt besitzt folgende Eigenschaften: target type 386 Eine Referenz auf die MediaDisplay- oder MediaPlayback-Komponenteninstanz. Der String "complete". Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird mit Hilfe eines Objekt-Listeners ermittelt, wann die Medienwiedergabe beendet ist: var meinListener = new Object(); meinListener.complete = function(eventObject) { trace("Medienwiedergabe beendet"); }; meinMedia.addEventListener("complete", meinListener); Media.contentPath Anwendbar auf MediaController Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.contentPath Beschreibung Eigenschaft; ein String mit dem relativen Pfad und dem Dateinamen der zu streamenden bzw. wiederzugebenden Mediendatei. Die Methode Media.setMedia() ist die einzige unterstützte Möglichkeit, wie diese Eigenschaft mit ActionScript gesetzt werden kann. Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird der Name des wiedergegebenen Films in einem Textfeld angegeben: meinTextField.text = meinMedia.contentPath; Siehe auch Media.setMedia() Media.controllerPolicy Anwendbar auf MediaController, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.controllerPolicy Media-Komponenten (nur Flash Professional) 387 Beschreibung Eigenschaft; legt fest, ob die MediaController-Komponente (bzw. die ControllerUnterkomponente in der MediaPlayback-Komponente) bei der Instanziierung ausgeblendet ist und nur angezeigt wird, wenn der Benutzer mit dem Mauspfeil über die minimierte Steuerung fährt. Diese Eigenschaft kann mit folgenden Werten belegt werden: • • • bedeutet, dass die Steuerung ständig maximiert ist. "off" bedeutet, dass die Steuerung ständig minimiert ist. "auto" bedeutet, dass die Steuerung so lange minimiert ist, bis der Benutzer mit dem Mauspfeil über den Kollisionsbereich fährt. Der Kollisionsbereich entspricht dem Bereich, in dem die minimierte Steuerung dargestellt wird. Die Steuerung bleibt so lange maximiert, bis der Benutzer den Mauspfeil aus dem Kollisionsbereich zieht. "on" Hinweis: Der Kollisionsbereich wird zusammen mit der Steuerung maximiert bzw. minimiert. Beispiel Im folgenden Beispiel bleibt die Steuerung ständig geöffnet: meinMedia.controllerPolicy = "on"; Media.controlPlacement Anwendbar auf MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.controlPlacement Beschreibung Eigenschaft; legt fest, wo sich der Steuerungsbereich der MediaPlayback-Komponente im Verhältnis zur Anzeige befindet. Mögliche Belegungen sind "top", "bottom", "left" und "right". Der Standardwert ist "bottom". Beispiel Im folgenden Beispiel befindet sich der Steuerungsbereich der MediaPlayback-Komponente auf der rechten Seite: meinMedia.controlPlacement = "right"; 388 Kapitel 4: Komponenten-Referenz Media.cuePoint Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.cuePoint = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("cuePoint", listenerObject) Beschreibung Ereignis; Benachrichtigung, dass der Abspielkopf den Cue-Point erreicht hat. Das Media.cuePoint-Ereignisobjekt besitzt folgende Eigenschaften: name Ein String mit dem Namen des Cue-Points. time Eine Zahl, die angibt, wann der Cue-Point erreicht wurde (in Bildern oder Sekunden). Eine Referenz auf das Cue-Point-Objekt. target type Der String "cuePoint". Beispiel Im folgenden Beispiel wird mit Hilfe eines Objekt-Listeners ermittelt, wann ein Cue-Point erreicht ist: var meinCuePointListener = new Object(); meinCuePointListener.cuePoint = function(eventObject){ trace("gehört " + eventObject.type + ", " + eventObject.target); } meinPlayback.addEventListener("cuePoint", meinCuePointListener); Siehe auch Media.addCuePoint(), Media.cuePoints, Media.getCuePoint() Media.cuePoints Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Media-Komponenten (nur Flash Professional) 389 Verwendung meinMedia.cuePoints[N] Beschreibung Eigenschaft; ein Array mit Cue-Point-Objekten, die einer MediaPlayback- oder MediaDisplayKomponenteninstanz zugewiesen wurden. Im Array kann jedes Cue-Point-Objekt einen Namen, eine Zeitangabe in Sekunden oder Bildern und eine Player-Eigenschaft besitzen (den Instanznamen der Komponente, mit der es verknüpft ist). Der Standardwert ist [] (leeres Array). Beispiel Im folgenden Beispiel wird der dritte Cue-Point gelöscht, wenn eine Aktionsvorschau (actionPreview) wiedergegeben wird: if(meineVariable == actionPreview) { meinMedia.removeCuePoint(meinMedia.cuePoints[2]); } Siehe auch Media.addCuePoint(), Media.getCuePoint(), Media.removeCuePoint() Media.displayFull() Anwendbar auf MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.displayFull() Parameter Keine. Rückgaben Keine. Beschreibung Methode; setzt die MediaPlayback-Komponenteninstanz in den Vollbildmodus. Das heißt, die Komponente wird so vergrößert, dass sie die ganze Bühne ausfüllt. Um die Komponente wieder in die normale Größe umzuwandeln, verwenden Sie die Methode Media.displayNormal(). 390 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird erzwungen, dass die Komponente vergrößert wird, bis sie die gesamte Bühne ausfüllt: meinMedia.displayFull(); Siehe auch Media.displayNormal() Media.displayNormal() Anwendbar auf MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.displayNormal() Parameter Keine. Rückgaben Keine. Beschreibung Methode; setzt die MediaPlayback-Instanz auf die normale Größe zurück, nachdem die Methode Media.displayFull() verwendet wurde. Beispiel Mit dem folgenden Code wird eine MediaPlayback-Komponente auf die ursprüngliche Größe zurückgesetzt: meinMedia.displayNormal(); Siehe auch Media.displayFull() Media-Komponenten (nur Flash Professional) 391 Media.getCuePoint() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.getCuePoint(cuePointName) Parameter Keine. Rückgaben cuePointName Der String, der bei der Verwendung von Media.addCuePoint() angegeben wurde. Beschreibung Methode; gibt ein Cue-Point-Objekt anhand des Cue-Point-Namens zurück. Beispiel Mit dem folgenden Code wird ein Cue-Point namens meinCuePointName abgefragt. meinMedia.removeCuePoint(meinMedia.getCuePoint("meinCuePointName")); Siehe auch Media.addCuePoint(), Media.cuePoint, Media.cuePoints, Media.removeCuePoint() Media.horizontal Anwendbar auf MediaController Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.horizontal 392 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; legt fest, ob die MediaController-Komponente vertikal oder horizontal angezeigt wird. Der Wert true bedeutet, dass die Komponente horizontal ausgerichtet wird; der Wert false zeigt eine vertikale Ausrichtung an. Bei der Einstellung false bewegen sich der Abspielkopf und die Ladefortschrittsanzeige von unten nach oben. Der Standardwert lautet true. Beispiel Im folgenden Beispiel wird die MediaController-Komponente vertikal ausgerichtet: meinMedia.horizontal = false; Media.mediaType Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.mediaType Beschreibung Eigenschaft; enthält den Wert des wiederzugebenden Medientyps. Die möglichen Werte sind die Formate FLV und MP3. Der Standardwert ist "FLV". Siehe „Dateien im Format Macromedia Flash-Video (FLV) importieren“ in der Hilfe „Flash verwenden“. Beispiel Im folgenden Beispiel wird ermittelt, welcher Medientyp momentan wiedergegeben wird: var currentMedia = meinMedia.mediaType; Siehe auch Media.setMedia() Media.pause() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Media-Komponenten (nur Flash Professional) 393 Verwendung meinMedia.pause() Parameter Keine. Rückgaben Keine. Beschreibung Methode; setzt den Abspielkopf an der aktuellen Position in den Pausezustand. Beispiel Mit dem folgenden Code wird die Wiedergabe unterbrochen. meinMedia.pause(); Media.play() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.play(startingPoint) Parameter startingPoint Eine nicht-negative Ganzzahl, die den Startpunkt (in Sekunden) angibt, an dem die Medienwiedergabe beginnen soll. Rückgaben Keine. Beschreibung Methode; gibt die mit der Komponenteninstanz verknüpfte Mediendatei ab dem festgelegten Startpunkt wieder. Der Standardwert ist der aktuelle Wert von playheadTime. Beispiel Mit dem folgenden Code wird festgelegt, dass die Wiedergabe der Media-Komponente bei 120 Sekunden beginnen soll: meinMedia.play(120); Siehe auch Media.pause() 394 Kapitel 4: Komponenten-Referenz Media.playheadChange Anwendbar auf MediaController, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.playheadChange = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("playheadChange", listenerObject) Beschreibung Ereignis; Broadcastübertragung durch die MediaController- oder MediaPlayback-Komponente, wenn der Benutzer den Wiedergaberegler verschiebt oder auf die Schaltfläche Zum Anfang oder Zum Ende klickt. Das Media.playheadChange-Ereignisobjekt besitzt folgende Eigenschaften: detail Eine Zahl, die angibt, zu wie viel Prozent die Mediendatei bereits wiedergegeben wurde. type Der String "playheadChange". Beispiel Im folgenden Beispiel wird diese Prozentzahl an das Ausgabefenster gesendet, sobald der Benutzer den Abspielkopf nicht mehr verschiebt: var controlListen = new Object(); controlListen.playheadChange = function(eventObject){ trace(eventObject.detail); } meinMedia.addEventListener("playheadChange", controlListen); Media.playheadTime Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.playheadTime Media-Komponenten (nur Flash Professional) 395 Beschreibung Eigenschaft; enthält die aktuelle Position des Abspielkopfes (in Sekunden) für die Zeitleiste der wiedergegebenen Mediendatei. Der Standardwert ist die Position des Abspielkopfes. Beispiel Im folgenden Beispiel wird eine Variable mit der Position des Abspielkopfes belegt (Angabe in Sekunden): var meinPlayhead = meinMedia.playheadTime; Media.playing Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.playing Beschreibung Schreibgeschützte Eigenschaft; gibt einen Booleschen Wert zurück, der angibt, ob die Mediendatei wiedergegeben wird. Der Wert true zeigt an, dass die Mediendatei wiedergegeben wird; false bedeutet, dass die Medienwiedergabe durch den Benutzer unterbrochen wurde (Pause). Beispiel Mit dem folgenden Code wird ermittelt, ob die Mediendatei wiedergegeben wird oder ob die Wiedergabe unterbrochen wurde: if(meinMedia.playing == true){ some function; } Siehe auch Media.change Media.preferredHeight Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. 396 Kapitel 4: Komponenten-Referenz Edition Flash MX Professional 2004. Verwendung meinMedia.preferredHeight Beschreibung Eigenschaft; wird mit der Standardhöhe der FLV-Datei belegt. Diese Eigenschaft betrifft nur FLV-Mediendateien, da die Höhe bei MP3-Dateien festgelegt ist. Mit dieser Eigenschaft können die Höhen- und Breitenparameter gesetzt werden (sowie einige Ränder für die Komponente selbst). Wenn keine FLV-Mediendatei ausgewählt ist, ist der Standardwert undefined (undefiniert). Beispiel Im folgenden Beispiel wird die Größe einer MediaPlayback-Instanz entsprechend der wiedergegebenen Instanz festgelegt. Der für die Komponenteninstanz erforderliche Rand (in Pixel) wird dabei berücksichtigt: if(meinPlayback.contentPath = !undefined){ var mediaHeight = meinPlayback.preferredHeight; var mediaWidth = meinPlayback.preferredWidth; meinPlayback.setSize((mediaWidth + 20), (mediaHeight + 70)); } Media.preferredWidth Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.preferredWidth Beschreibung Eigenschaft; wird mit der Standardbreite der FLV-Datei belegt. Der Standardwert ist undefined. Beispiel Im folgenden Beispiel wird die Variable mediaWidth mit der gewünschten Breite belegt: var mediaWidth = meinMedia.preferredWidth; Media-Komponenten (nur Flash Professional) 397 Media.progress Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.progress = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("progress", listenerObject) Beschreibung Ereignis; wird kontinuierlich erzeugt, bis die Mediendatei vollständig geladen ist. Das Media.progress-Ereignisobjekt besitzt folgende Eigenschaften: Eine Referenz auf die MediaDisplay- oder MediaPlayback-Komponenteninstanz. target type Der String "progress". Beispiel Im folgenden Beispiel wird auf Fortschritt gewartet: var meinProgressListener = new Object(); meinProgressListener.progress = function(){ // lightMovieClip blinkt, solange ein Fortschritt verzeichnet wird var lightVisible = lightMovieClip.visible; lightMovieClip.visible = !lightVisible; } Media.removeAllCuePoints() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.removeAllCuePoints() Parameter Keine. 398 Kapitel 4: Komponenten-Referenz Rückgaben Keine. Beschreibung Methode; löscht alle Cue-Point-Objekte, die mit einer Komponenteninstanz verknüpft sind. Beispiel Mit dem folgenden Code werden alle Cue-Point-Objekte gelöscht: meinMedia.removeAllCuePoints(); Siehe auch Media.addCuePoint(), Media.cuePoints, Media.removeCuePoint() Media.removeCuePoint() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.removeCuePoint(cuePoint) Parameter Eine Referenz auf ein Cue-Point-Objekt, das zuvor mit Media.addCuePoint() zugewiesen wurde. cuePoint Rückgaben Keine. Beschreibung Methode; löscht einen bestimmten Cue-Point, der mit einer Komponenteninstanz verknüpft ist. Beispiel Mit dem folgenden Code wird ein Cue-Point namens meinCuePoint gelöscht: meinMedia.removeCuePoint(getCuePoint("meinCuePoint")); Siehe auch Media.addCuePoint(), Media.cuePoints, Media.removeAllCuePoints() Media-Komponenten (nur Flash Professional) 399 Media.setMedia() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.setMedia(contentPath, mediaType) Parameter contentPath Ein String mit dem Pfad und dem Dateinamen der wiederzugebenden Mediendatei. mediaType Ein String, mit dem der Medientyp festgelegt wird (FLV oder MP3). Dieser Parameter ist optional. Rückgaben Keine. Beschreibung Methode; legt den Medientyp und den Pfad zum angegebenen Medientyp mit einem URLArgument fest. Der Standardwert für contentPath ist undefined (undefiniert). Diese Methode ist die einzige unterstützte Möglichkeit, um für die MediaPlayback- und MediaDisplay-Komponenten den Pfad zum Inhalt und den Medientyp festzulegen. Beispiel Mit dem folgenden Code wird für eine Komponenteninstanz eine neue Mediendatei angegeben, die wiedergegeben werden soll. meinMedia.setMedia("http://www.RogerMoore.com/moonraker.flv", "FLV"); Media.stop() Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.stop() 400 Kapitel 4: Komponenten-Referenz Parameter Keine. Rückgaben Keine. Beschreibung Methode; stoppt den Abspielkopf und verschiebt ihn zur Position 0, d. h., an den Anfang der Mediendatei. Beispiel Mit dem folgenden Code wird der Abspielkopf gestoppt und zu Zeit = 0 verschoben. meinMedia.stop() Media.totalTime Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.totalTime Beschreibung Eigenschaft; die Gesamtlänge der Mediendatei (in Sekunden). Da beim FLV-Dateiformat die Wiedergabezeit der Media-Komponente erst übermittelt wird, wenn der Ladevorgang abgeschlossen ist, muss Media.totalTime manuell eingegeben werden, damit der Wiedergaberegler die tatsächliche Wiedergabezeit der Mediendatei korrekt anzeigt. Der Standardwert für MP3-Dateien ist die Wiedergabezeit der Mediendatei. Bei FLV-Dateien ist der Standardwert undefined (undefiniert). Diese Eigenschaft kann für MP3-Dateien nicht belegt werden, da die entsprechende Information im Sound-Objekt enthalten ist. Beispiel Im folgenden Beispiel wird für die FLV-Datei die Wiedergabezeit in Sekunden angegeben: meinMedia.totalTime = 151; Media-Komponenten (nur Flash Professional) 401 Media.volume Anwendbar auf MediaDisplay, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung meinMedia.volume Beschreibung Eigenschaft; speichert die Lautstärkeeinstellung, eine Ganzzahl zwischen 0 und 100. Der Standardwert für diese Eigenschaft ist 75. Beispiel Im folgenden Beispiel wird für die Medienwiedergabe die maximale Lautstärke festgelegt: meinMedia.volume = 100; Siehe auch Media.volume, Media.pause() Media.volume Anwendbar auf MediaController, MediaPlayback Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.volume = function(eventObject){ // Hier Code eingeben } meinMedia.addEventListener("volume", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn die Lautstärkeeinstellung durch den Benutzer verändert wird. Das Media.volume-Ereignisobjekt besitzt folgende Eigenschaften: detail type 402 Eine Ganzzahl zwischen 0 und 100, die die Lautstärke angibt. Der String "volume". Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird der Benutzer informiert, dass die Lautstärke geändert wird: var meinVolListener = new Object(); meinVolListener.volume = function(){ meinTextField.text = "Lautstärke geändert!"; } meinMedia.addEventListener("volume", meinVolListener); Siehe auch Media.volume Menu-Komponente (nur Flash Professional) Mit der Menu-Komponente kann der Benutzer ein Element aus einem Popupmenü auswählen, ähnlich wie im Datei- oder Bearbeiten-Menü in vielen Softwareprogrammen. In einer Anwendung wird ein Menü normalerweise geöffnet, wenn der Benutzer mit der Maus über einen schaltflächenähnlichen Menüaktivator fährt oder auf diesen klickt. Sie können auch mit einem Skript festlegen, dass eine Menu-Komponente geöffnet wird, wenn der Benutzer eine bestimmte Taste drückt. Menu-Komponenten werden immer dynamisch zur Laufzeit erstellt. Fügen Sie die Komponente dem Dokument aus dem Bedienfeld Komponenten hinzu, und löschen Sie sie, um sie der Bibliothek hinzuzufügen. Erstellen Sie anschließend mit dem folgenden ActionScript-Code ein Menü: var meinMenu = mx.controls.Menu.createMenu(parent, menuDataProvider); Verwenden Sie folgenden Code, um ein Menü in einer Anwendung zu öffnen: meinMenu.show(x, y); Unmittelbar bevor das Menü dargestellt wird, wird ein menuShow-Ereignis per Broadcast an alle Listener der Menu-Instanz übertragen, sodass Sie den Zustand der Menüelemente aktualisieren können. Ähnlich wird unmittelbar nach dem Ausblenden einer Menu-Instanz ein menuHideEreignis per Broadcast übertragen. Die Elemente in einem Menü werden mittels XML beschrieben. Weitere Informationen finden Sie unter „Mit Menu-Komponenten arbeiten: Ansicht und Daten“ auf Seite 405. Es ist nicht möglich, die Menu-Komponente für Bildschirmlesegeräte zugänglich zu machen. Mit der Menu-Komponente kommunizieren (nur Flash Professional) Sie können mit einer Menu-Komponente mittels Maus und Tastatur kommunizieren. Nachdem ein Menü geöffnet wurde, bleibt es so lange sichtbar, bis es entweder durch ein Skript geschlossen wird oder bis der Benutzer mit der Maus auf einen Punkt außerhalb des Menüs oder auf ein aktiviertes Element klickt. Menu-Komponente (nur Flash Professional) 403 Durch Klicken wird ein Menüelement ausgewählt, dies gilt jedoch nicht für folgende Menüelementtypen: • Deaktivierte Elemente und Trennzeichen Rollover und Klicks haben keine Wirkung (das Menü bleibt sichtbar). • Anker für ein Untermenü Rollover aktivieren das Untermenü; Mausklicks haben keine Wirkung; wenn der Mauszeiger auf ein Element außerhalb des Untermenüs bewegt wird, wird das Untermenü geschlossen. Wenn ein Element ausgewählt wird, wird ein Menu.change-Ereignis an alle Listener des Menüs gesendet, das Menü wird ausgeblendet und je nach Elementtyp werden folgende Aktionen ausgeführt: • • check radio Das Attribut selected des Elements wird umgeschaltet. Das Element wird in seiner Optionsfeldgruppe zur aktuellen Auswahl. Das Bewegen der Maus löst Menu.rollOut- und Menu.rollOver-Ereignisse aus. Das Drücken der Maustaste außerhalb des Menüs schließt das Menü und löst ein Menu.menuHide-Ereignis aus. Das Loslassen der Maustaste auf einem aktivierten Element hat folgende Auswirkungen auf die verschiedenen Elementtypen: • • • Das Attribut selected des Elements wird umgeschaltet. radio Das Attribut selected dieses Elements wird mit true belegt, und das Attribut selected des zuvor ausgewählten Elements in dieser Optionsfeldgruppe wird mit false belegt. Die Eigenschaft selection des entsprechenden Optionsfeldgruppen-Objekts wird mit einem Verweis auf das ausgewählte Menüelement belegt. undefined (undefiniert) und übergeordnete Elemente in einem hierarchischen Menü Die Sichtbarkeit des hierarchischen Menüs wird aktiviert bzw. deaktiviert. check Wenn eine Menu-Instanz den Fokus besitzt (durch Klicken oder durch Verwenden der Tabulatortaste), können Sie sie mit folgenden Tasten steuern: Taste Beschreibung Nach-unten-Taste Verschiebt die Auswahl in den Menüzeilen nach unten bzw. nach oben. Wenn Nach-oben-Taste die unterste (bzw. oberste) Zeile erreicht wurde, springt die Auswahl wieder zur obersten (bzw. untersten) Zeile. Nach-rechts-Taste Öffnet ein Untermenü oder verschiebt die Auswahl zum nächsten Menü in einer Menüleiste (sofern eine Menüleiste vorhanden ist). Nach-links-Taste Schließt ein Untermenü und gibt den Fokus wieder an das übergeordnete Menü zurück (sofern ein übergeordnetes Menü vorhanden ist) oder verschiebt die Auswahl zum vorhergehenden Menü in der Menüleiste (sofern eine Menüleiste vorhanden ist). Eingabetaste Öffnet ein Untermenü bzw. entspricht der gleichen Funktion wie Drücken und Loslassen der Maustaste in einer Zeile, wenn kein Untermenü vorhanden ist. Hinweis: Ein geöffnetes Menü können Sie durch Drücken der Tabulatortaste wieder verlassen. Treffen Sie eine Auswahl, oder blenden Sie das Menü durch Drücken der Taste <Esc> wieder aus. 404 Kapitel 4: Komponenten-Referenz Menu-Komponente verwenden (nur Flash Professional) Sie können mit der Menu-Komponente Menüs mit einzeln auswählbaren Elementen erstellen, ähnlich wie die Datei- und Bearbeiten-Menüs in den meisten Programmen. Außerdem können Sie mit der Menu-Komponente kontextsensitive Menüs erstellen, die angezeigt werden, wenn der Benutzer auf einen Hotspotbereich klickt oder eine Modifizierungstaste drückt. Verwenden Sie die Menu-Komponente zusammen mit der MenuBar-Komponente, um eine horizontale Menüleiste mit Menüs zu erstellen, die unter dem jeweiligen Element in der Menüleiste angezeigt werden. Ähnlich wie bei standardmäßigen Desktopmenüs unterstützt die Menu-Komponente Menüelemente, deren Funktionen folgenden allgemeinen Kategorien zugeordnet werden können: Diese Elemente lösen Ereignisse aus; erstellen Sie Code, um diese Ereignisse zu verarbeiten. Befehlsaktivatoren Untermenüanker Diese Elemente sind Anker, die Untermenüs öffnen. Optionsschaltflächen Diese Elemente werden in Gruppen verwendet, wobei immer nur eines der Elemente in einer Gruppe ausgewählt werden kann. Kontrollkästchen-Elemente false). Diese Elemente entsprechen einem Booleschen Wert (true oder Bei diesen Elementen handelt es sich um einfache horizontale Linien, mit denen die Elemente in einem Menü optisch in verschiedene Gruppen gegliedert werden. Trennzeichen Mit Menu-Komponenten arbeiten: Ansicht und Daten Im Prinzip besteht die Menu-Komponente aus einem Datenmodell und einer Ansicht, in der die Daten dargestellt werden. Die Menu-Klasse ist die Ansicht und enthält die visuellen Konfigurationsmethoden. Die MenuDataProvider-Klasse fügt dem globalen XMLPrototypobjekt Methoden hinzu (ähnlich wie die DataProvider-Klasse beim Array-Objekt); mit diesen Methoden können Sie extern Datenprovider erstellen und sie mehreren Menu-Instanzen hinzufügen. Der Datenprovider überträgt sämtliche Änderungen per Broadcast an alle zugehörigen Client-Ansichten. (Weitere Informationen finden Sie unter „MenuDataProviderKlasse“ auf Seite 429.) Eine Menu-Instanz ist eine hierarchische Sammlung von XML-Elementen, die einzelnen Menüelementen entsprechen. Die Attribute definieren das Verhalten und die Darstellung der entsprechenden Menüelemente auf dem Bildschirm. Die Sammlung kann leicht aus und in XML übersetzt werden; mit XML werden Menüs (menu-Tag) und Elemente (menuitem-Tag) beschrieben. Die integrierte ActionScript-XML-Klasse ist die Grundlage für das Modell, das der Menu-Komponente zugrunde liegt. Ein einfaches Menü mit zwei Elementen kann in XML mit zwei menuitem-Unterelementen beschrieben werden: <menu> <menuitem label="Up" /> <menuitem label="Down" /> </menu> Hinweis: Die Tag-Namen der XML-Knoten (menu und menuitem) sind dabei unwichtig; die Attribute und ihre verschachtelten Beziehungen werden im Menü verwendet. Menu-Komponente (nur Flash Professional) 405 Hierarchische Menüs Um hierarchische Menüs zu erstellen, betten Sie XML-Elemente wie folgt in einem übergeordneten XML-Element ein: <menu> <menuitem label="MenuItem A" > <menuitem label="SubMenuItem <menuitem label="SubMenuItem </menuitem> <menuitem label="MenuItem B" > <menuitem label="SubMenuItem <menuitem label="SubMenuItem </menuitem> </menu> 1-A" /> 2-A" /> 1-B" /> 2-B" /> Hinweis: Dadurch wird das übergeordnete Menüelement in einen Popupmenü-Anker umgewandelt; es werden also keine Ereignisse erzeugt, wenn es ausgewählt wird. XML-Attribute von Menüelementen Die Attribute eines XML-Menüelements legen fest, was angezeigt wird, wie sich das Menüelement verhält und wie es ActionScript zur Verfügung gestellt wird. In der folgenden Tabelle sind die Attribute eines XML-Menüelements beschrieben: Attributname Typ Standard Beschreibung label String undefined Der Text, der angezeigt wird, um ein Menüelement darzustellen. Dieses Attribut ist für alle Elementtypen erforderlich (ausgenommen Trennzeichen). type separator, check, radio, normal oder undefined Der Typ des Menüelements: separator (Trennzeichen), check box (Kontrollkästchen), radio button (Optionsschaltfläche) oder normal (Befehls- oder Untermenüaktivator). Falls dieses Attribut nicht existiert, ist der Standardwert normal. undefined 406 icon String undefined Der Verknüpfungsbezeichner einer Grafikressource. Dieses Attribut ist nicht erforderlich. Dieses Attribut ist nicht verfügbar für die Typen check, radio und separator. instanceName String undefined Ein Bezeichner, mit dem Sie die MenüelementInstanz aus der Stammmenü-Instanz referenzieren können. Ein Menüelement namens yellow kann beispielsweise als meinMenu.yellow referenziert werden. Dieses Attribut ist nicht erforderlich. groupName String undefined Ein Bezeichner, mit dem Sie verschiedene Optionsschaltflächen-Elemente in einer Optionsfeldgruppe verknüpfen können, und mit dem Sie den Zustand einer Optionsfeldgruppe aus der Stammmenü-Instanz bereitstellen können. Eine Optionsfeldgruppe namens colors kann beispielsweise als meinMenu.colors referenziert werden. Dieses Attribut ist nur für den Typ radio erforderlich. Kapitel 4: Komponenten-Referenz Attributname selected Typ Standard Beschreibung false, true false Ein Boolescher Wert, der angibt, ob ein check- oder radio-Element aktiviert (true) oder deaktiviert (false) ist. Dieses Attribut ist nicht erforderlich. true Ein Boolescher Wert, der angibt, ob dieses Menüelement ausgewählt werden kann (true) oder nicht (false). Dieses Attribut ist nicht erforderlich. oder false oder true (ein String oder Boolescher Wert) enabled false, true (aktiviert) oder false oder true (ein String oder Boolescher Wert) Menüelementtypen Es gibt vier Arten von Menüelementen, angegeben im Attribut type: <menu> <menuitem <menuitem <menuitem <menuitem > </menu> label="Normal Item" /> type="separator" /> label="Checkbox Item" type="check" instanceName="check_1"/> label="RadioButton Item" type="radio" groupName="radioGroup_1" / Normale Menüelemente Das Menüelement Normal Item besitzt kein Attribut type, d. h., das Attribut type hat den Standardwert normal. Normale Elemente können Befehlsaktivatoren oder Untermenüaktivatoren sein, abhängig davon, ob sie verschachtelte Unterelemente aufweisen. Trennzeichen-Menüelemente Menüelemente, deren type-Attribut auf separator gesetzt ist, dienen in einem Menü als visuelle Trennungen. Mit folgendem XML-Code werden die drei Menüelemente Top (Oben), Middle (Mitte) und Bottom (Unten) erstellt, wobei dazwischen jeweils ein Trennzeichen vorhanden ist: <menu> <menuitem <menuitem <menuitem <menuitem <menuitem </menu> label="Top" /> type="separator" /> label="Middle" /> type="separator" /> label="Bottom" /> Alle Trennzeichenelemente sind deaktiviert. Wenn Sie auf ein Trennzeichenelement klicken oder den Mauszeiger darüber ziehen, has dies keinen Effekt. Menu-Komponente (nur Flash Professional) 407 Kontrollkästchen-Menüelemente Menüelemente, deren type-Attribut auf check gesetzt ist, agieren innerhalb des Menüs als Kontrollkästchenelemente. Ist das Attribut selected auf true eingestellt, wird neben der Beschriftung des Menüelements ein Häkchen angezeigt. Bei Auswahl eines Kontrollkästchenelements wird sein Status automatisch umgeschaltet, und es erfolgt eine Broadcastübertragung eines change-Ereignisses an alle Listener im Stammmenü. Im folgenden Beispiel werden drei Kontrollkästchen-Menüelemente definiert: <menu> <menuitem label="Apples" type="check" instanceName="buyApples" selected="true" /> <menuitem label="Oranges" type="check" instanceName="buyOranges" selected="false" /> <menuitem label="Bananas" type="check" instanceName="buyBananas" selected="false" /> </menu> Über die Instanznamen in ActionScript können Sie direkt vom Menü selbst auf die Menüelemente zugreifen, wie im folgenden Beispiel gezeigt wird: meinMenu.setMenuItemSelected(meinMenu.buyapples, true); meinMenu.setMenuItemSelected(meinMenu.buyoranges, false); Hinweis: Das selected-Attribut sollte nur mit Hilfe der setMenuItemSelected(item, b)-Methode modifiziert werden. Sie können das selected-Attribut direkt untersuchen, es gibt jedoch einen Stringwert von true oder false zurück. Optionsfeld-Menüelemente Menüelemente, deren type-Attribut auf radio gesetzt ist, können gruppiert werden, sodass jeweils nur eines der Elemente ausgewählt werden kann. Eine Optionsfeldgruppe wird erstellt, indem Sie den Menüelementen denselben Wert für ihr groupName-Attribut zuweisen, wie im folgenden Beispiel gezeigt wird: <menu> <menuitem label="Center" type="radio" instanceName="center_item"/> <menuitem type="separator" /> <menuitem label="Top" type="radio" <menuitem label="Bottom" type="radio" <menuitem label="Right" type="radio" <menuitem label="Left" type="radio" </menu> groupName="alignment_group" groupName="alignment_group" groupName="alignment_group" groupName="alignment_group" groupName="alignment_group" /> /> /> /> Wenn der Benutzer eines dieser Elemente auswählt, ändert sich die aktuelle Auswahl automatisch, und ein change-Ereignis wird per Broadcast an alle Listener im Stammmenü übertragen. Das aktuell ausgewählte Element in einer Optionsfeldgruppe ist in ActionScript wie folgt über die selection-Eigenschaft verfügbar: var selectedMenuItem = meinMenu.alignment_group.selection; meinMenu.alignment_group = meinMenu.center_item; Jeder groupName-Wert muss innerhalb des Gültigkeitsbereichs der Stammmenü-Instanz eindeutig sein. Hinweis: Das selected-Attribut sollte nur mit Hilfe der setMenuItemSelected(item, b)-Methode modifiziert werden. Sie können das selected-Attribut direkt untersuchen, es gibt jedoch einen Stringwert von true oder false zurück. 408 Kapitel 4: Komponenten-Referenz Menüelemente für ActionScript bereitstellen Sie können jedem Menüelement im instanceName-Attribut einen eindeutigen Bezeichner zuweisen. Auf diese Weise kann direkt vom Stammmenü auf das Menüelement zugegriffen werden. Beispielsweise stellt der folgende XML-Code instanceName-Attribute für jedes Menüelement bereit: <menu> <menuitem label="Item 1" instanceName="item_1" /> <menuitem label="Item 2" instanceName="item_2" > <menuitem label="SubItem A" instanceName="sub_item_A" /> <menuitem label="SubItem B" instanceName="sub_item_B" /> </menuitem> </menu> Mit ActionScript können Sie wie folgt direkt von der Menu-Komponente aus auf die entsprechenden Objektinstanzen und ihre Attribute zugreifen: var aMenuItem = meinMenu.item_1; meinMenu.setMenuItemEnabled(item_2, true); var aLabel = meinMenu.sub_item_A.label; Hinweis: Jeder instanceName muss innerhalb des Gültigkeitsbereichs der StammmenüKomponenteninstanz (einschließlich der Untermenüs) eindeutig sein. Eigenschaften von Initialisierungsobjekten Der Parameter initObject (Initialisierungsobjekt) stellt ein fundamentales Konzept bei der Erstellung des Layouts für die Menu-Komponente dar. Beim initObject-Parameter handelt es sich um ein Objekt mit Eigenschaften. Jede Eigenschaft stellt eins der möglichen XML-Attribute eines Menüelements dar. (Eine Beschreibung der im initObject-Parameter zulässigen Eigenschaften finden Sie unter „XML-Attribute von Menüelementen“ auf Seite 406.) Der initObject-Parameter wird in den folgenden Methoden verwendet: • • • • Menu.addMenuItem() Menu.addMenuItemAt() MenuDataProvider.addMenuItem() MenuDataProvider.addMenuItemAt() Im nachstehenden Beispiel wird ein initObject-Parameter mit zwei Eigenschaften erstellt, label und instanceName: var i = meinMenu.addMenuItem({label:"meinMenuItem", instanceName:"meinFirstItem"}); Verschiedene Eigenschaften arbeiten zusammen, um einen bestimmten Typ von Menüelement zu erstellen. Sie weisen spezifische Eigenschaften zu, um bestimmte Typen von Menüelementen zu erstellen (normale Elemente, Trennzeichen, Kontrollkästchen oder Optionsfelder). Beispielsweise können Sie ein normales Menüelement mit dem folgenden initObject-Parameter initialisieren: meinMenu.addMenuItem({label:"meinMenuItem", enabled:true, icon:"meinIcon", instanceName:"meinFirstItem"}); Menu-Komponente (nur Flash Professional) 409 Sie können ein Trennzeichen-Menüelement mit dem folgenden initObject-Parameter initialisieren: meinMenu.addMenuItem({type:"separator"}); Sie können ein Kontrollkästchen-Menüelement mit dem folgenden initObject-Parameter initialisieren: meinMenu.addMenuItem({type:"check", label:"meinMenuCheck", enabled:false, selected:true, instanceName:"meinFirstCheckItem"}) Sie können ein Optionsfeld-Menüelement mit dem folgenden initObject-Parameter initialisieren: meinMenu.addMenuItem({type:"radio", label:"meinMenuRadio1", enabled:true, selected:false, groupName:"meinRadioGroup" instanceName:"meinFirstRadioItem"}) Sie sollten die Attribute instanceName, groupName und type eines Menüelements unbedingt als schreibgeschützt behandeln. Diese Attribute sollten nur während der Erstellung eines Elements gesetzt werden (z. B. in einem Aufruf an addMenuItem()). Das Modifizieren dieser Attribute nach der Erstellung kann zu unerwarteten Ergebnissen führen. Parameter für Menu-Komponenten Für die Menu-Komponente gibt es keine Authoring-Parameter. Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die MenuKomponente über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter „Menu-Klasse (nur Flash Professional)“ auf Seite 414. Anwendungen mit der Menu-Komponente erstellen Im folgenden Beispiel erstellt ein Anwendungsentwickler eine Anwendung. Dabei verwendet er die Menu-Komponente, um einige der Befehle bereitzustellen, die Benutzer erteilen können (wie z. B. Open (Öffnen), Close (Schließen), Save (Speichern) usw.) So erstellen Sie eine Anwendung mit der Menu-Komponente: 1 Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. 2 Ziehen Sie die Menu-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Dadurch wird die Menu-Komponente in die Bibliothek aufgenommen, ohne sie der Anwendung hinzuzufügen. Menüs werden mit ActionScript dynamisch erstellt. 3 Ziehen Sie eine Button-Komponente aus dem Bedienfeld Komponenten auf die Bühne. Durch Klicken auf die Schaltfläche wird das Menü aktiviert. 4 Geben Sie der Schaltfläche im Eigenschafteninspektor den Instanznamen commandBtn, und ändern Sie seine text-Eigenschaft in Commands. 410 Kapitel 4: Komponenten-Referenz 5 Geben Sie im Bedienfeld Aktionen im ersten Bild folgenden Code ein, um einen Ereignis- Listener hinzuzufügen, der auf click-Ereignisse der commandBtn-Instanz warten soll: var listener = new Object(); listener.click = function(evtObj) { var button = evtObj.target; if(button.menu == undefined) { // Menu-Instanz erstellen und einige Elemente hinzufügen button.menu = mx.controls.Menu.createMenu(); button.menu.addMenuItem("Open"); button.menu.addMenuItem("Close"); button.menu.addMenuItem("Save"); button.menu.addMenuItem("Revert"); // Einen change-Listener hinzufügen, um die Auswahl von Elementen // abzufangen var changeListener = new Object(); changeListener.change = function(event) { var item = event.menuItem; trace("Item selected: " + item.attributes.label); } button.menu.addEventListener("change", changeListener); } button.menu.show(button.x, button.y + button.height); } commandBtn.addEventListener("click", listener); 6 Wählen Sie Steuerung > Film testen. Klicken Sie auf die Schaltfläche Commands, um das Menü anzuzeigen. Wählen Sie Menüelemente aus, um die trace-Aktionen anzuzeigen, die im Ausgabefenster angeben, welches Element ausgewählt wurde. So verwenden Sie XML-Daten von einem Server, um ein Menü zu erstellen und mit Elementen zu füllen: 1 Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. 2 Ziehen Sie die Menu-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Dadurch wird die Menu-Komponente in die Bibliothek aufgenommen, ohne sie der Anwendung hinzuzufügen. Menüs werden mit ActionScript dynamisch erstellt. 3 Geben Sie im Bedienfeld Aktionen im ersten Bild folgenden Code ein, um ein Menü zu erstellen und Elemente hinzuzufügen: var meinMenu = mx.controls.Menu.createMenu(); // Eine XML-Datei importieren var loader = new XML(); loader.menu = meinMenu; loader.ignoreWhite = true; loader.onLoad = function(success) { // Bei Eingang von Daten diese an das Menü übergeben if (success) { this.menu.dataProvider = this.firstChild; } }; loader.load(url); Hinweis: Die Menüelemente werden durch die untergeordneten Objekte des ersten Unterobjekts (firstChild) des XML-Dokuments beschrieben. 4 Wählen Sie Steuerung > Film testen. Menu-Komponente (nur Flash Professional) 411 So verwenden Sie einen XML-String, um ein Menü zu erstellen und mit Elementen zu füllen: 1 Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. 2 Ziehen Sie die Menu-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Dadurch wird die Menu-Komponente in die Bibliothek aufgenommen, ohne sie der Anwendung hinzuzufügen. Menüs werden mit ActionScript dynamisch erstellt. 3 Geben Sie im Bedienfeld Aktionen im ersten Bild folgenden Code ein, um ein Menü zu erstellen und Elemente hinzuzufügen: // XML-String erstellen, der eine Menüdefinition enthält var s = ""; s += "<menu>"; s += "<menuitem label='Undo' />"; s += "<menuitem type='separator' />"; s += "<menuitem label='Cut' />"; s += "<menuitem label='Copy' />"; s += "<menuitem label='Paste' />"; s += "<menuitem label='Clear' />"; s += "<menuitem type='separator' />"; s += "<menuitem label='Select All' />"; s += "</menu>"; // XML-Objekt aus dem String erstellen var xml = new XML(s); xml.ignoreWhite = true; // Menu-Komponente aus dem firstChild des XML-Objekts erstellen var meinMenu = mx.controls.Menu.createMenu(_root, xml.firstChild); 4 Wählen Sie Steuerung > Film testen. So verwenden Sie die MenuDataProvider-Klasse, um ein Menü zu erstellen und mit Elementen zu füllen: 1 Wählen Sie Datei > Neu, und erstellen Sie ein Flash-Dokument. 2 Ziehen Sie die Menu-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Dadurch wird die Menu-Komponente in die Bibliothek aufgenommen, ohne sie der Anwendung hinzuzufügen. Menüs werden mit ActionScript dynamisch erstellt. 3 Geben Sie im Bedienfeld Aktionen im ersten Bild folgenden Code ein, um ein Menü zu erstellen und Elemente hinzuzufügen: // XML-Objekt erstellen, das als Factory dienen soll var xml = new XML(); // Das als nächstes erstellte Element erscheint nicht im Menü. // Der Methodenaufruf 'createMenu' (unten) erwartet // den Empfang eines Stammelements, dessen Unterobjekte // zu den Elementen werden. Dies ist eine einfache Methode, um das // Stammelement zu erstellen und ihm gleichzeitig // einen praktischen Namen zu geben. var theMenuElement = xml.addMenuItem("Edit"); 412 Kapitel 4: Komponenten-Referenz // Menüelemente hinzufügen theMenuElement.addMenuItem({label:"Undo"}); theMenuElement.addMenuItem({type:"separator"}); theMenuElement.addMenuItem({label:"Cut"}); theMenuElement.addMenuItem({label:"Copy"}); theMenuElement.addMenuItem({label:"Paste"}); theMenuElement.addMenuItem({label:"Clear", enabled:"false"}); theMenuElement.addMenuItem({type:"separator"}); theMenuElement.addMenuItem({label:"Select All"}); // Menu-Objekt erstellen var theMenuControl = mx.controls.Menu.createMenu(_root, theMenuElement); 4 Wählen Sie Steuerung > Film testen. Menu-Komponenten anpassen Das Menü passt seine Größe horizontal so an, dass es seinen breitesten Text einpassen kann. Sie können auch die Methode setSize() aufrufen, um die Größe der Komponente anzupassen. Symbole sollten eine maximale Größe von 16 x 16 Pixel aufweisen. Stile mit der Menu-Komponente verwenden Sie können die Methode setStyle() aufrufen, um den Stils des Menüs sowie seiner Menüelemente und Untermenüs zu ändern. Menu-Komponenten unterstützen folgende KranzStile: Stil Beschreibung themeColor Die Hintergrundfarbe des Menüs. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. color Farbe des Beschriftungstexts eines Menüelements. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil: mögliche Werte sind normal und italic (kursiv). fontWeight Das Schriftgewicht: mögliche Werte sind normal und bold (fett). rollOverColor Die Rollover-Farbe von Menüelementen. selectionColor Ausgewählte Elemente und Elemente, die Untermenüs enthalten. selectionDisabledColor Ausgewählte Elemente und Elemente, die Untermenüs enthalten und die deaktiviert sind. textRollOverColor Die Textfarbe, wenn Sie den Mauszeiger darüber ziehen. textDecoration Textauszeichnung; mögliche Werte sind none (keine) und underline (unterstrichen). textDisabledColor Die Farbe von deaktiviertem Text. textSelectedColor Die Textfarbe eines ausgewählten Menüelements. popupDuration Die Dauer des Übergangs beim Öffnen eines Menüs. Der Wert 0 legt fest, dass kein Übergang stattfindet. Menu-Komponente (nur Flash Professional) 413 Skins mit der Menu-Komponente verwenden Aktuelle Informationen zu diesem Merkmal können Sie über den Befehl Aktualisieren auf der Registerkarte Hilfe abrufen. Menu-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > ScrollView > ScrollSelectList > Menu ActionScript-Klassenname mx.controls.Menu Übersicht: Methoden der Menu-Klasse Methode Beschreibung Menu.addMenuItem() Fügt dem Menü ein Menüelement hinzu. Menu.addMenuItemAt() Fügt dem Menü ein Menüelement an einer bestimmten Position hinzu. Menu.createMenu() Erstellt eine Instanz der Menu-Klasse. Dies ist eine statische Methode. Menu.getMenuItemAt() Ruft eine Referenz auf ein Menüelement an einer bestimmten Position ab. Menu.hide() Schließt ein Menü. Menu.indexOf() Gibt den Index eines Menüelements zurück. Menu.removeAll() Entfernt alle Elemente aus einem Menü. Menu.removeMenuItemAt() Entfernt ein Menüelement an einer bestimmten Position. Menu.setMenuItemEnabled() Gibt an, ob ein Menüelement aktiviert ist (true) oder nicht (false). Menu.setMenuItemSelected() Gibt an, ob ein Menüelement ausgewählt ist (true) oder nicht (false). Menu.show() Öffnet ein Menü an einer bestimmten Position oder an seiner vorherigen Position. Erbt alle Methoden von UIObject, UIComponent, ScrollView und ScrollSelectList. Übersicht: Eigenschaften der Menu-Klasse Eigenschaft Beschreibung Menu.dataProvider Die Datenquelle für ein Menü. Erbt alle Eigenschaften von UIObject, UIComponent, ScrollView und ScrollSelectList. 414 Kapitel 4: Komponenten-Referenz Übersicht: Ereignisse der Menu-Klasse Ereignis Beschreibung Menu.change Broadcastübertragung, wenn ein Benutzer ein Element auswählt. Menu.menuHide Broadcastübertragung, wenn ein Menü geschlossen wird. Menu.menuShow Broadcastübertragung, wenn ein Menü geöffnet wird. Menu.rollOut Broadcastübertragung, wenn der Mauszeiger von einem Element weggezogen wird. Menu.rollOver Broadcastübertragung, wenn der Mauszeiger über ein Element gezogen wird. Erbt alle Ereignisse von UIObject, UIComponent, ScrollView und ScrollSelectList. Menu.addMenuItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meinMenu.addMenu(initObject) Verwendung 2: meinMenu.addMenu(childMenuItem) Parameter Ein Objekt, das Eigenschaften enthält, die die Attribute eines Menüelements initialisieren. Weitere Informationen hierzu finden Sie unter „XML-Attribute von Menüelementen“ auf Seite 406. initObject childMenuItem Ein XML-Knotenobjekt. Rückgaben Eine dem XML-Knoten hinzugefügte Referenz. Beschreibung Methode; Mit Verwendung 1 wird ein Menüelement am Ende des Menüs hinzugefügt. Das Menüelement wird aus den im initObject-Parameter bereitgestellten Werten erstellt. Mit Verwendung 2 wird ein Menüelement, bei dem es sich um einen vorgefertigten XML-Knoten (in Form eines XML-Objekts) handelt, an das Ende des Menüs hinzugefügt. Durch das Hinzufügen eines vorgefertigten Knotens wird der Knoten aus seiner vorherigen Position entfernt. Menu-Komponente (nur Flash Professional) 415 Beispiel Verwendung 1: Im folgenden Beispiel wird ein Menüelement an ein Menü angehängt: meinMenu.addMenuItem({ label:"Item 1", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"meineRadioGroup" } ); Verwendung 2: Im folgenden Beispiel wird ein Knoten aus einem Menü in ein anderes Menü verschoben: meinMenu.addMenuItem(meinSecondMenu.getMenuItemAt(meinSecondMenu, 3)); Menu.addMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meinMenu.addMenuItemAt(index, initObject) Verwendung 2: meinMenu.addMenuItemAt(index, childMenuItem) Parameter index Eine Ganzzahl, die angibt, an welcher Stelle (unter den untergeordneten Knoten) ein Element hinzugefügt wird. Ein Objekt, das Eigenschaften enthält, die die Attribute eines Menüelements initialisieren. Weitere Informationen hierzu finden Sie unter „XML-Attribute von Menüelementen“ auf Seite 406. initObject childMenuItem Ein XML-Knotenobjekt. Rückgaben Eine dem XML-Knoten hinzugefügte Referenz. Beschreibung Methode; Mit Verwendung 1 wird ein Menüelement (untergeordneter Knoten) an der angegebenen Position im Menü hinzugefügt. Das Menüelement wird aus den im initObjectParameter bereitgestellten Werten erstellt. Mit Verwendung 2 wird ein Menüelement, bei dem es sich um einen vorgefertigten XML-Knoten (in Form eines XML-Objekts) handelt, an der angegebenen Position im Menü hinzugefügt. Durch das Hinzufügen eines vorgefertigten Knotens wird der Knoten aus seiner vorherigen Position entfernt. 416 Kapitel 4: Komponenten-Referenz Beispiel Verwendung 1: Im folgenden Beispiel wird ein neuer Knoten als zweiter untergeordneter Knoten im Stamm des Menüs hinzugefügt: meinMenu.addMenuItemAt(1, { label:"Item 1", instanceName:"radioItem1", type:"radio", selected:false, enabled:true, groupName:"meineRadioGroup" } ); Verwendung 2: Im folgenden Beispiel wird ein Knoten aus einem Menü zum vierten untergeordneten Knoten im Stamm eines anderen Menüs verschoben: meinMenu.addMenuItemAt(3, meinSecondMenu.getMenuItemAt(meinSecondMenu, 3)); Menu.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.change = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("change", listenerObject) Beschreibung Ereignis. Broadcastübertragung an alle registrierten Listener, wann immer ein Benutzer eine Änderung in dem Menü hervorruft. V2-Komponenten verwenden ein Dispatcher/Listener-Ereignismodell. Wenn eine MenuKomponente per Broadcast ein change-Ereignis überträgt, wird das Ereignis von einer Funktion (auch als Prozedur bezeichnet) verarbeitet, die einem von Ihnen erstellten Listener-Objekt (listenerObject) zugewiesen ist. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Menu.change-Ereignisses weist die folgenden zusätzlichen Eigenschaften auf: • • • • Eine Referenz auf die MenuBar-Instanz, die dem Zielmenü übergeordnet ist. Wenn das Zielmenü keinem anderen Menü angehört, ist dieser Wert undefined. menu Eine Referenz auf die Menu-Instanz, in der sich das Zielelement befindet. menuItem Ein XML-Knoten, bei dem es sich um das ausgewählte Menüelement handelt. groupName Eine Zeichenfolge, die den Namen der Optionsfeldgruppe angibt, zu der das Element gehört. Wenn das Element sich nicht in einer Optionsfeldgruppe befindet, ist dieser Wert undefined. menuBar (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Menu-Komponente (nur Flash Professional) 417 Beispiel Im folgenden Beispiel wird eine Prozedur namens listener definiert und an die Methode meinMenu.addEventListener() als zweiter Parameter weitergegeben. Das Ereignisobjekt wird von der change-Prozedur im Parameter event erfasst. Wenn das change-Ereignis als Broadcastübertragung verteilt wird, wird eine trace-Anweisung an das Bedienfeld Ausgabe gesendet. listener = new Object(); listener.change = function(evt){ trace("Ausgewähltes Menüelement: "+evt.menuItem.attributes.label); } meinMenu.addEventListener("change", listener); Menu.createMenu() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Menu.createMenu(parent, mdp) Parameter parent Eine MovieClip-Instanz. Der Movieclip ist die übergeordnete Komponente, die die neue Menu-Instanz enthält. Dieser Parameter ist optional. Die MenuDataProvider-Instanz, die diese Menu-Instanz beschreibt. Dieser Parameter ist optional. mdp Rückgaben Eine Referenz auf die neue Menu-Instanz. Beschreibung Methode (statisch). Instanziiert eine Menu-Instanz und weist diese optional der angegebenen übergeordneten Instanz (parent) zu, wobei die angegebene MenuDataProvider-Instanz als Datenquelle für die Menüelemente dient. Wenn das Argument parent ausgelassen wird oder keinen Wert aufweist, wird das Menü der Zeitleiste _root zugewiesen. Wenn das Argument mdp ausgelassen wird oder keinen Wert aufweist, hat das Menü keine Elemente. Sie müssen die Methoden addMenu() oder setDataProvider() aufrufen, um das Menü mit Elementen zu füllen. 418 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird mit Zeile 1 eine MenuDataProvider-Instanz erstellt, bei der es sich um ein XML-Objekt handelt, das mit den Methoden der MenuDataProvider-Klasse ausgestattet ist. In der nächsten Zeile wird ein Menüelement New (Neu) mit einem Untermenü File (Datei), Project (Projekt) und Resource (Ressource) hinzugefügt. Im nächsten Codeblock werden dem Hauptmenü weitere Elemente hinzugefügt. Der dritte Codeblock erstellt ein leeres Menü, das meinParentClip zugewiesen ist, füllt es mit der Datenquelle meinMDP und öffnet es an den Koordinaten 100, 20: var meinMDP = new XML(); var newItem = meinMDP.addMenuItem({label:"New"}); newItem.addMenuItem({label:"File..."}); newItem.addMenuItem({label:"Project..."}); newItem.addMenuItem({label:"Resource..."}); meinMDP.addMenuItem({label:"Open", instanceName:"miOpen"}); meinMDP.addMenuItem({label:"Save", instanceName:"miSave"}); meinMDP.addMenuItem({type:"separator"}); meinMDP.addMenuItem({label:"Quit", instanceName:"miQuit"}); var meinMenu = mx.controls.Menu.createMenu(meinParentClip, meinMDP); meinMenu.show(100, 20); Testen Sie diesen Code, indem Sie ihn im Bedienfeld Aktionen in Bild 1 der Hauptzeitleiste platzieren. Ziehen Sie eine Menu-Komponente aus dem Bedienfeld Komponenten auf die Bühne, und löschen Sie sie. Dadurch wird die Komponente der Bibliothek hinzugefügt, ohne sie im Dokument zu platzieren. Menu.dataProvider Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.dataProvider Beschreibung Eigenschaft; Die Datenquelle für Elemente in einer Menu-Komponente. Menu.dataProvider ist ein XML-Knotenobjekt. Durch Festlegen dieser Eigenschaft wird die bestehende Datenquelle des Menüs ersetzt. Der Standardwert ist undefined. Hinweis: Allen XML- oder XMLNode-Instanzen werden automatisch die Methoden und Eigenschaften der MenuDataProvider-API zugewiesen, wenn sie mit der Menu-Komponente verwendet werden. Menu-Komponente (nur Flash Professional) 419 Beispiel Im folgenden Beispiel wird eine XML-Datei importiert und der Menu.dataProviderEigenschaft zugewiesen: var meinMenuDP = new XML(); meinMenuDP.load("http://meinServer.meineDomaene.com/source.xml"); meinMenuDP.onLoad = function(){ meinMenuControl.dataProvider = meinMenuDP; } Menu.getMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.getMenuItemAt(index) Parameter index Eine Ganzzahl, die den Index des Knotens im Menü angibt. Rückgaben Eine Referenz auf den angegebenen Knoten. Beschreibung Methode; Gibt eine Referenz auf den angegebenen untergeordneten Knoten (Child-Knoten) des Menüs zurück. Beispiel Im folgenden Beispiel wird eine Referenz auf den zweiten Child-Knoten in meinMenu abgerufen und der Wert in die Variable meinItem kopiert: var meinItem = meinMenu.getMenuItemAt(1); Menu.hide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.hide() Parameter index 420 Der Index des Menüelements. Kapitel 4: Komponenten-Referenz Rückgaben Keine. Beschreibung Methode; Schließt ein Menü mit optionalen Übergangseffekten. Beispiel Im folgenden Beispiel wird ein erweitertes Menü geschlossen: meinMenu.hide(); Siehe auch Menu.show() Menu.indexOf() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.indexOf(item) Parameter item Eine Referenz auf einen XML-Knoten, der ein Menüelement beschreibt. Rückgaben Der Index des angegebenen Menüelements. Wenn das Element nicht zu diesem Menü gehört, wird undefined zurückgegeben. Beschreibung Methode; Gibt den Index des angegebenen Menüelements innerhalb dieser Menüinstanz zurück. Beispiel Im folgenden Beispiel wird dem übergeordneten Element (Parent) ein Menüelement hinzugefügt. Anschließend wird der Index des Elements innerhalb seines übergeordneten Elements abgerufen: var meinItem = meinMenu.addMenuItem({label:"That item"}); var meinIndex = meinMenu.indexOf(meinItem); Menu-Komponente (nur Flash Professional) 421 Menu.menuHide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.menuHide = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("menuHide", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wann immer ein Menü geschlossen wird. V2-Komponenten verwenden ein Dispatcher/Listener-Ereignismodell. Wenn eine MenuKomponente ein menuHide-Ereignis absetzt, wird das Ereignis von einer Funktion (auch als Prozedur bezeichnet), verarbeitet, die einem von Ihnen erstellten Listener-Objekt (listenerObject) zugewiesen ist. Sie rufen die addEventListener()-Methode auf und übergeben ihr den Namen der Prozedur sowie den Namen des Listener-Objekts in Form von Parametern. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Menu.menuHide-Ereignisses verfügt über zwei zusätzliche Eigenschaften: • • menuBar Eine Referenz auf die MenuBar-Instanz, die dem Zielmenü übergeordnet ist. Wenn das Zielmenü zu keiner MenuBar-Instanz gehört, ist dieser Wert undefined. menu Eine Referenz auf die Menu-Instanz, die ausgeblendet ist. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Prozedur namens form definiert und als zweiter Parameter an die Methode meinMenu.addEventListener() übergegeben. Das Ereignisobjekt wird von der menuHide-Prozedur im Parameter event erfasst. Bei einer Broadcastübertragung des menuHideEreignisses wird eine trace-Anweisung wie folgt an das Bedienfeld Ausgabe gesendet: form = new Object(); form.menuHide = function(evt){ trace("Menü geschlossen: "+evt.menu); } meinMenu.addEventListener("menuHide", form); Siehe auch Menu.menuShow 422 Kapitel 4: Komponenten-Referenz Menu.menuShow Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.menuShow = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("menuShow", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wann immer ein Menü geöffnet wird. Alle übergeordneten Knoten enthalten Menüs mit untergeordneten Knoten. V2-Komponenten verwenden ein Dispatcher/Listener-Ereignismodell. Wenn eine MenuKomponente ein menuShow-Ereignis absetzt, wird das Ereignis von einer Funktion (auch als Prozedur bezeichnet), verarbeitet, die einem von Ihnen erstellten Listener-Objekt (listenerObject) zugewiesen ist. Sie rufen die addEventListener()-Methode auf und übergeben ihr die Namen der Prozedur und des Listener-Objekts in Form von Parametern. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Menu.menuShow-Ereignisses verfügt über zwei zusätzliche Eigenschaften: • • Eine Referenz auf die MenuBar-Instanz, die dem Zielmenü übergeordnet ist. Wenn das Zielmenü nicht zu einem Menü gehört, ist dieser Wert undefined. menu Eine Referenz auf die Menu-Instanz, die angezeigt wird. menuBar (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Prozedur namens form definiert und als zweiter Parameter an die Methode meinMenu.addEventListener() übergegeben. Das Ereignisobjekt wird von der menuShow-Prozedur im Parameter evtObject erfasst. Bei einer Broadcastübertragung des menuShow-Ereignisses wird eine trace-Anweisung wie folgt an das Bedienfeld Ausgabe gesendet: form = new Object(); form.menuShow = function(evt){ trace("Menü geöffnet: "+evt.menu); } meinMenu.addEventListener("menuShow", form); Siehe auch Menu.menuHide Menu-Komponente (nur Flash Professional) 423 Menu.removeAll() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.removeAll() Parameter Keine. Rückgaben Keine. Beschreibung Methode; Entfernt alle Elemente und aktualisiert das Menü. Beispiel Im folgenden Beispiel werden alle Knoten aus dem Menü entfernt: meinMenu.removeAll(); Menu.removeMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.removeMenuItemAt(index) Parameter index Der Index des zu entfernenden Menüelements. Rückgaben Eine Referenz auf das zurückgegebene Menüelement (XML-Knoten). Wenn an dieser Position kein Element vorhanden ist, wird der Wert undefined zurückgegeben. Beschreibung Methode; Entfernt das Menüelement und alle ihm untergeordneten Elemente an der angegebenen Indexposition. Wenn an dieser Indexposition kein Menüelement vorhanden ist, hat der Aufruf dieser Methode keine Auswirkungen. 424 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird ein Menüelement an Indexposition 3 entfernt: var item = meinMenu.removeMenuItemAt(3); Menu.rollOut Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.rollOut = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("rollOut", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn der Mauszeiger von einem Menüelement weggezogen wird. V2-Komponenten verwenden ein Dispatcher/Listener-Ereignismodell. Wenn eine MenuKomponente per Broadcast ein rollOut-Ereignis überträgt, wird das Ereignis von einer Funktion (auch als Prozedur bezeichnet) verarbeitet, die einem von Ihnen erstellten Listener-Objekt (listenerObject) zugewiesen ist. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Menu.rollOut-Ereignisses verfügt über eine zusätzliche Eigenschaft: • Eine Referenz auf das Menüelement (XML-Knoten), von dem der Mauszeiger weggezogen wurde. menuItem (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Prozedur namens form definiert und als zweiter Parameter an die Methode meinMenu.addEventListener() übergegeben. Das Ereignisobjekt wird von der rollOut-Prozedur im Parameter event erfasst. Bei einer Broadcastübertragung des rollOutEreignisses wird eine trace-Anweisung wie folgt an das Bedienfeld Ausgabe gesendet: form = new Object(); form.rollOut = function(evt){ trace("Menü rollOut: "+evt.menuItem.attributes.label); } meinMenu.addEventListener("rollOut", form); Menu-Komponente (nur Flash Professional) 425 Menu.rollOver Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung listenerObject = new Object(); listenerObject.rollOver = function(eventObject){ // Hier Code eingeben } meinMenu.addEventListener("rollOver", listenerObject) Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn der Mauszeiger über ein Menüelement gezogen wird. V2-Komponenten verwenden ein Dispatcher/Listener-Ereignismodell. Wenn eine MenuKomponente per Broadcast ein change-Ereignis überträgt, wird das Ereignis von einer Funktion (auch als Prozedur bezeichnet) verarbeitet, die einem von Ihnen erstellten Listener-Objekt (listenerObject) zugewiesen ist. Rufen Sie die Methode addEventListener() auf, und übergeben Sie ihr den Namen der Prozedur als Parameter. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Prozedur übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Das Ereignisobjekt des Menu.rollOver-Ereignisses verfügt über eine zusätzliche Eigenschaft: Eine Referenz auf das Menüelement (XML-Knoten), über das der Mauszeiger gezogen wurde. menuItem (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird eine Prozedur namens form definiert und als zweiter Parameter an die Methode meinMenu.addEventListener() übergegeben. Das Ereignisobjekt wird von der rollOver-Prozedur im Parameter event erfasst. Bei einer Broadcastübertragung des rollOverEreignisses wird eine trace-Anweisung wie folgt an das Bedienfeld Ausgabe gesendet: form = new Object(); form.rollOver = function(evt){ trace("Menü rollOver: "+evt.menuItem.attributes.label); } meinMenu.addEventListener("rollOver", form); 426 Kapitel 4: Komponenten-Referenz Menu.setMenuItemEnabled() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.setMenuItemEnabled(item, enable) Parameter item Ein XML-Knoten. Der Knoten des Zielmenüelements im Datenprovider. enable (false). Ein Boolescher Wert, der angibt, ob ein Element aktiviert ist (true) oder nicht Rückgaben Keine. Beschreibung Methode; Ändert das enabled-Attribut des Zielelements in den durch den Parameter enable angegebenen Status. Wenn dieser Aufruf zu einer Statusänderung führt, wird das Element mit seinem neuen Status dargestellt. Beispiel Im folgenden Beispiel wird das zweite untergeordnete Element von meinMenu deaktiviert: var meinItem = meinMenu.getMenuItemAt(1); meinMenu.setMenuItemEnabled(meinItem, false); Siehe auch Menu.setMenuItemSelected() Menu.setMenuItemSelected() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.setMenuItemSelected(item, select) Menu-Komponente (nur Flash Professional) 427 Parameter item Ein XML-Knoten. Der Knoten des Zielmenüelements im Datenprovider. Ein Boolescher Wert, der angibt, ob das Element ausgewählt ist (true) oder nicht Wenn es sich bei dem Element um ein Kontrollkästchen handelt, ist das Häkchen entweder sichtbar oder nicht sichtbar. Ist das Element ein Optionsfeld, wird das Element in der Optionsfeldgruppe zur aktuellen Auswahl. select (false). Rückgaben Keine. Beschreibung Methode; Ändert das selected-Attribut des Elements in den durch den select-Parameter angegebenen Status. Wenn dieser Aufruf zu einer Statusänderung führt, wird das Element mit seinem neuen Status dargestellt. Dies ist nur für Elemente von Bedeutung, deren type-Attribut auf radio oder check gesetzt ist, da veranlasst wird, dass der Auswahlpunkt bzw. das Häkchen angezeigt oder nicht angezeigt werden. Wenn Sie diese Methode für ein Element aufrufen, dessen type-Attribut auf normal oder separator eingestellt ist, hat sie keine Auswirkungen. Beispiel Im folgenden Beispiel wird die Auswahl des zweiten untergeordneten Elements von meinMenu aufgehoben: var meinItem = meinMenu.getMenuItemAt(1); meinMenu.setMenuItemSelected(meinItem, false); Menu.show() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.show(x, y) Parameter x Die x-Koordinate. y Die y-Koordinate. Rückgaben Keine. 428 Kapitel 4: Komponenten-Referenz Beschreibung Methode; Öffnet ein Menü an einer bestimmten Position. Die Größe des Menüs wird automatisch angepasst, sodass alle Elemente der obersten Ebene sichtbar sind. Die obere linke Ecke wird an der Position im Koordinatensystem platziert, die durch die übergeordnete Instanz der Komponente bereitgestellt wird. Wenn die x- und y-Parameter ausgelassen werden, wird das Menü an seiner vorherigen Position angezeigt. Beispiel Im folgenden Beispiel wird ein Menü erweitert: meinMenu.show(10, 10); Siehe auch Menu.hide() MenuDataProvider-Klasse Die MenuDataProvider-Klasse ist eine Decorator-API (Mix-In), die der globalen XMLNodeKlasse Funktionalität hinzufügt. Durch diese Funktionalität können XML-Instanzen, die einer dataProvider-Menüeigenschaft zugewiesen sind, sowohl ihre eigenen Daten als auch die zugehörigen Menüansichten über die MenuDataProvider-API manipulieren. Konzepte: • Die MenuDataProvider-Klasse ist eine Decorator-API (Mix-In). Zu ihrer Verwendung ist keine Instanziierung erforderlich. • Menüs akzeptieren XML nativ als dataProvider-Eigenschaft. • Wenn eine Menu-Klasse instanziiert wird, werden alle XML-Instanzen in der SWF-Datei • • • durch die MenuDataProvider-API ausgestattet. Eine Broadcastübertragung der Ereignisse an die Steuerelemente des Menüs erfolgt ausschließlich durch Methoden der MenuDataProvider-API. Sie können dennoch native XML-Methoden einsetzen, jedoch handelt es sich hierbei nicht um Broadcastereignisse, die die Menüansichten aktualisieren. ■ Verwenden Sie Methoden der MenuDataProvider-API zur Steuerung des Datenmodells. ■ Verwenden Sie XML-Methoden für schreibgeschützte Vorgänge, wie z. B. das Navigieren in der Menühierarchie. Bei allen Elementen im Menü handelt es sich um XML-Objekte, die mit der MenuDataProvider-API ausgestattet sind. Änderungen an den Elementattributen werden auf dem Bildschirm erst dann reflektiert, wenn eine Aktualisierung stattgefunden hat. Menu-Komponente (nur Flash Professional) 429 Übersicht: Methoden der MenuDataProvider-Klasse Methode Beschreibung MenuDataProvider.addMenuItem() Fügt ein untergeordnetes Element hinzu. MenuDataProvider.addMenuItemAt() Fügt ein untergeordnetes Element an einer bestimmten Stelle hinzu. MenuDataProvider.getMenuItemAt() Ruft eine Referenz auf ein Menüelement an einer bestimmten Position ab. MenuDataProvider.indexOf() Gibt den Index eines angegebenen Menüelements zurück. MenuDataProvider.removeMenuItem() Entfernt ein Menüelement. MenuDataProvider.removeMenuItemAt() Entfernt ein Menüelement an einer bestimmten Position. MenuDataProvider.addMenuItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meinMenu.addMenuItem(initObject) Verwendung 2: meinMenu.addMenuItem(childMenuItem) Parameter Ein Objekt, das bestimmte Attribute enthält, die die Attribute eines Menüelements initialisieren. Weitere Informationen finden Sie unter „XML-Attribute von Menüelementen“ auf Seite 406. initObject childMenuItem Ein XML-Knoten. Rückgaben Eine Referenz auf ein XMLNode-Objekt. Beschreibung Methode; Mit Verwendung 1 wird dem Ende eines übergeordneten Menüelements (bei dem es sich um das Menü selbst handeln kann) ein untergeordnetes Element hinzugefügt. Das Menüelement wird aus den im Parameter initObject übergebenen Werten erstellt. Mit Verwendung 2 wird ein untergeordnetes Element, das im angegebenen XML-Parameter childMenuItem definiert ist, an das Ende eines übergeordneten Menüelements hinzugefügt. 430 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird einem angegebenen Knoten in dem Menü ein neuer Knoten hinzugefügt: meinMenuDP.firstChild.addMenuItem("Inbox", { label:"Item 1", icon:"radioItemIcon", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"meineRadioGroup" } ); MenuDataProvider.addMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meinMenu.addMenuItemAt(index, initObject) Verwendung 2: meinMenu.addMenuItemAt(index, childMenuItem) Parameter index Eine Ganzzahl. Ein Objekt, das bestimmte Attribute enthält, die die Attribute eines Menüelements initialisieren. Weitere Informationen finden Sie unter „XML-Attribute von Menüelementen“ auf Seite 406. initObject childMenuItem Ein XML-Knoten. Rückgaben Eine dem XML-Knoten hinzugefügte Referenz. Beschreibung Methode; Mit Verwendung 1 wird ein untergeordnetes Objekt an der angegebenen Indexposition im übergeordneten Menüelement (bei dem es sich um das Menü selbst handeln kann) hinzugefügt. Das Menüelement wird aus den im Parameter initObject übergebenen Werten erstellt. Mit Verwendung 2 wird ein untergeordnetes Element, das im angegebenen XMLParameter childMenuItem definiert ist, an der angegebenen Indexposition eines übergeordneten Menüelements hinzugefügt. Beispiel Verwendung 1: Im folgenden Beispiel wird ein neuer Knoten als zweiter untergeordneter Knoten im Stamm des Menüs hinzugefügt: meinMenu.addMenuItemAt(1, { label:"Item 1", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"meineRadioGroup" } ); Menu-Komponente (nur Flash Professional) 431 MenuDataProvider.getMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.getMenuItemAt(index) Parameter Eine Ganzzahl, die die Position des Menüs angibt. index Rückgaben Eine Referenz auf den angegebenen XML-Knoten. Beschreibung Methode; Gibt eine Referenz auf das angegebene untergeordnete Menüelement des aktuellen Menüelements zurück. Beispiel Im folgenden Beispiel wird der abzurufende Knoten gefunden und anschließend das zweite untergeordnete Element von meinMenuItem abgerufen: var meinMenuItem = meinMenuDP.firstChild.firstChild; meinMenuItem.getMenuItemAt(1); MenuDataProvider.indexOf() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.indexOf(item) Parameter item Eine Referenz auf den XML-Knoten, der das Menüelement beschreibt. Rückgaben Der Index des angegebenen Menüelements. Wenn das Element nicht zu diesem Menü gehört, wird der Wert undefined zurückgegeben. Beschreibung Methode; Gibt den Index des angegebenen Menüelements innerhalb dieses übergeordneten Menüelements zurück. 432 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird ein Menüelement zu einem übergeordneten Menüelement hinzugefügt und der Index des Elements abgerufen: var meinItem = meinParentItem.addMenuItem({label:"Element"}); var meinIndex = meinParentItem.indexOf(meinItem); MenuDataProvider.removeMenuItem() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.removeMenuItem() Parameter Keine. Rückgaben Eine Referenz auf das entfernte Menüelement (XML-Knoten); sollte ein Fehler auftreten, wird undefined zurückgegeben. Beschreibung Methode; Entfernt das Zielelement und jegliche untergeordnete Knoten. Beispiel Im folgenden Beispiel wird meinMenuItem aus seinem übergeordneten Element entfernt: meinMenuItem.removeMenuItem(); MenuDataProvider.removeMenuItemAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinMenu.removeMenuItemAt(index) Parameter index Der Index des Menüelements. Rückgaben Eine Referenz auf das entfernte Menüelement. Wenn an dieser Position kein Element vorhanden ist, wird der Wert undefined zurückgegeben. Menu-Komponente (nur Flash Professional) 433 Beschreibung Methode; Entfernt das untergeordnete Element des durch den index-Parameter angegebenen Menüelements. Wenn an dieser Indexposition kein Menüelement vorhanden ist, hat der Aufruf dieser Methode keine Auswirkungen. Beispiel Im folgenden Beispiel wird das vierte Element entfernt: meinMenuDP.removeMenuItemAt(3); MenuBar-Komponente (nur Flash Professional) Mit Hilfe der MenuBar-Komponente können Sie eine horizontale Menüleiste mit Popupmenüs und Befehlen erstellen, wie etwa die Menüleisten Datei und Bearbeiten, die in den meisten gängigen Softwareanwendungen (z. B. Macromedia Flash) zu finden sind. Die Menüleiste ergänzt die Menu-Komponente, indem sie eine anklickbare Oberfläche bereitstellt, über die Menüs angezeigt und ausgeblendet werden können, die bei Maus- und Tastaturaktivitäten eine Gruppe bilden. Mit Hilfe der Menüleiste können Sie in wenigen Schritten ein Anwendungsmenü erstellen. Um eine Menüleiste zu erstellen, können Sie ihr entweder einen XML-Datenprovider zuweisen, der eine Reihe von Menüs beschreibt, oder die Methode MenuBar.addMenu() verwenden, um Menüinstanzen nacheinander hinzuzufügen. Jedes Menü in der Menüleiste setzt sich aus zwei Teilen zusammen: dem Menü und der Schaltfläche, die das Öffnen des Menüs verursacht (dem sogenannten Menüaktivator). Diese anklickbaren Menüaktivatoren werden in der Menüleiste als Bezeichnungstext dargestellt, dessen Hervorhebungszustände durch eingelassenen und nach außen gestellten Rand gekennzeichnet sind und auf eine Interaktion durch Maus oder Tastatur reagieren. Wenn Sie auf einen Menüaktivator klicken, wird das entsprechende Menü darunter geöffnet. Das Menü bleibt solange aktiviert, bis erneut auf den Aktivator geklickt, ein Menüelement ausgewählt oder auf eine Stelle außerhalb des Menübereichs geklickt wird. Abgesehen von der Erstellung von Menüaktivatoren, die Menüs anzeigen und ausblenden, wird über die Menüleiste das Gruppenverhalten für eine Reihe von Menüs definiert. Auf diese Weise kann ein Benutzer eine große Anzahl von Befehlen überblicken, indem er den Mauszeiger über eine Reihe von Aktivatoren zieht oder mit Hilfe der Pfeiltasten durch die Listen navigiert. Mausund Tastaturinteraktivität wirken zusammen, sodass der Benutzer innerhalb der MenuBarKomponente von einem Menü zum nächsten springen kann. Ein Benutzer kann keinen Bildlauf durch die Menüs auf einer Menüleiste durchführen. Sollten Menüs die Breite der Menüleiste überschreiten, werden sie maskiert. Sie können die MenuBar-Komponente nicht für Bildschirmleseprogramme verfügbar machen. 434 Kapitel 4: Komponenten-Referenz Mit der MenuBar-Komponente interagieren (nur Flash Professional) Sie können Maus und Tastatur verwenden, um mit einer MenuBar-Komponente zu interagieren. Wenn Sie den Mauszeiger über einen Menüaktivator ziehen, wird die Beschriftung des Aktivators durch einen nach außen gestellten Rand hervorgehoben. Verfügt eine MenuBar-Instanz über den Eingabefokus (entweder durch Klicken oder Verwendung der Tabulatortaste), kann sie mit Hilfe der folgenden Tasten gesteuert werden: Taste Beschreibung Nach-unten-Taste Verschiebt die Auswahl um eine Menüzeile nach unten. Nach-oben-Taste Verschiebt die Auswahl um eine Menüzeile nach oben. Nach-rechts-Taste Verschiebt die Auswahl zur nächsten Schaltfläche. Nach-links-Taste Verschiebt die Auswahl zur vorherigen Schaltfläche. Eingabe-/Escape-Taste Schließt ein geöffnetes Menü. Hinweis: Ein geöffnetes Menü kann nicht durch Drücken der Tabulatortaste geschlossen werden. Sie müssen entweder ein Element auswählen oder das Menü durch Drücken der Escape-Taste schließen. MenuBar-Komponente verwenden (nur Flash Professional) Mit der MenuBar-Komponente können Sie dem oberen Rand einer Anwendung einen Satz von Menüs hinzufügen (zum Beispiel Datei, Bearbeiten, Fenster usw.). Parameter der MenuBar-Komponente Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede MenuBar-Komponenteninstanz festlegen: Ein Array, das der MenuBar-Komponente Menüaktivatoren mit bestimmten Beschriftungen hinzufügt. Der Standardwert ist [] (leeres Array). labels Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die MenuBar-Komponente über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter „MenuBar-Klasse“ auf Seite 438. Anwendungen mit der MenuBar-Komponente erstellen In diesem Beispiel ziehen Sie eine MenuBar-Komponente auf die Bühne, fügen Code hinzu, um die Instanz mit Menüs zu verwenden, und weisen den Menüs Listener zu, die auf die Auswahl von Menüelementen reagieren sollen. So verwenden Sie eine MenuBar-Komponente in einer Anwendung: 1 Wählen Sie Datei > Neu, um ein neues Flash-Dokument zu erstellen. 2 Ziehen Sie die MenuBar-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 3 Positionieren Sie das Menü im oberen Bereich der Bühne, um ein Standard-Layout zu erstellen. 4 Wählen Sie die MenuBar-Komponente aus, und geben Sie im Eigenschafteninspektor den Instanznamen meineMenuBar ein. MenuBar-Komponente (nur Flash Professional) 435 5 Geben Sie im Bedienfeld Aktionen in Bild 1 den folgenden Code ein: var menu = meineMenuBar.addMenu("File"); menu.addMenuItem({label:"New", instanceName:"newInstance"}); menu.addMenuItem({label:"Open", instanceName:"openInstance"}); menu.addMenuItem({label:"Close", instanceName:"closeInstance"}); Dieser Code fügt der Menüleiste ein Menü File (Datei) hinzu. Anschließend fügt er über die Menu-API drei weitere Menüelemente hinzu: New (Neu), Open (Öffnen) und Close (Schließen). 6 Geben Sie im Bedienfeld Aktionen in Bild 1 den folgenden Code ein: var listen = new Object(); listen.change = function(evt){ var menu = evt.menu; var item = evt.menuItem if (item == menu.newInstance){ meinNew(); trace(item); }else if (item == menu.openInstance){ meinOpen() trace(item); } } menu.addEventListener("change",listen); Dieser Code erstellt das Listener-Objekt listen, das das Ereignisobjekt evt einsetzt, um die Auswahl von Menüelementen abzufangen. Hinweis: Sie müssen die Methode addEventListener aufrufen, um den Listener mit der Menüinstanz, nicht mit der Menüleisteninstanz, zu registrieren. 7 Wählen Sie Steuerung > Film testen, um die MenuBar-Komponente zu testen. MenuBar-Komponenten anpassen (nur Flash Professional) Diese Komponente passt seine Größe entsprechend der Aktivatorbeschriftungen an, die über die dataProvider-Eigenschaft oder die Methoden der MenuBar-Klasse bereitgestellt werden. Wenn sich eine Aktivatorschaltfläche in einer Menüleiste befindet, behält sie eine feste Größe, die von Schriftstilen und Textlänge abhängig ist. Stile mit der MenuBar-Komponente verwenden Die MenuBar-Komponente erstellt für jedes Menü in einer Gruppe eine Aktivatorbeschriftung. Mit Hilfe von Stilen können Sie die Darstellung von Aktivatorbeschriftungen ändern. MenuBarKomponenten unterstützen folgende Kranz-Stile: 436 Stil Beschreibung themeColor Die Hervorhebungsfarbe für ausgewählte Elemente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. Kapitel 4: Komponenten-Referenz Stil Beschreibung fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). popupDuration Die Anzahl von Millisekunden, nach denen ein Menü eingeblendet wird. Der Standardwert ist 0. Die MenuBar-Komponente verwendet zudem die RectBorder-Klasse, um eingelassene oder nach außen gestellte Hervorhebungen um die Beschriftung zu zeichnen, wenn ein Benutzer damit interagiert. Mit der Methode setStyle() (siehe UIObject.setStyle()) können Sie die folgenden RectBorder-Stileigenschaften ändern: RectBorder-Stile Randposition borderColor a highlightColor b borderColor c shadowColor d borderCapColor e shadowCapColor f shadowCapColor g borderCapColor h Mit den Stileigenschaften werden die folgenden Positionen für den Rand festgelegt: Skins mit der MenuBar-Komponente verwenden Die visuellen Zustände der MenuBar-Komponente werden mit Hilfe der Skins der MenuKomponente dargestellt. Weitere Informationen zu den Skins von Menu-Komponenten finden Sie unter „Skins mit der Menu-Komponente verwenden“ auf Seite 414. MenuBar-Komponente (nur Flash Professional) 437 MenuBar-Klasse Vererbung UIObject > UIComponent > MenuBar ActionScript-Klassenname mx.controls.MenuBar Übersicht: Methoden der MenuBar-Klasse Methode Beschreibung MenuBar.addMenu() Fügt der Menüleiste ein Menü hinzu. MenuBar.addMenuAt() Fügt der Menüleiste ein Menü an einer bestimmten Position hinzu. MenuBar.getMenuAt() Ruft eine Referenz auf ein Menü an einer bestimmten Position ab. MenuBar.getMenuEnabledAt() Gibt einen Booleschen Wert zurück, der angibt, ob ein Menü aktiviert ist (true) oder nicht (false). MenuBar.removeMenuAt() Entfernt ein Menü an einer bestimmten Position aus einer Menüleiste. MenuBar.setMenuEnabledAt() Ein Boolescher Wert, der angibt, ob ein Menü aktiviert ist (true) oder nicht (false). Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der MenuBar-Klasse Eigenschaft Beschreibung MenuBar.dataProvider Das Datenmodell für eine Menüleiste. MenuBar.labelField Ein String, der jeweils bestimmt, welche Attribute von XMLNodeInstanzen als Beschriftungstext des Menüleistenelements dienen sollen. MenuBar.labelFunction Eine Funktion, die bestimmt, was jeweils als Beschriftung eines Menüleistenelements dargestellt werden soll. Erbt alle Methoden von UIObject und UIComponent. MenuBar.addMenu() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meineMenuBar.addMenu(label) Verwendung 2: meineMenuBar.addMenu(label, menuDataProvider) 438 Kapitel 4: Komponenten-Referenz Parameter label Ein String, der die Beschriftung des neuen Menüs angibt. Eine XML- oder XMLNode-Instanz, die das Menü und seine Elemente beschreibt. Wenn es sich bei dem Wert um eine XML-Instanz handelt, wird das firstChild der Instanz verwendet. menuDataProvider Rückgaben Eine Referenz auf das neue Menüobjekt. Beschreibung Methode; Mit Verwendung 1 wird ein einzelnes Menü und ein Menüaktivator mit dem im Parameter label angegebenen Wert an das Ende der Menüleiste angefügt. Mit Verwendung 2 wird ein einzelnes Menü und ein Menüaktivator hinzugefügt, die in dem angegebenen XMLParameter menuDataProvider definiert werden. Beispiel Verwendung 1: Im folgenden Beispiel wird ein Menü File (Datei) hinzugefügt. Anschließend werden mit der Menu.addMenuItem()-Methode die Menüelemente New (Neu) und Open (Öffnen) hinzugefügt: menu = meineMenuBar.addMenu("File"); menu.addMenuItem({label:"New", instanceName:newInstance"}); menu.addMenuItem("{label:"Open", instanceName:"openInstance"}"); Verwendung 2: Im folgenden Beispiel wird ein Menü Font (Schriftart) mit den Menüelementen Bold (Fett) und Italic (Kursiv) hinzugefügt, die im menuDataProvider meinMenuDP2 definiert werden: var meinMenuDP2 = new XML(); meinMenuDP2.addMenuItem({type:"check", label:"Bold", instanceName:"check1"}); meinMenuDP2.addMenuItem({type:"check", label:"Italic", instanceName:"check2"}); menu = meineMenuBar.addMenu("Font",meinMenuDP2); MenuBar.addMenuAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung Verwendung 1: meineMenuBar.addMenuAt(index, label) Verwendung 2: meineMenuBar.addMenuAt(index, label, menuDataProvider) MenuBar-Komponente (nur Flash Professional) 439 Parameter index Eine Ganzzahl, die angibt, an welcher Position das Menü eingefügt werden soll. Die erste Position ist 0. Um das Menü an das Ende der Menüleiste anzufügen, rufen Sie MenuBar.addMenu(label) auf. label Ein String, der die Beschriftung des neuen Menüs angibt. Eine XML- oder XMLNode-Instanz, die das Menü beschreibt. Wenn es sich bei dem Wert um eine XML-Instanz handelt, wird das firstChild der Instanz verwendet. menuDataProvider Rückgaben Eine Referenz auf das neue Menüobjekt. Beschreibung Methode; Mit Verwendung 1 wird ein einzelnes Menü und ein Menüaktivator am angegebenen index mit dem im label-Parameter festgelegten Wert hinzugefügt. Mit Verwendung 2 wird ein einzelnes Menü und ein beschrifteter Menüaktivator an der angegebenen Indexposition hinzugefügt. Der Inhalt des Menüs wird im menuDataProvider-Parameter definiert. Beispiel Verwendung 1: Im folgenden Beispiel wird ein Menü links von allen Menüs platziert: menu = meineMenuBar.addMenuAt(0,"Toreador"); menu.addMenuItem("About Macromedia Flash", instanceName:"aboutInst"); menu.addMenuItem("Preferences", instanceName:"PrefInst"); Verwendung 2: Im folgenden Beispiel wird ein Menü Edit (Bearbeiten) mit den Menüelementen Undo (Rückgängig), Redo (Wiederherstellen), Cut (Ausschneiden) und Copy (Kopieren) hinzugefügt, die im menuDataProvider meinMenuDP definiert werden. var meinMenuDP = new XML(); meinMenuDP.addMenuItem({label:"Undo", instanceName:"undoInst"}); meinMenuDP.addMenuItem({label:"Redo", instanceName:"redoInst"}); meinMenuDP.addMenuItem({type:"separator"}); meinMenuDP.addMenuItem({label:"Cut", instanceName:"cutInst"}); meinMenuDP.addMenuItem({label:"Copy", instanceName:"copyInst"}); meineMenuBar.addMenuAt(0,"Edit",meinMenuDP); MenuBar.dataProvider Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.dataProvider Beschreibung Eigenschaft; das Datenmodell für Elemente in einer MenuBar-Komponente. 440 Kapitel 4: Komponenten-Referenz Der menuBar.dataProvider ist ein XML-Knotenobjekt. Durch das Festlegen dieser Eigenschaft wird das vorhandene Datenmodell der MenuBar-Komponente ersetzt. Jegliche Child-Knoten, die der Datenprovider eventuell besitzt, werden als Elemente für die Menüleiste verwendet; jegliche untergeordneten Knoten dieser Child-Knoten werden als Elemente für die entsprechenden Menüs verwendet. Der Standardwert ist undefined. Hinweis: Allen XML- oder XMLNode-Instanzen werden automatisch die Methoden und Eigenschaften der MenuDataProvider-API zugewiesen, wenn sie mit der MenuBar-Komponente verwendet werden. Beispiel Im folgenden Beispiel wird eine XML-Datei importiert und der Eigenschaft MenuBar.dataProvider zugewiesen. var meinMenuBarDP = new XML(); meinMenuBarDP.load("http://meinServer.meineDomaene.com/source.xml"); meinMenuBarDP.onLoad = function(success){ if(success){ meineMenuBar.dataProvider = meinMenuBarDP; } else { trace("Fehler beim Laden der XML-Datei"); } } MenuBar.getMenuAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.getMenuAt(index) Parameter index Eine Ganzzahl, die die Position des Menüs angibt. Rückgaben Ein Verweis auf das Menü an der angegebenen Indexposition. Dieser Wert ist undefined, sollte sich an dieser Position kein Menü befinden. Beschreibung Methode; gibt eine Referenz auf das Menü an der angegebenen Indexposition zurück. MenuBar-Komponente (nur Flash Professional) 441 Beispiel Da die Methode getMenuAt() eine Instanz zurückgibt, ist es möglich, einem Menü an der angegebenen Indexposition Elemente hinzuzufügen. Nachdem mit Hilfe des AuthoringParameters Label die Menüaktivatoren „File“ (Datei), „Edit“ (Bearbeiten) und „View“ (Ansicht) erstellt wurden, fügt dieser Code im folgenden Beispiel dem Datei-Menü zur Laufzeit die Elemente „New“ (Neu) und „Open“ (Öffnen) hinzu: menu = meineMenuBar.getMenuAt(0); menu.addMenuItem({label:"New",instanceName:"newInst"}); menu.addMenuItem({label:"Open",instanceName:"openInst"}); MenuBar.getMenuEnabledAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.getMenuEnabledAt(index) Parameter index Der Index des MenuBar-Elements. Rückgaben Ein Boolescher Wert, der angibt, ob dieses Menü ausgewählt werden kann (true) oder nicht (false). Beschreibung Methode; gibt einen Booleschen Wert zurück, der angibt, ob dieses Menü ausgewählt werden kann (true) oder nicht (false). Beispiel Im folgenden Beispiel wird die Methode für das Menü an der ersten Stelle von meineMenuBar aufgerufen: meineMenuBar.getMenuEnabledAt(0); MenuBar.labelField Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.labelField 442 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; ein String, der festlegt, welches Attribut des jeweiligen XML-Knotens als Bezeichnungstext des Menüs verwendet werden soll. Diese Eigenschaft wird außerdem von der Menüleiste an alle erstellten Menüs weitergegeben. Der Standardwert lautet label. Nachdem die Eigenschaft dataProvider eingestellt wurde, ist diese Eigenschaft schreibgeschützt. Beispiel Im folgenden Beispiel wird das Attribut name jedes Knotens als Bezeichnungstext verwendet. meineMenuBar.labelField = "name"; MenuBar.labelFunction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.labelFunction Beschreibung Eigenschaft; eine Funktion, die festlegt, was in jedem Bezeichnungstext des Menüs dargestellt werden soll. Die Funktion akzeptiert den XML-Knoten, der mit einem Element verknüpft ist, als Parameter und gibt einen String zurück, der als Bezeichnungstext verwendet werden soll. Diese Eigenschaft wird von der Menüleiste an alle erstellten Menüs weitergegeben. Der Standardwert ist undefined. Nachdem die Eigenschaft dataProvider eingestellt wurde, ist diese Eigenschaft schreibgeschützt. Beispiel Im folgenden Beispiel wird eine benutzerdefinierte Bezeichnung aus den Attributen der Knoten erstellt. meineMenuBar.labelFunction = function(node){ var a = node.attributes; return "Der Preis für " + a.name + " beträgt " + a.price; }; MenuBar.removeMenuAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.removeMenuAt(index) MenuBar-Komponente (nur Flash Professional) 443 Parameter index Der Index des MenuBar-Elements. Rückgaben Ein Verweis auf das zurückgegebene MenuBar-Element. Wenn an dieser Position kein Element vorhanden ist, wird der Wert undefined zurückgegeben. Beschreibung Methode; entfernt das Menü an der angegebenen Indexposition. Wenn an dieser Indexposition kein Menüelement vorhanden ist, hat der Aufruf dieser Methode keine Auswirkungen. Beispiel Im folgenden Beispiel wird das Menü an der Indexposition 4 entfernt: meineMenuBar.removeMenuAt(4); MenuBar.setMenuEnabledAt() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineMenuBar.setMenuEnabledAt(index, boolean) Parameter index Der Index des MenuBar-Elements, das festgelegt werden soll. Ein Boolescher Wert, der angibt, ob das Menüelement an der angegebenen Indexposition aktiviert ist (true) oder nicht (false). boolean Rückgaben Keine. Beschreibung Methode; aktiviert das Menü an der angegebenen Indexposition. Sollte sich an dieser Indexposition kein Menü befinden, hat das Aufrufen dieser Methode keine Wirkung. Beispiel Im folgenden Beispiel wird das MenuBarColumn-Objekt an der Indexposition 3 abgerufen: meineMenuBar.setMenuEnabledAt(3); 444 Kapitel 4: Komponenten-Referenz NumericStepper-Komponente Die NumericStepper-Komponente ermöglicht es dem Benutzer, eine geordnete Zahlenmenge schrittweise durchzugehen. Die Komponente besteht aus einer Zahl, die neben kleinen Pfeilschaltflächen nach oben und unten angezeigt wird. Wenn ein Benutzer auf die Schaltflächen klickt, wird die Zahl schrittweise erhöht oder gesenkt. Wenn der Benutzer auf eine der Pfeilschaltflächen klickt, wird die Nummer um den Wert des Parameters stepSize erhöht, bis der Benutzer entweder die Maus loslässt oder der Höchst- oder Mindestwert erreicht ist. Der NumericStepper verarbeitet nur numerische Daten. Außerdem müssen Sie die Größe des Steppers beim Authoring anpassen, wenn Sie mehr als zwei Ziffern anzeigen möchten (z. B. die Zahlen 5246 oder 1,34). Ein Stepper kann in einer Anwendung aktiviert oder deaktiviert werden. Im deaktivierten Zustand kann der Stepper keine Maus- oder Tastatureingaben entgegen nehmen. Ein aktivierter Stepper erhält den Fokus, wenn Sie darauf klicken oder ihn mit der Tabulatortaste ansteuern; der interne Fokus wird auf das Textfeld gelegt. Wenn eine NumericStepper-Instanz den Fokus hat, kann sie mit den folgenden Tasten gesteuert werden: Taste Beschreibung <Nach-unten> Der Wert ändert sich um eine Einheit. <Links> Verschiebt die Einfügemarke im Textfeld nach links. <Rechts> Verschiebt die Einfügemarke im Textfeld nach rechts. <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Objekt. <Tab> Verschiebt den Fokus auf das nächste Objekt. <Nach-oben> Der Wert ändert sich um eine Einheit. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. Eine Live-Vorschau der einzelnen Stepperinstanzen spiegelt den Wert des Parameters value wieder, der im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring angegeben wurde. In der Live-Vorschau können die Stepper-Schaltflächen jedoch nicht mit der Maus oder der Tastatur bedient werden. Wenn Sie einer Anwendung die NumericStepper-Komponente hinzufügen, können Sie sie mit Hilfe des Bedienfelds Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.NumericStepperAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. NumericStepper-Komponente 445 Mit der NumericStepper-Komponente arbeiten Der NumericStepper kann überall verwendet werden, wo der Benutzer einen Zahlenwert auswählen soll. Beispielsweise können Sie die NumericStepper-Komponente in einem Formular einsetzen, damit ein Benutzer das Ablaufdatum seiner Kreditkarte eingeben kann. Oder Sie fügen einen NumericStepper ein, damit der Benutzer eine Schriftgröße vergrößern oder verkleinern kann. NumericStepper-Parameter Im Folgenden sind die Authoring-Parameter aufgeführt, die Sie für die einzelnen Instanzen der NumericStepper-Komponente im Eigenschafteninspektor oder Komponenten-Inspektor festlegen können: value legt den Wert des aktuellen Schritts fest. Der Standardwert ist 0. legt den Mindestwert des Schritts fest. Der Standardwert ist 0. minimum maximum stepSize legt den Höchstwert des Schritts fest. Der Standardwert ist 10. legt die Änderungseinheit für den Schritt fest. Der Standardwert ist 1. Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die NumericStepper-Komponenten über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter NumericStepper-Klasse. Eine Anwendung mit der NumericStepper-Komponente erstellen Im folgenden Verfahren wird erklärt, wie Sie einer Anwendung beim Authoring die NumericStepper-Komponente hinzufügen. In diesem Beispiel ermöglicht der Stepper einem Benutzer, einem Film eine Bewertung zu geben; dabei können 0 bis 5 Sterne in Schritten von einem halben Stern vergeben werden. Führen Sie die folgenden Schritte aus, um eine Anwendung mit einer Button-Komponente zu erstellen: 1 Ziehen Sie die NumericStepper-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor den Instanznamen starStepper ein. 3 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: ■ Geben Sie als Parameter minimum den Wert 0 ein. ■ Geben Sie als Parameter maximum den Wert 5 ein. ■ Geben Sie als Parameter stepSize den Wert 0,5 ein. ■ Geben Sie als Parameter value den Wert 0 ein. 4 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: movieRate = new Object(); movieRate.change = function (eventObject){ starChart.value = eventObject.target.value; } starStepper.addEventListener("change", movieRate); 446 Kapitel 4: Komponenten-Referenz Die letzte Codezeile fügt der Instanz starStepper die Ereignisprozedur change hinzu. Die Prozedur legt fest, dass der Movieclip starChart die Anzahl der Sterne anzeigt, die von der Instanz starStepper angegeben wird. (Um diesen Code in Aktion zu sehen, müssen Sie den Movieclip starChart mit der Eigenschaft value erstellen, der die Sterne anzeigt.) Die NumericStepper-Komponente anpassen Sie können die NumericStepper-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()) oder beliebige anwendbare Eigenschaften und Methoden der NumericStepper-Klasse. Weitere Informationen hierzu finden Sie unter NumericStepper-Klasse. Wenn Sie die Größe der NumericStepper-Komponente ändern, wird dadurch die Größe der Pfeilschaltflächen nach oben und unten nicht geändert. Wenn der Stepper so stark vergrößert wird, dass er die Standardhöhe überschreitet, werden die Stepperschaltflächen oben und unten an der Komponente fixiert. Die Stepperschaltflächen werden immer rechts vom Textfeld angezeigt. Stile mit der NumericStepper-Komponente verwenden Sie können Stileigenschaften festlegen, um das Erscheinungsbild einer Stepperinstanz zu ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die NumericStepper-Komponente unterstützt die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). textAlign Die Textausrichtung; entweder „left“, „right“ oder „center“. NumericStepper-Komponente 447 Skins mit der NumericStepper-Komponente verwenden Die visuellen Zustände der NumericStepper-Komponente werden mit Hilfe von Skins dargestellt. Um die Skins der NumericStepper-Komponente beim Authoring darzustellen, ändern Sie die Skinsymbole in der Bibliothek und exportieren dann die Komponente erneut als SWC-Datei. Die Skinsymbole befinden sich im Ordner Flash UI Components 2/Themes/MMDefault/ Stepper Elements/states in der Bibliothek. Weitere Informationen finden Sie unter „SkinningKomponenten“ auf Seite 42. Wenn ein Stepper aktiviert wird, werden die Schaltflächen nach oben und unten im Zustand Over angezeigt, wenn der Zeiger über sie hinweg bewegt wird. Wenn auf die Schaltflächen geklickt wird, werden sie im Zustand Down angezeigt. Wenn die Maustaste losgelassen wird, kehren die Schaltflächen zum Zustand Over zurück. Wenn der Zeiger von den Schaltflächen weg bewegt wird, während die Maustaste noch gedrückt ist, kehren die Schaltflächen zu ihrem ursprünglichen Zustand zurück. Wenn ein Stepper deaktiviert ist, wird unabhängig von der Benutzerinteraktion der Zustand Disabled angezeigt. Die NumericStepper-Komponente verwendet die folgenden Skineigenschaften: 448 Eigenschaft Beschreibung upArrowUp Der Up-Status des Pfeils nach oben. Der Standardwert ist StepUpArrowUp. upArrowDown Der Pressed-Status des Pfeils nach oben. Der Standardwert ist StepUpArrowDown. upArrowOver Der Over-Status des Pfeils nach oben. Der Standardwert ist StepUpArrowOver. upArrowDisabled Der Disabled-Status des Pfeils nach oben. Der Standardwert ist StepUpArrowDisabled. downArrowUp Nach-unten-Pfeil im Up-Status (Schaltfläche nicht geklickt). Der Standardwert ist StepDownArrowUp. downArrowDown Nach-unten-Pfeil im Down-Status (Schaltfläche geklickt). Der Standardwert ist StepDownArrowDown. downArrowOver Nach-unten-Pfeil im Over-Status (Mauszeiger über der Schaltfläche). Der Standardwert ist StepDownArrowOver. downArrowDisabled Nach-unten-Pfeil im Disabled-Status (Schaltfläche deaktiviert). Der Standardwert ist StepDownArrowDisabled. Kapitel 4: Komponenten-Referenz NumericStepper-Klasse Vererbung UIObject > UIComponent > NumericStepper ActionScript-Klassenname mx.controls.NumericStepper Die Eigenschaften der NumericStepper-Klasse ermöglichen Ihnen, den Mindest- und Höchstschrittwert, die Größe der einzelnen Schritte und den aktuellen Wert des Schritts zur Laufzeit anzugeben. Wenn Sie eine Eigenschaft der NumericStepper-Klasse mit ActionScript einstellen, werden die Parameter mit dem gleichen Namen im Eigenschafteninspektor und Komponenten-Inspektor außer Kraft gesetzt. Die NumericStepper-Komponente setzt das Standard-Fokusrechteck des Flash Players mit Hilfe von FocusManager außer Kraft, um ein Fokusrechteck mit abgerundeten Ecken zu zeichnen. Weitere Informationen finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.NumericStepper.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineNumericStepperInstance.version);. Übersicht: Methoden der NumericStepper-Klasse Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der NumericStepper-Klasse Eigenschaft Beschreibung NumericStepper.maximum Eine Zahl, die den Höchstwert angibt. NumericStepper.minimum Eine Zahl, die den Mindestwert angibt. NumericStepper.nextValue Eine Zahl, die den nächsten Wert in der Folge angibt. Diese Eigenschaft ist schreibgeschützt. NumericStepper.previousValue Eine Zahl, die den vorherigen Wert in der Folge angibt. Diese Eigenschaft ist schreibgeschützt. NumericStepper.stepSize Eine Zahl, die die Änderungseinheit für die einzelnen Schritte festlegt. NumericStepper.value Eine Zahl, die den aktuellen Wert des Steppers angibt. Erbt alle Eigenschaften von UIObject und UIComponent. NumericStepper-Komponente 449 Übersicht: Ereignisse der NumericStepper-Klasse Ereignis Beschreibung NumericStepper.change Wird ausgelöst, wenn sich der Wert des Schritts ändert. Erbt alle Ereignisse von UIObject und UIComponent. NumericStepper.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(click){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ ... } stepperInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn sich der Wert des Steppers ändert. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der NumericStepper-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an den Stepper meinStepper angehängt wird, sendet „_level0.meinStepper“ an das Bedienfeld Ausgabe: on(click){ trace(this); } 450 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (stepperInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel, das für ein Bild der Zeitleiste geschrieben wurde, wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn ein Stepper namens meinNumericStepper geändert wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das Ereignis change im Listener-Objekt definiert. Eine trace-Aktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat, in diesem Beispiel meinNumericStepper. Der Zugriff auf die Eigenschaft NumericStepper.value erfolgt über die Eigenschaft target des Ereignisobjekts. In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von meinNumericStepper aus aufgerufen, und das Ereignis change und das Listener-Objekt form werden als Parameter an sie übergeben: form = new Object(); form.change = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. der NumericStepper. trace("Wert geändert in " + eventObj.target.value); } meinNumericStepper.addEventListener("change", form); NumericStepper.maximum Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.maximum Beschreibung Eigenschaft; der Höchstwert des Steppers. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. Der Standardwert ist 10. NumericStepper-Komponente 451 Beispiel Im folgenden Beispiel wird der Höchstwert des Stepperbereichs auf 20 eingestellt: meinStepper.maximum = 20; Siehe auch NumericStepper.minimum NumericStepper.minimum Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.minimum Beschreibung Eigenschaft; der Mindestwert des Steppers. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. Der Standardwert ist 0. Beispiel Im folgenden Beispiel wird der Mindestwert des Stepperbereichs auf 100 eingestellt: meinStepper.minimum = 100; Siehe auch NumericStepper.maximum NumericStepper.nextValue Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.nextValue Beschreibung Eigenschaft (schreibgeschützt); der nächste Wert in der Folge. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. 452 Kapitel 4: Komponenten-Referenz Beispiel Im folgenden Beispiel wird die Eigenschaft stepSize auf 1 und der Anfangswert auf 4 eingestellt, wodurch sich als Wert von nextValue 5 ergibt: meinStepper.stepSize = 1; meinStepper.value = 4; trace(meinStepper.nextValue); Siehe auch NumericStepper.previousValue NumericStepper.previousValue Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.previousValue Beschreibung Eigenschaft (schreibgeschützt); der vorherige Wert in der Folge. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. Beispiel Im folgenden Beispiel wird die Eigenschaft stepSize auf 1 und der Anfangswert auf 4 eingestellt, wodurch sich als Wert von previousValue 3 ergibt: meinStepper.stepSize = 1; meinStepper.value = 4; trace(meinStepper.previousValue); Siehe auch NumericStepper.nextValue NumericStepper.stepSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.stepSize NumericStepper-Komponente 453 Beschreibung Eigenschaft; gibt an, um wie viel der aktuelle Wert geändert wird. Der Standardwert ist 1. Dieser Wert kann nicht 0 sein. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. Beispiel Im folgenden Beispiel wird er aktuelle Wert auf 2 und die Einheit für stepSize ebenfalls auf 2 gesetzt. Der Wert von nextValue ist 4: meinStepper.value = 2; meinStepper.stepSize = 2; trace(meinStepper.nextValue); NumericStepper.value Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung stepperInstance.value Beschreibung Eigenschaft; der aktuelle Wert, der im Textbereich des Steppers angezeigt wird. Der Wert wird nicht zugewiesen, wenn er nicht dem Bereich und der Schrittgröße des Steppers entspricht, die in der Eigenschaft stepSize definiert sind. Diese Eigenschaft kann eine Zahl mit bis zu drei Dezimalstellen enthalten. Beispiel Im folgenden Beispiel wird der aktuelle Wert value des Steppers auf 10 eingestellt, und der Wert wird an das Bedienfeld Ausgabe gesendet: meinStepper.value = 10; trace(meinStepper.value); 454 Kapitel 4: Komponenten-Referenz PopUpManager-Klasse ActionScript-Klassenname mx.managers.PopUpManager Mit der PopUpManager-Klasse können Sie überlappende Fenster erstellen, die modal oder nicht modal sein können. (Ein modusabhängiges Fenster erlaubt, während es aktiv ist, keine Interaktion mit anderen Fenstern.) Sie können PopUpManager.createPopUp() aufrufen, um ein überlappendes Fenster zu erstellen, und PopUpManager.deletePopUp() in der Fenster-Instanz aufrufen, um ein Popupfenster zu löschen. Übersicht: Methoden der PopUpManager-Klasse Ereignis Beschreibung PopUpManager.createPopUp() Erstellt ein Popupfenster. PopUpManager.deletePopUp() Löscht ein Popupfenster, das durch einen Aufruf an PopUpManager.createPopUp() erstellt wurde. PopUpManager.createPopUp() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung PopUpManager.createPopUp(parent, class, modal [, initobj, outsideEvents]) Parameter Eine Referenz auf ein übergeordnetes Popupfenster. parent class Eine Referenz auf die zu erstellende Objektklasse. modal Ein Boolescher Wert, der angibt, ob das Fenster modal (true) oder nicht modal ist (false). initobj Ein Objekt, das die Initialisierungseigenschaften enthält. Dieser Parameter ist optional. Ein Boolescher Wert, der angibt, ob ein Ereignis ausgelöst wird, wenn der Benutzer außerhalb des Fensters klickt (true), oder ob kein Ereignis ausgelöst wird (false). Dieser Parameter ist optional. outsideEvents Rückgaben Eine Referenz auf das erstellte Fenster. Beschreibung Methode; im Falle eines modusabhängigen Fensters wird bei einem Aufruf an createPopUp() das oberste Parent-Fenster gesucht und eine Instanz der Klasse erstellt. Im Falle eines modusunabhängigen Fensters erstellt ein Aufruf an createPopUp() eine Instanz der Klasse als Child des Parent-Fensters. PopUpManager-Klasse 455 Beispiel Mit dem folgenden Code wird ein modusabhängiges Fenster erstellt, wenn auf die Schaltfläche geklickt wird: lo = new Object(); lo.click = function(){ mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true); } button.addEventListener("click", lo); PopUpManager.deletePopUp() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004 und Flash MX Professional 2004 Verwendung windowInstance.deletePopUp(); Parameter Keine. Rückgaben Keine. Beschreibung Methode; löscht ein Popupfenster und entfernt den modusabhängigen Zustand. Der Aufruf an PopUpManager.deletePopUp() muss vom überlappten Fenster vorgenommen werden, wenn es entfernt wird. Beispiel Mit dem folgenden Code wird ein modusabhängiges Fenster namens win mit einer Schaltfläche zum Schließen erstellt und das Fenster geschlossen, wenn auf die Schaltfläche geklickt wird: import mx.managers.PopUpManager import mx.containers.Window win = PopUpManager.createPopUp(_root, Window, true, {closeButton:true}); lo = new Object(); lo.click = function(){ win.deletePopUp(); } win.addEventListener("click", lo); 456 Kapitel 4: Komponenten-Referenz ProgressBar-Komponente Die ProgressBar-Komponente zeigt den Fortschritt an, während der Benutzer darauf wartet, dass der Inhalt geladen wird. Der Fortschritt beim Laden kann bestimmt oder unbestimmt sein. Eine bestimmte Fortschrittleiste ist eine lineare Darstellung des Fortschritts einer Aufgabe im Zeitverlauf; sie wird verwendet, wenn bekannt ist, wie groß der geladene Inhalt ist. Eine unbestimmte Fortschrittleiste wird verwendet, wenn die Größe des geladenen Inhalts nicht bekannt ist. Sie können eine Bezeichnung hinzufügen, um den Fortschritt beim Laden des Inhalts anzuzeigen. Komponenten werden standardmäßig in das erste Bild exportiert. Das bedeutet, dass Komponenten vor dem Rendern des ersten Bildes in eine Anwendung geladen werden. Wenn Sie eine Vorablade-Funktion für eine Anwendung erstellen möchten, müssen Sie in den einzelnen Dialogfeldern für die Verknüpfungseigenschaften die Option In erstes Bild exportieren deaktivieren. (Optionen im Bedienfeld Bibliothek > Verknüpfung). Für die ProgressBar wählen Sie allerdings In erstes Bild exportieren, da diese beim Streamen anderer Inhalte in den Flash Player zuerst angezeigt werden muss. Eine Live-Vorschau der einzelnen ProgressBar-Instanzen spiegelt die Änderungen wieder, die im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring vorgenommen wurden. Die folgenden Parameter werden in der Live-Vorschau dargestellt: conversion, direction, label, labelPlacement, mode und source. Mit der ProgressBar-Komponente arbeiten Mit einer Fortschrittleiste können Sie den Fortschritt des Ladevorgangs anzeigen. Für den Benutzer ist dieses Feedback bei der Interaktion mit einer Anwendung unerlässlich. Es gibt mehrere Modi, in denen Sie die ProgressBar-Komponente verwenden können; den Modus stellen Sie mit dem Parameter mode ein. Am häufigsten werden die Modi event und polled verwendet. Diese Modi geben mit dem Parameter source an, ob der Ladevorgang die Ereignisse progress und complete erzeugt (Ereignismodus) oder die Methoden getBytesLoaded und getsBytesTotal übergibt (Abfragemodus). Außerdem können Sie die ProgressBar-Komponente im manuellen Modus einsetzen, indem Sie die Eigenschaften maximum, minimum und indeterminate zusammen mit Aufrufen an die Methode ProgressBar.setProgress() einstellen. ProgressBar-Parameter Im Folgenden sind die Authoring-Parameter aufgeführt, die Sie für die einzelnen Instanzen der ProgressBar-Komponente im Eigenschafteninspektor oder Komponenten-Inspektor festlegen können: Der Modus, in dem die Fortschrittleiste betrieben wird. Dieser Parameter kann folgende Werte annehmen: event, polled oder manual. Der Standardwert lautet event. mode source Ein String, der in ein Objekt konvertiert wird, das den Instanznamen der Quelle darstellt. Die Richtung, in der die Fortschrittleiste gefüllt wird. Dieser Wert kann right oder left sein; der Standardwert ist right. direction ProgressBar-Komponente 457 Der Text, der den Ladevorgang meldet. Dieser Parameter ist ein String im Format „%1 von %2 geladen (%3%%)“; %1 ist ein Platzhalter für die Anzahl der bisher geladenen Byte, %2 ein Platzhalter für die Gesamtzahl an Byte und %3 ein Platzhalter für den Prozentsatz des bereits geladenen Inhalts. Die Zeichen „%%“ sind ein Platzhalter für das Zeichen „%“. Wenn der Wert für %2 unbekannt ist, wird er durch „??“ ersetzt. Wenn ein Wert undefined ist, wird die Bezeichnung nicht angezeigt. label labelPlacement Die Position der Bezeichnung relativ zur Fortschrittleiste. Dieser Parameter kann folgende Werte annehmen: top, bottom, left, right, center. Der Standardwert ist bottom. Eine Zahl, durch die die Werte %1 und %2 im Bezeichnungsstring vor der Anzeige dividiert werden. Der Standardwert ist 1. conversion Sie können diese und zusätzliche Optionen für die ProgressBar-Komponente mit den Eigenschaften, Methoden und Ereignissen von ActionScript steuern. Weitere Informationen finden Sie unter ProgressBar-Klasse. Eine Anwendung mit der ProgressBar-Komponente erstellen Im folgenden Verfahren wird erklärt, wie Sie einer Anwendung beim Authoring eine ProgressBarKomponente hinzufügen. Im folgenden Beispiel wird die Fortschrittleiste im Ereignismodus verwendet. Im Ereignismodus muss der geladene Inhalt die Ereignisse progress und complete erzeugen, mit denen die Fortschrittleiste den Fortschritt anzeigt. Diese Ereignisse werden von der Loader-Komponente erzeugt. Weitere Informationen finden Sie unter „Loader-Komponente“ auf Seite 349. So erstellen Sie eine Anwendung mit der ProgressBar-Komponente im Ereignismodus: 1 Ziehen Sie die ProgressBar-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: Geben Sie den Instanznamen pBar ein. ■ Wählen Sie event für den Parameter mode. Ziehen Sie die Loader-Komponente aus dem Bedienfeld Komponenten auf die Bühne. Geben Sie im Eigenschafteninspektor als Instanznamen loader ein. Wählen Sie die Fortschrittleiste auf der Bühne aus, und geben Sie im Eigenschafteninspektor für den Parameter source die Angabe loader ein. Wählen Sie das erste Bild in der Zeitleiste aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein, mit dem eine JPEG-Datei in die Loader-Komponente geladen wird: ■ 3 4 5 6 loader.autoLoad = false; loader.contentPath = "http://imagecache2.allposters.com/images/86/ 017_PP0240.jpg"; pBar.source = loader; // Der Ladevorgang beginnt erst, wenn die Methode „load“ aufgerufen wird loader.load(); Im folgenden Beispiel wird die Fortschrittleiste im Abfragemodus verwendet. Im Abfragemodus zeigt die Fortschrittleiste den Fortschritt mit Hilfe der Methoden getBytesLoaded und getBytesTotal des Quellobjekts an. 458 Kapitel 4: Komponenten-Referenz So erstellen Sie eine Anwendung mit der ProgressBar-Komponente im Abfragemodus: 1 Ziehen Sie die ProgressBar-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: Geben Sie den Instanznamen pBar ein. Wählen Sie polled für den Parameter mode. ■ Geben Sie loader für den Parameter source ein. 3 Wählen Sie Bild 1 in der Zeitleiste aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein, mit dem ein Soundobjekt namens loader erstellt und die Methode loadSound() aufgerufen wird, um einen Sound in das Soundobjekt zu laden: ■ ■ var loader:Object = new Sound(); loader.loadSound("http://www.neuerordner.de/mx2004.wav", true); Im folgenden Beispiel wird die Fortschrittleiste im manuellen Modus verwendet. Im manuellen Modus müssen Sie die Eigenschaften maximum, minimum und indeterminate in Verbindung mit der Methode setProgress() festlegen, um den Fortschritt anzuzeigen. Die Eigenschaft source stellen Sie im manuellen Modus nicht ein. So erstellen Sie eine Anwendung mit der ProgressBar-Komponente im Ereignismodus: 1 Ziehen Sie die ProgressBar-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Führen Sie im Eigenschafteninspektor die folgenden Schritte durch: Geben Sie den Instanznamen pBar ein. Wählen Sie manual für den Parameter mode. 3 Wählen Sie Bild 1 in der Zeitleiste aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein, mit dem die Fortschrittleiste für jeden Dateidownload, der einen Aufruf an die Methode setProgress() verwendet, manuell aktualisiert wird: ■ ■ for(var:Number i=1; // Code zum Laden // Code zum Laden pBar.setProgress(i, } i <= total; i++){ der Datei einfügen der Datei einfügen total); Die ProgressBar-Komponente anpassen Sie können die ProgressBar-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie UIObject.setSize(). Die Größe des linken und rechten Endes der Fortschrittleiste und der Grafik sind fixiert. Wenn Sie die Größe einer Fortschrittleiste ändern, wird der mittlere Bereich der Fortschrittleiste vergrößert bzw. verkleinert, bis er zwischen die beiden Enden passt. Wenn eine Fortschrittleiste zu klein ist, wird sie möglicherweise nicht korrekt dargestellt. ProgressBar-Komponente 459 Stile mit der ProgressBar-Komponente verwenden Sie können Stileigenschaften festlegen, um das Erscheinungsbild einer Fortschrittleisten-Instanz zu ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die ProgressBar-Komponente unterstützt die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). Skins mit der ProgressBar-Komponente verwenden Die ProgressBar-Komponente zeigt ihre Zustände mit Hilfe der folgenden Movieclipsymbole an: TrackMiddle, TrackLeftCap, TrackRightCap und BarMiddle, BarLeftCap, BarRightCap und IndBar. Das Symbol IndBar wird für eine unbestimmte Fortschrittleiste verwendet. Um die Skins der ProgressBar-Komponente beim Authoring darzustellen, ändern Sie die Symbole in der Bibliothek und exportieren dann die Komponente erneut als SWC-Datei. Die Symbole befinden sich im Ordner Flash UI Components 2/Themes/MMDefault/ProgressBar Elements in der Bibliothek der Datei HaloTheme.fla oder SampleTheme.fla. Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Wenn Sie mit der Methode UIObject.createClassObject() eine Instanz der ProgressBarKomponente dynamisch (zur Laufzeit) erstellen, können Sie auch die Skins dynamisch erzeugen. Sie können einer Komponente zur Laufzeit Skins zuweisen, indem Sie die Skin-Eigenschaften des Parameters initObject anpassen, der an die Methode createClassObject() übergeben wird. Über die Skin-Eigenschaften werden die Namen für die Symbole definiert, die den Zustand der Fortschrittleiste beschreiben. 460 Kapitel 4: Komponenten-Referenz Die ProgressBar-Komponente verwendet die folgenden Skineigenschaften: Eigenschaft Beschreibung progTrackMiddleName Der Mittelteil der Spur, der erweitert werden kann. Der Standardwert ist ProgTrackMiddle. progTrackLeftName Das linke Ende, das eine feste Größe hat. Der Standardwert ist ProgTrackLeft. progTrackRightName Das rechte Ende, das eine feste Größe hat. Der Standardwert ist ProgTrackRight. progBarMiddleName Die Grafik in der Mitte der Leiste, die erweitert werden kann. Der Standardwert ist ProgBarMiddle. progBarLeftName Das linke Ende der Leiste, das eine feste Größe hat. Der Standardwert ist ProgBarLeft. progBarRightName Das rechte Ende der Leiste, das eine feste Größe hat. Der Standardwert ist ProgBarRight. progIndBarName Die Grafik für eine unbestimmte Leiste. Der Standardwert ist ProgIndBar. ProgressBar-Klasse Vererbung UIObject > ProgressBar ActionScript-Klassenname mx.controls.ProgressBar Wenn Sie eine Eigenschaft der ProgressBar-Klasse mit ActionScript einstellen, werden die Parameter mit dem gleichen Namen im Eigenschafteninspektor und Komponenten-Inspektor außer Kraft gesetzt. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.ProgressBar.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meinProgressBarInstance.version); Übersicht: Methoden der ProgressBar-Klasse Methode Beschreibung ProgressBar.setProgress() Legt den Fortschritt der Leiste im manuellen Modus fest. Erbt alle Methoden von UIObject. ProgressBar-Komponente 461 Übersicht: Eigenschaften der ProgressBar-Klasse Eigenschaft Beschreibung ProgressBar.conversion Eine Zahl, mit der die Werte für die bisher geladenen Byte und die insgesamt zu ladenden Byte konvertiert werden. ProgressBar.direction Die Füllungsrichtung der Fortschrittleiste. ProgressBar.indeterminate Gibt an, dass nicht bekannt ist, wie viel Byte die Quelle insgesamt hat. ProgressBar.label Der Begleittext für die Fortschrittleiste. ProgressBar.labelPlacement Die Position der Bezeichnung relativ zur Fortschrittleiste. ProgressBar.maximum Der Höchstwert der Fortschrittleiste im manuellen Modus. ProgressBar.minimum Der Mindestwert der Fortschrittleiste im manuellen Modus. ProgressBar.mode Der Modus, in dem die Fortschrittleiste den Inhalt lädt. ProgressBar.percentComplete Eine Zahl, die angibt, wie viel Prozent bereits geladen wurde. ProgressBar.source Der zu ladende Inhalt, dessen Fortschritt von der Fortschrittleiste überwacht wird. ProgressBar.value Gibt an, wie weit der Ladevorgang bereits fortgeschritten ist. Diese Eigenschaft ist schreibgeschützt. Erbt alle Eigenschaften von UIObject. Übersicht: Ereignisse der ProgressBar-Klasse Ereignis Beschreibung ProgressBar.complete Wird ausgelöst, wenn der Ladevorgang abgeschlossen ist. ProgressBar.progress Wird ausgelöst, während der Inhalt im Ereignis- oder Abfragemodus geladen wird. Erbt alle Ereignisse von UIObject. ProgressBar.complete Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. 462 Kapitel 4: Komponenten-Referenz Verwendung Verwendung 1: on(complete){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.complete = function(eventObject){ ... } pBar.addEventListener("complete", listenerObject) Ereignisobjekt Zusätzlich zu den standardmäßigen Eigenschaften von Ereignisobjekten sind für das Ereignis ProgressBar.complete noch zwei weitere Eigenschaften definiert: current (der geladene Wert gleich total), und total (der Gesamtwert). Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der Ladevorgang abgeschlossen ist. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der ProgressBar-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Instanz pBar angehängt wird, sendet „_level0.pBar“ an das Bedienfeld Ausgabe: on(complete){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (pBar) setzt ein Ereignis (in diesem Fall complete) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten ListenerObjekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) ProgressBar-Komponente 463 Beispiel Im folgenden Beispiel wird das Listener-Objekt form mit der Rückruffunktion complete erstellt, das eine Meldung mit dem Wert der Instanz pBar an das Bedienfeld Ausgabe sendet: form.complete = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. die Fortschrittleiste. trace("Wert geändert in " + eventObj.target.value); } pBar.addEventListener("complete", form); Siehe auch UIEventDispatcher.addEventListener() ProgressBar.conversion Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.conversion Beschreibung Eigenschaft; eine Zahl, die einen Konvertierungswert für die empfangenen Werte festlegt. Sie dividiert die aktuellen und Gesamtwerte, rundet sie ab und zeigt den konvertierten Wert in der Eigenschaft label an. Der Standardwert ist 1. Beispiel Der folgende Code zeigt den Wert des Fortschritts beim Ladevorgang in Kilobyte an: pBar.conversion = 1024; ProgressBar.direction Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.direction Beschreibung Eigenschaft; gibt die Füllungsrichtung der Fortschrittleiste an. Der Standardwert ist right. 464 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird die Fortschrittleiste von rechts nach links gefüllt: pBar.direction = "left"; ProgressBar.indeterminate Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.indeterminate Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Fortschrittleiste eine gestreifte Füllung aufweist und die Größe der geladenen Quelle unbekannt ist (true) oder ob die Leiste eine durchgängige Füllung aufweist und die Größe der geladenen Quelle bekannt ist (false). Beispiel Mit dem folgenden Code wird eine bestimmte Fortschrittleiste mit einer durchgängigen Füllung erstellt, die von links nach rechts fortschreitet: pBar.direction = "right"; pBar.indeterminate = false; ProgressBar.label Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.label Beschreibung Eigenschaft; Text, der den Fortschritt beim Ladevorgang angibt. Diese Eigenschaft ist ein String im Format „%1 von %2 geladen (%3%%)“; %1 ist ein Platzhalter für die Anzahl der bisher geladenen Byte, %2 ein Platzhalter für die Gesamtzahl an Byte und %3 ein Platzhalter für den Prozentsatz des bereits geladenen Inhalts. Die Zeichen „%%“ sind ein Platzhalter für das Zeichen „%“. Wenn der Wert für %2 unbekannt ist, wird er durch „??“ ersetzt. Wenn ein Wert undefined ist, wird die Bezeichnung nicht angezeigt. Der Standardwert ist LOADING %3%% ProgressBar-Komponente 465 Beispiel Mit dem folgenden Code wird für den Text, der neben der Fortschrittleiste angezeigt wird, das Format „4 Dateien geladen“ festgelegt: pBar.label = "%1 Dateien geladen"; Siehe auch ProgressBar.labelPlacement ProgressBar.labelPlacement Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.labelPlacement Beschreibung Eigenschaft; legt die Position der Bezeichnung relativ zur Fortschrittleiste fest. Mögliche Werte sind left, right, top, bottom, und center. Beispiel Mit dem folgenden Code wird die Bezeichnung über der Fortschrittleiste angezeigt: pBar.label = "%1 von %2 geladen (%3%%)"; pBar.labelPlacement = "top"; Siehe auch ProgressBar.label ProgressBar.maximum Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.maximum Beschreibung Eigenschaft; der größte Wert für die Fortschrittleiste, wenn die Eigenschaft ProgressBar.mode auf manual eingestellt ist. 466 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird die Eigenschaft maximum auf die Gesamtbildzahl einer zu ladenden Flash-Anwendung eingestellt: pBar.maximum = _totalframes; Siehe auch ProgressBar.minimum, ProgressBar.mode ProgressBar.minimum Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.minimum Beschreibung Eigenschaft; der kleinste Fortschrittwert für die Fortschrittleiste, wenn die Eigenschaft ProgressBar.mode auf manual eingestellt ist. Beispiel Mit dem folgenden Code wird der Mindestwert für die Fortschrittleiste festgelegt: pBar.minimum = 0; Siehe auch ProgressBar.maximum, ProgressBar.mode ProgressBar.mode Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.mode ProgressBar-Komponente 467 Beschreibung Eigenschaft; der Modus, in dem die Fortschrittleiste den Inhalt lädt. Dieser Parameter kann folgende Werte annehmen: event, polled oder manual. Am häufigsten werden die Modi event und polled verwendet. Diese Modi geben mit dem Parameter source an, ob beim Ladevorgang wie bei einer Loader-Komponente die Ereignisse progress und complete erzeugt (Ereignismodus) oder wie bei einem MovieClip-Objekt die Methoden getBytesLoaded und getsBytesTotal übergeben werden (Abfragemodus). Außerdem können Sie die ProgressBarKomponente im manuellen Modus einsetzen, indem Sie die Eigenschaften maximum, minimum und indeterminate zusammen mit Aufrufen an die Methode ProgressBar.setProgress() einstellen. Im Ereignismodus sollten Loader-Objekte als Quelle verwendet werden. Objekte, welche die Methoden getBytesLoaded() und getBytesTotal() übergeben, können im Abfragemodus als Quelle genutzt werden. Dazu zählen auch benutzerdefinierte Objekte oder das _root-Objekt. Beispiel Mit dem folgenden Code wird die Fortschrittleiste in den Ereignismodus gesetzt: pBar.mode = "event"; ProgressBar.percentComplete Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.percentComplete Beschreibung Eigenschaft (schreibgeschützt); gibt einen Prozentwert zurück, der angibt, wie weit der Ladevorgang bereits fortgeschritten ist. Dieser Wert wird abgerundet. Der Prozentwert wird mit der folgenden Formel berechnet: 100*(Wert-Mindestwert)/(Höchstwert-Mindestwert) Beispiel Der folgende Code sendet den Wert der Eigenschaft percentComplete an das Bedienfeld Ausgabe: trace("Prozent geladen = " + pBar.percentComplete); 468 Kapitel 4: Komponenten-Referenz ProgressBar.progress Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(progress){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.progress = function(eventObject){ ... } pBarInstance.addEventListener("progress", listenerObject) Ereignisobjekt Zusätzlich zu den standardmäßigen Ereignisobjekteigenschaften sind für das Ereignis ProgressBar.progress noch zwei weitere Eigenschaften definiert: current (der geladene Wert gleich total), und total (der Gesamtwert). Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn sich der Wert der Fortschrittleiste ändert. Dieses Ereignis wird nur dann gesendet, wenn ProgressBar.mode auf manual oder polled eingestellt ist. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der ProgressBar-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an die Instanz meinePBar angehängt wird, sendet „_level0.meinePBar“ an das Bedienfeld Ausgabe: on(progress){ trace(this); } ProgressBar-Komponente 469 Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (pBarInstance) setzt ein Ereignis (in diesem Fall progress) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, eines von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel wird das Listener-Objekt form erstellt und die Ereignisprozedur progress dafür definiert. Der Listener form wird in der letzten Zeile des Codes für die Instanz pBar registriert. Wenn das Ereignis progress ausgelöst wird, sendet pBar das Ereignis per Broadcast an den Listener form, der die Rückruffunktion progress aufruft: var form:Object = new Object(); form.progress = function(eventObj){ // eventObj.target ist die Komponente, die das change-Ereignis generiert hat // d. h. die Fortschrittleiste. trace("Wert geändert in " + eventObj.target.value); } pBar.addEventListener("progress", form); Siehe auch UIEventDispatcher.addEventListener() ProgressBar.setProgress() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.setProgress(completed, total) Parameter Eine Zahl, die angibt, wie weit der Ladevorgang bereits fortgeschritten ist. Die Eigenschaften ProgressBar.label und ProgressBar.conversion lassen sich zum Anzeigen der Zahlen als Prozentteile oder in beliebigen anderen Einheiten einsetzen. Ausschlaggebend ist dabei die Quelle der Fortschrittleiste. completed total Eine Zahl, die angibt, wie weit der Ladevorgang insgesamt fortschreiten muss, damit 100 Prozent erreicht werden. 470 Kapitel 4: Komponenten-Referenz Rückgaben Eine Zahl, die angibt, wie weit der Ladevorgang bereits fortgeschritten ist. Beschreibung Methode; legt den Zustand der Leiste fest, der darstellt, wie weit der Ladevorgang bereits fortgeschritten ist, wenn die Eigenschaft ProgressBar.mode auf manual eingestellt ist. Sie können diese Methode aufrufen, damit die Leiste statt des Fortschritts beim Laden einen anderen Zustand darstellt. Das Argument completed wird der Eigenschaft value zugewiesen und das Argument total der Eigenschaft maximum. Die Eigenschaft minimum wird nicht geändert. Beispiel Mit dem folgenden Code wird die Methode setProgress() basierend auf dem Fortschritt in der Zeitleiste einer Flash-Anwendung aufgerufen: pBar.setProgress(_currentFrame, _totalFrames); ProgressBar.source Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.source Beschreibung Eigenschaft; eine Referenz auf die zu ladende Instanz, deren Ladefortschritt angezeigt werden soll. Der geladene Inhalt löst das Ereignis progress aus, aus dem der aktuelle Wert und der Gesamtwert abgerufen werden. Dieses Ereignis wird nur dann verwendet, wenn ProgressBar.mode auf event oder polled eingestellt ist. Der Standardwert ist undefined. Die ProgressBar kann mit Inhalten innerhalb einer Anwendung eingesetzt werden. Das gilt auch für _root. Beispiel In diesem Beispiel wird die Instanz pBar zum Anzeigen des Ladevorgangs einer LoaderKomponente mit dem Namen loader herangezogen: pBar.source = loader; Siehe auch ProgressBar.mode ProgressBar-Komponente 471 ProgressBar.value Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung pBarInstance.value Beschreibung Eigenschaft (schreibgeschützt); gibt an, wie weit der Ladevorgang bereits fortgeschritten ist. Diese Eigenschaft ist eine Zahl zwischen dem Wert von ProgressBar.minimum und ProgressBar.maximum. Der Standardwert ist 0. RadioButton-Komponente Mit der RadioButton-Komponente können Sie erzwingen, dass Benutzer aus einer Reihe von Optionen nur eine einzige auswählen. Die RadioButton-Komponente muss in einer Gruppe von mindestens zwei RadioButton-Instanzen verwendet werden. Es kann immer nur ein Mitglied der Gruppe ausgewählt sein. Wenn der Benutzer ein Optionsfeld in einer Gruppe auswählt, wird die Auswahl des derzeit ausgewählten Optionsfelds aufgehoben. Mit dem Parameter groupName können Sie angeben, zu welcher Gruppe ein Optionsfeld gehört. Ein Optionsfeld kann aktiviert oder deaktiviert sein. Wenn ein Benutzer eine Optionsfeldgruppe mit der Tabulatortaste ansteuert, erhält nur das ausgewählte Optionsfeld den Fokus. Ein Benutzer kann die Pfeiltasten drücken, um den Fokus innerhalb der Gruppe zu ändern. Im deaktivierten Zustand kann ein Optionsfeld keine Maus- oder Tastatureingaben entgegen nehmen. Eine Gruppe von Komponenten des Typs „RadioButton“ erhält den Fokus, wenn Sie darauf klicken oder sie mit der Tabulatortaste ansteuern. Wenn eine Optionsfeldgruppe den Fokus hat, kann sie mit den folgenden Tasten gesteuert werden: Taste Beschreibung <Nach-oben>/ <Nach-rechts> Die Auswahl wird auf das vorherige Optionsfeld innerhalb der Optionsfeldgruppe verschoben. <Nach-unten>/ <Nach-links> Die Auswahl wird auf das nächste Optionsfeld innerhalb der Optionsfeldgruppe verschoben. <Tab> Der Fokus wird von der Optionsfeldgruppe auf die nächste Komponente verschoben. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. 472 Kapitel 4: Komponenten-Referenz Eine Live-Vorschau der einzelnen RadioButton-Instanzen auf der Bühne spiegelt die Änderungen wieder, die im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring vorgenommen wurden. Der Umstand, dass immer nur ein Optionsfeld ausgewählt sein kann, ist in der Live-Vorschau jedoch nicht sichtbar. Wenn Sie den Parameter selected für zwei Optionsfelder in der gleichen Gruppe auf true setzen, werden beide als ausgewählt angezeigt, obwohl zur Laufzeit nur die zuletzt erstellte Instanz als ausgewählt angezeigt wird. Weitere Informationen finden Sie unter „RadioButton-Parameter“ auf Seite 473. Wenn Sie einer Anwendung die RadioButton-Komponente hinzufügen, können Sie sie mit Hilfe des Bedienfelds Eingabehilfen für Bildschirmleseprogramme zugänglich machen. Dazu brauchen Sie lediglich die folgende Codezeile einzufügen: mx.accessibility.RadioButtonAccImpl.enableAccessibility(); Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie in der Hilfe „Flash verwenden“ unter „Barrierefreie Inhalte erstellen“. Mit der RadioButton-Komponente arbeiten Ein Optionsfeld ist ein grundlegender Bestandteil jedes Formulars und jeder Webanwendung. Sie können Optionsfelder immer dann verwenden, wenn ein Benutzer aus einer Gruppe von Optionen eine einzige auswählen soll. So würden Sie Optionsfelder beispielsweise einsetzen, um auf einem Formular zu fragen, mit welcher Kreditkarte ein Kunde zahlen möchte. RadioButton-Parameter Im Folgenden sind die Authoring-Parameter aufgeführt, die Sie für die einzelnen Instanzen der RadioButton-Komponente im Eigenschafteninspektor oder Komponenten-Inspektor festlegen können: label legt den Wert des Texts für das Optionsfeld fest; der Standardwert ist Radio Button. data ist der Wert, der mit dem Optionsfeld verknüpft ist. Hierfür gibt es keinen Standardwert. groupName ist der Gruppenname des Optionsfelds. Der Standardwert ist radioGroup. selected legt fest, ob der Anfangszustand des Optionsfelds ausgewählt (true) oder nicht ausgewählt (false) ist. Ein ausgewähltes Optionsfeld wird ausgefüllt angezeigt. Der Wert von selected kann jeweils nur für ein Optionsfeld in einer Gruppe true sein. Wenn mehrere Optionsfelder innerhalb einer Gruppe auf true eingestellt sind, wird das Optionsfeld ausgewählt, das zuletzt als Instanz erstellt wurde. Der Standardwert lautet false. labelPlacement richtet den Bezeichnungstext des Optionsfelds aus. Diesem Parameter können die vier Werte left (links), right (rechts), top (oben) und bottom (unten) zugewiesen werden. Der Standardwert ist right. Weitere Informationen finden Sie unter RadioButton.labelPlacement. Sie können ein ActionScript erstellen, um zusätzliche Optionen für RadioButton-Instanzen mit Methoden, Eigenschaften und Ereignissen der RadioButton-Klasse festzulegen. Weitere Informationen finden Sie unter RadioButton-Klasse. RadioButton-Komponente 473 Eine Anwendung mit der RadioButton-Komponente erstellen Im folgenden Verfahren wird erklärt, wie Sie einer Anwendung beim Authoring RadioButtonKomponenten hinzufügen. Im folgenden Beispiel stellen die Optionsfelder eine Entscheidungsfrage: „Mögen Sie Flash?“. Die Daten aus der Optionsfeldgruppe werden in der TextArea-Komponente mit dem Instanznamen theVerdict angezeigt. So erstellen Sie eine Anwendung mit der RadioButton-Komponente: 1 Ziehen Sie zwei RadioButton-Komponenten aus dem Bedienfeld Komponenten auf die Bühne. 2 Wählen Sie eines der Optionsfelder auf der Bühne aus, und führen Sie im Komponenten- Inspektor folgende Schritte durch: ■ Geben Sie Ja für den Parameter label ein. ■ Geben Sie MagFlash für den Parameter data ein. 3 Wählen Sie das andere Optionsfeld aus, und führen Sie im Komponenten-Inspektor folgende Schritte durch: ■ Geben Sie Nein für den Parameter label ein. ■ Geben Sie MagFlashNicht für den Parameter data ein. 4 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: MagFlashListener = new Object(); MagFlashListener.click = function (evt){ theVerdict.text = evt.target.selection.data } radioGroup.addEventListener("click", MagFlashListener); Die letzte Codezeile fügt der Optionsfeldgruppe radioGroup die Ereignisprozedur click hinzu. Die Prozedur legt die Eigenschaft text der Instanz theVerdict der TextAreaKomponente auf den Wert der Eigenschaft data des ausgewählten Optionsfelds in der Optionsfeldgruppe radioGroup fest. Weitere Informationen finden Sie unter RadioButton.click. Die RadioButton-Komponente anpassen Sie können die RadioButton-Komponente sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformieren. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe „UIObject.setSize()“ auf Seite 634). Die Begrenzungsbox der RadioButton-Komponente ist unsichtbar und definiert außerdem den Kollisionsbereich der Komponente. Wenn Sie die Komponente vergrößern, vergrößert sich auch die Größe des Kollisionsbereichs. Wenn die Begrenzungsbox der Komponente zu klein ist, um die Komponentenbezeichnung aufzunehmen, wird die Bezeichnung abgeschnitten. 474 Kapitel 4: Komponenten-Referenz Stile mit der RadioButton-Komponente verwenden Sie können Stileigenschaften festlegen, um das Erscheinungsbild eines Optionsfelds zu ändern. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. Die RadioButton-Komponente verwendet die folgenden Kranz-Stile: Stil Beschreibung themeColor Der Hintergrund einer Komponente. Dies ist der einzige Farbstil, der den Wert nicht übernimmt. Mögliche Wert sind „haloGreen“, „haloBlue“ und „haloOrange“. color Der Text einer Komponentenbezeichnung. disabledColor Die Farbe für deaktivierten Text. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“ (kursiv). fontWeight Das Schriftgewicht für den Text: „normal“ oder „bold“ (fett). Skins mit der RadioButton-Komponente verwenden Die RadioButton-Komponente kann beim Authoring mit Skins versehen werden, indem Sie die Symbole der Komponente in der Bibliothek ändern. Die Skins für die RadioButton-Komponente befinden sich im folgenden Ordner in der Bibliothek von HaloTheme.fla oder SampleTheme.fla: Flash UI Components 2/Themes/MMDefault/RadioButton Assets/States. Weitere Informationen hierzu finden Sie unter „Skinning-Komponenten“ auf Seite 42. Wenn ein Optionsfeld aktiviert, aber nicht ausgewählt ist, zeigt es den Zustand Rollover an, wenn ein Benutzer den Mauszeiger darauf setzt. Wenn ein Benutzer auf ein nicht ausgewähltes Optionsfeld klickt, erhält das Optionsfeld den Eingabefokus und zeigt den Pressed-Zustand (false) an. Wenn ein Benutzer die Maustaste loslässt, zeigt das Optionsfeld den Zustand true an, und das zuvor ausgewählte Optionsfeld in der Gruppe kehrt zum Zustand false zurück. Wenn ein Benutzer den Zeiger bei gedrückter Maustaste vom Optionsfeld weg bewegt, kehrt das Erscheinungsbild des Optionsfeld zum Zustand false zurück und behält den Eingabefokus. Wenn ein Optionsfeld oder eine Optionsfeldgruppe deaktiviert ist, wird unabhängig von der Benutzerinteraktion der Disabled-Zustand angezeigt. Wenn Sie mit der Methode UIObject.createClassObject() eine Instanz der RadioButtonKomponente dynamisch erstellen, können Sie auch die Skins der Komponente dynamisch erzeugen. Um Skins für die RadioButton-Komponente dynamisch zu erzeugen, übergeben Sie die Skineigenschaften an die Methode UIObject.createClassObject(). Weitere Informationen finden Sie unter „Skinning-Komponenten“ auf Seite 42. Anhand der Skineigenschaften erkennen Sie, welches Symbol zum Anzeigen einer Komponente verwendet werden soll. RadioButton-Komponente 475 Die RadioButton-Komponente verwendet die folgenden Skineigenschaften: Name Beschreibung falseUpIcon Der Status Nicht ausgewählt. Der Standardwert ist radioButtonFalseUp. falseDownIcon Der Status Gedrückt und nicht ausgewählt. Der Standardwert ist radioButtonFalseDown. falseOverIcon Der Status Über und nicht ausgewählt. Der Standardwert ist radioButtonFalseOver. falseDisabledIcon Der Status Deaktiviert und nicht ausgewählt. Der Standardwert ist radioButtonFalseDisabled. trueUpIcon Der Status Ausgewählt. Der Standardwert ist radioButtonTrueUp. trueDisabledIcon Der Status Deaktiviert und ausgewählt. Der Standardwert ist radioButtonTrueDisabled. RadioButton-Klasse Vererbung UIObject > UIComponent > SimpleButton > Button > RadioButton ActionScript-Paketname mx.controls.RadioButton Mit den Eigenschaften der RadioButton-Klasse können Sie zur Laufzeit eine Textbezeichnung erstellen und sie relativ zum Optionsfeld platzieren. Außerdem können Sie Optionsfeldern Datenwerte und Gruppen zuweisen und sie anhand des Datenwerts oder des Instanznamens auswählen. Wenn Sie eine Eigenschaft der RadioButton-Klasse mit ActionScript einstellen, werden die Parameter mit dem gleichen Namen im Eigenschafteninspektor und Komponenten-Inspektor außer Kraft gesetzt. Die RadioButton-Komponente überschreibt mit Hilfe des FocusManagers das standardmäßige Fokusrechteck des Flash Players und zeigt stattdessen ein angepasstes Fokusrechteck mit abgerundeten Ecken an. Weitere Informationen zur Erstellung der Fokusnavigation finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.RadioButton.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineRadioButtonInstance.version);. Übersicht: Methoden der RadioButton-Klasse Erbt alle Methoden von UIObject, UIComponent, SimpleButton und Button-Klasse. 476 Kapitel 4: Komponenten-Referenz Übersicht: Eigenschaften der RadioButton-Klasse Eigenschaft Beschreibung RadioButton.data Der Wert, der mit einer Optionsfeldinstanz verknüpft ist. RadioButton.groupName Der Gruppenname für eine Optionsfeldgruppe oder eine Optionsfeldinstanz. RadioButton.label Der Text, der neben dem Optionsfeld angezeigt wird. RadioButton.labelPlacement Die Ausrichtung des Bezeichnungstextes relativ zum Optionsfeld. RadioButton.selected Stellt den Zustand der Optionsfeldinstanz auf ausgewählt ein und hebt die Auswahl des zuvor ausgewählten Optionsfelds auf. RadioButton.selectedData Wählt das Optionsfeld in einer Optionsfeldgruppe mit dem angegebenen Datenwert aus. RadioButton.selection Eine Referenz auf das derzeit ausgewählte Optionsfeld in einer Optionsfeldgruppe. Erbt alle Eigenschaften von UIObject, UIComponent, SimpleButton und Button-Klasse. Übersicht: Ereignisse der RadioButton-Klasse Ereignis Beschreibung RadioButton.click Wird ausgelöst, wenn die Maustaste über einer Schaltflächeninstanz losgelassen wird. Erbt alle Ereignisse von UIObject, UIComponent, SimpleButton und Button-Klasse. RadioButton.click Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(click){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.click = function(eventObject){ ... } radioButtonGroup.addEventListener("click", listenerObject) RadioButton-Komponente 477 Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn die Maus über dem Optionsfeld geklickt (gedrückt und wieder losgelassen) wird oder wenn das Optionsfeld über die Pfeiltasten ausgewählt wird. Das Ereignis wird ebenfalls per Broadcast gesendet, wenn die Leertaste oder die Pfeiltasten gedrückt werden, während eine Optionsfeldgruppe den Fokus hat, obwohl keines der Optionsfelder in der Gruppe ausgewählt wird. Das erste Verwendungsbeispiel enthält die Prozedur on() und muss direkt an eine Instanz der RadioButton-Komponente angehängt werden. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Beispiel: Der folgende Code, der an das Optionsfeld meinRadioButton angehängt wird, sendet „_level0.meinRadiobutton“ an das Bedienfeld Ausgabe: on(click){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (radioButtonInstance) setzt ein Ereignis (in diesem Fall click) ab, und das Ereignis wird durch eine Funktion, auch als Prozedur bezeichnet, des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Das Ereignisobjekt verfügt über einen Satz von Eigenschaften mit Informationen zum Ereignis. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Beispiel, das für ein Bild der Zeitleiste geschrieben wurde, wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn auf ein Optionsfeld in der radioGroup geklickt wird. In der ersten Codezeile wird ein Listener-Objekt mit der Bezeichnung form erzeugt. In der zweiten Zeile wird eine Funktion für das click-Ereignis des Listener-Objekts definiert. Eine traceAktion innerhalb der Funktion erzeugt anhand des automatisch übergebenen Ereignisobjekts (in diesem Fall eventObj) eine Meldung. Die Eigenschaft target eines Ereignisobjekts ist die Komponente, die das Ereignis generiert hat. Sie können von der Eigenschaft target aus auf die Instanzeigenschaften zugreifen (in diesem Beispiel wird auf die Eigenschaft RadioButton.selection zugegriffen). In der letzten Zeile wird die Methode UIEventDispatcher.addEventListener() von radioGroup aus aufgerufen, und das Ereignis click und das Listener-Objekt form werden als Parameter an sie übergeben: form = new Object(); form.click = function(eventObj){ trace("Die ausgewählte Optionsfeldinstanz ist " + eventObj.target.selection); } radioGroup.addEventListener("click", form); 478 Kapitel 4: Komponenten-Referenz Mit dem folgenden Code wird eine Meldung an das Bedienfeld Ausgabe gesendet, wenn auf radioButtonInstance geklickt wird. Die Prozedur on() muss direkt an radioButtonInstance angehängt werden, wie im folgenden Code: on(click){ trace("Es wurde auf die Optionsfeldkomponente geklickt"); } RadioButton.data Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.data Beschreibung Eigenschaft; gibt die Daten an, die mit einer Optionsfeldinstanz verknüpft werden sollen. Wenn Sie diese Eigenschaft einstellen, wird der Wert des Parameters data beim Authoring im Eigenschafteninspektor oder Komponenten-Inspektor außer Kraft gesetzt. Die Eigenschaft data kann einen beliebigen Datentyp haben. Beispiel Im folgenden Beispiel wird der Datenwert #FF00FF der Optionsfeldinstanz radioOne zugewiesen: radioOne.data = "#FF00FF"; RadioButton.groupName Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.groupName radioButtonGroup.groupName Beschreibung Eigenschaft; legt den Gruppennamen für eine Optionsfeldinstanz oder -gruppe fest. Mit dieser Eigenschaft können Sie einen Gruppennamen für eine Optionsfeldinstanz oder für eine Optionsfeldgruppe festlegen. Beim Aufruf dieser Methode wird der Wert des beim Authoring angegebenen Parameters groupName überschrieben. Der Standardwert ist radioGroup. RadioButton-Komponente 479 Beispiel Im folgenden Beispiel wird der Gruppenname einer Optionsfeldinstanz auf colorChoice eingestellt und dann der Gruppenname auf sizeChoice geändert. Um dieses Beispiel zu testen, platzieren Sie ein Optionsfeld mit dem Instanznamen meinRadioButton auf der Bühne, und geben Sie in Bild 1 den folgenden Code ein: meinRadioButton.groupName = "colorChoice"; trace(meinRadioButton.groupName); colorChoice.groupName = "sizeChoice"; trace(colorChoice.groupName); RadioButton.label Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.label Beschreibung Eigenschaft; gibt die Textbezeichnung für das Optionsfeld an. Als Standard wird die Bezeichnung rechts neben dem Optionsfeld angezeigt. Beim Aufruf dieser Methode wird der beim Authoring angegebene Parameter label überschrieben. Wenn der Bezeichnungstext zu lang ist, um in die Begrenzungsbox der Komponente zu passen, wird der Text abgeschnitten. Beispiel Im folgenden Beispiel wird die Eigenschaft label der Instanz radioButton festgelegt: radioButton.label = "Aus Liste entfernen"; RadioButton.labelPlacement Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.labelPlacement radioButtonGroup.labelPlacement Beschreibung Eigenschaft; ein String, der die Position der Bezeichnung relativ zum Optionsfeld angibt. Sie können diese Eigenschaft für eine einzelne Instanz oder für eine Optionsfeldgruppe einstellen. Wenn Sie die Eigenschaft für eine Gruppe einstellen, wird die Bezeichnung für jedes Optionsfeld in der Gruppe an der entsprechenden Position platziert. 480 Kapitel 4: Komponenten-Referenz Die folgenden Werte können angegeben werden: • • • • Das Optionsfeld wird in der linken oberen Ecke des Begrenzungsbereichs fixiert. Die Bezeichnung wird rechts neben dem Optionsfeld angezeigt. left Das Optionsfeld wird in der rechten oberen Ecke des Begrenzungsbereichs fixiert. Die Bezeichnung wird links neben dem Optionsfeld angezeigt. bottom Die Bezeichnung wird unter dem Optionsfeld platziert. Die Gruppe aus Optionsfeld und Bezeichnung wird horizontal und vertikal zentriert. Wenn die Begrenzungsbox des Optionsfelds nicht groß genug ist, wird die Bezeichnung abgeschnitten. top Die Bezeichnung wird über dem Optionsfeld platziert. Die Gruppe aus Optionsfeld und Bezeichnung wird horizontal und vertikal zentriert. Wenn die Begrenzungsbox des Optionsfelds nicht groß genug ist, wird die Bezeichnung abgeschnitten. right Beispiel Mit dem folgenden Code wird die Bezeichnung links neben den einzelnen Optionsfeldern in der radioGroup platziert: radioGroup.labelPlacement = "left"; RadioButton.selected Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.selected radioButtonGroup.selected Beschreibung Eigenschaft; ein Boolescher Wert, der den Zustand des Optionsfelds auf ausgewählt (true) einstellt und die Auswahl des zuvor ausgewählten Optionsfelds aufhebt, oder die Auswahl des Optionsfelds aufhebt (false). Beispiel In der ersten Codezeile wird die Instanz mcButton auf true eingestellt. In der zweiten Codezeile wird der Wert der Eigenschaft selected zurückgegeben: mcButton.selected = true; trace(mcButton.selected); RadioButton.selectedData Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. RadioButton-Komponente 481 Verwendung radioButtonGroup.selectedData Beschreibung Eigenschaft; wählt das Optionsfeld mit dem angegebenen Datenwert aus und hebt die Auswahl des zuvor ausgewählten Optionsfelds auf. Wenn die Eigenschaft data für eine ausgewählte Instanz nicht angegeben ist, wird der Bezeichnungswert der ausgewählten Instanz ausgewählt und zurückgegeben. Die Eigenschaft selectedData kann einen beliebigen Datentyp haben. Beispiel Im folgenden Beispiel wird das Optionsfeld mit dem Wert #FF00FF aus der Optionsfeldgruppe colorGroup ausgewählt und der Wert an das Bedienfeld Ausgabe gesendet: colorGroup.selectedData = "#FF00FF"; trace(colorGroup.selectedData); RadioButton.selection Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung radioButtonInstance.selection radioButtonGroup.selection Beschreibung Eigenschaft; verhält sich unterschiedlich, je nachdem, ob Sie die Eigenschaft abrufen oder einstellen. Wenn Sie die Eigenschaft abrufen, wird die Objektreferenz des derzeit ausgewählten Optionsfelds in einer Optionsfeldgruppe zurückgegeben. Wenn Sie die Eigenschaft einstellen, wird das angegebene Optionsfeld (das als Objektreferenz übergeben wird) in einer Optionsfeldgruppe ausgewählt und die Auswahl des zuvor ausgewählten Optionsfelds aufgehoben. Beispiel Im folgenden Beispiel wird das Optionsfeld mit dem Instanznamen color1 ausgewählt und sein Instanzname an das Bedienfeld Ausgabe gesendet: colorGroup.selection = color1; trace(colorGroup.selection._name) 482 Kapitel 4: Komponenten-Referenz RDBMSResolver-Komponente (nur Flash Professional) Die Resolver-Komponenten werden in Verbindung mit der DataSet-Komponente verwendet (Teil der Datenverwaltungsfunktionalität der Flash-Datenarchitektur). Mit den ResolverKomponenten können Sie die an den Daten in der Anwendung vorgenommenen Änderungen in ein Format umwandeln, das für die zu aktualisierende externe Datenquelle geeignet ist. Diese Komponenten sind zur Laufzeit nicht sichtbar. Wenn Sie eine DataSet-Komponente in einer Anwendung verwenden, erzeugt sie einen optimierten Anweisungssatz (DeltaPacket), der die während der Laufzeit an den Daten vorgenommenen Änderungen beschreibt. Dieser Anweisungssatz wird von den ResolverKomponenten in das erforderliche Format (Aktualisierungspaket) umgewandelt. Wenn Sie eine Aktualisierung an den Server senden, schickt dieser eine Antwort (Ergebnispaket), die aus der Aktualisierung resultierende zusätzliche Aktualisierungen oder Fehler enthält. Die ResolverKomponenten können diese Informationen wieder in ein DeltaPacket umwandeln, das dann auf die DataSet-Komponente angewendet werden kann, um diese mit der externen Datenquelle abzugleichen. Mit Resolver-Komponenten können Sie eine Anwendung und eine externe Datenquelle abgleichen, ohne dass dafür zusätzlicher ActionScript-Code erforderlich ist. Die RDBMSResolver-Komponente übersetzt die XML, die von einem Webdienst, von JavaBean, einem Servlet oder einer ASP-Seite empfangen und analysiert werden kann. Die XML enthält die Informationen und Formatierungen, die zur Aktualisierung beliebiger relationaler SQLStandarddatenbanken erforderlich sind. Für die Rücksendung von Daten an einen XMLbasierten Server gibt es eine parallele Resolver-Komponente (XUpdateResolver; siehe „XUpdateResolver-Komponente (nur Flash Professional)“ auf Seite 696). Weitere Informationen über DataSet-Komponenten finden Sie unter „DataSet-Komponente (nur Flash Professional)“ auf Seite 218. Weitere Informationen über Datenverbindungen finden Sie unter „WebServiceConnector (nur Flash Professional)“ auf Seite 664 und „XMLConnectorKomponente (nur Flash Professional)“ auf Seite 686. Weitere Informationen über die FlashDatenarchitektur finden Sie unter „Resolver-Komponenten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Die RDBMSResolver-Komponente wandelt die an den Daten in einer Anwendung vorgenommenen Änderungen in ein XML-Paket um, das an eine externe Datenquelle gesendet werden kann. Hinweis: Sie können mit der RDBMSResolver-Komponente Datenaktualisierungen an beliebige externe Datenquellen senden, die XML verarbeiten und SQL-Anweisungen für eine Datenbank erzeugen können, wie beispielsweise eine ASP-Seite, ein Java-Servlet oder eine ColdFusionKomponente. Die von der RDBMSResolver-Komponente erzeugten Aktualisierungen werden in Form eines XML-Aktualisierungspakets gesendet, das über ein Connector-Objekt an die Datenbank geleitet wird. Die Resolver-Komponente wird mit der DeltaPacket-Eigenschaft der DataSet-Komponente verbunden, sendet ihr eigenes Aktualisierungspaket an eine Datenverbindung, empfängt von dieser Meldungen über Server-Fehler und leitet diese zurück an die DataSet-Komponente – all dies unter Einsatz von bindbaren Eigenschaften. RDBMSResolver-Komponente (nur Flash Professional) 483 Mit der RDBMSResolver-Komponente arbeiten (nur Flash Professional) Diese RDBMSResolver-Komponente sollte nur dann verwendet werden, wenn Ihre FlashAnwendung eine DataSet-Komponente enthält und ein Aktualisierungspaket zurück an die Datenquelle senden muss. Diese Komponente löst Daten auf, die Sie an eine relationale Datenbank zurücksenden möchten. Weitere Informationen über die RDBMSResolver-Komponente finden Sie unter „ResolverKomponenten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Parameter der RDBMSResolver-Komponente TableName Ein String, der den Tabellennamen in der XML für die zu aktualisierende Datenbanktabelle angibt. Dieser Wert muss mit dem Eingabewert für das zu aktualisierende Resolver.fieldInfo-Element identisch sein. Gibt es für dieses Feld keine Aktualisierungen, dann muss dieser Wert leer gelassen werden, was dem Standardwert entspricht. Enumerator, der festlegt, wie Schlüsselfelder während der Erzeugung des XMLAktualisierungspakets identifiziert werden. Der Standardwert lautet umUsingKey. Es können folgende Werte angegeben werden: UpdateMode • • • Verwendet die alten Werte aller modifizierten Felder, um den zu aktualisierenden Datensatz zu identifizieren. Dies ist der sicherste Wert für die Aktualisierung, da Sie so sicherstellen können, dass der abgerufene Datensatz in der Zwischenzeit nicht von einem anderen Benutzer geändert wurde. Diese Methode ist jedoch zeitaufwändiger und erzeugt ein größeres Aktualisierungspaket. umUsingModified Verwendet die alten Werte aller modifizierten Felder, um den zu aktualisierenden Datensatz zu identifizieren. Mit diesem Wert können Sie sicherstellen, dass kein anderer Benutzer die gleichen Felder im Datensatz geändert hat, seit Sie den Datensatz abgerufen haben. umUsingKey Dies ist der Standardwert für diese Eigenschaft. Bei dieser Einstellung werden die alten Werte der Schlüsselfelder verwendet. Dies setzt eine optimistische Synchronisation voraus, was bei den meisten heutigen Datenbanksystemen der Fall ist, und garantiert, dass Sie denselben Datensatz modifizieren, den Sie auch von der Datenbank abgerufen haben. Die von Ihnen vorgenommenen Änderungen überschreiben Änderungen, die andere Benutzer an den gleichen Daten vorgenommen haben. umUsingAll Dieser String gibt einen Feldwert von null an. Kann vom Benutzer definiert werden, um Verwechslungen mit einem leeren String ("") oder einem anderen gültigen Wert zu vermeiden. Der Standardwert lautet {_NULL_}. NullValue Sammlung mit einem oder mehreren Schlüsselfeldern, welche die Datensätze eindeutig identifizieren. Falls es sich bei der Datenquelle um eine Datenbanktabelle handelt, besitzt sie ein oder mehrere Schlüsselfelder, mit denen der Datensatz in der Tabelle eindeutig identifiziert werden kann. Darüber hinaus wurden manche Felder u. U. aus anderen Tabellen berechnet oder zusammengefügt. Diese Felder müssen identifiziert werden, damit im XMLAktualisierungspaket Schlüsselfelder gesetzt werden können. Alle Felder, die nicht aktualisiert werden sollen, werden im XML-Aktualisierungspaket ausgelassen. FieldInfo 484 Kapitel 4: Komponenten-Referenz Die RDBMSResolver-Komponente besitzt zu diesem Zweck den Parameter FieldInfo. Mit dieser Sammeleigenschaft können Sie eine unbegrenzte Anzahl von Feldern mit Eigenschaften definieren, für die eine besondere Verarbeitung erforderlich ist. Jedes FieldInfo-Element der Sammlung enthält drei Eigenschaften: • • • FieldName Der Name des Feldes. Dieser Name muss einem Feld in der DataSetKomponente entsprechen. OwnerName Optionaler Wert. Dient zum Identifizieren von Feldern, die nicht zu der Tabelle gehören, die im Parameter TableName der Resolver-Komponente angegeben ist. Entspricht dieser Wert dem Parameter TableName, oder ist er leer, so ist das Feld in der Regel im XMLPaket enthalten. Handelt es sich um einen anderen Wert, ist dieses Feld aus dem Aktualisierungspaket ausgeschlossen. IsKey Boolesche Eigenschaft, die Sie mit true belegen müssen, damit alle Schlüsselfelder für diese Tabelle aktualisiert werden. Im folgenden Beispiel werden FieldInfo-Elemente gezeigt, welche erstellt werden, um Felder in der Kunden-Tabelle zu aktualisieren. Sie müssen die Schlüsselfelder in der Kunden-Tabelle identifizieren. Die Kunden-Tabelle besitzt nur das Schlüsselfeld id. Erstellen Sie daher ein Feldelement mit folgenden Werten: FieldName = "id" OwnerName = <!-- nicht belegen --> IsKey = "true" Ferner wird das Feld custType per Join der Abfrage hinzugefügt. Dieses Feld soll bei der Aktualisierung nicht berücksichtigt werden, deshalb erstellen Sie ein Feld mit folgenden Werten: FieldName = "custType" OwnerName = "JoinedField" IsKey = "false" Sind die Feldelemente definiert, kann der Flash Player diese zum automatischen Erstellen der vollständigen XML verwenden, mit deren Hilfe die Tabelle aktualisiert wird. Übersicht: Eigenschaften der RDBMSResolver-Komponente Eigenschaft Beschreibung RDBMSResolver.deltaPacket Eine Kopie der DeltaPacket-Eigenschaften der DataSetKomponente. RDBMSResolver.fieldInfo Eine unbegrenzte Anzahl von Feldern mit Eigenschaften, welche die DataSet-Felder identifizieren, für die eine Sonderverarbeitung entweder als Schlüsselfeld oder als nicht aktualisierbares Feld erforderlich ist. RDBMSResolver.nullValue Indikator dafür, dass der Wert des Felds null ist. RDBMSResolver.tableName Der Tabellenname in der XML für die zu aktualisierende Datenbanktabelle. RDBMSResolver.updateMode Der Wert, mit dem bestimmt wird, wie Felder beim Erstellen des XML-Aktualisierungspakets identifiziert werden. RDBMSResolver-Komponente (nur Flash Professional) 485 Eigenschaft Beschreibung RDBMSResolver.updatePacket Eine Kopie der updatePacket-Eigenschaft der Datenverbindung, die die aktuellsten XML-formatierten Daten zur Rücksendung von der Datenverbindung zur DataSetKomponente enthält, nachdem der Server die Aktualisierungsanforderung der Anwendung erhalten hat. RDBMSResolver.updateResults Eine Kopie der Results-Eigenschaft der Datenverbindung, die XML-formatierte Fehler oder Aktualisierungen für die DataSet-Komponente zurückgibt. Übersicht: Methoden der RDBMSResolver-Komponente Methode Beschreibung RDBMSResolver.addFieldInfo() Fügt der fieldInfo-Sammlung ein neues Element hinzu. Dies wird eher für die dynamische Erstellung einer ResolverKomponente zur Laufzeit als für den Einsatz des Komponenten-Inspektors in der Authoring-Umgebung verwendet. Übersicht: Ereignisse der RDBMSResolver-Komponente Ereignis Beschreibung RDBMSResolver.beforeApplyUpdates In Ihrer Anwendung definiert. Wird von der Resolver- Komponente aufgerufen, um spezielle Modifikationen an der XML der updatePacket-Eigenschaft vorzunehmen, bevor diese an die Datenverbindung gebunden wird. RDBMSResolver.reconcileResults In Ihrer Anwendung definiert. Wird von der ResolverKomponente aufgerufen, um die Aktualisierungen zwischen der an den Server gesendeten updatePacket-Eigenschaft und der vom Server zurückgeschickten updatePacket-Eigenschaft abzustimmen. RDBMSResolver.reconcileUpdates In Ihrer Anwendung definiert. Wird von der ResolverKomponente aufgerufen, um die vom Server gesendete Aktualisierung mit der noch ausstehenden abzustimmen. RDBMSResolver.addFieldInfo() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.addFieldInfo("fieldName", "ownerName", "isKey") 486 Kapitel 4: Komponenten-Referenz Parameter fieldName String; gibt den Namen des Feldes an, das von diesem Informationsobjekt beschrieben wird. ownerName String; gibt den Namen der Tabelle an, der dieses Feld gehört. Braucht nicht belegt zu werden (""), wenn diese Angabe der tablename-Eigenschaft der Resolver-Instanz entspricht. isKey Boolescher Wert; gibt an, ob es sich hierbei um ein Schlüsselfeld handelt. Rückgaben Keine. Beschreibung Methode; fügt der XML-fieldInfo-Sammlung im Aktualisierungspaket ein neues Element hinzu. Wenn Sie zur Laufzeit dynamisch eine Resolver-Komponente einrichten müssen, empfiehlt es sich, anstelle des Komponenten-Inspektor in der Authoring-Umgebung diese Methode zu verwenden. Beispiel Im folgenden Beispiel wird eine Resolver-Komponente erstellt und der Name der Tabelle und des Schlüsselfelds angegeben. Außerdem wird verhindert, dass das Feld personTypeName aktualisiert wird: var meinResolver:RDBMSResolver = new RDBMSResolver(); meinResolver.tableName = "Kunden"; // Richtet das ID-Feld als Schlüsselfeld // und das Feld personTypeName so ein, dass es nicht aktualisiert wird. meinResolver.addFieldInfo("id", "", true); meinResolver.addFieldInfo("personTypeName", "JoinedField", false); // Richtet die Datenbindungen ein //... RDBMSResolver.beforeApplyUpdates Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.beforeApplyUpdates(eventObject) RDBMSResolver-Komponente (nur Flash Professional) 487 Parameter Resolver-Ereignisobjekt; beschreibt die Anpassungen, die am XML-Paket vorgenommen werden, bevor die Aktualisierung über die Datenverbindung an die Datenbank gesendet wird. Dieses Resolver-Ereignisobjekt sollte folgende Eigenschaften enthalten: eventObject Eigenschaft Beschreibung target Objekt; der Resolver, der dieses Ereignis auslöst. type String; der Name des Ereignisses. updatePacket XML-Objekt; das XML-Objekt, das zur Anwendung kommen soll. Rückgaben Keine. Beschreibung Eigenschaft; Eigenschaft vom Typ deltaPacket, die ein deltaPacket erhält, das in ein xupdatePacket umgewandelt werden soll, und die ein deltaPacket von Server-Ergebnissen ausgibt, die in die updateResults-Eigenschaft abgelegt wurden. Diese Ereignisprozedur bietet Ihnen eine Möglichkeit, die XML anzupassen, bevor Sie die aktualisierten Daten an eine Datenverbindung senden. Meldungen in der Eigenschaft updateResults werden als Fehler behandelt. Dies bedeutet, dass dem deltaPacket erneut ein Delta mit Meldungen hinzugefügt wird, damit es beim nächsten Mal, wenn das deltaPacket an den Server geschickt wird, erneut versendet werden kann. Sie müssen einen Code schreiben, der Deltas mit Meldungen verarbeitet, damit die Meldungen dem Benutzer präsentiert und modifiziert werden, bevor sie dem nächsten deltaPacket hinzugefügt werden. Beispiel Im folgenden Beispiel werden die Daten der Benutzerauthentifizierung dem XML-Paket hinzugefügt: on (beforeApplyUpdates) { // Daten der Benutzerauthentifizierung hinzufügen var userInfo = new XML( ""+getUserId()+ ""+getPassword()+"" ); updatePacket.firstChild.appendChild( userInfo ); } RDBMSResolver.deltaPacket Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket 488 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; Eigenschaft vom Typ deltaPacket, die ein deltaPacket erhält, das in ein updatePacket umgewandelt werden soll, und die ein deltaPacket von Server-Ergebnissen ausgibt, die in die updateResults-Eigenschaft abgelegt wurden. Meldungen in der Eigenschaft updateResults werden als Fehler behandelt. Dies bedeutet, dass dem deltaPacket erneut ein Delta mit Meldungen hinzugefügt wird, damit es beim nächsten Mal, wenn das deltaPacket an den Server geschickt wird, erneut versendet werden kann. Sie müssen einen Code schreiben, der Deltas mit Meldungen verarbeitet, damit die Meldungen dem Benutzer präsentiert und modifiziert werden, bevor sie dem nächsten deltaPacket hinzugefügt werden. RDBMSResolver.fieldInfo Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.fieldInfo Beschreibung Eigenschaft; Eigenschaft vom Typ Collection gibt eine Sammlung einer unbegrenzten Anzahl von Feldern mit Eigenschaften vor, die DataSet-Felder identifizieren, für die eine Sonderverarbeitung erforderlich ist; entweder, weil es sich um Schlüsselfelder oder um nicht aktualisierbare Felder handelt. Jedes FieldInfo-Element der Sammlung enthält drei Eigenschaften: Eigenschaft Beschreibung fieldName: Der Name des Sonderfelds. Dieser Feldname muss einem Feldnamen im DataSet entsprechen. OwnerName Diese optionale Eigenschaft ist der Name des Feldeigentümers, wenn dieses Feld nicht derselben Tabelle gehört, die im Parameter TableName festgelegt wurde. Wenn diese Eigenschaft mit dem gleichen Wert wie der Parameter oder nicht belegt ist, wird das betreffende Feld in der Regel in das XML-Aktualisierungspaket aufgenommen. Wird diese Eigenschaft mit einem anderen Wert belegt, wird das Feld aus dem Aktualisierungspaket ausgeschlossen. isKey Boolescher Wert, der für alle zu aktualisierenden Schlüsselfelder der Tabelle auf true gesetzt wird. RDBMSResolver-Komponente (nur Flash Professional) 489 RDBMSResolver.nullValue Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket Beschreibung Eigenschaft; Eigenschaft vom Typ String, die dazu verwendet wird, um für einen Feldwert den Wert null einzugeben. Kann vom Benutzer definiert werden, um Verwechslungen mit einem leeren String ("") oder einem anderen gültigen Wert zu vermeiden. Der Standardstring lautet {_NULL_}. RDBMSResolver.reconcileResults Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.reconcileResults(eventObject) Parameter eventObject Resolver-Ereignisobjekt; beschreibt das Ereignisobjekt, mit dem zwei updatePackets verglichen werden. Dieses Resolver-Ereignisobjekt sollte folgende Eigenschaften enthalten: Eigenschaft Beschreibung target Objekt; der Resolver, der dieses Ereignis auslöst. type String; der Name des Ereignisses. Rückgaben Keine. Beschreibung Ereignis; wird von der Resolver-Komponente aufgerufen, um zwei Pakete zu vergleichen, nachdem die Ergebnisse vom Server eingegangen sind und auf das deltaPacket angewendet wurden. 490 Kapitel 4: Komponenten-Referenz Ein einzelnes updateResults-Paket kann sowohl Ergebnisse aus Operationen aus dem deltaPacket als auch Informationen über von anderen Clients durchgeführte Aktualisierungen enthalten. Wird ein neues updatePacket empfangen, werden die Operationsergebnisse und die Datenbankaktualisierungen in zwei updatePackets aufgeteilt und separat in die deltaPacketEigenschaft platziert. Das Ereignis reconcileResults wird ausgelöst, unmittelbar bevor das deltaPacket, das die Operationsergebnisse enthält, mit Hilfe der Datenbindung gesendet wird. Beispiel Im folgenden Beispiel werden zwei updatePackets abgeglichen und die Aktualisierungen nach erfolgreichem Abschluss zurückgegeben und gelöscht: on (reconcileResults) { // Ergebnisse analysieren if( examine( updateResults )) meinDataSet.purgeUpdates(); else displayErrors( results ); } RDBMSResolver.reconcileUpdates Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.reconcileUpdates(eventObject) Parameter Resolver-Ereignisobjekt; beschreibt die Anpassungen, die am XML-Paket vorgenommen werden, bevor die Aktualisierung über die Datenverbindung an die Datenbank gesendet wird. Dieses Resolver-Ereignisobjekt sollte folgende Eigenschaften enthalten: eventObject Eigenschaft Beschreibung target Objekt; der Resolver, der dieses Ereignis auslöst. type String; der Name des Ereignisses. Rückgaben Keine. RDBMSResolver-Komponente (nur Flash Professional) 491 Beschreibung Ereignis; wird von der Resolver-Komponente aufgerufen, wenn nach Anwendung der Aktualisierungen aus einem deltaPacket Ergebnisse vom Server empfangen wurden. Ein einzelnes updateResults-Paket kann sowohl Ergebnisse aus Operationen aus dem deltaPacket als auch Informationen über von anderen Clients durchgeführte Aktualisierungen enthalten. Wenn ein neues updatePacket empfangen wird, werden die Operationsergebnisse und die Datenbankaktualisierungen in zwei deltaPackets aufgeteilt und separat in die deltaPacketEigenschaft platziert. Das Ereignis reconcileUpdates wird ausgelöst, unmittelbar bevor das deltaPacket, das die Datenbankaktualisierungen enthält, mit Hilfe der Datenbindung gesendet wird. Beispiel Im folgenden Beispiel werden zwei Ergebnisse abgeglichen und die Aktualisierungen nach erfolgreichem Abschluss gelöscht: on (reconcileUpdates) { // Ergebnisse analysieren if( examine( updateResults )) meinDataSet.purgeUpdates(); else displayErrors( results ); RDBMSResolver.tableName Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket Beschreibung Eigenschaft; eine Eigenschaft vom Typ String, die dazu eingesetzt wird, um den Tabellennamen in der XML für die zu aktualisierende Datenbanktabelle darzustellen. Damit wird auch festgelegt, welche Felder im updatePacket gesendet werden sollen. Zu diesem Zweck vergleicht die Resolver-Komponente den Wert dieser Eigenschaft mit dem für die Eigenschaft fieldInfo.ownerName angegebenen Wert. Wenn ein Feld in der Sammeleigenschaft fieldInfo über keinen Eintrag verfügt, wird es in das updatePacket abgelegt. Wenn ein Feld in der Sammeleigenschaft fieldInfo über einen Eintrag verfügt und der Wert für die Eigenschaft ownerName null oder mit der Eigenschaft tableName der Resolver-Komponente identisch ist, dann wird das Feld in das updatePacket abgelegt. Wenn ein Feld in der Sammeleigenschaft fieldInfo über einen Eintrag verfügt und der Wert für die Eigenschaft ownerName nicht null oder nicht mit der Eigenschaft tableName der Resolver-Komponente identisch ist, dann wird das Feld nicht in das updatePacket abgelegt. 492 Kapitel 4: Komponenten-Referenz RDBMSResolver.updateMode Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket Beschreibung Eigenschaft; eine Eigenschaft, die mehrere Werte enthält, welche festlegen, wie Schlüsselfelder bei der Erstellung des XML-Aktualisierungspakets identifiziert werden. Die drei folgenden Strings sind Werte für diese Eigenschaft: Wert Beschreibung umUsingAll Verwendet die alten Werte aller modifizierten Felder, um den zu aktualisierenden Datensatz zu identifizieren. Dies ist der sicherste Wert für die Aktualisierung, da Sie so sicherstellen können, dass der abgerufene Datensatz in der Zwischenzeit nicht von einem anderen Benutzer geändert wurde. Diese Methode ist jedoch zeitaufwändiger und erzeugt ein größeres Aktualisierungspaket. umUsingModified Verwendet die alten Werte aller modifizierten Felder, um den zu aktualisierenden Datensatz zu identifizieren. Mit diesem Wert können Sie sicherstellen, dass kein anderer Benutzer die gleichen Felder im Datensatz geändert hat, seit Sie den Datensatz abgerufen haben. umUsingKey Dies ist der Standardwert für diese Eigenschaft. Es werden die alten Werte der Schlüsselfelder verwendet. Dies setzt eine optimistische Synchronisation voraus, was bei den meisten heutigen Datenbanksystemen der Fall ist, und garantiert, dass Sie denselben Datensatz modifizieren, den Sie auch von der Datenbank abgerufen haben. Die von Ihnen vorgenommenen Änderungen überschreiben Änderungen, die andere Benutzer möglicherweise an den gleichen Daten vorgenommen haben. RDBMSResolver.updatePacket Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket RDBMSResolver-Komponente (nur Flash Professional) 493 Beschreibung Beschreibung Eigenschaft; eine Eigenschaft vom Typ XML, die dazu eingesetzt wird, um Eigenschaften an eine Datenverbindung zu binden, mit denen das übersetzte Aktualisierungspaket mit den Änderungen zur Aktualisierung der Datenquelle zurück an den Server gesendet wird. Das XML-Dokument enthält das Paket der DataSet-Änderungen. RDBMSResolver.updateResults Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung resolveData.deltaPacket Beschreibung Eigenschaft; eine Eigenschaft vom Typ deltaPacket, die die Ergebnisse einer Aktualisierung enthält, die über eine Datenverbindung vom Server zurückgegeben wurde. Übermitteln Sie mit Hilfe dieser Eigenschaft Fehler und aktualisierte Daten vom Server an ein DataSet; beispielsweise, wenn der Server für ein automatisch zugewiesenes Feld neue IDs zuweist. Binden Sie diese Eigenschaft an die Results-Eigenschaft einer Datenverbindung, damit diese die Ergebnisse einer Aktualisierung empfangen und zurück an das DataSet übermitteln kann. Meldungen in der Eigenschaft updateResults werden als Fehler behandelt. Dies bedeutet, dass dem deltaPacket erneut ein Delta mit Meldungen hinzugefügt wird, damit es beim nächsten Mal, wenn das deltaPacket an den Server geschickt wird, erneut versendet werden kann. Sie müssen einen Code schreiben, der Deltas mit Meldungen verarbeitet, damit die Meldungen dem Benutzer präsentiert und modifiziert werden, bevor sie dem nächsten deltaPacket hinzugefügt werden. 494 Kapitel 4: Komponenten-Referenz Remote Procedure Call (RPC)-Komponenten-API ActionScript-Klassennamemx.data.components.RPC Die Remote Procedure Call (RPC)-Komponenten-API ist eine Schnittstelle (eine Gruppe von Methoden, Eigenschaften und Ereignissen), die von einer Flash MX 2004 v2-Komponente implementiert werden kann. Die RPC-Komponenten-API definiert eine einfache Möglichkeit, um Parameter an eine externe Quelle wie z. B. einen Webdienst zu senden und von dieser Ergebnisse zu empfangen. Zu den Komponenten, welche die RPC-API implementieren, gehören u. a. die WebServiceConnector- und die XMLConnector-Komponente. Diese Komponenten fungieren als Datenverbindungen zwischen einer externen Datenquelle wie einem Webdienst oder einer XML-Datei und einer UI-Komponente Ihrer Anwendung. Eine RPC-Komponente kann eine einzelne externe Funktion aufrufen, Parameter einleiten und Ergebnisse empfangen. Die Komponente kann dieselbe Funktion mehrmals aufrufen. Um mehrere Funktionen aufzurufen, müssen Sie mehrere Komponenten verwenden. Übersicht: Eigenschaften der RPC-Komponentenklasse Eigenschaft Beschreibung RPC.multipleSimultaneousAllowed Zeigt an, ob mehrere Aufrufe gleichzeitig erfolgen können. RPC.params Gibt Daten an, die bei Ausführung der nächsten trigger()Operation an den Server gesendet werden. RPC.results Identifiziert Daten, die als Ergebnis einer trigger()-Operation vom Server empfangen wurden. RPC.suppressInvalidCalls Gibt an, ob ein Aufruf bei ungültigen Parametern unterdrückt werden soll. Übersicht: Methoden der RPC-Komponentenklasse Methode Beschreibung RPC.trigger() Löst einen Remote Procedure Call aus. Übersicht: Ereignisse der RPC-Komponentenklasse Ereignis Beschreibung RPC.result Broadcastübertragung, wenn ein Remote Procedure Call erfolgreich ausgeführt wurde. RPC.send Broadcastübertragung, wenn eine trigger()-Funktion läuft, nachdem die Parameterdaten erfasst wurden, jedoch bevor die Daten validiert werden und der Remote Call initiiert wird. RPC.status Broadcastübertragung, wenn ein Remote Procedure Call initiiert wird, um den Benutzer über den Status der Operation zu informieren. Remote Procedure Call (RPC)-Komponenten-API 495 RPC.multipleSimultaneousAllowed Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.multipleSimultaneousAllowed; Beschreibung Eigenschaft; zeigt an, ob mehrere Aufrufe gleichzeitig erfolgen können. Bei „false“ führt die trigger()-Funktion einen Aufruf aus, wenn sich bereits ein anderer Aufruf in Bearbeitung befindet. Es wird ein status-Ereignis mit dem Code CallAlreadyInProgress ausgegeben. Wenn der Wert „true“ ist, findet der Aufruf statt. Wenn gleichzeitig mehrere Aufrufe laufen, ist nicht gewährleistet, dass diese in der Reihenfolge ihrer Auslösung abgeschlossen werden. Außerdem kann der Flash Player die Anzahl der gleichzeitig ausgeführten Netzwerkoperationen beschränken. Die maximal zulässige Anzahl richtet sich nach Version und Plattform. RPC.params Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.params; Beschreibung Eigenschaft; gibt Daten an, die bei Ausführung der nächsten trigger()-Operation an den Server gesendet werden. Jede RPC-Komponente definiert, wie diese Daten verwendet werden und welche gültigen Typen es gibt. RPC.result Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.addEventListener("result", meinListenerObject); 496 Kapitel 4: Komponenten-Referenz Beschreibung Ereignis; leitet eine Broadcastübertragung ein, wenn eine Remote Procedure Call-Operation erfolgreich abgeschlossen wurde. Der Parameter für die Ereignisprozedur ist ein Objekt mit folgenden Feldern: • • type: Der String "result" Ein Verweis auf das Objekt, von dem das Ereignis ausgegeben wurde, z. B. eine WebServiceConnector-Komponente target: Sie können den tatsächlichen Ergebniswert mit Hilfe der Eigenschaft results abrufen. RPC.results Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.results; Beschreibung Eigenschaft; identifiziert Daten, die als Ergebnis einer trigger()-Operation vom Server empfangen wurden. Jede RPC-Komponente definiert, wie diese Daten abgerufen werden und welche gültigen Typen es gibt. Diese Daten werden angezeigt, wenn die RPC-Operation erfolgreich abgeschlossen wurde, was durch das Ereignis result signalisiert wird. Die Daten stehen bis zum Entladen der Komponente oder bis zur nächsten RPC-Operation zur Verfügung. Es kann sein, dass die zurückgegebenen Daten einen sehr großen Umfang haben. Für die Verwaltung gibt es 2 Möglichkeiten: • Wählen Sie als übergeordnetes Element für die RPC-Komponente einen geeigneten Movieclip, • eine Zeitleiste oder einen Bildschirm. Der Speicherinhalt der Komponente kann als Abfall erfasst werden, wenn das übergeordnete Element die Verbindung beendet. In ActionScript können Sie dieser Eigenschaft jederzeit den Wert null zuweisen. RPC.send Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.addEventListener("send", meinListenerObject); Remote Procedure Call (RPC)-Komponenten-API 497 Beschreibung Ereignis; führt während der Verarbeitung einer trigger()-Operation eine Broadcastübertragung durch, und zwar nachdem die Parameterdaten erfasst wurden, jedoch bevor diese validiert werden und der Remote Procedure Call initiiert wird. Hier sollte Code platziert werden, der die Parameterdaten vor dem Aufruf modifiziert. Der Parameter für die Ereignisprozedur ist ein Objekt mit folgenden Feldern: • • type: Der String "send" target: Ein Verweis auf das Objekt, von dem das Ereignis ausgegeben wurde, z. B. eine WebServiceConnector-Komponente Sie können die tatsächlichen Parameterwerte mit Hilfe der Eigenschaft params abrufen oder modifizieren. RPC.status Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.addEventListener("status", meinListenerObject); Beschreibung Ereignis; Broadcastübertragung, wenn ein Remote Procedure Call initiiert wird, um den Benutzer über den Status der Operation zu informieren. Der Parameter für die Ereignisprozedur ist ein Objekt mit folgenden Feldern: • • • • 498 type: Der String "status" Ein Verweis auf das Objekt, von dem das Ereignis ausgegeben wurde, z. B. eine WebServiceConnector-Komponente code: Ein String, der den Namen der bestimmten Bedingung angibt, die eingetreten ist. data: Ein Objekt, dessen Inhalt vom Code abhängt. target: Kapitel 4: Komponenten-Referenz Die folgenden Codes und zugehörigen Daten sind für das Status-Ereignis verfügbar: Code Daten StatusChange {callsInProgress:nnn} Dieses Ereignis wird ausgegeben, wenn der Aufruf eines Webdienstes beginnt oder endet. Das Element "nnn" gibt an, wie viele Aufrufe sich derzeit in Bearbeitung befinden. CallAlreadyInProgress Keine Daten InvalidParams Keine Daten Beschreibung Dieses Ereignis wird ausgegeben, wenn (a) die Funktion trigger() aufgerufen wird, und (b) der Wert für multipleSimultaneousAllowed „false“ ist, und (c) bereits ein Aufruf läuft. Nach Eintreten dieses Ereignisses gilt der versuchte Aufruf als abgeschlossen; es gibt kein Ereignis "result" oder "send". Dieses Ereignis wird ausgegeben, wenn die Funktion trigger() festgestellt hat, dass die Eigenschaft "params" keine gültigen Daten enthielt. Wenn die Eigenschaft "suppressInvalidCalls" den Wert „true“ hat, gilt der versuchte Aufruf als abgeschlossen; es gibt kein Ereignis "result" oder "send". RPC.suppressInvalidCalls Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.suppressInvalidCalls; Beschreibung Eigenschaft; gibt an, ob ein Aufruf bei ungültigen Parametern unterdrückt werden soll. Bei true führt die Funktion trigger() keinen Aufruf durch, wenn bei der Überprüfung der gebundenen Parameter ein Fehler auftritt. Es wird ein "status"-Ereignis mit dem Code InvalidParams ausgegeben. Bei false findet der Aufruf statt, wobei bei Bedarf auf die ungültigen Daten Bezug genommen wird. RPC.trigger() Verfügbarkeit Flash Player 7. Edition Flash MX Professional 2004. Verwendung componentInstance.trigger(); Remote Procedure Call (RPC)-Komponenten-API 499 Beschreibung Methode; initiiert einen Remote Procedure Call. Jede RPC-Komponente definiert exakt, was dafür erforderlich ist. Bei erfolgreicher Operation werden die Ergebnisse in der Eigenschaft results der RPC-Komponente angezeigt. Die Methode trigger() führt folgende Schritte aus: 1 Sind Daten an die Eigenschaft params gebunden, führt die Methode alle Bindungen aus um sicherzustellen, dass aktuelle Daten verfügbar sind. Dadurch wird auch eine Datenvalidierung veranlasst. 2 Wenn die Daten ungültig sind und suppressInvalidCalls auf den Wert true gesetzt wurde, wird die Operation nicht fortgesetzt. 3 Wenn die Operation fortgesetzt wird, wird das send-Ereignis abgesetzt. 4 Der tatsächliche Remote Call wird über die angegebene Verbindungsmethode (z. B. HTTP) initiiert. Screen-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > Loader > Screen ActionScript-Klassenname mx.screens.Screen Die Screen-Klasse ist die Basisklasse für Bildschirme, die Sie im Übersichtsfenster in Flash MX Professional 2004 erstellen. Bildschirme verfügen über komplexe Behälter für das Erstellen von Anwendungen und Präsentationen. Eine Übersicht zum Arbeiten mit Bildschirmen finden Sie unter „Mit Bildschirmen arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Die Screen-Klasse besitzt zwei wichtige Unterklassen: Slide und Form. Die Slide-Klasse gibt Aufschluss über das Laufzeitverhalten von Folienpräsentationen. Die SlideKlasse enthält integrierte Navigations- und Sequenzierungsfunktionen sowie die Möglichkeit, mit Hilfe von Verhalten problemlos Übergänge zwischen Folien einzufügen. Bei Folienobjekten wird ein „Zustand“ erhalten, sodass der Benutzer zur nächsten oder vorherigen Folie bzw. zum nächsten oder vorherigen Zustand wechseln kann: wird die nächste Folie angezeigt, wird die vorherige verborgen. Weitere Informationen über die Arbeit mit der Slide-Klasse zur Steuerung von Folienpräsentationen finden Sie unter „Slide-Klasse (nur Flash Professional)“ auf Seite 529. Die Form-Klasse schafft die Laufzeitumgebung für Formularanwendungen. Formulare können sich überlappen und als Behälter anderer Komponenten fungieren oder in anderen Komponenten enthalten sein. Im Gegensatz zu Folien gibt es bei Formularen keine Sequenzierungs- oder Navigationsmöglichkeiten. Weitere Informationen zum Arbeiten mit der Form-Klasse finden Sie unter „Form-Klasse (nur Flash Professional)“ auf Seite 308. Die Screen-Klasse bietet Funktionen, die Folien und Formularen gemein sind. Jeder Bildschirm verfügt über eine integrierte Eigenschaft, bei der es sich um eine Sammlung von Bildschirmen als Unterobjekte handelt. Diese Sammlung wird durch das Layout der Bildschirmhierarchie im Bildschirmfenster festgelegt. Bildschirme können eine beliebige Anzahl von Unterobjekten (auch null) haben, die selbst wiederum untergeordnete Objekte haben können. Bildschirme wissen, wie sie ihre Unterobjekte verwalten müssen 500 Kapitel 4: Komponenten-Referenz Bildschirme können ihre Unterobjekte verbergen/anzeigen Da es sich bei Bildschirmen im Wesentlichen um eine Sammlung verschachtelter Movieclips handelt, kann ein Bildschirm die Sichtbarkeit seiner Unterobjekte steuern. Bei Formularanwendungen sind standardmäßig alle Unterobjekte eines Bildschirms gleichzeitig sichtbar; bei Folienpräsentationen werden in der Regel jeweils Einzelbildschirme gezeigt. Bildschirme nehmen Broadcastübertragungen von Ereignissen vor Sie können beispielsweise das Abspielen einer Sound- oder einer Videosequenz auslösen, sobald ein bestimmter Bildschirm sichtbar wird. Externe Inhalte in Bildschirme laden (nur Flash Professional) Die Screen-Klasse erweitert die Loader-Klasse (siehe „Loader-Komponente“ auf Seite 349), welche die Möglichkeit bietet, externe SWFs (und JPEGs) problemlos zu verwalten und zu laden. Die Loader-Klasse enthält eine Eigenschaft mit dem Namen contentPath, welche die URL einer externen SWF- oder JPEG-Datei oder den Verknüpfungsbezeichner eines Movieclips in der Bibliothek angibt. Mit Hilfe dieser Funktion können Sie externe Baumstrukturen (oder jede beliebige externe SWF) als Unterobjekt eines Bildschirmknotens laden. Dies ist eine nützliche Möglichkeit, Ihre bildschirmbasierten Filme zu modularisieren und sie in mehrere, separate SWFs aufzugliedern. Angenommen, Sie haben eine Folienpräsentation, zu der drei Leute jeweils einen Abschnitt beisteuern. Sie können jeden der Präsentatoren darum bitten, eine eigene Folienpräsentation (SWF) zu erstellen. Anschließend erstellen Sie eine „Master-Folienpräsentation“ mit drei Platzhalter-Folien für die drei Einzelpräsentationen. Für jede Platzhalter-Folie können Sie deren Eigenschaft contentPath der jeweiligen SWF zuweisen. So kann beispielsweise die „Master“-Folienpräsentation so angeordnet werden wie in der nachfolgenden Illustration dargestellt: Folie mit Einleitung Platzhalter-Folien der Präsentatoren Struktur der „Master“-SWF-Folienpräsentation Angenommen, Sie haben von den Präsentatoren die drei SWFs speaker_1.swf, speaker_2.swf und speaker_3.swf erhalten. Sie können die Gesamtpräsentation einfach zusammenfügen, indem Sie für jede Platzhalter-Folie die Eigenschaft contentPath angeben, und zwar entweder mit Hilfe von ActionScript oder indem Sie für jede Folie die Eigenschaft contentPath im Eigenschafteninspektor festlegen. Speaker_1.contentPath = speaker_1.swf; Speaker_2.contentPath = speaker_2.swf; Speaker_3.contentPath = speaker_3.swf; Screen-Klasse (nur Flash Professional) 501 Sie können die Eigenschaft contentPath für die einzelnen Folien auch mit dem Eigenschafteninspektor festlegen. Beachten Sie Folgendes: Wenn Sie im Eigenschafteninspektor (oder mittels Code, siehe oben) die Eigenschaft contentPath der Folie einstellen, lädt die vorgegebene SWF standardmäßig, sobald die SWF der „Master-Präsentation“ geladen ist. Zur Verkürzung der Anfangsladezeit sollten Sie überlegen, ob Sie die contentPath-Eigenschaft nicht im Rahmen einer on(reveal)-Prozedur festlegen, die Sie den einzelnen Folien zuweisen. // Der Folie Speaker_1 zugewiesen on(reveal) { this.contentPath="speaker_1.swf"; } Alternativ dazu haben Sie die Möglichkeit, false für die autoLoad-Eigenschaft der Folie (von der Loader-Klasse vererbt) einzurichten und dann nach Freigabe der Folie die Methode load() der Folie (ebenfalls von der Loader-Klasse vererbt) aufzurufen. // Der Folie Speaker_1 zugewiesen on(reveal) { this.load(); } Mit ActionScript auf geladene Bildschirme verweisen Die Loader-Klasse erstellt einen internen Movieclip mit dem Namen contentNode, in den sie die von der Eigenschaft contentPath vorgegebene SWF oder JPEG lädt. Dieser Movieclip fügt in der Praxis einen zusätzlichen Bildschirmknoten zwischen der „Platzhalter“-Folie (die Sie in der vorstehend beschriebenen „Master“-Präsentation erstellt haben) und der ersten Folie der geladenen Folienpräsentation ein. Angenommen, die für die Platzhalter-Folie Speaker_1 erstellte SWF (siehe Illustration oben) hat folgende Struktur, wie im Übersichtsfenster dargestellt: Struktur der SWF-Folienpräsentation Speaker 1 502 Kapitel 4: Komponenten-Referenz Zur Laufzeit, wenn die SWF Speaker 1 in die Platzhalter-Folie geladen wird, hat die Gesamtpräsentation nun folgende Struktur: Zur Laufzeit von der Loader-Klasse eingefügt Struktur von „Master“- und „Speaker“-Präsentation (Laufzeit) Die Eigenschaften und Methoden der Screen-, Slide- und Form-Klasse „ignorieren“ diesen contentHolder-Knoten, soweit möglich. Gemäß der vorstehenden Illustration ist also die Folie Meinepräsentation (mit ihren Unterfolien) Teil der aufeinander folgenden Folienstruktur, welche an der Präsentationsfolie verankert ist, und wird nicht als separate Unterstruktur behandelt. Übersicht: Methoden der Screen-Klasse Methode Beschreibung Screen.getChildScreen() Gibt den untergeordneten Bildschirm dieses Bildschirms an einem bestimmten Index zurück. Erbt alle Methoden von UIObject, UIComponent, View und Loader-Komponente. Screen-Klasse (nur Flash Professional) 503 Übersicht: Eigenschaften der Screen-Klasse Eigenschaft Beschreibung Screen.currentFocusedScreen Gibt den Bildschirm zurück, der den aktuellen globalen Fokus enthält. Screen.indexInParent Gibt den Index des Bildschirms (Bezugsbasis null) in der im übergeordneten Bildschirm befindlichen Liste der untergeordneten Bildschirme zurück. Screen.numChildScreens Gibt die Anzahl der im Bildschirm enthaltenen untergeordneten Bildschirme zurück. Screen.parentIsScreen Gibt einen Booleschen Wert (true oder false) zurück, der angibt, ob das übergeordnete Objekt des Bildschirms selbst ein Bildschirm ist. Screen.rootScreen Gibt den Stammbildschirm der (untergeordneten) Struktur zurück, die den Bildschirm enthält. Erbt alle Eigenschaften von UIObject, UIComponent, View und Loader-Komponente. Übersicht: Ereignisse der Screen-Klasse Ereignis Beschreibung Screen.allTransitionsInDone Broadcastübertragung, wenn alle auf einen Bildschirm angewendeten „in“-Übergänge beendet sind. Screen.allTransitionsOutDone Broadcastübertragung, wenn alle auf einen Bildschirm angewendeten „out“-Übergänge beendet sind. Screen.mouseDown Broadcastübertragung, wenn die Maustaste über einem Objekt (Form oder Movieclip) gedrückt wurde, das direkt dem Bildschirm gehört. Screen.mouseDownSomewhere Broadcastübertragung, wenn die Maustaste irgendwo auf der Bühne, jedoch nicht unbedingt auf einem Objekt, das diesem Bildschirm gehört, gedrückt wurde. Screen.mouseMove Broadcastübertragung, wenn die Maus bewegt wird, während sie sich über dem Bildschirm befindet. Screen.mouseOut Broadcastübertragung, wenn die Maus von innerhalb des Bildschirms nach außen bewegt wird. Screen.mouseOver Broadcastübertragung, wenn die Maus von außerhalb dieses Bildschirms nach innen bewegt wird. Screen.mouseUp Broadcastübertragung, wenn die Maustaste über einem Objekt (Form oder Movieclip) losgelassen wurde, das direkt dem Bildschirm gehört. Screen.mouseUpSomewhere Broadcastübertragung, wenn die Maustaste irgendwo auf der Bühne, jedoch nicht unbedingt auf einem Objekt, das diesem Bildschirm gehört, losgelassen wurde. Erbt alle Ereignisse von UIObject, UIComponent, View und Loader-Komponente. 504 Kapitel 4: Komponenten-Referenz Screen.allTransitionsInDone Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(allTransitionsInDone) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.allTransitionsInDone = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("allTransitionsInDone", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn alle auf einen Bildschirm angewendeten „in“-Übergänge beendet sind. Das Ereignis allTransitionsInDone wird von dem mit meinScreen verknüpften Übergangsmanager übertragen. Beispiel Im folgenden Beispiel wird eine Schaltfläche (nextSlide_btn), die sich in der Folie mit dem Namen meineSlide befindet, sichtbar gemacht, nachdem alle auf meineSlide angewendeten „in“-Übergänge abgeschlossen sind. // Angehängt an meineSlide: on(allTransitionsInDone) { this.nextSlide_btn._visible = true; } Siehe auch Screen.allTransitionsOutDone Screen.allTransitionsOutDone Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(allTransitionsOutDone) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.allTransitionsOutDone = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("allTransitionsOutDone", listenerObject) Screen-Klasse (nur Flash Professional) 505 Beschreibung Ereignis; Broadcastübertragung, wenn alle auf einen Bildschirm angewendeten „out“-Übergänge beendet sind. Das Ereignis allTransitionsOutDone wird von dem mit meinScreen verknüpften Übergangsmanager übertragen. Siehe auch Screen.currentFocusedScreen Screen.currentFocusedScreen Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung mx.screens.Screen.currentFocusedScreen Beschreibung Statische Eigenschaft (schreibgeschützt); gibt einen Verweis auf das am weitesten verzweigte Bildschirmobjekt zurück, das den aktuellen globalen Fokus enthält. Der Fokus kann sich auf dem Bildschirm selbst oder in einem Movieclip, Textobjekt oder in einer Komponente innerhalb dieses Bildschirms befinden. Die Standardeinstellung ist null, wenn es keinen aktuellen Fokus gibt. Beispiel Im folgenden Beispiel wird der Name des aktuell ausgewählten Bildschirms im Ausgabefenster angezeigt. var currentFocus:mx.screens.Screen = mx.screens.Screen.currentFocusedScreen; trace("Der aktuelle Bildschirm ist: " + currentFocus._name); Screen.getChildScreen() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinScreen.getChildScreen(index) Parameter Eine Zahl, die den Index (Bezugsbasis null) des zurückzugebenden untergeordneten Bildschirms angibt. childIndex 506 Kapitel 4: Komponenten-Referenz Rückgaben Ein Bildschirmobjekt. Beschreibung Methode; gibt das untergeordnete Bildschirmobjekt von meinScreen zurück, dessen Index childIndex ist. Beispiel Im folgenden Beispiel sind im Ausgabefenster die Namen aller untergeordneten Bildschirme angezeigt, die zum Stammbildschirm mit der Bezeichnung präsentation gehören. for (var i:Number = 0; i < _root.präsentation.numChildScreens; i++) { var childScreen:mx.screens.Screen = _root.präsentation.getChildScreen(i); trace(childScreen._name); } Screen.indexInParent Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinScreen.indexInParent Beschreibung Eigenschaft (schreibgeschützt); sie enthält den Index (Bezugsbasis null) von meinScreen in der Liste der untergeordneten Bildschirme aus dessen übergeordnetem Bildschirm. Beispiel Im folgenden Beispiel ist die relative Position des Bildschirms meinScreen in der Liste der untergeordneten Bildschirme von dessen übergeordnetem Bildschirm dargestellt. var numChildren:Number = meinScreen._parent.numChildScreens; var meinIndex:Number = meinScreen.indexInParent; trace("Ich bin die untergeordnete Folie Nr. " + meinIndex + " von " + numChildren + " Bildschirmen."); Screen.mouseDown Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Screen-Klasse (nur Flash Professional) 507 Verwendung on(mouseDown) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseDown = function(eventObj){ // Hier Code eingeben } screenObj.addEventListener("mouseDown", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn die Maustaste über einem Objekt (z. B. eine Form oder ein Movieclip) gedrückt wurde, das direkt dem Bildschirm gehört. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel Im folgenden Code ist der Name des Bildschirms dargestellt, welcher das Mausereignis im Ausgabefenster erfasste. on(mouseDown) { trace("Mouse-down-Ereignis in: " + eventObj.target._name); } Screen.mouseDownSomewhere Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(mouseDown) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseDownSomewhere = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseDownSomewhere", listenerObject) 508 Kapitel 4: Komponenten-Referenz Beschreibung Ereignis; Broadcastübertragung, wenn die Maustaste gedrückt wird, jedoch nicht unbedingt über dem angegebenen Bildschirm. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Screen.mouseMove Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(mouseDown) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseMove = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseMove", listenerObject) Beschreibung Ereignis; Broadcast wenn sich die Maus bewegt, während sie sich über dem Bildschirm befindet. Dieses Ereignis wird nur dann gesendet, wenn sich die Maus über der Begrenzungsbox dieses Bildschirms befindet. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Hinweis: Der Einsatz dieses Ereignisses kann die Systemleistung beeinträchtigen und sollte sorgfältig abgewogen werden. Screen.mouseOut Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Screen-Klasse (nur Flash Professional) 509 Verwendung on(mouseOut) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseOut = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseOut", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn sich die Maus von innerhalb der Begrenzungsbox des Bildschirms zu einem Punkt außerhalb desselben bewegt. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Hinweis: Der Einsatz dieses Ereignisses kann die Systemleistung beeinträchtigen und sollte sorgfältig abgewogen werden. Screen.mouseOver Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(mouseDown) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseOver = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseOver", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn sich die Maus von außerhalb der Begrenzungsbox des Bildschirms zu einem Punkt innerhalb desselben bewegt. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Hinweis: Der Einsatz dieses Ereignisses kann die Systemleistung beeinträchtigen und sollte sorgfältig abgewogen werden. 510 Kapitel 4: Komponenten-Referenz Screen.mouseUp Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(mouseUp) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseUP = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseUp", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn die Maus über dem Bildschirm losgelassen wird. Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Screen.mouseUpSomewhere Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(mouseUpSomewhere) { // Hier Code eingeben } listenerObject = new Object(); listenerObject.mouseUpSomewhere = function(eventObject){ // Hier Code eingeben } screenObj.addEventListener("mouseUpSomewhere", listenerObject) Beschreibung Ereignis; Broadcastübertragung, wenn die Maustaste gedrückt wird, jedoch nicht unbedingt über dem angegebenen Bildschirm. Screen-Klasse (nur Flash Professional) 511 Wird das Ereignis ausgelöst, leitet es automatisch ein Ereignisobjekt (eventObj) an die Prozedur weiter. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Screen.numChildScreens Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinScreen.numChildScreens Beschreibung Eigenschaft (schreibgeschützt); gibt die Zahl der in meinScreen enthaltenen untergeordneten Bildschirme zurück. Beispiel Im folgenden Beispiel sind die Namen aller untergeordneten Bildschirme von meinScreen angezeigt. var howManyKids:Number = meinScreen.numChildScreens; for(i=0; i<howManyKids; i++) { var childScreen = meinScreen.getChildScreen(i); trace(childScreen._name); } Siehe auch Screen.getChildScreen() Screen.parentIsScreen Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinScreen.parentIsScreen Beschreibung Eigenschaft (schreibgeschützt): gibt einen Booleschen Wert (true oder false) zurück, der angibt, ob es sich bei dem übergeordneten Objekt des angegebenen Bildschirms ebenfalls um einen Bildschirm handelt (true) oder nicht (false). Bei „false“ befindet sich meinScreen am Fuß seiner Bildschirmhierarchie. 512 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird festgelegt, ob das übergeordnete Objekt des Bildschirms meinScreen ebenfalls ein Bildschirm ist. Wenn ja, wird davon ausgegangen, dass meinScreen die Ursprungs- oder Master-Folie in der Präsentation ist und somit keine gleichgeordneten Folien hat. Andernfalls, wenn meinScreen.parentIsScreen den Wert true hat, wird die Zahl der gleichgeordneten Folien von meinScreen im Ausgabefenster angezeigt. wenn (meinScreen.parentIsScreen) { trace("Ich habe "+meinScreen._parent.numChildScreens+" gleichgeordnete Bildschirme"); } else { trace("Ich bin der Ursprungsbildschirm und habe keine gleichgeordneten Bildschirme"); } Screen.rootScreen Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meinScreen.rootScreen Beschreibung Eigenschaft (schreibgeschützt); gibt den Bildschirm ganz oben in der Bildschirmhierarchie zurück, der meinScreen enthält. Beispiel Im folgenden Beispiel wird der Name des Bildschirms, der meinScreen enthält, angezeigt. var meinRoot:mx.screens.Screen = meinScreen.rootScreen angezeigt; ScrollPane-Komponente Mit der ScrollPane-Komponente werden Movieclips, JPEG-Dateien und SWF-Dateien in einem Bereich mit Bildlaufleiste angezeigt. Sie können Bildlaufleisten aktivieren, um Bilder in einem begrenzten Bereich anzuzeigen. Der angezeigte Inhalt kann von einem lokalen Speicherort oder aus dem Internet geladen werden. Mit Hilfe von ActionScript können Sie den Inhalt für das Bildlauffenster sowohl beim Authoring als auch zur Laufzeit festlegen. Wenn der Inhalt des Bildlauffensters gültige Tabstopps enthält, erhalten diese Markierungen den Fokus, sobald das Bildlauffenster den Fokus besitzt. Nach dem letzten Tabstopp im Inhalt wechselt der Fokus zur nächsten Komponente. Die vertikalen und horizontalen Bildlaufleisten im Bildlauffenster erhalten niemals den Fokus. ScrollPane-Komponente 513 Eine ScrollPane-Instanz erhält den Fokus, wenn ein Benutzer darauf klickt oder mit dem Tabulator dorthin springt. Wenn eine ScrollPane-Instanz den Fokus hat, können Sie diese mit Hilfe der folgenden Tasten steuern: Taste Beschreibung <Nach-unten> Der Inhalt wird vertikal um eine Zeile nach oben verschoben. <Ende> Der Inhalt wird an den unteren Rand des Bildlauffensters verschoben. <Links> Der Inhalt wird horizontal um eine Zeile nach rechts verschoben. <Pos 1> Der Inhalt wird an den oberen Rand des Bildlauffensters verschoben. Bild-ab-Taste Der Inhalt wird vertikal um eine Seite nach oben verschoben. Bild-auf-Taste Der Inhalt wird vertikal um eine Seite nach unten verschoben. <Rechts> Der Inhalt wird horizontal um eine Zeile nach links verschoben. <Nach-oben> Der Inhalt wird vertikal um eine Zeile nach unten verschoben. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. In einer Live-Vorschau jeder einzelnen ScrollPane-Instanz werden die Änderungen an Parametern im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring dargestellt. ScrollPane-Komponente verwenden Mit einem Bildlauffenster kann Inhalt angezeigt werden, der für den Bereich, in den er geladen wird, zu groß ist. Wenn beispielsweise in einer Anwendung nur ein kleiner Bereich für ein großes Bild zur Verfügung steht, können Sie es in ein Bildlauffenster laden. Sie richten Bildlauffenster ein, damit Benutzer den Inhalt innerhalb des Fensters verschieben können, indem Sie für den Parameter scrollDrag den Wert true angeben. In diesem Fall wird der Mauszeiger über dem Inhalt als Hand dargestellt. Anders als bei den meisten anderen Komponenten, wird die Broadcastübertragung der Ereignisse, die durch das Drücken der Maustaste ausgelöst wird, so lange fortgesetzt, bis die Maustaste wieder losgelassen wird. Wenn der Inhalt eines Bildlauffensters gültige Tabstopps enthält, muss für den Parameter scrollDrag der Wert false festgelegt werden, da ansonsten mit jeder Mausbetätigung der Inhalt verschoben wird. ScrollPane-Parameter Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede ScrollPane-Komponenteninstanz festlegen: contentPath gibt an, welcher Inhalt in das Bildlauffenster geladen werden soll. Für diesen Wert kann der relative Pfad einer lokalen SWF- oder JPEG-Datei oder der relative bzw. absolute Pfad einer Datei im Internet angegeben werden. Es kann jedoch auch der Verknüpfungsbezeichner eines Movieclip-Symbols in der Bibliothek mit der Einstellung Export für ActionScript angegeben werden. hLineScrollSize gibt die Anzahl der Einheiten an, um die eine horizontale Bildlaufleiste bei jedem Klick auf eine der Pfeilschaltflächen verschoben wird. Der Standardwert ist 5. 514 Kapitel 4: Komponenten-Referenz gibt die Anzahl der Einheiten an, um die eine horizontale Bildlaufleiste bei jedem Klick auf die Spur der Bildlaufleiste verschoben wird. Der Standardwert ist 20. hPageScrollSize hScrollPolicy zeigt die horizontalen Bildlaufleisten an. Folgende Werte sind gültig: on, off und auto. Der Standardwert lautet auto. ist ein Boolescher Wert, der angibt, ob ein Benutzer den Inhalt innerhalb des Bildlauffensters verschieben kann (true) oder nicht (false). Der Standardwert lautet false. scrollDrag gibt die Anzahl der Einheiten an, um die eine vertikale Bildlaufleiste bei jedem Klick auf eine der Pfeilschaltflächen verschoben wird. Der Standardwert ist 5. vLineScrollSize gibt die Anzahl der Einheiten an, um die eine vertikale Bildlaufleiste bei jedem Klick auf die Spur der Bildlaufleiste verschoben wird. Der Standardwert ist 20. vPageScrollSize vScrollPolicy zeigt die vertikalen Bildlaufleisten an. Folgende Werte sind gültig: on, off und auto. Der Standardwert lautet auto. Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die ScrollPane-Komponenten mit den Eigenschaften, Methoden und Ereignissen steuern. Weitere Informationen finden Sie unter ScrollPane-Klasse. Anwendungen mit der ScrollPane-Komponente erstellen In der folgenden Anleitung wird erläutert, wie eine ScrollPane-Komponente einer Anwendung beim Authoring hinzugefügt wird. In diesem Beispiel wird eine SWF-Datei, die ein Logo enthält, in das Bildlauffenster geladen. So erstellen Sie eine Anwendung mit einer ScrollPane-Komponente: 1 Ziehen Sie eine ScrollPane-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor den Instanznamen meinScrollPane an. 3 Geben Sie im Eigenschafteninspektor für den Parameter contentPath den Wert logo.swf an. 4 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: scrollListener = new Object(); scrollListener.scroll = function (evt){ txtPosition.text = meinScrollPane.vPosition; } meinScrollPane.addEventListener("scroll", scrollListener); completeListener = new Object; completeListener.complete = function() { trace("logo.swf wurde vollständig geladen."); } meinScrollPane.addEventListener("complete", completeListener); Der erste Codeblock ist eine scroll-Ereignisprozedur für die Instanz meinScrollPane, die den Wert der Eigenschaft vPosition in einer Textfeldinstanz mit dem Namen txtPosition anzeigt, die bereits auf der Bühne platziert wurde. Mit dem zweiten Codeblock wird eine Ereignisprozedur für das complete-Ereignis erstellt, das eine Meldung an das Ausgabebedienfeld sendet. ScrollPane-Komponente 515 ScrollPane-Komponente anpassen Eine ScrollPane-Komponente kann horizontal und vertikal sowohl während des Authorings als auch zur Laufzeit transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit verwenden Sie die Methode setSize() (siehe UIObject.setSize()) oder beliebige anwendbare Eigenschaften und Methoden der ScrollPane-Klasse. Weitere Informationen hierzu finden Sie unter ScrollPane-Klasse. Wenn das Bildlauffenster zu klein ist, werden die Inhalte möglicherweise nicht korrekt angezeigt. Über ScrollPane wird der Registrierungspunkt der entsprechenden Inhalte links oben im Fenster gesetzt. Bei deaktivierter horizontaler Bildlaufleiste wird die vertikale Bildlaufleiste von oben nach unten an der rechten Seite des Bildlauffensters angezeigt. Bei deaktivierter vertikaler Bildlaufleiste wird die horizontale Bildlaufleiste von links nach rechts am unteren Rand des Bildlauffensters angezeigt. Es lassen sich auch beide Bildlaufleisten deaktivieren. Wenn die Größe des Bildlauffensters geändert wird, behalten die Schaltflächen ihre ursprüngliche Größe, während die Spur der Bildlaufleiste und das Bildlauffeld entsprechend vergrößert oder verkleinert und die Größe der Kollisionsbereiche entsprechend angepasst werden. Stile mit der ScrollPane-Komponente verwenden Die ScrollPane-Komponente unterstützt im Gegensatz zu den von ihr verwendeten Bildlaufleisten keine Stile. Skins mit der ScrollPane-Komponente verwenden Die ScrollPane-Komponente selbst verfügt über keine eigenen Skins, doch die darin verwendeten Bildlaufleisten haben Skins. ScrollPane-Klasse Vererbung UIObject > UIComponent > View > ScrollView > ScrollPane ActionScript-Klassenname mx.containers.ScrollPane Mit den Eigenschaften der ScrollPane-Klasse können Sie den Inhalt festlegen, den Ladefortschritt überwachen und die Größe der Bildlaufverschiebung zur Laufzeit anpassen. Die mit ActionScript festgelegte Eigenschaft der ScrollPane-Klasse überschreibt den gleichnamigen Parameter, der in den Bedienfeldern des Eigenschafteninspektors bzw. des Komponenten-Inspektors festgelegt wurde. Sie können ein Bildlauffenster einrichten, damit Benutzer den Inhalt innerhalb des Fensters verschieben können, indem Sie für die Eigenschaft scrollDrag den Wert true angeben. In diesem Fall wird der Mauszeiger über dem Inhalt als Hand dargestellt. Anders als bei den meisten anderen Komponenten, wird die Broadcastübertragung der Ereignisse, die durch das Drücken der Maustaste ausgelöst wird, so lange fortgesetzt, bis die Maustaste wieder losgelassen wird. Wenn der Inhalt eines Bildlauffensters gültige Tabstopps enthält, muss für den Parameter scrollDrag der Wert false festgelegt werden, da ansonsten mit jeder Mausbetätigung der Inhalt verschoben wird. 516 Kapitel 4: Komponenten-Referenz Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.containers.ScrollPane.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineScrollPaneInstance.version); Übersicht: Methoden der ScrollPane-Klasse Methode Beschreibung ScrollPane.getBytesLoaded() Gibt die Größe des geladenen Inhalts in Byte zurück. ScrollPane.getBytesTotal() Gibt die Gesamtgröße des zu ladenden Inhalts in Byte zurück. ScrollPane.refreshPane() Lädt erneut den Inhalt des Bildlauffensters. Erbt alle Methoden von UIObject und UIComponent. Übersicht: Eigenschaften der ScrollPane-Klasse Methode Beschreibung ScrollPane.content Ein Verweis auf den Inhalt, der in das Bildlauffenster geladen wurde. ScrollPane.contentPath Die absolute oder relative URL einer SWF- oder JPEG-Datei, die in das Bildlauffenster geladen werden soll. ScrollPane.hLineScrollSize Die Einheit, um die der Inhalt horizontal verschoben werden soll, wenn auf eine der Pfeilschaltflächen geklickt wird. ScrollPane.hPageScrollSize Die Einheit, um die der Inhalt horizontal verschoben werden soll, wenn auf die Spur der Bildlaufleiste geklickt wird. ScrollPane.hPosition Die horizontale Pixelposition des Bildlauffensters. ScrollPane.hScrollPolicy Der Status der horizontalen Bildlaufleiste. Sie kann immer aktiviert (on), immer deaktiviert (off) oder nur bei Bedarf aktiviert (auto) sein. Der Standardwert lautet auto. ScrollPane.scrollDrag Gibt an, ob der Inhalt verschoben wird (true), wenn ein Benutzer in das Bildlauffenster klickt und zieht, oder nicht (false). Der Standardwert lautet false. ScrollPane.vLineScrollSize Die Einheit, um die der Inhalt vertikal verschoben werden soll, wenn auf eine der Pfeilschaltflächen geklickt wird. ScrollPane.vPageScrollSize Die Einheit, um die der Inhalt vertikal verschoben werden soll, wenn auf die Spur der Bildlaufleiste geklickt wird. ScrollPane.vPosition Die vertikale Pixelposition des Bildlauffensters. ScrollPane.vScrollPolicy Der Status der vertikalen Bildlaufleiste. Sie kann immer aktiviert (on), immer deaktiviert (off) oder nur bei Bedarf aktiviert (auto) sein. Der Standardwert lautet auto. ScrollPane-Komponente 517 Erbt alle Eigenschaften von UIObject und UIComponent. Übersicht: Ereignisse der ScrollPane-Klasse Methode Beschreibung ScrollPane.complete Broadcastübertragung ausführen, wenn der Inhalt des Bildlauffensters geladen wird. ScrollPane.progress Broadcastübertragung ausführen, während der Inhalt der Bildlaufleiste geladen wird. ScrollPane.scroll Broadcastübertragung ausführen, wenn auf die Bildlaufleiste geklickt wird. Erbt alle Ereignisse von UIObject und UIComponent. ScrollPane.complete Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(complete){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.complete = function(eventObject){ ... } scrollPaneInstance.addEventListener("complete", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, wenn der Inhalt fertig geladen ist. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer ScrollPaneKomponenteninstanz zugeordnet werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Mit dem folgenden Code, der der ScrollPane-Komponenteninstanz meineScrollPaneComponent zugeordnet ist, wird beispielsweise „_level0.meineScrollPaneComponent“ an das Ausgabebedienfeld gesendet: on(complete){ trace(this); } 518 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (scrollPaneInstance) setzt ein Ereignis (in diesem Fall complete) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel In folgendem Beispiel wird ein Listener-Objekt mit der complete-Ereignisprozedur für die scrollPane-Instanz erstellt: form.complete = function(eventObj){ // Code zur Verarbeitung des Ereignisses eingeben } scrollPane.addEventListener("complete",form); ScrollPane.content Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.content Beschreibung Eigenschaft (schreibgeschützt); gibt einen Verweis auf den Inhalt des Bildlauffensters an. Der Wert ist undefined, bis der Ladevorgang beginnt. Beispiel In diesem Beispiel wird für die Variable mcLoaded der Wert der Eigenschaft content festgelegt: var mcLoaded = scrollPane.content; Siehe auch ScrollPane.contentPath ScrollPane-Komponente 519 ScrollPane.contentPath Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.contentPath Beschreibung Eigenschaft; ein String, mit dem die absolute oder relative URL einer SWF- oder JPEG-Datei angegeben wird, die in das Bildlauffenster geladen werden soll. Ein relativer Pfad muss relativ zu der SWF-Datei angegeben werden, in die der Inhalt geladen wird. Wenn Sie zum Laden von Inhalt eine relative URL verwenden, muss der geladene Inhalt sich an einem Speicherort relativ zu der SWF-Datei befinden, die das Bildlauffenster enthält. Eine Anwendung mit einer ScrollPane-Komponente, die sich beispielsweise im Verzeichnis / scrollpane/nav/example.swf befindet, könnte Inhalt aus dem Verzeichnis /scrollpane/content/ flash/logo.swf mit folgender contentPath-Eigenschaft laden: "../content/flash/logo.swf" Beispiel In folgendem Beispiel wird im Bildlauffenster der Inhalt eines Bildes aus dem Internet angezeigt: scrollPane.contentPath ="http://imagecache2.allposters.com/images/43/ 033_302.jpg"; In folgendem Beispiel wird im Bildlauffenster der Inhalt eines Symbols aus der Bibliothek angezeigt: scrollPane.contentPath ="movieClip_Name"; In folgendem Beispiel wird im Bildlauffenster der Inhalt der lokalen Datei logo.swf angezeigt: scrollPane.contentPath ="logo.swf"; Siehe auch ScrollPane.content ScrollPane.getBytesLoaded() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.getBytesLoaded() Parameter Keine. 520 Kapitel 4: Komponenten-Referenz Rückgaben Die Größe der im Bildlauffenster geladenen Datei in Byte. Beschreibung Methode; gibt die Größe der in der ScrollPane-Instanz geladenen Datei in Byte zurück. Sie können diese Methode beim Laden von Inhalt regelmäßig aufrufen, um den Fortschritt des Ladevorgangs zu überprüfen. Beispiel In diesem Beispiel wird eine Instanz der ScrollPane-Klasse mit dem Namen scrollPane erstellt. Außerdem wird ein Listener-Objekt mit dem Namen loadListener und einer progressEreignisprozedur definiert, mit der die Methode getBytesLoaded() zur Bestimmung des Fortschritts beim Ladevorgang aufgerufen wird: createClassObject(mx.containers.ScrollPane, "scrollPane", 0); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, mit der das change-Ereignis generiert // wurde var bytesLoaded = scrollPane.getBytesLoaded(); var bytesTotal = scrollPane.getBytesTotal(); var percentComplete = Math.floor(bytesLoaded/bytesTotal); if (percentComplete < 5 ) // Ladevorgang hat gerade erst begonnen { trace("Ladevorgang von Inhalt aus dem Internet wird gestartet"); } else if(percentComplete = 50) // Ladevorgang zu 50 % abgeschlossen { trace("50 % des Inhalts wurden heruntergeladen"); } } scrollPane.addEventListener("progress", loadListener); scrollPane.contentPath = "http://www.geocities.com/hcls_matrix/Images/ homeview5.jpg"; ScrollPane.getBytesTotal() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.getBytesTotal() Parameter Keine. Rückgaben Eine Zahl. ScrollPane-Komponente 521 Beschreibung Methode; gibt die Gesamtgröße der Datei, die in die ScrollPane-Instanz geladen werden soll, in Byte zurück. Siehe auch ScrollPane.getBytesLoaded() ScrollPane.hLineScrollSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.hLineScrollSize Beschreibung Eigenschaft; gibt die Anzahl der Pixel zurück, um die der Inhalt verschoben wird, wenn auf die linke oder rechte Pfeilschaltfläche der horizontalen Bildlaufleiste geklickt wird. Der Standardwert ist 5. Beispiel In diesem Beispiel wird die horizontale Bildlaufeinheit auf 10 gesetzt: scrollPane.hLineScrollSize = 10; ScrollPane.hPageScrollSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.hPageScrollSize Beschreibung Eigenschaft; gibt die Anzahl der Pixel zurück, um die der Inhalt verschoben wird, wenn auf die Spur der horizontalen Bildlaufleiste geklickt wird. Der Standardwert ist 20. Beispiel In diesem Beispiel wird die horizontale Seitenbildlaufeinheit auf 30 gesetzt: scrollPane.hPageScrollSize = 30; 522 Kapitel 4: Komponenten-Referenz ScrollPane.hPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.hPosition Beschreibung Eigenschaft; gibt eine Position auf der horizontalen Bildlaufleiste in Pixel an. Die Position 0 befindet sich auf der linken Seite der Leiste. Beispiel In diesem Beispiel wird die Position auf der Bildlaufleiste auf 20 festgelegt: scrollPane.hPosition = 20; ScrollPane.hScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.hScrollPolicy Beschreibung Eigenschaft; gibt an, ob die horizontale Bildlaufleiste immer aktiviert ist (on), immer deaktiviert ist (off ) oder bei entsprechender Größe des Bildes automatisch aktiviert wird (auto). Der Standardwert lautet auto. Beispiel Mit dem folgenden Code werden die Bildlaufleisten immer aktiviert: scrollPane.hScrollPolicy = "on"; ScrollPane.progress Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. ScrollPane-Komponente 523 Verwendung Verwendung 1: on(progress){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.progress = function(eventObject){ ... } scrollPaneInstance.addEventListener("progress", listenerObject) Beschreibung Ereignis; sendet einen Broadcast an alle registrierten Listener, während der Inhalt geladen wird. Das Ereignis progress wird nicht immer gesendet. Das Ereignis complete kann gesendet werden, ohne dass Ereignisse des Typs progress gesendet werden. Das kann insbesondere der Fall sein, wenn es sich beim geladenen Inhalt um eine lokale Datei handelt. Dieses Ereignis wird ausgelöst, wenn der Ladevorgang des Inhalts durch das Definieren des Werts der Eigenschaft contentPath gestartet wird. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer ScrollPaneKomponenteninstanz zugeordnet werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Mit dem folgenden Code, der der ScrollPane-Komponenteninstanz meineSPComponent zugeordnet ist, wird beispielsweise „_level0.meineSPComponent“ an das Ausgabebedienfeld gesendet: on(progress){ trace(this); } Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (scrollPaneInstance) setzt ein Ereignis (in diesem Fall progress) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) 524 Kapitel 4: Komponenten-Referenz Beispiel Mit dem folgenden Code wird eine ScrollPane-Instanz mit dem Namen scrollPane sowie ein Listener-Objekt mit einer Ereignisprozedur für das progress-Ereignis erstellt, das eine Meldung an das Ausgabebedienfeld sendet, in der die Größe des bereits geladenen Inhalts in Byte angegeben ist: createClassObject(mx.containers.ScrollPane, "scrollPane", 0); loadListener = new Object(); loadListener.progress = function(eventObj){ // eventObj.target ist die Komponente, mit der das Fortschrittereignis // generiert wurde, // in diesem Fall also das Bildlauffenster trace("Von der Datei logo.swf wurden bereits " + scrollPane.getBytesLoaded() + " Bytes geladen."); // Ladevorgang verfolgen } scrollPane.addEventListener("complete", loadListener); scrollPane.contentPath = "logo.swf"; ScrollPane.refreshPane() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.refreshPane() Parameter Keine. Rückgaben Keine. Beschreibung Methode; aktualisiert das Bildlauffenster, nachdem der Inhalt geladen wurde. Mit dieser Methode wird Inhalt erneut geladen. Sie können diese Methode beispielsweise verwenden, wenn ein Formular in ein Bildlauffenster geladen und anschließend eine Eingabeeigenschaft (z. B. in einem Textfeld) mit ActionScript geändert wurde. Rufen Sie refreshPane() auf, um dasselbe Formular mit den neuen Werten für die Eingabeeigenschaften erneut zu laden. Beispiel Im folgenden Beispiel wird die Bildlauffensterinstanz mit dem Namen sp aktualisiert: sp.refreshPane(); ScrollPane-Komponente 525 ScrollPane.scroll Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(scroll){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.scroll = function(eventObject){ ... } scrollPaneInstance.addEventListener("scroll", listenerObject) Ereignisobjekt Zusätzlich zu den standardmäßigen Eigenschaften von Ereignisobjekten ist für das scrollEreignis auch eine type-Eigenschaft mit dem Wert scroll definiert. Außerdem gibt es die direction-Eigenschaft mit den möglichen Werten vertical und horizontal. Beschreibung Ereignis; Broadcastübertragung an alle registrierten Listener, wenn ein Benutzer auf die Bildlaufschaltflächen, das Bildlauffeld oder die Spur der Bildlaufleiste klickt. Anders als bei anderen Ereignissen, wird die Broadcastübertragung des scroll-Ereignisses, die durch das Klicken eines Benutzers auf die Bildlaufleiste ausgelöst wird, so lange fortgesetzt, bis die Maustaste wieder losgelassen wird. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer ScrollPaneKomponenteninstanz zugeordnet werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Mit dem folgenden Code, der der Instanz sp zugeordnet ist, wird beispielsweise „_level0.sp“ an das Ausgabebedienfeld gesendet: on(scroll){ trace(this); } 526 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (scrollPaneInstance) setzt ein Ereignis (in diesem Fall scroll) ab, und das Ereignis reagiert auf eine Funktion des von Ihnen erstellten Listener-Objekts (listenerObject). Eine solche Funktion wird auch als Prozedur bezeichnet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel In diesem Beispiel wird ein Listener-Objekt form mit einer scroll-Rückruffunktion erstellt, die für die Instanz spInstance registriert ist: Sie müssen spInstance wie im folgenden Beispiel mit Inhalten füllen: spInstance.contentPath = "mouse3.jpg"; form = new Object(); form.scroll = function(eventObj){ trace("Bildlauffenster betätigt"); } spInstance.addEventListener("scroll", form); Siehe auch UIEventDispatcher.addEventListener() ScrollPane.scrollDrag Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.scrollDrag Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob der Inhalt verschoben wird (true), wenn ein Benutzer in das Bildlauffenster klickt und zieht, oder nicht (false). Der Standardwert lautet false. Beispiel In diesem Beispiel wird der Bildlauf durch Mausbetätigung innerhalb des Bildlauffensters aktiviert: scrollPane.scrollDrag = true; ScrollPane-Komponente 527 ScrollPane.vLineScrollSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.vLineScrollSize Beschreibung Eigenschaft; gibt die Anzahl der Pixel an, um die der Anzeigebereich verschoben wird, wenn auf die Nach-oben- oder Nach-unten-Schaltfläche einer vertikalen Bildlaufleiste geklickt wird. Der Standardwert ist 5. Beispiel Mit diesem Code wird die Einheit, um die der Anzeigebereich verschoben wird, wenn in einer vertikalen Bildlaufleiste auf eine der Pfeilschaltflächen geklickt wird, auf 10 gesetzt: scrollPane.vLineScrollSize = 10; ScrollPane.vPageScrollSize Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. scrollPaneInstance.vPageScrollSize Beschreibung Eigenschaft; gibt die Anzahl der Pixel an, um die der Anzeigebereich verschoben wird, wenn auf die Spur einer vertikalen Bildlaufleiste geklickt wird. Der Standardwert ist 20. Beispiel Mit diesem Code wird die Einheit, um die der Anzeigebereich verschoben wird, wenn in einer vertikalen Bildlaufleiste auf die Spur geklickt wird, auf 30 gesetzt: scrollPane.vPageScrollSize = 30; 528 Kapitel 4: Komponenten-Referenz ScrollPane.vPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.vPosition Beschreibung Eigenschaft; gibt eine Position auf der vertikalen Bildlaufleiste in Pixel an. Der Standardwert ist 0. ScrollPane.vScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung scrollPaneInstance.vScrollPolicy Beschreibung Eigenschaft; gibt an, ob die vertikale Bildlaufleiste immer aktiviert ist (on), immer deaktiviert ist (off ) oder bei entsprechender Größe des Bildes automatisch aktiviert wird (auto). Der Standardwert lautet auto. Beispiel Mit dem folgenden Code werden vertikale Bildlaufleisten immer aktiviert: scrollPane.vScrollPolicy = "on"; Slide-Klasse (nur Flash Professional) Vererbung UIObject > UIComponent > View > Loader > Screen > Slide ActionScript-Klassenname mx.screens.Slide Die Slide-Klasse entspricht einem Knoten in einer hierarchischen Folienpräsentation. In Flash MX Professional 2004 können Sie Folienpräsentationen mit dem Übersichtsfenster erstellen. Eine Übersicht zum Arbeiten mit Bildschirmen finden Sie unter „Mit Bildschirmen arbeiten (nur Flash Professional)“ in der Hilfe „Flash verwenden“. Die Slide-Klasse ist eine Erweiterung der Screen-Klasse (siehe „Screen-Klasse (nur Flash Professional)“ auf Seite 500) und verfügt über integrierte Funktionen zur Navigation zwischen Folien und zur Festlegung der Folienreihenfolge. Sie bietet außerdem die Möglichkeit, mit Hilfe von Verhalten problemlos Folienübergänge zuzuweisen. Folien bewahren ihren „statischen“ Charakter. Der Benutzer kann in einer Präsentation also die folgende oder die vorherige Folie aufrufen. Es ist möglich, beim Aufruf der jeweils nächsten Folie die vorhergehende auszublenden. Slide-Klasse (nur Flash Professional) 529 Beachten Sie, dass Sie nur zu solchen Folien navigieren (oder dort „anhalten“) können, denen keine Unterfolien zugeordnet sind. Folien dieser Art werden als Endfolien bezeichnet, da sie in der hierarchischen Struktur einer Folienpräsentation das Ende einer Verzweigung bilden. Die folgende Abbildung zeigt den Inhalt des Übersichtsfensters für eine Beispielpräsentation: Wenn diese Präsentation gestartet wird, hält Sie standardmäßig bei der Folie „Finance“ an, da es sich hierbei um die erste Folie ohne Unterfolien handelt. Beachten Sie auch, dass Unterfolien das Erscheinungsbild (grafische Elemente und andere Inhalte) der übergeordneten Folien „erben“. So würde der Benutzer im obigen Beispiel zusätzlich zum Inhalt der Folie „Finance“ auch die Inhalte der Folien „Intro“ und „präsentation“ sehen. Hinweis: Die Slide-Klasse erbt die Methoden und Eigenschaften von der Loader-Klasse (siehe „Loader-Klasse“ auf Seite 351), sodass sich externe SWFs (oder JPEGs) problemlos in eine beliebige Folie laden lassen. Hierdurch ergibt sich die Möglichkeit zur Modularisierung von Folienpräsentationen und zur Verkürzung der Downloadzeit. Weitere Informationen finden Sie unter „Externe Inhalte in Bildschirme laden (nur Flash Professional)“ auf Seite 501. Slide-Klasse verwenden (nur Flash Professional) Mit den Methoden und Eigenschaften der Slide-Klasse steuern Sie Folienpräsentationen, die Sie mit dem Übersichtsfenster erstellen. (Unter Fenster > Bildschirme erhalten Sie Informationen zu einer Folienpräsentation.) Sie können damit beispielsweise die Anzahl der zu einer Folie gehörenden Unterfolien festlegen oder in einer Präsentation von einer Folie zur nächsten navigieren (z. B. durch die Erstellung von Schaltflächen wie Nächste Folie oder Vorherige Folie. Zur Steuerung von Folienpräsentationen können Sie auch eins der im Bedienfeld Verhalten verfügbaren Verhalten heranziehen (Fenster > Entwicklungs-Bedienfelder > Verhalten). Weitere Informationen zum Einsatz von Verhalten im Zusammenhang mit Folien finden Sie unter „Steuerungen für Bildschirme mit Hilfe von Verhalten hinzufügen (nur Flash Professional)“ in der Hilfe „Flash verwenden“. 530 Kapitel 4: Komponenten-Referenz Folienparameter Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede Folie festlegen: autoKeyNav bestimmt, ob und wie eine Folie auf die Standardnavigation per Tastatur reagieren soll. Weitere Informationen finden Sie unter Slide.autoKeyNav. autoload gibt an, ob der vom Parameter contentPath bestimmte Inhalt automatisch geladen werden soll (true), oder ob mit dem Laden gewartet werden soll, bis die Methode Loader.load() aufgerufen wird (false). Der Standardwert lautet true. contentPath gibt den Inhalt der Folie an. Dabei kann es sich um den Verknüpfungsbezeichner eines Movieclips oder die absolute bzw. relative URL für eine in die Folie zu ladende SWF- oder JPG-Datei handeln. Standardgemäß wird der geladene Inhalt so abgeschnitten, dass er in die Folie passt. overlayChildren legt fest, ob die einer Folie zugehörigen Unterfolien bei der Navigation von einer Unterfolie zur nächsten weiterhin sichtbar bleiben sollen (true) oder nicht (false). playHidden legt fest, ob eine Folie weiterhin abgespielt werden soll, wenn sie ausgeblendet ist (true), oder ob sie angehalten werden soll (false). Erstellen einer Folienpräsentation mit Hilfe der Slide-Klasse Die Methoden und Eigenschaften der Slide-Klasse dienen der Steuerung einer Folienpräsentation, die Sie in der Flash-Authoring-Umgebung im Übersichtsfenster (Fenster > Bildschirme) erstellt haben. Beachten Sie, dass im Bedienfeld Verhalten (Fenster > Entwicklungs-Bedienfelder > Verhalten) mehrere Verhalten zur Erstellung der Foliennavigation zur Verfügung stehen. In diesem Beispiel schreiben Sie Ihr eigenes ActionScript zur Erstellung der Schaltflächen Nächste Folie und Vorherige Folie. So erstellen Sie eine Folienpräsentation mit Navigationselementen: 1 Wählen Sie in Flash Datei > Neu. 2 Klicken Sie auf die Registerkarte Allgemein, und wählen Sie unter Typ die Option Flash- Folienpräsentation. 3 Klicken Sie im Übersichtsfenster zweimal auf die Schaltfläche Bildschirm einfügen (+), um unterhalb der Folie „präsentation“ zwei neue Folien zu erstellen. Im Übersichtsfenster sollte nun Folgendes zu sehen sein: 4 Wählen Sie nun im Übersichtsfenster „folie1“, und fügen Sie mit Hilfe des Textwerkzeugs ein Textfeld mit dem Inhalt „Dies ist Folie 1“ hinzu. 5 Wiederholen Sie diesen Schritt für „folie2“ und „folie3“, und erstellen Sie dabei auch Textfelder mit dem Inhalt „Dies ist Folie 2“ bzw. „Dies ist Folie 3“. 6 Markieren Sie die Folie „präsentation“, und öffnen Sie das Bedienfeld Komponenten (Fenster > Entwicklungs-Bedienfelder > Komponenten). Slide-Klasse (nur Flash Professional) 531 7 Ziehen Sie eine Button-Komponente aus dem Bedienfeld Komponenten in den unteren Bühnenbereich. 8 Geben Sie im Eigenschafteninspektor (Fenster > Eigenschaften) als label-Eigenschaft für die Button-Komponente „Nächste Folie“ ein. 9 Wenn das Bedienfeld Aktionen nicht angezeigt wird, öffnen Sie es, indem Sie Fenster > Entwicklungs-Bedienfelder > Aktionen wählen. 10 Geben Sie im Bedienfeld Aktionen den folgenden Code ein: on(click){ _parent.currentSlide.gotoNextSlide(); } 11 Testen Sie die SWF-Datei (Steuerung > Film testen), und klicken Sie auf die Schaltfläche Nächste Folie, um die nächste Folie aufzurufen. Übersicht: Methoden der Slide-Klasse Eigenschaft Beschreibung Slide.getChildSlide() Gibt an einem beliebigen Index die zu der aktuellen Folie gehörige Unterfolie zurück. Slide.gotoFirstSlide() Navigiert zum ersten Verzweigungsknoten in der Folienhierarchie, die der aktuellen Folie untergeordnet ist. Slide.gotoLastSlide() Navigiert zum letzten Verzweigungsknoten in der Folienhierarchie, die der aktuellen Folie untergeordnet ist. Slide.gotoNextSlide() Navigiert zur nächsten Folie. Slide.gotoPreviousSlide() Navigiert zur nächsten Folie. Slide.gotoSlide() Navigiert zu einer beliebigen Folie. Erbt alle Methoden von UIObject, UIComponent, View, Loader-Komponente und ScreenKlasse (nur Flash Professional). Übersicht: Eigenschaften der Slide-Klasse Eigenschaft Beschreibung Slide.autoKeyNav Legt fest, ob für eine Folie die Tastatur zur Standardnavigation zur nächsten oder zur vorherigen Folie verwendet wird. Slide.currentSlide Gibt die unmittelbar untergeordnete Folie derjenigen Folie zurück, die die zurzeit aktive Folie enthält. Slide.currentSlide Gibt die zurzeit aktive Folie zurück. Slide.currentFocusedSlide Gibt die Folie zurück, die sich in einer Verzweigung am weitesten vom Stamm entfernt befindet und aktuell den globalen Fokus hat. Slide.defaultKeydownHandler Rückrufprozedur, die die standardmäßige Tastaturnavigation der Folie (<Nach-links-Taste> und <Nach-rechts-Taste>) überschreibt. 532 Slide.firstSlide Gibt die erste Unterfolie der aktuellen Folie zurück, der keine weiteren Folien untergeordnet sind. Slide.getChildSlide() Gibt die Unterfolie an einem festgelegten Index zurück. Kapitel 4: Komponenten-Referenz Eigenschaft Beschreibung Slide.indexInParentSlide Gibt den Index (Bezugsbasis 0) der Folie in der zur übergeordneten Folie gehörenden Liste der Unterfolien zurück. Slide.lastSlide Gibt die letzte Unterfolie der aktuellen Folie zurück, der keine weiteren Folien untergeordnet sind. Slide.nextSlide Gibt die nächste Folie mit Verzweigungsknoten zurück. Slide.numChildSlides Gibt die Anzahl der Unterfolien zurück, die der aktuellen Folie untergeordnet sind. Slide.overlayChildren Bestimmt, ob die Unterfolien der aktuellen Folie sichtbar bleiben, wenn die Steuerung von einer Unterfolie zur nächsten übergeht. Slide.parentIsSlide Gibt einen Booleschen Wert zurück, der angibt, ob das übergeordnete Objekt der Folie ebenfalls eine Folie ist (true) oder nicht (false). Slide.playHidden Bestimmt, ob die Folie weiterhin abgespielt wird, wenn sie ausgeblendet ist. Slide.previousSlide Gibt die vorherige Folie mit Verzweigungsknoten zurück. Slide.revealChild Gibt den Stamm des Hierarchiebaums zurück, zu der die Folie gehört. Erbt alle Methoden von UIObject, UIComponent, View, Loader-Komponente und ScreenKlasse (nur Flash Professional). Übersicht: Ereignisse der Slide-Klasse Ereignis Beschreibung Slide.hideChild Broadcastübertragung, wenn alle Unterfolien einer Folie vom sichtbaren in den nicht sichtbaren Zustand wechseln. Slide.revealChild Broadcastübertragung, wenn alle Unterfolien einer Folie vom nicht sichtbaren in den sichtbaren Zustand wechseln. Erbt alle Ereignisse von UIObject, UIComponent, View, Loader-Komponente und Screen-Klasse (nur Flash Professional). Slide.autoKeyNav Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.autoKeyNav Slide-Klasse (nur Flash Professional) 533 Beschreibung Eigenschaft; legt fest, ob für eine Folie die Tastatur zur Standardnavigation zwischen den einzelnen Folien verwendet wird, wenn meineSlide den Fokus hat. Diese Eigenschaft kann einen der folgenden Stringwerte annehmen: "true", "false" oder "inherit". Sie können dieses standardmäßige Tastaturverhalten auch mit der Eigenschaft Slide.defaultKeydownHandler überschreiben. Weiterhin können Sie diese Eigenschaft mit Hilfe des Eigenschafteninspektors einstellen. Bei der Einstellung "true" wechseln Sie zur nächsten Folie, wenn Sie die <Nacht-rechts-Taste> (Key.RIGHT) oder die <Leertaste> (Key.SPACE) drücken und meineSlide den Fokus hat. Mit der <Nach-links-Taste> (Key-Left) navigieren Sie zur vorherigen Folie. Bei der Einstellung "false" ist eine Navigation per Tastatur nicht möglich, wenn meineSlide den Fokus hat. Bei der Einstellung "inherit" überprüft meineSlide die Eigenschaft autoKeyNav der übergeordneten Folie. Hat die übergeordnete Folie von meineSlide ebenfalls die Einstellung "inherit", wird die Folie auf der nächsthöheren Ebene überprüft und so weiter, bis eine übergeordnete Folie gefunden wird, deren Eigenschaft autoKeyNav auf "true" oder "false" eingestellt ist. Wenn meineSlide keine übergeordnete Folie hat (wenn also (meineSlide.parentIsSlide == false) auf true eingestellt ist), verhält sie sich so, als wenn autoKeyNav auf true eingestellt wäre. Beispiel In diesem Beispiel wird die automatische Tastaturnavigation für die Folie loginSlide deaktiviert. _root.präsentation.loginSlide.autoKeyNav = "false"; Siehe auch Slide.defaultKeydownHandler Slide.currentSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.currentSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die zurzeit aktive Folie zurück. Hierbei handelt es sich immer um eine Endfolie, d. h. sie enthält keine weiteren Unterfolien. 534 Kapitel 4: Komponenten-Referenz Beispiel Wenn Sie den folgenden Code für die am Stamm befindliche Folie „präsentation“ einer Schaltfläche zuweisen, wechseln Sie in der Folienpräsentation immer zur nächsten Folie, wenn diese Schaltfläche gedrückt wird. // Zu Schaltflächeninstanz von Folie 'präsentation' hinzugefügt: on(press) { _parent.currentSlide.gotoNextSlide(); } Siehe auch Slide.gotoNextSlide() Slide.currentChildSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.currentChildSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die unmittelbar folgende Unterfolie von meineSlide zurück, wenn diese die zurzeit aktive Folie enthält; gibt null zurück, wenn keine Unterfolie in der Hierarchie von meineSlide den aktuellen Fokus hat. Beispiel Vergegenwärtigen Sie sich das folgende Übersichtsfenster: präsentation folie_1 Bullet1_1 SubBullet1_1_1 Bullet1_2 SubBullet1_2_1 folie_2 Unter der Voraussetzung, dass SubBullet1_1_1 die zurzeit aktive Folie ist, sind alle folgenden Anweisungen wahr: präsentation.currentChildSlide == folie_1; folie_1.currentChildSlide == Bullet_1_1; SubBullet_1_1_1.currentChildSlide == null; folie_2.currentChildSlide == null; Siehe auch Slide.currentSlide Slide-Klasse (nur Flash Professional) 535 Slide.currentFocusedSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung mx.screens.Slide.currentFocusedSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die Folie zurück, die sich in einer Verzweigung am weitesten vom Stamm entfernt befindet und aktuell den globalen Fokus hat. Der eigentliche Fokus kann auf der Folie selbst liegen, aber auch auf einem Movieclip, einem Textobjekt oder auf einer Komponente innerhalb der Folie; gibt null zurück, wenn kein aktueller Fokus vorhanden ist. Beispiel var focusedSlide = mx.screens.Slide.currentFocusedSlide; Slide.defaultKeydownHandler Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.defaultKeyDownHandler = function (eventObj) { // Hier Code eingeben } Parameter eventObj • • • • • Ein Ereignisobjekt mit den folgenden Eigenschaften: Ein String, der den Ereignistyp angibt. Mögliche Werte sind "keyUp" und "keyDown". ascii Eine Ganzzahl, die den ASCII-Code der zuletzt gedrückten Taste wiedergibt; entspricht dem Wert, der von „Key.getAscii()“ zurückgegeben wird. code Eine Ganzzahl, die den Tastencode der zuletzt gedrückten Taste wiedergibt; entspricht dem Wert, der von „Key.getCode()“ zurückgegeben wird. shiftKey Ein Boolescher Wert (true oder false), der angibt, ob zurzeit die <Umschalttaste> gedrückt wird (true) oder nicht (false). crtlKey Ein Boolescher Wert (true oder false), der angibt, ob zurzeit die Taste <Strg> gedrückt wird (true) oder nicht (false). type Rückgaben Keine. 536 Kapitel 4: Komponenten-Referenz Beschreibung Rückrufprozedur; hiermit können Sie die standardmäßige Tastaturnavigation mit einer selbst erstellten Tastaturprozedur überschreiben. Anstatt in einer Präsentation mit der <Nach-linksTaste> oder der <Nach-rechts-Taste> zur nächsten bzw. zur vorherigen Folie zu wechseln, können Sie festlegen, dass diese Navigationsschritte mit der <Nach-oben-Taste> und der <Nach-untenTaste> durchgeführt werden sollen. Erklärungen zur standardmäßigen Tastaturnavigation finden Sie unter Slide.autoKeyNav. Beispiel In diesem Beispiel wird die standardmäßige Tastaturnavigation für die Unterfolien derjenigen Folie geändert, der die Prozedur on(load) zugewiesen ist. Bei dieser Prozedur muss die Navigation anstelle der <Nach-links-Taste> und der <Nach-rechts-Taste> mit der <Nach-obenTaste> und der <Nach-unten-Taste> durchgeführt werden. on (load) { this.defaultKeyDownHandler = function(eventObj:Object) { switch (eventObj.code) { case Key.DOWN : this.currentSlide.gotoNextSlide(); break; case Key.UP : this.currentSlide.gotoPreviousSlide(); break; default : break; } }; } Siehe auch Slide.autoKeyNav Slide.firstSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.firstSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die erste Unterfolie von meineSlide zurück, die keine weiteren Unterfolien hat. Slide-Klasse (nur Flash Professional) 537 Beispiel So sind beispielsweise in der unten abgebildeten Folienhierarchie die folgenden Anweisungen wahr: präsentation.Intro.firstSlide == Intro_bullet_1_1; präsentation.Intro_bullet_1.firstSlide == Intro_bullet_1-1; Slide.getChildSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.getChildSlide(childIndex) Parameter childIndex Der von Null ausgehende Index der zurückzugebenden Unterfolie. Rückgaben Ein Folienobjekt. Beschreibung Methode; gibt die Unterfolie von meineSlide zurück, deren Index childIndex lautet. Diese Methode ist z. B. hilfreich, wenn (wie im folgenden Beispiel) ein Satz Unterfolien durchlaufen werden soll, deren Indizes bekannt sind. 538 Kapitel 4: Komponenten-Referenz Beispiel Im Rahmen dieses Beispiels sollen im Bedienfeld Ausgabe die Namen aller Unterfolien der Stammfolie „präsentation“ angezeigt werden. var numSlides = _root.präsentation.numChildSlides; for(var slideIndex=0; slideIndex < numSlides; slideIndex++) { var childSlide = _root.präsentation.getChildSlide(slideIndex); trace(childSlide._name); } Siehe auch Slide.numChildSlides Slide.gotoSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.gotoSlide(newSlide) Parameter newSlide Die Folie, die aufgerufen werden soll. Rückgaben Ein Boolescher Wert (true oder false), der angibt, ob die Navigation erfolgreich war (true) oder nicht (false). Beschreibung Methode; navigiert zu der Folie, die von newSlide angegeben wird. Damit die Navigation möglich ist, muss Folgendes zutreffen: • Die aktuelle Folie muss eine Unterfolie von meineSlide sein. • Die von newSlide angegebene Folie und die aktuelle Folie müssen eine gemeinsame übergeordnete Folie haben, d. h. die aktuelle Folie und newSlide müssen in derselben Verzweigung der Baumstruktur angesiedelt sein. Wenn eine dieser beiden Voraussetzungen nicht erfüllt ist, schlägt die Navigation fehl, und die Methode gibt false zurück. Sind die Voraussetzungen hingegen erfüllt, ruft die Methode die angegebene Folie auf und gibt true zurück. Vergegenwärtigen Sie sich beispielsweise folgende Folienhierarchie: Präsentation folie1 folie1_1 folie1_2 folie2 folie2_1 folie2_2 Slide-Klasse (nur Flash Professional) 539 Wenn folie1_2 die aktuelle Folie ist, schlägt der nächste Aufruf der Methode gotoSlide() fehl, da die aktuelle Folie keine Unterfolie von folie2 ist: folie2.gotoSlide(folie2_1); Vergegenwärtigen Sie sich ferner folgende Bildschirmhierarchie, bei der ein form-Objekt als übergeordneter Bildschirm für zwei getrennte Folienzweige dient: Form_1 folie1 folie1_1 folie1_2 folie2 folie2_1 folie2_2 Wenn die aktuelle Folie folie1_2 ist, schlägt der folgende Methodenaufruf ebenfalls fehl, da sich folie1 und folie2 in unterschiedlichen Verzweigungen befinden. folie1_2.gotoSlide(folie2_2); Beispiel Beim folgenden Code, der einer Button-Komponente zugewiesen wurde, wird mit Hilfe der Eigenschaft Slide.currentSlide und der Methode gotoSlide() in einer Präsentation von einer Folie zur nächsten gewechselt. on(click){ _parent.gotoSlide(_parent.currentSlide.nextSlide); } Beachten Sie, dass es sich hierbei um ein Äquivalent zum folgenden Code handelt, der die Methode Slide.gotoNextSlide() verwendet. on(click){ _parent.currentSlide.gotoNextSlide(); } Siehe auch Slide.currentSlide, Slide.gotoNextSlide() Slide.gotoFirstSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.gotoFirstSlide() Rückgaben Keine. 540 Kapitel 4: Komponenten-Referenz Beschreibung Methode; navigiert in der Hierarchie unterhalb von meineSlide zur ersten Folie am Ende einer Verzweigung. Diese Methode wird ignoriert, wenn der Aufruf aus den Ereignisprozeduren on(hide) oder (on)reveal einer Folie erfolgt und die Prozedur das Ergebnis einer vorherigen Navigation war. Sie können zur ersten Folie in einer Präsentation wechseln, wenn Sie aufrufen. Weitere Informationen zu rootSlide meineSlide.rootSlide.gotoFirstSlide() finden Sie unter Slide.revealChild Beispiel In der unten dargestellten Folienhierarchie könnten Sie mit jedem der folgenden Methodenaufrufe zur Folie Intro_bullet_1_1 navigieren: präsentation.gotoFirstSlide(); präsentation.Intro.gotoFirstSlide(); präsentation.Intro.Intro_bullet_1.gotoFirstSlide(); Der folgende Methodenaufruf würde eine Navigation zur Folie Intro_bullet_2_1 ermöglichen: präsentation.Intro.Intro_bullet_2.gotoFirstSlide(); Siehe auch Slide.firstSlide, Slide.revealChild Slide-Klasse (nur Flash Professional) 541 Slide.gotoLastSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.gotoLastSlide() Rückgaben Keine. Beschreibung Methode; navigiert in der Hierarchie unterhalb von meineSlide zur letzten Folie am Ende einer Verzweigung. Diese Methode wird ignoriert, wenn der Aufruf aus den Ereignisprozeduren on(hide) oder (on)reveal einer Folie erfolgt und die Prozedur das Ergebnis einer vorherigen Navigation war. Beispiel In der unten dargestellten Folienhierarchie könnten Sie mit jedem der folgenden Methodenaufrufe zur Folie Intro_bullet_1_2. navigieren: präsentation.Intro.gotoLastSlide(); präsentation.Intro.Intro_bullet_1.gotoLastSlide(); Die folgenden Methodenaufrufe würden eine Navigation zur Folie Intro_bullet_2_1 ermöglichen: präsentation.gotoLastSlide(); präsentation.Intro.gotoLastSlide(); Siehe auch Slide.gotoSlide(), Slide.lastSlide 542 Kapitel 4: Komponenten-Referenz Slide.gotoNextSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.gotoNextSlide() Rückgaben Ein Boolescher Wert (true oder false) oder null; gibt true zurück, wenn mit der Methode zur nächsten Folie navigiert werden konnte; gibt false zurück, wenn sich die Präsentation beim Aufruf bereits bei der letzten Folie befindet (d. h. currentSlide.nextSlide ergibt null); gibt null zurück, wenn der Aufruf aus einer Folie erfolgt, die die aktuelle Folie nicht enthält. Beschreibung Methode; navigiert zur nächsten Folie in der Präsentation. Während die Steuerung von der aktuellen Folie zur folgenden übergeht, wird die Ausgangsfolie ausgeblendet und die Zielfolie eingeblendet. Wenn sich Ausgangs- und Zielfolie in verschiedenen Zweigen befinden, werden alle übergeordneten Folien der Ausgangsfolie – beginnend bei der Ausgangsfolie bis hoch zu der übergeordneten Folie, die Ausgangs- und Zielfolie gemeinsam haben – ausgeblendet und erhalten das Ereignis hide. Unmittelbar darauf werden alle übergeordneten Folien der Zielfolie – beginnend bei der Zielfolie bis hinauf zu der übergeordneten Folie, die Ausgangs- und Zielfolie gemeinsam haben – eingeblendet und erhalten das Ereignis reveal. Üblicherweise wird gotoNextSlide() für die Verzweigung aufgerufen, in der sich die aktuelle Folie befindet. Erfolgt der Aufruf für eine andere Verzweigung (someNode), navigieren Sie mit someNode.gotoNextSlide() in die erste Verzweigung der nächsten Folie oder des nächsten „Abschnitts“. Das unten stehende Beispiel veranschaulicht dieses Prinzip. Diese Methode ist wirkungslos, wenn der Aufruf aus einer Folie erfolgt, die die aktuelle Folie nicht enthält (siehe Beispiel unten). Weiterhin ist diese Methode wirkungslos, wenn der Aufruf aus einer on(hide)- oder erfolgt, die einer Folie zugewiesen ist, und es sich bei dieser Prozedur um das Ergebnis einer vorherigen Navigation handelt. (on)reveal-Ereignisprozedur Slide-Klasse (nur Flash Professional) 543 Beispiel Es wird vorausgesetzt, dass es sich in der folgenden Hierarchie bei der Folie Intro_bullet_1_1 um die zurzeit aktive Folie handelt (d. h. _root.präsentation.currentSlide._name == Intro_bullet_1_1). In diesem Fall würden Sie mit dem Aufruf Intro_bullet_1_1.gotoNextSlide() zur Folie navigieren, da es sich hierbei um die nächste Nachbarfolie von handelt. Intro_bullet_1_2 Intro_bullet_1_1 Mit dem Aufruf Intro_bullet_1.gotoNextSlide() würden Sie dagegen zur Folie Intro_bullet_2_1 navigieren, da es sich hierbei um die erste Endfolie in der Hierarchie von Folie Intro_bullet_2 handelt, die wiederum die nächste Nachbarfolie von Intro_bullet_1 ist. Ähnlich würden Sie mit dem Aufruf Intro.gotoNextSlide() zur Folie Results_bullet_1 navigieren, also zur ersten Endfolie in der Hierarchie der Folie Results. Nach wie vor unter der Voraussetzung, dass Intro_bullet_1_1 die zurzeit aktive Folie ist, wäre der Aufruf Results.gotoNextSlide() wirkungslos, da sich die aktive Folie nicht in der Verzweigung unterhalb von Results befindet (d. h. Results.currentSlide ist null). Siehe auch Slide.currentSlide, Slide.gotoPreviousSlide(), Slide.nextSlide 544 Kapitel 4: Komponenten-Referenz Slide.gotoPreviousSlide() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.gotoPreviousSlide() Rückgaben Ein Boolescher Wert (true oder false) oder null; gibt true zurück, wenn mit der Methode zur vorherigen Folie navigiert werden konnte; gibt false zurück, wenn sich die Präsentation beim Aufruf bei der ersten Folie befindet (d. h. currentSlide.nextSlide ergibt null); gibt null zurück, wenn der Aufruf aus einer Folie erfolgt, die die aktuelle Folie nicht enthält. Beschreibung Methode; navigiert zur vorherigen Folie in der Präsentation. Während die Steuerung von der aktuellen Folie zur vorherigen übergeht, wird die Ausgangsfolie ausgeblendet und die Zielfolie eingeblendet. Wenn sich Ausgangs- und Zielfolie in verschiedenen Zweigen befinden, werden alle übergeordneten Folien der Ausgangsfolie – beginnend bei der Ausgangsfolie bis hoch zu der übergeordneten Folie, die Ausgangs- und Zielfolie gemeinsam haben – ausgeblendet und erhalten das Ereignis hide. Unmittelbar darauf werden alle übergeordneten Folien der Zielfolie – beginnend bei der Zielfolie bis hinauf zu der übergeordneten Folie, die Ausgangs- und Zielfolie gemeinsam haben – eingeblendet und erhalten das Ereignis reveal. Üblicherweise wird gotoPreviousSlide() für die Verzweigung aufgerufen, in der sich die aktuelle Folie befindet. Erfolgt der Aufruf für eine andere Verzweigung (someNode), navigieren Sie mit someNode.gotoPreviousSlide() in die Verzweigung der nächsten Folie oder des nächsten „Abschnitts“. Das unten stehende Beispiel veranschaulicht dieses Prinzip. Diese Methode ist wirkungslos, wenn der Aufruf aus einer Folie erfolgt, die die aktuelle Folie nicht enthält (siehe Beispiel unten). Weiterhin ist diese Methode wirkungslos, wenn der Aufruf aus einer on(hide)- oder erfolgt, die einer Folie zugewiesen ist, und es sich bei dieser Prozedur um das Ergebnis einer vorherigen Navigation handelt. (on)reveal-Ereignisprozedur Slide-Klasse (nur Flash Professional) 545 Beispiel Es wird vorausgesetzt, dass es sich in der folgenden Hierarchie bei der Folie Intro_bullet_1_2 um die zurzeit aktive Folie handelt (d. h. _root.präsentation.currentSlide._name == Intro_bullet_1_2). In diesem Fall würden Sie mit dem Aufruf Intro_bullet_1_2.gotoPreviousSlide() zur Folie navigieren, da es sich hierbei um die vorherige Nachbarfolie von handelt. Intro_bullet_1_1 Intro_bullet_1_2 Mit dem Aufruf Intro_bullet_2.gotoPreviousSlide() würden Sie dagegen zur Folie Intro_bullet_1_1 navigieren, da es sich hierbei um die erste Endfolie unterhalb der Folie Intro_bullet_1 handelt, die wiederum die vorherige Nachbarfolie von Intro_bullet_2. Ähnlich würden Sie mit dem Aufruf Results.gotoPreviousSlide() zur Folie Intro_bullet_1_1 navigieren, also zur ersten Endfolie in der Hierarchie der Folie Intro. Unter der Voraussetzung, dass Intro_bullet_1_1 die zurzeit aktive Folie ist, wäre Results.gotoPreviousSlide() wirkungslos, da sich die aktive Folie nicht in der unterhalb von Results befindet (d. h. Results.currentSlide ist null). Siehe auch Slide.currentSlide, Slide.gotoNextSlide(), Slide.previousSlide 546 Kapitel 4: Komponenten-Referenz ist. der Aufruf Verzweigung Slide.hideChild Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(hideChild) { // Hier Code eingeben } Beschreibung Ereignis; wird immer dann per Broadcast gesendet, wenn die Unterfolie eines Folienobjekts von „sichtbar“ zu „nicht sichtbar“ wechselt. Die Broadcastübertragung erfolgt nur durch Folienobjekte, nicht durch form-Objekte. Die Hauptfunktion des Ereignisses hideChild besteht darin, Ausblendungsübergänge auf alle Unterfolien der betreffenden Folie zu übertragen. Beispiel Wenn der Code der Stammfolie (also z. B. der Folie „präsentation“) zugewiesen wird, zeigt dieser Code den Namen jeder zur Stammfolie gehörenden Unterfolie an, sobald die Stammfolie sichtbar wird. on(revealChild) { var child = eventObj.target._name; trace(child + " wurde soeben eingeblendet"); } Siehe auch Slide.revealChild Slide.indexInParentSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.indexInParentSlide Beschreibung Eigenschaft (schreibgeschützt); gibt den Index (Bezugsbasis 0) von meineSlide in der zu ihrer übergeordneten Folie gehörenden Liste der Unterfolien zurück. Slide-Klasse (nur Flash Professional) 547 Beispiel Der folgende Code verwendet die Eigenschaften indexInParent und Slide.numChildSlides zur Anzeige des Index der zurzeit aktiven Folie sowie der Anzahl der Folien, die sich in der Hierarchie unterhalb der ihr übergeordneten Folie befinden. Sie können diesen Code einsetzen, wenn Sie ihn einer übergeordneten Folie zuweisen, die eine oder mehrere Unterfolien enthält. on (revealChild) { trace("Anzeige von "+(currentSlide.indexInParentSlide+1)+" von "+currentSlide._parent.numChildSlides); } Beachten Sie Folgendes: Da es sich bei dieser Eigenschaft um einen Index mit Bezugsbasis 0 handelt, wird sein Wert in Intervallen von 1 erhöht (currentSlide.indexInParent+1), damit aussagekräftige Werte angezeigt werden. Siehe auch Slide.numChildSlides, Slide.revealChild Slide.lastSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.lastSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die letzte Unterfolie von meineSlide zurück, die keine weiteren Unterfolien hat. Beispiel In der unten dargestellten Hierarchie sind alle folgenden Anweisungen wahr (true): präsentation.lastSlide._name == Results_bullet_1; Intro.lastSlide._name == Intro_bullet_1_2; 548 Kapitel 4: Komponenten-Referenz Intro_bullet_1.lastSlide._name == Intro_bullet_1_2; Results.lastSlide._name = Results_bullet_1; Slide.nextSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.nextSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die Folie zurück, die Sie durch den Aufruf von meineSlide.gotoNextSlide() erreichen würden, navigiert aber nicht tatsächlich zu dieser Folie. Mit dieser Funktion können Sie beispielsweise den Namen der nächsten Folie in einer Präsentation anzeigen lassen, sodass der Benutzer entscheiden kann, ob er tatsächlich zu dieser Folie navigieren möchte. Beispiel In diesem Beispiel zeigt die Beschriftung der Button-Komponente nextButton den Namen der nächsten Folie in der Präsentation an. Wenn es keine nächste Folie gibt (d. h. meineSlide.nextSlide ist null), wird die Beschriftung entsprechend aktualisiert und zeigt dem Benutzer an, dass er sich am Ende der Folienpräsentation befindet. Slide-Klasse (nur Flash Professional) 549 if (meineSlide.nextSlide != null) { nextButton.label = "Nächste Folie: " + meineSlide.nextSlide._name + " > "; } else { nextButton.label = "Ende der Präsentation."; } Siehe auch Slide.gotoNextSlide(), Slide.previousSlide Slide.numChildSlides Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.numChildSlides Beschreibung Eigenschaft (schreibgeschützt); gibt die Anzahl der Unterfolien zurück, die meineSlide untergeordnet sind. Beachten Sie, dass eine Folie entweder Formulare oder andere Folien enthalten kann. Wenn meineSlide sowohl Folien als auch Formulare enthält, gibt diese Eigenschaft lediglich die Anzahl der untergeordneten Folien zurück. Die Formulare werden nicht gezählt. Beispiel In diesem Beispiel werden die Methoden Slide.numChildSlide und Slide.getChildSlide() verwendet, um alle Unterfolien der Stammfolie „präsentation“ zu durchlaufen und ihre Namen im Bedienfeld Ausgabe anzuzeigen. var numSlides = _root.präsentation.numChildSlides; for(var slideIndex=0; slideIndex < numSlides; slideIndex++) { var childSlide = _root.präsentation.getChildSlide(slideIndex); trace(childSlide._name); } Siehe auch Slide.getChildSlide() Slide.overlayChildren Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.overlayChildren 550 Kapitel 4: Komponenten-Referenz Beschreibung Eigenschaft; bestimmt, ob Unterfolien von meineSlide bei der Navigation von einer Unterfolie zur nächsten sichtbar bleiben. Bei der Einstellung true bleibt die Ausgangsfolie sichtbar, wenn die Steuerung auf ihre nächste Nachbarfolie übergeht. Bei der Einstellung false ist die Ausgangsfolie nicht mehr sichtbar, nachdem die Steuerung auf ihre nächste Nachbarfolie übergegangen ist. Diese Eigenschaft auf "true" einzustellen ist z. B. sinnvoll, wenn eine Folie Unterfolien als Aufzählungspunkte enthält, die eine nach der anderen sichtbar werden (mit Hilfe von Übergängen beispielsweise), wobei alle zugehörigen Folien im Zuge dieses Vorgangs sichtbar bleiben sollen. Hinweis: Diese Eigenschaft lässt sich nur auf die unmittelbar untergeordneten Folien von meineSlide anwenden, nicht auf alle (verschachtelten) Unterfolien. Beispiel Im folgenden Beispiel enthält die Folie „Intro_bullets“ drei Unterfolien („Finance“, „Human resources“ und „Operations“), auf denen jeweils ein Aufzählungspunkt angezeigt wird. Indem Sie Intro_bullets.overlayChildren auf "true" setzen, bleibt jede Unterfolie mit ihrem Aufzählungspunkt auf der Bühne sichtbar, während die folgenden Unterfolien eingeblendet werden. Slide.parentIsSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.parentIsSlide Slide-Klasse (nur Flash Professional) 551 Beschreibung Eigenschaft (schreibgeschützt); ein Boolescher Wert (true oder false), der angibt, ob das übergeordnete Objekt von meineSlide ebenfalls eine Folie ist. Handelt es sich beim übergeordneten Objekt von meineSlide um eine Folie oder um eine Unterklasse der Folie, gibt diese Eigenschaft den Wert true zurück. Andernfalls gibt sie false zurück. Fungiert meineSlide als Stammfolie in einer Präsentation, gibt diese Eigenschaft false zurück, da es sich beim übergeordneten Objekt der Folie „präsentation“ um die Hauptzeitleiste (_level0) handelt und nicht um eine Folie. Der Wert false wird ebenfalls zurückgegeben, wenn das übergeordnete Objekt von meineSlide ein Formular ist. Beispiel Mit dem folgenden Code wird bestimmt, ob das übergeordnete Objekt von meineSlide auch eine Folie ist. Ist das nicht der Fall, wird davon ausgegangen, dass es sich bei meineSlide um die Stamm- oder Master-Folie handelt und daher keine Nachbarfolien hat. Wenn hingegen meineSlide.parentIsSlide den Wert true aufweist, wird die Anzahl der Nachbarfolien von meineSlide im Bedienfeld Ausgabe angezeigt. if (meineSlide.parentIsSlide) { trace("Ich habe " + meineSlide._parent.numChildSlides+" Nachbarfolien"); } else { trace("Ich bin die Stammfolie und habe keine Nachbarfolien."); } Siehe auch Slide.numChildSlides Slide.playHidden Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.playHidden Beschreibung Eigenschaft; ein Boolescher Wert, der bestimmt, ob meineSlide weiterhin abgespielt werden soll, auch wenn sie ausgeblendet ist. Bei der Einstellung true wird meineSlide auch dann weiterhin abgespielt, wenn sie ausgeblendet ist. Bei der Einstellung false wird meineSlide angehalten, sobald sie ausgeblendet wird. Bei einem erneuten Aufruf beginnt die Wiedergabe von meineSlide wieder mit Bild 1. Sie können die Einstellung dieser Eigenschaft auch in der Flash-Authoring-Umgebung im Eigenschafteninspektor vornehmen. 552 Kapitel 4: Komponenten-Referenz Slide.previousSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.previousSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die Folie zurück, die Sie durch den Aufruf meineSlide.gotoPreviousSlide() erreichen würden, navigiert aber nicht tatsächlich zu dieser Folie. Mit dieser Funktion können Sie beispielsweise den Namen der vorherigen Folie in einer Präsentation anzeigen lassen, sodass der Benutzer entscheiden kann, ob er tatsächlich zu dieser Folie navigieren möchte. Beispiel In diesem Beispiel zeigt die Beschriftung der Button-Komponente previousButton den Namen der vorherigen Folie in der Präsentation an. Wenn es keine vorherige Folie gibt (d. h. meineSlide.previousSlide ist null), wird die Beschriftung entsprechend aktualisiert und zeigt dem Benutzer an, dass er sich am Anfang der Folienpräsentation befindet. if (meineSlide.previousSlide != null) { previousButton.label = "Vorherige Folie: " + meineSlide.previous._name + " > "; } else { previousButton.label = "Sie befinden sich am Anfang der Präsentation."; Siehe auch Slide.gotoPreviousSlide(), Slide.nextSlide Slide.revealChild Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung on(revealChild) { // Hier Code eingeben } Beschreibung Ereignis; wird immer dann per Broadcast gesendet, wenn die Unterfolie eines Folienobjekts von „nicht sichtbar“ zu „sichtbar“ wechselt. Die Hauptfunktion dieses Ereignisses besteht darin, Einblendungsübergänge auf alle Unterfolien der betreffenden Folie zu übertragen. Slide-Klasse (nur Flash Professional) 553 Beispiel Wenn der Code der Stammfolie (also z. B. der Folie „präsentation“) zugewiesen wird, zeigt dieser Code den Namen jeder Unterfolie an, sobald die Stammfolie sichtbar wird. on(revealChild) { var child = eventObj.target._name; trace(child + " wurde soeben eingeblendet"); } Siehe auch Slide.hideChild Slide.rootSlide Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX Professional 2004. Verwendung meineSlide.rootSlide Beschreibung Eigenschaft (schreibgeschützt); gibt die Stammfolie des Folienbaums oder der Verzweigung an, die meineSlide enthält. Beispiel Angenommen Sie haben einen Movieclip auf einer Folie, der zur ersten Folie der Präsentation wechseln soll, wenn Sie ihn anklicken. Dieses Ziel erreichen Sie, wenn Sie dem Movieclip folgenden Code zuweisen: on(press) { _parent.rootSlide.gotoFirstSlide(); } In diesem Fall bezieht sich _parent auf die Folie, die das Movieclip-Objekt enthält. 554 Kapitel 4: Komponenten-Referenz StyleManager-Klasse ActionScript-Klassenname mx.styles.StyleManager Mit der StyleManager-Klasse können bekannte Vererbungsstile und -farben verfolgt werden. Sie brauchen diese Klasse nur dann zu verwenden, wenn Sie beim Erstellen von Komponenten einen neuen Vererbungsstil oder eine Vererbungsfarbe hinzufügen möchten. Welche Stile vererbbar sind, erfahren Sie auf der Website von W3C. Übersicht: Methoden der StyleManager-Klasse Methode Beschreibung StyleManager.registerColorName() Registriert eine neue Farbe in der StyleManager-Klasse. StyleManager.registerColorStyle() Registriert einen neuen Stil in der StyleManager-Klasse. StyleManager.registerInheritingSyle() Registriert einen neuen Vererbungsstil in der StyleManager-Klasse. StyleManager.registerColorName() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung StyleManager.registerColorName(colorName, value) Parameter colorName Ein String, mit dem der Name der Farbe angegeben wird (z. B. gray, darkGrey usw.). value Eine Hexadezimalzahl, mit der die Farbe angegeben wird (z. B. 0x808080, 0x404040 usw.). Rückgaben Keine. Beschreibung Methode; ordnet einem Hexadezimalwert einen Farbnamen zu und registriert diese Kombination in der StyleManager-Klasse. Beispiel Im folgenden Beispiel wird die Kombination aus dem Farbnamen gray und dem zugeordneten Hexadezimalwert 0x808080 registriert: StyleManager.registerColorName("gray", 0x808080 ); StyleManager-Klasse 555 StyleManager.registerColorStyle() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung StyleManager.registerColorStyle(colorStyle) Parameter colorStyle Ein String, mit dem die nähere Bezeichnung der Farbe angegeben wird (z. B. highlightColor (Farbe für Markierungen), shadowColor (Farbe für abgeblendete Elemente), disabledColor (Farbe für deaktivierte Elemente) usw.). Rückgaben Keine. Beschreibung Methode; fügt der StyleManager-Klasse einen neuen Farbstil hinzu. Beispiel In folgendem Beispiel wird highlightColor als Farbstil registriert: StyleManager.registerColorStyle("highlightColor"); StyleManager.registerInheritingSyle() Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung StyleManager.registerInheritingStyle(propertyName) Parameter propertyName Ein String, newProp1, newProp2 usw.). mit dem der Name einer Stileigenschaft angegeben wird (z. B. Rückgaben Keine. 556 Kapitel 4: Komponenten-Referenz Beschreibung Methode; kennzeichnet die Stileigenschaft als vererbbar. Sie können diese Methode zur Registrierung von Stileigenschaften verwenden, die nicht in der CSS-Spezifikation aufgeführt sind. Verwenden Sie diese Methode jedoch nicht dazu, nicht vererbbare Stileigenschaften in vererbbare Eigenschaften zu ändern. Beispiel Im folgenden Beispiel wird die Stileigenschaft newProp1 als Vererbungsstil registriert: StyleManager.registerInheritingStyle("newProp1"); TextArea-Komponente Mit der TextArea-Komponente wird der Zeilenumbruch des nativen ActionScript-Objekts TextField festgelegt. Sie können Stile zur Anpassung der TextArea-Komponente verwenden. Der Inhalt einer deaktivierten Instanz wird in der Farbe angezeigt, die dem Stil disabledColor für deaktivierte Elemente zugeordnet ist. Die TextArea-Komponente kann auch im HTML-Format oder als Kennwortfeld formatiert werden, in dem der Text unkenntlich dargestellt wird. TextArea-Komponenten können in einer Anwendung aktiviert und deaktiviert werden. In deaktiviertem Zustand werden Eingaben über die Maus oder die Tastatur nicht empfangen. In aktiviertem Zustand gelten für dieses Objekt dieselben Fokus-, Auswahl- und Navigationsregeln wie für das ActionScript-Objekt TextField. Wenn eine TextArea-Instanz den Fokus hat, können Sie diese mit Hilfe der folgenden Tasten steuern: Taste Beschreibung Pfeiltasten Verschieben die Einfügemarke eine Zeile nach oben, unten, links oder rechts. Bild-ab-Taste Verschiebt um einen Bildschirm nach unten. Bild-auf-Taste Verschiebt um einen Bildschirm nach oben. <Umschalt>+<Tab> Verschiebt den Fokus auf das vorherige Objekt. <Tab> Verschiebt den Fokus auf das nächste Objekt. Weitere Informationen zur Steuerung des Fokus finden Sie unter „Benutzerdefinierte Fokusnavigation erstellen“ auf Seite 28 und „FocusManager-Klasse“ auf Seite 301. In einer Live-Vorschau jeder einzelnen TextArea-Instanz werden die Änderungen an Parametern im Eigenschafteninspektor oder Komponenten-Inspektor beim Authoring dargestellt. Wenn eine Bildlaufleiste benötigt wird, wird diese in der Vorschau zwar angezeigt, funktioniert jedoch nicht. Außerdem kann in der Live-Vorschau weder Text ausgewählt noch Text in der Komponenteninstanz auf der Bühne eingegeben werden. Wenn Sie einer Anwendung die TextArea-Komponente hinzufügen, können Sie diese im Bedienfeld Eingabehilfen für Bildschirmleseprogramme verfügbar machen. TextArea-Komponente 557 TextArea-Komponente verwenden Sie können die TextArea-Komponente überall dort einsetzen, wo ein Textfeld mit mehreren Zeilen benötigt wird. Informationen zu Textfeldern mit nur einer Zeile finden Sie unter „TextInput-Komponente“ auf Seite 569. Sie können die TextArea-Komponente beispielsweise für ein Kommentarfeld in einem Formular verwenden. Sie können einen Listener einrichten, mit dem überprüft wird, ob das Feld leer ist, wenn der Benutzer zum Verlassen des Feldes die Tabulatortaste drückt. In diesem Fall kann der Listener beispielsweise die Fehlermeldung anzeigen, dass ein Kommentar in dem Feld eingegeben werden muss. Parameter der TextArea-Komponente Die folgenden Authoring-Parameter können Sie im Eigenschafteninspektor oder KomponentenInspektor für jede TextArea-Komponenteninstanz festlegen: text gibt den Inhalt des Textbereichs an. Weder im Eigenschafteninspektor noch im Komponenten-Inspektor können Zeilenumbrüche eingegeben werden. Der Standardwert lautet "" (leerer String). gibt an, ob der Text in HTML (true) formatiert ist oder nicht (false). Der Standardwert lautet false. html gibt an, ob die TextArea-Komponente bearbeitet werden kann (true) oder nicht (false). Der Standardwert lautet true. editable wordWrap gibt an, ob im Text Zeilenumbrüche vorgenommen werden (true) oder nicht (false). Der Standardwert lautet true. Mit Hilfe von ActionScript-Anweisungen können Sie diese und weitere Optionen für die TextArea-Komponenten über deren Eigenschaften, Methoden und Ereignisse steuern. Weitere Informationen finden Sie unter TextArea-Klasse. Anwendungen mit der TextArea-Komponente erstellen In der folgenden Anleitung wird erläutert, wie während des Authorings eine TextAreaKomponente einer Anwendung hinzugefügt wird. In diesem Beispiel handelt es sich bei der Komponente um ein Kommentarfeld mit einem Ereignislistener, der überprüft, ob der Benutzer Text eingegeben hat. So erstellen Sie eine Anwendung mit einer TextArea-Komponente: 1 Ziehen Sie eine TextArea-Komponente aus dem Bedienfeld Komponenten auf die Bühne. 2 Geben Sie im Eigenschafteninspektor den Instanznamen comment an. 3 Legen Sie im Eigenschafteninspektor die gewünschten Parameter fest. Legen Sie jedoch für den Parameter text keinen Wert, für den Parameter editable den Wert true und für den Parameter password den Wert false fest. 558 Kapitel 4: Komponenten-Referenz 4 Wählen Sie in der Zeitleiste das erste Bild aus, öffnen Sie das Bedienfeld Aktionen, und geben Sie den folgenden Code ein: textListener = new Object(); textListener.handleEvent = function (evt){ if (comment.length < 1) { Alert(_root, "Fehler", "Geben Sie mindestens ein Zeichen als Kommentar in diesem Feld ein.", mxModal | mxOK); } } comment.addEventListener("focusOut", textListener); Mit diesem Code wird eine FocusOut-Ereignisprozedur für die TextArea-Instanz comment konfiguriert, mit der sichergestellt wird, dass der Benutzer im Textfeld etwas eingegeben hat. 5 Nachdem in der Instanz comment Text eingegeben wurde, können Sie deren Wert wie folgt abrufen: var login = comment.text; TextArea-Komponente anpassen Eine TextArea-Komponente kann sowohl beim Authoring als auch zur Laufzeit horizontal und vertikal transformiert werden. Beim Authoring wählen Sie hierzu die Komponente auf der Bühne aus und verwenden anschließend das Werkzeug Frei transformieren oder die Befehle unter Modifizieren > Transformieren. Zur Laufzeit können Sie UIObject.setSize() oder andere geeignete Eigenschaften und Methoden der TextArea-Klasse verwenden. Beim Ändern der Größe einer TextArea-Komponente wird die Größe des Feldrahmens entsprechend der neuen Begrenzungsbox geändert. Falls Bildlaufleisten erforderlich sind, werden sie am unteren und rechten Rand platziert. Anschließend wird die Größe des Textfeldes innerhalb des verbleibenden Bereichs angepasst. Eine TextArea-Komponente enthält keine Elemente mit fester Größe. Wenn die TextArea-Komponente zum Anzeigen des Textes zu klein ist, wird der Text abgeschnitten. Stile mit der TextArea-Komponente verwenden Die TextArea-Komponente unterstützt nur eine Gruppe von Komponentenstilen für den gesamten Text im Feld. Sie können den Text jedoch auch im HTML-Format anzeigen, das mit der HTML-Wiedergabe des Flash Players kompatibel ist. Wenn der Text im HTML-Format wiedergegeben werden soll, legen Sie für TextArea.html den Wert true fest. Die Stileigenschaften backgroundColor und borderStyle der TextArea-Komponente werden über eine Klassenstil-Deklaration definiert. Klassenstile haben Vorrang vor globalen Stilen. Wenn Sie also die Stileigenschaften backgroundColor und borderStyle definieren möchten, müssen Sie für die Instanz eine andere Stil-Deklaration definieren. Bei Stileigenschaften, deren Bezeichnung mit „Color“ endet, handelt es sich um Farbstileigenschaften, die sich anders als andere Stileigenschaften verhalten. Weitere Informationen finden Sie unter „Stile zur Farb- und Textanpassung in einer Komponente verwenden“ auf Seite 31. TextArea-Komponente 559 TextArea-Komponenten unterstützen die folgenden Stile: Stil Beschreibung color Die Standardfarbe für Text. embedFonts Die in das Dokument einzubettenden Schriftarten. fontFamily Die Schriftart für Text. fontSize Die Punktgröße der Schriftart. fontStyle Der Schriftstil für den Text: „normal“ oder „italic“. fontWeight Der Schriftstil für den Text: „normal“ oder „bold“. textAlign Die Textausrichtung: „left“ (links), „right“ (rechts) oder „center“ (zentriert). textDecoration Textauszeichnung; mögliche Werte sind „none“ (keine) und „underline“ (unterstrichen). Skins mit der TextArea-Komponente verwenden Zur Darstellung der Feldrahmen in der TextArea-Komponente wird die RectBorder-Klasse verwendet. Mit der Methode setStyle() (siehe UIObject.setStyle()) können Sie die folgenden RectBorder-Stileigenschaften ändern: RectBorder-Stile Buchstabe borderColor a highlightColor b borderColor c shadowColor d borderCapColor e shadowCapColor f shadowCapColor g borderCapColor h Mit den Stileigenschaften werden die folgenden Positionen für den Rand festgelegt: 560 Kapitel 4: Komponenten-Referenz TextArea-Klasse Vererbung UIObject > UIComponent > View > ScrollView > TextArea ActionScript-Klassenname mx.controls.TextArea Mit den Eigenschaften der TextArea-Klasse können Sie den Inhalt, die Formatierung sowie die horizontale und vertikale Position des Textes zur Laufzeit festlegen. Außerdem können Sie angeben, ob eine Bearbeitung des Feldes möglich sein soll und der Text darin wie in einem Kennwortfeld unkenntlich dargestellt werden soll. Darüber hinaus können Sie einschränken, welche Zeichen im Feld eingegeben werden können. Die mit ActionScript festgelegte Eigenschaft der TextArea-Klasse überschreibt den gleichnamigen Parameter, der in den Bedienfeldern des Eigenschafteninspektors bzw. des KomponentenInspektors festgelegt wurde. Die TextArea-Komponente überschreibt das standardmäßige Fokusrechteck des Flash Players und zeigt stattdessen ein angepasstes Fokusrechteck mit abgerundeten Ecken an. Die TextArea-Komponente unterstützt CSS-Stile sowie zusätzliche HTML-Stile, die vom Flash Player unterstützt werden. Für jede Komponentenklasse gibt es die Eigenschaft version; hierbei handelt es sich um eine Klasseneigenschaft. Klasseneigenschaften sind nur für die Klasse als solche verfügbar. Die Eigenschaft version gibt eine Zeichenfolge zurück, die die Version der Komponente angibt. Mit dem folgenden Code können Sie die Eigenschaft version abrufen: trace(mx.controls.TextArea.version); Hinweis: Der folgende Code gibt undefined zurück: trace(meineTextAreaInstance.version);. Übersicht: Eigenschaften der TextArea-Klasse Eigenschaft Beschreibung TextArea.editable Ein Boolescher Wert, der angibt, ob das Feld bearbeitet werden kann (true) oder nicht (false). TextArea.hPosition Definiert die horizontale Position des Textes innerhalb des Bildlauffensters. TextArea.hScrollPolicy Gibt an, ob die horizontale Bildlaufleiste immer aktiviert (on) oder immer deaktiviert (off) ist oder nur bei Bedarf aktiviert wird (auto). TextArea.html Gibt an, ob ein Textfeld im HTML-Format formatiert werden kann. TextArea.length Die Anzahl von Zeichen im Textfeld. Diese Eigenschaft ist schreibgeschützt. TextArea.maxChars Die maximale Anzahl von Zeichen, die das Textfeld aufnehmen kann. TextArea.maxHPosition Der maximale Wert für die Eigenschaft TextArea.hPosition. TextArea.maxVPosition Der maximale Wert für die Eigenschaft TextArea.vPosition. TextArea.password Ein Boolescher Wert, der angibt, ob das Feld ein Kennwortfeld ist (true) oder nicht (false). TextArea.restrict Die Zeichen, die ein Benutzer in das Textfeld eingeben kann. TextArea-Komponente 561 Eigenschaft Beschreibung TextArea.text Der Textinhalt einer TextArea-Komponente. TextArea.vPosition Eine Zahl, mit der die vertikale Bildlaufposition angegeben wird. TextArea.vScrollPolicy Gibt an, ob die vertikale Bildlaufleiste immer aktiviert (on) oder immer deaktiviert (off) ist oder nur bei Bedarf aktiviert wird (auto). TextArea.wordWrap Ein Boolescher Wert, der angibt, ob der Text umbrochen wird (true) oder nicht (false). Übersicht: Ereignisse der TextArea-Klasse Ereignis Beschreibung TextArea.change Benachrichtigt die Listener, dass der Text geändert wurde. TextArea.change Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung Verwendung 1: on(change){ ... } Verwendung 2: listenerObject = new Object(); listenerObject.change = function(eventObject){ ... } textAreaInstance.addEventListener("change", listenerObject) Beschreibung Ereignis; benachrichtigt die Listener, das der Text geändert wurde. Dieses Ereignis wird nach der Änderung von Text als Broadcastübertragung verteilt. Mit diesem Ereignis kann nicht verhindert werden, dass bestimmte Zeichen im Textfeld der Komponente eingegeben werden. Verwenden Sie TextArea.restrict zum Einschränken des Zeichensatzes. Im ersten Verwendungsbeispiel wird eine on()-Prozedur verwendet, die direkt einer TextAreaKomponenteninstanz zugeordnet werden muss. Das Schlüsselwort this in einer on()Ereignisprozedur einer Komponente verweist auf die Instanz der Komponente. Mit dem folgenden Code, der der Instanz meineTextArea zugeordnet ist, wird beispielsweise „_level0.meineTextArea“ an das Ausgabebedienfeld gesendet: on(change){ trace(this); } 562 Kapitel 4: Komponenten-Referenz Das zweite Verwendungsbeispiel basiert auf einem Dispatcher/Listener-Ereignismodell. Eine Komponenteninstanz (textAreaInstance) setzt ein Ereignis (in diesem Fall change) ab, und das Ereignis wir durch eine Funktion, auch als Prozedur bezeichnete, des von Ihnen erstellten Listener-Objekts (listenerObject) verarbeitet. Beim Auslösen dieses Ereignisses wird eine von Ihnen definierte Methode aufgerufen, deren Name dem des Ereignisses entspricht, das sich auf das Listener-Objekt bezieht. Beim Auslösen des Ereignisses wird automatisch ein Ereignisobjekt (eventObject) an die Methode des Listener-Objekts übergeben. Jedes Ereignisobjekt verfügt über einen Satz von Eigenschaften, die Daten zum Ereignis enthalten. Mit Hilfe dieser Eigenschaften können Sie den Code erstellen, der auf das Ereignis reagiert. Anschließend rufen Sie die Methode UIEventDispatcher.addEventListener() für die Komponenteninstanz auf, die das Ereignis überträgt, um den Listener der Instanz zuzuordnen. Wenn die Instanz das Ereignis absetzt, wird der Listener aufgerufen. (Weitere Informationen zu Ereignisobjekten finden Sie unter „Ereignisobjekte“ auf Seite 619.) Beispiel In diesem Beispiel wird die Gesamtanzahl der Änderungen des Textfeldes verfolgt: meineTextArea.changeHandler = function(obj) { this.changeCount++; trace(obj.target); trace("Der Text wurde bisher " + this.changeCount + " Mal geändert. Er lautet jetzt " + this.text); } Siehe auch UIEventDispatcher.addEventListener() TextArea.editable Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung textAreaInstance.editable Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob die Komponente bearbeitet werden kann (true) oder nicht (false). Der Standardwert lautet true. TextArea.hPosition Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. TextArea-Komponente 563 Verwendung textAreaInstance.hPosition Beschreibung Eigenschaft; definiert die horizontale Position des Textes innerhalb des Felds. Der Standardwert ist 0. Beispiel Mit dem folgenden Code werden die Zeichen am linken Rand im Feld angezeigt: meineTextArea.hPosition = 0; TextArea.hScrollPolicy Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung textAreaInstance.hScrollPolicy Beschreibung Eigenschaft; gibt an, ob die horizontale Bildlaufleiste immer aktiviert ist (on), immer deaktiviert ist (off ) oder bei entsprechender Größe des Feldes automatisch aktiviert wird (auto). Der Standardwert lautet auto. Beispiel Mit dem folgenden Code werden horizontale Bildlaufleisten immer aktiviert: text.hScrollPolicy = "on"; TextArea.html Verfügbarkeit Flash Player 6 Version 79. Edition Flash MX 2004. Verwendung textAreaInstance.html Beschreibung Eigenschaft; ein Boolescher Wert, der angibt, ob das Textfeld mit HTML formatiert ist (true) oder nicht (false). Weist die Eigenschaft html den Wert true auf, handelt es sich um ein HTML-Textfeld. Weist die Eigenschaft html den Wert false auf, handelt es sich