物理是一个很有趣的东西,flash 结合物理是其中一个很重要的方向,也是学习flash技术一个很重要的门。最近翻阅一些资料,复习了一下物理和flash技术,虽然是一点皮毛的东西,不过先把他记录下来。为日后需要作一个基础,下面我们采用小球模拟重力,但是本身没有涉及到质量,没有涉及到球与球之间的碰撞,这样可操作性会简单一些,容易掌握,重力结合当中。在Make thing move 一书当中,这本书已经讲解得很深入,它有碰撞,和能量损失等模拟。可以参考这本书,不过既然初学的,先简单的一些好。自己本身物理知识还在恶补当中。只能一点一点来。
重力模拟,只要技巧在于加速度和位移是怎样结合起来。我们知道在每一帧刷新的时候,不断执行
(物体.y+=值)。物体就会一直向下移动。
(物体的垂直速度vy+=g)加上一个重力加速度,使物体在vy垂直方向的速度有了一个额外的递增值,因此vy值会不断增加
从而物体.y 的值会发生变化,其实flash 里面隐含了一个时间概念。每一帧其实有一个时间间隔,这样这个隐含的时候就会无形加上去了
速度公式:vt=v0+at(其中v0为初始速度,t为时间)
位移的公式:s=v0t + 1/2at^2 (其中v0为初始速度,a为加速度,t为时间);
这样的组合方式
vy+=a;
物体.y+=vy;
就能够产生位移变化。(该公式可以在make thing move 找到)
下面就是模拟出一些小球进行,小球采用绘图api来模拟出来。
private function creatBalls(num:int):void 创建一系列的小球
其中:我们加入了阻力去模拟,效果会更加好,小球受到空气阻力,因此落体的时候会发生速度递减。
list[i].vy+=g;//加速度加上向下的垂直速度
list[i].vy*=friction;//阻力
list[i].y+=list[i].vy;// s=vt;
这里就是关键的地方,不是很难,因为没有涉及到质量和球与球之间碰撞,这部分资料很多,可以去找找。我发现到这部分知识,对一个flash 爱好者来讲,是需要去了解和掌握的。这样就能够创造很多有趣的flash,而最近搜索资料的时候,发觉国外日本和美国那边的flash 都很注重数学和物理方面的培养结合,这样创造出来的flash 来讲才会有说服力。效果更加好。这部分知识,自己觉得需要慢慢补上,毕竟物理不是很好需要翻阅资料阅读。所以这部分慢慢努力。