Delay 组件

一个在给定时间之后触发函数的组件。

这个使用 Crafty 内部时钟同步,一般优先采用setTimeout

方法

Back to top

.cancelDelay()

public this.cancelDelay(Function callback)
callback

调用 .delay 时绑定的函数

cancelDelay 方法将会取消之前的delay设定。

例子

var doSomething = function(){
  Crafty.log("doing something");
};

// execute doSomething each 100 miliseconds indefinetely
var ent = Crafty.e("Delay").delay(doSomething, 100, -1);

// and some time later, cancel further execution of doSomething
ent.cancelDelay(doSomething);
Back to top

.delay()

public this.delay(Function callback, Number delay[, Number repeat[, Function callbackOff]])
callback

将在给定的毫秒后执行函数,如果函数是通过引用传递的,后边还可以取消。

delay

毫秒数

repeat

(可选) 执行函数的次数。如果值为零,函数执行一次;如果值为n>0,执行n+1次;如果值为 -1,执行无限次。默认执行一次。

callbackOff

(可选) 函数将在执行完成后触发。(所有次数都执行完成)。如果执行次数为 -1, callbackOff 永远不会被触发。

delay 方法将在指定的毫秒数后执行一个方法。

它不是 setTimeout 的包装。

如果 Crafty 暂停了, 计时也会暂停;当 Crafty 继续时,计时也继续。

如果实体被销毁,计时也会被销毁,而且不会产生任何效果。

例子

delay 实例

Crafty.log("start");
Crafty.e("Delay").delay(function() {
  Crafty.log("100ms later");
}, 100, 0);

所有执行次数完成后触发毁掉函数

Crafty.log("start");
Crafty.e("Delay").delay(function() {
  Crafty.log("100ms later");
}, 100, 3, function() {
  Crafty.log("delay finished");
});
Back to top

.pauseDelays()

public this.pauseDelays()

pauseDelays 方法将会停止计时,直到实体被唤醒。

例子

var doSomething = function(){
  Crafty.log("doing something");
};

// execute doSomething each 100 miliseconds indefinetely
var ent = Crafty.e("Delay").delay(doSomething, 100, -1);

// and some time later, the gameplay is paused
ent.pauseDelays();
Back to top

.resumeDelays()

public this.resumeDelays()

resumeDelays 将会唤醒之前被暂停的实体。

例子

var doSomething = function(){
  Crafty.log("doing something");
};

// execute doSomething each 100 miliseconds indefinetely
var ent = Crafty.e("Delay").delay(doSomething, 100, -1);

// and some time later, the gameplay is paused (or only
// a part of it is frozen)
ent.pauseDelays();

// the player resumes gameplay
ent.resumeDelays();