In diesem Quick Tip erfahren Sie, wie Sie mit AS3 die aktuelle Richtung der Maus in Ihrer Flash-Anwendung ermitteln. Sie können damit eine interessante Steuermethode für ein Spiel erstellen, beispielsweise mit einer Maus wie einem Joystick. Im Moment zeigen wir nur die Richtung auf dem Bildschirm.
Hier ein kurzes Beispiel, um zu zeigen, woran wir arbeiten:
Mit einem MouseEvent.MOUSE_MOVE -Ereignis überwachen wir die Bewegung des Mauszeigers, speichern die Daten in Variablen und zeigen die aktuelle Richtung an.
Öffnen Sie Flash und erstellen Sie eine neue Flash-Datei (ActionScript 3)..
Drücken Sie die Wahltaste + F9 oder öffnen Sie das Fenster Aktionen> Fenster, um den Aktionsbereich zu öffnen.
Geben Sie die zu verwendenden Variablen ein. ihre Namen sind ziemlich selbsterklärend:
var previousX: Number = 0; var previousY: Anzahl = 0; var currentX: Number = 0; var currentY: Anzahl = 0; var xDir: String; var yDir: String; var dir: TextField = neues TextField ();
Dies ist die Hauptfunktion:
function getMouseDirection (): void dir.width = stage.stageWidth; // Größe des Textfeldes addChild (dir); // Fügt der Bühne das Textfeld hinzu // Fügt der Bühne einen Mausbewegungslistener hinzu und führt die Funktion checkDirection aus, wenn eine Mausbewegung auftritt stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection);
Dieser Code ruft die Funktionen auf, die die Richtung überprüfen, und zeigt das Ergebnis in der Stufe TextField an.
function checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir.text = "x:" + xDir + ", y:" + yDir;
Überprüfen Sie die Mausrichtungen.
// Horizontale Funktion getHorizontalDirection (): void previousX = currentX; // Überprüft die letzte Position currentX = stage.mouseX; // Ruft die aktuelle Position ab, wenn (previousX> currentX) // vergleicht beide Positionen, um die Richtung zu bestimmen xDir = "left"; else if (vorherigeX < currentX) xDir = "right"; else xDir = "none"; //Vertical function getVerticalDirection():void previousY = currentY; //Checks the last position currentY = stage.mouseY; //Gets the current position if (previousY > currentY) // Vergleicht beide Positionen, um die Richtung zu bestimmen yDir = "up"; else if (vorherigerJ < currentY) yDir = "down"; else yDir = "none";
Um die Funktion zu starten, fügen Sie diese Zeile zum Code hinzu. Sobald die getMouseDirection () - Funktion ausgeführt wird, wird der Ereignis-Listener MOUSE_MOVE eingerichtet, der den Richtungsanzeiger aktiviert.
getMouseDirection ();
package import flash.display.MovieClip; import flash.text.TextField; import flash.events.MouseEvent; public class MouseMoveDemo erweitert MovieClip public var previousX: Number = 0; public var previousY: Anzahl = 0; public var currentX: Number = 0; public var currentY: Anzahl = 0; public var xDir: String; public var yDir: String; public var dir1: TextField = neues TextField (); public var dir2: TextField = neues TextField (); public function MouseMoveDemo () getMouseDirection (); public function getMouseDirection (): void dir1.width = stage.stageWidth; addChild (dir1); dir2.width = stage.stageWidth; dir2.y = 50; addChild (dir2); stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection); public function checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir1.text = "x:" + xDir dir2.text = "y:" + yDir; public function getHorizontalDirection (): void previousX = currentX; currentX = stage.mouseX; if (previousX> currentX) xDir = "left"; else if (vorherigeX < currentX) xDir = "right"; else xDir = "none"; public function getVerticalDirection():void previousY = currentY; currentY = stage.mouseY; if (previousY > currentY) yDir = "up"; else if (vorherigerJ < currentY) yDir = "down"; else yDir = "none";
Entscheiden Sie sich für diesen Ansatz, wenn Sie lieber eine Dokumentenklasse als Timeline-Code verwenden möchten. Lesen Sie diesen kurzen Tipp, wenn Sie nicht sicher sind, was Sie damit machen sollen.
Mit dieser Klasse können Sie einen Mausrichtungsanzeiger in ein Projekt einbetten. Kopieren Sie einfach die gesamte Klasse in eine neue AS-Datei, speichern Sie sie als "MouseMoveDemo.as" und können Sie sie mit dem folgenden Snippet referenzieren:
var mouseMoveDemo: MouseMoveDemo = new MouseMoveDemo (); addChild (mouseMoveDemo);
Dies ist ein grundlegendes Beispiel dafür, wie Sie eine solche Funktion verwenden können. Probieren Sie es aus, experimentieren Sie und verwenden Sie es in Ihren eigenen Projekten!
Danke fürs Lesen.