0

こんにちは、私はJavascript Canvasプロジェクトを開発しています。これは機能しない小さなコードです。100時間の遅延で画像を1つずつアニメーション化したいのですが、すべての画像を一度にアニメーション化します。

for (var i = 0; i < queueIdArr.length; i++){ // queueIdArr.length = 4
    (function(i){
        var animInterval = window.setInterval((function(i){
            if (i == (queueIdArr.length - 1)){
                animate(queueIdArr[i], {opacity: 0}, animationDuration, "delete"); // my own function, it works fine. animate (id, new_properties, duration, callback);
                window.clearInterval(animInterval);
            } else {
                animate(queueIdArr[i], {opacity: 0}, animationDuration, "delete");
            }
        })(i), 100);
    })(i);
}​
4

1 に答える 1

1

あなたはsetIntervalすべてのqueueIdArr要素のために作成しています。の最初の引数はsetInterval、コード内の関数である必要があります。(function (){})すぐに呼び出され、の値は(function (){})ですundefined

以下はあなたのコードを解決するかもしれません。

 var i =0;  
    var animInterval = window.setInterval(function(){
        if (i == (queueIdArr.length - 1)){
            animate(queueIdArr[i], {opacity: 0}, animationDuration, "delete"); 
            window.clearInterval(animInterval);
        } else {
            animate(queueIdArr[i], {opacity: 0}, animationDuration, "delete");
        }
        i++;
    }, 100);
于 2012-09-18T16:53:30.413 に答える