FÁBIO DUARTE (79 pts)

GUILHERME G.G. (137 pts)

IRAPUAN MARTINEZ (45 pts)

DENIS CARAVALHO (85 pts)

STICKMAN (155 pts)

DEMIS BUCCI (50 pts)

LUIZ AVANCI (51 pts)

MAURO ROCHA TAVARES (40 pts)

KEN AWAMURA (130 pts)

SASHA GUDEY (235 pts)

GUILHERME SCHEIBE (49 pts)

MUZAK (45 pts)
Treinamento PontoFlash de Flash e ActionScript

Alguém tem um javascript redirecionador de páginas?

Como fazer um ponteiro de um relógio girar sem parar?

Eu estou usando para toolTip um código simples usando o método createTextField.

Flash 5 ou Flash 4?

Porque no meu campo de hora aparece 1,2, 3 etc e não 01, 02, 03?

Como posso randomizar um Go To para frames entre 4 e 10?

Problemas com o caminho do tell target.

Troca de cursor e drag movieclip não funcionam juntos?

FlashMX, um programa maduro para programadores?

Como imprimir no Flash?

Como desenhar, simulando dinamicamente a ferramenta caneta do Flash?

Um preloader inteligente.

Problemas com actions condicionais.

Como dar um goto para um quadro de um movieclipe usando uma variável.
Classe TransitionAnime e Painel TransitionAnimeEffect

Citroen, máscaras que simulam vídeo - Avaliação de sites

Abrir PopUp no Flash com JS e ASP.

Create TextField.

Mouse trail.

Entendendo como funciona um preloader. Terceira parte.

A história do Flash.

Perspectiva 3D no Flash

Macromedia Flex

Rave Generation no PhotoShop.

Novas propriedade de botões no FireworksMX

Envio de email via formulário utilizando Flash + ASP.
Data Glue

Swirl

Cubo

Drag MC 2

To Lower Case

Pacman

Scroll dinâmico

Rotating puzzle

Mapa do Brasil

Troca cor de fundo

MovieClip.onCollision

Preloader com percent
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