我有 25 张图片想要快速显示,有点像没有效果的幻灯片。我的图像被命名为 0 到 26。
我尝试为延迟设置一个 for 循环和一个 setTimeout,但 setTimeout 仅在 for 循环结束时运行,在我的检查点显示 i = 25。
JS:
function startAnimation(){
for(var i=0; i<25; i++){
setTimeout(function(){
img = new Image();
img.src = 'images/canvas/'+[i]+'.jpg';
img.onload = function(){ctx.drawImage(img,0,0, 850,194)}
alert('CP. In setTimeout. i= '+i);
},1000);
ctx.clearRect(0,0,canvas.width, canvas.height); //clear image after 1 sec, loop to show next.
alert('CP outside. i = '+i);
}
}
我遵循了这个解决方案如何在 JavaScript 循环中添加延迟?:
function startAnimation(){
setTimeout(function(){
img = new Image();
img.src = 'images/canvas/'+[counter]+'.jpg';
img.onload = function(){ctx.drawImage(img,0,0, canvas.width,canvas.height)};
counter++;
if(counter<26){
startAnimation();
}
},150)
}
它似乎像我想要的那样工作。