弹簧链

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;

}
}
}
posted @ 2012-02-18 16:41  ndljava  阅读(263)  评论(0编辑  收藏  举报