以下是Math.atan2、rotation的一个用例:
1、新建一fla,命名RotateToMouse.fla
2、新建一as文件命名RotateToMouse.as、并与RotateToMouse.fla关联
3、新建一as文件命名Arrow.as,在里面绘制一箭头
Arrow.as:
package
{
import flash.display.Sprite;
public class Arrow extends Sprite
{
public function Arrow()
{
init();
}
public function init():void
{
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.endFill();
}
}
}
RotateToMouse.as:
package
{
import flash.display.Sprite;
import flash.events.Event;
import Arrow;
public class RotateToMouse extends Sprite
{
private var arrow:Arrow;
public function RotateToMouse()
{
init();
}
private function init():void
{
arrow = new Arrow();
addChild(arrow);
arrow.x = stage.stageWidth / 2;
arrow.y = stage.stageHeight / 2;
addEventListener(Event.ENTER_FRAME,OnEnterFrame);
}
private function OnEnterFrame(event:Event):void
{
var dx:Number = mouseX - arrow.x;
var dy:Number = mouseY - arrow.y;
//反正切函数Math.atan2()求弧度值
var radians:Number = Math.atan2(dy,dx);
arrow.rotation = radians * 180 / Math.PI;
}
}
}
Ctrl+Enter导出效果: