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?
|
|