搞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); } } }
|
-*-本页地址:http://fck.name/node/138,转载请注明出处,谢谢!-*-