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鼠标双击 >> ·下一篇:网站制作学习网