Crafty Core

事件

NewEntityName [entity name = {String}]
实体设置新名字后
NewComponent [Component = {String}]
实体增加新组件时
RemoveComponent [Component = {String}]
实体移除组件时
Remove
调用 .destroy() 移除组件时

每个单独实体增加的一组方法

方法

回到顶部

.addComponent()

public this .addComponent(String componentList)
componentList

以逗号 , 隔开的组件字符串

public this .addComponent(String Component1[, .., String ComponentN])
Component#

新增组件的 ID。

为选中实体增加一个组件。

组件用来拓展实体功能。它会复制属性、分配方法来增强实体功能。

你可以通过传递包含所有组件名的字符串(以逗号隔开),或者传递各个组件名作为参数来增加多个组件。

如果组件有 init 方法,方法会被调用

如果实体已经有了该组件,该组件会被忽略(无事发生)。

示例

this.addComponent("2D, Canvas");
this.addComponent("2D", "Canvas");
回到顶部

.attr()

事件

Change [Data = {key: value}]
属性改变时
public this .attr(String property, Any value[, Boolean silent[, Boolean recursive]])
property

实体需要修改的属性

value

给属性赋的值

silent

如果你想要抑制事件

recursive

如果你想要递归地合并

使用该方法给实体设置任意属性。

public this .attr(Object map[, Boolean silent[, Boolean recursive]])
map

该对象的键:要修改的属性,值:属性值

silent

如果你想要抑制事件

recursive

如果你想要递归地合并

使用该方法给实体设置多个属性。

设置选项:

  • silent:如果你想阻止它启动事件。
  • recursive:如果你传入的对象会覆盖兄弟键,它会递归地合并,而不是简单合并。 默认是 false,除非你使用点号 name.first
public Any .attr(String property)
property

实体需要修改的属性

[Returns]

值 - 属性的值

使用该方法获得实体任意属性。你也可以使用 this.property 取得属性值。

示例

this.attr({key: "value", prop: 5});
this.attr("key"); // 返回 "value"
this.attr("prop"); // 返回 5
this.key; // "value"
this.prop; // 5

this.attr("key", "newvalue");
this.attr("key"); // 返回 "newvalue"
this.key; // "newvalue"

this.attr("parent.child", "newvalue");
this.parent; // {child: "newvalue"};
this.attr('parent.child'); // "newvalue"
回到顶部

.bind()

public this .bind(String eventName, Function callback)
eventName

要绑定的事件名

callback

事件触发后要执行的方法

附加当前实体来监听事件。

传递的事件触发后会调用回调函数。根据事件的不同,一些数据可以通过参数传递给回调函数。

第一个参数是事件名(可能是任意值),同时第二个参数是一个回调函数。如果事件有数据,回调函数应该有一个参数。

事件是任意的,并提供组件之间的通信。即使它不存在,也可以触发或绑定事件。

与 DOM 事件不同,Crafty 事件是同步执行的。

示例

this.attr("triggers", 0); //设置一个触发器计数
this.bind("myevent", function() {
    this.triggers++; //每当触发 myevent 时,递增
});
this.bind("EnterFrame", function() {
    this.trigger("myevent"); // 每帧触发 myevent
});

另请参阅

回到顶部

.clone()

public Entity .clone(void)
[Returns]

当前实体的克隆

该方法将创建具有与当前实体相同的属性、组件和方法的另一个实体。

回到顶部

.defineField()

public this .defineField(String property, Function getCallback, Function setCallback)
property

要分配 getter 和 setter 的属性名

getCallback

属性被访问执行的方法

setCallback

属性被改变执行的方法

分配 getter 和 setter 给属性。getter 将监视等待访问的属性,然后在尝试检索时调用给定的取值回调函数。setter 将监视等待改变的属性,然后在尝试修改时调用给定的赋值回调函数。

示例

var ent = Crafty.e("2D");
ent.defineField("customData", function() {
   return this._customData;
}, function(newValue) {
   this._customData = newValue;
});

ent.customData = "2" // 设置 customData 为 2
Crafty.log(ent.customData) // 打印 2
回到顶部

.destroy()

public this .destroy(void)

移除所有事件监听器,删除所有属性,并从关卡移除

回到顶部

.each()

public this .each(Function method)
method

每次迭代调用的方法

迭代发现的实体,为每个实体调用函数。

为每个实体调用这个方法,并且把迭代的索引作为参数传递。方法的上下文(this 的值)是迭代中的当前实体。

示例

销毁次序为偶数的 2D 实体

Crafty("2D").each(function(i) {
    if(i % 2 === 0) {
        this.destroy();
    }
});
回到顶部

.get()

public Array .get()
[Returns]

与活动选择器相对应的一组实体

public Entity .get(Number index)
[Returns]

属于当前选择的实体

index

将要返回的实体的索引。如果为负,从数组末尾计数。

示例

获取包含所有“2D”实体的数组

var arr = Crafty("2D").get()

获取第一个匹配选择器的实体

// 等同于 Crafty("2D").get()[0],但是不能创建新数组
var e = Crafty("2D").get(0)

获取匹配选择器的最后一个“2D”实体

var e = Crafty("2D").get(-1)
回到顶部

.getId()

public Number .getId(void)
[Returns]

实体 ID

为了更好的性能,简单地使用 this[0] 属性。

示例

返回属性 0 可以找出实体 ID

   var ent = Crafty.e("2D");
   ent[0]; //ID
   ent.getId(); //也是 ID
回到顶部

.getName()

public this .getName(String name)
[Returns]

用于调试目的的对人友好的名称。

获取用于调试目的的易读名称。

示例

var ent = Crafty.e().setName("Player");
var name = ent.getName();

另请参阅

回到顶部

.has()

public Boolean .has(String component)
component

要检查的组件的名称

[Returns]

truefalse 取决于实体是否有给定组件。

为了更好的性能,简单地使用 .__c 对象,如果实体有给定组件,该对象为 true ,否则,该对象不存在(或者是 false)。

回到顶部

.one()

public Number one(String eventName, Function callback)
eventName

要绑定的事件名称

callback

事件出发时执行的函数

[Returns]

用来解绑的当前回调函数的 ID

作用类似 Crafty.bind,但是事件触发后就会解绑。

另请参阅

回到顶部

.removeComponent()

public this .removeComponent(String Component[, soft])
component

要移除的组件

soft

是否软移除(默认 true

从实体移除一个组件。软移除(默认)只能避免 .has() 返回 true。硬移除会移除所有关联属性和方法。

示例

var e = Crafty.e("2D,DOM,Test");
e.removeComponent("Test");        //软移除 Test 组件
e.removeComponent("Test", false); //硬移除 Test 组件
回到顶部

.requires()

public this .requires(String componentList)
componentList

必须添加的组件列表

确保实体有列出的组件。如果没有,新增组件。

(当天 Crafty 版本中,该方法的行为与 addComponent 完全相同。根据惯例,开发者使用 requires 进行组件依赖 —— 例如:具体地指出,只有当另一个组件存在时,一个组件才能正常工作 —— 在其他所有情况下使用 requires。)

另请参阅

回到顶部

.setName()

public this .setName(String name)
name

出于调试目的的对人友好的容易理解的名字。

设置出于调试目的的对人友好的容易理解的名字。

示例

var ent = Crafty.e().setName("Player");

另请参阅

回到顶部

.setter()

public this .setter(String property, Function callback)
property

被监视是否被修改的属性

callback

属性被修改后的回调函数

将监视等待修改的属性,然后在尝试修改时调用给定的回调函数。

不建议使用这个功能;使用 .defineField()

另请参阅

回到顶部

.timeout()

public this .timeout(Function callback, Number delay)
callback

在给定毫秒数后执行的函数

delay

延迟执行函数的毫秒数

延迟方法将在给定的毫秒数后执行一个函数。

本质上是 setTimeout 的包装器。

示例

100 毫秒后销毁自身

this.timeout(function() {
this.destroy();
}, 100);
回到顶部

.toArray()

public this .toArray(void)

该方法将简单地将发现的实体返回为一个 id 数组。要获得真实实体列表,使用 get()

另请参阅

回到顶部

.toggleComponent()

public this .toggleComponent(String ComponentList)
ComponentList

以逗号 , 隔开的将要添加或删除的组件字符串

public this .toggleComponent(String Component1[, .., String componentN])
Component#

将要添加或删除的组件 ID。

Add or Remove Components from an entity.

示例

var e = Crafty.e("2D,DOM,Test");
e.toggleComponent("Test,Test2"); //Remove Test, add Test2
e.toggleComponent("Test,Test2"); //Add Test, remove Test2
var e = Crafty.e("2D,DOM,Test");
e.toggleComponent("Test","Test2"); //Remove Test, add Test2
e.toggleComponent("Test","Test2"); //Add Test, remove Test2
e.toggleComponent("Test");         //Remove Test
回到顶部

.trigger()

public this .trigger(String eventName[, Object data])
eventName

要触发的事件

data

将被作为参数传入每个回调函数的任意数据

触发携带任意数据的事件。将会调用所有带有当前实体对象的上下文(this 的值)的回调函数。

注意:这只会在当前实体内执行回调函数,没有其他实体。

第一个参数是要出发的事件的名字,可选参数是任意事件数据。这可以是任何东西。

与 DOM 事件不同,Crafty 事件是同步执行的。

回到顶部

.unbind()

public this .unbind(String eventName[, Function callback])
eventName

要解绑的事件的名称

callback

要解绑的回调函数

从当前实体移除绑定的事件。

传递一个事件名称,将移除所有与该事件绑定的事件。传递回调函数的引用只会解绑该回调函数。

另请参阅

回到顶部

.uniqueBind()

public Number .uniqueBind(String eventName, Function callback)
eventName

要绑定到的事件的名称

callback

事件触发时执行的函数

[Returns]

用来解绑的当前回调函数 ID

作用类似 Crafty.bind,但是防止回调函数多次绑定。

另请参阅