Rotación de una Flecha con la función arcotangente - Actionscript 3.0

domingo, 22 de noviembre de 2009 | | | |
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:

schnaider dijo...

aqui hay otro codigo donde se pone a un objeto a segir el mouse:
perseguidor