Know-how für Kreative

Inhaltsverzeichnis
1 Erste Schritte
2 Versionen
3 Einführung in die Programmierung
4 Die Entwicklungsumgebung
5 Regeln
6 Anweisungen und Aktionen
7 Werte und Datentypen
8 Ausdrücke und Operatoren
9 Funktionen
10 Kontrollstrukturen
11 Dokumenten-Objektmodell und Gültigkeitsbereich (Scope)
12 Ereignisse
13 Objekterstellung
14 Vererbung
15 Movieclips
16 ActionScript 2.0
17 Komponenten
18 Codedesign und Konzeption
19 Flashdetection
20 Aussergewoehnliche Benutzerfuehrung
21 D mit Flash
22 Macromedia Central
23 HTML
24 JavaScript, ActiveX und Java
25 Flash undokumentiert
26 Vergangenheit, Gegenwart und Zukunft
27 Kurzreferenz
28 Buchtipps
29 Links
30 Die CD-ROM zum Buch
Index
Download: - ZIP, ca. 9,8 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Design / <openbook> / ActionScript | vor >>
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/) Objektorientierung und Codedesign mit Flash MX 2004
ActionScript 1 und 2 672 S., mit CD, Referenzkarte, 44,90 Euro Galileo Design ISBN 3-89842-221-6 |
| Kapitel 25 Flash undokumentiert
|  | 25.1 Werkzeuge
|  | 25.2 ActionScript
|  |  | 25.2.1 Textfelder
|  |  | 25.2.2 Speichern von Daten
|  |  | 25.2.3 Prototypenbasierte Objektorientierung mit ActionScript 1
|  |  | 25.2.4 ASnative
|  | 25.3 Ostereier
|  |  | 25.3.1 Gary´s car jump
|  |  | 25.3.2 Goldrush
|  |  | 25.3.3 Spielesammlung in Flash MX
|  |  | 25.3.4 Noch mehr Ostereier mit Flash MX 2004
## 25.2 ActionScript Die meisten versteckten Funktionen bietet in Flash sicher die eingebaute Programmiersprache ActionScript. Wussten Sie z.B., dass sich in Pfadangaben zu Movieclips anstelle von _level0 auch die Eigenschaft _flash verwenden lässt? Von eher geringem Nutzen ist, dass Sie mit der Aktion getURL wie mit loadMovie Flash-Filme laden können: getURL ("meinFilm.swf", "_level1"); lädt zum Beispiel eine neue SWF-Datei in die Stufe 1 (engl. Level 1). ### 25.2.1 Textfelder ##### Auf Änderungen in Textfeldern reagieren Es ist sehr nützlich, dass es bereits seit längerem einen Weg gibt, auf Texteingaben durch die Benutzer zu reagieren. D.h. wenn der Benutzer ein Textfeld ändert, können gezielt Aktionen ausgeführt werden. Alles, was man dafür braucht, ist ein Textfeld, das mit einer Variablen verbunden ist, und ein Schlüsselbild in derselben Zeitleiste mit der Bildbezeichnung variablenname_changed. ##### text changed.fla Das Entscheidende ist die Zeichenkette _changed direkt hinter dem Variablennamen des Textfeldes in der Bildbezeichnung. Alle Aktionen, die in diesem Bild liegen, werden ausgeführt, sobald ein Anwender den Inhalt des Textfeldes verändert. In unseren Tests erwies sich diese undokumentierte Funktion aber zu Recht als undokumentiert: Zahlreiche Abstürze verhinderten allzu oft den Einsatz, so dass die moderneren Ereignismethoden und Listener sicherlich die bessere Wahl sind (siehe »Ereignisse« ab Seite 282). ### 25.2.2 Speichern von Daten

Tabelle 25.1 Lokal Daten mit Flash speichern

Anweisung/Objekt | Entwicklungsumgebung | Player | Bemerkung
Cookie | Flash 5 oder neuer | Flash 5 oder neuer (nur in der Entwicklungsumgebung) | undokumentiert
dashBoardSave | nur Flash 5 | nur Flash 5 (nur in der Entwicklungsumgebung) | undokumentiert
fscommand save | nur Flash 5 | nur Flash 5 (nur im Stand-alone-Player) | undokumentiert
SharedObject | Flash MX oder neuer | Flash Player 6 oder neuer | Von Macromedia empfohlene Methode, um Daten zu speichern.
##### Cookie-Objekt Bei einer undokumentierten Entdeckung ist Ernüchterung aufgekommen. Das Cookie-Objekt bietet einen sehr beschränkten Nutzen, da es sich nicht im Webbrowser nutzen lässt. Das Cookie-Objekt funktioniert nur innerhalb der Entwicklungsumgebung: Mit meineVariable = Cookie.getCookie(); wird das Cookie als XML-Objekt geladen. Mit Cookie.setCookie(daten); wird ein XML-Objekt oder eine Zeichnkette gespeichert. Das dazugehörige Cookie findet sich im Unterordner Mmfdata innerhalb des Flash-Programmordners wieder (seit Flash MX findet sich dieser Ordner innerhalb der Anwendungsdaten, also z.B. unter C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\Macromedia\Flash MX\Configuration\Mmfdata). Der Dateiname wird abhängig von der Flash-Anwendung automatisch generiert. Übrigens speicherte das Macromedia Dashboard in Flash 5 die Benutzereinstellungen mit der ebenfalls undokumentierten Anweisung dashBoardSave auf eine ähnliche Art und Weise. Da das Cookie-Objekt nicht von Macromedia dokumentiert ist, kann die Funktionstüchtigkeit nicht garantiert werden. Nicht zuletzt aus diesem Grund sollten Sie – falls möglich – auf das leistungsfähigere und flexiblere SharedObject-Objekt zurückgreifen, das seit Flash MX und dem Flash Player 6 unterstützt wird. ##### Undokumentierte Objekte in ActionScript 2 Die meisten der undokumentierten Befehle und Objekte sind von Macromedia nicht korrekt deklariert worden, so dass eine typsichere Verwendung oder die Benutzung in ActionScript 2.0 meist zu einem Compiler-Fehler führen. Dies kann aber mit Hilfe einer selbst geschriebenen Klasse wie hier am Beispiel des Cookie-Objektes leicht gelöst werden:
    intrinsic class Cookie {
     static function getCookie():XMLNode;
     static function setCookie(data:XMLNode);
    }
##### dashBoardSave Der Befehl dashBoardSave(objekt, dateiname); speichert Zeichenketten oder Movieclips in der angegebenen Datei. Der dashBoardSave-Befehl funktioniert nur innerhalb der Entwicklungsumgebung und nicht im Webbrowser. Außerdem scheint dieser Befehl seit Flash 6 ignoriert zu werden. ##### fscommand save Das fscommand ("save", "meineDatei.txt"); speichert alle Variablen der Hauptzeitleiste in der angegebenen Datei. D.h. um gezielt Variablen und deren Werte zu sichern, müssen diese recht unkomfortabel in der Hauptzeitleiste abgelegt sein. Der save-Befehl funktioniert nur außerhalb der Entwicklungsumgebung und nicht im Webbrowser. Außerdem wird dieser Befehl seit Flash 6 ignoriert. Alternativ gibt es noch den ein oder anderen Trick, um mit Hilfe des fscommand exec-Daten zu speichern. Aber auch dies beschränkt sich auf einige wenige Plattformen und Flash-Versionen, weshalb besser auf Zusatzprodukte oder das SharedObjekt zurückgegriffen werden sollte. ### 25.2.3 Prototypenbasierte Objektorientierung mit ActionScript 1 Immer öfter finden sich Tipps zur objektorientierten Programmierung mit Flash im Internet, denn immer mehr Entwickler erkennen die Vorteile dieses Programmierstils. Grundlegende Informationen werden häufig auf Seiten zu JavaScript beschrieben, da die Objektorientierung – um genau zu sein die prototypenbasierte Entwicklung – hier sehr ähnlich zu ActionScript 1 erfolgt. Eine interessante Gegenüberstellung von »echter« Objektorientierung und den Prototypen findet sich übrigens direkt beim Erfinder von JavaScript unter http://developer.netscape.com:80/docs/manuals/communicator/jsobj/contents.htm. Hier wird auch das Thema der Vererbung anschaulich an Angestellten und Arbeiterbienen illustriert. Neben den Eigenschaften prototype (bei Prototypen) und __proto__ (bei Instanzen), die jeweils den Zugriff auf hinzugefügte Eigenschaften und Methoden steuern, gibt es auch noch die undokumentierte Eigenschaft constructor, die denselben Inhalt erhält wie die ebenfalls undokumentierte Eigenschaft __constructor__ (siehe »Vererbung«, Seite 350). Mit Hilfe dieser Eigenschaft kann der Prototyp, also die Konstruktorfunktion einer Instanz ermittelt und erneut verwendet werden:
    function MeineKlasse () {
       this.eigenschaft="Wert";
    }

    meineInstanz=new MeineKlasse();
    // Erzeuge eine neue Instanz basierend auf "meineInstanz"
    meineZweiteInstanz=new meineInstanz.constructor();
Aufgrund eines Fehlers in der Eigenschaft constructor kann diese in Flash 5 aber leider nicht verwendet werden, um herauszufinden, ob eine Instanz zu einem Prototypen gehört. Anstelle dessen sollten Sie den Vergleich meine Instanz.__proto__ == DeineKlasse.prototype verwenden. Seit Flash MX ist dieses Problem aber behoben. ### 25.2.4 ASnative Wem all die Funktionen in ActionScript inklusive der undokumentierten nicht ausreichen, der kann sein Glück mit ASnative versuchen. Dabei handelt es sich um den direkten Aufruf von Funktionen im Flash Player. Die Funktionen im Flash Player werden dabei über zwei Parameter wie in einer Matrix angesprochen. Für die Aktion trace steht z.B. die Position (100, 4) in der Matrix: ASnative(100,4)("Heppa");, sollte also den Text »Heppa« im Ausgabefenster anzeigen. Meistens weist man aber den Funktionsaufruf einfach einer Variablen zu, wodurch die Verwendung etwas gewöhnlicher aussieht:
    meinTrace = ASnative(100,4);
    meinTrace("Heppa");
Interessant sind die mit ASnative erreichbaren Funktionen, die Flash zum Teil alleine nicht bietet. Dazu zählt z.B. das Abfragen der mittleren und rechten Maustasten unter Windows. Das folgende Skript erstellt ein eigenes Maus-Objekt, mit dem sich die Zustände (gedrückt oder losgelassen) der einzelnen Maustasten ermitteln lassen:
    myMouse = new Object();
    myMouse.isLeftMouseDown = function() {
       return ASnative(800, 2)(1);
    };
    myMouse.isMiddleMouseDown = function() {
       return ASnative(800, 2)(4);
    };
    myMouse.isRightMouseDown = function() {
       return ASnative(800, 2)(2);
    };
    my_mc.onEnterFrame = function() {
       this.output = "";
       this.output += "Left   : "+myMouse.isLeftMouseDown()+"\n";
       this.output += "Middle : "+myMouse.isMiddleMouseDown()+"\n";
       this.output += "Right  : "+myMouse.isRightMouseDown();
    };
Eine Liste der möglichen Funktionsaufrufe mir ASnative und weiteren undokumentierten Funktionen finden Sie u.a. bei http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASNative . ##### Wie finde ich Geheimnisse in Flash? Die erste Anlaufstelle zum Aufspüren unbekannter Funktionen sollte die Macromedia-Website sein. Im Support-Bereich (www.macromedia.com/support/flash) veröffentlicht Macromedia regelmäßig neue Tutorials, Erklärungen zu unbekannten oder wenig dokumentierten Befehlen und natürlich auch Updates, die wiederum neue Funktionen beinhalten können. Hier finden sich auch Links zu überarbeiteten Versionen der Flash-Handbücher mit vielen neuen Befehlen. Die beste Quelle für eine aktuelle Dokumentation sind jedoch die – leider nur englischsprachigen – Livedocs unter http://livedocs.macromedia.com. Aber nicht alles findet man direkt bei Macromedia. Für die wirklichen Geheimnisse sollten Sie die zahlreichen Foren rund um Flash aufmerksam und regelmäßig lesen. Im englischsprachigen Bereich gehört hier sicher http://www.ultrashock.com mit zu den ergiebigsten Quellen. Ein weiterer Tipp ist die Mailingliste unter http://chattyfig.figleaf.com. Aber auch im deutschsprachigen Raum werden viele dieser Forschungsergebnisse in Foren wie http://www.flashforum.de gesammelt und diskutiert.
<< zurück | <top> | vor >>
Zum Katalog
ActionScript 1 und 2 bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| Einstieg in ActionScript
| Einstieg in Flash 8
| Flash 8 und PHP
| Flash 8-Tutorials
| Dreamweaver 8
| Webseiten programmieren und gestalten
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Design]
Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de