エフェクトなしのスライドショーのように、すぐに表示したい画像が 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)
}
思い通りに動いているようです。