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.
Ecco un breve esempio per dimostrare a cosa stiamo lavorando:
Usando un evento MouseEvent.MOUSE_MOVE controlleremo il movimento del cursore del mouse, memorizzeremo i dati in variabili e mostreremo la direzione corrente.
Apri Flash e crea un nuovo file Flash (ActionScript 3).
Premi Opzione + F9, o vai a Finestra> Azioni per aprire il pannello Azioni.
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 ();
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);
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;
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";
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 ();
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);
Questo è un esempio di base di come è possibile utilizzare tale funzione; provalo, sperimentalo e usalo nei tuoi progetti!
Grazie per aver letto.