World
Matter.World模块包含了许多用于创建和操作世界对象的方法。Matter.World是一个Matter.Composite聚合体,它包含了Matter.Body、Matter.Constraint和其他的Matter.Composite。Matter.World有一些额外属性,如gravity和bounds。使用Matter.Composite模块中的函数来修改世界对象这一点很重要,不要直接修改它的属性。Matter.Composite中也有一些方法拥有别名,方便开发者阅读。
方法
Matter.World.add(world, object) → Composite
Composite.add的别名。
参数:
worldWorldobjectObject
返回值:
Composite添加了物体后的世界聚合体。
Matter.World.addBody(world, body) → World
Composite.addBody的别名
参数:
worldWorldbodyBody
返回值:
World添加了刚体后的世界聚合体。
Matter.World.addComposite(world, composite) → World
Composite.addComposite的别名。
参数:
worldWorldcompositeComposite
返回值:
World添加了聚合体后的世界聚合体。
Matter.World.addConstraint(world, constraint) → World
Composite.addConstraint的别名。
参数:
worldWorldconstraintConstraint
返回值:
World添加了聚合体后的世界聚合体。
Matter.Composite.allBodies(composite) → Body[]
递归地返回传入复合体中的所有刚体,包括其子复合体中的所有刚体。
参数:
compositeComposite
返回值:
Body[] 所有刚体。
Matter.Composite.allComposites(composite) → Composite[]
递归地返回传入复合体中的所有复合体,包括其子复合体中的所有复合体。
参数:
compositeComposite
返回值:
Composite[] 所有复合体。
Matter.Composite.allConstraints(composite) → Constraint[]
递归地返回传入复合体中的所有约束条件,包括其子复合体中的所有约束条件。
参数:
compositeComposite
返回值:
Constraint[] 所有约束条件。
Matter.Composite.bounds(composite) → Bounds
返回所有复合体边界的并集。
参数:
compositeComposite
返回值:
Bounds 复合边界。
Matter.World.clear(world, keepStatic)
Composite.clear的别名
参数:
worldWorldkeepStaticBoolean
Matter.World.create(options) → World
创建一个新的世界聚合体。options参数为一个对象,您传入的属性将会覆盖默认值。后面会介绍您可以设置的属性。
参数:
options Object
返回值:
World 一个新的世界
Matter.Composite.get(composite, id, type) → Object
递归搜索复合体,寻找与传入的type和id匹配的对象,如果找不到,则为空。
参数:
composite Composite
id Number
type String
返回值:
Object 寻找的对象,如果找到的话。
Matter.Composite.move(compositeA, objects, compositeB) → Composite
将给定对象从compositeA移动到compositeB(等于移除后再添加)。
参数:
compositeA CompositeA
objects Object[]
compositeB CompositeB
返回值:
Composite CompositeA
Matter.Composite.rebase(composite) → Composite
递归地为复合体中的所有对象分配新的id。
参数:
composite Composite
返回值:
Composite 返回复合体。
Matter.World.remove(world, object, [deep=false]) → Composite
Composite.remove的别名。
参数:
world World
object Object
[deep=false] Boolean 可选
返回值:
Composite 移除了对象后的世界。
Matter.Composite.rotate(composite, rotation, point, [recursive=true])
围绕传入的point按照传入的角度旋转复合体中的所有子元素,没有角速度。
参数:
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 可选
属性
| 属性名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| composite.bodies | Body[] | [] | 复合体直接子元素的Body数组。若要添加或删除Body,您可以使用Composite.add和Composite.remove方法,不要直接修改属性。如果您希望递归查找所有子代中的元素,请使用Composite.allBodies方法。 |
| world.bounds | Bounds | { min: { x: -Infinity, y: -Infinity }, max: { x: Infinity, y: Infinity } } | 定义世界边界的Bounds对象,用以碰撞检测。 |
| composite.composites | Composite[] | [] | 复合体的直接子元素的Composite数组。若要添加或删除复合体,您可以使用Composite.add和Composite.remove方法,不要直接修改属性。如果您希望递归查找所有子代中的元素,请使用Composite.allComposites方法。 |
| composite.constraints | Constraint[] | [] | 复合体的直接子元素的Constraint数组。若要添加或删除复合体,您可以使用Composite.add和Composite.remove方法,不要直接修改属性。如果您希望递归查找所有子代中的元素,请使用Composite.allConstraints方法。 |
| world.gravity | Object | 应用到世界的重力。 | |
| world.gravity.scale | Object | 0.001 | 重力缩放因子。 |
| world.gravity.x | Object | 0 | 重力的x分量 |
| world.gravity.y | Object | 1 | 重力的y分量 |
| composite.id | Number | 独一无二的数字标识符,由Composite.create通过Common.nextId生成。 | |
| composite.isModified | Boolean | false | 表示在当期步骤中复合体是否已经发生修改的表示。大部分Matter.Composite方法会自动将本项设置为true,以通知引擎要处理的更改。如果需要手动更改,请使用Composite.setModified方法。 |
| composite.label | String | "Composite" | 于帮助用户识别和管理复合体的任意String名称。 |
| composite.parent | Composite | null | 该复合体的父Composite。由Matter.Composite方法自动管理。 |
| composite.plugin | 为存储插件专用属性而保留的对象。 | ||
| composite.type | String | "Composite" | 表示对象类型的字符串。 |
事件
以下事件均由Matter.World.create创建的对象派发,而后由使用Matter.Events.on订阅了事件的对象接收。
Events.on(engine, "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 事件名称 |