Finalmente a tão famigerada e aguardada solução pelos desenvolvedores RIA e SEO especialistas vem a tona.
A Adobe juntou-se ao Google e Yahoo para criar logo agora na próxima versão do Flash Player 10 arquivos swf totalmente compatíveis com spiders do Google e Yahoo.
Exemplos do SWFObject
O exemplo acima exposto é o necessário para o uso mÃnimo do SWFObject, mas, se você deseja usar outros parâmetros suportados pelo plug-in do Flash, o SWFObject facilita seu trabalho. Os exemplos abaixo mostram vários métodos diferentes que você pode desejar para inserir seu conteúdo em Flash.
Um exemplo simples de adição de parâmetros extras:
<script type=”text/javascript”> var so = new SWFObject(”movie.swf”, “mymovie”, “200″, “100%”, “7″, “#336699″); so.addParam(”quality”, “low”); so.addParam(”wmode”, “transparent”); so.addParam(”salign”, “t”); so.write(”flashcontent”); </script>
Aqui está uma lista completa dos parâmetros atuais e seus possÃveis valores da macromedia.com.
Passando variáveis para seus filmes usando parâmetros “Flashvarsâ€
O uso de Flashvars é o modo mais fácil de pegar dados do HTML dentro do filme Flash, mas os dados são passados só uma vez, assim que o filme carrega. Normalmente, você adicionaria um parâmetro chamado “flashvars†e, para o valor, passaria uma string de pares nome/valor como esta: variavel1=valor1&variavel2=valor2&variavel3=valor3 e assim por diante. O SWFObject facilita isso, permitindo que sejam adicionadas tantas variáveis quanto você deseja, num modo similar ao que você usaria para passar parâmetros adicionais. Aqui está um exemplo de como passar valores para o seu filme Flash usando Flashvars:
<script type=”text/javascript”> var so = new SWFObject(”movie.swf”, “mymovie”, “200″, “100″, “7″, “#336699″); so.addVariable(”variavel1″, “valor1″); so.addVariable(”variavel2″, “valor2″); so.addVariable(”variavel3″, “valor3″); so.write(”flashcontent”); </script>
Fazendo isso, todas as variáveis que você passar estarão imediatamente disponÃveis dentro do seu filme em Flash, na linha de tempo _root.
O script SWFObject também tem uma função extra que lhe permite buscar variáveis da URL. Por exemplo, suponha que você tenha a seguinte URL: http://www.example.com/page.html?variavel1=valor1&variavel2=valor2. Usando a função getQueryParamValue(), você pode facilmente pegar esses valores da URL e passá-los ao seu filme em Flash. Aqui está um exemplo para a supracitada URL:
<script type=”text/javascript”> var so = new SWFObject(”movie.swf”, “mymovie”, “200″, “100″, “7″, “#336699″); so.addVariable(”variavel1″, getQueryParamValue(”variavel1″)); so.addVariable(”variavel2″, getQueryParamValue(”variavel2″)); so.write(”flashcontent”); </script>
A função
getQueryParamValue()
também suporta a leitura de variáveis do
location.hash
, que às vezes são usadas para criar links profundos (deep links) para as suas aplicações Flash. Um exemplo de como criar links profundos para seus filmes Flash usando location.hash, veja este exemplo do Slideshow Pro, que usa inserção via SWFObject.
Usando o ExpressInstall
O SWFObject tem suporte completo ao recurso Macromedia Flash Player Express Install. Junto com o script SWFObject existe um arquivo actionscript que funciona com o SWFObject, para dar inÃcio a um processo de atualização de plug-in nos seus filmes Flash. Seus usuários nunca terão que deixar seu site para atualizar seus players, e quando a atualização estiver completa, eles serão redirecionados de volta à página que iniciou a atualização.
Para usar o ExpressInstall, você precisa primeiro incluir o arquivo expressinstall.as no seu .fla e, no inÃcio do seu filme, fazer uma simples checagem para ver se o plug-in do usuário precisa ser atualizado:
#include "expressinstall.as"var ExpressInstall = new ExpressInstall();
// se o usuario precisa ser atualizado, mostra o botao “iniciar atualizacaoâ€
if (ExpressInstall.needsUpdate) {
// isto eh opcional, vc pode tambem iniciar a atualizacao automaticamente,
// chamando ExpressInstall.init() aqui, ao inves das seguintes linhas
// anexa a msg personalizada de atualizacao, centralizada
var upgradeMsg = attachMovie(”upgradeMsg_src”, “upgradeMsg”, 1);
upgradeMsg._x = Stage.width / 2;
upgradeMsg._y = Stage.height / 2;
// anexa as acoes de botao q iniciarao o atualizador ExpresInstall
upgradeMsg.upgradeBtn.onRelease = function() {
// este metodo eh o q dah inicio a atualizacao
ExpressInstall.init();
}
// se o expressinstall foi invocado, para a linha do tempo
stop();
}
É importante não colocar nenhum conteúdo no primeiro quadro (ou onde a checagem do ExpressInstall acontecer) que exija o Flash Player 7 ou superior.
Para um exemplo “ao vivo†deste código, abra o arquivo source/so_tester.fla incluÃdo no arquivo SWFObject.zip. Ou, se você deseja ver o ExpressInstall em funcionamento, instale o Flash Player 7* (ou 6.0.65 adiante) e visite esta página.
* Se você já tem o plug-in Flash Player mais atual, e deseja testar o ExpressInstall (ou se deseja testar seu filme Flash em outras versões de plug-in), você precisa desinstalar seu plug-in atual e, em seguida, instalar a versão apropriada.
Se o seu filme Flash é uma janela popup, ou se você deseja redirecionar o usuário para um local diferente depois que a atualização ExpressInstall terminar, use o atributo xiRedirectUrl.
Â
<script type=”text/javascript”>
var so = new SWFObject(”movie.swf”, “mymovie”, “200″, “100″, “8″, “#336699″, true);
so.setAttribute(’xiRedirectUrl’, ‘http://www.example.com/upgradefinished.html’); // precisa ser uma URL absoluta para o seu site
so.write(”flashcontent”);
</script>
Download
O SWFObject está liberado sobre a licença MIT. Isso significa (basicamente) que você pode usá-lo para qualquer coisa que você desejar, sem restrições.
Baixe o SWFObject 1.4 – Arquivo zip, incluindo swfobject.js e os modelos html abaixo.
Ou, se preferir, veja minhas páginas de exemplo:
- Inserção padrão de Flash – Sem frescuras, apenas um filme Flash na página com uma variável sendo passada. Válido como XHTML 1.0 Scrict*.
- Inserção de Flash com 100% de largura e altura – Você tem problemas em fazer seu filme Flash preencher toda a tela? Tente esse modelo. Válido como XHTML 1.0 Scrict*.
- Inserção padrão de Flash com ExpressInstall ativado – Essa página tentará atualizar o seu Flash player se você tiver uma versão menor do que a 8 (é necessário pelo menos a versão 6.0.65).
* Páginas enviadas como text/html, e não application/xhtml+xml.
Assine também a lista de discussão do SWFObject. Ela tem como objetivo responder questões sobre problemas que você possa ter enquanto usa o SWFObject, ou para solicitar e discutir novos recursos.
Â
Â
Â
O SWFObject é um pequeno arquivo Javascript usado para a inserção de conteúdo Macromedia Flash na página. O script detecta o plug-in do Flash em todos os principais navegadores (do Mac e PC), e foi projetado para facilitar ao máximo a inserção de filmes em Flash. É “amigável†aos mecanismos de busca, mostra um conteúdo alternativo no caso de o filme não ser carregado, pode ser usado em documentos HTML e XHTML 1.0 válidos* e é compatÃvel no futuro, então se espera que ele funcione por muitos anos. Esta página é uma tradução livre que fiz da original de Geoff Stearns, com a permissão do autor.
Funcionamento do script
[Os über nerds podem ver o javascript cru aqui.]
O uso do SWFObject é fácil. Simplesmente inclua o arquivo Javascript swfobject.js, então use uma pequena quantidade de script na sua página para inserir o filme Flash. Abaixo, segue um exemplo mostrando a quantidade mÃnima de código necessária para isso:
<script type="text/javascript" src="swfobject.js" mce_src="swfobject.js"></script>
<div id="flashcontent">
Este texto será substituÃdo pelo filme Flash.
</div>
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
so.write("flashcontent");
</script>
Aqui está uma análise do que o código faz:
<div id="flashcontent">[...]</div>
Prepara um elemento HTML que armazenará o seu filme Flash. O conteúdo colocado no elemento “recipiente†(conteúdo alternativo) será substituÃdo pelo conteúdo em Flash, assim os usuários com o plug-in do Flash instalado jamais verão o conteúdo dentro deste elemento. Esse recurso tem o bônus adicional de permitir aos mecanismos de busca indexar o seu conteúdo alternativo.
var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
Cria um novo SWFObject passando os parâmetros obrigatórios:
- swf: o caminho e o nome do seu arquivo swf.
- id: o ID do seu objeto ou da tag “embedâ€. A tag embed também usará esse valor no seu atributo nome para os arquivos que utilizam o swliveconnect.
- width: a largura (em pixels) do seu filme Flash.
- height: a altura (em pixels) do seu filme Flash.
- version: a versão necessária para rodar o seu conteúdo em Flash. Pode ser uma string no formato “maiorVersão.menorVersão.revisãoâ€. Por exemplo: “6.0.65â€. Ou você pode apenas exigir a maior versão, como por exemplo “6â€.
- background-color: o valor em hexa da cor de fundo do seu filme Flash.