

package
{
import flash.display.Sprite;
public class Ball extends Sprite
{
public var radius:Number;
public var color:uint;
public function Ball (radius:Number,color:uint)
{
this.radius=radius;
this.color=color;
Init ();
}
public function Init ():void
{
graphics.beginFill (color);
graphics.drawCircle (0,0,radius);
graphics.endFill ();
}
}
}


package
{
import flash.display.Sprite;
import flash.events.Event;
public class Spring extends Sprite
{
private var ball:Ball;
private var spring:Number=0.1;
private var vx:Number=0;
private var vy:Number=0;
private var friction:Number=0.9;
private var gravity:Number=0.5;
public function Spring ()
{
Init ();
}
public function Init ():void
{
ball=new Ball(20,0xFF00FF);
addChild (ball);
addEventListener (Event.ENTER_FRAME,EnterFrame);
}
private function EnterFrame (e:Event):void
{
var dx:Number=mouseX-ball.x;
var dy:Number=mouseY-ball.y;
var ax:Number=dx*spring;
var ay:Number=dy*spring;
vx+=ax;
vy+=ay;
vy+=gravity;
vx*=friction;
vy*=friction;
ball.x+=vx;
ball.y+=vy;
graphics.clear ();
graphics.lineStyle (1);
graphics.moveTo (ball.x,ball.y);
graphics.lineTo (mouseX,mouseY);
}
}
}