-2

数组移动只包含我想在画布上绘制的几个移动。基本上是一个 deltaTime 睡眠和一个绘图命令。

这根本行不通:(

for (var i=0; i< parsed.moves.length; i++)
{
    var e = parsed.moves[i];
    setTimeout(function(){drawCmd(context,e)}, e.deltaTime*1000);

    //deltaTime are values btn 0-1, the sleep time i need to set btw commands 

 }  


function drawCmd(canvasctx, e)
{   

switch(e.type)
{
   //case ...
}
 }

它什么也没做,甚至没有调用 drawCmd 函数

4

2 回答 2

1

您的代码只会延迟所有的drawCmdbye.deltaTime*1000并在之后立即执行它们,全部在i = 10

如果您的意思是“绘制并等待,绘制并等待”,请尝试以下操作:

(function loop(i){
    var e = parsed.moves[i];      //e at current "i"

    if(i< parsed.moves.length){   //if not equal to length
        setTimeout(function(){
            drawCmd(context,e);   //draw in e.deltaTime*1000 milliseconds
            loop(++i);            //loop again
        }, e.deltaTime*1000);
    }

}(0));                            //start with i=0
于 2012-05-24T09:49:52.400 回答
0

您可能想检查 deltaTime 的数据类型

    setTimeout(function () { }, undefined * 1000); // <- Executes imidiately
    setTimeout(function () { }, '1' * 1000); // <- Executes after 1 second
    setTimeout(function () { }, 1 * 1000); // <- Executes after 1 second
    setTimeout(function () { }, new Date() * 1000); // <- Executes after a long (i.e. 1337852997592 seconds) time
于 2012-05-24T09:52:13.087 回答