多目标点弹性运动

package com.aswing2.cn
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

public class MultiSpring extends Sprite
{
private var ball:Ball;
private var handle:Array=[];
public var numhandle:int=3;
private var spring:Number=0.1;
private var fri:Number=.8;


public function MultiSpring()
{
super();
init();
}

private function init():void
{
ball=new Ball;

this.addChild(ball);

for (var i:int=0; i < numhandle; i++)
{
var hand:Ball=new Ball;

hand.x=Math.random() * stage.stageWidth;
hand.y=Math.random() * stage.stageHeight;

this.addChild(hand);
handle.push(hand);

hand.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
}

addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(MouseEvent.MOUSE_UP, onUp);
}

private function onEnterFrame(e:Event):void
{
for (var i:int=0; i < numhandle; i++)
{
var hand:Ball=handle[i] as Ball;

var dx:Number=hand.x - ball.x;
var dy:Number=hand.y - ball.y;

ball.vx+=dx * spring;
ball.vy+=dy * spring;
}

ball.vx*=fri;
ball.vy*=fri;

ball.x+=ball.vx;
ball.y+=ball.vy;

graphics.clear();
graphics.lineStyle(1);

for (i=0; i < numhandle; i++)
{
graphics.moveTo(ball.x, ball.y);
graphics.lineTo(handle[i].x, handle[i].y);
}

}

private function onDown(e:MouseEvent):void
{
e.target.startDrag(true);
}

private function onUp(e:MouseEvent):void
{
e.target.stopDrag();
}

}
}
posted @ 2012-02-20 20:52  ndljava  阅读(178)  评论(0编辑  收藏  举报