天天看点

弹性运动(一):一维弹性运动

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

	/**
	 * ...
	 * @author zkl
	 */
	public class Spring1 extends Sprite 
	{
		private var ball:Ball;
		private var vx:Number = 0;
		private var spring:Number = 0.1;
		private var friction:Number = 0.95;
		private var targetX:Number = stage.stageWidth / 2;

		public function Spring1():void
		{
		    init();
		}
		private function init():void
		{
		    ball = new Ball;
			addChild(ball);
			ball.y = stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, EnterFrame);
		}
		private function EnterFrame(e:Event):void
		{ 
			//与目标点的距离:
			var dx:Number = targetX - ball.x;
            //下面计算加速度。加速度与距离成正比,也就是距离乘以 spring 的值
			var ax:Number = dx * spring;
            //把加速度加到速度向量中。
			vx += ax;
			//引入摩擦力
		    vx *= friction;

			ball.x += vx;
		}
	}

}