AS3-Tutorium: Flash: Butterfly 04 variable number of rounds
Dieser Artikel ist veraltet und wird künftig evtl. entfernt.
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
| Korrektheit: 4 (großteils überprüft) |
Umfang: 3 (einige wichtige Fakten fehlen) |
Quellenangaben: 5 (vollständig vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 4 (sehr gut) |
AS3-Tutorium: Butterfly: Flash | Flex
Flash: Übersicht | Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5 | Teil 6 | Teil 7a | Teil 7b | Teil 7c | Teil 8 | Teil 9 | Teil 10
Schmetterling fliegt eine vorgegebene Anzahl von Runden
In AS3-Tutorium: Flash: Butterfly 03 fixed number of rounds wurde ein Schmetterling erzeugt, der dauerhaft auf einem Rundkurs fliegt.
Dieser Schmetterling wird nun erweitert:
- Zunächst wartet der Schmetterling.
- Der Benutzer gibt eine Anzahl von Runden ein und klickt auf den Start-Button.
- Daraufhin fliegt der Schmetterling die gewählte Anzahl von Runden und verlässt zu guter Letzt die Bühne.
<swf width="367" height="267">http://glossar.hs-augsburg.de/beispiel/tutorium/flash_cs5/butterfly/butterfly_04_variable_number_of_rounds/multi/butterfly_04_variable_number_of_rounds_multi.swf</swf> Erweiterte Musterlösung: butterfly_04_variable_number_of_rounds_multi.swf
Schmetterling fliegt weg („moderne“ Tweens anf Flash 10)
Der im vorangegangen Tutorium erzeugte Pfad (Rundkurs) des Schmetterlings muss erweitert werden. Nach dem Rundkurs soll der Schmetterling die Bühne verlassen.
- In der Bibliothek:
ButterflyMoviemit Doppel-Klick auf das Icon vor dem Namen öffnen. - In Frame 220, Ebene
scripts: Schlüsselbild einfügen (Klick mit rechter Maustaste auf den Frame in der Zeitleiste →Schlüsselbild einfügen). - In Frame 220, Ebenen
labelsundbutterfly: Bild einfügen (rechte Maustaste →Bild einfügen). - In Frame 151, Ebene
labels: Frame benennen:lbEnd. - In Frame 150, Ebene
butterfly: Schlüsselbild für Skalierung einfügen (rechte Maustaste →Schlüsselbild einfügen→Skalierung). - In Frame 220, Ebene
butterfly: Schmetterling mit Maus zu einen Punkt außerhalb der Bühne verschieben und den Schmetterling mit dem WerkzeugFrei Transformieren (Q)so weit wie möglich verkleinern. - AS3-Code in der Zeitleiste von
ButterflyMovie:- Frame 1
stop();
var roundsToFly: int = 2;- Frame 1
if (roundsToFly == 0)
nbsp; gotoAndPlay("lbEnd");- Frame 150
roundsToFly--;
if (roundsToFly > 0)
gotoAndPlay("lbStart");- Frame 220
stop();
Wenn man auf den Befehl stop(); im ersten Frame verzichtet, fliegt der Schmetterling
zwei Runden und anschließend davon. Wenn man den Wert roundsToFly auf 0 setzt,
fliegt der Schmetterling wegen der Abfrage in Frame 2 gleich davon.
Der Befehl stop(); verhindert, dass der Schmetterling automatisch losfliegt.
Dies kann nun von außen (z.B. von einem anderen MovieClip aus) gesteuert werden, sofern
der MovieClip mit dem fliegenden Schmetterling einen Namen (z.B. mc_butterfly) erhält:
mc_butterfly.roundsToFly = 4;
mc_butterfly.gotoAndPlay("lbStart");
Dies wird im Folgenden ausgenutzt. Zunächst müssen aber die Komponenten zum Eingeben der Rundenanzahl erstellt werden.
Komponenten zur Benutzereingabe
- Klick auf
Szene 1in der linken oberen Ecke der Bühne → Die Hauptbühne wird geöffnet. - In der Zeitleiste: Eine neue Ebene erstellen:
input - In der Zeitleiste: Das erste Frame der Ebene
inputselektieren. Fenster→Komponenten→User Interface: Hier befinden sich vordefinierte Flash-Komponeten.Buttonauf die Bühne ziehen.TextInputauf die Bühne ziehen.- Das Textwerkzeug aktivieren (sechstes Icon von oben in der Werkzeugleiste) und
Anzahl Runden:auf der Bühne schreiben. - In der Bibliothek: Einen Ordner
FlashComponentserzeugen. - In der Bibliothek: Alle Symbole und Ordner, die von den Flash-Komponenten erzeugt wurden (
Button,TextInput,Component Assets, Text-Objekt) in den OrdnerFlashComponentsverschieben. - Auf der Bühne: Den Button durch Klick selektieren.
- Im Fenster
Eigenschaften: Einen Namen im Feld<Instanzname>eintragen:mc_button_start - Im Fenster
Eigenschaften(Ausnahme: Flash CS4 (aber nicht CS5 oder CS3 oder sonst eine Version): hierFenster->Komponenten-Inspektorverwenden): Einen Labelnamen im FeldLabeleintragen:Start - Das Text-Eingabe-Feld auf der Bühne durch Klick selektieren.
- Im Fenster
Eigenschaften: Einen Namen im Feld<Instanzname>eintragen:mc_input_rounds - Auf der Bühne: Den Button, das Eingabefeld und das Textfeld
Anzahl Runden:anordnen und dann alle gleichzeitig selektieren. - Mit der Taste
F8ein neues Symbol namesUserInputerzeugen. - In der Bibliothek: Einen neuen Ordner
Interactionerzeugen. - In der Bibliothek: Das Symbol
UserInputin den OrdnerInteractionverschieben. - Auf der Bühne: Das neue Input-Objekt selektieren.
- Im Fenster
Eigenschaften: Einen Namen im Feld<Instanzname>eintragen:mc_user_input - Auf der Bühne: Den Schmetterlingsmovie selektieren.
- Im Fenster
Eigenschaften: Einen Namen im Feld<Instanzname>eintragen:mc_butterfly
Nun stehen alle Komponenten zur Verfügung, um die Anzahl der zu fliegenden Runden durch den Benutzer bestimmen zu lassen.
Beachten Sie, dass Sie auf keinen Fall die Benutzer-Eingabe-Komponenten in das Schmetterlingssymbol einbauen sollten. Sonst können Sie die Größe des Schmmetterlingrundfluges nicht mehr ändern, ohne dass sich die GRöße der Eingabefelder ebenfalls ändert.
ActionScript 3 (ab Flash 9)
Im letzen Schritt wird der eigentliche Actionscript-Code zum steuern des Schmetterlings erstellt.
<swf width="367" height="267">http://glossar.hs-augsburg.de/beispiel/tutorium/flash_cs5/butterfly/butterfly_04_variable_number_of_rounds/butterfly_04_variable_number_of_rounds.swf</swf>
Musterlösung: butterfly_04_variable_number_of_rounds.swf
- Klick auf
Szene 1in der linken oberen Ecke der Bühne → Die Hauptbühne wird geöffnet. - In der Zeitleiste: Eine neue Ebene erstellen:
scripts - In der Zeitleiste: Das erste Frame der Ebene
scriptsselektieren. - Die Taste
F9drücken und nachfolgenden Code erfassen:
mc_user_input.mc_button_start.addEventListener(MouseEvent.CLICK, o_start);
function o_start(p_event: MouseEvent): void
{
mc_user_input.visible = false;
// Number instead of int, as Number may be NaN!
var l_rounds_to_fly: Number = parseInt(mc_user_input.mc_input_rounds.text);
if (isNaN(l_rounds_to_fly) || l_rounds_to_fly < 0)
l_rounds_to_fly = 0;
mc_butterfly.roundsToFly = l_rounds_to_fly;
mc_butterfly.gotoAndPlay("lbStart");
}
Mit dem ersten Befehl wird dem Button-Objekt in dem Input-Objekt ein sogenannter Event Listener (siehe Obeserver Pattern) zugewiesen.
Immer wenn der Button per Mausklick betätigt wird, wird die Methode o_start aufgerufen.
Diese MEthode wird im Anschluss an den zufor beschriebenen Befehl definiert. Sie führt folgende Aktionen durch:
- Das Eingebafeld unsichtbar machen (das Attribut
visibleaudfalsesetzen) - Die vom Benutzer in das Eingabefeld geschriebene Zeichenkette (String) mit Hilfe der Methode
parseIntin eine Zahl verwandeln und in der Variablenl_rounds_to_flyspeichern. - Die Benutzereingabe auf Korrektheit prüfen. Falls der Wert von
l_rounds_to_flynegativ ist oder der Benutzer keine Integer-Zahl eingegeben hat (l_rounds_to_flyenthält den WertNaN= „Not a Number“) wird dieser Wert auf0gesetzt. - Als nächste wird im Schmetterlingsobjekt die Anzahl der zu fliegenden Runden gesetzt.
- Zu guter letzt wrid der Rundflug gestartet.
Schmetterling testen
- Auf
Szene 1in der linken oberen Ecke der Bühne klicken. - Das Symbol
Butterflyauf die Bühne ziehen. - Den Film mit
Strg-Return(Ctrl-Return) starten.
Quellen
- Kowarschick, W.: Multimedia-Programmierung
- butterfly_04_variable_number_of_rounds (Flash CS5)
- butterfly_04_variable_number_of_rounds (Flash CS4)
- SVN-Repository (Flash CS5)
- SVN-Repository (Flash CS4)
