论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: 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 AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

Flash算法研究—力学公式的应用

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:35:49


  物理学,除了让你考试拿学分之外,其实是有很大的实用价值的,现在,就让我们来研究一下物理学在flash中的应用:)
  运动,是动画的必要元素,作为矢量动画的flash当然也不例外。而力学,则是研究物体运动的科学,适当的运用把力学知识在你的flash动画中,会给你的动画带来意想不到的特殊效果或者让你的作品更加精致。


  让我们先来复习一下力学知识,速度这个概念我向大家都知道,它是物体每单位时间运动的位移,要模拟匀速的运动是非常简单的,每桢给mc加上固定的位移就可以了,匀速运动的物理公式是
  S = Vt
  S是位移,V是速度,它是一个矢量,t是时间。在flash动画中,每桢之间会有固定的时间间隔,所以,这个公式可以用每桢加上固定的位移来代替。写成这样:

--------------------------------------------------------------------------------
//第一桢的action,计算x、y方向的单位位移
angle = 30*Math.PI/180;
// 运动方向和水平线之间的角度,需要转换成弧度,这个例子是角度30度,转换成弧度的公式是 a*Math.PI/180
v = 10; // 速度的大小
xstep = v*Math.cos (angle); // 计算x方向的位移量
ystep = v*Math.sin (angle); // y方向的位移量
//上面的代码只需要在初始化的时候计算一次

//第二桢
sprite._x += xstep; // 计算新的x坐标
sprite._y += ystep; // 计算新的y坐标
//上面的代码则需要每桢执行,需要放在循环的桢action里面

//第三桢
gotoandplay(2);

--------------------------------------------------------------------------------

  这段代码的功能是让mc sprite沿着30度的方像以每桢10像素的速度运动。当然这是最简单的运动方式,实际生活中是没有这样完美的匀速运动的,物体在运动中都会受到各种力的影响,比如说摩擦力、空气阻力、重力等等,而在力的作用下,物体表现为加速度运动,只要受力总和不为0,则物体的速度就会每时每刻都不一样,这样的运动,就已经比较接近实际的了。
和加速运动相关的物理公式有
  V=at
  V仍然是速度,t是时间,新加入的a则是加速度,它是每单位时间速度的变化量,她也是一个矢量。那么a是如何计算的呢?请看下面的公式:
  a = F/M
  加速度公式,F是物体的受力总和,M是物体的质量,同样,F也是一个矢量。把这些元素加入到刚才的代码中,则修改这些代码如下:

--------------------------------------------------------------------------------
//第一桢的action,计算加速度
angle = -60*Math.PI/180; // 受力方向和水平线之间的角度,需要转换成弧度,这个例子是角度30度,转换成弧度的公式是 a*Math.PI/180
F = 10; // 受力的大小
vangle = 60*Math.PI/180; // 初始角度
v = 10; // 速度的大小
m = 20; // 物体质量
ax = F*Math.cos (angle)/M
ay = F*Math.sin (angle)/m //x,y方向的加速度
vx = v*Math.cos (vangle); // 计算x方向的位移量
vy = v*Math.sin (vangle); // y方向的位移量
//上面的代码只需要在初始化的时候计算一次

//第二桢
vx += ax;
vy += ay;
sprite._x += vx; // 计算新的x坐标
sprite._y += vy; // 计算新的y坐标
//上面的代码则需要每桢执行,需要放在循环的桢action里面
//第三桢
gotoandplay(2);

--------------------------------------------------------------------------------

  我们可以看到,mc在舞台上划出一道抛物线。大家可以自己试验改变上面的速度质量受力和方向等参数,就可以看到mc的不同运动方式。
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058