Starten und Stoppen der Abwärtbewegung durch Mausklick
Ergebnis der swf-Datei
Der Programmcode mit Kommentar ohne Erklärungen
Kommentare sind im nachfolgenden Code grau und die wesentlichen Veränderungen rot geschrieben.
// ZEICHNEN EINER WELLENLINIE, DIE SICH BEI GEDRÜCKTER MAUSTASTE ZUM UNTEREN BÜHNENRAND BEWEGT |
Der Programmcode mit Erklärungen
Definieren und Merken des Bewegungszustands
Es gibt zwei Bewegungszustände: Die Linie steht still oder sie bewegt sich nach unten. In Abhängigkeit vom momentanen Bewegungszustand muss bei einem Mausklick die Bewegung gestartet bzw. gestoppt werden.
Das heißt das Programm muss "wissen" welcher Zustand gerade vorliegt. Das ist ein typischer Anwendungsfall für die Verwendung einer Variablen. In einer Variablen kann man einen Zustand zu einem bestimmten Zeitpunkt abspeichern und später darauf zugreifen, in dem man z.B. diesen Zustand abruft, abfrägt oder auch wieder herstellt.
Da in diesem Fall nur zwei Zustände (bewegen - nicht bewegen) relevant sind, kann man eine Boolsche Variable zum Speichern des Zustands verwenden. Eine Boolsche Variable kann die Werte true und false abspeichern. Man muss nur festlegen, welcher Zustand mit true bzw. false gemeint ist. In unserem Fall wird mit false definiert, dass die Linie stillsteht und mit true, dass sich die Linie nach unten bewegt.
Da die Linie am Anfang stillstehen soll, wird die Boolsche Variable moving mit dem Wert false initialisiert.
var moving:Boolean = false; |
Starten und Stoppen der Bewegung durch Mausklick
Wenn eine swf-Datei im Shockwave-Player abgespielt wird, so wird jedesmal, wenn die linke Maustaste gedrückt wird, das Ereignis MouseDown ausgelöst.
Es wird nun dem Event-Handler onMouseDown ein Funktionsliteral zugewiesen, das bei Eintreten des MouseDown-Ereignisses aufgerufen wird.
this.onMouseDown = function() { |
Beim Drücken der Maustaste wird zuerst geprüft, ob sich die Linie bewegt:
Wenn not moving den Wert true liefert, so bewegt sich die Linie nicht. Denn wenn die Variable moving den Wert false enthält, steht, wie oben festgelegt, die Linie still. Durch not wird der Wahrheitswert umgedreht (negiert). Somit liefert der Term not moving bei Stillstand den Wahrheitswert true.
this.onMouseDown = function() { |
In dem Fall, dass sich die Linie nicht bewegt (d.h. not moving den Wert true liefert), wird im ersten Schritt der Wahrheitswert von moving durch moving = not moving umgedreht.
Durch das Umdrehen des Wahrheitswertes von moving wird beim nächsten Mausklick der andere Zweig der if-Anweisung abgearbeitet. Das ist das allgemeine Prinzip, alternierend zwischen zwei Zuständen zu wechseln.
Anschließend wird dem Event-Handler onEnterFrame ein Funktionsliteral zugewiesen, das den Movieclip welle_mc bei EnterFrame-Ereignissen nach unten bewegt, solange noch nicht der untere Bühnerand erreicht ist.
this.onMouseDown = function() { |
Wenn der untere Bühnenrand erreicht ist, wird sowohl der Event-Handler für onEnterFrame als auch für onMouseDown gelöscht. Dadurch reagiert das Programm nicht mehr auf einen Mausklick und die Linie bleibt am unteren Bühnenrand stehen. Der Wahrheitswert von moving wird wieder umgedreht und enthält jetzt den Wert false, was bedeutet, dass die Linie still steht.
this.onMouseDown = function() { |
Wenn sich bei einem Mausklick die Linie gerade bewegt, d.h. moving enthält den Wert true und not moving liefert den Wert false, wird die Bewegung dadurch gestoppt, dass der Event-Handler onEnterFrame gelöscht wird. Anschließend wird der Wahrheitswert von moving wieder umgedreht und enthält jetzt den Wert false, d.h. die Linie ist gestoppt und steht still.
this.onMouseDown = function() { |