setTimeout和kineticjs

时间:2014-02-07 13:09:33

标签: canvas kineticjs

我想用超时来触发对象。问题是下面的代码只触发第一个对象。有人知道我怎么可以在不同的时间内开火吗?

function _tween_out(_objeto){
    _objeto.play();
}
function _tween_in(_objeto){
    _objeto.reverse();
}
myVar=[]
bk.on('mouseenter', function(evt) { 

for (var j=0;j<iconos_bases.length;j++){
        var mandar=iconos_bases[j].group.tween
        myVar[j]=setTimeout(function(){_tween_out(mandar)},getRandomInt(1,100));
    }
    stage.draw();

});

我改变了代码。

 function _tween_out(_objeto){
    _objeto.play();
}
function _tween_in(_objeto){
    _objeto.reverse();
}
myVar=[]
bk.on('mouseenter', function(evt) { 

for (var j=0;j<iconos_bases.length;j++){
        var mandar=iconos_bases[j].group.tween
        var num=getRandomInt(1,600000);
        console.log(num);
        setTimeout(_tween_out(mandar),num);
    }

    stage.draw();

});

但所有超时都在同一时间。

1 个答案:

答案 0 :(得分:1)

一件事:你在这里计算多少时间延迟?

// 600000 seems like a large number ??

var num=getRandomInt(1,600000);

无论如何......

演示: http://jsfiddle.net/m1erickson/CTRuq/

在setTimeout中,您无法使用_tween_out函数发送参数。

// This Won't Work !

setTimeout(_tween_out(mandar),num);

如果你想发送一个参数,你必须给setTimeout一个匿名函数:

setTimeout( function(){ _tween_out(mandar); }, num );