-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

あなたがコーディングするのは、すべてを遅らせるだけで、その後、すべてを一度に実行しますdrawCmde.deltaTime*1000i = 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 に答える