Sugerencia rápida Cómo detectar la dirección del mouse con ActionScript

En este Consejo rápido, aprenderá cómo obtener la dirección actual del mouse en su aplicación Flash utilizando AS3. Puedes usar esto para crear un método de control interesante para un juego, usando un mouse como un joystick, por ejemplo. Por ahora solo mostraremos la dirección en pantalla..


Avance

Aquí hay un ejemplo rápido para demostrar en qué estamos trabajando:


Breve descripción

Usando un evento MouseEvent.MOUSE_MOVE monitorearemos el movimiento del cursor del mouse, almacenaremos los datos en variables y mostraremos su dirección actual.


Paso 1: Crear un nuevo archivo

Abra Flash y cree un nuevo archivo Flash (ActionScript 3).


Paso 2: Abrir el Panel de Acciones

Presione Opción + F9, o vaya a Ventana> Acciones para abrir el Panel de acciones.


Paso 3: Variables

Ingrese las variables que usaremos; Sus nombres son bastante autoexplicativos:

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 ();

Paso 4: Función principal

Esta es la función principal:

 function getMouseDirection (): void dir.width = stage.stageWidth; // Tamaño del campo de texto addChild (dir); // Agrega el campo de texto al escenario // Agrega un detector de movimientos del mouse al escenario y ejecuta la función checkDirection cuando ocurre un movimiento del mouse stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection); 

Paso 5: verifique la dirección

Este código llama a las funciones que verifican la dirección y muestra el resultado en la etapa..

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

Paso 6: Obtener direcciones

Compruebe las direcciones del ratón.

 // Función horizontal getHorizontalDirection (): void previousX = currentX; // Comprueba la última posición currentX = stage.mouseX; // Obtiene la posición actual if (previousX> currentX) // Compara ambas posiciones para determinar la dirección 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) // Compara ambas posiciones para determinar la dirección yDir = "up";  else if (anteriorY < currentY)  yDir = "down";  else  yDir = "none";  

Paso 7: Ejecutar la función

Para iniciar la función, agregue esta línea al código. Una vez que se ejecuta la función getMouseDirection (), se configurará el detector de eventos MOUSE_MOVE que activa el indicador de dirección.

getMouseDirection ();

Paso 8: Versión de la clase de documento

 paquete import flash.display.MovieClip; importar flash.text.TextField; import flash.events.MouseEvent; la clase pública MouseMoveDemo extiende 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 (); función pública MouseMoveDemo () getMouseDirection ();  función pública getMouseDirection (): void dir1.width = stage.stageWidth; addChild (dir1); dir2.width = stage.stageWidth; dir2.y = 50; addChild (dir2); stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection);  función pública checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir1.text = "x:" + xDir dir2.text = "y:" + yDir;  función pública 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 (anteriorY < currentY)  yDir = "down";  else  yDir = "none";    

Opte por este enfoque si prefiere usar una clase de documento en lugar del código de línea de tiempo. Lea este Consejo rápido si no está seguro de qué hacer con él..

Podría usar esta clase para incrustar un indicador de dirección del mouse dentro de cualquier proyecto. Simplemente copie toda la clase en un nuevo archivo AS, guárdelo como "MouseMoveDemo.as", luego puede hacer referencia a él usando el siguiente fragmento de código:

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

Conclusión

Este es un ejemplo básico de cómo se puede usar una función de este tipo; Pruébalo, experimenta y úsalo en tus propios proyectos.!

Gracias por leer.