使用OOP编程思想实现自由落体运动程序网络上有很多关于Flash模拟实.docxVIP

使用OOP编程思想实现自由落体运动程序网络上有很多关于Flash模拟实.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

使用OOP编程思想实现自由落体运动程序

网络上有很多关于Flash模拟实现重力场的教程,但是大多都是使用AS2写的。那么今天我们就使用AS3编程语言,基于面向对象编程思想来实现这个程序。

首先,我们就不免俗的再老生常谈一下什么是面向对象思想。

顾名思义,就是以对象为基础的思想,通俗点说就是“神马”都是“对象”。这里这个“对象”可不是找“对象”的那个“对象”,对象指的是要研究的事物,我们可以把所有要研究的事物当作对象,对象可以是具体的事物,也可以是抽象的原理、规则等。

定义好了对象,那么我们研究对象的时候,应该从哪下手呢?我们在研究对象的时候,主要是从两个方面着手,对象的“状态”和对象的“行为”,如果应用到我们的程序里,就是类的属性和方法。关于AS3的类和对象我们就不再累赘了,有兴趣的同学可以自己找书籍或者加入我们的AS3基础班学习。

接下来开始着手我们要做的那个重力程序吧!

第一步:复习物理学上学习重力知识。翻开我们的物理课本,翻到物体的运动这章,找到运动学的基本公式:

S=S0+vt;每个时间点的路程等于之前的路程加上当前的速度乘以单位时间

v=v0+at;每个时间点的速度等于之前的速度加上当前的加速度乘以单位时间

在程序里,把运动分解成x和y两个方向的运动。

第二步:抽象。找出程序里要用到的对象,把他们的共性找出来。

移动对象(IMovable):场景中可以移动的物体。在AS3中,程序通过改变显示元件的坐标实现物体的移动,所以必须把DisplayObject的x和y属性写进接口。

属性有:

x:横坐标

y:纵坐标

vx:x方向上的速度

vy:y方向上的速度

ax:x方向上的加速度

ay:y方向上的加速度

width:物体宽度

height:物体高度

运动规则(IMovement):例如重力场

常量有:

G:重力加速度

属性有:

target:规则应用的对象

range:移动边界

行为有:

register:规则应用到物体上

unregister:从物体上撤销运动规则

第三步:定义接口。(这就是面向对象和面向过程的区别所在)

接口IMovable,作为一个可以移动物体的接口。代码如下:

//./src/com/flash63/movement/IMovable.as

packagecom.flash63.movement{

publicinterfaceIMovable{

//x方向上的位移

functiongetx():Number;

functionsetx(value:Number):void;

//y方向上的位移

functiongety():Number;

functionsety(value:Number):void;

//x方向上的速度

functiongetvx():Number;

functionsetvx(value:Number):void;

//y方向上的速度

functiongetvy():Number;

functionsetvy(value:Number):void;

//x方向上的加速度

functiongetax():Number;

functionsetax(value:Number):void;

//y方向上的加速度

functiongetay():Number;

functionsetay(value:Number):void;

//物体的宽度

functiongetwidth():Number;

functionsetwidth(value:Number):void;

//物体的高度

functiongetheight():Number;

functionsetheight(value:Number):void;

}

}

接口IMovement,作为一个运动规则的接口。代码如下:

//./src/com/flash

文档评论(0)

ranfand + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档