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