弹性效果解析
作者 佚名技术
来源 服务器技术
浏览
发布时间 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于弹性效果解析的所有评论