【发布时间】:2013-04-05 17:41:52
【问题描述】:
我正在设计一个背景有移动云的网页。我的代码使用 jQuery,看起来像这样。
browserWidth = 0;
browserHeight = 0;
clouds = 4;
cloudSpeed = 50;
$(function() {
browserWidth = $(window).width();
browserHeight = $(window).height();
for(i = 0; i < clouds; i++) {
createCloud(cloudSpeed);
}
});
function moveCloud(cloud) {
offset = cloud.offset();
posX = offset.left;
posX--;
if(posX < -250) {
posX = browserWidth;
}
cloud.offset({
left: posX
});
}
function createCloud(speed) {
posY = Math.floor(Math.random() * (browserHeight / 2.5));
posX = Math.floor(Math.random() * (browserWidth - 255));
cloud = $("<div></div>").addClass("cloud").appendTo("body").offset({
top: posY,
left: posX
});
setInterval(function() {
moveCloud(cloud);
}, speed);
}
基本上它使用createCloud 函数创建四朵云(带有背景图像的div),它初始化div 并使用setInterval 设置间隔。在间隔函数中,我调用函数moveCloud 将 div 向左移动一个像素。见上面的代码。
我的问题是它只移动了一个 div。我读过同时使用多个间隔应该没问题。
代码有什么问题?
【问题讨论】:
-
也试试
someArr[someArr.length] = setInterval...where someArr=[] in global scope -
你真的应该看看 animate 方法
-
@roasted 我知道 jQuery 中的动画,但它并不适合这种情况。使用动画,您需要指定时间。虽然我可以做一些技巧,但这似乎更容易一些。
标签: javascript jquery loops setinterval