Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative

 << zurück
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/)
Objektorientierung und Codedesign mit Flash MX 2004
Buch: ActionScript 1 und 2

ActionScript 1 und 2
672 S., mit CD, Referenzkarte, 44,90 Euro
Rheinwerk Design
ISBN 3-89842-221-6
gp Kapitel 25 Flash undokumentiert
  gp 25.1 Werkzeuge
  gp 25.2 ActionScript
    gp 25.2.1 Textfelder
    gp 25.2.2 Speichern von Daten
    gp 25.2.3 Prototypenbasierte Objektorientierung mit ActionScript 1
    gp 25.2.4 ASnative
  gp 25.3 Ostereier
    gp 25.3.1 Gary´s car jump
    gp 25.3.2 Goldrush
    gp 25.3.3 Spielesammlung in Flash MX
    gp 25.3.4 Noch mehr Ostereier mit Flash MX 2004


Rheinwerk Design - Zum Seitenanfang

25.2 ActionScript  downtop

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).


Rheinwerk Design - Zum Seitenanfang

25.2.1 Textfelder  downtop

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).


Rheinwerk Design - Zum Seitenanfang

25.2.2 Speichern von Daten  downtop


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.


Rheinwerk Design - Zum Seitenanfang

25.2.3 Prototypenbasierte Objektorientierung mit ActionScript downtop

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.


Rheinwerk Design - Zum Seitenanfang

25.2.4 ASnative  toptop

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
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 1 und 2
ActionScript 1 und 2
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag 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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern