Caya Posted November 19, 2009 at 07:41 PM Report Share #296921 Posted November 19, 2009 at 07:41 PM Olá. Eu estou a desenvolver um slideshow em Javascript, onde tenho várias imagens que vão transitando entre elas. Gostaria de saber como é que faço com que o slideshow só comece quando as imagens tiverem todas carregadas, fazer tipo um "loading". Obrigado desde já, Caya Link to comment Share on other sites More sharing options...
softklin Posted November 20, 2009 at 12:18 AM Report Share #296964 Posted November 20, 2009 at 12:18 AM Pesquisa no motor de busca por 'javascript image preload'. Apareceram-me desde scripts de poucas linhas a outros mais detalhados, de certeza que conseguirás encontrar um que sirva para as tuas necessidades 😉 Basicamente carregas as tuas imagens com javascript, criando objectos do do tipo Image. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 09:12 AM Report Share #296980 Posted November 20, 2009 at 09:12 AM Pesquisa no motor de busca por 'javascript image preload'. Apareceram-me desde scripts de poucas linhas a outros mais detalhados, de certeza que conseguirás encontrar um que sirva para as tuas necessidades 😉 Basicamente carregas as tuas imagens com javascript, criando objectos do do tipo Image. Isso não é a melhor solução. Imagina que o slideshow tem 100 imagens, obrigaria o browser a só concluir o trabalho até as sacar todas. O melhor a fazer é à medida que se vai navegando pela slideshow ir buscando por ajax as imagens (mais fácil de controlar). Podes também optar por dar um determinado delay quando navegas pelas imagens, dando tempo ao browser para carregar a imagem (do género 2 segundos, que não mata ninguém). before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
softklin Posted November 20, 2009 at 09:21 AM Report Share #296981 Posted November 20, 2009 at 09:21 AM É verdade, nem pensei para o caso de tantas imagens... E para além disso, ainda ia consumir largura de banda, e o utilizador só querer ver 2 ou 3 imagens. Existia também para aí um script desses que escurecem o fundo e mostram a imagem, que basicamente ocupava esse tempo de carregamento de imagem com uma animação de redimensionamento, acho que também seria uma boa alternativa para o caso. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Caya Posted November 20, 2009 at 09:28 AM Author Report Share #296982 Posted November 20, 2009 at 09:28 AM Pesquisa no motor de busca por 'javascript image preload'. Apareceram-me desde scripts de poucas linhas a outros mais detalhados, de certeza que conseguirás encontrar um que sirva para as tuas necessidades 😉 Basicamente carregas as tuas imagens com javascript, criando objectos do do tipo Image. Eu já andei a fazer isso antes de postar aqui, mas só consegui fazer o "loading" com uma imagem. Quando tento com várias imagens não funciona =\ Isso não é a melhor solução. Imagina que o slideshow tem 100 imagens, obrigaria o browser a só concluir o trabalho até as sacar todas. O melhor a fazer é à medida que se vai navegando pela slideshow ir buscando por ajax as imagens (mais fácil de controlar). O problema é que o user pode saltar logo para outra imagem (1ª para a 4ª, da 5ª para a 3ª, ...) e assim não dá tempo para as imagens carregarem. Por isso o ideial mesmo, era conseguir carrega-las todas antes de permitir ao user usar o slideshow. Podes também optar por dar um determinado delay quando navegas pelas imagens, dando tempo ao browser para carregar a imagem (do género 2 segundos, que não mata ninguém). Isso é muito relativo. Vai depender muito do tamanho das imagens e da velocidade de download da internet do cliente. ty Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 02:57 PM Report Share #297010 Posted November 20, 2009 at 02:57 PM O problema é que o user pode saltar logo para outra imagem (1ª para a 4ª, da 5ª para a 3ª, ...) e assim não dá tempo para as imagens carregarem. Por isso o ideial mesmo, era conseguir carrega-las todas antes de permitir ao user usar o slideshow. Não vejo como. Se for bem feito, não tens problemas nenhuns. Se quiseres, faz um diagrama do que pretendes visualmente e do funcionamento, que eu deixo aqui um código para isso. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Caya Posted November 20, 2009 at 03:09 PM Author Report Share #297011 Posted November 20, 2009 at 03:09 PM http://img687.imageshack.us/img687/558/semttulo2mz.png Cada imagem tem uma palavra correspondente, e se o rato não tiver em cima do slideshow, ele muda de imagem de 5 em 5 segundos. O user ao colocar o rato sobre uma palavra há um fade entre a imagem actual e a correspondente a palavra. Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 04:08 PM Report Share #297018 Posted November 20, 2009 at 04:08 PM Não vejo pelo exemplo onde está o problema de saltar da 1ª para a 4ª imagem. Agora, isso pode ser complicado ou simples. As imagens têm algum efeito de transição? before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Caya Posted November 20, 2009 at 05:02 PM Author Report Share #297024 Posted November 20, 2009 at 05:02 PM http://img246.imageshack.us/img246/4508/semttulo2p.pnghttp://img696.imageshack.us/img696/8162/semttulo3.pnghttp://img134.imageshack.us/img134/1302/semttulo4x.png Antes de essa transição começar, já devo ter a imagem carregada, por isso é que quero que estejam todas carregadas antes de começar. Experimentei com imagens de 500kB alojadas no meu servidor remoto e o script confundisse todo se a imagem não estivesse já carregada. 🙂 Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 05:25 PM Report Share #297027 Posted November 20, 2009 at 05:25 PM Não percebi a transição. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Caya Posted November 20, 2009 at 05:31 PM Author Report Share #297028 Posted November 20, 2009 at 05:31 PM Há um fade entre as imagens... Enquanto uma vai perdendo opacidade a outra vai ganhando. Mas o importante aqui não é a transição, mesmo que não houvesse transição haveria o mesmo problema pois o script ao passar para a outra imagem não a tinha carregada. Só preciso de saber se há alguma função que "diga" quando a página está toda carregada, ou então como pre-carrego várias imagens. Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 05:39 PM Report Share #297030 Posted November 20, 2009 at 05:39 PM Esse fade não sei se é possível. Ou melhor, possível é, mas implica manhas que puxam um bocado mais pelo browser. A transição que queres, por exemplo, sem ser com as imagens já carregadas, demora mais tempo a fazer a transição (para garantir que só a faz com a imagem carregada, mas é possível). Se quiseres usar um preloader, tens um aqui : http://flesler.blogspot.com/2008/01/jquerypreload.html Nunca o usei, mas geralmente tudo o que é feito em jQuery funciona bem. Experimenta, se correr mal apita 🙂 before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Caya Posted November 20, 2009 at 05:53 PM Author Report Share #297032 Posted November 20, 2009 at 05:53 PM Tanto é possível como eu já fiz 🙂 Mas o problema não é a transição, isso já está feito tal como o resto das funções todas do slideshow. yoda.pt obrigado, era exactamente isso que eu queria. Mas neste trabalho não posso usar nenhuma biblioteca javascript, por isso precisava de um script que fizesse isso. Link to comment Share on other sites More sharing options...
yoda Posted November 20, 2009 at 06:07 PM Report Share #297034 Posted November 20, 2009 at 06:07 PM Nesse caso, o que tens a fazer é o seguinte : 1. apanhar o evento onload do body (ou algo parecido que te diga quando é que o restante site foi carregado); 2. chamar um procedimento / função nessa altura; 3. escrever esse procedimento / função de modo a que mal o site seja carregado, ele carregue as imagens (tipo isto : http://www.roscripts.com/Javascript_image_preloader-111.html ) 4. usar um gif loader no lugar do slideshow (que só é substituido pelo conteúdo do slideshow quando a função que chamas para carregar as imagens acaba o seu trabalho) Em último caso, podes criar uma div oculta no markup, que tem as tags <img> com todas as imagens que queres, e usar o javacript para só te deixar usar os links de navegação quando o site estiver carregado. jQuery resolvia isso facilmente, mas se não pode ser ... before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now