2012-03-06 8 views
4

いくつかのPNGが、いくつかのブラウザをクラッシュさせていると思われる繰り返しループで画面の周りを移動しています。例えばアニメーションがループしてブラウザがクラッシュすることはありますか?

function parachute_drop(drop_object, animation_duration) { 

    $(drop_object) 
     .animate({top: "750px"},animation_duration) 
     .animate({top:"-150px", opacity: 100 
     },{ 
     duration: 0, 
     complete: function(){ 
      parachute_drop(drop_object,animation_duration); 
     } 
    }); 
} 

parachute_drop('#object_id',10000); 

毎回アニメーションが完了し、それは何度も無限に機能を起動します。

私はこれが問題になるとは思っていませんでしたが、これはあまり良くないと聞いたことがあります。私のサイトは、今のようにしばらくしてからクラッシュしています。

このような無限ループをより安定した方法で行う方法はありますか? 9kbのPNGファイルを画面の上部から下部に何度も何度も移動させることは、システムリソースに負担をかけることになるというのはちょっと奇妙なようです。何が問題なのですが、私はこれにもっとどのようにアプローチしますか?

+0

ルック。 – switz

+0

@スウィッツ:jQueryは彼のためにそれを使用しています。 – SLaks

+0

ルーピングでアニメーションを表示するのではなく、jawsjs、impact、gamequeryなどのいくつかのjavascriptゲームライブラリを調べる方がよいでしょう。詳細はhttps://gist.github.com/768272 – TheVillageIdiot

答えて

2

あなたのコードは再帰的アルゴリズムであり、ブラウザのjavascriptマシンのコードスタックを埋めるとクラッシュする可能性があります。タイマーに基づいて異なるアプローチを使用して、連続ループを達成することができます。

あなたはこの例から始めることができます:setTimeout`または `` setInterval`にでhttp://www.irengba.com/codewell/

+0

私はそれを感謝します。私はそのチュートリアルに従っていたが、誰かが私自身の機能を作り、それを自分の中で呼び出すよう提案した。このチュートリアルがやっていることのように思えましたが、別の方法を使用する必要がありますか? – willdanceforfun

+0

それは当てはまりません。 @ cosmicbdogのコードは非同期で、再帰的ではありません。 – SLaks

+0

アニメーションはJqueryコードに基づいて非同期ですが、完了したメソッドは連鎖の引数であり、再帰的メソッドのように連鎖を終了しないと不安定になる可能性があります。 –

関連する問題