Ich versuche, eine Bild-Diashow mit HTML5-Leinwand und ein wenig Javascript zu erstellen. Mein Problem ist folgendes: Die Slideshow arbeitet mit dem Fade-Effekt, den ich für die erste Passage durch das Bildset haben möchte, und danach werden die Bilder ohne den Effekt in die Leinwand gezeichnet und so weiter gemacht.Bild-Diashow mit Leinwand 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>
Wahrscheinlich ist das Load-Ereignis nicht mehr ausgelöst, wenn es beginnt wieder mit bereits geladenen Bildern. – CBroe
Ich sehe, dass etwas mit dieser verblassenden Animation rechtzeitig überschreibt. Ich habe mit den Millisekunden von setInterval-Aufrufen gespielt, und ich habe zwei Passagen durch das Bildset mit dem Effekt erhalten. –