Starten und Stoppen der Abwärtbewegung durch Mausklick auf Linie und Bühne
Ergebnis der swf-Datei
Der Programmcode mit Kommentar ohne Erklärungen
Kommentare sind im nachfolgenden Code grau und die wesentlichen Veränderungen gegenüber dem vorigen Arbeitsschritt rot geschrieben.
// ZEICHNEN EINER WELLENLINIE |
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.
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 der Bewegung durch Mausklick auf die Kurve
Wenn eine swf-Datei im Shockwave-Player abgespielt wird, so wird jedesmal, wenn man über einem Movieclip die linke Maustaste hinunterdrückt, beim Movieclip das Ereignis Press ausgelöst.
Es wird nun beim Movieclip welle_mc dem Event-Handler onPress ein Funktionsliteral zugewiesen, das bei Eintreten des Press-Ereignisses aufgerufen wird.
welle_mc.onPress = function() { |
Da sich die Linie nach dem Anklicken nach unten bewegt, erhält die boolsche Variable moving den Wert true: moving = true
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.
Da der Event-Handler onPress für den Movieclip welle_mc definiert wird und der Event-Handler onEnterFrame innerhalb des onPress-Funktionsliterals, bezieht sich das this in this.onEnterFrame auf den MovieClip welle_mc.
Wenn der untere Bühnenrand erreicht ist, wird sowohl der Event-Handler für onEnterFrame als auch für onPress gelöscht. Dadurch reagiert die Line nicht mehr auf einen Mausklick und bleibt am unteren Bühnenrand stehen. Der Wahrheitswert von moving wird auf den Wert false gesetzt, was bedeutet, dass die Linie still steht.
welle_mc.onPress = function() { |
Stoppen der Bewegung durch Mausklick auf die Bühne
Der Event-Handler onMouseDown wird über this dem Mainmovie zugeordnet.
Wenn nun irgendwo auf der Bühne die linke Maustaste hinuntergedrückt wird und die Variable moving den Wert true hat, wird der onEnterFrame-Event-Handler des Movieclips welle_mc, der für die Abwärtbewegung verantwortlich ist, gelöscht.
Der Wahrheitswert von moving wird wieder auf den Wert false zurückgesetzt, was bedeutet, dass die Linie still steht.
this.onMouseDown = function() { |
Eine Denkaufgabe
Wenn man den linken Codeabschnitt, der oben besprochen wurde, durch den rechten ersetzt, erreicht man dasselbe Ergebnis. Warum?
|
|