package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.ui.Mouse; import flash.ui.MouseCursor; public class Easing1 extends Sprite { private var ball:Ball; private var easing:Number=0.15; private var targetX:Number=stage.stageWidth/2; private var targetY:Number=stage.stageHeight/2; public function Easing1() { trace(targetX,targetY); init(); } private function init():void { ball=new Ball(10) ; ball.x = Math.random() * stage.stageWidth; ball.y = Math.random() * stage.stageHeight; addChild(ball); addEventListener(Event.ENTER_FRAME,EnterFrameHandler); ball.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler); stage.addEventListener(MouseEvent.MOUSE_UP,MouseUpHandler); ball.addEventListener(MouseEvent.MOUSE_OVER,function(){ Mouse.cursor = MouseCursor.HAND;}); //在中心画个十字架 graphics.lineStyle(1); graphics.moveTo(targetX-15,targetY); graphics.lineTo(targetX+15,targetY); graphics.moveTo(targetX,targetY -15); graphics.lineTo(targetX,targetY +15); } private function EnterFrameHandler(e:Event):void { var vx:Number = (targetX - ball.x) * easing; //x轴速度与距离成正比缩小 var vy:Number = (targetY - ball.y) * easing; //y轴速度与距离成正比缩小 ball.x += vx; ball.y += vy; var dx = ball.x - targetX; var dy = ball.y - targetY; var dist = Math.sqrt(dx*dx + dy*dy); //当物体达到目标点时,停止处理,以节省CPU资源 if (dist<=1){ removeEventListener(Event.ENTER_FRAME,EnterFrameHandler); } } //开始拖动 private function MouseDownHandler(e:MouseEvent):void{ ball.startDrag(); removeEventListener(Event.ENTER_FRAME,EnterFrameHandler); } //停止拖动 private function MouseUpHandler(e:MouseEvent):void{ ball.stopDrag(); addEventListener(Event.ENTER_FRAME,EnterFrameHandler); Mouse.cursor = MouseCursor.AUTO; } } }