package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.ui.Mouse; import flash.ui.MouseCursor; public class Spring2 extends Sprite { private var ball:Ball; private var spring:Number=0.1; private var targetX:Number=stage.stageWidth/2; private var targetY:Number=stage.stageHeight/2; private var vx:Number=0; private var vy:Number=0; private var friction:Number=0.95; public function Spring2() { init(); } private function init():void { ball = new Ball(5); ball.x = Math.random() * stage.stageWidth; ball.y = Math.random() * stage.stageHeight; addChild(ball); addEventListener(Event.ENTER_FRAME, EnterFrameHandler); stage.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler); MouseDownHandler(null); Mouse.cursor = MouseCursor.BUTTON; } function MouseDownHandler(e:MouseEvent):void{ graphics.clear(); ball.x = Math.random() * stage.stageWidth; ball.y = Math.random() * stage.stageHeight; ball.vx = (Math.random()*2-1) * 50; ball.vy = (Math.random()*2-1) * 50; graphics.moveTo(ball.x,ball.y); } private function EnterFrameHandler(event:Event):void { //去掉下面的注释,就变成鼠标跟随的弹性运动 //targetX = mouseX; //targetY = mouseY; var dx:Number=targetX-ball.x; var dy:Number=targetY-ball.y; var ax:Number=dx*spring; var ay:Number=dy*spring; vx+=ax; vy+=ay; vx*=friction; vy*=friction; ball.x+=vx; ball.y+=vy; graphics.lineStyle(0.3,0xbbbbbb,1); graphics.lineTo(ball.x,ball.y); } } }