网站制作学习网Flash→正文:flash弹性运动
字体:

flash弹性运动

Flash 2011/9/9 18:04:05  点击:不统计


 flash的弹性运动,是个简单的数学算法,下面对flash的弹性运动(橡皮筋)效果进行分析,并给出例子。
分析
 弹性,肯定是从一个点(A)到另一个点(B),那弹力效果用肉眼看到的是,对象从A到B然后超过B,然后又回来过B在向A的方向移动
但不到A点。如此重复,直到到B点为止。
 
然后再看速度系数,速度是根据位移来算的即:当A和B点的举例越来越近则速度越来越慢,那么我们定义位移变量为
加速速度 = 速度参数*L(其中L是随着距离变化而变化的);因为A->B距离越近加速度越慢,然而过B后 会越来越慢,转方向后会越
 
来越快。
 
我们定义全局的X变量和Y变量用来记录总的偏移,我们那X来举例计算
当开始时 比如X的差值为L,那每动一次,假设新的位置偏移为Nx
Nx = 加速度*X差值* 弹力系数; 这是第一次的偏移量,依次类推比如移动了NC次。
让我们吧偏移量加起来 Nx +=加速度*X差值*弹力系数;
当到达B点时,他的移动长度 是NC次的和相加,当超过B点时,差值变号,由正到负(或者由负到正),将Nx变号;位移则开始向相
 
反的方向运动。依次类推
 
 
看下面的代码
 var ball:MovieClip;//
 var spring:Number=0.1;//定义加速度参数
 var friction:Number=0.95;//定义弹力系数
 var vx:Number=0;//定义全局x位移
 var vy:Number=0;//定义全局y位移
 
function init():void{
 ball.y=stage.stageHeight/2;
 addEventListener(Event.ENTER_FRAME,cc);//给小球添加时间
 }
 function cc(e:Event):void{
 var dx:Number=mouseX-ball.x;//获取鼠标与小球之间的X轴差值
 var dy:Number=mouseY-ball.y;//获取鼠标与小球指甲剪Y轴差值
 var ax:Number=dx*spring;//X为差值*加速参数
 var ay:Number=dy*spring;//Y差值*加速参数
 vx+=ax;//将加速位移加到全局位移
 vy+=ay;
 vx*=friction;//然后计算出要移动的位移
 vy*=friction;
 ball.x+=vx;//进行位移变化
 ball.y+=vy;
 graphics.clear();
 graphics.lineStyle(1);
 graphics.moveTo(ball.x,ball.y);
 graphics.lineTo(mouseX,mouseY);
 }
 init();
 stop()
//其他的我就不多说了看看效果吧

 

·上一篇:flash鼠标双击 >>    ·下一篇:网站制作学习网
推荐文章
最新文章