Objekte erzeugen, während die Maus bewegt wird

MOUSE_MOVE ist ein wesentliches Mausereignis, das permanent auftritt, solange der Mauszeiger bewegt wird.
MOUSE_MOVE-Ereignisse können viel öfter als ENTER_FRAME-Ereignisse auftreten und sind von diesen unabhängig.

Wenn man daher in Abhängigkeit von der Mausbewegung ein Programm steuern möchte, dann ist die Verwendung von Eventhandlern für MOUSE_MOVE-Ereignisse besser geeignet als für ENTER_FRAME-Ereignisse. Siehe auch Cursor-Modul.

Im nachfolgenden Beispiel werden permanent beim Bewegen des Mauszeigers über die Bühne kleine Kreise an der momentanen Mausposition erzeugt. Dieses Beispiel veranschaulicht auf niedrigem Niveau das Grundprinzip des Linienzeichnens in Grafikprogrammen. Der Kreis wäre eine Werkzeugspitze mit bestimmter Größe, Form, Farbe und Deckkraft.

Zum Ausprobieren: Bewegen Sie den Mauszeiger über die Bühne.

 

 

Dazu ist in der Bibliothek ein MovieClip Kreis abgelegt, beim die Eigenschaft Export für ActionScript aktiviert ist. Der Klassenname ist ebenfalls Kreis.

Im ersten Frame der Maintimeline wird nachstehendes Skript geschrieben:
 

var kreis:MovieClip;
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, drawCircle);
function drawCircle(e:MouseEvent):void {
kreis = new Kreis();
this.addChild(kreis);
kreis.x = e.stageX;
kreis.y = e.stageY;
}

Erklärungen zum Skript:

Zuerst wird eine Variable kreis von Typ MovieClip definiert. Sie könnte in diesem Fall auch z.B. vom Typ DisplayObject oder Sprite sein.
 

var kreis:MovieClip;

Anschließend abonniert die Bühne das Ereignis MOUSE_MOVE mit dem Eventandler drawCircle.
 

this.stage.addEventListener(MouseEvent.MOUSE_MOVE, drawCircle);

In der Eventhandlerfunktion drawCircle, die immer ausgeführt wird, wenn die Maus bewegt und das Ereignis MOUSE_MOVE vom Flash-Player generiert wird, wird eine neue Instanz des Movieclips Kreis erzeugt, ...
 

kreis = new Kreis();

... der Displayliste des Mainmovies hinzugefügt ...
 

this.addChild(kreis);

... und auf die Position des Mauszeigers platziert.
 

kreis.x = e.stageX;
kreis.y = e.stageY;

Der Eingabeparameter e ist vom Typ MouseEvent. Über die MouseEvent-Eigenschaften stageX und stageY kann immer die Mausposition zum Zeitpunkt des Ereignisses relativ zur Bühne abgefragt werden. Siehe auch Kapitel 1 und 2 in diesem Modul.
 

Im nächsten Kapitel wird das Beispiel erweitert, indem man nur bei gedrückter Maustaste beim Bewegen der Maus die Kreise zeichnen kann.

 

Quellcode in der beigefügten zip-Datei:
MouseEvent_Kreise_zeichnen.fla

Ergänzende und vertiefende Module