Composite

英文原地址

Matter.Composite模块包含了用于创建和操作复合体的方法。复合体是Matter.BodyMatter.Constraint和其他Matter.Composite的集合,因此复合体是树形结构。在该模块中,请谨记要用函数来修改复合体,不要直接修改它们的属性,这一点很重要。 注意Matter.World对象也是Matter.Composite的一个类型,所以所有的复合体方法也能够操作Matter.World

方法

Matter.Composite.add(composite, object) → Composite

通用添加函数。想传入的复合体当中添加一个或多个刚体、约束条件或复合体。触发composite上的beforeAddafterAdd事件。

参数:
composite Composite
object Object

返回值:
Composite 添加新对象后的原复合体。

Matter.Composite.allBodies(composite) → Body[]

递归地返回传入复合体中的所有物体,包括子复合体中的物体。

参数:
composite Composite

返回值:
Body[] 所有物体。

Matter.Composite.allComposites(composite) → Composite[]

递归地返回传入复合体中的所有复合体,包括子复合体中的复合体。

参数:
composite Composite

返回值:
Composite[] 所有复合体。

Matter.Composite.allConstraints(composite) → Constraint[]

递归地返回传入复合体中的所有约束条件,包括子复合体中的约束条件。

参数:
composite Composite

返回值:
Constraint[] 所有复合体。

Matter.Composite.bounds(composite) → Bounds

返回所有复合体边界的并集。

参数:
composite Composite

返回值:
Bounds 复合体边界。

Matter.Composite.clear(composite, keepStatic, [deep=false])

清除传入复合体内的所有物体、限制条件和复合体,可以通过参数选择是否递归清除子元素内部。

参数:
composite Composite
keepStatic Boolean
[deep=false] Boolean 可选

Matter.Composite.create([options]) → Composite

创建一个新的复合体。options参数是一个对象,方便您传入覆盖默认值的属性。参见下面的属性部分获取更多细节信息。

参数:
[options] Object 可选

返回值: Composite 新的复合体

Matter.Composite.get(composite, id, type) → Object

根据传入的id和类型递归搜索复合体,如果找不到则返回null

参数:
composite Composite
id Number
type String

返回值: Object 找到的对象

Matter.Composite.move(compositeA, objects, compositeB) → Composite

将传入的对象从compositeA移动到compositeB(等于移除后添加)。

参数:
compositeA CompositeA
objects Object[]
compositeB CompositeB

返回值: Object 找到的对象

Matter.Composite.rebase(composite) → Composite

递归地为复合体中的所有对象分配新id。

参数:
composite Composite

返回值: Composite 返回复合体。

Matter.Composite.remove(composite, object, [deep=false]) → Composite

通用的删除功能。用于删除传入复合体中的一个或多个刚体、约束条件或复合体。可以配置是否对子元素进行递归删除。触发该复合体上的beforeRemoveafterRemove事件。

参数:
composite Composite
object Object [deep=false] Boolean 可选

返回值: Composite 返回带有被删除对象的原始复合体。

Matter.Composite.rotate(composite, rotation, point, [recursive=true])

围绕给定的点根据传入的角度旋转复合体中的所有子元素,不赋予任何角速度。

参数:
composite Composite
rotation Number point Vector [recursive=true] Bool 可选

Matter.Composite.scale(composite, scaleX, scaleY, point, [recursive=true])

基于一个世界坐标点缩放复合体中的所有子元素,包括更新物理属性(质量、面积、轴、惯性)。

参数:
composite Composite
scaleX Number
scaleY Number
point Vector
[recursive=true] Bool 可选

Matter.Composite.setModified(composite, isModified, [updateParents=false], [updateChildren=false])

设置复合体的isModified标志。如果updateParents值为true,则所有的父元素都会设置(默认值: false)。如果updateChildren值为true,则所有的子元素都会设置(默认值: false)。

参数:
composite Composite
isModified Boolean
[updateParents=false] Boolean 可选
[updateChildren=false] Boolean 可选

Matter.Composite.translate(composite, translation, [recursive=true])

基于传入的矢量来移动复合体中的所有子元素,不会赋予任何速度。

参数:
composite Composite
translation Vector
[recursive=true] Bool 可选

属性

以下是复合体在由Matter.Composite.create创建对象时通过options参数传入的对象可以指定的属性。

属性名 类型 默认值 描述
composite.bodies Body[] [] 物体数组,它是该复合体的直接子元素。若要添加或删除物体,您应该使用Composite.addComposite.remove方法,而不是直接修改这个属性。如果你想递归地找到所有的后代,你应该使用Composite.allBodies方法。
composite.composites Composite[] [] 复合体数组,它是该复合体的直接子元素的复合体数组。若要添加或删除复合体,您应该使用Composite.addComposite.remove方法,而不是直接修改这个属性。如果你想递归地找到所有的后代,你应该使用Composite.allComposites方法。
composite.constraints Constraint[] [] 限制条件数组,该复合体直接子元素的限制条件数组。若要添加或删除限制条件,您应该使用Composite.addComposite.remove方法,而不是直接修改这个属性。如果你想递归地找到所有的后代,你应该使用Composite.allConstraints方法。
composite.id number 唯一整数标识符,由Composite.create通过Common.nextId创建。
composite.isModified Boolean false 表示该复合体在当前更新步骤中是否发生修改。大多数Matter.Composite方法会自动将该值设置为true,从而通知引擎有哪些更改要处理。如果您需要手动修改它,那么请使用Composite.setModified方法。
composite.label String "Composite" 用于帮助用户识别和管理复合体的任意字符串名称。
composite.parent Composite null 该复合体的父级复合体。由Matter.Composite方法自动管理。
composite.plugin 为存储插件特定属性而保留的对象。
composite.type String "Composite" 表示对象类型的字符串。

事件

以下事件均由Matter.Composite.create创建的对象派发,而后由使用Matter.Events.on订阅了事件的对象接收。

Events.on(composite, "afterAdd", callback)

Composite.add调用,对象添加完毕后触发。

payload 类型 描述
event Object object
已添加的对象(可以是单个物体、约束条件、复合体或是前面这些的混合数组)。

source
事件的源对象

name
事件名称

Events.on(composite, "afterRemove", callback)

Composite.remove调用,对象移除完毕后触发。

payload 类型 描述
event Object object
已移除的对象(可以是单个物体、约束条件、复合体或是前面这些的混合数组)。

source
事件的源对象

name
事件名称

Events.on(composite, "beforeAdd", callback)

Composite.add调用,对象添加之前触发。

payload 类型 描述
event Object object
将要添加的对象(可以是单个物体、约束条件、复合体或是前面这些的混合数组)。

source
事件的源对象

name
事件名称

Events.on(composite, "beforeRemove", callback)

Composite.remove调用,对象移除前触发。

payload 类型 描述
event Object object
将要移除的对象(可以是单个物体、约束条件、复合体或是前面这些的混合数组)。

source
事件的源对象

name
事件名称