Código ActionScript :
package { import flash.display.Sprite; public class Arrow extends Sprite { public function Arrow() { init(); } private function init() { graphics.lineStyle(1,0,1); graphics.beginFill(0xffff00); graphics.moveTo(-50,-25); graphics.lineTo(0,-25); graphics.lineTo(0,-50); graphics.lineTo(50,0); graphics.lineTo(0,50); graphics.lineTo(0,25); graphics.lineTo(-50,25); graphics.lineTo(-50,25); graphics.lineTo(-50,-25); graphics.endFill(); } } }
Hagamos un pequeño ejemplo con la clase anterior. En este caso la flecha seguirá al cursor. Para ello debemos realizar un evento ENTER_FRAME para que la función que hace girar a la flecha sea evaluada cada vez que el apuntador del ratón se mueva. El código será el siguiente:
Código ActionScript :
var flecha:Flecha = new Flecha(); addChild(flecha); // flecha.x = stage.stageWidth/2 flecha.y = stage.stageHeight/2 addEventListener(Event.ENTER_FRAME, onEnterFrame); // function onEnterFrame(e:Event):void { var dx:Number = mouseX - flecha.x; var dy:Number = mouseY - flecha.y; var radianes:Number = Math.atan2(dy, dx); flecha.rotation = radianes * 180 / Math.PI; }
Recuerde que las funciones trigonómicas de ActionScript regresan valores en radianas, pero la propiedad rotation sólo acepta grados, por lo que hay que convertir radianes en grados.
El ejemplo sería el siguiente:
Si deseas bajar el archivo fuente fla, pulsa aqui.
Si deseas bajar la clase que hace la flechita, pulsa aqui.