Terça-feira, 22 de junho de 2004 às 01h59

Imagens - SlideShow

Faça o curso: jQuery na Prática

Para quem pensa em fazer um slideShow de imagens mas nunca soube como trabalhar com programas de animação vetorial, os seus problemas acabaram. Chegou a revolucionaria linguagem de programação Javascript, com ela as coisas são muito mais fáceis.

Para podermos criar um slideShow de imagens no Javascript, vamos precisar de 3 funções: uma função que será o objeto, outra para trocar as imagens e uma outra para animar o slideShow.

Eu escolhi algumas imagens para podermos criar o slideShow. Copie as imagens abaixo para sua máquina para poder testar o código a seguir:

Vamos criar uma matriz que armazenará o nome das imagens e outra variável que será o objeto que realizará o slideShow:

Exemplo:

1 var mySlideList1 = ['first.jpg', 'second.jpg', 'third.jpg','forth.jpg'];
2 var mySlideShow1 = new SlideShow(mySlideList1, 'first', 1000, "mySlideShow1");

Linha 1 - A matriz mySlideList1 armazena o nome das imagens a serem usadas no slideShow.

Linha 2 - A variável mySlideShow1 é um objeto que é responsável pela animação do slideShow. Os argumentos passados para a função SlideShow são, respectivamente:

- mySlideList1 - matriz com o nome das imagens;
- first - nome da imagem que será usada para a animação;
- 1000 - tempo que leva para a troca de imagens na animação;
- mySlideShow1 - nome do objeto responsável pela animação

Vamos criar a função que será o nosso objeto. A partir do mesmo podemos criar quantas instâncias desejarmos. A função SlideShow receberá quatros argumentos que são, respectivamente: slideList, image, speed e name.

Para animar o slide, o método play será criado baseado na função SlideShow_play. Esse método será criado com o uso da instrução prototype que foi visto em colunas anteriores.

Exemplo:

1 function SlideShow(slideList, image, speed, name){
2         this.slideList = slideList;
3         this.image = image;
4         this.speed = speed;
5         this.name = name;
6         this.current = 0;
7         this.timer = 0;
8 }
9 SlideShow.prototype.play = SlideShow_play;

Linha 1 - Declaração da função SlideShow() que será o nosso objeto responsável por animar o slideShow.

Linha 2 a 7 - São criadas algumas propriedades para o objeto SlideShow. Alguns valores são recebidos através dos argumentos da função e as duas últimas propriedades recebem valor = 0.

Linha 9 - Uso da instrução prototype para a criação do método play que se baseia na função SlideShow_play.

Vamos criar a função switchImage que será responsável pela troca das imagens na animação. Como a funão SlideShow_play chama a função switchImage, é interessante criá-la primeiro para evitar erros.

Exemplo:

1 function switchImage(imgName, imgSrc){
2         if (document.images){
3                 if (imgSrc != "none"){
4                         document.images[imgName].src = imgSrc;
5                 }
6         }
7 }

Linha 1 - Declaração da função switchImage() que sera responsável por trocar as imagens na animação, a mesma recebe duas informações nos seus argumentos, imgName (nome da imagem que sera animada) e imgSrc (imagem a ser animada).

Linha 2 - Verificação se o browser suporta a instrucao document.images. Essa instrução funciona nos browsers Netscape Navigator a partir da versão 2 e Internet Explorer a partir da versão 3.

Linha 3 - Verificação se o argumento imgSrc tem valor diferente de “none”, se retornar true a imagem será trocada por outra e assim criar a animação do slideShow.

Linha 4 - Realização da troca de uma imagem por outra na animação.

Finalmente vamos criar a função SlideShow_play que é responsável pelo método play do objeto SlideShow, essa função chama a função switchImage() para realizar a troca das imagens por um período de tempo determinado no objeto SlideShow, também um incremento é adicionado para realizar um loop na troca das imagens.

Exemplo:

1 function SlideShow_play(){
2         with(this){
3                 if(current++ == slideList.length-1) current = 0;
4                 switchImage(image, slideList[current]);
5                 clearTimeout(timer);
6                 timer = setTimeout(name+'.play()', speed);
7         }
8 }

Linha 1 - Declaração da função SlideShow_play() que é a base do método play do objeto SlideShow.

Linha 2 - Utilização da declaração with(this) para economizar digitação.

Linha 3 - Verificação se a propriedade current contem o mesmo valor do tamanho da matriz, se retorna true a propriedade é setada com valor = 0 para realizar o loop da animação.

Linha 4 - Uma chamada da função switchImage() para a realização da troca das imagens

Linha 5 - A variável timer tem seu valor apagado.

Linha 6 - O método play é utilizado baseado no tempo proposto.

Para finalizar o nosso exemplo, precisamos inserir uma imagem no nosso documento HTML e dar a imagem o nome 'first' que foi utilizado no nosso código acima. Vamos também criar um link para iniciar a animação do nosso slideShow.

Exemplo:

1 <img src="first.jpg" width="112" height="170" border="0" name="first">
2 <br>
3 <a href="javascript:void(null)" onClick="mySlideShow1.play()">play SlideShow</a>

Linha 1 - Inserção da imagem que recebera o nome first.

Linha 3 - Link para dar o play na animação. O evento onClick chama o método play do objeto mySlideShow1.

Clique aqui para ir ao .html com o código do SlideShow.

Vai aí um desafio para os amantes da programação Javascript:

- Criar um método chamado stop responsável por parar a animação.
Requisitos:
- Criar uma função chamada SlideShow_stop que será a base do método stop;
- Utilizar a instrução prototype para a criação do método stop;
- Nao deixar que o tempo do método play continue correndo mesmo com a animação parada, isso causará uso de processamento desnecessário.
- Criar um link para dar um stop na animação.

Valeu galera até a próxima semana!

9 comentários

 Luiz Gustavo Stábile de Souza
28/10/2004 19h00

Link quebrado

O link do exemplo está quebrado

 Diego Diniz
31/10/2004 06h00

Codigo - visualizacao de imagens

gostaria de saber se cvs tem algum codigo pra visualizacao de fotos, pra site de fotos, tipo fica uma coluna com as miniaturas (thumbnails) e qdo clica abre na mesma janela na parte maior.. Trabalho com Dramweaver
Obrigado

 regiscoimbra
31/10/2004 13h11

Link quebrado

Esse link não está funcionando, Clique aqui para ir ao .html com o código do SlideShow. (http://www.imasters.com.br/colunistas/js_dhtml/11/imagesTeste.htm)

 Mauryas
12/11/2005 17h09

Link quebrado

este link não esta funcionando

 M´srcio
09/01/2006 16h07

Muito boa!!!

Muito boa essa coluna... Está de parabéns Thiago...

 Magskull Bone
11/07/2006 14h20

Solicitação!

Gostaria infinitamente que fosse incluida a função stop nesse tutorial!
:)

 Benedicto Soares
03/09/2006 17h40

Imagens - SlideShow

O link está quebrado como fazer para ver o funcionamento do script?

 Leandro De Jesus Jardim
16/10/2006 14h01

Download

Poxa não consegui fazer, diz que vamos trabalhar com 3 arquivos mas não foram mostrados separados...Ficou complicado

 Flavio dos Santos
23/12/2006 22h14

Dá para gravar em MySql?

Grato por ter a iniciativa de ensinar como fazer. Gostaria que, ao clicar em uma imagem, gravar o clique no MySql e saltar para o site do cliente. Vc pode ensinar o caminho?
Grato - Flavio - Bairro do Limão - SP

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Thiago Prado Atua profissionalmente com desenvolvimento de projetos web em Flash, PHP e Java.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.