这段代码似乎破坏了我代码的其余部分?
function sam() {
$("#animate").children("#box")
.animate({
left: '+=1100'},8000, 'linear', function() {
$("#animate").children("#box").css("left", "0");
sam();
});
}
setInterval(sam());
很抱歉回复这么短,但我一直被一条愚蠢的高质量消息屏蔽了
发布于 2011-10-03 22:09:06
试着改变
setInterval(sam());
至
setInterval(function(){
sam()
}, 1000);
这将触发sam() setInterval的每个second.Your用法都是错误的
另外,删除sam()
函数中的sam()
调用。
所以最后的代码是:
function sam() {
$("#animate").children("#box")
.animate({
left: '+=1100'},8000, 'linear', function() {
$("#animate").children("#box").css("left", "0");
});
}
setInterval(function(){
sam()
}, 1000);
发布于 2011-10-03 22:11:36
setInterval
需要第二个参数来表示运行代码sam()的频率。但是我不知道你是不是想这样,不管怎么说,它似乎是这样做的。
function sam() {
$("#animate").children("#box")
.animate({
left: '+=1100'},8000, 'linear', function() {
$("#animate").children("#box").css("left", "0");
sam();
});
}
sam();
如果要一遍又一遍地重复动画,或者使用setTimeout而不是setInterval,则应该足够了。
设置间隔将重新启动代码,即使第一次运行没有完成,您的动画也需要8秒,如果您说每2秒运行一次sam(),例如,您将得到一个非常非常糟糕的结果,因为代码需要超过2秒才能运行,并且您还说它应该重新运行自己。我根本不会使用setInterval
。
演示:http://jsfiddle.net/voigtan/tG7Gm/2/
发布于 2011-10-03 22:21:05
您可以使用完成动画回调来开始一个新的动画。你能澄清一下,你是想让动画在第一个动画结束时开始,还是只想让无限的动画叠加在一起?
https://stackoverflow.com/questions/7636133
复制相似问题