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.
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. Nutzen sie das sichere PayPal-System, um etwas Geld zu spenden! sie ermutigen mich damit, mit meiner Arbeit fortzufahren. Meine Flashtipps sind wohl mit die umfangreichste Sammlung für Anfänger und Fortgeschrittene im deutschsprachigen Netz. Wenn sie soviel gelernt haben, dass sie das Bedürfnis verspüren, mir zu danken, spenden sie etwas. Auf der Kontaktseite findet man auch meine Kontodaten. Wenn mir doch nur jeder, der hier was lernt einen Euro spenden würde, wäre ich froh.
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.
Wie findet man sich als Anfänger auf dieser Seite zurecht?
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.
Die Flash-Beispiele (fla/ swf) fangen in der Regel mit einfachen Sachverhalten an, so dass man auch hier am Anfang einen Einstieg bekommt. Außerdem sind in vielen Beispielen Querverweise auf andere Beispiele, dabei muss man allerdings manchmal bis zur richtigen Seite weiterblättern. Flash ist mittlerweile sehr komplex geworden. Ich habe hier den Spagat versucht die Seite nach Wichtigkeit und gleichzeitig themenbezogen zu strukturieren. Das gelingt natürlich nicht wirklich.
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.
Im Eigenschaftenfenster Symbol (Kreis mit Pfeil ) rechts oben
Taste F9
Kontextmenü (rechte Maustaste)
Man kann außerdem die Programmierung in Actionscirptdateien auslagern. mehr dazu
Das Aktionen
Bedienfeld
in den einzelnen Flash Versionen.
Scripthilfe, Normalmodus, Expertenmodus
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ü: Steuerung
/ Film testen 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.
Codehinweise auslösen
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.
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.
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.
on (release) {
Aktion1;
Aktion2;
Aktion3;
}
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 HandlerTastendruck
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
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)
Press ein
einzelner Mausklick besteht aus 2 Teilen herunterdrücken press und
wieder loslassen release
Release wird
ausgeführt wenn beides ausgeführt wird press und release. Das ist der
Standard Event Handler für Schaltflächen
Release outside
über der "Aktiv"-Fläche Maustaste drücken, außerhalb
der "Aktiv"-Fläche loslassen
Roll Over
mit losgelassener Maustaste über die "Aktiv"-Fläche einer
Schaltfläche gehen; es sollte nicht dafür eingesetzt werden optische
Veränderungen an Schaltflächen einzuleiten, sondern roll over ist
nur dazu da Aktionen einzuleiten
Roll Out wenn
man mit losgelassener Maustaste die "Aktiv"-Fläche einer
Schaltfläche verlassen hat
Drag Over
Maustaste wird gedrückt während man über der "Aktiv"-Fläche
ist, Maus wird aus der "Aktiv"-Fläche herausbewegt (immer
noch mit gedrückter Maustaste), Maus wird wieder zurück über die "Aktiv"-Fläche
bewegt (immer noch mit gedrückter Maustaste) das ist etwas merkwürdig
kann aber in einigen Spielen Anwendung finden
Drag Out Maustaste
wird gedrückt während man über der "Aktiv"-Fläche ist,
Maus wird aus der "Aktiv"-Fläche herausbewegt (immer
noch mit gedrückter Maustaste)
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.
eine Schaltfläche auf der Bühne platzieren
Schaltfläche auswählen, recht Maustaste Aktion
Aktion gewünschte Aktion wählen
On release im Aktionenfenster anklicken
ganz oben/unten Tastendruck anklicken, gewünschten Taste im Feld eingeben
Einige Besonderheiten sind zu beachten:
Esc kann man nicht vergeben
enter < > sollte man auch nicht nehmen, da die für Programmierzwecke
reserviert sind, wenn man das trotzdem macht, sollte man das auf jeden
Fall mal im Browser testen, ob es geht
Tastenkombinationen wie (strg + s) kann man nicht vergeben
Groß- Kleinschreibung wird unterstützt, das nennt man auch Case sensitiv,
es gibt keine Möglichkeit das zu verhindern, also S und s brauchen jeweils
eine Action, man kann natürlich für beide die selbe Action ausführen
lassen, dann hätte man das gleiche Ziel erreicht, man muss es nur dann
2 mal machen
wenn das Movie im Browser präsentiert wird muss es "focus" sein, das
heißt der User muss vorher mindestens einmal irgendwo im Flash Movie
mit der Maus geklickt haben, z.B. indem man einen Startbutton erstellt
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.
Schaltflächen deaktivieren
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.
Schlüsselbilder
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.
eine Ebene mit ein paar Bildern und Schlüsselbildern erschaffen
in der Zeitleiste ein Schlüsselbild anklicken, rechte Maustaste:
Bedienfeld Aktion aufrufen (Flash 4
Eigenschaften, Aktion)
gewünschte Aktion wählen z.B. Go To mit + Zeichen (oben
links) oder Doppelklick zuweisen
Schlüsselbilder mit Aktionen erkennt man an an dem kleinen a (in
der Zeitleiste)
Filmsequenz
load (true)
wenn die Instanz geladen ist, die Aktion wird beim Start der Filmsequenz
einmal ausgeführt, ähnlich dem ersten Bild in der Zeitleiste
enterFrame
wenn die Instanz aufgerufen wird, die Aktion mit der eingestellten Bildrate des Films ausgeführt, also wie bei einer Schleife. Dabei ist
es völlig egal ob die Zeitleiste läuft oder stoppt. Die Bildlaufrate stellt man ein unter: Modifizieren/ Dokument oder Eigenschaftenfenster (siehe auch etwas weiter unten delete)
unload wenn
die Instanz entladen wird
mouseDown
Drücken der Maustaste, egal wo, es muss also nicht wie beim
Button die Filmsequenz angeklickt werden
mouseUp
Loslassen der Maustaste
mouseMove
Bewegen der Maus
keyDown
Tastendruck (egal welche Taste gedrückt wird)
keyUp Loslassen
irgendeiner Taste
data wenn
Daten mit loadVariables oder loadMovie geladen werden
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.
updateAfterEvent()
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.
delete this.onEnterFrame;
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.
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 rollbar. Ziehe ein Textfeld auf, wähle im Eigenschaftenfenster die Option "dynamisch" und "mehrzeilig" und "auswählbar". Wähle oben im Menü: Text/ rollbar. 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.
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(),
Ereignis Object in Actionscript 3
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.
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
Go to
Action wählen (rechte Maustaste oder Fenster Aktionen)
Aktion Goto im rechten Fenster des Bedienfeldes auswählen (Basisaktionen)
Go to doppelklicken oder +Zeichen wählen
oben/unten im im Bedienfeld Aktion weitere Einstellungen vornehmen
(evtl. kleiner Pfeil oben/unten rechts, Parameterbereich)
Bild Nummer der Zeitleiste angeben,
anstatt einer Bild Nummer kann man auch Bezeichnung wählen, Voraussetzung
ist, man hat einem Schlüsselbild zuvor einen Namen gegeben, Bedienfeld
Bild (Flash 4 Schlüsselbild, Eigenschaften,
Bezeichnung)
außerdem besteht die Möglichkeit, nächstes oder vorhergehendes
Bild zu wählen, (prevFrame oder nextFrame)
oben/unten Control: Go to
and Play aktivieren oder deaktivieren, je nachdem ob der Film
von dem Bild aus ablaufen soll, oder in dem Bild stoppen soll.
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.
Sicherheitseinstellungen Flash 8 / Zielfenster in lokalen Framesets (offline)
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:
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...?
Get Url aus dem Projetor heraus
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.
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)
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");
Ebene stufe oder ziel
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.
Ü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.
ziel
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).
Geladene Filme per Actionscript steuern
Man kann geladene SWF-Filme von anderer Stelle aus
ansteuern, um beispielsweise die
Zeitleiste anzusteuern.
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);
Ladestatus
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.
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
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.
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
Externe Bilder in den Flashplayer laden
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 downloadloadjpg.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.
Instanzen
von Filmsequenzen adressieren
MC adressieren, Instanzen ansprechen, Movieclips ansteuern, Zielpfad einfügen
Beispiel
SWF anschauen oder downloadpfade1.fla Beispiel
SWF anschauenpfade.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) kann man sich alle Variablen und Instanzen anzeigen lassen. Drücke Strg+Alt+v
Wofür braucht man das?
Beispiel SWF anschauen
In der Filmsequenz (Movieclip, MC) Auto, fügt
man 2 Instanzen einer Filmsequenz Rad ein, in der sich ein Rad mittels Tweening ständig dreht. Das Auto, im Hauptfilm, bewegt
man mittels Tweening von links nach rechts, und lässt es am rechten Rand anhalten. Die Räder, welche in der Filmsequenz Auto eingebettet sind, bleiben jedoch nicht stehen. Damit nun auch die Räder stoppen,
müssen die MCs rad1 und rad2 angesprochen werden. Dann wird mit der Aktion stop() die Zeitleiste der jeweiligen Instanz angehalten.
Beispiel SWF anschauen
Die Infotexte (zur Startseite, alles über mich....) liegen alle in einzelnen Schlüsselbildern einer Filmsequenz Instanzname: info_mc. Mit Event Handler onRollover wird info_mc angesprochen und eines
der Schlüsselbilder mit gotoAndStop() aufgerufen. Bei onRollout wird das erste Bild von info_mc aufgerufen, in der sich kein Text befindet. Die einzelnen Tweenings liegen in der Hauptfilmzeitleiste und werden mittels Event Handler onRelease und der Action gotoAndPlay() angesteuert.
Beispiel SWF anschauen
In diesem Beispiel werden Movieclip Instanzen zur Spielprogrammierung genutzt. Klickt man auf eine bestimmte Schaltfläche, geht eine Instanz welche im ersten Bild keine Inhalte hat, also unsichtbar ist, zu Bild2, in der ein Schlüsselsymbol hinterlegt ist. Außerdem wird das zweite Bild der Filmsequenz Tuer aufgerufen. Dort liegt eine unsichtbare Schaltfläche, die auf Mausklick die Zeitleiste der Tuer mit einer Tweening Animation abspielt, also das Öffnen der Tuer. So konnte man schon in frühen Flashversionen, ohne if-Bedingungen derart komplexe Spiele realisieren.
es folgt eine Schritt für Schritt Anleitung
Filmsequenz im Hauptfilm erschaffen, (F8)
rechte Maus, Bearbeiten
im ersten Schlüsselbild befindet sich gar nichts, nur
die Action, stop wird vergeben
in der Zeitleiste erstelle ich mir mehrere Schlüsselbilder,
mit jeweils einem anderen Text oder einem anderen Bild. Achte darauf
das die Elemente im Mittelpunkt des MCs liegen.
zurück zum Hauptfilm Bearbeiten, Dokument bearbeiten
Filmsequenz an die gewünschte Stelle setzen, da im ersten Bild kein
Inhalt ist, sieht man nur einen kleinen Kreis
Filmsequenz auswählen, (Achtung aufpassen, dass nur die Filmsequenz
ausgewählt ist), Instanz Name vergeben. (Bedienfeld Instanz)
mit Enter bestätigen !!!!!! (häufiger Anfängerfehler,
daher überprüfen, ob der Instanzname auch wirklich zugewiesen
wurde, indem man auf eine leere Stelle klickt und dann nochmal auf die
Filmsequenz)
(Flash 4 lese unten weiter) Aktionenbedienfeld, im Normalmodus
wähle Objekte/ Film/ Movieclip/ Methoden/ und klicke doppelt auf
gotoandPlay oder gotoandStop
gebe im Feld Parameter die Bildnummer des MCs ein, die aufgerufen
werden soll, also das Bild, welches den Infotext für den entsprechenden
Button enthält
klicke in das Feld Parameter und dann auf das Zielscheibensymbol (Zielpfad
einfügen)
aktiviere unten im Menü die Optionen Punkte und absolut mehr dazu
siehe Ebenen ansteuern
klicke dann auf den gewünschten Instanznamen, unter Ziel erscheint
_root.instanznamedeinesmcs, bestätigen mit okay
klicke nun auf den Event Handler onrelease und deaktiviere oben "loslassen"
und aktiviere "rollover"
Soll der Text verschwinden, sobald der Mauszeiger außerhalb
des buttons ist, klickt man im Aktionenbedienfeld auf die letzte Zeile
und wiederholt die Prozedur ab Punkt 9 mit folgenden Änderungen:
Punkt 10 wähle hier Bild1, Punkt 14 aktiviere wegrollen, darüberziehen,
außerhalb loslassen.
Man kann sich die ganze Aktion kopieren und in der nächsten Schaltfläche
einfügen, dann muss man lediglich die Bildnummer (Punkt 10
ändern).
Flash4 ab Punkt9
Aktion, Tell Target, einer Schaltfläche zuweisen
dann steht da.: On release
begin tell target
end tell target
end on
auf on release klicken
und gewünschten EventHandler (z.b. mouse over) angeben
begin tell target gewünschte
Instanz angeben, (siehe 7) (siehe hierzu auch Ebenen
ansteuern
der Name erscheint dann oben/unten im Fenster
danach (nach begin tell target) eine gewünschte Aktion vergeben z.B.
Go to and Stop
Wichtig der Befehl Goto muss zwischen begin
tell target und end tell
target erscheinen
hier gibt man dann das gewünschten Bild der Filmsequenz an, (siehe
4)
Soll der Text verschwinden, sobald der Mauszeiger außerhalb
des buttons ist, macht man die ganze Telltarget Prozedur nochmal (siehe
9), gibt als EventHandler rollout (wegrollen) an, und geht mit gotoandStop
auf das erste Bild der Filmsequenz in der sich nichts befindet.
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);
SWF-Filme, die mit loadMovie gealden wurden, ansteuern.
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
Instanz name vergeben: Bedienfeld Eigenschaften
oder
Flash 5 Bedienfeld Instanz, Flash4 Symbol rechte Maustaste, Eigenschaften, Instanz Name (unten),
irgendeinen Namen eintragen
in diesem Beispiel wird in einem Schlüsselbild der Zeitleiste die Aktion vergeben, um die Eigenschaft der Filmsequenz zu ändern. Klicke dazu das Schlüsselbild an
Aktion vergeben : Bedienfeld Aktionen
Flash MX umschalten in Expertenmodus
Zielscheibensymbol im Aktionenbedienfeld anklicken und gewünschte Filmsequenz Instanz auswählen
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
auch prozentual zur Weite des Hauptfilms
_yscale
Höhe
MC, Movie
die Höhe eines
Filmsequenz Instanz (oder movie) prozentual
auch prozentual zur Weite des Hauptfilms
ermittelt die Zahl aller
Bilder einer Zeitleiste einer Filmsequenz
_framesloaded
Movie
ermittelt die Zahl aller
Bilder die runtergeladen wurden siehe preloader
_alpha
Transparenz
der Wert der Durchsichtigkeit
einer Filmsequenz oder Flashfilm in Prozent, dabei ist 100 komplett
undurchsichtig und 0 komplett durchsichtig (Beispiel
Fla Datei downloaden) (siehe properties)
_visible
Sichtbarkeit
MC, Movie
.1 ist sichtbar, 0 ist
unsichtbar, Die Werte true und false sind auch möglich.
Beachte: Schaltflächen in unsichtbaren Filmsequenzen funktionieren
nicht
_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 anschauendroptarget.fla
_highquality
Hohe Qualität
Movie
wird nicht mehr verwendet. Darstellungsqualität
des gesamten Films
setProperty
("_level0", _highquality, 2);
Werte sind 0 oder 1 oder 2, Ab Wert 1 wird Anti Alias aktiviert.
Anti-Aliasing bewirkt die Kantenglättung von Objekten und
verlangsamt die Filmwiedergabe.
Mit der Aktion "Toggle High Quality" kann man die Darstellungsqualität
auch umschalten.
_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 SWF
Beispiel anschauenfocusrect.fla
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:
Set Variable: "meinText.scroll" = meinText.scroll+1
(Beispiel
Fla Datei downloaden)
.maxscroll
Text Field Variable
wird nicht mehr verwendet.
Bestimmt die Anzahl
der Zeilen, einer Textfield Variablen und zwar wird der Wert untersten
Zeile, der in der obersten Zeile, der sichtbaren Region
des Textfields angezeigt werden kann, herausgegeben. (Beispiel
Fla Datei downloaden) (siehe scrolltext.fla)
Get Property
Eigenschaften von Filmsequenzen abfragen
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;
Objekte per Mausklick verschieben,
Fenster verschieben
Unter drag & drop versteht man, ein Symbol, welches man anklickt, mit gedrückter Maustaste
zu verschieben und durch Loslassen der Maustaste wieder abzulegen.
Eigenschaften-Fenster, Instanz Name vergeben, z.b. meinFenster_mc
Filmsequenz Symbol, rechte Maustaste, Bearbeiten, oder doppelklicken
im Bild1 der Filmsequenz eine Schaltfläche erstellen, sie kann die obere Leiste deines Fensters sein
diese Schaltfläche auswählen , Fenster/ Aktionen ,
startDrag() zuweisen. Wir befinden uns immer noch im Bearbeitungsmodus der Filmsequenz. In FlashMX befinden sich die drag-Aktionen im Ordner Aktionen/ Movieclipsteuerung
Einstellungen der Aktion im Normalmodus Flash5/ FlashMX: start drag operation, wählen
das Feld hinter Ziel: wähle eine der folgenden 3 Möglichkeiten
1.) leer lassen, gar nichts eintragen startDrag("");
2.) Zielpfad zur Instanz der Filmsequenz eintragen
(siehe2) startDrag(" _root.meinFenster_mc");
3.) Ausdruck anhaken und this eintragen startDrag(this);
die letzte geschweifte Klammer der Aktion markieren (linke
seite), +Zeichen, die Action: stopdrag wählen,
hier muss on (release) als event handler gewählt
sein, damit beim Loslassen der Maus, die Ziehbewegung stoppt. on (release) {
stopDrag();
}
Bewegungen per Drag Movie aufzeichnen und abspielen
siehe SWF Beispiel Array.
Droptarget
Beispiel
SWF anschauen oder downloaddroptarget.swf
Bewegt man eine Filmsequenz mit startdrag kann man mit der Eigenschaft
droptarget, ermitteln, über welcher Filmsequenz sich die Maus befindet.
Irgendwo die Action Duplicate
Movieclip vergeben duplicateMovieClip ("_root.mein_mc", "meinNeuer_mc", 1);
Ziel: Instanzname der Filmsequenz angeben
Neuer Name: die duplizierte Filmsequenz bekommt einen neuen Instanznamen,
den man später mit der Punktsyntax ansprechen kann _root.meinNeuerMcName._x=20;
Tiefe: eine Zahl vergeben, jede Instanz braucht eine eigene Instanztiefe, ein auf gleicher Instanztiefe erzeugter MC ersetzt den vorigen MC
MovieClip.swapDepths(), tauscht die Instanztiefe. Als Parameter wird die Instanztiefe oder der Instanzname, mit dem man tauschen wil, erwartet
Ab Vers. Flash 2004 oder Flash 8 _root.getNextHighestDepth() übergibt die nächst höhere Zahl zur höchsten vergebenen Instanztiefe. ACHTUNG!! Hier muss man jedoch beachten, dass die Methode removeMovieClip() fehl schlagen kann, da Flash eine nicht zulässige, zu hohe Instanztiefe vergibt. Abhilfe schafft man, indem man vor removeMovieClip() den Befehl MovieClip.swapDepths() aufführt und eine niedrige Instanztiefe als Parameter eingibt.
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 downloadattachMovie.fla
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.
Das kann man umgehen, indem die Option nicht anhakt. Dann muss man allerdings alle Attach-movies auf die Bühne ziehen, damit sie einmal geladen werden. Das könnte man beispielsweise im zweiten Bild machen, am besten irgendwo außerhalb der Bühne. Im dritten Bild kann man sie dann wieder löschen und ab dem dritten Bild fängt der eigentliche Film an. Die Ladeanzeige mit den dazugehörigen Aktionen kommt schon ins erste Bild.
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:
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.
Beim Testen des Films (Steuerung/ Film testen) kann man sich alle Variablen und Instanzen anzeigen lassen. Drücke Strg+Alt+v
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:
Name der Variablen folgendermaßen ingeben: Textfeld, Eigenschaften,
im Feld Variable wird der Name der Variablen eingegeben die angezeigt werden soll. z.B. x ohne Anführungsstriche
Im ersten Bild der Zeitleiste Actionfenster, schreibe: x=0;
Schaltfläche, (rechte Maus, Eigenschaften) Aktion vergeben, Set
Variable,
in den Feldern oben/unten folgendes eintragen Variable: x Wert: x
+ 1, der Wert muss auf Ausdruck stehen
(Flash3 & 4 den "abc Zeichenfolge literal" button auf
" = Ausdruck" stellen, ab Flash5 einen Haken vor Ausdruck
machen)
so müßte die Aktion der Schaltfläche aussehen On (Release){
x = x + 1
};
Anhand des folgenden Beispiels wird eine Variable definiert, die die
horizontale und vertikale Position des Mauszeigers anzeigt.
Füge 2 Bilder in der Zeitleiste ein.
Gebe im ersten Bild der Zeitleiste folgenden Actionscriptcode im Actionfenster ein: x=_root._xmouse;
y=_root._ymouse;
Ziehe 2 Textfelder auf
Weise im Eigenschaftenfenster anstatt "statischer Text" die Option "dynamisch" zu
Gebe unter Variable den Variablenname x und im anderen Textfeld y ein.
Teste den Film mit Steuerung/ Film testen und bewege die Maus.
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)
Testen ob eine Variable vorhanden ist
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";
Arithmetische Operatoren
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;
Inkrement und Dekrement
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;
Ausdruck oder String (Zeichenfolge)
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:
trace ist ein Befehl, der nur im Ausgabefenster angezeigt wird, wenn
man den Film oder eine Szene im Flash Programm testet (Strg Enter). 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 (Strg Enter), kann man sich alle Variablen und Instanzen anzeigen lassen. Drücke Strg+Alt+v
Es gibt eine flashlog.txt in der diese Ausgaben gespeichert werden unter Windows XP
C:\Dokumente und Einstellungen\username\Anwendungsdaten\Macromedia\Flash Player\Logs
Hier werden Anweisungen nur dann ausgeführt werden,
wenn bestimmte genau definierte Bedingungen erfüllt sind. Damit eröffnen
sich ungeahnte Möglichkeiten. Das Prinzip ist eigentlich ganz einfach.
Eine if-Struktur gibt es in gleicher oder leicht abgewandelter Form in sehr vielen Programmiersprachen.
if (hier steht die Bedingung) {hier steht, was passieren soll, 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;
}
Im folgenden gibt es 2 Bedingungen im Sinne von das eine oder das andere.
Das Ganze in Klammern und die beiden Bedingen mit or verbunden. Ab Flash
5 sollte man statt or folgendes schreiben || schreiben (der Strich liegt mit AltGr auf
der < Taste).
Dann gibt es 2 Anweisungen (mit Strichpunkt getrennt), die passieren,
wenn eine der beiden Bedingungen erfüllt ist.
Dann kommt else ins Spiel, also wenn keine der beiden Bedingungen erfüllt
sind, passiert das, was hinter else definiert ist. Man beachte was in
geschweiften Klammern steht.
if (Bedingung || Bedingung)
{
dieser Befehl wird ausgeführt, wenn eine der
beiden Bedingungen erfüllt sind;
dieser Befehl wird auch ausgeführt, wenn eine
der beiden Bedingungen erfüllt sind;
} else {
andernfalls passiert das;
}
Hier müssen beide Bedingungen erfüllt sein. In Flash 4 schrieb
man "and". Man kann in Flash 5 auch && schreiben. 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, was anstelle von else stehen kann, wobei dort
eine weitere Bedingung definiert sein kann. Selbstverständlich kann
man soviele "else if" hinzufügen wie man will.
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;
}
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 der
beiden Bedingungen erfüllt 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
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.
Zählvariable: Hier wird eine Variable mit selbst vergebenen Namen definiert und ihr ein Startwert zugewiesen. Diese Variable hat nur Gültigkeit innerhalb der for-Schleife. In diesem Beispiel beginnt die Variable namens i mit dem Wert 1,
Bedingung: Dann folgt die Bedingung i<10. Die Schleife wird so oft ausgeführt, wie die Bedingung erfüllt ist.
Zählmuster: Dann kommt das Zählmuster. In diesem Beispiel ein ganz typisches Zählmuster siehe Variablen. die beiden
++ bedeuten, dass nacheinander der Wert 1 hinzugefügt wird,
man könnte auch schreiben i=i+1
Anweisung: Es folgt die Anweisung in geschweiften Klammern,
die bei jedem Schleifendurchlauf erneut ausgeführt wird. In diesem
Beispiel werden die 10 Variablen erzeugt var0, var1....bis...var9, denen
die Werte 0...bis...9 zugewiesen werden. Hier können auch mehrere Anweisungen, durch Strichpunkt getrennt, eingefügt werden.
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.
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;
Switch Case
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?");
}
Call
In Flash 5 gilt diese Aktion als veraltet. Stattdessen wird die Verwendung der Aktion function empfohlen.
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");
Zeitleiste
rückwärts
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 anschauentimeline_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.
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.
Get
Timer
Ablaufzeit
des Films abfragen
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
setInterval clearInterval
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.
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.
Zufall per Actionscript
zufälliges Bild in der Zeitleiste, oder zufällige Position von MCs
siehe auch diesen AS3Tipp 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;
}
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.
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();
Wie ändert man in einem assoziativen Array oder Objekt die Elemente oder Werte?
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:
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.
// 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
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;
Integrierte Funktionen
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".
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
Flashnavigation mit Protoype Funktion
SWF Beispiel anschauen oder downloadnavProto.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.
Schaltflächen Events und Funktionen
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);
};
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
Importieren von Klassen
Klassen werden mit dem Schlüsselwort class in einer externen Scriptdatei definiert. Wähle Datei / Neu / Actionscriptdatei 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.
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.
Eigene Klassen erzeugen
Wähle Datei / Neu / Actionscriptdatei und speichere diese mit der Endung as ab.
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.
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":
include Actionscript auslagern
SWF Beispiel anschauen oder downloadinclude.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
Undokumentierte
Funktionen
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.
Osterei
Ein verstecktes Osterei in Form eines Spiels: Flash 4 "Garys Car
Jump", Flash 5 "Goldrush" Hilfe, Über Flash dann schnell das
Macromedia Logo anklicken, anschließend Danke Button klicken
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.
Horizontales Aufklappmenü mit Flash
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.
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.
Distanz
zwischen MC Instanzen
Beispiel
SWF anschauen oder downloaddistanz.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²
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._ymouse/(2*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
Trigonometrie / Cosinus & Co
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.
Im 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
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:
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.
Rotation eines MCs auf einen Zielpunkt / Math.atan2()
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.
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.
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.
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.
URL Codierung, Zeichensatz, Latin 1, UTF8, system.useCodePage
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:
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:
(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.
Textfeld, rechte Maus, Eigenschaften, Variable, Namen vergeben zum
Beispiel für Name, Adresse, Email etc.
Die Formularfelder "email", "realname" und "subject"
haben eine Sonderrolle: Was der Besucher dort einträgt, wird als Absenderadresse,
Absendername und Thema der Mail verwendet, die an sie abgeschickt wird.
Button zum Absenden erstellen
Button, rechte Maus, Eigenschaften, Action: Get URL
URL: CGI Adresse eintragen bei Strato lautet sie:/cgi-bin/mailmanager.pl Variablen: Mit Post versenden
Frame oder Bild in der Zeitleiste, rechte Maustaste, Eigenschaften,
Action, Set Variable
Variable recipient
Wert: hier deine email Adresse eintragen, z.b.
mail@on-design.de (Strato Kunden dürfen nur eine email bei
Strato verwenden)
Man kann noch weitere Variablen, die die Funktion von "hiddenfields"
übernehmen, definieren, siehe Tabelle.
Damit auch die die
Umlaute (öäü) in der Email nicht richtig angezeigt werden, könnt ihr folgende Zeile im Actionscriptfenster einfügen: System.useCodepage = 8859-1;
Flash Film veröffentlichen
Per FTP hochladen, übrigens
findet man bei Strato in den Anleitungen zum Thema Mailmanager noch einige weitere nützliche
Infos zu diesem Thema
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.
Projektor
steuern mit fscommand
(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.
Mit true wird der Flash Player in den Vollbildmodus
gesetzt. Mit false wird der Player in die normale Menüansicht
zurückgesetzt.
allowscale
true oder false
Mit false wird der Player angewiesen, den Film
nur in dessen ursprünglicher Größe darzustellen.
Mit true wird der Film exakt in der Größe
des Players dargestellt.
showmenu
true oder false
Mit true werden sämtliche Kontextmenüelemente
aktiviert. Mit false werden alle Elemente des Kontextmenüs
außer der Option "Info zu Flash 5..." ausgeblendet.
exec
Pfad der Anwendung
Startet eine Anwendung also exe Datei aus dem Projektor heraus.
fscommand & Javascript
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 downloadmeinFilm.flaNEU Hier noch ein ausführlicher
Beitrag zum Thema bei Selfhtml
Thema: Live Connect
<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
In diesem Beispiel kommuniziert der Flashfilm mit Javascript. Eine Funktion mit Javascript überträgt den Wert einer Variablen an den Flashfilm.
Schlüsselbilder
per Html- Link ansteuern (Anker)
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.
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.
Datenaustausch
zwischen SWF Filmen
localConnection
Beispiel
SWF anschauen (FRAMESET) oder downloadsharedempf.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.
localConnection(); new LocalConnection(); localConnection.connect(); localConnection.send(); LocalConnection.close();
Flash
Detection / Flash Erkennung und Weiterleitung
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.
Flash Erkennung mittels
VB Script
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.
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.
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");
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.
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?
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";
b=a.substring(1,3);
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";
b=a.slice(1,4);
ergebnis: ast
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.
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";
b=a.charAt(4);
Ergebnis: o
ermittelt das Zeichen, aus der Position, Beginn bei 0
charCodeAt()
charAt(Position)
a="Pastor";
b=a.charAt(4);
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 :-)
siehe typewriter.swf
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:
Dynamischer Text
mehrere Zeilen
Wortumbruch
Html aktiviert (Flash 5 kann html 1 lesen) will man auf Schriftformatierungen
verzichten lässt man html deaktiviert
Variable Name vergeben, der Name steht in der Textdatei am Anfang
gefolgt von einem Gleichheitszeichen, der Text selber wird in Anführungszeichen
eingeschlossen.
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:
Texteingabe
eineZeile
Variablenname vergeben
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 Speichern unter mit der Codierung UTF 8 ab. Dabei lasse ich die Sonderzeichen, ö,ä,ü,ß etc. wie sie sind.
Flashvars / Variablen aus der Html oder PHP Seite importieren
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
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.
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.
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.
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
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.
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.
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;
Sonderzeichen Steuerzeichen in XML
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:
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);
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.
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.
Color Object, newColor(), setRGB(), setTransform()
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.
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)
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.
Anleitungen, Step by Step
Unter "Die ersten Actions" werden die Grundlagen Schritt für Schritt erläutert. Wenn man die Grundbegriffe der Zeitleiste, das Zuweisen von Aktionen unddas Thema Symbole und Instanzen
beherrscht, kann man auch die anderen Schritt für Schritt Anleitungen machen.
Cartoons zeichnen / oder die Grundlagen der Zeichnenfunktionen NEU
In diesem Tutorial lernt man die Grundlagen der Zeichenfunktionen, Objekte gruppieren, Linien und Füllungen, Symbole und Instanzen.
Beispiel
SWF anschauen oder downloadkartenspiel.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
Wegspiel
(ein einfaches Geschicklichkeitspiel für Kinder)
Beispiel
SWF anschauen oder downloadwegspielfla
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
Begriffserklärungen
rekursiv
eine Schleife mit Bezug auf sich selbst. this.onEnterFrame = function() {
this._x = this._x+1;
};
Dieser Satz ist eine Lüge.
Der Satz ist unwahr. Der Satz ist wahr.
redundant
ein und dieselbe Sache wird auf 2 Arten definiert, z.B.: der weiße Schimmel
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.
| Tipps | Foren | flash Beispiele | im www DEUTSCH
| Tipps | Foren | flash Beispiele | im www ENGLISH