2D 组件

该组件用于任何需要绘制在舞台上的实体。

事件

Move [Old position = { _x:Number, _y:Number, _w:Number, _h:Number }]
当实体移动时触发
Invalidate
当实体需要重绘时触发
Rotate [Data = { cos:Number, sin:Number, deg:Number, rad:Number, o: {x:Number, y:Number}}]
当实体旋转时触发
Reorder
当实体的 z index 改变时触发

属性

方法

Back to top

._globalZ

当两个实体重叠的时候,一个更大的_globalZ会在另一个上。

Back to top

.h

实体的高度。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用 ._h 属性。

不建议修改这个值,因为会导致canvas的质量有很大的改变,而DOM只会对图像进行修剪。

Back to top

.rotation

实体在顺时针方向上的旋转状态。 this.rotation = 0 将设置为原来的方向。 this.rotation = 10 在原来方向的基础上顺时针旋转10度。 this.rotation = -10 在原来的方向的基础上逆时针旋转10度,等。

修改后,将自动重新绘制。实际上是一个getter/setter,所以使用这个值进行计算而不改变它时,使用它 ._rotation 属性。

this.rotation = 0this.rotation = 360720-36036000 等是一样的。所以你可以不断增加或减少连续旋转的角度。(在你达到数百万度之前,数字错误不会发生。)

缺省情况是在其(初始)左上角旋转实体,使用.origin()可以改变这一行为。

Back to top

.w

实体的宽度。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._w属性。

不建议修改这个值,因为会导致canvas的质量有很大的改变,而DOM只会对图像进行修剪。

Back to top

.x

在舞台上的x位置。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._x属性。

Back to top

.y

在舞台上的y位置。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._y属性。

Back to top

.z

舞台上的z index。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._z属性。

更高的z值将更接近舞台的前部。更小的z值会更接近背面。一个全局z index是根据其z值和GID(首先创建的实体)生成的。因此,实体将根据创建时的相同z值,自然地维护排序。

z需要一个整数, 像 z=11.2是不被允许的。

参见

Back to top

._cascade()

public void ._cascade(e)
e

描述运动的物体

根据特定的动作移动或旋转实体的孩子。这个方法是一个绑定到“Move”的函数的一部分:它在内部用于确保当父进程移动时,子进程也会以相同的方式移动。

Back to top

.area()

public Number .area(void)

计算实体的面积

Back to top

.attach()

public this .attach(Entity obj[, .., Entity objN])
obj

要连接的子实体(们)

将一个或多个实体设置为子节点,将当前实体(this)作为父节点。当父移动或旋转时,它的子移动或旋转相同的量。(但反之亦然:如果你移动了一个孩子,它就不会移动父母。)当父母被摧毁时,他们的孩子就会被摧毁。

对于任何实体,this._children是子实体对象的数组(如果有的话),this._parent是它的父实体对象(如果有的话)。

可以附加许多对象,并且可以通过附加来实现对象的层次结构。

Back to top

.contains()

public Boolean .contains(Number x, Number y, Number w, Number h)
x

矩形的X坐标

y

矩形的Y坐标

w

矩形的宽度

h

矩形的高度

public Boolean .contains(Object rect)
rect

一个必须有_x, _y, _w, _h值作为属性的对象。

确定这个矩形是否在当前的实体中。如果该实体被旋转,它的最小外接矩形将被用于测试。

Back to top

.detach()

public this .detach([Entity obj])
obj

分离的实体。省略参数将移除所有附属实体

阻止实体跟随当前实体。没有任何参数的传递将阻止每个实体的连接。

Back to top

.intersect()

public Boolean .intersect(Number x, Number y, Number w, Number h)
x

矩形的X坐标

y

矩形的Y坐标

w

矩形的宽度

h

矩形的高度

public Boolean .intersect(Object rect)
rect

一个必须有_x, _y, _w, _h值作为属性的对象。

确定这个实体是否与一个矩形相交。如果该实体被旋转,它的最小外接矩形将被用于测试。

Back to top

.isAt()

public Boolean .isAt(Number x, Number y)
x

点的X坐标

y

点的Y坐标

确定一个点是否包含在实体中。与其他方法不同,对象不能被传递。参数需要x和y值。

给定的点存在的下列情况之一时进行测试:一个与“Mouse”相关的映射区域,与“Collision”相关的hitarea,或者对象的最小外接矩形。

Back to top

.mbr()

public Object .mbr([Object mbr])
mbr

用作输出的对象

[Returns]

一个带有_x, _y, _w, 和 _h属性的对象;如果一个对象被传入,它将被重用而不是创建一个新对象。

返回一个包含该实体最小边界矩形的副本的对象。MBR包含一个旋转的实体的边界。如果实体没有旋转,它将返回它的边界(.pos())。

注意:键有一个下划线前缀。这是由于x、y、w、h属性是setter和getter,用来包装下划线(x、y、w、h)底层属性。

参见

Back to top

.move()

public this .move(String dir, Number by)
dir

移动方向 (n,s,e,w,ne,nw,se,sw)

by

在指定的方向移动的量

在指定的方向上(n, s, e, w, ne, nw, se, sw) 移动实体指定像素量的快速方法。

Back to top

.offsetBoundary()

将实体的最小外接矩形扩展到指定的数量。

事件

BoundaryOffset
当最小外接矩形偏移量改变时触发
public this .offsetBoundary(Number dx1, Number dy1, Number dx2, Number dy2)
dx1

将最小外接矩形扩展到左边的量

dy1

将最小外接矩形扩展到上边的量

dx2

将最小外接矩形扩展到右边的量

dy2

将最小外接矩形扩展到下边的量

public this .offsetBoundary(Number offset)
offset

按这个量将最小外接矩形扩展到各个方向

您很可能会使用这个函数来确保定制的画布渲染超出了实体的正常范围的范围没有被裁剪。

Back to top

.origin()

public this .origin(Number x, Number y)
x

原点的像素值在X轴上偏移

y

Y轴上原点的像素值偏移

public this .origin(String offset)
offset

对齐标识符,它是center, top, bottom, middle, left 和 right的组合。

设置实体旋转时使用的原点。

例子

this.origin("top left")
this.origin("center")
this.origin("bottom right")
this.origin("middle right")

在改变旋转之前应该先设置原点,因为它不具有追溯效力。另外,通过一个对齐标识符设置原点,只在实体的维度被设置之后才起作用。下面的例子如下:

例子

Crafty.e("2D")
      .attr({w: 100, h: 100})
      .origin('center')
      .attr({x: 25, y: 25, rotation: 180});

参见

Back to top

.pos()

public Object .pos([Object pos])
pos

用作输出的对象

[Returns]

一个带有_x, _y, _w, 和 _h属性的对象;如果一个对象被传入,它将被重用而不是创建一个新对象。

返回一个包含该实体边界的副本(_x, _y, _w, 和 _h 值)的对象。

注意:键有一个下划线前缀。这是由于x、y、w、h属性是setter和getter,用来包装下划线(x、y、w、h)底层属性。

Back to top

.shift()

public this .shift(Number x, Number y, Number w, Number h)
x

移动X数量

y

Y移动量

w

扩大的宽度

h

高度的增加数量

按数量转移或移动实体。相反的方向用负值。

Back to top

.within()

public Boolean .within(Number x, Number y, Number w, Number h)
x

矩形的X坐标

y

矩形的Y坐标

w

矩形的宽度

h

矩形的高度

public Boolean .within(Object rect)
rect

一个必须有_x, _y, _w, _h值作为属性的对象

确定当前的实体是否位于另一个矩形中。