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..
Aquí hay un ejemplo rápido para demostrar en qué estamos trabajando:
Usando un evento MouseEvent.MOUSE_MOVE monitorearemos el movimiento del cursor del mouse, almacenaremos los datos en variables y mostraremos su dirección actual.
Abra Flash y cree un nuevo archivo Flash (ActionScript 3).
Presione Opción + F9, o vaya a Ventana> Acciones para abrir el Panel de acciones.
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 ();
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);
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;
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";
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 ();
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);
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.