Observemos el gráfico:
El punto (flecha.x,flecha.y) se encuentra en la posición de la figura Flecha, con lo cuál realizamos diferencias de coordenadas para obtener el valor de cada Cateto(Lados) del triángulo y así podremos usar la función arcotangente y obtendremos el valor del ángulo(En grados luego lo convertiremos a radianes) para luego aplicarle la rotación de acuerdo al movimiento del mouse(cursor).
ángulo = En grados
Radianes = ángulo*180/pi
/*******Código **********/
1. Clase para construir la figura: Flecha.
//Clase que dibuja la flecha con el circulo.
package {
import flash.display.Sprite;
public class Flecha extends Sprite {
public function Flecha() {
comienzo();
}
public function comienzo():void {
//Dibuja la flecha
graphics.lineStyle(5,0,1);
graphics.beginFill(0xff0000);
graphics.moveTo(50,0);
graphics.lineTo(-80,0);
graphics.drawCircle(-80,0,50);
graphics.endFill();
}
}
}
2. Clase para realizar la rotación.(Creamos el archivo Flecha.fla y luego vínculamos la clase RotarFigura.as en propiedades clase de está)
/*
Por: Materhw
Rota la figura.
*/
package {
import flash.display.Sprite;
import flash.events.Event;
public class RotarFigura extends Sprite {
private var figura:Flecha;
public function RotarFigura() {
//Llamamos al constructor.
ejecutar();
}
private function ejecutar():void {
//Realizamos una instancia de la clase Flecha.
figura = new Flecha();
//Colocamos en el escenario.
addChild(figura);
//Centramos el objeto.
figura.x = stage.stageWidth/2;
figura.y = stage.stageHeight/2;
//En cada Frame llame a la función MueveFigura.
addEventListener(Event.ENTER_FRAME, MueveFigura);
}
//Esta función rotará la figura de acuerdo a la posición del Mouse.
public function MueveFigura(event:Event):void {
//Calculamos la distancia desde el cursor(Mouse) hasta la figura(Objeto)
var dx:Number = mouseX - figura.x;
var dy:Number = mouseY - figura.y;
//Calculamos el ángulo con la función arcotangente.
var radianes:Number = Math.atan2(dy, dx);
//Calculamos el ángulo en radianes.
// y luego rotamos con rotation.
figura.rotation = radianes*180/Math.PI;
}
}
}
Ejemplo:
Fuente: Descargar
1 comentarios:
aqui hay otro codigo donde se pone a un objeto a segir el mouse:
perseguidor
Publicar un comentario