AnimateCC Basic Actionscript 2 Actionscript 3 AnimateCC Canvas Shortcuts Video
mail@pastorpixel.de | http://www.pastorpixel.de | meine Flash Seite | Download | Forum
Die Flash Tutorials bestehen aus einigen Seiten. Flash Basic oder Flashtipps für Anfänger, Flash Actionscript mit ca 130 Flashbeispielen als fla-Datei auch zum Download und Shortcuts. Die Flash Tuts für ältere Versionen werden nicht mehr aktualisiert. Hier geht es in erster Linie um Actionscript 1 einige Neuerungen in Actionscript 2 und ich habe auch schon angefangen mit Actionscript 3. Die Tipps werden mit meinem Wissensstand aktualisiert.
Der größte Teil dieser Flash Tipps ist in den SWF-Beispielen enthalten. Die Flash swf- Beispiele stehen auch als Flash fla- Dateien zum Download bereit. In den fla-Dateien, sind die einzelnen Seiten als Szenen angelegt. Die meisten Flash Aktionen kann man aus den SWF-Beispielen kopieren und im Aktionenfenster einfügen. Es sind über 130 Beispiele die im Durchschnitt aus ca. 10 Einzelseiten bestehen. Das sind ca. 1300 Beispielseiten. Hinzu kommen die fast 40.000 Wörter dieser beiden Seiten und die zahlreichen Beispiele und Erklärungen unter Actionscript 3.
Ich arbeite als freischaffender Webdesigner, denken Sie an mich, wenn ein Auftrag zu vergeben ist. Tel: 0231 20 24 93 mail@pastorpixel.de
Wieviel sind Ihnen die Tutorials wert?Vielleicht möchten sie sich erkenntlich zeigen und etwas dafür zurückgeben? Die Höhe des Betrags ist nicht entscheidend auf die Geste kommt es an.
Wenn sie meine Tipps auf kostenpflichtigen Webseiten, CDs oder Büchern gesehen haben, schicken sie mir bitte eine Email und verlangen sie ihr Geld zurück. Denn dann wurden meine Flash Tipps widerrechtlich und ohne mein Wissen veröffentlicht. |
|
Anfänger sollten die Beispiele von oben nach unten bis zum Ende von Grundlagen Programmierung lernen. Verweise auf schwierigere Themen kann man anfangs überschlagen. Auch die mit einem * versehenen Themen kann man später lernen. Im Beispiel Variablen und If-Else, for Schleife sollte man zumindest die ersten paar Seiten vor dem zweiten Abschnitt studieren. Die nachfolgenden Themen ab dem 4ten Abschnitt kann man dann je nach Interesse erkunden. So ist beispielsweise das Thema programmierte Bewegung die ideale Fortsetzung zum Thema Drag Movie und Eigenschaften von Filmsequenzen verändern. Ganz unten sind ein paar Schritt für Schritt Anleitungen, die man nach den Grundlagen machen kann. |
Html World eine Einführung zum Thema Actionscript
Autor: Michael Albers
BuchtippsDie ultimativen Buchtipps von mir, schaut euch meine Vorschläge an.. |
Thanks für jeden Cent. |
Das folgende Flashbeispiel ist der ideale Einstieg in die Thematik Actionscript
Actionscript ist eine Programmiersprache. Programmiersprachen senden Informationen an den Computer und empfangen Informationen vom Computer. Im Gegensatz zur menschlichen Sprache, musst du in einer Programmiersprache an jedes Detail denken, so wie man mit einem kleinen Kind spricht.
Beispiel SWF anschauen oder download actionGrundlagen.fla
Beispiel SWF anschauen oder download actionGrundlagen.fla
Aktionen, Actions, Actionscript
Swf
Beispielfilm laden
oder download
actions.swf
In AS1 und AS2 gibt es drei Möglichkeiten eine Aktion zuzuweisen, achte auf die Titelzeile des Aktionenfensters:
Das Aktionen bedienfeld ruft man auf über eine der folgenden Möglichkeiten:
Man kann außerdem die Programmierung in Actionscirptdateien auslagern. mehr dazu
in den einzelnen Flash Versionen.
Diese Tipps werden ständig erweitert. Ich kann jedoch nicht, bei jeder neuen Version, alle Flashbeispiele neu erstellen. Daher hier einige Anmerkungen. Im Zusammenhang mit dem Aktionenfenster erwähne ich öfter die Unterscheidung von Normalmodus und Expertenmodus. Hierbei handelt es sich um eine Einstellung von Flash5 und FlashMX. In Flash 8 klickt man stattdessen auf Skripthilfe, um diesen hilfreichen Eingabeeditor zu bekommen. In Flash MX 2004 besteht diese Möglichkeit nicht. Danke Macromedia, dass diese Möglichkeit ab Flash 8 wieder eingeführt wurde.
Die deaktivierte Scripthilfe von Flash 8 nannte sich in Flash5/Flash MX Expertenmodus. Hier kann man per Texteingabe programmieren. Es besteht auch die Möglichkeit das Script mit Strg C zu kopieren und Strg V einzufügen. Hat man Codehinweise aktiviert erscheint nach Eingabe gewisser Codefragmente automatisch ein Flyoutmenü, aus dem man weitere Optionen auswählen kann. Man kann auch eine Aktion aus dem linken Menü auswählen und doppelklicken, um sie im Scriptfenster einzufügen. 2 weitere nützliche Buttons sind Syntax überprüfen (ein Ausgabefenster weist auf eventuelle Fehler hin) und AutoFormat (die Actions werden übersichtlich formatiert, fehlende Strichpunkte werden hinzugefügt)
Mit aktivierter Scripthilfe oder Normalmodus wählt man eine Aktion aus einem der
Ordner (links) aus und klickt sie entweder doppelt an oder wählt
das + Zeichen. Mit dem - Zeichen oder der Entf Taste kann man sie wieder
löschen. Die Ordner kann man ein- und ausblenden über den kleinen
Pfeil auf der vertikalen Leiste zwischen beiden Bereichen.
Die zugewiesene Aktion erscheint im Bedienfeld rechts, dort kann man sie
durch Anklicken auswählen und oben im Bedienfeld weitere Einstellungen
vornehmen. Dieser Parameterbereich befindet sich in Flash 5 unten. Deswegen
werden Hinweise darauf in diesem Tutorial mit oben/unten gekennzeichnet. Die SWF Beispielfilme habe ich diesbezüglich nicht
geändert.
Suchen/ Ersetzen Ab Flash MX hat man nun auch die Möglichkeit nach Code zu suchen und automatisch zu ersetzen, (Lupensymbol oben).
Referenzen/ Hilfe Hier werden alle Actions erklärt. Flash 8< klicke auf ?, Flash MX > klicke auf das Buchsymbol. Wähle eine Aktion im linken Bereich der Aktionenfensters aus und klicke dann auf den Button, um die entsprechende Hilfe anzuzeigen.
Zielpfad einfügen (Zielscheibensymbol) Alle Instanzen des Flashfilms können hiermit auf einfache Art referenziert werden. Siehe dazu Instanzen referenzieren
Zum Testen der Aktionen wählt man im Menü:
oder klickt Strg Enter.Hilfefenster Die Schriftgröße im Hilfefenster unter Windows ändert man folgendermaßen: irgendeinen Text im Hilfefenster markieren, Strg Taste drücken und Mausrad drehen. Andere Möglichkeit, die auch im Mac funktioniert, man ändert die Schriftgröße im Browser. ACHTUNG ! danach Flash neu starten.
Flash zeigt Codehinweise an, wenn sie Instanzen mit dem entsprechenden Suffix benennen:
Geben sie beim Benennen einer Movieclip-Instanz immer das Suffix _mc
ein, wie z. B. screen_mc.
Verwenden sie für das Benennen von Schaltflächen das Suffix
_btn.
Verwenden sie für das Benennen von Textfeldern das Suffix _txt.
Hier eine Liste aller Suffixe die Codehinweise auslösen.
Codehinweise erweitern
Im Installationsverzeichnis von Flash die Datei:
de/first run/actionsPanel/actionscript_3/ActionsPanel_3.xm
sind diese Anhänge und Codehinweise hinterlegt. Zum Beispiel mit folgender Zeile:
<typeinfo pattern="*_mc" object="flash.display.MovieClip"/>
Diese Datei kann man erweitern, um Codehinweise anzuzeigen, die noch fehlen, beispielsweise für Boolean oder Number. Vorschlag: _boo für Boolean, _num für Number
<typeinfo pattern="*_boo" object="Boolean"/>
<typeinfo pattern="*_num" object="Number"/>
Man kann Variablennamen suffixe anhängen, um Codehinweise zu erhalten. Allerdings habe ich den Eindruck, dass das in neueren Flashversionen nicht mehr funktioniert.
Anhang / Endung | Datentyp |
---|---|
_mc | MovieClip |
_array | Array |
_str | String |
_btn | Button |
_txt | TextField |
_fmt | TextFormat |
_date | Date |
_pj | PrintJob |
_err | Error |
_cm | ContextMenu |
_cmi | ContextMenuItem |
_xml | XML |
_xmlnode | XMLNode |
_xmlsocket | XMLSocket |
_color | Color |
_cam | Camera |
_mic | Microphone |
_ns | NetStream |
_nc | NetConnection |
_so | SharedObejct |
_sound | Sound |
_video | Video |
_lc | LocalConnection |
Aufrufen des Aktionen Fensters: rechte Maustaste, Eigenschaften, Aktionen
Im sich öffnenden Fenster erscheinen die Aktionen durch Anklicken
des + Zeichens oben links.
Hat man eine Aktion ausgewählt, kann man rechts weitere Optionen
einstellen.
Bei einigen Aktionen erscheint ein Button für literal und einer für Ausdruck (ein button mit
= Zeichen) Dort kann man auch den Ausdruck Editor aufrufen, wo man Actionscript
per Tastatur eingeben kann oder durch Doppelklick auf die unten aufgelisteten
Scriptelemente.
Filmsequenzen kann man in Flash 4 keine Aktionen zuweisen !!
Flash began als Animationsprogramm und wurde dann zu einem komplexen Multimediatool weiterentwickelt. Deswegen gibt es die Möglichkeit Aktionen in Schlüsselbildern der Zeitleiste einzufügen. Das bedeutet das diese Aktionen nach Ablauf einer gewissen Zeit ausgeführt werden. Eine anderer Möglichkeit ist Aktionen ereignisgesteuert auszuführen. Für fast alle Objekte gibt es Ereignisse, die zu bestimmten Zeitpunkten und unter gewissen Vorausetzungen ausgeführt werden.
Siehe auch Event Listener in AS3
Lese auch die Seite von Adobe: Verhalten in Actionscript und Ereignisprozedurmethoden verwenden
Ein Event Handler ist
ein Ereignis Behandler, der bestimmt, durch welches Ereignis die Aktion
ausgeführt wird. Mit jeder neuen Version von Flash kamen auch neue Event Handler hinzu. In Flash4 gab es nur Event Handler für Schaltflächen. In Flash 5 konnte man Event Handler Schaltflächen und Filmsequenzen zuweisen. Mittlerweile gibt es auch Event Handler, die nach Abspielen eines Sounds oder nach einem Ladevorgang ausgeführt werden. In Schlüsselbildern braucht man keine Event Handler, da die Aktionen ausgeführt werden, sobald das Schlüsselbild aufgerufen wird. Während man in Flash 5 und in Flash MX die Aktionen den Schaltflächen Filmsequenzen direkt zuwies, hat sich ab Flash MX 2004 eine andere Schreibweise eingebürgert. Siehe Aktionen SWF Beispiel.
Mit aktivierter Scripthilfe / Normalmodus wählt man die Schaltfläche oder die Filmsequenz aus und wählt im Aktionenfenster die gewünschte Aktion durch Doppelklick aus. Ein Event Handler wird automatisch zugewiesen.
Klickt man den Event Handler an, z.B. on(release),
so kann man oben (Flash MX/Flash8) oder unten (Flash 5) einen oder mehrere andere
Event Handler auswählen. Besonderheit: Einer Schaltfläche kann
man den Event Handler Tastendruck
zuweisen.
Ab Flash 5 kann man auch folgende Methode wählen. Man wählt die Schaltfläche oder den Movieclip auf der Bühen aus und vergibt im Eigenschaftenfenster einen Instanznamen. Dann klickt man in ein Schlüsselbild der Zeitleiste und vergibt dort die Event Handler und die Aktionen für diese Instanz.
this.my_btn.onRelease = function() {
my_str = "blabla";
};
Man findet diese Event Handler unter Actionscrip2Klassen, Movieclip (oder Film), Button (oder Schaltfläche) oder Movieclip, Ereignisbehandler oder EventHandler
Man kann auch mehrere Event Handler zuweisen:
this.my_btn.onRelease =this.my_btn.onReleaseOutside = function() {
my_str = "blabla";
};
Die Auwahl der Instanz kann man im Aktionenfenster über das Symbol welches aussieht wie eine Zielscheibe machen.
Die Eventhandler werden den Instanzen der Schaltflächen vergeben nicht in den 4 Bildern der Schaltflächen, Aktionen aus diesen Bildern werden ignoriert, sie haben dort nichts zu suchen. Instanz einer Schaltfläche aus der Bibliothek irgendwo einfügen, Instanz anklicken, Aktion zuweisen. Es folgen die wichtigsten Event Handler, (oder siehe oben)
Tastendruck, Keystroke Ereignisse auf Tastendruck (Beispiel Fla Datei downloaden)
Ereigenisse auf Tastendruck steuert man am besten mit Ereigenis Listenern.
Es besteht aber auch noch folgende ältere Möglichkeit:
Platziere eine Schaltfläche auf der Bühne und weise dieser den Event Handler keystroke oder Tastendruck zu.
Einige Besonderheiten sind zu beachten:
Ab Flash MX kann man auch ein Key-Object erzeugen, siehe dazu den Tipp Tastaturbefehle. und den Tipp onSetFocus, der Ereignisse bei der Auswahl von Textfeldern liefert.
Mittels enabled kann man Instanzen von Schaltflächen deaktivieren. Vergebe im Eigenschaftenfenster einen Instanznamen für eine Schaltfläche. z.B.: meinButton
über folgende Action kann man diese Instanz deaktivieren, so dass auch der Handcursor über dem Button verschwindet.
meinButton.enabled=false;
meinButton.enabled=true;
Mit "true" wird der Button wieder aktiviert. Ein praktisches Beispiel mit verschiebbaren Fenstern findet man im Beispiel "Drag Movieclip, Objekte verschieben" auf den letzten 3 Seiten des swf-Beispiels. Dort wird jeder Button, der von einmem Fenster verdeckt wird, deaktiviert. Ohne diese Deaktivierung, würde der Handcursor über den Buttons erscheinen, obwohl die Buttons vom darüberliegendem Fenster verdeckt werden.
die Aktionen hängen nicht vom User ab (kein Event Handler), sondern werden ausgeführt sobald das entsprechende Schlüsselbild erreicht wird. Schlüsselbilder mit Aktionen sollten eine eigene Ebene bekommen, das schafft Übersichtlichkeit.
Ab FlashMX kann man Filmsequenzen auch die Event Handler von Schaltflächen zuweisen. Gehe dazu in den Expertenmodus. Der Event Handler von Filmsequenzen beginnt mit onClipEvent der Event Handler von Schaltflächen beginnt mit on.
Diese Funktion aktualisiert den Bildschirm, auch zwischen zwei Frames. Wenn eine Aktion ausgeführt werden soll, die schon sichtbar ist, bevor das nächste Bild geladen ist. Man kann diese Funktion vor allen Dingen in Zusammenhang mit dem Event Handler onMouseMove einsetzen.
Durch den EventHandler onEnterFrame wird eine Anweisung mit der Bildlaufrate des Films ausgeführt. Will man die Anweisungen stoppen, so kann man mittels delete den EventHandler vernichten.
meinMC.onEnterFrame = function() {
q._x++;
};
Ausführung stoppen
delete meinMC.onEnterFrame;
siehe auch Funktionen
Beispiel SWF anschauen oder download updateAfterEvent().fla NEU
Man findet die Action im Aktionebedienfeld im Ordner
Beispiel SWF anschauen oder download mausScroll().fla Flash8 NEU
Diese Thema kann man als Anfänger erstmal überschlagen.
Auf Windowsrechnern kann man in Flash auch das Scrollrad der Maus benutzen und das nicht nur in Textfeldern, sondern man man kann auch Movieclips bewegen oder andere Eigenschaften verändern. Man benötigt dazu ein Listener Objekt. Dieses Thema ist für Anfänger ein bisschen schwierig.
Textfelder brauchen eigentlich nur die Option
. Ziehe ein Textfeld auf, wähle im Eigenschaftenfenster die Option "dynamisch" und "mehrzeilig" und "auswählbar". Wähle oben im Menü: Nun hat man einen schwarzen Anfasser unten rechts, mit dem man die Größe des Textfeldes aufziehen kann. Füge deinen Text ein und teste oder veröffentliche den Film.
hier werden folgende aktionen erklärt:
onMouseWheel(), addListener(), removeListener(),
Beispiel SWF anschauen oder download listener.fla NEU
Diese Thema kann man als Anfänger erstmal überschlagen.
siehe hierzu auch die Infos von Adobe zum Listener Objekt
hier werden folgende Themen erklärt:
addListener(), removeListener(),
In Actionscript 3 werden Ereignisse auch mit Listeneren überwacht. Siehe dazu die Livedocs. Eine gewisse Verwandschaft zu den Listenern der UI Komponenten in Flash 8 ist zu erkennen.
Beispiel SWF anschauen eventObject.swf
Mit den Aktionen Stop, Play, Goto kann man die Zeitleiste des Hauptfilms oder eines Movieclips steuern.
Wenn man eine Aktion einem Schlüsselbild zuweist, wird die Aktion
ausgeführt, sobald das Schlüsselbild in der Zeitleiste erreicht
wird. Die Aktionen beziehen sich auf die eigene Zeitleiste wenn nichts
anderes angegeben ist, z.B. durch die Aktion gotoAndStop(1), geht der
Abspielknopf zum ersten Bild der Zeitleiste in der sich das Schlüsselbild
befindet und bleibt dort stehen.
Auch bei Schaltflächen beziehen sich die Aktionen auf die Zeitleiste,
in welcher die Schaltfläche eingefügt wurde.
Anders jedoch bei Filmsequenzen, dort ist die Zeitleiste der Filmsequenz
gemeint, der die Aktion zugewiesen wird. Um bei oben aufgeführten
Beispiel zu bleiben, die Aktion gotoAndStop(1); bezieht sich auf die Zeitleiste
der Filmsequenz, der die sie zugewiesen wird, es sei denn man bestimmt die Zeitleiste. Siehe dazu Instanzen ansprechen.
Film anhalten mit der Action Stop
Film abspielen lassen mit der Action Play
Es ist auch möglich die Zeitleisten von Movieclipinstanzen anzusteuern.
siehe auch Navigation
Spezial für kompliziertere Konstellationen
Aktion wählen Get Url doppelklicken
Action:
getURL(Url, target, Variablenversenden);
Beispiel:
getURL("http://www.pastorpixel.de", "_blank", "GET");
Url relative oder absolute URL Adresse in Anführungsstrichen ( auch String genannt)
target Framefenster/ String, optional (muss nicht vergeben werden)
Variablen mit post oder get versenden/ String, optional
Url: Seite (z.B. index.htm) eintragen, es gelten die gleichen Gesetze
wie in Html, also egal ob relativ oder absolut referenziert. Kein Haken
bei Ausdruck.
Fenster: Namen des Framefensters eingeben, oder einen der Befehle
aus der drop down Liste einfügen. Kein Haken bei Ausdruck. Das
Feld Fenster hat die Bedeutung des html Befehls: target
Variablen: hat für "normale" links auf Html-Seiten keine Bedeutung
und kann getrost auf nicht versenden stehen. Hast du schon mal mit einem Formular auf einer Html Seite Eingaben aus Textfeldern, dropdownMenues, Radiobuttons, etc. verschickt? Da hat man auch die Möglichkeit Variablen (Namen der Textfelder etc.) per post oder get zu verschicken. Genauso funktioniert das in Flash. Alle Variablen, die im Flashfilm (auf der entsprechenden Zeitleiste) definiert sind, werden versendet, wenn die Option get oder post ausgewählt ist. Die Variablen können im Actionfenster definiert sein oder ihre Werte aus Texteingabefeldern bekommen. Siehe dazu auch Email-Formular per CGI Wenn die Variablen mit get versendet werden, werden sie an die Url angehängt. Das kannst du in der Adresszeile des Browsers sehen. z.B.:
meineVariable=23, meineSeite.php
So sieht das dann Browserfenster aus.
meineSeite.php?meineVariable=23
(schon wieder diese 23 ?!!!??)
Selbstverständlich kann man auch mehrere Seiten in verschiedenen Framefenstern aufrufen, indem man den Befehl Get Url öfters wählt.
Ab Flash 8 gibt es neue Sicherheitseinstellungen, die dazu führen, dass das Zielfenster in Framesets offline nicht erkannt wird. Stattdessen geht die Seite im neuen Browserfenster bzw. Tab auf. Näheres zu den Sicherheitseinstellungen hier:
http://livedocs.adobe.com
Zum einen kann und und muss man in den "Einstellungen für Veröffentlichungen" angeben ob eine Datei lokal oder aufs Netzwerk zugreift. Will man dass die Datei beides darf muss der User der Datei oder dem Ordner, in dem sie sich die Flashdatei befindet explizit die Erlaubnis erteilen. Das macht er über das Kontextmenü des Flashplayers "Einstellungen", dann "Erweitert" man gelangt auf eine Webseite und wählt dort "globale Sicherheitseinstellungen".
Das müsste diese Seite sein.
http://www.macromedia.com/support/do...manager04.html
Auf dieser Seite stellt man die Sicherheitseinstellungen für den eigenen Flashplayer ein.
Dort wälhlt man "Bearbeiten/ Hinzufügen" und sucht den Ordner aus, in dem sich die Flashdatei befindet. Erst dann funktioniert der stinknormale Target Befehl in Framesets auch offline, sowohl für interne als auch externe Seiten im Netz.
Super Sicherheit, echt benutzerfreundlich. Vielleicht gibt es noch eine bessere Lösung...?
Dieser Tipp ist nur für Windows Rechner.
Man hat mit Flash die Möglichkeit eine Standalone Application zu erstellen. Also ein Programm, welches man beispielsweise für CD Präsentationen einsetzt. (Datei / Einstellungen für Veröffentlichung / Windows Projector). Über fscommand kann die Anwendung im gesamten Fenster laufen. Hat man in einer solchen Anwendung einen getUrl Befehl, um einen Seite im Browser zu öffnen, so hat man ein Problem. Aber dank eines hilfreichen Menschen, kann man mit dem dem "Unilauncher" dieses Problem lösen. Die letzte Version unilauncher2.2 (aug 07) findet man auf Seite 12. Mit dem Unilauncher lassen sich auch beliebige Dateien öffnen.
(Beispiel
Fla Datei downloaden)
Beispiel SWF anschauen oder download loadMovie.fla NEU
loadMovie(url, stufe/ziel)
loadMovie(url, stufe/ziel, variablen)
Mittels loadMovie() hat man die Möglichkeit Inhalte auf mehrere swf Filme zu verteilen und diese in den Hauptfilm zu laden.
Dadurch kann man die Ladezeit reduzieren, indem nur das geladen wird, was auch aufgerufen wird. So ließe sich beispielsweise auch ein Hintergrundsound nachträglich laden.
Wenn alle Inhalte sowieso geladen werden sollen, macht es meiner Ansicht nach keinen Sinn, sie auf mehrere SWF Dateien zu verteilen. Eine Übersicht im Film kann man auch mit Szenen oder MCs erreichen.
Am Besten das importierte movie hat die gleiche Größe, andernfalls wird es in der linken oberen Ecke positioniert.
Der loadMovie Befehl wird asynchron ausgeführt. Das heißt er wird erst dann ausgeführt, wenn alle anderen Befehle im Bild abgearbeitet sind.
url
Der erste Parameter der Funktion, ist die Url oder der Pfad zum swf Film. Wie auch in Html kann der Pfad relativ oder absolut sein.
loadMovie("meinMovie.swf", _level0)
loadMovie("http://www.irgendeineDomain.com/irgendeinMovie.swf", _level0)
loadMovie("file:///meinOrdner/meinMovie.swf", _level0)
Wird der Film in eine Html Datei eingebunden muss man den Pfad von der Html Seite aus gesehen eingeben. Liegen Html-Seite und SWF-Film im gleichen Ordner macht es keinen Unterschied. Nehmen wird an, wir haben eine html Seite und im Ordner namens "swf" liegen alle SWF-Filme, so könnte der Befehl lauten: loadMovie("swf/meinMovie.swf", "_level1");
Der zweite Parameter definiert die Ebene auf die der Film geladen werden soll.
Die Ebenen entsprechen nicht den bekannten Ebenen der Zeitleiste. Die Ebenen haben in Zusammenhang mit Load Movie eine andere Bedeutung. Will man mehrere Filme gleichzeitig laufen lassen, muss jeder Film eine eigene Ebene bekommen. Es kann jeweils nur ein Film in einer Ebene laufen. Ein auf gleicher Ebene geladener Film ersetzt den schon laufenden Film.
loadMovie("meinMovie.swf", "_level1");
loadMovie("meinzweitesMovie.swf", "_level2");
Überschneiden sich Objekte mehrere geladenen Filme liegt der Film mit der
niedrigsten Nummer unten, während die anderen der Reihenfolge nach
darüber liegen. Die Objekte von _level0 werden von den Objekten höher liegender Filme verdeckt.
Sonderfall Ebene0 der ganze Flash Film wird beendet und durch den geladenen
ersetzt. Auch alle Filme, die auf anderen Ebenen liegen werden beendet. Es werden die Proportionen des ursprünglichen Films übernommen.
loadMovie(meinMovie.swf, "_level0");
Achtung!!! Aufpassen!!!
Wenn ein level noch nicht vorhanden ist und man gibt das level ohne Anführungsstriche ein, wird der Film auf _level0 geladen. Deswegen sollte man "_level1" oder "_level2" etc. immer in Anführungsstriche setzen, dann ist man auf der sicheren Seite.
Anstatt Ebene kann man auch Ziel wählen und hier den Instanznamen
einer Filmsequenz angeben.
Die Filmsequenz wird durch den swf Film ersetzt,
Die linke obere Kante des swf movies wird am Mittelpunkt der Instanz ausgerichtet
(zumindest so ungefähr).
Man kann geladene SWF-Filme von anderer Stelle aus ansteuern, um beispielsweise die Zeitleiste anzusteuern.
_level1.gotAndPlay(10);
siehe Tell Target und Instanzen ansteuern, Pfade zu Instanzen und Leveln
Wenn sich der Film auf einer anderen Domain befindet, kann er zwar geladen werden aber er muss erst eine Erlaubnis erteilen, wenn man ihn von einem anderen Level aus steuern will. Siehe dazu dieses swf-Beispiel Seite 5 System.security.allowDomain(domain1, domain2, domain3);
siehe dazu Tipp Preloader
Wenn man den Ladestatus von einem anderen _level aus abfragt, sollte man in dem zu ladenden Film im ersten Bild eine Variable setzen und diese Variable abfragen. Somit wird der Ladestatus erst dann abgefragt, wenn die Kontrollvariable geladen ist. z.B.:
meinMovie.swf lädt den Film meinMovie2.swf auf _level1.
loadMovie(meinMovie2.swf, "_level1");
In meinMovie2.swf befindet sich im ersten Bild die Variable loadKontroll=true
In meinMovie.swf soll der Ladestatus angezeigt werden. Das Script sähe dann so aus.
_root.onEnterFrame = function() {
if (_level1.loadKontroll==true) {
_root.bytesLoaded = (_level1.getBytesLoaded());
}
};
siehe hierzu auch: Variablen, Funktionen, if Bedingungen
unloadMovie(1);
unloadMovie("_level1");
unloadMovie("meinZiel");
Mit der Option "unload Movie" wird der geladenen Film
wieder entfernt, dessen Ebene oder Ziel als Parameter in Klammern eingegeben wird. Die Befehle unloadMovie, und loadMovie werden asynchron ausgeführt, das heißt, nachdem alle anderen Befehle des Bildes ausgeführt wurden.
Unload Movie kann man auch dazu einsetzen, um Movieclip Instanzen zu löschen. Dabei wird der Inhalt gelöscht, die Instanz bleibt aber als leerer Container erhalten, in den sich andere Movies oder Bilder hineinladen lassen, siehe dazu Tipp attach Movie
loadMovie("meinMovie.swf", "_level2", "POST");
loadMovie("meinMovie.swf", "_level2", "GET");
Der dritte, optionale Parameter von loadMovie() bestimmt, ob Variablen mit der Methode POST, oder GET übertragen werden, siehe dazu etwas weiter unten Variablen an Flashmovie übertragen.
Variablen, nicht versenden (Normalmodus)
Wenn weder post noch get angegeben wird, werden die Variablen nicht gesendet.
Siehe auch Variablen aus Textdateien laden
Beispiel
SWF anschauen oder download
senden1.fla, get1.fla, senden1.htm
loadMovieNum ist fast identisch mit loadMovie, einziger Unterschied, hier kann man keine Filme in Movieclipinstanzen laden (ziel). Als Stufe gibt man entweder eine Zahl ein, oder einen String ein, siehe Beispiel:
loadMovieNum("meinMovie.swf", 1);
loadMovieNum("meinMovie.swf", 2);
Man kann auch einen Film auf Level 2 laden, wenn Level 1 noch nicht vorhanden ist.
In diesem swf-Beispiel wird erklärt, wie man Variablen aus einem Flashfilm an den nächsten Film, der mit load Movie geladen wird, überträgt. Dabei spielt es keine Rolle, ob der Film den vorhandenen Film ersetzt _level0 oder in den vorhandenen Film reingeladen wird. _level1, _level2.... siehe Instanzen referenzieren.
Ein anders Thema ist, Variablen an Filme zu übertragen, die in verschiedenen Framefenstern oder Playern laufen, siehe dazu localConnection
Ab Flash MX besteht auch die Möglichkeit jpg Bilder, mp3 sounds
und videos mit der LoadMovie Action zu laden. Dadurch hat man mehr Möglichkeiten
dynamische Filme zu erstellen. Gebe dazu einfach den Namen des Bildes
(meinbild.jpg) und eventuell auch den Pfad zum Bild anstatt den Namen
des swf Films ein.
Beispiel
SWF anschauen oder download
loadjpg.fla, loadjpg2.fla
Voraussetzung um dieses swf-Beispiel völlig zu verstehen, sind die Themen Variable, Instanzen von Filmsequenzen ansprechen und Eigenschaften von Filmsequenzen verändern
Das zweite Beispiel loadjpg2.fla ist für den Anfänger vielleicht ein bisschen schwierig. Es dient dazu Bildgrößen per Actionscript zu bestimmen, auch wenn man nicht weiß, wie groß das geladenen Bild ist.
Beispiel
SWF anschauen oder download
pfade1.fla
Beispiel
SWF anschauen
pfade.fla
oder download pfade1.fla, pfade.fla
Siehe auch diese Seite von Html World Hierarchie eines Flashfilms
Hinweis! Wenn man die Themen dieser Seite der Reihe nach lernt, kann es nicht schaden, an dieser Stelle die Themen Variablen und if-else anzulesen, um die Grundzüge zu verstehen.
Hier geht es darum, die Zeitleiste einer MC
Instanz zu bestimmen, die angesteuert werden soll. Man kann Filmsequenzen in andere Filmsequenzen einbetten (verschachteln) und diese gezielt per Actionscript ansprechen, um beispielsweise deren Zeitleiste zu stoppen oder auch um Eigenschaften der Filmsequenz zu ändern. Auch Filme die
mittels Load Movie geladen wurden
kann man ansteuern.
Beim Testen des Films (Steuerung/ Film testen oder Strg+Enter) kann man sich alle Variablen und Instanzen anzeigen lassen. Drücke
Es gibt verschiedene Möglichkeiten auf die Instanzen von Movieclips oder anderen Symbolen zuzugreifen.
Im Actionfenster gibt es oben ein Symbol in Form einer Zielscheibe. Hier bekommt man alle zur Verfügung stehenden Instanzen, denen man einen Instanznamen zugewiesen hat, aufgelistet. Es gibt 2 Möglichkeiten der Referenzierung "absolut" und "relativ". Durch Auswählen eines Symbols wird eine Referenz auf das Symbol im Actionfenster eingefügt. z.B.:
Object(_root).mein Symbol.
Manchmal ist es erforderlich, dass ein String zu einer Referenz auf ein Symbol ausgewertet wird. Beispielsweise in for-Schleifen. Mittels der eval() Funktion ist das möglich.
eval("_root.meinSymbol")._visible = false;
oder ein Symbol mit dem Instanznamen mc1
eval("this.mc"+1)._alpha = 60;
Eine weitere Möglichkeit bietet der Array Zugriffsoperator:
Object(this)["mc"+1]._alpha = 60;
oder ein MC mit Instanzname mc1 im Hauptfilm
Object(_root)["mc"+1]._alpha = 60;
Wofür braucht man das?
es folgt eine Schritt für Schritt Anleitung
Flash4 ab Punkt9
Beispiel
SWF anschauen
pfade.fla
Siehe auch Flashnavigation mit Prototype
Um allen Missverständnissen vorzubeugen, hier sind nicht die
Ebenen in der Zeitleiste gemeint, die kann und braucht man nicht ansteuern.
Hier geht es darum Instanzen von Filmsequenzen (Movieclips) anzusprechen,
wobei die Filmsequenzen ineinander verschachtelt sein können,
sofern man in einer Filmsequenz eine andere Filmsequenz eingebettet hat.
Dadurch erhält man ein hierarchisches System, wobei die Hauptfilmzeitleiste
die unterste Ebene darstellt. Eine Movieclip Instanz im Hauptfilm läge
somit eine Ebene höher. Eine MC Instanz die in dieser MC Instanz
enthalten ist, läge 2 Ebenen höher.
z.B.
2 Ebenen höher (Schrägstriche) |
/ebene1/ebene2 | eine Filmsequenz, die in einer Filmsequenz liegt, vom Hauptfilm aus ansteuern |
Hauptfilm | _root | ab Flash 5 kann man mit _root die tiefste Ebene also den Hauptfilm ansteuern |
vom Hauptfilm aus absolute Referenzierung (Punktsyntax) |
_root.instanz1.instanz2 | Mit root kann man auch andere Filmsequenzen ansprechen, in diesem Beispiel liegt instanz1 im Hauptfilm während instanz2 in instanz1 integriert ist, diese Referenzierung ist absolut, das heißt, sie kann von jeder beliebigen Ebene oder Filmsequenz aus vorgenommen werden. |
eine Ebene tiefer (Schrägstriche) |
../ebene | 1.) von einer Filmsequenz aus, die im Hauptfilm liegt, den Hauptfilm
ansteuern 2.) von einer Filmsequenz, die in einer Filmsequenz liegt, die Filmsequenz ansteuern, in der die andere eingebettet ist, also die Eltern-Filmsequenz |
eine Ebene tiefer | _parent | ab Flash5 kann man durch _parent eine Ebene tiefer gehen, |
Ab Flash 5 kann man anstatt der Schreibweise mit Schrägstrichen
auch die Punkt Syntax verwenden, das heißt anstatt Schrägstriche
werden Punkte verwendet, genau, wie in Javascript.
Ab Flash8 bzw. Actionscript2 wird keine Schrägstrichsyntax mehr verwendet.
In Flash 5 oder Flash MX kann man den gewünschten Pfad mit dem Zieleditor des Aktionenfenster einstellen. Im Bedienfeld Aktion gibt es ein Symbol, das wie eine kleine Zielscheibe aussieht "Zielpfad einfügen". Nachdem du eine Aktion gewählt hast, klicke zuvor einmal in das Zieleingabefeld und dann auf das Zielscheibensymbol. Es öffnet sich der Zieleditor.
Dort kann man zwischen Punktsyntax und Schrägstrichen wählen, außerdem kann man den Pfad relativ oder absolut angeben. Es gibt hier 2 Aliase _root bedeutet die unterste Filmebene oder Zeitleiste und _parent bedeutet eine Ebene zurück. Hier ein Beispiel folgende Aktion wird einem Movieclip zugewiesen, welcher dann auf Mausklick den Hauptfilm stoppt.
onClipEvent (mouseDown) {
_root.stop();
}
_root bedeutet, wir befinden uns auf der Hauptfilmzeitleiste, die durch
die Aktion stop() gestoppt wird.
Eine Filmsequenz, die in einer Filmsequenz eingebettet ist, könnte
mit _parent die Filmsequenz, die eine Ebene tiefer liegt ansprechen. Anstatt
der Aktion stop() in diesem Beispiel kann beispielsweise auch der Instanzname
einer anderen Filmsequenz hinter _root.
stehen, um diese mit einer folgenden Aktion anzusprechen. Hier ein Beispiel,
wo anstatt, TellTarget die Aktion with verwendet wird.
onClipEvent (mouseDown) {
with (_root.quader) {
gotoAndStop (5);
}
}
Auch diese Aktion wurde einer Filmsequenz zugewiesen. mit with
(_root.quader) wird die Filmsequenz mit Instanznamen "quader"
angesprochen, welche im Hauptfilm eingebettet ist. Alle Befehle zwischen den geschweiften Klammern von with(){} beziehen sich auf die angesprochene Filmsequenz.
Eine andere Schreibweise wäre:
_root.quader.gotoAndStop (5);
siehe Load Movie
Sonderfall! SWF-Filme, die mit der Action Load movieclip geladen wurden, kann man auch ansteuern,
Hier kann man
im Ziel Eingabefeld die Bezeichnungen _level0, _level1, _level2 usw.
angeben, das entspricht den Ebenen der geladene Filme _level0 ist der
Hauptfilm Beispiel
SWF siehe TellTarget
Anstatt _level0 kann man auch _flash schreiben, aber das ist eine undokumentierte
und seltene Schreibweise.
Beispiel:
Wir haben einen swf-Film der mit load Movie auf Stufe 1 geladen wurde und wollen dessen Hauptfilmzeitleiste in Bild 5 stoppen:
_level1.gotoAndStop(5);
Wird der SWF-Film von einer anderen Domain geladen, muss er die Erlaubnis erteilen, bevor man ihn ansteuert. siehe dazu den Tipp: Zugriff erlauben
Beispiel
SWF anschauen oder download properties.fla
mit der Aktion set properties kann man Symbolen bestimmte Eigenschaften
zuweisen, wie z.B. Transparenz, Position, Weite, Höhe, sichtbar /
unsichtbar, Rotation, Instanzname etc. (Beispiel
Fla Datei downloaden)
Action |
Eigenschaft |
Eigenschaft von |
Definition |
---|---|---|---|
MC = Filmsequenz Movie = SWF-Film |
|||
_x |
X Position |
der horizontale Abstand zwischen dem Mittelpunkt einer Filmsequenz und der linken oberen Ecke der Bühne, in Pixeln |
|
_y |
Y Position |
MC |
der vertikale Abstand zwischen dem Mittelpunkt einer Filmsequenz und der linken oberen Ecke der Bühne, in Pixeln |
_width |
Weite |
MC, Movie |
die
Weite eines Objekts in Pixeln |
_height |
Höhe |
MC, Movie |
die Höhe eines Objekts in Pixeln |
_rotation |
Drehung |
MC |
Drehung, Wert in Grad |
_target |
MC |
ermittelt die genaue Schreibweise, die man bei Tell Target einsetzt siehe swf Abfragen |
|
_name |
Name |
MC |
Instanzname wird geändert oder ermittelt |
_url |
MC, Movie |
ermittelt den genauen Pfad zu einem .swf Movie, kann man dazu einsetzen, dass der Flashfilm nur auf dem eigenen Server angezeigt wird, (na ja, wer es braucht) siehe _url überprüfen |
|
_xscale |
Weite |
MC, Movie |
die Weite einer Filmsequenz
Instanz (oder swf Film) prozentual |
_yscale |
Höhe |
MC, Movie |
die Höhe eines
Filmsequenz Instanz (oder movie) prozentual |
_currentframe |
MC, Movie |
ermittelt die Zahl des
momentanen Bildes eines Flashfilms oder einer Filmsequenz Instanz.
(also dort wo der Abspielknopf gerade steht) |
|
_totalframes |
MC, Movie |
ermittelt die Zahl aller Bilder einer Zeitleiste einer Filmsequenz |
|
_framesloaded |
Movie |
ermittelt die Zahl aller
Bilder die runtergeladen wurden |
|
_alpha |
Transparenz |
der Wert der Durchsichtigkeit
einer Filmsequenz oder Flashfilm in Prozent, dabei ist 100 komplett
undurchsichtig und 0 komplett durchsichtig |
|
_visible |
Sichtbarkeit |
MC, Movie |
.1 ist sichtbar, 0 ist
unsichtbar, Die Werte true und false sind auch möglich. |
_droptarget |
MC |
ermittelt den Namen der letzten Filmsequenz auf den ein Drag Movie Clip abgelegt wurde, oder anders ausgedrückt: Bewegt man eine Filmsequenz mit startdrag kann man mit der Eigenschaft droptarget, ermitteln, über welcher anderen Filmsequenz sich die Maus (bzw. die Filmsequenz) befindet. (Beispiel Fla Datei downloaden) SWF Beispielfilm anschauen droptarget.fla |
|
_highquality |
Hohe Qualität |
Movie |
wird nicht mehr verwendet. Darstellungsqualität
des gesamten Films |
_quality | Darstellung Anti Alias _qualitiy="LOW"; |
Movie | Ab Flash 5 soll man anstatt _highquality die globale Eigenschaft _quality wählen. Werte sind LOW, MEDIUM, HIGH, BEST siehe auch |
_focusrect
|
Fokussierrecht- eck einblenden
AS3 stage.stageFocusRect = false; |
Movie |
Zeigt ein gelbes Rechteck
um eine Schaltfläche, wenn er mit der TAB Taste ausgelöst
wird, Standard ist show, wenn der Wert auf 0 gesetzt wird, wird
nur der rollover Status einer Schaltfläche angezeigt. Bedienung
per Tastatur wird vereinfacht AS3 |
tabIndex | Tabulator-reihenfolge meinTextfeld.tabIndex=1; |
Movie Textfeld Button |
Mit dieser Eigenschaft kann man die Tabulatorreihenfolge bestimmen. Tabulatortaste. SWF Beispiel anschauen tabulator.fla |
_soundbuftime |
Zwischen- speicherzeit für Sound: |
Movie |
Die Anzahl der Sekunden die verstreicht, bevor der sound gestartet wird (preload), Standard ist 5 Sekunden |
.scroll |
Text Field Variable |
Die oberste Zeile der
sichtbaren Region einer Textfield Variable. Diese Eigenschaft
kann gelesen und gesetzt werden, beispielsweise um die nächste
Zeile anzuzeigen: |
|
.maxscroll |
Text Field Variable |
wird nicht mehr verwendet. |
man kann nicht nur Eigenschaften vergeben, sondern auch welche abfragen
mit get property, (ab Flash5 lese unten weiter)
Die Aktion befindet sich im Bedienfeld Aktion
im Ordner Funktionen
oder man kann es per Hand eingeben die Schreibweise ist
getProperty ( target, property)
Unter Target wird der korrekte Pfad zur Filmsequenz, Ebene oder Instanz-Name
in Anführungszeichen angegeben,
Unter property wird die Eigenschaft angegeben
Man kann Set Property mit Get Property kombinieren, im folgendem Beispiel
wird die y Position von mc1 der x Position von mc2 zugewiesen
setProperty ("mc2",
_x, getProperty ( "mc1", _y));
Flash
5 oder höher
Ab Flash 5 kann man auf die GetProperty Action verzichten, da man
die Eigenschaft einer Filmsequenz durch die einfachere Schreibweise mit
Punktsyntax, abfragen kann.
Siehe Ebenen
ansteuern
Das Ganze wird dann beispielsweise so geschrieben
_root.instanzname._y
Damit wird die vertikale Position einer Filmsequenz Instanz zurückgegeben.
Im Folgenden wird die horizontale Position _x der Instanz mc2 durch die
vertikale Position _y von Instanz mc1 bestimmt.
setProperty ("mc2",
_x, _root.mc1._y);
oder noch besser in Punktsyntax
mc2._x=_root.mc1._y;
(Beispiel
Fla Datei downloaden)und dragmovie_5.fla
Symbol welches den Bewegungen des Mauszeigers folgt.
Beispiel
SWF anschauen
oder download
siehe auch AS3 Beispiel startDrag dropTarget
Unter drag & drop versteht man, ein Symbol, welches man anklickt, mit gedrückter Maustaste zu verschieben und durch Loslassen der Maustaste wieder abzulegen.
startDrag(); stopDrag(); _xmouse, _ymouse; _root._xmouse; _root._ymouse; swapDepths();
Bewegungen per Drag Movie aufzeichnen und abspielen siehe SWF Beispiel Array. Beispiel
SWF anschauen oder download droptarget.swf
Bewegt man eine Filmsequenz mit startdrag kann man mit der Eigenschaft
droptarget, ermitteln, über welcher Filmsequenz sich die Maus befindet.
Beispielfilm
SWF anschauen oder download duplicatemovie.fla
Duplicate Movieclip wurde in AS3 ersatzlos gestrichen aber es geht auch anders. Hier das Beispiel der letzten Seite in AS3.
Studiere zuvor die Themen Variablen, if-else, Schleifen.
Filmsequenz duplizieren:
Studiere zuvor die Themen Variablen, if-else, Schleifen.
attachMovie() Filmsequenzinstanzen aus der Bibliothek dynamisch plazieren
createEmptyMovieClip() eine leere MC-Instanz erstellen, um dynamische Inhalte während der Laufzeit zu generieren
removeMovieClip() Instanzen von MCs löschen (Achtung!! siehe auch Sonderfall getNextHighestDepth)
Beispiel
SWF anschauen oder download attachMovie.fla
Siehe auch attachMovie mit AS3
Achtung, wenn man große Teile des Flashfilms per attach Movie einfügt und eine Ladeanzeige auf der Seite hat, hat man das Problem, dass die Anzeige erst dann erscheint, nachdem die Attach-movieclips aus der Bibliothek schon geladen sind. Im ungünstigsten Falle also erst kurz bevor alles geladen ist.
Wenn bei der Verknüpfung in der Bibliothek die Option "ins erste Bild laden" gewählt hat, werden diese Inhalte noch vor allen anderen Inhalten geladen und somit auch vor der Ladeanzeige.
Es gibt 2 Möglichkeiten das zu umgehen:
siehe auch Preloader
Beispiel SWF anschauen oder download sharedlibr1.swf, sharedlibr2.swf
Studiere zuvor die Themen Variablen, Schleifen.
Beispiel SWF anschauen oder download programmierteMaske.fla
Movieclip.setMask(MCInstanz)Will man anstatt einer Maskeneben, einen MC bestimmen, der für einen anderen MC als Maske dienen soll, kann man ab Flash 8 die Aktion setMask() verwenden.
Die MC-Instanz welche unter der Maske zu sehen sein soll, bekommt die Aktion zugewiesen. Der MC welcher als Maske dienen soll, wird als Parameter in die Klammern eingefügt:
AS2
box_mc.setMask(circle_mc);
AS3
box_mc.mask = circle_mc;
AS2
MCInstanzBild.setMask(MCInstanzMaske);
AS3
MCInstanzBild.mask=MCInstanzMaske;
Beispiel SWF anschauen oder download maskeVerlauf.fla
Wenn man in beiden MC-Instanzen die Eigenschaft cacheAsBitmap auf true setzt, hat man die Möglichkeit auch eine Maske mit transparentem Verlauf zu definieren. Das kann man sehr schön dazu verwenden, um die bekannten Spiegelungen oder Glaseffekte mit Flash zu erzeugen. Bei Animationen ist diese Methode jedoch mit Vorsicht zu genießen.
Beispiel
SWF anschauen Jetzt auch mit Beispiel variable.fla
(Beispiel
Fla Datei downloaden)
Lese unbedingt auch den Beitrag von Html World über Variablen.
Lese auch den Abschnitt bei Adobe über Datentypisierung und Variablen
Beim Testen des Films (Steuerung/ Film testen) kann man sich alle Variablen und Instanzen anzeigen lassen. Drücke
Eine Variable ist ein Container für einen Inhalt, dessen Wert ermittelt wird, während der Film läuft. Der Container bekommt einen selbstvergebenen Namen (ohne Leerzeichen, beginnend mit einem Buchstaben, keine reservierten Begriffe aus Actionscript). Der Container ist immer der gleiche, der Inhalt kann sich ändern, er kann Zahlenwerte oder Buchstaben enthalten, während der Film abläuft, kann man: aufzeichnen oder speichern, was der User getan hat, wieviel Zeit verstrichen ist, welches Bild gerade läuft. Bei den Werten kann es sich um Strings, Zahlen, Arrays, Objekte, XML-Objekte, Datumsangaben oder um benutzerdefinierte Klassen handeln.
(siehe
Get Properties)
Alles klar? Keiner hat's kapiert, vielleicht hilft folgendes Beispiel:
man könnte eine Variable mit Namen xyz definieren die den
Wert 2 mal 3 enthält das wäre dann 6, genauso könnte man
aber auch eine Variable definieren die den Wert 2 mal die Weite einer
Filmsequenz enthält oder die Position oder was auch immer.
Man sollte keine Sonderzeichen, Umlaute und Leerzeichen in Variablennamen
vergeben. Außerdem dürfen keine Begriffe die in Actionscript
vorkommen benutzt werden. Wenn man deutsche Worte oder einfach nur Buchstaben
benutzt, ist man auf der sicheren Seite. Die Regeln sind bei Html World genau beschrieben.
Eine Variable, die global, also für den ganzen Film definiert werden
soll, schreibt man so /:namedervariablen
oder ab Flash MX auch so: _global.namedervariablen
Anhand des folgenden Beispiels wird bei jedem Mausklick auf einen Button einer Variablen ein Wert hinzugefügt:
Anhand des folgenden Beispiels wird eine Variable definiert, die die horizontale und vertikale Position des Mauszeigers anzeigt.
siehe auch: Drag Movie Clip und programmierte Bewegung
Im swf Beispiel befindet sich eine Seite, wo man mit Eingaben aus Eingabetextfeldern rechnet. Mit Flashplayer 7 oder tiefer war es möglich den Eingabefeldern einen Variablennamen zuzuweisen und diese Variablen mittels Number(Variable) in numerische Werte umzuwandeln. . In höheren Versionen mache folgendes. Vergebe den Textfeldern einen Instanznamen und wandele folgendermaßen die Eingaben um:
Ganzzahlen:
parseInt(meinTextfeld.text)
Fließkommazahlen:
parseFloat(meinTextfeld.text)
if (flashVarText != undefined) {
irgendeine Anweisung;
}
Wenn die Variable namens flashVarText vorhanden ist, wird die Anweisung ausgeführt. Oder anders ausgedrückt, wenn die Varible flashVarText nicht undefiniert ist, wird die Anweisung ausgeführt.
Noch ein Hinweis zu diesen Tipps. Da diese Sammlung sehr umfangreich ist und ich alles alleine mache, kann ich nicht alle Beispiele ständig auf den neuesten Stand bringen. In früheren Versionen war es nicht nötig den Startwert einer Variablen auf 0 zu setzen. Wenn man beispielsweise die Aktion x=x+1; irgendwo aufrief, bekam x beim ersten Aufruf dieser Aktion den Wert 1 zugewiesen. Das bedeutet, dass der Startwert automatisch 0 war. Das geht ab Flash 8 (Actionscrip2) nicht mehr so einfach. Hier muss x=0; zuvor definiert werden. Ist das nicht der Fall, erscheint undefined, noch nicht definiert. Wenn ihr in einigen Beispielen diesen Fehler findet, schreibt mir bitte, damit ich das korrigieren kann.
Außerdem ab Flash MX 2004 bzw. in Flash Actionscrip 2 sollten Variablen mit strikter Datentypisierung definiert werden.
var myVariable:Number = 10;
oder
var myVariable:String = "alle meine Entchen";
Die bekanntesten arithmetische Operatoren kennt wohl jeder aus dem Mathe Untericht
plus minus mal geteilt
+ - * /
Auch in Actionscript gilt Punktrechnung geht vor Strichrechnung. Auch Klammern lassen sich einsetzen:
x=(1+2)*3;
a=3;
a=a+1;
a hat den Wert 4. Mittels Inkrement geschieht das gleiche, der Wert wird um 1 erhöht.
a++
Dekrement bewirkt, dass der Wert um 1 verringert wird
a--
Wenn Inkrement oder Dekrement vor der Variablen steht, gilt es für die gesamte Anweisung oder Zeile:
Bei folgender Schreibweise | kommt das dabei raus |
---|---|
a=4; b=5; |
|
erg = a + b++; | erg = 9, b=6 |
erg = a+ ++b; | erg=10, b=6; |
string oder number
siehe hierzu auch den Tipp Strings
In vielen Eingabefeldern des Normalmodus/ Scripthilfe gibt es die Option Ausdruck. Beispielsweise bei den Aktion set Variable, Get Url, Goto.
Hat man das Feld angehakt, ist "Ausdruck" gewählt, andernfalls" Zeichenfolge Literal".
Ist die Option deaktiviert erscheint die Eingabe in Anführungsstrichen. Was bedeutet das?
In vielen Programmiersprachen gibt es verschiedene Datentypen. Die beiden wichtigsten heißen
sie string und number.
Im Wertefeld stehen Teile des Actionscripts, deren Wert ermittelt wird
während der Film läuft.
Wenn ich beispielsweise 2+3 im Wertefeld eingebe, so könnte das Ergebnis
5 sein, oder es könnte 2+3 erscheinen.
Bei 5 würde es sich um "Ausdruck" handeln. Die beiden Zahlen
werden als Werte angesehen, die ausgerechnet würden. Die Werte stehen nicht in Anführungsstrichen.
Bei "2+3" wäre es "Zeichenfolge, string". Die beiden Zahlen
werden wie Buchstaben aneinandergereiht. Die Werte stehen im Actionscript in Anfürhungsstrichen.
Wichtig!! Will man eine Zeichenfolge (string) innerhalb eins Ausdruckes
definieren, muss man sie in Anführungszeichen setzen und sie
mit dem Verknüpfungsoperator + verbinden, zum Beispiel:
"2"+(5+3) ergibt die Zeichenfolge 27 also Zwei Sieben und nicht Siebenundzwanzig.
Mit number() kann man Zeichenfolgen in numerische Werte umwandeln. Um bei diesem Beispiels zu bleiben.
number("2"+(5+3)) ergibt den Wert 27 also Siebenundzwanzig
Will man mit Eingaben eines Texteingabefeldes rechnen, muss man sie mittels number() in numerische Werte umwandeln. Siehe dazu den SWF Beispielfilm Variablen.
Variablen können auch andere Datentypen beinhalten wie Arrays, Objekte etc.
Steuerzeichen
In Strings können Steuerzeichen eingesetzt werden, um beispielsweise neue Zeilen zu erzeugen:
\" doppeltes Anführungszeichen
\' einfaches Anrührungszeichen
\\ Backslash
\b Backspace (Rückschritt)
\e Escape-Sequenzen
\f Seitenvorschub
\n Zeilenvorschub (newline)
\r Wagenrücklauf (Carriage return)
\t horizontaler Tabulator
Will man eine dieser Zeichenfolgen in einem String benutzen muss der backslash vorangestellt werden.
trace ist ein Befehl, der nur im Ausgabefenster angezeigt wird, wenn man den Film oder eine Szene im Flash Programm testet (
). Man sagt dazu auch Flash IDE oder die Entwicklungsumgebung von Flash.Der
Befehl soll bei der Erstellung eines Films helfen, den Code auf bestimmte Dinge hin zu überprüfen, beispielsweise: Eigenschaften von Filmsequenzen, Variablenwerte... etc. Folgender Befehl, einem MC zugewiesen, zeigt die
horizontale Position des MCs beim Mausklick im Ausgabefenster an.
onClipEvent (mouseDown)
{
trace(this._x);
}
Beim Testen des Films (
), kann man sich alle Variablen und Instanzen anzeigen lassen. DrückeEs gibt eine flashlog.txt in der diese Ausgaben gespeichert werden unter Windows XP
C:\Dokumente und Einstellungen\username\Anwendungsdaten\Macromedia\Flash Player\Logs
Beispiel SWF anschauen oder download if.fla
Hier werden folgende Funktionen erklärt:
if(){}; else {}, else if{}, for(){}, Vegleichsoperatoren: ==, !=, <, >, <=, >=, Verknüpfungsoperatoren: &&, ||, Boolscher Wert: true, false
Hier werden Anweisungen nur dann ausgeführt werden, wenn bestimmte definierte Bedingungen erfüllt sind oder man könnte auch sagen, wenn ein mathematischer Ausdruck wahr ist.
var e:Boolean = true;
if(e) Anweisung;
Obige Anweisung wird ausgeführt, da e wahr ist.
Mehrere Anweisungen werden mit Strichpunkt getrennt und in geschweiften Klammern eingeschlossen. Die geschweiften Klammern stellen generell einen Anweisungsblock dar, in dem die Anweisungen von oben nach unten ausgeführt werden.
Eine if-Struktur gibt es in gleicher oder leicht abgewandelter Form in sehr vielen Programmiersprachen.
if (hier steht die Bedingung) {hier stehen die Anweisungen mit Strichpunkt getrennt, die ausgeführt werden, wenn die
Bedingung erfüllt ist in geschweiften Klammern. }
if (z == 10) {
gotoAndPlay (2);
}
Hier dieses Beispiel mit der Beschreibung.
if (Bedingung) {
dieser Befehl wird ausgeführt, wenn die Bedingung
erfüllt ist;
}
Man kann Bedingungen mit logischen Operatoren verknüpfen
Studiere zuvor dieses sehr gute Tutorial bei bitmagie.de zu den logischen Operatoren
Die logischen Operatoren werden in Flash folgendermaßen geschrieben
Flash | Actionscript 1 | |
---|---|---|
AND | && | and |
logisches ODER | || | or |
NICHT | ! | not |
Hier eine Liste zum Thema Operatoren
Hier einige Beispiele:
Im folgenden gibt es 2 Bedingungen die mit || verknüpft sind. Das bedeutet:
a) das eine oder das andere muss wahr sein
b )das eine und das andere muss wahr sein
a und b ist möglich.
Sofern die Bedingung true ergibt, werden die beiden Anweisungen in geschweiften Klammern ausgeführt.
Sofern die Bedingung false ergibt, wird die Anweisung hinter else ausgeführt.
if (Bedingung || Bedingung)
{
dieser Befehl wird ausgeführt, wenn eine der
beiden Bedingungen erfüllt ist;
dieser Befehl wird auch ausgeführt, wenn beiden Bedingungen erfüllt sind;
} else {
andernfalls passiert das;
}
Hier müssen beide Bedingungen erfüllt sein. In Flash 4 schrieb
man "and". Jetzt schreibt man && Beides
entspricht der Javascript Syntax.
if (Bedingung && Bedingung)
{
dieser Befehl wird ausgeführt, wenn beide Bedingungen
erfüllt sind;
} else {
andernfalls passiert das;
}
Dann gibt es noch else if. Dort wird
eine weitere Bedingung definiert gefolgt von einer Anweisung oder einem Anweisungsblock. Man kann soviele "else if" hinzufügen wie man will. Wenn Bedingung 1 unwahr ist wird Bedingung 2 überprüft. Wenn Bedingung 1 wahr ist, wird die erste Anweisung ausgeführt. Weitere Bedingungen, die mit else if() folgen, werden nicht überprüft.
if (Bedingung1)
{
dieser Befehl wird ausgeführt, wenn Bedingung1
erfüllt ist;
} else if (Bedingung2) {
dieser Befehl wird ausgeführt,
wenn Bedingung2 erfüllt ist und Bedingung 1 nicht erfüllt ist;
}
Um das Ganze vollständig zu machen füge ich im Folgenden noch
ein else am Ende ein.
if (Bedingung1) {
dieser Befehl wird ausgeführt, wenn Bedingung1
erfüllt ist;
} else if (Bedingung2) {
dieser Befehl wird ausgeführt, wenn Bedingung2
erfüllt ist;
} else {
dieser Befehl wird ausgeführt, wenn keine Bedingung erfüllt ist;
}
Hier noch ein Beispiel mit dem NICHT Operator !
var e:Boolean = false;
if(!e) Anweisung;
Diese Anweisung wird ausgeführt, da eine doppelte Verneinung wahr ergibt.
if(!e) bedeuet: wenn e nicht wahr ist.
Ab Flash 5 können kleinere If Abfragen auch so geschrieben werden
x = y<9 ? 4 : 6 ;
Es bedeutet
Variable=
Bedingung ?
dieser Wert wird der Variablen zugewiesen wenn Bedingung
erfüllt ist :
dieser Wert wird der Variablen zugewiesen wenn Bedingung
nicht erfüllt ist
Das entspräche folgender if Abfrage
if (y<9){
x=4;
}else{
x=6;
}
Siehe hierzu die Referenzen AS3 Schleifen
Beispiel SWF anschauen schleifen.swf
Will man Anweisungen in einer Schleife ausführen, kann man das mit der for-Schleife machen
for(i=1;i<10;i++) {
set ("var"+i, i);
}
In der For Schleife werden 3 Dinge mit Strichpunkt getrennt aufgeführt.
for(Zählvariable; Bedingung;
Zählmuster){
hintereinander auszuführende Anweisung solange Bedingung erfüllt
ist;
}
Der Aufbau der for-Schleife:
Die einzelnen Durchläufe oder Schleifen werden zwar hintereinander ausgeführt, aber man hat hier keine zeitliche Verzögerung, die in einer Schleife entsteht, die man in einem Schlüsselbild oder mit dem Event Handler enterFrame erstellt hat.
For in Schleife siehe array letze Seite
In der while Schleife wird eine Bedingung definiert. Die Schleifendurchläufe werden erst gestoppt, wenn die Bedinung unwahr ist.
Außerdem gibt es noch die Möglichkeit mittels break die Schleife abzubrechen. Eine break Anweisung fügt man in eine If-Struktur innerhalb der while Schleife ein.
Hier werden folgende Aktionen erklärt:
for(); while(); break;
Eine weitere etwas ungewohnte Schleife ist switch case.
Im folgenden Beispiel wird die Variable raeder_num auf verschiedene Werte überprüft.
Die Schreibweise mit Doppelpunkt ist ungewohnt und man kann das gleiche auch mit if else erzeugen.
var raeder_num:Number = 3;
switch (raeder_num) {
case 4 :
trace("Sie fahren ein Auto!");
break;
case 3 :
trace("Sie fahren ein Dreirad oder Trike!");
break; case 2 :
trace("Motorrad oder Fahrrad ist Ihr Untersatz!");
break;
case 1 :
trace("Einrad-Fahrer?");
break;
default :
trace("Keines, drei, fünf oder mehr Räder. Und damit fahren Sie?");
}
Beispiel
SWF anschauen
(Beispiel
Fla Datei downloaden)
Mit call werden
Schlüsselbilder einer beliebigen Zeitleiste aufgerufen siehe Instanzen ansprechen, jedoch wird hier nicht der gesamte Inhalt des Schlüsselbildes geladen,
sondern lediglich, die in diesem Schlüsselbild vergebenen Aktionen.
Call dient dazu Routinen, also eine Reihe von Aktionen von verschiedenen
Stellen aus, aufzurufen.
Man definiert gewünschte Aktionen in einem Schlüsselbild, (welches
sich auch in einer Filmsequenz befinden kann)
um diese Aktionen aufzurufen, wählt man die Aktion Call, und gibt
im Feld "Bild" das gewünschte Schlüsselbild an
das Schlüsselbild kann eine Zahl sein, oder der zuvor vergebene Name
es Schlüsselbildes (Zeitleiste, Schlüsselbild, Eigenschaften,
Bezeichnung)
befindet sich das Schlüsselbild in einer Filmsequenz, sieht die Schreibweise
so aus
call ("Instanzname:Schlüsselbild");
Es gibt zwar keine spezielle Aktion, um die Zeitleiste rückwärts ablaufen
zu lassen. Aber
mit der Aktion _prevFrame() in einer Schleife kann man diesen Effekt erzeugen, siehe Beispiel.
Beispiel
SWF anschauen timeline_back.fla
Man kann die Zeitleiste dazu benutzen Animationen zu erstellen oder bestimmte Bilder in der Zeitleiste abzurufen. Man kann eine Zeitleiste aber auch dazu benutzen, um Aktionen in einer Schleife immer wieder aufzurufen. Genau das geschieht hier. In einem Schlüsselbild einer Filmsequenz steht der Befehl, im Hauptfilm ein Bild zurück zu gehen. Dieses Schlüsselbild wird immer wieder aufgerufen, und die Zeitleiste des Hauptfilms läuft rückwärts. Die Methode Schlüsselbilder in Movieclips zu gebrauchen, um Actionscript abzulegen und in Schleifen aufzurufen, wurde in älteren Versionen bis Version Flash 4 eingesetzt. Das funktioniert heute auch noch, aber mittlerweile es gibt Alternativen.
Auf der zweiten Seite des Beispiels wird eine zeitgemäßere Methode vorgestellt. Hierzu sollte man jedoch zuerst den Tipp "Funktionen" studieren, um die Prototype Funktion zu verstehen, welche das Verhalten des MCs verändert.
Beispiel
SWF anschauen oder download nav.fla
Mittels Variablen werden die Werte für die anzusteuernden Bilder
der Zeitleiste gesetzt. Dadurch lassen sich bestimmte Konstellationen
von Tweenings und Movieclips realisieren. Durch Schaltflächen werden
die anzusteuernden Bilder bestimmt, die dann zeitlich versetzt (also später
nach Ablauf einer Animation) aufgerufen werden.
Beispiel
SWF anschauen
oder download getTimer2.fla
Die Funktion getTimer() übergibt den Wert
der Zeit (in Millisekunden), die verstrichen ist, seit der Film startete.
Hier wird folgende Funktion erklärt:
getTimer(), setTimeout();
Hier wird nicht die Uhrzeit oder das Datum abgefragt siehe dazu Datum abfragen
Will man eine Funktion in bestimmten Zeitintervallen immer wieder aufrufen, bietet sich die Funktion setInterval an. Die beiden Parameter sind Funktionsname und Wert in Millisekunden.
function hopp():Void {
meinMc._x+=20;
}
var intervalID:Number = setInterval(hopp, 2000);
Mittels clearInterval kann man das Interval löschen. Als Parameter wird der Bezeichner der setInterval Funktion erwartet, die gelöscht werden soll.
clearInterval( intervalID );
Viele Filme haben am Anfang eine Anzeige des Ladestatus. Der Film wird erst gestartet, wenn alles geladen ist. Flashfilme ohne programmierten Preloader haben den Vorteil, dass sie streaming-mäßig geladen werden, das heißt, der Film spielt schon ab, während der Rest noch geladen wird.
Ab Flash 5 gibt es die Aktion getBytesLoaded(),
welche den Wert der heruntergeladenen Bytes übergibt und getBytesTotal(),
welche die Gesamtgröße des Films übergibt. Eine Anzeige
in kb müßte folgendermaßen aussehen
Math.floor(_root.getBytesLoaded()/10.24)/100
1Byte = 8 Bit also muss man durch 1024 teilen um kb zu erhalten.
Um jedoch eine Anzeige mit Komma zu erhalten, wird zuerst durch 10.24
geteilt, das Ergebnis abgerundet Math.floor() und dann durch
100 geteilt.
Selbstverständlich kann man aus den beiden Aktionen
mit einer einfachen mathematischen Formel eine Anzeige in Prozent
erstellen. (geladene/gesamt)*100
Man muss kein Mathe Genie sein, um daraus folgende Formel zu erstellen:
Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)
Math.floor() bedeutet übrigens, dass das was in Klammern steht als
Ganzzahl abgerundet wird siehe Mathe-Objekt,
(im Swf Beispiel auf Seite 4). Übrigens, die veraltete Schreibweise ist int().
Achtung siehe auch attachMovie Sonderfall wenn große Teile per attach Movie eingefügt werden
In Flash 4
/ veraltete Methode
Schlüsselbild, recht Maustaste Eigenschaften, Aktionen, /
If frame is loaded
Szene und Bild Nummer angeben, auf dessen "cache load" gewartet
werden soll
(um zu warten bis der gesamte Film geladen ist gibt man das letzten Bild
der letzten Szene an)
+ Symbol, gewünschte Aktion vergeben, wahrscheinlich Go to
"Go to and Play"-Feld anklicken, gewünschten Szene und Bild
Nummer wählen, wo der eigentliche Film startet.
Dann macht man in einem der nächsten Bilder ein Schlüsselbild
mit der Action Go to auf das erste Bild des Films, also das Bild,
wo die Action "If frame is loaded" enthalten ist, so läuft
der Film solange zwischen diesen beiden Bildern hin und her, bis der Film
geladen ist.
(Beispieldatei runterladen)
Die veraltete Lösung bei großen Movies, ein Zähler,
der die Prozentzahl des geladenen Movies anzeigt funktionierte so.
Man erstellt ein paar Schlüsselbilder am Anfang, die die verschiedenen
Prozentzahlen der Reihe nach anzeigen,
dann vergibt man jeweils die Action "If Frame is loaded" und
springt damit von einem Schlüsselbild der Anzeige zum nächsten,
bis der ganze Film geladen ist.
Beispiel
SWF anschauen
oder download zufall.fla
siehe auch den nächsten Tipp Mathe Objekt
siehe auch diesen AS3 Tipp Function Zufall, hier werdern Zufallswerte erzeugt wobei bestimmte Werte ausgeschlossen werden. Ein ähnliches Beispiel befindet sich auch in dem Funktionen Beispiel hier auf der Seite. AS2
Hier eine praktische Funktion für den täglichen Einsatz eine Zufallszahl von bis
function zufallVonBis (tief:Number, hoch:Number):Number{
var zufallsZahl:Number= Math.random()*(hoch - tief) + tief;
return zufallsZahl;
}
Beispiel SWF anschauen rechnen.fla
siehe oben das SWF Beispiel für Zufallszahlen zufall.swf
Funktion | Bedeutung | veraltete Schreibweise |
---|---|---|
Math.floor(x) |
abrunden | int(Fließkommazahl) Ganzzahl=int (5.2458) int() ist veraltete Schreibweise, eine Fließkommazahl wird abgerundet. Näheres im Beispiel SWF Film |
Math.round(x) |
ab/aufrunden | |
Math.ceil(x) |
aufrunden | |
Math.sqrt(x) |
Wurzel | |
Math.pow(x,y) |
exponential | |
Math.min(x,y) |
kleinerer von 2 Werten | |
Math.max(x,y) |
größerer von 2 Werten | |
Math.random(); |
Zufallszahl zufall.swf anschauen |
Math.random() kann man auch in AS3 verwenden. Es wird eine Zufallszahl zwischen 0.0 und 1 erzeugt ausgenommen 1. Die alte Schreibweise random() ist nicht so genau. Folgendes Beispiel: random(20) erzeugt Zahlen zwischen 0 und 19 |
Math.sin(); |
sinus- cosinus Werte siehe Programmierte Bewegung | |
Modulo x%y |
Modulo, Division Restbetrag |
Sehr große Zahlen können beispielsweise folgendermaßen dargestellt werden:
2e+3;
Die Zahl ist 2000, also die Zahl 2 mit 3 Nullen, oder die Zahl 2 * 10³
var zahl:Number;
zahl = 2e+3;
trace(2e+3);//2000
trace(2.2e+3);//2200
trace(2.2* Math.pow(10,3));//2200
In diesem AS3 Beispiel werden Zufallszahlen erzeugt, und zwar aus einer Liste von Ganzzahlen von 0 bis x. Dabei darf jede Zahl nur einmal vorkommen. Diese Funktion kann man beispielsweise für das Mischen von Karten oder anderen Arrays in Spielen einsetzen.
Der erste Parameter definiert die Anzahl der gesamten Zahlen. Der zweite Parameter definiert wieviele Zufallszahlen erzeugt werden sollen. Die Zahl im zweiten Parameter darf logischerweise nicht höher sein, als die Zahl im ersten Parameter. Das gleiche Beispiel für AS2 befindet sich in der SWF Beispieldatei math.
function zufall (arrayCount:uint, randCount:uint):Array
{
var zufallsZahlen:Array = new Array();
var zahlen:Array = new Array();
for (var e:uint=0; e < arrayCount; e++)
{
zahlen[e] = e;
}
for (var i:uint=0; i < randCount; i++)
{
var zufallszahl:Number = Math.floor(Math.random() * zahlen.length);
trace ("Zufallszahl: "+zufallszahl+" wirkliche Zufallszahl"+zahlen[zufallszahl]);
zufallsZahlen[i]= zahlen[zufallszahl];
zahlen.splice (zufallszahl, 1);
}
return zufallsZahlen;
}
var zufallsZahlen:Array = zufall (20, 20);
Beispielfilm SWF anschauen oder download array.fla
Arrays gibt es in fast allen Programmiersprachen, wie z.B. in Javascript oder PHP. In Arrays kann man Daten verarbeiten, die in den Elementen eines Arrays gespeichert sind. Ein Array hat mehrere Elemente, auf die man über einen Index zugreift und die man mit den Arrayfunktionen verarbeiten kann. Die Elemente kann man unterschiedlich anordnen oder löschen. Mit verschachtelten Arrays lassen sich Datenbank ähnliche Strukturen erzeugen.
Siehe auch den Beitrag von Html World: Mehrdimensionale Array
Noch eine Möglichkeit ein nested Array zu erzeugen:
myMap = [ [1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,1], [1,0,1,0,0,0,0,1], [1,0,0,0,0,1,0,1], [1,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1] ];
oder in AS3
var myMap:Array = [ [1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,1],
[1,0,1,0,0,0,0,1],
[1,0,0,0,0,1,0,1],
[1,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1] ];
oder mittels for Schleifen
var mcMap:Array = new Array();
for (var i:uint = 0; i < 10; ++i)
{
mcMap[i] = new Array();
for (var j:uint = 0; j < 10; ++j)
{
var t:Tile = new Tile();
t.x=(j*16);
t.y = (i*16);
addChild (t);
mcMap[i][j]=t;
}
}
Ein rein asszioatives Array ohne einen numerischen Index ist eigentlich kein Array, sondern ein Objekt, denn hier kann man die Arrayfunktionen nicht verwenden. Man spricht hierbei auch von Json Schreibweise. Siehe dazu diese Website. http://json.org/json-de.html ein super Link.
Beide Schreibweisen sind in Flash möglich.
var personen:Array = new Array();
var personen:Object = new Object();
Personen- Object
Personen in das Object einfügen
var personen:Object = new Object();
personen["Francois Petit"]={name:"Francois Petit",stadt:"Paris"};
personen["Gilbert Sullivan"]={name:"Gilbert Sullivan",stadt:"London"};
Problem:
Francois Petit ist umgezogen, die neue Stadt soll eingegeben werden, oder anders ausgedrückt:
Ich möchte im Element von name:"Francois Petit" den Wert der "stadt" ändern.
Lösung:
var eineNeuePerson:Object={name:"Francois Petit",stadt:"Untertupfingen"};
personen[eineNeuePerson.name]=eineNeuePerson;
Hier werden folgende Actions erklärt:
newArray(); Array.length(); Array.splice(); Array.push(); Array.pop(); Array.concat(); string.split(); Array.join(); Array.toString(); Array.reverse(); Array.shift(); Array.unshift(); Array.sort(); for in;
Ein Vector ist eine Art Array mit dem Dinge schneller berechnet werden. Vector gibt es ab Flashplayer 10 mit AS3
Im Vector haben alle Elemente den gleichen Datentyp <Datentyp> außerdem kann man festlegen, dass sich die Anzahl size der Elemente nicht ändern darf true
//v = new Vector.<Datentyp>(size,true);
var anzahl:uint=10;
var v:Vector.<Number>;
v = new Vector.<Number>(anzahl,true);
for(var i:uint=0; i<anzahl; i++){
v[i] = i*20;
}
In einem Array könnte ich folgendes machen:
var myAr:Array= new Array();
myAr[20]="String";
In einem Vector kann ich ein Element erst definieren wenn es alle Elemente mit niedrigerem Index schon gibt, oder um es anders auszudrücken: im Vector können die Elemente nur hinten angehängt werden.
Beispiel SWF anschauen oder download datum.fla
Mit dem Date-Objekt kann man das Datum nach lokaler- (vom eigenen Rechner)
oder Welt-Zeit abfragen.
Zuerst muss eine Instanz des Date-Objekts erzeugt werden.
datum = new Date();
Dann kann man mit verschiedenen Methoden Tage, Monate, Jahre, Wochentage
und vieles mehr abfragen.
now = (datum.getDay());
Die verschiedenen Methoden sind in der Flash Hilfe aufgelistet.
Eine ausführlich erklärte Anleitung, wobei man beispielsweise
zu jedem Wochentag einen anderen Keyframe aufruft, findet ihr in meiner
Beispieldatei date.fla
Hier werden folgende Funktionen erklärt:
newDate(); getDate(); getMonth(); getDay(); getFullYear(); getTime(); getSeconds(); getMinutes(); getHours(); setDate();
Beispiel
SWF anschauen oder download function.fla
Ab Flash 5 kann man Funktionen definieren. Funktionen definiert man Anweisungen, die öfter gebraucht werden. Man kann Anweisungsblöcke in Funktionen zusammenfassen und diese dann mit verschiedenen Parametern bei Bedarf aufrufen. Sobald ein Film etwas komplexer wird, sollte man mit Funktionen arbeiten. Außerdem kann man mit dem Schlüsselwort function Klassen erzeugen. Hier ist etwas Grundwissen in OOP angesagt.
Lese auch den Artikel bei Adobe über Datentypisierung in Funktionen.
// strikte Typisierung des Parameters und des Rückgabewerts
function square(num:Number):Number {
var squared:Number = num * num;
return squared;
}
Hat man eine Funktion ohne Rückgabewert kann man den Typ void angeben:
function square(num:Number):Void {
_root.biene._xscale=num;
}
function(); setTimeout(), prototype(), delete
Mittels delete kann man Funktionen, Variablen, Objekte vernichten. Man kann mit delete keine Movieclips löschen. Nach erfolgreicher Vernichtung gibt delete true zurück, andernfalls false.
function meineFunktion(){
Anweisung;
}
delete meineFunktion;
Es gibt eine Flash viele integrierte Funktionen mit denen man bestimmte Aufgaben erledigen kann oder auf Informationen zugreifen kann. Beispielse getTimer() liefert die Ablaufzeit des Films in Millisekunden. Man unterscheidet zwischen Funktionen, die zu einem Objekt gehören auch Methoden genannt und Funktionen, die nicht zu einem Objekt gehören. Letztere nennt man Funktionen oberster Ebene, sie befinden sich im Ordner "globale Funktionen".
SWF Beispiel anschauen oder download objektProg.fla
Siehe OOP und Klassendefinition in AS3
Siehe auch das Beispiel AS3 MovieClip addChild(), auf Seite 10 gibt es die Alternative zur protoype Funktion
Action Script ist eine Objektorientierte Programmiersprache.
Auch wenn man sich mit der Thematik noch nicht beschäftigt hat, so
hat man dennoch mit Objekten gearbeitet. Zum Beispiel sind Symbole (MCs,
Schaltflächen, Grafiken) Objekte. Man kann den Begriff noch weiter
fassen. Ein Objekt Pinselwerkzeug zeichnet ein Objekt Grafik in ein Objekt
Fenster. Wir haben hier ein streng hierarchisches Prinzip, es gibt Klassen
und Instanzen. Zum Beispiel ein Auto wäre eine Klasse wobei, Toyota
Corolla, Golf GTI, Ford Capri Instanzen darstellen. Klassen haben Eigenschaften,
wie Farbe, Lenkrad, Motor etc. Die Instanzen besitzen diese Eigenschaften,
jedoch mit unterschiedlichen Werten, Farbe:rot, Sportlenkrand, Dieselmotor.
Auch das kennt man schon, ein MC ist eine Klasse, aus der man Instanzen
oder Objekte mit unterschiedlichen Eigenschaften erzeugt z.B. Größe, Position, Farbe etc. In Flash kann man
eigene Klassen erzeugen.
Siehe auch diesen Ausschnitt aus dem Buch von Colin Mook Objekte und Klassen pdf
Siehe auch den Abschnitt bei Adobe OOP
siehe auch dieses OOP Tut
Siehe auch dieses Javascript Tutorial zum Thema OOP
SWF Beispiel anschauen oder download navProto.fla
Hier ein praktisches Beispiel für eine Flashnavigation. Anhand dieses Beispiels wird erklärt, wie wichtig es ist eine vernünftige und logische Funktionen zu erstellen. Auch wenn es anfangs etwas schwieriger ist, so ist der Programmieraufwand doch erheblich geringer und Änderungen lassen sich einfacher umsetzen. Außerdem kann man durch Modifizierung dieser einfachen Flashnavigation komplexe Effekte und Menüstrukturen erstellen.
Weist man einer Schaltfläche eine Aktion zu, die auf eine Filmsequenz oder Zeitleiste verweist, so gilt die Zeitleiste in der sich die Schaltfläche befindet als this.
Anders verhält sich bei Funktionen, wie im folgenden Beispiel.
Wir haben eine Instanz test_mc und darin einen Button mit Instanznamen but_btn
MovieClip.prototype.farbe = function ()
{
this.but_btn.onRelease = function ()
{
trace(this);
};
};
_root.test_mc.farbe ();
Oder dieses Beispiel ohne die Prototype Funktion, die Action steht in der Zeitleiste der MC-Instanz namens test_mc
this.but_btn.onRelease = function ()
{
trace(this);
};
trace übergibt in beiden Fällen
_level0.test_mc.but_btn
Weist man der Schaltfläche innerhalb des test_mc die Anweisung direkt zu:
on (release) {
trace(this);
}
übergibt trace:
_level0.test_mc
Um mit einer Funktion auf die Zeitleiste zuzugreifen, in die die Buttoninstanz eingefügt wurde muss die Action folgendermaßen lauten:
this.but_btn.onRelease = function ()
{
trace(this._parent);
};
Siehe OOP und Klassendefinition in AS3
Jede von Ihnen deklarierte Variable, jede von Ihnen geschriebene Funktion und jede von Ihnen erstellte Klasseninstanz ist ein Objekt. Man kann sich ein ActionScript 2.0-Programm als eine Gruppe von Objekten vorstellen, die Aufgaben ausführen, auf Ereignisse reagieren und miteinander kommunizieren.
In Actionscript 2 liegt wie bei anderen objektorientierten Programiersprachen das Konzept der Klassen und Instanzen zugrunde. Jedes Objekt wird durch eine Klasse definiert. Eine Klasse kann man sich als Vorlage oder Entwurf für den Typ eines Objekts vorstellen. Grundlagen OOP Livedocs
Klassen werden mit dem Schlüsselwort class in einer externen Scriptdatei definiert. Wähle
und speichere diese mit der Endung as ab.Es gibt 2 Klassenpfad Einstellungen, global und Klassenpfad auf Dokumentebene. Ein Klassenpfad ist das Verzeichnis wo Flash nach Klassen-, Schnittstellen-, Funktions- und Variablendefinitionen sucht.
weitere Regelen siehe livedocs
Alternativ kann man Klassen in Paketen zusammenfassen. (livedocs)
Pakete werden mit der import Anweisung importiert:
oder um alle Klassen des filter Paketes zu importieren.
import.flash.filters.*;
Der mit den Klassen importierte Code ist in der SWF Datei enthalten, sofern er verwendet wird. Das bedeutet, dass Code einer importierten Klasse, die nicht verwendet wird, die SWF Datei nicht größer macht.
Speichere die fla Dateien, die auf die Klasse zugreifen sollen, im gleichen Ordner ab.
Actionscriptdatei: EatingHabits.as
class EatingHabits {
public function issDreck():Void {
trace("schmeckt abartig ");
}
function issSchoko():Void {
trace("schmeckt lecker ");
}
}
fla Datei im gleichen Ordner
var myHabits:EatingHabits = new EatingHabits();
myHabits.issSchoko();
In meinem SWF Beispiel über OOP für Actionscript 1 befindet sich auf der ersten Seite ein Beispiel. Dort wird eine Klasse Car mit der Eigenschaft color definiert. Ich greife dieses Beispiel hier auf, um es mit Actionscript 2 und der class Anweisung zu erzeugen.
SWF Beispiel anschauen oder oopAS2.fla, auto.as, car.as
Erstelle dir eine neue Actionscriptdatei (Datei/ Neu/ Actionscriptdatei) und speicheres sie unter dem Namen Car.as ab. Speichere dir im gleichen Ordner eine fla Datei.
Die fla Datei bekommt folgende Action und ein dynamisches Textfeld mit Instanznamen "ausgabe":
SWF Beispiel anschauen oder download include.fla
Action Script kann man in Textdateien auslagern und mittels include in den Flashfilm einbinden. Der Vorteil ist, dass man einmal definierte Funktionen in mehreren Filmen benutzen kann. Die Community stellt viele Actionscriptdateien zur Verfügung zum Beispiel bei: Animation Package
Ein Texteingabefeld mit Variablenname kann nach Eingabe eine Action aufrufen. Erstelle dazu ein Schlüsselbild in der selben Zeitleiste und vergebe den Bildnamen Variablename_changed . Alle Aktionen, die diesem Schlüsselbild zugewiesen wurden, werden nach Texteingabe ausgeführt. Allerdings kann dies zu Abstürzen führen, vor allen Dingen, wenn die aufgerufenen Aktionen, den Aktionen im Schlüsselbild der Texteingabe widersprechen, z.B.: bei der Texteingabe ist ein stop und die aufgerufene Aktion ist ein gotoAndPlay in der gleichen Zeitleiste.
Ein verstecktes Osterei in Form eines Spiels: Flash 4 "Garys Car
Jump", Flash 5 "Goldrush"
dann schnell das
Macromedia Logo anklicken, anschließend Danke Button klicken
Beispiel
SWF anschauen
oder download hitTest.fla NEU
eineFilmsequenz.hitTest(x, y,
formmarkierer);
Beispiel:
this.hitTest(_root. _xmouse,_root._ymouse, true);
hitTest fragt x und y Position ab, die in diesem Falle der Mausposition
entspricht.
_root._xmouse (horizontale Mausposition) _root._ymouse (vertikale Mausposition)
Stattdessen könnte man hier auch Werte eintragen, um zu überprüfen,
ob der MC einen definierten Punkt im Hauptfilm berührt oder anders
ausgedrückt; ob der MC eine bestimmte Position eingenommen hat.
Der Parameter true bedeutet, dass
man die Filmsequenz wirklich berühren muss und nicht nur den
unsichtbaren Begrenzungsrahmen (bounding box), der jedes Symbol umgrenzt. Das unsichtbare
Rechteck wird durch Höhe und Breite des MCs bestimmt.
Andere Möglichkeit
this.hitTest(_root.ball)
Hier wird jetzt anstatt x und y der Instanzname einer anderen Filmsequenz
angegeben.
Allerdings ist hier der unsichtbare rechteckige Begrenzungsrahmen ausschlaggebend,
hier ist der Parameter true
nicht möglich.
hitTest gibt den Wert true zurück, wenn die Kollisionserkennung stattfindet. Daher wird die hittest() Funktion meist in eine if Struktur eingebettet oder in eine while() Schleife.
Die Funktion hittest wird häufig bei der Spieleprogrammierung mit Flash gebraucht. Sei es um ein Jump & Run Spiel zu programmieren oder auch, um bei einem Ballerspiel die Treffer zu erkennen.
In der letzten Szene des Swf Beispiels wird ein Flash Aufklappmenü mit Unterpunkten erklärt.
In der vorletzten Szene wird eine Flash Doppelklick Schaltfläche oder Button erklärt.
Beispiel SWF anschauen oder download localToGlobal.fla
dieses Thema in AS3
In Spielen werden ständig die X-Y Koordinaten verschiedener MC-Instanzen benutzt. Wenn MC-Instanzen mehrfach ineinander verschachtelt sind, kann es schnell kompliziert werden, denn ein verschachtelter MC richtet sich immer am Mittelpunkt des Eltern-MC aus. Mittels localToGlobal() kann man sich die Koordinaten vom Hauptfilm aus erzeugen lassen.
Die Methode globalToLocal() übergibt _x und _y Werte eines Punktes im Hauptfilm relativ zum Mittelpunkt eines MCs. Das entspricht der horizontalen und vertikalen Entfernung.
Beispiel
SWF anschauen oder download distanz.fla
Hier wird der Abstand zwischen 2 MC Instanzen ausgerechnet. Dazu benötigt man den Satz des Pythagoras, der in einer anschaulichen Animation erklärt wird a² + b² = c²
Beispiel SWF
anschauen oder download
bewegung.fla
Hier geht es um programmierte Bewegungen in Flash, mit denen man Mausverfolger oder bewegliche Menüs, wie Aufklappmenüs oder Bilderleisten programmieren kann.
Hier noch ein einfaches Beispiel eines Mausverfolgers. Im folgenden Script braucht man eine Movieclipinstanz auf der Bühne, welche den Instanznamen "stern" bekommen muss. Besonders effektvoll ist es, wenn innerhalb des Movieclips Tweeningbewegungen enthalten sind.
MovieClip.prototype.mausverfolg = function(x) {
this.onEnterFrame = function() {
this._y = this._y+this._ymouse/(2*x);
this._x = this._x+this._xmouse/(2*x);
};
};
var i:Number =1;
_root.onEnterFrame = function() {
if (i<26) {
_root.stern.duplicateMovieClip("stern"+i, i);
_root["stern"+i].mausverfolg(i);
i++;
}else {
delete _root.onEnterFrame;
}
}
Auch das nächste Thema Trigonometrie behandelt programmierte Bewegungen für Spiele, Bildschirmschoner, Menüs etc.
siehe auch Drag Movie Verschiebbare Movieclips
Programmierte Bewegungen braucht man beispielsweise in Flashspielen wie beispielsweise dieses hier. Viele Programmierungen bauen auf den Regeln der Geometrie oder Trigonometrie auf. Siehe auch das übernächste Beispiel mit dem (Satz des Pythagoras). Die Trigonometrie ist die Kunst der Dreiecksberechnungen. Mit Sinus, Cosinus und Tangens lassen sich in Flash die Winkel und Seiten innerhalb eines Dreiecks berechnen. In Flash lauten die Funktionen Math.sin(), Math.cos, Math.tan(). Damit kann man beispielsweise die Drehwinkel eines Movieclips berechnen oder die Richtung und Geschwindigkeit eines MCs in Flashspielen berechnen.
Super Beispiel SWF Sinus & Cosinus, Beispiel von Harald Krauß
http://www.hutschdorf.de/
Zur Auffrischung empfehle ich die Seite: http://www.mathematik.net/trigonometrie/tr.htm
Die dort vorgestellten Erklärungen kann man in folgendem Flashfilm ausprobieren.
Siehe auch meine AS3 Tipps Trigonometrie
Beispiel SWF anschauen Dreiecksberechnung AS3 Tipp
Beispiel SWF
anschauen oder download trigo.fla
Bogenmaßwerte lassen sich wie folgt berechnen:
bogenlaenge = Math.PI/180 * gradIm folgenden Beispiel wird die Gleichung als Parameter zum Berechnen des Sinus eines 45-Grad-Winkels übergeben:
Math.SIN(Math.PI/180 * 45)
Mit folgender Formel rechnet man Bogenmaß in Grad um:
grad=(bogenmaß / Math.PI) * 180
Hiermit rechnet man Grad in Bogenmaß um:
bogenmaß = (grad/180) * Math.PI
Die Umrechnung wird noch einfacher, wenn man sich eine Konstante erstellt. Hier AS3 Code
public static const RAD:Number = 180 / Math.PI;
// bogenmass = w/RAD;
// grad = w*RAD;
Hier werden folgende Funktionen erklärt: Math.sin(); Math.cos(); Math.tan(); Math.asin(); Math.acos(); Math.atan(); Math.Pi;
Programmierte Bewegung und Hittest
Dieses Beispiel ist in dem SWF Beispiel teilweise erklärt, was fehlt, ist das Stoppen vor Häusern und anderen Hindernissen. Das Beispiel gibt es nicht als fla Datei, aber ich erkläre euch, wie es geht.
Erstelle dir einen MC, in dem du überall dort wo sich ein Haus oder Hinderniss befindet eine Grafik hinterlegst. Dieser MC bekommt ein paar Hittestabfragen. Einmal wenn das Auto vorwärts fährt, also c oder die Hypotenuse größer als 0 ist und einmal wenn es rückwärts fährt. Wenn es vorwärts fährt, fragst du auf einen x y Wert ab, der vorne am Auto liegt und in der if-Bedingung für rückwärtige Bewegung sollte der Punkt hinten liegen. Dazu musst du dir diese Punkte des Autos mit der localToGlobal Methode umwandeln. Setze die Geschwindigkeit auf 0, wenn eine der Bedingungen erfüllt ist. Eigentlich ganz einfach, wenn man weiß, wie es geht. Anstatt das Auto zu bewegen, kann man natürlich auch den MC mit dem Hintergrundbild bewegen, allerdings genau in Gegenrichtung. Dort kann man dann auch gleich den MC mit den Hindernissen hinter dem Hintergrundbild einfügen. Außerdem kann man noch einen weiteren MC einfügen, der als programmierte Maske für das Auto dient, damit es unter Bäumen hindurchfährt. Alles, was man braucht wird hier in den einzelnen Themen erklärt. Wenn man es ganz perfekt machen will, kan man 4 Punkte und if-Bedingungen definieren und zwar für jede Ecke des Autos. Man sollte auch die Geschwindigkeit mit einbeziehen, damit das Auto auch bei hohen Geschwindigkeiten vor einem Haus stoppt. Hier nun eine der If-Bediungen:
if (_root.bild_mc.hind_mc.hittest(vgx, vgy, true) && _root.c>0) {
_root.c = 0;
}
Hierbei sind vgx und vgy die X-Y Koordinaten eines Punktes vor dem Auto, welcher mit localToGlobal umgewandelt wurde. c ist die Hypotenuse oder Geschwindigkeit. hind_mc ist der MC mit den Hindernissgrafiken welcher im MC mit dem Hintergrundbild eingefügt ist (bild-mc).
Warum localToGlobal, wenn sich doch das Auto im Hauptilm befindet, könnte man doch gleich den x und y wert mit ein paar zusätlichen Pixeln für vorne und hinten nehmen? Nein, denn das Auto dreht sich und daher ist vorne mal oben mal unten mal rechts mal links vom Mittelpunkt des Autos aus gesehen.
Will man Flashspiele programmieren, so kann es schon mal vorkommen, dass Raketen oder Fahrzeuge also Movieclips auf eine bestimmte Zielposition gedreht werden sollen. Mittels Math.atan2() lässt sich die Drehung eines MCs auf einen bestimmten Punkt im Koordinatensystem drehen. Die Funktion erwartet _y und _x Wert des Punktes.
Beispiel SWF anschauenoder download atan2.fla
Hier wird folgende Funktion erklärt:
Math.atan2();
Beispiel SWF anschauen siehe Seite 10 bewegung.fla
Siehe auch folgende Seite, dort wird dieses Thema ausführlicher als hier erläutert.
Hier kann man jede Taste auf ihren ASCII Code hin überprüfen.
Eigenschaft |
Beschreibung |
---|---|
Key.BACKSPACE |
Konstante, die dem Tastencodewert für die Rückschritttaste (8) zugeordnet ist. |
Key.CAPSLOCK |
Konstante, die dem Tastencodewert für die Feststelltaste (20) zugeordnet ist. |
Key.CONTROL |
Konstante, die dem Tastencodewert für die Taste |
Key.DELETEKEY |
Konstante, die dem Tastencodewert für die Taste |
Key.DOWN |
Konstante, die dem Tastencodewert für die Nach-unten-Taste (40) zugeordnet ist. |
Key.END |
Konstante, die dem Tastencodewert für die Taste |
Key.ENTER |
Konstante, die dem Tastencodewert für die Eingabetaste (13) zugeordnet ist. |
Key.ESCAPE |
Konstante, die dem Tastencodewert für die Taste |
Key.HOME |
Konstante, die dem Tastencodewert für die Taste |
Key.INSERT |
Konstante, die dem Tastencodewert für die Taste |
Key.LEFT |
Konstante, die dem Tastencodewert für die Nach-links-Taste (37) zugeordnet ist. |
Key.PGDN |
Konstante, die dem Tastencodewert für die Bild-ab-Taste (34) zugeordnet ist. |
Key.PGUP |
Konstante, die dem Tastencodewert für die Bild-auf-Taste (33) zugeordnet ist. |
Key.RIGHT |
Konstante, die dem Tastencodewert für die Nach-rechts-Taste (39) zugeordnet ist. |
Key.SHIFT |
Konstante, die dem Tastencodewert für die Umschalttaste (16) zugeordnet ist. |
Key.SPACE |
Konstante, die dem Tastencodewert für die Leertaste (32) zugeordnet ist. |
Key.TAB |
Konstante, die dem Tastencodewert für die Tabulatortaste (9) zugeordnet ist. |
Key.UP |
Konstante, die dem Tastencodewert für die Nach-oben-Taste (38) zugeordnet ist. |
onClipEvent (enterFrame) {
if ((Key.isDown(Key.RIGHT))) {
irgendeine Anweisung;
}
}
Beispiel SWF anschauen oder download setFocus.fla
Wenn man über Tastaturbefehle bestimmte Aktionen aufrufen will und hat aber gleichzeitig ein Textfeld, in das der User Eingaben machen kann, so hat man ein Problem. Das Aufrufen per Buttons und dem Eventhandler per Tastatur kann man gar nicht benutzen, da der Buchstabe, welcher als EventHandler des Buttons reserviert ist im Textfeld nicht erscheint. Stattdessen benutzt man die Funktion Key.addListener und überprüft, ob das Textfeld ausgewählt ist oder nicht. Das kann man mit den EventHandler onSetFocus() und onKillFocus() machen.
Beispiel SWF anschauen oder download perspektive.fla
Die hier vorgestellte Methode ist eine einfache Formel für einfache Animationen oder Spiele. Man kann es auch als Vorbereitung für den nächsten Tipp nutzen, oder gleich im nächsten Tipp lernen, wie man in Flash mit 3D arbeiten kann.
Beispiel SWF anschauen oder download 3d.fla
3D in Flash
Flash ist keine 3D Anwendung, da man aber mit Flash rechnen kann, kann man sich die x, y, z Koordinaten und die sich daraus ergebenden perspektivischen Gesetzmäßigkeiten mittels Funktionen errechnen. Ein sehr anschauliches, gut zu verstehendes Tutorial (allerdings nur in englisch) findet ihr bei http://www.kirupa.com
Wichtig sind folgende Punkte
Je weiter sich ein Objekt auf der z Achse nach hinten bewegt, desto kleiner wird es. Auch die Wege auf der x und y Achse werden hinten kleiner.
Ein Objekt das auf der z Achse hinten liegt, muss von Objekten, die weiter vorne liegen und es überschneiden, verdeckt werden. Das regelt man über swapDepths.
Hier noch ein Beispiel, welches man sich auch aus den programmierten Bewegungen ableiten kann.
Bei der Datenübertragung beispielsweise aus einer Textdatei, taucht immer wieder der Begriff URL Codierung auf. Das bedeutet einerseits, dass man hier das Schema Variable=Wert einhalten muss (kein Leerzeichen dazwischen). Weitere Variablen werden mit kaufmännischem & angehängt. Außerdem dürfen keine Sonderzeichen und Umlaute enthalten sein. Eine Auflistung der Sonderzeichen (Latin1) findet man unter:
http://www.unicode.org/charts/PDF/U0080.pdf
http://www.unicode.org
Ab Flash MX wurde die interne Codierung von Latin 1 (systemabhängige Codierung) auf UTF 8 (systemunabhängige Codierung) umgestellt. Siehe dazu diesen Beitrag auf www.tutorials.de
Am besten man speichert die externen Textdateien / Phpseiten etc, die mit Flash eingelesen werden, als UTF 8 ab, oder man benutzt folgenden Befehl um auf Latin 1 umzuschalten:
system.useCodePage=true;
Wie schon gesagt ist der Standard ab Flash MX UTF 8. Der Befehl dazu lautet:
system.useCodePage=false;
Hier wird es erklärt
http://de.selfhtml.org/inter/index.htm
http://de.selfhtml.org/inter/unicode.htm
(Beispiel
Fla Datei downloaden) formular.fla
Wenn man ein E-mail Formular zum Absenden per CGI mit Flash erstellen
will, braucht man natürlich auch einen Provider, der einem diese
Möglichkeit zur Verfügung stellt.
Also müßt ihr euch zuerst einmal um dieses Problem kümmern
und euch die dementsprechende CGI Adresse besorgen. Diejenigen, die wie
ich, bei Strato sind können einfach weiterlesen.
Hier noch ein Beispiel für ein Emailformular mit PHP und hier die Formular UI Komponenten von Flash 8.
Weitere Variablen oder hidden Fields, wie sie bei Strato,
so auch bei vielen anderen CGI Scripten üblich sind. |
||
Variable oder hidden field | Wert oder value | Erklärung |
---|---|---|
subject | Mail Formular der Homepage | die Betreffzeile der E-mail |
print_config | email,subject,realname | die Eintragungen stehen nicht nur im Head sondern werden auch noch einmal mit den anderen Formularinhalten im Body der Mail wiedergegeben. (siehe Punkt 2) |
sort | alphabetic | die Formulardaten werden alphabetisch sortiert, sinnvoll bei Bestellungen |
redirect | http://www.ihredomain.de/bestätigung.html | Gefällt einem die Bestätigunsseite des Providers nicht, kann man hier auch eine eigene Seite anzeigen lassen, die nach erfolgreichem Übersenden des Formulars angezeigt wird. |
required | name,strasse,ort | Diese Felder müssen ausgefüllt werden. |
print_blank_fields | 1 | Auch leere Felder werden übertragen. |
(Beispiel
Fla Datei downloaden) fscommand.fla
mit der Action fscommand, kann man den Projector also das Programm welches
den Flashfilm abspielt: beenden, das Menü ausblenden, die wirkliche Filmgröße
herstellen, den Film als Fullscreen darstellen oder in älteren Versionen eine eine exe Datei aufrufen.
Hier ein Auszug aus der Flash Hilfe. Das Ganze funktioniert übrigens
nicht in der Arbeitsumgebung von Flash.
fscommand("fullscreen", "true");
import flash.display.StageDisplayState;
stage.displayState = StageDisplayState.FULL_SCREEN;
Man schaltet folgendermaßen zurück auf den Fenstermodus
stage.displayState = StageDisplayState.NORMAL;
Weitere Funktionen passend zum Thema:
siehe auch AdobeReferenz scaleMode ,
displayState
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.scaleMode = StageScaleMode.SHOW_ALL;
stage.align = StageAlign.TOP_LEFT;
siehe auch den Tipp "fullscreen vom Browserfenster aus"
Anstelle des AS2 Befehls fscommand("quit") kann man in AS3 den Projektor mit folgendem Befehl schließen:
System.exit(0);
Außerdem muss flash.system.System importiert werden.
Hier ein Button, der den Projektor schließt
this.close_btn.addEventListener(MouseEvent.CLICK, closePlayer);
function closePlayer(evt:MouseEvent):void {
System.exit(0);
}
Befehl | Argumente | Funktion |
---|---|---|
|
Keine |
Schließt den Projektor. |
|
|
Mit |
|
|
Mit |
|
|
Mit |
|
Pfad der Anwendung |
Startet eine Anwendung also exe Datei aus dem Projektor heraus. |
Mit fscommand kann man auch andere Scriptsprachen wie Javascript ansprechen.
Die beiden Parameter Befehl und Argumente (command, args) werden an die
Javascript Funktion übergeben. Siehe dazu den Beispielfilm meinFilm.swf.
Weitere Infos zum Thema Flash und Javascript hier.
Beispiel
SWF anschauen
oder download meinFilm.fla NEU
Hier noch ein ausführlicher
Beitrag zum Thema bei Selfhtml
Thema: Live Connect
Beispiel
SWF anschauen oder download windowopen.htm, windowopen.fla
Dieser Html code kommt in den Head Tag der Html Seite, in der der Flashfilm
eingebunden ist:
<SCRIPT LANGUAGE="JavaScript">
var javascript_version = 1.0;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1"> javascript_version =
1.1;</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
var newwin;
function launchwin(winurl,winname,winfeatures)
{
newwin = window.open(winurl,winname,winfeatures);
if(javascript_version > 1.0)
{
setTimeout('newwin.focus();',250);
}
}
</SCRIPT>
Siehe auch Javascript
mit fscommand
Weitere Infos zum Thema Javascript und Flash findet man bei Colin
Moock, allerdings in englisch.
Hier noch ein ausführlicher Beitrag zum Thema bei Selfhtml
Thema Live Connect
Für den nächsten Tipp siehe auch den flashVars Artikel bei Macromedia
Beispiel SWF anschauen Unterordner flsExpl/ flashVars/ flashVars3.html, flashVars3.swf
In diesem Beispiel kommuniziert der Flashfilm mit Javascript. Eine Funktion mit Javascript überträgt den Wert einer Variablen an den Flashfilm.
Ab Flash MX ist es sehr einfach die Schlüsselbilder eines Flashfilms
per Html Link anzusteuern. Das war mit Flash5 nur über den Umweg
mit Javascript möglich, siehe dazu eine englische Anleitung von Colin
Moock
In Flash MX klicke gewünschtes Schlüsselbild in der Zeitleiste
an, vergebe im Eigenschaftenfenster einen Bildnamen und aktiviere die Option
"Benannter Anker". Unter Datei / Einstellung für Veröffentlichung, wähle im Karteireiter Html unter Vorlage: Flash mit benannten Anker. Nun braucht man im Html Dokument nur einen
ganz normalen Link auf diesen Ankerpunkt zu setzen.
<a href="#bildname">Ankerlink</a>
Beispiel SWF anschauen
anker.fla, anker2.fla, anker.htm, anker2.htm
Wenn man die links auf der gleichen Seite einfügt funktioniert es
auch, allerdings hatte ich Probleme mit Framesets und außerdem gibt
es Unterschiede zwischen IE und Netscape 4.7. Ich wäre sehr dankbar,
wenn mir jemand mehr dazu schreiben
könnte.
Hier noch eine andere Methode mit dem SWF Object. Das Thema habe ich auf der ersten Seite schon angesprochen. Siehe dazu die deutsche Übersetzung von powerflasher.
In meinem Beispiel habe ich in einem Frameset Links gesetzt, die bestimmte Bilder der Zeitleiste des Flashfilms aufrufen. Siehe folgendes Beispiel FlsExpl/bilderlinks. Dort befindet sich ausnahmsweise auch die fla Datei.
Siehe auch den Tipp Load Movie und Variablenübertragung. Hier werden auch bestimmte Bilder eines Flashfilms aufgerufen. Die Filme werden mit der Load Movie Methode geladen.
Beispiel
SWF anschauen (FRAMESET) oder download sharedempf.fla, sharedsend.fla
Ab Flash MX ist es möglich zwischen 2 SWF Filmen Daten auszutauschen,
oder um es anders auszudrücken, Aktionen in einem Flashfilm aufzurufen,
die dann im anderen Flashfilm ausgeführt werden. Dabei ist es egal,
ob 2 Player geöffnet sind, oder die beiden Filme in unterschiedlichen
Frames eines Framesets liegen oder in verschiedenen Browserfenstern.
z.B.:
siehe hier
Achtung!! Achte darauf, dass mein Beispielfim geschlossen ist, wenn du deinen eigenen ausprobierst. Wenn du die Actions nicht in Buttons, sondern in Schlüsselbildern einfügen willst, dann füge sie nacheinandern in mehrere Schlüsselbilder ein und nicht alle Aktionen ins erste Bild.
Siehe auch Variablen importieren/ exportieren mit loadMovie, Variablen aus Textdatei, loadVars Klasse
Hier werden folgende Aktionen erklärt:localConnection(); new LocalConnection(); localConnection.connect(); localConnection.send(); LocalConnection.close();
das Thema gibt es auf dieser Seite auch als Schritt für Schritt Anleitung
(Beispiel
Fla Datei downloaden)
Die von mir vorgestellte Lösung ist mittlerweile veraltet. Beim Einbinden des Flashfilms, kann man überprüfen, welcher Player installiert ist und gegebenenfalls auf die Downloadseite bei Adobe umleiten. Siehe erste Seite. SWF Object/ Einbinden des Flashfilms.
Will man einen Film erstellen der einfach nur erkennen soll, ob das Flash
1 Plugin installiert ist oder nicht, erstellt man einen kleinen Film mit
der Aktion getURL. Dabei gibt man die Url zu der Seite mit dem Flash Film
an, sofern kein Flash Plugin vorhanden ist, wird einfach nicht weitergeleitet.
Will man für jede Plugin Version eine andere Seite aufrufen, macht
man sich folgende Tatsache zu nutze.
Wenn man in Flash Aktionen benutzt, die es in einer früheren Version
noch nicht gab, werden diese Aktionen einfach nicht ausgeführt, sofern
man das entsprechende Plugin nicht hat. Der Film wird aber trotzdem soweit
als möglich ausgeführt.
Wenn ihr überprüfen wollt, welche Aktionen in welcher Version
schon da waren und welche nicht, setzt ihr einfach die gewünschte
Aktion ein, und stellt unter Datei / Einstellungen für Veröffentlichungen
/.. Flash .. (ganz unten Version) die gewünschte Version ein. Wenn
ihr nun auf Veröffentlichen oder Strg Enter klickt, erscheint eine
Meldung, dass der Film Aktionen oder Objekte benutzt, die in dieser
Version noch nicht zur Verfügung standen. Außerdem werden die Actions
im Bedienfeld Actions gelb hinterlegt, wenn die eingestellte Player Version
sie nicht kennt.
Ich beschreibe nun mal eine Flash Erkennung, die ich mir gebastelt habe.
Ein Flash movie mit mehreren Schlüsselbildern.
Flash6
Im ersten Frame oder Bild wird eine globale Variable mittels _global definiert.
Dieses Schreibweise erkennt der Player 5 nicht. Außerdem wird eine
Filmsequenz eingefügt , die diese Variable in einer if Struktur überprüft.
Bei Erfolg wird auf flash6.htm weitergeleitet, alle früheren Player
Versionen ignorieren diese Action und der Film läuft weiter.
Action im ersten Bild
_global.x = 1;
Action im ersten Bild der Filmsequenz
if (x==1) {
getURL("flash6.htm");
_root.stop();
}
Flash5
In diesem Frame befindet sich eine Filmsequenz, welche nachfolgende Aktionen
enthält. Einer Filmsequenz konnte man erst ab Flash 5 Aktionen direkt
zuordnen, von daher werden alle früheren Versionen die Aktionen ignorieren
und der Film wird weiterlaufen.
onClipEvent (load) {
getURL ("flash5.htm");
_root.stop();
}
Flash4
Etwas weiter in der Timeline kommt das nächste Schlüsselbild
für die Flash 4 Erkennung. Hier bekommt das Schlüsselbild nachfolgende
Aktionen zugewiesen, welche mit Variablen arbeiten. Das war mit Flash
3 noch nicht möglich.
x = 1;
if (x==1) {
getURL ("flash4.htm");
tellTarget ("_level0") {
stop ();
}
}
Flash3
Dann folgt der Keyframe für Flash 3. Hier wird wieder eine Filmsequenz
eingebettet. Filmsequenzen gab es in Flash 2 noch nicht. Die Filmsequenz
(nicht der Hauptfilm) bekommt im ersten Frame nachfolgende Aktion.
getURL ("flash3.htm");
tellTarget ("_level0") {
stop ();
}
Flash2
Im letzten Schlüsselbild für Flash 2 wird die Aktion dem Schlüsselbild
zugewiesen.
stop ();
getURL ("flash2.htm");
Flash1
hab ich mir geschenkt, das hat sowieso keiner. Sollte überhaupt kein
Flash Player installiert sein, werden alle Aktionen ignoriert und die
Seite wird nicht weitergeleitet.
Hier kann man sich das Ganze mal
in der Praxis anschauen. Ich konnte leider nicht testen, ob das bei
älteren Plugins funktioniert. Ich kann mir auch nicht vorstellen, dass es irgendwo noch einen Rechner gibt, mit Flash2 Plugin.
Man kann allerdings auch ohne einen Flash Player mittels VB Script eine Abfrage starten. Der folgenden Quelltext, generiert bei Flash Planet leitet auf die Seite flashstart.htm um, sofern Flash installiert ist und auf die Seite noflashstart.htm wenn kein Player installiert ist.
<HTML>
<HEAD>
<TITLE>FlashErkennung von Flash Planet</TITLE>
<meta name="GENERATOR" content="FlashPlanet.com Script
Generator">
</HEAD>
<BODY BGCOLOR=#000000 TEXT=FFFFFF LINK=FFFFFF>
<SCRIPT
LANGUAGE="JavaScript">
<!--
var useFlash = navigator.mimeTypes &&
navigator.mimeTypes["application/x-shockwave-flash"] &&
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;
//-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
On error resume next
useFlash = NOT IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))
-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
if ( useFlash ) {
window.location = "flashstart.htm";
} else {
window.location = "noflashstart.htm";
}
//-->
</SCRIPT>
</BODY>
</HTML>
Flash
5, Flash MX und höher
Mit der Aktion getVersion() wird die Version des Players abgefragt, das
ist erst ab Flash 5 möglich. Alle früheren Versionen werden
die Aktionen wahrscheinlich ignorieren. Der Wert der Aktion getVersion()
könnte zum Beispiel so aussehen WIN 0,6,40,0. Es ist das Betriebssystem,
Plugin Version und Unterversion.
Beispiel SWF anschauen oder download url.swf
AS3 den Pfad bestimmt man in AS3 mit: stage.loaderInfo.url
Mittels der Movieclip Eigenschaft _url kann man den Pfad eines Movies (swf-Datei) erhalten. Dadurch hat man die Möglichkeit die Veröffentlichung des Films auf ausgewählte Domains zu beschränken. Der Datenklau im Internet wird somit verhindert.
Die hier vorgestellte Lösung bietet keinen hunderprozentigen Schutz, aber für Otto Normalverbraucher sollte es reichen. Bei Flashhilfe.de hat Bill da Macha eine Komponente erstellt, die zusammen mit PHP eine richtig sichere Lösung bereitstellt.
Mit System.security.allowDomain(domain1, domain2, domain3.... domainN)
Ab Flashplayer 6 kann man Filme, die mittels Load Movie geladen wurden, nicht mehr so ohne weiteres vom Hauptfilm oder von anderer Stelle aus steuern, wenn der geladene Film auf einer anderen Domain liegt. Der geladene Film muss explizit andere Domains freigeben.
System.security.allowDomain("www.on-design.de");
Actions dieses Tipps:
Movieclip._url; System.security.allowDomain(domain1, domain2)
Beispiel SWF anschauen oder download breitHoehe.fla
Will man in Flash die Bildschirmgröße abfragen, um dann den Falshfilm je nach Größe zu skalieren oder nicht, so geht das mit:
System.capabilities.screenResolutionX übergibt die Breite des Bildschirms. Wie man die Höhe ermittelt brauch ich wohl kaum zu erwähnen. Beachte, das es in FalshMX ein Bug im Actionfenster gibt. Dort wird vor dem x oder y ein Punkt gesetzt. Richtig ist diese Schreibweise ohne Punkt und X und Y werden groß geschrieben.
Stage.width über gibt die Breite des Anzeigenfensters, also der Platz, der Flash zur Laufzeit zur Verfügung steht in Pixeln.
Actions dieses Tipps:
System.capabilities.screenResolutionX System.capabilities.screenResolutionY, Stage.width, Stage.height.
Beispiel SWF anschauen oder download textfelder.fla
Siehe auch die Beispiele für AS3
Im Eigenschaftenfenster kann man dynamische Textfelder auch auf Html Text einstellen.
meinHtmlText="Hier <b>ein</b> Text mit <a href='http://www.pastorpixel.de'>Link</a>";
_root.meinTextfeld.htmlText=meinHtmlText;
Wie man sieht kann man auch Links auf die Art einfügen.
Selbstverständlich ist das auch mit dynamisch erzeugten Textfeldern möglich.
meinHtmlText="Hier <b>ein</b> Text mit <a href='http://www.pastorpixel.de'>Link</a>";
_root.createTextField("txt",1,20,20,200,20);
_root.txt.html = true;
_root.txt.htmlText =meinHtmlText;
hier werden folgende Actions erklärt:
Textfield.text; textfield.background; textfield.textColor; textfield.backgroundColor; textfield.border; textfield.borderColor; textfield.scroll; MovieClip.createTextfield(); textfield.removeTextfield(); new textFormat(); textFormat.size; textFormat.font; textField.setTextFormat(); textField.embedFonts();
Beispiel SWF anschauen oder download typewriter.fla, string.fla
Das
Fenster kann man (rechts unten) größer ziehen!
Siehe auch den Tipp Array mit weiteren Beispielen zu split(), join() sort etc.
Hier werden verschiedene Abfragen bzw. Probleme behandelt : Namen von Filmsequenzen, ASCII Code einzelner Buchstaben, Zielpfade von Filmsequenzen und Passwortabfragen, Eingaben in Textfeldern, Suchen von Worten in einem Text. Suchen ersetzen in Flash.
Hier noch ein praktisches Beispiel mit dem man sich aus eine Preisausgabe formatieren kann, die 2 Stellen hinter dem Komma anzeigt und ein "EUR" hinten anstellt.
function preisausgabe(x) {
if (!x) {
x = 0;
}
if (x == 0) {
return ("0.00 EUR");
} else {
x = String(x);
a = Number(x.indexOf(".")+1);
b = x.substr(a, 2);
if (b.length==1) {
x = x+"0";
}else if(!a){
x=x+".00";
}
return (x+" EUR");
}
}
Wie stellt man einen Exponenten (Hochzahl) in einem dynamischen Textfeld in Flash dar?
Fläche 20 m²
Man wählt im Eigenschaftenfenster, Schriftarten einbetten, und fügt in dem Feld für extra Zeichen die Potenzzahl ein. So liegt beispielsweise die 2 auf der Taste 2 mit Alt Gr Taste.
flaeche.text="20 m²";
Steuerzeichen in Strings
In Strings können Steuerzeichen eingesetzt werden, um beispielsweise neue Zeilen zu erzeugen:
\" doppeltes Anführungszeichen
\' einfaches Anrührungszeichen
\\ Backslash
\b Backspace (Rückschritt)
\e Escape-Sequenzen
\f Seitenvorschub
\n Zeilenvorschub (newline)
\r Wagenrücklauf (Carriage return)
\t horizontaler Tabulator
\x hexadezimaler Wert
\u ein beliebiges Unicode Zeichen in hexadezimaler Schreibweise kann hier angehängt werden, z.B:
\u0024
wäre das Dollarzeichen. Unter Windows Start/ Programme/ Zubehör/ Systemprogramme / Zeichentabelle, kann man sich alle Zeichen und Unicodes anzeigen lassen. Apropos Dollarzeichen, haben Sie schon mal etwas für mein Tutorial gespendet?
hier werden folgende Actions erklärt:
substr(); indexOf(); lastIndexOf(); eq; toLowerCase(); ord(); chr();split(); join();
Funktion |
Parameter |
Beispiel |
Definition |
---|---|---|---|
Length |
length |
a="Pastor"; |
Anzahl der Zeichen in einer Zeichenfolge. |
substr() | substr(start,länge) | a="Pastor"; Ergebnis: sto |
Ermittelt eine Teilzeichenfolge aus einem String vom Startindex bis zum Ende. Beginn bei 0, der zweite Parameter ist optional und bestimmt die Anzahl der Zeichen. |
substring() | substr(start, endindex) | a="Pastor"; Ergebnis: as |
Ermittelt eine Teilzeichenfolge aus einem String vom Startindex, Beginn bei 0. Der zweite Parameter bestimmt den Endindex und nicht die Anzahl der Zeichen. Der Endindex wird nicht in die Teilzeichenfolge aufgenommen. |
slice() | slice(start, endindex) | a="Pastor"; |
Extrahiert aus einem String eine Teilzeichenfolge vom Startindex, beginnend bei 0 bis zum Ende. Der zweite Parameter ist optional und bestimmt das letzte zu extrahierende Zeichen. |
toLowerCase() | toLowerCase() | a="Pastor"; b=a.toLowerCase(); ergebnis: pastor |
Gibt eine Kopie des String-Objekts zurück, in der alle Großbuchstaben in Kleinbuchstaben umgewandelt werden. |
toUpperCase() | toUpperCase() | a="Pastor"; b=a.toUpperCase(); ergebnis: PASTOR |
Gibt eine Kopie des String-Objekts zurück, in der alle Kleinbuchstaben in Grossbuchstaben umgewandelt werden. |
eq | string eq string | str1="doof"; str2="bleibt"; str3="doof"; str1 eq str2 ergibt false str1 eq str2 ergibt true |
Vergleichsoperator
für Strings, liefert true oder false |
concat() | concat(string) | a="Pastor" b=a.concat("Pixel") Ergebnis: PastorPixel |
Verkettet den String, mit dem Wert des Parameters von concat |
indexOf() | indexOf(Teilstring, StartSuchposition) | a="Pastor Pixel"; b=indexOf("P"); Ergebnis: 0 c=indexOf("P", 5) Ergebnis: 7 |
Durchsucht den String nach einem Teilstring und gibt als Ergebnis die Position des ersten Vorkommens des Teilstrings zurück. Ist der Teilstring nicht vorhanden, wird -1 zurückgegeben. Als zweiten Parameter kann man die Position eingeben, ab der der String durchsucht werden soll. |
lastIndexOf() | lastIndexOf(Teilstring, StartSuchposition) | a="Pastor Pixel"; b=lastIndexOf("P"); Ergebnis: 7 |
durchsucht den String nach einem Teilstring und gibt die Position des letzten Vorkommens zurück. Der zweite, optionale Parameter gibt die Startposition an, ab der gesucht werden soll. |
charAt() |
charAt(Position) |
a="Pastor"; Ergebnis: o |
ermittelt das Zeichen, aus der Position, Beginn bei 0 |
charCodeAt() |
charAt(Position) |
a="Pastor"; Ergebnis: 111 |
Ermittelt den ASCII Zeichenwert, aus der Position, Beginn bei 0 |
Diese beiden Funktionen sind zwar keine String Funktionen passen aber gut zum Thema. | |||
chr() | chr(ASCII-Wert) | i=chr(111); Ergebnis: o |
ermittelt das Zeichen aus der numerischen Angabe des ASCII Wertes |
ord() |
ord ("character") |
j=ord (o); Ergebnis: 111 |
ermittelt den numerischen Wert eines
Ascii Zeichens (also quasi Chr umgekehrt :-) |
(Beispiel
Fla Datei downloaden) Unterordner: textladen, textladen.fla (text.txt,
text1.as, text2.as, text3.as)
Beispiel
SWF anschauen
oder download
Es gibt verschiedene Möglichkeiten Text bzw. Actions aus externen Dateien zu laden.
Actions laden über die Aktion #include="text.as" Dabei wird Actionscript, der mit der Endung as abgespeichert wird, geladen und ausgeführt Den Text kann man nach dem Veröffentlichen nicht ändern. Man muss nach Änderung des Textes die fla Datei erneut in Flash laden und den Film neu veröffentlichen. Man setzt diese Methode in erster Linie dazu ein, um Actionscript, der von mehreren Filmen benutzt wird, auszulagern.
Das Textfeld bekommt in den Textoptionen folgenden Einstellungen:
Des weiteren darf der Text in der Textdatei keine Zeilenumbrüche und keine Anführungszeichen haben. Die Anführungszeichen aus Html Tags müssen mit der suchen ersetzen Funktion des Texteditors in einfache Anführungszeichen ersetzt werden.
Eine andere Möglichkeit ist den Text über
loadVariablesNum ("Text.txt", 0); Dabei ersetzt der geladene
Text eventuell vorhandenen Text. Die Schriftformatierungen des Textfeldes
werden übernommen.
Der Text wird in einer Textdatei mit Endung txt abgelegt.
Am Anfang steht der Variablenname des Textfeldes gefolgt von einem Gleichheitszeichen.
Die Leerzeichen des Textes mussten in Flash 4 durch + Zeichen ersetzt werden.
Das ist bei neueren Flashplayern nicht mehr nötig. Weitere Variablen
werden mit dem kaufmännischem & verbunden z.B.: text1=...... &text2=...
etc. Weitere Textoptionen sind:
Die Zeichencodierung spielt außerdem eine Rolle, die ich zugegebenermaßen nicht ganz verstanden habe. Von serverseitigen Scripts werden die Zeichen in der Regel URL codiert übertragen. In Textdateien sollte dies manuell übernommen werden. Ich speichere die Textdateien mit Windows Notepad im Dialogfeld von
mit der Codierung UTF 8 ab. Dabei lasse ich die Sonderzeichen, ö,ä,ü,ß etc. wie sie sind.
Die Variablen werden auf der Seite, in der die SWF Datei eingebunden ist deklariert. Die Variablen stehen zur Laufzeit der SWF Datei zur Verfügung
Beispiel SWF anschauen fla Datei siehe Unterordner flashVars/flashVars2.html (loadVars2.swf, loadVars2.php)
Man kann Variablen aus einer Html Seite an den Flashfilm übertragen indem man sie im Objekt Tag des Quellcodes anhängt. siehe auch loadVars Tipp bei Macromedia. In obigen SWF Beispiel wird das genauer erklärt.
Mittels flashvars Variablen in AS3 an die SWF Datei zu übertragen siehe dazu diesen Link http://www.dimitrij-pankratz.de/flashvars-mit-as3/
Der gleiche Swf Film wird beim weiterklicken in einer PHP Seite angezeigt, wobei er den Wert der Variablen per PHP erhält. Hiermit lässt sich eine Fülle von Anwendungen erstellen, sofern man PHP kann.
Da es mittlerweile nötig ist Flashfilme auf andere Art einzubinden, damit sie auch im IE richtig angezeigt werden, kann man die Variablen auch anders im Html einbinden siehe dazu folgenden Link: http://blog.deconcept.com/swfobject/
Speichert euch diese Datei swfobject.js im gleichen Ordner ab und bindet den Flashfilm folgendermaßen auf der Htmlseite ein. In diesem Beispiel werden ein paar Variablen (li, mi, re) mit den Werten (links.htm, home.htm, rechts.htm) angehängt.
<script type="text/javascript" src="swfobject.js"></script>
<div id="flashcontent"> Dieser Text wird vom Flashmovie ersetzt. Er erscheint nur wenn kein Flashplugin vorhanden ist. </div>
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
so.addVariable("li", "links.htm");
so.addVariable("mi", "home.htm");
so.addVariable("re", "rechts.htm");
so.write("flashcontent");
</script>
Siehe auch
Variablen übertragen aus der Html Seite (z.B. mit Textlink) nach Flash mittels Javascript siehe hier.
Beispiel
SWF anschauen fla Datei siehe Unterordner textphp
siehe auch nächsten Tipp load Vars
Um Variablen an eine Php-Datei zu übertragen reicht die Methode getUrl. Gebe den Pfad zur PHP-Datei (oder sonstige) an, wähle get oder post und alle Variablen der Zeitleiste werden übertragen, genau wie Formulardaten eines Html Formulars.
in den Flash-Beispielen zum Runterladen befindet sich ein Unterordner textphp. Dort ist ein Beispiel, wo Daten aus einer PHP Datei in einem Flashfilm angezeigt werden. Außerdem befindet sich in meinen PHP Tipps noch ein Beispiel einer Highscoreliste mit Flash und PHP.
Ab Flash 6 importiert oder exportiert man Variablen aus externen Quellen mit der Load-Vars Klasse
Hiermit kann man Variablen laden und auch senden, beispielweise um mit Flash einen Download Counter zu erstellen.
Folgende Methoden werden eingesetzt (LoadVars ist hier ein selbstvergebener Name):
Externe Variablen abrufen
LoadVars.load()
ActionScript Variablen von Flash an serverseitiges Script übertragen
LoadVars.send()
ActionScript Variablen an serverseitiges Script übertragen und Ergebnisse in Flash empfangen
LoadVars.sendAndLoad()
Die Eigentschaft .loaded gibt den boolschen Wert true zurück, wenn die Daten erfolgreich geladen wurden.
LoadVars.loaded
Hier werden folgende Funktionen erklärt:
LoadVars.new loadVars(); LoadVarsObjekt.load(); LoadVarsObjekt.onLoad(); LoadVarsObjekt.send(); LoadVarsObjekt.sendAndLoad(); PHP, MySQL
Beispiel SWF anschauen dieses Beispiel funktioniert nur mit PHP (Unterordner loadVars)email.swf
Mit der sendAndLoad Methode, kann man sich auch ein Maiformular mit Flash erstellen, welches per PHP verschickt wird. Das Schöne an der sendAndLoad Methode ist, dass man nach Erfolg des Email Versendens, eine Erfolgsmeldung zurück bekommt. Da die PHP Mail funktion in eine if-Struktur eingebettet ist, wird bei Erfolg mit echo die Variable "anzeige" mit dem Wert "es hat geklappt" versehen, welche dann von Flash empfangen und angezeigt wird. echo ist eine PHP Funktion, die etwas auf die Seite schreibt. Selbstverständlich könnte man die Eingaben der Forumlarfelder oder Eingabefelder auch mit getURL an eine PHP Seite mit Emailfunktion schicken, allerdings würde sich in dem Fall die PHP Seite öffnen. Mit der Flash Actionscript Methode Send and Load wird eine Email verschickt und die Htmlseite mit dem Flashfilm bleibt geöffnet. Siehe auch meinen Tipp Flash 8 Komponenten, dort erfährt man wie man Radiobuttons, Auswahllisten etc. in einem Emailformular benutzt. Außerdem habe ich hier noch eine Lösung wie man eine Email verschickt mit dem CGI von Strato.
Noch ein Tipp, der ein bisschen Spamschutz bietet, nennt die PHP Seite nicht mailform.php oder so ähnlich. Außerdem solltet ihr die Empfängeradresse auch von Flash schicken lassen, anstatt sie direkt reinzuschreiben. Ich weiß nicht genau, ob es was nutzt, wer mehr weiß, kann mir schreiben. Das Deaktivieren der catch all Funktion eurer Emails, kann auch von Vorteil sein. Das ist eine Funktion, die ihr beim Einrichten eurer Emails, bei euren Provider einstellen müsst. Sie bewirkt, dass alle Emails, die die richtige Endung haben, ankommen. Oder mit anderen Worten, alles was vor dem @ steht ist egal z.B.: blödmann@meineAdresse.de, pillepop@meinAdresse.de ...etc.
Siehe auch XML und AS3
Dieses Beispiel besteht aus 2 fla Dateien und den dazugehörigen Textdateien und Flashfilmen.
xml.htm
Die hier aufgeführten Beispiele erklären zwar einigermaßen die Grundlagen. Ich emfehle allerdings unbedingt den Abschnitt über das DOM Modell in selfhtml nachzulesen.
http://de.selfhtml.org/dhtml/modelle/dom.htm
Siehe auch folgende Beispiele. Es handelt sich dabei um Übungen und Beispiele, die ich mit dem Buch: Flash 8 und PHP gemacht habe.
Will man hmtl Tags aus einer XML Datei auslesen, ohne dass diese als neue Knoten erscheinen, benutzt man CDATA. Alles, was zwischen CDATA steht, wird nicht von XML interpretiert. Siehe dazu folgenden Forumsbeitrag vom Flashguru Matthias Kanngießer
var xmld = new XML("<?xml version='1.0'>");
xmld.parseXML('<nachrichten><news><![CDATA[Hier <b>ein</b> Text ]]></news></nachrichten>');
_root.createTextField("txt",1,20,20,200,20);
_root.txt.html = true;
_root.txt.htmlText = xmld.firstChild.firstChild.firstChild.nodeValue;
Bestimmte Zeichen wie beispielsweise das kaufmännische und & darf man in XML nicht eingeben. Man kann diese Zeichen formatieren. Wichtig dabei ist, dass das Textfeld, welches die XML Daten anzeigen soll, auf html-Text eingestellt ist, entweder im Eigenschaftinspektor oder per Actionscript: Auch die Zuweisung im Textfeld geschieht folgendermaßen
my_txt.html = true;
my_txt.htmlText = m[1].childNodes;
Die XML Datei wird nicht in UTF-8 sondern in Iso angelegt:
<?xml version="1.0" encoding="iso-8859-1"?>
Damit wird der Latin 1 Zeichensatz benutzt. In folgender Selfhtml Tabelle werden die Codes für die einzelnen Zeichen angezeigt.
So ist beispielsweise der Code für das kaufmännische und & die Zahl 38. Die Formatierung erfolgt nach folgendem Schema:
&
Ein Zeilenumbruch sieht folgendermaßen aus:
Das Freewaretool Map of Chars leistet hier auch gute Dienste.
Außerdem sollte man Flash noch mitteilen auf Latin 1 umzuschalten:
system.useCodePage=true;
Siehe dazu auch folgenden Beitrag.
Hier wurden folgende Funktionen erklärt:
new XML(); ignoreWhite; firstChild; childNodes; attributes;
Flashbuttons mit Links aus Textdatei neues Frameset
Dieser Tipp kann extra runtergeladen werden,
in der offline Version befinden sich die Dateien unter FlsExpl/button
Beispiel SWF anschauen oder download soundobject.fla
Achtung!!! die fla Dateien befinden sich auf der Downloadseite unter flaBeispiele2
Außerdem funktioniert Seite 10 des SWF Beispiels nur online.
Bei der Komprimierung mp3 in 16 bit kann es sein, dass der Sound auf einigen Rechnern sehr verzerrt klingt. Achtet auch drauf, dass ihr unter Einstellungen für Veröffentlichung Audio Stream und Audio Ereignis richtig einstellt.
Hier noch ein Beispiel für einen einfachen on/off Schalter für Sound. Man erstelle sich einen MC mit zwei Bildern in der Zeitleiste. Ins erste Bild kommt ein Button, der den Sound ausstellt off_btn, ins zweite Bild kommt ein Button der Sound wieder anstellt on_btn.
Hauptfilm Bild 1
generalAudio = new Sound();
generalAudio.setVolume(100);
MC Bild 1
stop();
on_btn.onRelease = function() {
_root.generalAudio.setVolume(0);
gotoAndStop(2);
}
MC Bild 2
off_btn.onRelease = function() {
_root.generalAudio.setVolume(100);
gotoAndStop(1);
};
Hier werden folgende Funktionen erklärt:
Sound.new Sound(); Sound.attachSound(); Sound.start(), Sound.stop(), Sound.setVolume(); Sound.setPan(); Sound.getVolume(); Sound.getPan(); Sound.onSoundComplete(); Sound.duration; Sound.position, Sound.loadSound(), _soundbuftime();
Siehe auch den Tipp Schieberegler
Beispiel
SWF anschauen oder download soundslider.fla
Hier ein einfacher Schieberegler oder Scrollbalken, der sich vielseitig einsetzen
lässt
Achtung!!! download! Die fla Dateien und swf Dateien befinden sich in Beispiele2
Siehe auch Komponenten AS3
Ab Flash MX kann man Komponenten erstellen. Das sind Movieclips mit integriertem
Actionscript, wobei sich Parameter im Eigenschaften-Fenster einstellen
lassen. So kann man Elemente erstellen, die auch User ohne Actionscript
Kenntnisse nutzen können.
In Flash MX gibt es ein paar sogenannte UI Komponenten, mit vorgefertigten Actions und Elementen. Auch in den allgemeinen Bibliotheken gibt es einige dieser UI Komponenten.
Ab Flash MX 2004 gibt es Komponenten mit der Endung SWC, diese kommen in folgenden Ordner bzw. Unterordner:
C:\Programme\Macromedia\Flash MX 2004\de\Configuration\Components
Etwas weiter unten gibt es ein paar Links zu Download Seiten.
OLD VERSION | Komponenten selbst erstellen / Flash MX komponente.swf |
Beispiel SWF anschauen |
OLD VERSION | UI Komponenten / Flash MX komponenteUI.swf |
Beispiel SWF anschauen |
OLD VERSION | allgemeine Bibliotheken / Schaltfläche UI Komponenten / Fash MX soundslider.swf |
Beispiel SWF anschauen |
UI Komponenten Flash 8/ Email Formular |
Beispiel SWF anschauen | |
UI Komponenten Actions |
Beispiel SWF anschauen | |
|
Beispiel
SWF anschauen oder download lineTo.fla
Mittels den Funktionen der Zeichnungsmethoden kann man Formen und Linien in Flash zeichnen.
In AS3 ist die Syntax sehr ähnlich, nur dass hier vor den Methoden lineTo() etc. noch die Methode graphics erscheinen muss.
myShape.graphics.lineTo(10,100);
Außerdem darf man nicht vergessen, das Objekt mit addChild() der Anzeigenliste hinzuzufügen.
Siehe hierzu auch AS3 Objekte zeichnen
Hier werden folgende Funktionen erklärt:
lineTo(), lineStyle(), moveTo(), clear(), beginnFill(), endFill(), createEmptyMovieClip()
Beispiel
SWF anschauen oder download rgb.fla
Mittels den Funktionen des Color Objects kann man Farben eines MCs interaktiv bestimmen.
Hier werden folgende Funktionen erklärt:
Siehe hierzu auch den AS3 Tipp. Dort wird auch erklärt, was dieser dezimale Uint Wert ist.
newColor(), setRGB(), getRGB(), getRGB().toString(), setTransform(), getTransform()
Beispiel
SWF anschauen oder download printJob.fla
Will man mit Flash drucken, kann man mit der Aktion printJob() ganz genau definieren, was gedruckt werden soll. Auch dynamische Inhalte, sowie Inhalte, die aus Datenbanken generiert werden, können an den Drucker geschickt werden. Es lassen sich Breite und Höhe einer Seite, sowie die Orientierung des Druckers (quer, hochformat) einlesen, so dass man den Druck an diese Voreinstellungen des Druckers anpassen kann. Wenn man das Programm Flashpaper hat, kann man sogar dynamisch generierte Inhalte als swf- oder pdf-Datei abspeichern, indem man im Druckebedienfeld anstatt den Drucker das Flashpaper- Programm auswählt. Man denke an Seiten, auf denen man online ein T-Shirt, eine Tasse oder etwas anderes mit Flash gestalten kann. Zusammen mit Flashpaper hat man somit eine Alternative zum Umwandeln der Inhalte in SVG Dateien. Man kann in Flash den Druck als Bitmap oder Vektorformat definieren, so dass sich auch großformatige Grafiken verlustfrei drucken lassen.
Siehe auch die Dokumentation bei Adobe zum Thema printJob()
Siehe auch das Thema bei Adobe Livedocs Druckbereich festlegen (Pixel, Punkt & Co)
Beispiel
SWF anschauen oder download filterAction.fla
Ab Flash 8 kann man MCs oder Schaltflächen auch Filtereffekte zuweisen, wie beispielsweise Schatten, Leuchten, Bevel etc. Diese Filter kann man a) über das Fenster Filter direkt zuweisen oder aber auch über die Klasse flash.filters Klasse dynamisch zuweisen. Wer sich viel Programmierarbeit sparen will, für den stellt Reinhart Redel auf seine Homepage www.sickworks.com ein kostenloses Tool zur Verfügung mit dem man sich Filter in AS2 oder AS3 programmieren kann. http://www.sickworks.com/filters/ Sogar ein Online- Filter- Generator für Actionscript ist vorhanden.
Unter "Die ersten Actions" werden die Grundlagen Schritt für Schritt erläutert. Wenn man die Grundbegriffe der Zeitleiste, das Zuweisen von Aktionen und das Thema Symbole und Instanzen beherrscht, kann man auch die anderen Schritt für Schritt Anleitungen machen.
In diesem Tutorial lernt man die Grundlagen der Zeichenfunktionen, Objekte gruppieren, Linien und Füllungen, Symbole und Instanzen.
cartoon.fla
Beispiel
SWF anschauen oder download
Der Flashfilm rechts wird links Schritt für Schritt erklärt.
Beispiel SWF anschauen oder download actionGrundlagen.fla
Beispiel SWF anschauen oder download actionGrundlagen.fla
scrollmenue.fla
Beispiel
SWF anschauen oder download
Siehe auch den Tipp HitTest dort wird auf der letzten Seite ein horizontales Aufklappmenü mit Flash erklärt.
muecke.fla
Beispiel
SWF anschauen oder download
Beispiel
SWF anschauen oder download kartenspiel.fla
Hier wird ein Kartenspiel erklärt, ähnlich dem bekannten Memoryspiel.
Aus einem Array werden die Zufallszahlen für die Verteilung generiert.
Bei jedem Spielzug werden die beiden gezogenen Karten erkannt und miteinander
verglichen. Kein Tipp für Anfänger Voraussetzung oder verwandte
Themen sind: Instanzen ansprechen,
Variablen, Array
Beispiel
SWF anschauen oder download wegspielfla
Hier geht es um ein einfaches Geschicklichkeitsspiel für Kinder, um den Umgang mit der Maus zu erlernen. Ich habe 3 Spiele erstellt, wobei diese Beispiele immer etwas komplexer werden. So wird man Schritt für Schritt an alle benötigten Funktionen herangeführt. verwandte
Themen sind: Instanzen ansprechen, Variablen, If-Else
rekursiv | eine Schleife mit Bezug auf sich selbst. Dieser Satz ist eine Lüge. |
redundant | ein und dieselbe Sache wird auf 2 Arten definiert, z.B.: der weiße Schimmel _root.film_mc._x=100; |
D o w n l o a d h i e r k l i c k e n |
Auf der Download Seite könnt ihr euch das Flash Tutorial sowie eine Menge fla Dateien runterladen. Gerade bei schwierigen Sachverhalten sagt eine fla oft mehr als tausend Worte. Auch die swf Beispiele sind dort als fla Dateien vorhanden. |
© Michael Albers
h
t t p : / / w w w . p a s t o r p i x e l . d e
Impressum / Datenschutz
m a i l @ p a s t o r p i x e l . d e
| meine Flash
Seite |
gotoAndPlay(in Frieden);