拥有重力的弹性小球

搞AS游戏开发的朋友也许都听过Keith Peters大师,为我们缔造了那么多的经典算法,偶虽然不是游戏方向,但是还是特别喜欢!近些天拜读了《Making Things Move》的一部分,大师的经典杰作。数学与物理的伟大艺术体现,一直逃脱不出我的眼球!

来玩儿一个,做一个健身的小弹力球,在地球上有重力哦^^先看看:

 

下面是实现:

 

package {
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageScaleMode;
import flash.display.Stage;

public class TestBall 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.95;
//这个是重力,和我们现实生活中差不多
private var gravity:Number=5;
public function TestBall() {
this.stage.scaleMode=StageScaleMode.NO_SCALE;
//实例化一个小球(在库里的哦)
ball=new Ball();
this.addChild(ball);
this.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(event: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;
//绘制线条
this.graphics.clear();
this.graphics.lineStyle(1);
this.graphics.moveTo(ball.x,ball.y);
this.graphics.lineTo(mouseX,mouseY);
}
}
}

posted @ 2008-10-06 09:24  Landy_di  阅读(156)  评论(0编辑  收藏  举报