HTML5 캔버스와 자바 스크립트를 사용하여 이미지 슬라이드 쇼를 만들려고합니다. 내 문제는 다음과 같습니다. 슬라이드 쇼는 이미지 세트를 처음으로 통과하기를 원하는 페이딩 효과와 함께 작동합니다. 그 후에 이미지는 효과없이 캔버스에 그려지고 그런 식으로 진행됩니다.캔버스 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 호출에서 밀리 초 단위로 재생 해본 결과, 효과가있는 이미지 세트를 두 번 통과했습니다. –