HTML5キャンバスと少しのJavaScriptを使用して画像スライドショーを作成しようとしています。私の問題は次のとおりです。スライドショーは、イメージセットを最初に通過するために必要なフェード効果で動作します。その後、イメージは効果なしでキャンバスに描画され、そのようになります。キャンバスを使用した画像スライドショーHTML5
HTML:
<canvas id="showCanvas" width='600' height='400'>Canvas Not Supported</canvas>
JAVASCRIPT:
<script type="text/javascript">
var imagePaths = ["images/j0149014.jpg","images/j0149024.jpg","images/j0149029.jpg"];
var showCanvas = null;
var showCanvasCtx = null;
var img = document.createElement("img");
var currentImage = 0;
var revealTimer;
window.onload = function(){
showCanvas = document.getElementById('showCanvas');
showCanvasCtx = showCanvas.getContext('2d');
img.setAttribute('width','600');
img.setAttribute('height','400');
setInterval(switchImage,3000);
}
function switchImage() {
img.setAttribute('src',imagePaths[currentImage++]);
img.onload = function(){
if(currentImage >= imagePaths.length)
currentImage = 0;
showCanvasCtx.globalAlpha = 0.0;
revealTimer = setInterval(revealImage,100);
}
}
function revealImage() {
showCanvasCtx.drawImage(img,0,0,600,400);
showCanvasCtx.globalAlpha += 0.1;
if(showCanvasCtx.globalAlpha >= 1.0)
clearInterval(revealTimer);
}
</script>
おそらく、既にロードされたイメージを再利用するときに、ロードイベントが発生しなくなる可能性があります。 – CBroe
このフェードアニメーションのあるものは、時間の経過とともに上書きされています。私はsetInterval呼び出しからミリ秒で遊んできました。そして、私は効果を持つ画像セットを通して2回の通過を得ました。 –