3. Methode mit einem Eventhandler für MOUSE_MOVE

Die ersten drei Programmzeilen bleiben wieder unverändert  und werden durch die Ausrichtung des Cursors an der Position des Mauszeigers ergänzt, damit der Cursor an der richtigen Stelle auftaucht, auch wenn die Maus nicht bewegt wird.  

Mouse.hide();
var stiftCursor:MovieClip = new Stift();
this.stage.addChild(stiftCursor);
stiftCursor.x = this.stage.mouseX;
stiftCursor.y = this.stage.mouseY;


Die Bühne stage abonniert nun das Ereignis MOUSE_MOVE. D.h. immer wenn das Ereignis Bewegen der Maus (innerhalb der Bühne) eintritt, wird die Instanz der Bühne benachrichtigt und es wird der Eventhandler meinCursor ausgeführt.
this.stage.mouseX und this.stage.mouseY liefern die x- und y-Koordinaten des Mauszeigers relativ zum Bühnenursprung in der linken oberen Ecke.

Wichtig: Da das MOUSE_MOVE-Ereignis viel häufiger als das ENTER_FRAME-Ereignis auftritt, aber normalerweise die Bühne nur bei ENTER_FRAME-Ereignissen aktualisiert wird, muss durch die Methode updateAfterEvent() die vorzeitige Aktualisierung der Bühne bei einem MOUSE_MOVE-Ereignis erzwungen werden.

Durch MOUSE_MOVE folgt der Cursor weicher der Mausbewegung als bei ENTER_FRAME.

 

this.stage.addEventListener(MouseEvent.MOUSE_MOVE, meinCursor);
function meinCursor(e:MouseEvent):void {
stiftCursor.x = this.stage.mouseX;
stiftCursor.y = this.stage.mouseY;
e.updateAfterEvent();
}

Das gesammte Skript zusammengefasst:
 
Mouse.hide();
var stiftCursor:MovieClip = new Stift();
this.stage.addChild(stiftCursor);
stiftCursor.x = this.stage.mouseX;
stiftCursor.y = this.stage.mouseY;
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, meinCursor);
function meinCursor(e:MouseEvent):void {
stiftCursor.x = this.stage.mouseX;
stiftCursor.y = this.stage.mouseY;
e.updateAfterEvent();
}