【发布时间】:2016-08-09 00:08:12
【问题描述】:
我正在尝试使用 HTML5 画布和一些 javascript 创建图像幻灯片。我的问题如下:幻灯片具有我想要的第一次通过图像集的淡入淡出效果,之后,图像被绘制到画布中而没有效果,并继续这样。
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>
【问题讨论】:
-
当 load 事件开始重新使用已经加载的图像时,可能不会再触发了。
-
我看到带有这种渐变动画的东西会及时覆盖。我已经玩过 setInterval 调用中的毫秒数,并且我通过效果的图像集获得了两次传递。
标签: javascript html canvas