我有这个代码:
var run_anim = "";
var anim_array = ["\animations\pic_1.gif",
"\animations\pic_2.gif",
"\animations\pic_3.gif",
"\animations\pic_4.gif"]
function changeBackgroundURL(elementId, backgroundURL){
run_anim = "false";
document.getElementById(elementId).style.background=backgroundURL;
}
function mouseover_anim(elementName){
run_anim = "true";
changeBackgroundURL(elementName,anim_array[0]);
while(run_anim=="true"){
setTimeout(function(){changeBackgroundURL(elementName,anim_array[1]) parameter = null},30);
setTimeout(function(){changeBackgroundURL(elementName,anim_array[2]) parameter = null},40);
setTimeout(function(){changeBackgroundURL(elementName,anim_array[3]) parameter = null},20);
}
}
我正在运行这条线:
<area shape="rect" coords="0,0,95,91"
onMouseOver="mouseover_anim('div_1')"
onMouseOut="changeBackground('div_1', 'pic_static.gif')">
当我运行它时,应用程序会占用大量 CPU,我需要关闭浏览器。看起来while循环(总是如此)阻塞了孔系统(但我没有看到任何图片变化)。在浏览器中调试时,我也看不到任何错误消息。我也尝试过预加载图片(代码未在上面发布),但它仍然无法正常工作。
该代码仅在我禁用 while 循环并设置更长的超时时才有效,如下所示:
function mouseover_anim(elementName){
changeBackgroundURL(elementName,anim_array[0]);
setTimeout(function(){changeBackgroundURL(elementName,anim_array[1]) parameter = null},300);
setTimeout(function(){changeBackgroundURL(elementName,anim_array[2]) parameter = null},400);
setTimeout(function(){changeBackgroundURL(elementName,anim_array[3]) parameter = null},200);
}
那么用Javascript创建循环动画和/或快速动画是不可能的吗?或者你有什么建议吗?