快速业务通道

弹性效果解析

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-11


先发两个弹性效果:
点击浏览该文件
点击浏览该文件
点击浏览该文件
点击浏览该文件
弹性效果在日常生活中是很常见的,下面偶就说说如何用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;
}产生的效果和上面的代码是一样的 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号