IRAPUAN MARTINEZ (45 pts)

LUI FERNANDO (151 pts)

RODRIGO AMARAL (56 pts)

RICARDO TEIXEIRA (40 pts)

MARCOS JOSÉ PINTO (44 pts)

PANDOGO (82 pts)

GABRIEL SPORCH (53 pts)

EDUARDO PERROUD (52 pts)

MARCELO SIQUEIRA (96 pts)

AUTOR DESCONHECIDO (100 pts)

DEMIS BUCCI (50 pts)

MANGOOST (80 pts)
Treinamento PontoFlash de Flash e ActionScript

Como passar parâmetros para um arquivo swf por meio de uma página html?

Objeto Cookie no Flash que grava arquivos XML.

Alguém sabe como evitar o cachê da máquina do usuário para um SWF?

Quero desativar os botões de cenas já visitadas.

Problemas com actions condicionais.

Alguém aqui consegue produzir um multimídia com o flash, utilizando arquivos Quicktime (.MOV)?

Quero que uma animação de fotos seguidas fique em loop infinito.

Erro no TellTarget.

Quicktime no Flash.

O quê significa INT, como no exemplo "tempo = int ( tempo );"?

Quero montar algo como um Céu cheio de estrelas piscando.

Gostaria que vocês me dessem uma dica, quando usar e quando não usar o loading.

Alguém tem um chat (de preferência .fla) ou sabe onde conseguir um?

Estou precisando de um preloader (carregando) para o meu site.
Detecção do FlashPlayer.

Variáveis no Flash MX

XMLSockets

Flash e Banco de Dados.

Objeto Sound.

Máscara percorrendo um caminho.

Frases randômicas

Alternando janelas no Flash.

Curiosidades.

Formulário interagindo Flash e PHP.

Criação de um CD híbrido

CD Record (um player com clips arrastáveis).
Dots2a

ICQ

Altex

Intromar

Frameload

Fogos de artificio

Pintar

Menu aberto

Sound_control

Musica

Spiral show

Linetrailer
HOME | TUTORIAIS
Load Múltiplos.
por Alexandre Porto

INTRODUÇÃO

É consenso que quando você tem um site grande com várias seções, a melhor maneira de disponibilizar seu conteúdo é dividí-lo em vários filmes linkados no menu de um filme inicial. Assim você não obriga o internauta a baixar um conteúdo que talvez ele nem queira ver. Sempre é perguntado na lista PontoFlash como poderíamos agilizar o carregamento desses filmes, sem que o internauta perceba. Isto é, camufladamente. O interessante dessa idéia é que quando ele for chamar uma seção o filme correspondente já estaria carregado.

 

Como tudo no Flash você tem várias maneiras de fazer isso. Eu escolhi uma que considero bem simples e acessível a maioria do pessoal.

A primeira questão é que esses filmes devem ser carregados em níveis diferentes e logo após o loading deve haver um frame vazio, sem conteúdo, para que ele fique "invisível" até que seja chamado pelo internauta. Nos dois filmes aqui representados, esse frame vazio é o 3. O frame com conteúdo visível é o 4.

Mas você deve estar perguntando: para quê um loading se o filme vai ser carregado sem que o internauta perceba?

Boa pergunta, mas a resposta é simples: Pode acontecer do cara clicar no botão que chama um filme ainda não carregado e aí o loading será necessário.

Você vai reparar que esse exemplo se baseia na troca dos valores de duas variáveis (_level0.botao1 e _level0.botao2, uma para cada filme) entre os três filmes ("primeiro_filme", "segundo_filme" e "terceiro_filme"). Basicamente os valores enviados para essas variáveis são três:

"Load Movie" - quando o filme está sendo carregado por detrás dos panos;
"Load Movie and go" - quando o filme for chamado pelo botão e no caso dele
ainda não estiver sido totalmente carregado e;
"Go To" - quando o filme for chamado pelo botão e no caso dele já estiver sido
totalmente carregado.

Coloquei esses valores como string para que eles sirvam também como "rótulo" dos botões, facilitando a sua compreensão. Bom, vamos deixar os entretantos e vamos diretos aos finalmentes. :)

Como fica o primeiro_filme, o que vai chamar os outros?

Nesse meu exemplo ele é um filme de apenas um frame com dois botões que controlarão os outros filmes. Nesse frame eu seto duas variáveis e mando uma instrução de load movie para os dois filmes:

_root.botao1 = "Load Movie";
_root.botao2 = "Load Movie";
loadMovieNum ("segundo_filme.swf", 1);
loadMovieNum ("terceiro_filme.swf", 2);

Criei os dois botões e coloquei numa camada acima de cada um deles, um campo de texto com a variável correspondente (botao1 e botao2). Assim o campo vai mostrar a função que o botão exercerá naquele determinado momento. No primeiro botão, o que controlará o "segundo_filme", eu coloquei as seguintes ações:

on (release) {
   if (_root.botao1 =="Load Movie") {
      loadMovieNum ("segundo_filme.swf", 1);
      _root.botao1 = "Load Movie and go";
   } else if (_root.botao1 =="Go To") {
      _level1.gotoAndStop(4);
      _level2.gotoAndStop(3);
   }
}

Vamos entender esses comandos.

Se a variável botao1 for igual a "Load Movie", quer dizer que ele ainda está sendo carregado. Lembre-se que esse valor foi setado logo no início do filme. Nesse caso eu tenho que repetir o comando de Load Movie, para priorizar seu carregamento. No entanto, se "botao1" for igual a "Go To", o filme já foi carregado e o comando dele será apenas um GotoAndStop. Além disso, eu envio os filmes para os frames que quero que sejam mostrados. Nesse caso o filme do level1 vai para o frame 4, onde está o frame com conteúdo visível e o filme do level2 para onde está o frame vazio (3).

Mas como sei quando o filme está ou não carregado?

É que quando o filme estiver carregado, um novo valor "Go To" será enviado para "botao1". Você vai ver isso daqui a pouco. Na quarta linha do código eu setei para a variável "botao1" o valor "Load Movie and go". Esse será o valor checado pelo loading dos outros filmes para ir diretamente para o frame 4, onde está o conteúdo propriamente dito e não para o frame vazio (3).

E os outros filmes como ficam?

Fiz os dois filmes iguais para facilitar. Alterei apenas a foto mostrada. Ela tem a finalidade principal de dar algum trabalho ao loading. Eles têm 4 frames. Dois para o loading (1 e 2), uma para o frame vazio (3) e o último com o conteúdo visível. Eu coloquei uma ação "if frame is load" no primeiro frame, mas você pode usar um daqueles loadings que utilizam "Get Bytes etc (você encontra tutoriais na seção avançados). Nesse filme eu também coloquei um campo de texto "vartexto" para mostrar o histórico do processo.

No primeiro frame eu coloquei:

ifFrameLoaded (4) {
   vartexto = "Filme 2 sendo carregado";
   if (_level0.botao1 =="Load Movie and go") {
      gotoAndStop (4);
   } else if (_level0.botao1 =="Load Movie") {
      gotoAndStop (3);
   }
   _level0.botao1 = "Go To";
}

Nesse código o loading checa o conteúdo de "level0.botao1". Lembre-se que o botão seta a variável com o valor "Load Movie and go". Nesse caso mando o filme diretamente para o conteúdo (frame4). Se o filme atual tiver sido carregado simplesmente pelo primeiro frame do filme principal (_level0), o valor da variável ainda é "Load Movie" e assim eu o envio para o frame 3, aquele que deixei em branco. Na última linha eu seto o valor da variável para "Go To". A partir de agora o botão correspondente a esse filme no filme principal só vai trabalhar com um Goto (tell target, na verdade), já que eu não vou fazer unload em nenhum momento. Volte para ver o código do botão mostrado acima que você vai entender isso.

No segundo frame está:

gotoAndPlay (1);
// Loop até o carregamento do filme

O terceiro frame é vazio, mas eu setei um valor a "vartexto" só como demonstração:

vartexto = "Filme 2 carregado e esperando";

No quarto frame está o conteúdo. Nesse caso uma foto, o botão de fechar e:
vartexto = "Filme 2 carregado e disponível";

No botão de fechar eu coloquei a seguinte ação:

on (release) {
   gotoAndStop (3);
}

Isso faz com que o filme vá para o frame "invisível" esperando ser chamado novamente pelo botão "Go To". Espero que você tenha entendido. É claro que você vai ter que adaptar todos os comandos para seu projeto que não deve ser tão simples como esse exemplo. De qualquer maneira você pode baixar aqui os filmes usados nesse tutorial. Bom proveito.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
1 comentário


Comentário de kané
| 7/12/2010 - 14:45 |


Até gostaria de ver como foi feito mas o link do download está quebrado. De qualquer forma, achei interessante e verei como fica aqui no flash. Grato