package cn.d
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
public class Spring5 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.6;
private var gravity:Number=5;
private var balls:Array=[];
public function Spring5()
{
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
init();
}
private function init():void
{
for (var i:int=0; i < 10; i++)
{
ball=new Ball();
balls.push(ball);
addChild(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(mouseX, mouseY);
moveBall(balls[0], mouseX, mouseY);
graphics.lineTo(balls[0].x, balls[0].y);
for (var i:int=1; i < 10; i++)
{
var b1:Ball=balls[i];
var b2:Ball=balls[i - 1];
moveBall(b1, b2.x, b2.y);
graphics.lineTo(b1.x, b1.y);
}
}
private function moveBall(ba:Ball, targetX:Number, targetY:Number):void
{
ba.vx+=(targetX - ba.x)*spring;
ba.vy+=(targetY - ba.y)*spring;
ba.vy+=gravity;
ba.vx*=friction;
ba.vy*=friction;
ba.x+=ba.vx;
ba.y+=ba.vy;
}
}
}