Suggerimento rapido come rilevare la direzione del mouse mediante ActionScript

In questo suggerimento rapido imparerai come ottenere la direzione corrente del mouse nella tua applicazione Flash usando AS3. Puoi usare questo per creare un metodo di controllo interessante per un gioco, usando un mouse come un joystick, per esempio. Per ora mostreremo solo la direzione sullo schermo.


Anteprima

Ecco un breve esempio per dimostrare a cosa stiamo lavorando:


Breve panoramica

Usando un evento MouseEvent.MOUSE_MOVE controlleremo il movimento del cursore del mouse, memorizzeremo i dati in variabili e mostreremo la direzione corrente.


Passaggio 1: crea un nuovo file

Apri Flash e crea un nuovo file Flash (ActionScript 3).


Passaggio 2: Apri il pannello Azioni

Premi Opzione + F9, o vai a Finestra> Azioni per aprire il pannello Azioni.


Passaggio 3: variabili

Inserisci le variabili che useremo; i loro nomi sono abbastanza auto-esplicativi:

var previousX: Number = 0; var previousY: Number = 0; var currentX: Number = 0; var currentY: Number = 0; var xDir: String; var yDir: String; var dir: TextField = new TextField ();

Passaggio 4: Funzione principale

Questa è la funzione principale:

 function getMouseDirection (): void dir.width = stage.stageWidth; // Dimensione del campo di testo addChild (dir); // Aggiunge il campo di testo allo stage // Aggiunge un listener di spostamento del mouse allo stage ed esegue la funzione checkDirection quando si verifica un movimento del mouse stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection); 

Passaggio 5: controllare la direzione

Questo codice chiama le funzioni che controllano la direzione e visualizza il risultato nello stage TextField.

 function checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir.text = "x:" + xDir + ", y:" + yDir; 

Passaggio 6: Ottieni indicazioni

Controlla le indicazioni del mouse.

 // Funzione orizzontale getHorizontalDirection (): void previousX = currentX; // Controlla l'ultima posizione correnteX = stage.mouseX; // Ottiene la posizione corrente if (previousX> currentX) // Confronta entrambe le posizioni per determinare la direzione xDir = "left";  else if (previousX < 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) // Confronta entrambe le posizioni per determinare la direzione yDir = "su";  else if (previousY < currentY)  yDir = "down";  else  yDir = "none";  

Passaggio 7: esecuzione della funzione

Per avviare la funzione, aggiungi questa linea al codice. Una volta eseguita la funzione getMouseDirection (), verrà impostato il listener di eventi MOUSE_MOVE che alimenta l'indicatore di direzione.

getMouseDirection ();

Passaggio 8: versione della classe di documenti

 package import flash.display.MovieClip; import flash.text.TextField; import flash.events.MouseEvent; public class MouseMoveDemo estende MovieClip public var previousX: Number = 0; public var previousY: Number = 0; public var currentX: Number = 0; public var currentY: Number = 0; public var xDir: String; public var yDir: String; public var dir1: TextField = new TextField (); public var dir2: TextField = new TextField (); funzione pubblica 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 (previousX < currentX)  xDir = "right";  else  xDir = "none";   public function getVerticalDirection():void  previousY = currentY; currentY = stage.mouseY; if (previousY > currentY) yDir = "up";  else if (previousY < currentY)  yDir = "down";  else  yDir = "none";    

Optare per questo approccio se preferisci usare una classe di documento piuttosto che un codice di timeline. Leggi questo suggerimento se non sei sicuro di cosa farne.

È possibile utilizzare questa classe per incorporare un indicatore di direzione del mouse all'interno di qualsiasi progetto. Basta copiare l'intera classe in un nuovo file AS, salvarlo come "MouseMoveDemo.as", quindi puoi fare riferimento usando il seguente frammento:

 var mouseMoveDemo: MouseMoveDemo = new MouseMoveDemo (); addChild (mouseMoveDemo);

Conclusione

Questo è un esempio di base di come è possibile utilizzare tale funzione; provalo, sperimentalo e usalo nei tuoi progetti!

Grazie per aver letto.