ZECA BALA (45 pts)

RICARDO TEIXEIRA (40 pts)

LUI FERNANDO (151 pts)

GÉRIO (93 pts)

ALEXANDRE PORTO (1281 pts)

AUTOR DESCONHECIDO (100 pts)

JOTA LAGO (40 pts)

ÉMERSON ROCHA (85 pts)

LUIZ AVANCI (51 pts)

PEDRO CLAUDIO (50 pts)

SYDNEY GANHO (60 pts)

HELEN TRIOLO (444 pts)
Treinamento PontoFlash de Flash e ActionScript

Como trazer do SQL uma imagem independente de sua extensão?

Como eu faria um exemplo com zoom no flash?

Como criar uma sistema de senhas e login usando Flash e ASP?

Como alterar duas propriedades de um objeto num só evento de um botão?

Como faço para registrar um desenho-logo?

Como eu uso o setInterval?

Preciso que um botão só possa ser clicado depois que os outros 3 já tenham sido clicados.

Tem como eu centralizar um filme aberto com Load Movie?

Quero fazer um descanso de tela no Flash (ScreenSave)?

Quero saber mais sobre interação Flash X banco de dados (sql mysql etc).

Como posso colocar uma transparência (alpha) em um objeto?

Como fazer para um movie clip desacelerar em direção ao outro.

Como deletar com unloadMovie todos os filmes menos o level 0?

Como fazer aparecer uma imagem por baixo de uns quadrados em tweening?
Motion Guide (guia de movimento).

Trace Bitmap.

Objeto Color

Controle de MovieClip via Microphone.get();

O desenho animado abrindo sites.

Clipes Inteligentes (SmartClip).

Botão avançar e recuar.

Objeto array.

Local Shared Objects segunda parte.

Menu Popup

Um contador Flash + PHP

Enviando EMAIL com ASP, COLDFUSION E PHP
Lens flare

Texto com scroll

Mapa - Países com A 2

Notícias

Trocar cor de fundo

Efeito blur

Menu com abas

Mulher

Multiple text efects

Break_text

ComboBox duplo

Tocha de fogo
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