当前位置:文档之家› APEngine物力引擎简介

APEngine物力引擎简介

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当包含一个项目(粒子或约束)的组(组或复合体)被加到引擎,一个项目(粒子或约束)的复合体被加到组,一个项目(粒子或约束)被加到组或复合体的时候,这个方法会被自动的调用。

相关主题