我正在尝试在jQuery中创建一个太阳能系统。我有5个在椭圆路径上移动的图像行星。当行星到达起点时,它应该重新开始。我不能再花一些时间,因为有5个行星必须移动,浏览器将被阻止。我必须在一段时间之后再次调用该函数(例如8秒钟制作一个cicle)。一段时间(几分钟)后,行星移动缓慢。还有更好的方法吗?
$(window).load(function() {
solar(10, 1, "#i1", getDim($("#i1")));
solar(200, 1, "#i2", getDim($("#i2")));
solar(400, 1, "#i3", getDim($("#i3")));
solar(400, 0, "#i4", getDim($("#i4")));
solar(200, 0, "#i5", getDim($("#i5")));
});
function solar(start, dir, id, dim) {
var nr = 0;
var i = start;
while (nr != 2) {
if (dir == 1) {
i += step;
if (Math.abs(i - 2*aa) < step)
dir = 1- dir;
} else {
i -= step;
if (Math.abs(i) < step)
dir = 1- dir;
}
if (Math.abs(i - start) < step) {
nr++;
}
p = getElipsePoint(p, dim);
$(id).animate(
{"left": p.x, "top": p.y},
{ duration:1 }
);
}
window.setTimeout(function() { solar(start, dir, id, dim) }, 8000);
}
答案 0 :(得分:1)
您可以使用回调确定动画何时结束。像这样:
$(id).animate(
{"left": p.x, "top": p.y},
{ duration:1 }, function () { console.log("Begin animation again"); }
);