APE(物力引擎)APE,设么是APE呢。
APE(Actionscript Physics Engine)是一个ActionScript3写成的物理引擎,用于模拟现实中物体发生的运动和碰撞。
它是免费、开源的,遵循MIT协议。
看来特别适用用来做游戏开发,已经有许多很有趣的应用使用这个开发的。
现提供了Java Port,和C++ SDL Port官方网址为:/ape/下载地址为:/ape/ape_a045.zip(包含两个demo,api,swc文件,和源码)官网的两个例子:Demo1:/ape/demo1.htmDemo2: /ape/demo2.htmAPI地址: /ape/docs/api/下面中文版,网上搜集的APE中总共才12个类,用起来相当的方便。
这12个类的继承关系如下:目录:AbstractCollectionGroupCompositeAbstractItemAbstractConstraintSpringConstraintAbstractParticleRectangleParticleCircleParticleWheelParticleVectorAPEngineAbstractCollection(子类有:Group和Composite)此类为群组性的基类。
你不应实例化这个类,而应该使用该类的子类。
属性:constraints 属性constraints:Array [只读]一个数组,包含所有被加入到AbstractCollection中的AbstractConstraint类的实例。
particles 属性particles:Array [只读]一个数组,包含所有被加入到AbstractCollection中的AbstractParticle类的实例。
sprite 属性sprite:Sprite [只读]为渲染和增加children而提供的作为容器使用的Sprite。
当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。
构造函数:public function AbstractCollection()方法:addConstraint () 方法public function addConstraint(c:AbstractConstraint):void在收集器中增加一个约束。
参数c:AbstractConstraint —被加入的约束.addParticle () 方法public function addParticle(p:AbstractParticle):void在AbstractCollection中加入一个AbstractParticle参数p:AbstractParticle —被加入的粒子cleanup () 方法public function cleanup():void调用AbstractCollection每个成员的cleanup()方法. 当AbstractCollection 从他的父容器中被移除的话,cleanup()方法会自动的被调用。
getAll () 方法public function getAll():Array返回一个数组,这个数组包含被加入到AbstractCollection.中的每一个粒子和约束。
init () 方法public function init():void通过调用每一个成员的init()方法实例化这个AbstractCollection的每一个成员。
paint () 方法public function paint():void通过调用每一个成员的paint()方法来渲染AbstractCollection的每个成员。
removeConstraint () 方法public function removeConstraint(c:AbstractConstraint):void从收集器中删除参数指定的约束。
参数c:AbstractConstraint —将被移除的约束。
removeParticle ()方法public function removeParticle(p:AbstractParticle):void从AbstractCollection中移除一个AbstractParticle参数p:AbstractParticle —将被移除的粒子——————————————————————————————————————————————————————————————————————————————Group(继承自AbstractCollection)组可以包含粒子,约束和复合体。
组可以被设置为和其他的组进行碰撞检测。
属性:collideInternal:Boolean [读写]决定这个组内的成员彼此是否进行碰撞检测;collisionList:Array [只读]返回一个数组,这个数组包含所有和这个组进行碰撞检测的所有组的实例。
composites:Array [只读]返回一个数组,这个数组包含所有加入到这个组的复合体。
构造函数public function Group(collideInternal:Boolean = false)Group是APE中的主要的用于组织的类。
一旦创建了组,并把粒子,约束,复合体加入组,那么这些东西也就加入了APEngine。
组可以包含粒子,约束和复合体。
复合体只能包含粒子和约束。
参数:collideInternal:Boolean (default = false)方法:addCollidable()方法addCollidable(g:Group):void加入一个组的实例与这个组进行碰撞检测。
addCollidableList()方法public function addCollidableList(list:Array):void加入AbstractCollection实例的数组,让数组中的元素与这个组进行碰撞检测。
addComposite()方法public function addComposite(c:Composite):void在这个组中加入复合体cleanup()方法public override function cleanup():void调用组的cleanup()方法将会调用组中所有成员的cleanup()方法。
当组从APEngine 引擎中移除时,组的cleanup()方法会自动的调用。
getAll()方法public override function getAll():Array返回一个包含组中所有粒子,约束,复合体的数组。
init()public override function init():void通过依次调用组中每个成员的init()方法来初始化组中的每个成员。
paint()方法public override function paint():voidPaints 组中的所有成员. 这个方法由APEngine 类自动的调用。
removeCollidable()方法public function removeCollidable(g:Group):void从这个组的collidable list中移除一个组。
removeComposite()方法public function removeComposite(c:Composite):void从组中移除复合体。
————————————————————————————————————————————————————————————————————Composite(继承自AbstractCollection)复合体可以包含粒子和约束。
复合体可以加入到一个组中,就像粒子和约束一样。
注意:复合体中的成员彼此不能进行碰撞检测。
属性:fixed:Boolean [读写]决定复合体的状态是否固定。
设置这个值为true或false将会设置复合体中所有组成的粒子的固定状态为true或false。
当复合体中的任何一个粒子的状态为不固定时,这个值返回的都为false。
构造函数:public function Composite()方法:rotateByAngle()方法public function rotateByAngle(angleDegrees:Number, center:Vector):void围绕给定的中心,使复合体旋转参数指定的角度。
rotateByRadian()方法public function rotateByRadian(angleRadians:Number, center:Vector):void围绕给定的中心,使复合体旋转参数指定的弧度。
————————————————————————————————————————————————————————————————————AbstractItem(子类有:AbstractConstraint和AbstractParticle)所有约束和粒子的基类属性alwaysRepaint 属性alwaysRepaint:Boolean [read-write]为了更好的运行,为了避免不必要的重绘,固定的粒子和弹性约束不需要调用他们的paint ()方法,当一个弹性约束的两端所连接的粒子是固定的话,那么这个弹性约束被认为是固定的。
这个属性设置为true的时候,如果粒子和弹性约束的fixed属性也为true的时候,粒子和弹性约束的paint()方法会被强制调用。
如果你想要旋转固定的粒子和弹性约束的话,你应该设置他们的repaintFixed属性为true。
如果粒子和弹性约束不是固定的话,alwaysRepaint属性是没有效果的。
sprite 属性sprite:Sprite [只读]为渲染和增加children而提供的作为容器使用的Sprite。
当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。
visible 属性visible:Boolean [只写]决定这个项是否可见。
构造函数AbstractItem ()public function AbstractItem()方法cleanup () 方法public function cleanup():void当包含一个项目(粒子或约束)的组(组或复合体)从APEngine移除的时候,这个方法被自动的调用。
init ()方法public function init():void当包含一个项目(粒子或约束)的组(组或复合体)被加到引擎,一个项目(粒子或约束)的复合体被加到组,一个项目(粒子或约束)被加到组或复合体的时候,这个方法会被自动的调用。