Estoy creando una presentación de diapositivas de animaciones con GIF animados. Estoy transfiriendo de una animación a la siguiente. El problema es que la única forma que he descubierto para garantizar que el GIF comience a animar desde el primer fotograma es recargarlo cada vez que se muestra. Los GIF son 200 KB más o menos, que es demasiado ancho de banda para una presentación continua.Reiniciar un GIF animado desde JavaScript sin volver a cargar la imagen
Aquí está mi código actual. img
y nextimg
son <div>
etiquetas que contienen un solo <img>
cada uno. nextimg_img
es la etiqueta <img>
correspondiente a la siguiente imagen que se mostrará.
var tmp = nextimg_img.attr('src');
nextimg_img.attr('src', '');
setTimeout(function() { nextimg_img.attr('src', tmp); }, 0);
img.fadeOut('slow');
nextimg.fadeIn('slow');
La idea es que se establece el atributo src
de la siguiente imagen a ''
, a continuación, establece de nuevo a la fuente del GIF que se mostrará.
Esto funciona — reinicia la animación desde el principio — pero parece que los GIF se vuelven a descargar cada vez que se muestran.
EDITAR: es una presentación de diapositivas en bucle, y estoy tratando de evitar volver a cargar los GIF de la red cuando se muestran la segunda/tercera/hora posterior.
¿Empezará la animación GIF desde el principio? – nornagon
No veo por qué no lo haría. Como imagino que la animación en realidad no comienza hasta que se muestra en la pantalla. Pero honestamente no lo he intentado antes, así que no puedo decir con 100% de certeza. – spinon
Ah, tienes razón, me falta un detalle. Es una presentación de diapositivas. Entonces, cuando los GIF vuelvan a subir, están a mitad de su animación a menos que los vuelva a cargar. – nornagon