Crafty.map

与查询实体相关的函数。

方法

Back to top

Crafty.map.boundaries()

public Object Crafty.map.boundaries()
[Returns]

具有以下结构的对象,它表示包含所有实体的最小外接矩形

请注意,返回的对象是对内部使用的对象的引用。使用Crafty.clone来获得一个副本。

{
  min: {
    x: val_x,
    y: val_y
  },
  max: {
    x: val_x,
    y: val_y
  }
}
Back to top

Crafty.map.insert()

public Object Crafty.map.insert(Object obj)
obj

要插入的实体。

[Returns]

在哈希表中表示该对象的条目的对象

obj是插入到 '.map' 响应的单元格. 返回对象会包含以下字段.

{
  keys: the object that keep track of cells
  obj: The inserted object
  map: the HashMap object
}
Back to top

Crafty.map.refresh()

public void Crafty.map.refresh(Entry entry)
entry

要更新的实体

更新条目的键,以及它在广阔地图中的位置。

例子

Crafty.map.refresh(e);
Back to top

Crafty.map.remove()

public void Crafty.map.remove(Entry entry)
entry

要从哈希表中删除的实体

从广阔的地图中移除实体

例子

Crafty.map.remove(e);
Back to top

Crafty.map.traverseRay()

public void Crafty.map.traverseRay(Object origin, Object direction, Function callback)
origin

射线将被投射到原点的点。对象必须包含属性_x_y

direction

射线的方向。它必须规范化。对象必须包含属性xy

callback

对于在光线中遇到的每个对象,都会调用一个回调。这个函数用两个参数调用:第一个表示所遇到的对象;第二个参数表示到目前为止所有对象被报告的距离。回调可以返回一个真值,以便提前停止遍历。

在提供的光线的方向上穿过空间映射。

给定了射线的origindirection,并调用了在映射单元中遇到的每个对象的callback

对于可能与光线相交的每一个对象,都调用回调。实际的交集是否应该由回调的实现来决定。

例子

Crafty.e("2D")
      .setName('First entity')
      .attr({x: 0, y: 0, w: 10, h: 10});

Crafty.e("2D")
      .setName('Second entity')
      .attr({x: 20, y: 20, w: 10, h: 10});

var origin = {_x: -25, _y: -25};
var direction = new Crafty.math.Vector2D(1, 1).normalize();

Crafty.map.traverseRay(origin, direction, function(ent, processedDistance) {
  Crafty.log('Encountered entity named', ent.getName()); // logs 'First entity'
  Crafty.log('All entities up to', processedDistance, 'px away have been reported thus far.');
  Crafty.log('Stopping traversal after encountering the first entity.');
  return true;
});