Lightbox + Flash: A missão II

Olá,

Devido a grande quantidade comentários em um post sobre este mesmo assunto, resolvi dar uma revisada na técnica.

Fato que eu prefiro e utilizo em meus projetos o Shadowbox por ser muito mais completo, extensível, adaptável e ainda por cima funciona com jQuery. Se alguém quiser saber como operar Flash + Shadowbox confira aqui.

Porém neste post iremos trabalhar novamente com Lightbox, dado a quantidade de dúvidas e também por ser mais popular.

Abordarei inicialmente e como sempre com ActionScript 2.0 porém farei também em outro post como utilizar a solução em AS 3.0.

A idéia é a mesma, baixa-se o script do Lightbox, descompacte-o na pasta de seu projeto e depois é só ligar o flash ao mesmo.

O objetivo final é termos uma ação semelhante a este exemplo que disponibilizarei no final do artigo. Não abordarei, assim como no outro post, como instalar o Lightbox em sua página HTML, dado que isto está na página do script.

Mãos a obra

Um dos problemas mais relatados em comentários no artigo/post anterior é a questão de que as últimas versões do Lightbox estarem com uma ação embutida na sua execução que esconde os SWFs da página, o que para muitos esteticamente não é interessante.

É aí que entra o foco principal desta nova postagem. Eu fiz um hack em JavaScript para o Lightbox afim de evitar essa ação de esconder os SWFs o máximo possível e também facilitar a chamada de ação junto ao flash. Este script pode ser baixado aqui e deverá ser carregado junto com o seu HTML. Desde que o SWF tenha fundo(wmode) transparent ou opaque, e com excessão de versões mais antigas do FlashPlayer em ambiente linux, no restante dos sistemas operacionais e navegadores não terá problema algum com SWFs.

Além deste pequeno hack, criei uma função para auxiliar a chamada do Lightbox pelo Flash, confiram:

ACTIONSCRIPT:
  1. //lightBox function for call JavaScript...
  2. function Lightbox(src, title)
  3. {
  4. if(typeof src == "string") src = [src];
  5. if(typeof title == "string") title = [title];
  6. if(typeof title == "undefined") title = [];
  7.  
  8. function addSlashes(str) { return "'" + escape(str) + "'"; }
  9.  
  10. if(flash.external.ExternalInterface && flash.external.ExternalInterface.available)
  11. {
  12. flash.external.ExternalInterface.call("Lightbox.start", src, title);
  13. }
  14. else
  15. {
  16. for(var i=0; i<src.length; i++) src[i] = addSlashes(src[i]);
  17. for(var i=0; i<title.length; i++) title[i] = addSlashes(title[i]);
  18.  
  19. getURL("javascript:Lightbox.start([" + src.join(",") + "],[" + title.join(",") + "]);void(0);");
  20. }
  21. }

Com essa função podemos chamar a execução com maior facilidade, também implementei a possibilidade abrir um grupo de fotos por vez, aproveitando dos recursos de galeria do Lightbox. Coloquei a possibilidade de colocar uma legenda/title por foto. Ficou bem mais completo que a nossa primeira tentativa.

Copie a função acima e coloque dentro de seu arquivo .fla e depois basta colocar uma chamada para função Lightbox em seu objeto para que a mágica aconteça. Exemplo:

ACTIONSCRIPT:
  1. bt1.onRelease = function()
  2. {
  3. Lightbox(['images/image-1.jpg', 'images/thumb-1.jpg'], ['Legend Test', 'çóh?']);
  4. };

No código acima, estamos setando uma ação de clique/release a um botão chamado bt1. Ao clicar, será aberto um grupo de imagens(array de valores no primeiro argumento), com suas respectivas legendas(array de valores do segundo argumento).

Finalizando

Então é isso pessoal, creio que agora ficou redondinho. Se alguém achar algum bug ou quiser testar melhor no Internet Explorer(só dei uma testada assim por cima :P) fiquem a vontade.

Para baixar um exemplo completo de utilização junto com todos os scripts clique aqui.

Abraços!

Vamos lá galera, vamos ajudar!

Vamos ajudar pessoal, as contas para doação estão neste link aqui também:

http://www.defesacivil.sc.gov.br/index.php?option=com_frontpage&Itemid=1

iMasters Intercon 2008 - Eu vou!

iMasters Intercon

É isso ai, estou embarcando amanhã a tarde(sexta-feira) rumo ao iMasters Intercon. Espero que seja um ótimo evento, como sempre me fora relatado das edições anteriores.

Vou encontrar muita gente que sempre quis conhecer, grandes amigos virtuais e me divertir bastante =D

Se algum leitor deste blog(oi?!?) estiver indo para lá também e quiser me encontrar é só acompanhar no meu Twitter que provavelmente me localizara lá dentro.

Vejo vocês lá ;)

Brazil zil zil zil zil zil!!!11111

Ultraje A Rigor - Terceiro

Nosso novo hino nacional, nesta bela olim-piada.

o/

jQuery - Belas introduções

Bom,

Quero ver se tiro um tempinho para falar sobre a super biblioteca de funções JavaScript chamada jQuery, que muda/facilita a vida de qualquer desenvolvedor web, chega até a ser um caso de depedencia :P

Pois bem, vo indicar aos leitores dois belos tutoriais para iniciantes, overview geral mesmo:

Usando jQuery na prática do Nando Vieira

e este Guia completo sobre jQuery para iniciantes que vi no site Pinceladas da Web

Abracetas.. ;)

Olimpíadas. Ou seria Olim-piadas?

Sobregado a abrir um pequeno(bem pequeno) parênteses aqui.

O que está sendo estas Olimpíadas? DEOS! Que vergonha 277 atletas na delegação brasileira e? 4 bronzes ¬¬

Olha o Cardoso disse tudo o que estou sentindo neste post:
http://www.contraditorium.com/2008/08/14/brasil-pede-pra-sair-moratria-olmpica-j/

E o Felipe do Controle Remoto completou a respeito dessa falsa atmosfera da vitória:
http://controleremoto.tv/blog/2008/08/eu-sou-brasileiro-com-muito-orgulho/

E para finalizar, nosso novo hino nacional:
http://fracasso.com.br/hino-nacional/

Pronto! Voltamos a nossa programação [a]normal.

Minha área de trabalho

Seguindo a onda do Eslonique, publico a ultima imagem do meu desktop =P

Mac OSx rlz! =D

Boleto BESC - Projeto BoletoPHP

Olá =D

Vou abrir este pequeno parênteses aqui para avisar sobre a minha contribuição no Projeto BoletoPHP.

Ajudei o projeto desenvolvendo o boleto do banco BESC, confiram lá.

E veeeva o open source!

Abracetas... ;)