Estou criando um slideshow de animações usando GIFs animados. Eu estou crossfading de uma animação para a próxima. O problema é: a única maneira que descobri para garantir que o GIF comece a animação a partir do primeiro quadro é recarregá-lo toda vez que ele é mostrado. Os GIFs têm 200KB ou mais, o que é muito mais largura de banda para uma apresentação de slides contínua.
Aqui está o meu código atual. img
e nextimg
são tags
![]()
cada. nextimg_img
é a tag ![]()
correspondente à próxima imagem a ser exibida.
var tmp = nextimg_img.attr('src'); nextimg_img.attr('src', ''); setTimeout(function() { nextimg_img.attr('src', tmp); }, 0); img.fadeOut('slow'); nextimg.fadeIn('slow');
A ideia é que ele defina o atributo src
da próxima imagem para ''
, em seguida, defina-o de volta para a origem do GIF a ser exibido.
Isso funciona – ele reinicia a animação desde o início – mas os GIFs parecem ser redownloaded toda vez que são exibidos.
EDIT: é um slideshow de loop, e eu estou tentando evitar recarregar os GIFs da rede quando eles são mostrados o segundo / terceiro / subseqüente tempo.
Você deve pré-carregar suas imagens no código.
var image = new Image(); image.src = "path";
quando você quiser usar:
nextimg_img.attr('src', image.src);
Então, quando você trocar o src, simplesmente troque os objects de imagem pré-carregados. Isso deve fazer o truque para evitar baixar novamente.
// reset a gif in javascript img.src = "your_image_url.gif"+"?a="+Math.random();
Tada!
Por favor, note que o GIF será baixado a cada vez, então mantenha um pequeno arquivo.
Eu apenas resolvi isso. Coloque este código (ou outra imagem estática, se quiser) na primeira página:

Em seguida, substitua-o pelo seguinte código quando estiver pronto para reproduzi-lo:

Ele vai jogar desde o início do gif.
O único problema é que você não pode usar o URL do gif, mas apenas sua base64.