先发两个弹性效果: 点击浏览该文件 点击浏览该文件 点击浏览该文件 点击浏览该文件弹性效果在日常生活中是很常见的,下面偶就说说如何用FLASH来实现弹性效果吧,呵呵
弹性物体在静止时总是要处于它的平衡位置。物体可以被拉伸,拉伸的程度越大,产生的弹性力就越大。那么弹性力和物体被拉伸的位置有什么关系呢?
这个要感谢胡克先生了(他是牛顿的工作伙伴),是他的胡克定律让我们在解决弹性问题时变的非常简单了。
胡克定律公式:F=-kd;其中,k是弹性系数,d则是物体被拉伸的距离。那为什么要加负号呢?原因在于弹性力的方向与拉伸位移的方向相反。也就是说,假如橡皮筋被向右拉,那么它的弹力的方向就是向左的。
下面就是要把这个公式应用到FLASH中了,呵呵
(1)
新建一个FLASH文档,按Ctrl+F8建立一个MC元件,用来放置弹性物体。在这里我是用一个圆球来代替的。选择这个MC的第一贞,添加如下代码:
with (this) {
posX = _x;//把物体的初始X位置放在此变量中
posY = _y;//把物体的初始Y坐标放在此变量中
velX = velY=0;//设置一个变量用来记载弹性力的变化
friction=0;//把摩擦力的初始值设置为0
anchorX = 300;//这是平衡位置的水平坐标
anchorY = 100;//这是平衡位置的垂直坐标
tautness = .25;//这是弹性系数.值越大,弹力就越大
onEnterFrame = function () {
netForceX = posX-anchorX;
netForceY = posY-anchorY;
//计算物体的坐标与平衡位置的坐标之差
netForceX *= tautness;
netForceY *= tautness;
//把位移乘以弹性系数
velX -= netForceX;
velY -= netForceY;
//用velX,velY来记录中间弹性力的变化
velX *= (1-friction);
velY *= (1-friction);
//计算物体运动碰到摩擦力之后的位移大小
posX += velX;
posY += velY;
_x = posX;
_y = posY;
//用初始位置加上 因为有摩擦力 所产生的位移,取得物体新的位置.假如摩擦力的系数为0,那么摩擦力所产生的位移就是弹性力所产生的位移
updateAfterEvent();
};
onMouseDown = function () {
anchorX = _parent._xmouse;
anchorY = _parent._ymouse;
};//当鼠标按下时,把物体做弹性运动的平衡位置放在鼠标点击处
}
然后按CTRL+F8测试,你会发现,物体会永不停止的做弹性运动,就象是永动机(如第一个动画),这是为何呀?呵呵,原来是在上面的代码中,我把摩擦力的系数,即变量friction设为0了。大家可以改动它的值来看效果的(如第2个动画)。
有了上面的代码,看下面的代码就比较简单了,呵呵
anchorX=150;
anchorY=100;
velX=velY=0;
onEnterFrame=function(){
velX=(velX-((_x-anchorX)*.25))*.9;
velY=(velY-((_y-anchorY)*.25))*.9;
_x+=velX;
_y+=velY;
}
产生的效果和上面的代码是一样的