2012-03-06 55 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

來看一下,'setTimeout'或'setInterval'。 – switz 2012-03-06 04:26:16

+0

@Switz:jQUery正在使用它。 – SLaks 2012-03-06 04:26:50

+0

而不是通過循環顯示動畫,你最好看看一些JavaScript遊戲庫,如jawsjs,impact,gamequery等。更多信息可以在這裏找到:https://gist.github.com/768272 – TheVillageIdiot 2012-03-06 04:27:04

回答

2

你的代碼是一個遞歸算法,當填充瀏覽器的JavaScript機器代碼堆棧時可能會崩潰。您可以使用基於計時器的不同方法來實現連續循環。

你可以從這個例子開始:http://www.irengba.com/codewell/

+0

我看到了 - 謝謝。我按照教程,但有人建議我做我自己的功能,只是在它自己內部調用它。它看起來像是這個教程做的,但必須使用不同的方法? – willdanceforfun 2012-03-06 04:31:04

+0

這是不正確的。 @ cosmicbdog的代碼是異步的,不是遞歸的。 – SLaks 2012-03-06 04:41:58

+0

動畫是基於Jquery代碼異步的,但是完成的方法是一個鏈接參數,如果它們從不像完成遞歸的那樣完成解鏈方法,它可能不穩定。 – 2012-03-06 04:47:11