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 改变时触发
属性
方法
- ._cascade()
- .area()
- .attach()
- .contains()
- .detach()
- .intersect()
- .isAt()
- .mbr()
- .move()
- .offsetBoundary()
- .origin()
- .pos()
- .shift()
- .within()
.h
实体的高度。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用 ._h
属性。
不建议修改这个值,因为会导致canvas的质量有很大的改变,而DOM只会对图像进行修剪。
.rotation
实体在顺时针方向上的旋转状态。
this.rotation = 0
将设置为原来的方向。 this.rotation = 10
在原来方向的基础上顺时针旋转10度。
this.rotation = -10
在原来的方向的基础上逆时针旋转10度,等。
修改后,将自动重新绘制。实际上是一个getter/setter,所以使用这个值进行计算而不改变它时,使用它 ._rotation
属性。
this.rotation = 0
和 this.rotation = 360
或 720
或
-360
或 36000
等是一样的。所以你可以不断增加或减少连续旋转的角度。(在你达到数百万度之前,数字错误不会发生。)
缺省情况是在其(初始)左上角旋转实体,使用.origin()
可以改变这一行为。
.w
实体的宽度。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._w
属性。
不建议修改这个值,因为会导致canvas的质量有很大的改变,而DOM只会对图像进行修剪。
.z
舞台上的z
index。修改后,将自动重新绘制。实际上是一个getter/setter,所以在使用这个值进行计算而不修改它时,使用._z
属性。
更高的z
值将更接近舞台的前部。更小的z
值会更接近背面。一个全局z
index是根据其z
值和GID(首先创建的实体)生成的。因此,实体将根据创建时的相同z
值,自然地维护排序。
z
需要一个整数, 像 z=11.2
是不被允许的。
参见
._cascade()
public void ._cascade(e)
- e
描述运动的物体
根据特定的动作移动或旋转实体的孩子。这个方法是一个绑定到“Move”的函数的一部分:它在内部用于确保当父进程移动时,子进程也会以相同的方式移动。
.attach()
public this .attach(Entity obj[, .., Entity objN])
- obj
要连接的子实体(们)
将一个或多个实体设置为子节点,将当前实体(this
)作为父节点。当父移动或旋转时,它的子移动或旋转相同的量。(但反之亦然:如果你移动了一个孩子,它就不会移动父母。)当父母被摧毁时,他们的孩子就会被摧毁。
对于任何实体,this._children
是子实体对象的数组(如果有的话),this._parent
是它的父实体对象(如果有的话)。
可以附加许多对象,并且可以通过附加来实现对象的层次结构。
.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
值作为属性的对象。
确定这个矩形是否在当前的实体中。如果该实体被旋转,它的最小外接矩形将被用于测试。
.detach()
public this .detach([Entity obj])
- obj
分离的实体。省略参数将移除所有附属实体
阻止实体跟随当前实体。没有任何参数的传递将阻止每个实体的连接。
.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
值作为属性的对象。
确定这个实体是否与一个矩形相交。如果该实体被旋转,它的最小外接矩形将被用于测试。
.isAt()
public Boolean .isAt(Number x, Number y)
- x
点的X坐标
- y
点的Y坐标
确定一个点是否包含在实体中。与其他方法不同,对象不能被传递。参数需要x和y值。
给定的点存在的下列情况之一时进行测试:一个与“Mouse”相关的映射区域,与“Collision”相关的hitarea,或者对象的最小外接矩形。
.mbr()
public Object .mbr([Object mbr])
- mbr
用作输出的对象
- [Returns]
一个带有
_x
,_y
,_w
, 和_h
属性的对象;如果一个对象被传入,它将被重用而不是创建一个新对象。
返回一个包含该实体最小边界矩形的副本的对象。MBR包含一个旋转的实体的边界。如果实体没有旋转,它将返回它的边界(.pos()
)。
注意:键有一个下划线前缀。这是由于x、y、w、h属性是setter和getter,用来包装下划线(x、y、w、h)底层属性。
参见
.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) 移动实体指定像素量的快速方法。
.offsetBoundary()
将实体的最小外接矩形扩展到指定的数量。
事件
- BoundaryOffset
- 当最小外接矩形偏移量改变时触发
public this .offsetBoundary(Number dx1, Number dy1, Number dx2, Number dy2)
- dx1
将最小外接矩形扩展到左边的量
- dy1
将最小外接矩形扩展到上边的量
- dx2
将最小外接矩形扩展到右边的量
- dy2
将最小外接矩形扩展到下边的量
public this .offsetBoundary(Number offset)
- offset
按这个量将最小外接矩形扩展到各个方向
您很可能会使用这个函数来确保定制的画布渲染超出了实体的正常范围的范围没有被裁剪。
.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});
.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)底层属性。
.shift()
public this .shift(Number x, Number y, Number w, Number h)
- x
移动X数量
- y
Y移动量
- w
扩大的宽度
- h
高度的增加数量
按数量转移或移动实体。相反的方向用负值。
.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
值作为属性的对象
确定当前的实体是否位于另一个矩形中。