论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

弹性效果解析

文章类别:Flash | 发表日期:2008-9-21 19:21:04

  先发两个弹性效果:
点击浏览该文件
点击浏览该文件
点击浏览该文件
点击浏览该文件
弹性效果在日常生活中是很常见的,下面偶就说说如何用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;
}
产生的效果和上面的代码是一样的
上一篇:{应用}多普勒效果 人气:1829
下一篇:{应用}拖动缓冲图片 人气:1886
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058