Fading ein geladenes Bild in die Leinwand mit der Methode drawImage
In dieser Frage über überblenden von Bildern gab bereits eine Antwort auf das crossfading Lösung in Leinwand. Ich bin versucht, das gleiche zu tun, nur mit dem Unterschied, dass ich versucht bin, zu verblassen-Bilder werden geladen runtime.
Die Bilder geladen sind propperly aber kein verblassen sichtbar ist. Ist dies nicht funktioniert, da der geladenen Bilder? Danke.
HTML
<div id="wrapper">
<canvas id="bg1"></canvas>
<canvas id="bg2"></canvas>
</div>
JS
var toggle = true;
var canvas = document.getElementById('bg1');
canvas.width = $(document).width();
canvas.height = $(document).height();
var ctx = canvas.getContext('2d');
var canvas2 = document.getElementById('bg2');
canvas2.width = $(document).width();
canvas2.height = $(document).height();
var ctx2 = canvas2.getContext('2d');
var image = new Image();
image.src = 'download1.jpg';
var image2 = new Image();
image2.src = 'download2.jpg';
image.onload = function() {
ctx.drawImage(image, 0, 0, 200, 100);
ctx2.drawImage(image2, 0, 0, 200, 100);
};
$('#wrapper').click(function () {
if (toggle)
{
$('#bg2').fadeIn();
$('#bg1').fadeOut();
}
else
{
$('#bg1').fadeIn();
$('#bg2').fadeOut();
}
toggle = !toggle;
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Yep, müssen Sie geben Sie Ihren Bildern Zeit zum laden.
Aber auch, jQuery nicht fadeIn/fadeout auf ein canvas-element, so müssen Sie dies manuell tun.
Demo: http://jsfiddle.net/m1erickson/zw9S4/
Code:
Versuchen, fade in/out die Bilder direkt auf der Leinwand statt fading in und aus dem canvas-Elemente (oder es ist nicht wirklich in jedem Punkt mit der Leinwand, wie Sie könnte verwenden Sie die Bild-Elemente statt).
Erste, natürlich, warten Sie, bis die Bilder geladen werden:
Jetzt ändern wir noch den click-handler ein wenig herum und Leinwand nur noch das fade-in des nächsten Bildes:
Online-demo
Hoffe, das hilft.