初级物理模型的构建(AS)-力学1
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-11
实现的初级物理模型的构建(力学-1) EmilMatthew(小小梦想) 2004.8.21 阅读本文之前,假定你已有了: 基本的编程能力,初步了解OOP。 高中及以上的程度物理及数学知识。 推荐能力:会基本的AS编程。 序: 由于我打算把这样一个专题长期作下去,所以有些东西必须事先关照一下,以后的文章中就不再讲了。 1为何选用ActionScript? ActionScript是矢量动画制作软件Flash的动画脚本语言,现在已经发展到了OOP(面象对象编程)层面,与动画对象的结合是极其方便而直接的,完全可以满足我现在所想做的一些动态效果演示的要示。(而我用到的,也只是AS1,由于我的编程能力有限,目前AS2我还不会。) 我这里用的OOP方法,学习的是Robert Peneer那本“Flash MX 编程与创意”所介绍的方法,非常的简单易用: 如在AS脚本中写: MovieClip.prototype.v=function(x){ This.v=x; } 便使得MC类扩展了一个速度v的属性,这是非常有用的,也是OOP初级应用中最具有魅力之处(给原有的类添加属性及方法) 在场景的AS里: 只要用 mc.v(5);便创建了其速度属性,注意,一定要先创建,否则在下面使用时,会出现Undefined的错误。 这里其实是用到了一个方法,这个方法就是传送参数,给MC对像的v属性,非常的简单易用。 创建完之后,下面进行数值上的计算时。 用mc.v=…..的形式就可以了。 有人会说了,何必这样呢,我只要根据我的需要,在程序中创建相应的属性不就行了吗?这在问题比较简单时和只作一个独立的效果时当然没问题。而当问题变的复杂时,同时你又需要在这个方面“长期作战”时,构建相应的函数库就显得犹为重要了 。比方说,我构建了自己的物理属性库,可以使一些物理数据表达和处理更为“固化”,更能成为一个体系,使程序更具有移植性,更有利于实现物理现象的动态演示。 比方说,我准备给七个对象分别创建v,m,a(加速度),r(半径)四个物理属性,只消在 AS脚本里写: MovieClip.prototype.CreateBasicPhysicsFeature=function(m,v,a,r){ this.m(m); this.v(v); this.a(a); this.r(r); }//假定先前已经写好的构建属性m,v,a,r 的 场景中构造时只消这样就行了: while(i<8){ eval(“ball”+i).CreatBasicPhysicsFeature(1, 1,1,1); } 是不是很方便呢? 下面是我目前为实现效查所构建的物理函数库:(扩建中)04/8/19 ![]() 物理问题复杂时,这种误差的调整就显得很难了。当然,路是人走出来的,只要你的数学水平,物理水平和编程能力都跟上去的话,这些误差是一定可以降到最小限度,只不过,这现在对我,还是个比较高远的目标。 3单位: 速度单位在这里,很显然是“像素/帧”,所以,把动态效果放在每帧更新一次的onEnterFrame事件处理器(也可以用SetInterval)中,写下:v+=a ; _x+=v;是很合理的。 4不符要求的两类动画: 一种是帧频过低的动画,看起来是一格一格的,出现这种情况时,就要考虑是否是由于算法不良造成了运行过缓,还是在图片上消耗了过多的内存,必须进行改进。 第二类是运动过快的动画,如何一个物体在屏幕上的运动速度高达100像素/帧,而你的帧频又在30FPS以上,那么,此时,物体的运动变成的转瞬即逝,看都看不清了,更别谈什么碰撞检测之类的了。 帧频可能的话,当然是希望高些,因为这样的话,无论是动态摸拟还是碰撞检测,都会更精确,一般摸拟器的帧频都是60FPS,这样的帧频要求在FLASH里太高了,不过倒也好,可以更加激励我们脚踏实地的去优化代码,改过算法。 PS:由于word里的格式问题,会造成极少部分语句造成不符合AS的语法规则,如else if显示成elseif ,敬请谅解。 好,关照完这些注意事项后,下面进入正题: 关键词:
|
|||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: AS 良好的编程习惯下一篇: 按轨迹运动的汽车
关于初级物理模型的构建(AS)-力学1的所有评论