DAUTON JANOTA (255 pts)

FLASHGURU (155 pts)

IRAPUAN MARTINEZ (45 pts)

MARLOS ALVES CARMO (90 pts)

JOTA LAGO (40 pts)

EDUARDO WALMOTT (226 pts)

HELEN TRIOLO (444 pts)

AMAURY BENTES (123 pts)

MAURO ROCHA TAVARES (40 pts)

DEMIS BUCCI (50 pts)

FÁBIO DUARTE (79 pts)

LUI FERNANDO (151 pts)
Treinamento PontoFlash de Flash e ActionScript

Como tirar o menu do FlasPlayer que se abre quando se clica com o botão direito do mouse?

Gostaria de saber como criar um botão voltar e avançar? Como usar âncoras no Flash?

Há como referenciar um botão dinamicamente no FlashMX?

Como pegar um objeto (movieclip) da biblioteca sem instanciá-lo no palco?

Como fazer um radiobutton acionado por default no html.

Quicktime no Flash.

Preciso integrar uma animação do Flash numa index criada no Fireworks.

No Flash tem uns gradientes pré definidos: como eu faço para edita-los (inserir ou alterar)?

Como faço para validar data de nascimento num formulário?

Como fazer a timeline em vez de passar o filme para frente volte o filme?

Qual é o melhor formato para importação de sons no Flash?

Não consigo mudar o foco do HTML para o objeto flash.

Como faço para redimensionar dinamicamente (via AS) um campo de texto dinâmico?

Mais dicas para otimizar seu Flash Movie.
Imagem Pixel a Pixel no PhotoShop.

Rotacionar objetos 3D no Flash.

Curiosidades.

Redimensionar um filme no modo de edição

Atenuação (easing).

Create TextField.

Time Delay

Como criar objetos 3D no Fireworks.

GuestBook usando integração Flash e PHP.

Context Menu - usando o botão direito do mouse

RIA, Macromedia Flex e Laszlo Presentation Server

Inserir dados no ASP via formulário no Flash.
Magnetism3

Giro de duende

Munu ampliando

Spiral show

MovieClip.onCollision

Hitest eat

Worms 3d

Duas casas decimais

Outlines

Altex

Troca cor de fundo

Pista de corrida
HOME | TUTORIAIS
Entendendo como funciona um preloader. Terceira parte.
por Ricardo Takahashi

1 / 2 / 3

 

Dicas rápidas:

Preloader para arquivos externos

 

onClipEvent (load) {
   _parent.alvo.loadMovie("arquivo.swf");
   _parent.stop();
}

onClipEvent (enterFrame) {
   totalBytes = _parent.alvo.getBytesTotal();
   if (totalBytes>0) {
   bytesLoaded = _parent.alvo.getBytesLoaded();
      if (bytesLoaded == totalBytes) {
         _parent.play();
      }
   }
}

A lógica aplicada aqui é bem simples: Ao invés de se pegar o total de bytes do movie externo no evento load do movieclip, nós o fazemos no evento enterframe. O erro do pessoal está justamente aqui: muitas costumam copiar-colar os códigos, mas não sabem exatamente como eles funcionam. Checar o total de bytes de um filme no evento load é quase que padrão para todo mundo, porém para arquivos externos isso não pode ser feito, pois o flash executa um bloco de informações muito rápido e antes que ele receba a informação de bytes, ele já passa para o próximo bloco de instruções. Então ao se verificar o tamanho de bytes de um arquivo externo, ele sempre resultará em 0.

    Outro dia até brinquei falando que isso era o cúmulo da velocidade: "Trancar a gaveta com a chave dentro". Mas essa é a verdade!!!

    Voltando ao código... repare que além de fazer a verificação das duas variáveis (bytesLoaded e bytesTotal) eu ainda faço uma verificação de condicional (if) para verificar se o valor de totalBytes é maior que 0 (zero), se for, significa que o preloader já tem as informações necessárias para fazer o carregamento.

    Para se aplicar isso em loadMovie para _levels apenas substitua o "_parent.alvo" por "_levelX", onde X é o número do level.

Preloader de multiplos arquivos simultaneamente

Outra dúvida comum do pessoal, mas fácil de ser contornada. Com base no exemplo anterior, basta adicionar mais algumas variáveis para verificação. Simples! =))

 

onClipEvent (load) {
   _parent.alvo1.loadMovie("arquivo1.swf");
   _parent.alvo2.loadMovie("arquivo2.swf");
   _level2.loadMovie("arquivo3.swf");
   _parent.stop();
}

onClipEvent (load) {
   partBytes1 = _parent.alvo1.getBytesTotal();
   partBytes2 = _parent.alvo2.getBytesTotal();
   partBytes3 = _level2.getBytesTotal();
   if (partBytes1>0 && partBytes2>0 && partBytes3>0) {
      bytesLd1 = _parent.alvo1.getBytesLoaded();
      bytesLd2 = _parent.alvo2.getBytesLoaded();
      bytesLd3 = _level2.getBytesLoaded();
      totalBytes = partBytes1+partBytes2+partBytes3;
      bytesLoaded = bytesLd1+bytesLd2+bytesLd3;
      if (bytesLoaded == totalBytes) {
         _parent.play();
      }
   }
}

 Mesma explicação para o exemplo anterior, ressaltando apenas a soma das variáveis para verificação do carregamento total ou parcial dos arquivos.

Nota: Para ambos os exemplos, caso você queira parar a execução do arquivo externo, basta inserir um stop() na primeira verificação de condicional direcionando para o alvo. Por exemplo, para parar a execução do filme carregado no movieclip alvo, basta adicionar _parent.alvo.stop(). Não se esqueça de adicionar um play depois para poder executar o filme!!!

  Preloader com arquivos sendo exportados na biblioteca do flash

Na verdade você não consegue fazer isso, porém, pode utilizar um técnica bem simples para driblar esse problema.

    Antes de explicar isso, gostaria de falar sobre uma das minhas "teorias" para se contornar esse problema:

    "Eu recebi alguns emails de pessoas que estavam tendo este tipo de problema, como fazer o preloader funcionar quando você tinha objetos sendo exportados na biblioteca. Claro que pintou uma super "teoria" (que depois de racicionar mais, vi que eu tava falando um monta de besteira!!!)

    Bom, minha idéia era que, se todos os objetos que estão na biblioteca são carregados antes de qualquer (qualquer coisa mesmo) outro item do filme, você poderia criar um movieclip "preloader" dentro de outro movieclip, para que, ao ser carregado, ele executasse o loader do filme. Claro que em teoria isso é "brilhante" porém, para anexar o movieclip no stage era preciso utilizar AS para tal. Porém, o AS deveria ficar no frame 1. Aí estava o problema... Para executar o maldito frame 1 ele teria que carregar todos os outros itens primeiro.

    Que burrice a minha!!! Até peço desculpas para o pessoal que me perguntou sobre isso e eu passei essa informação!!!

    Agora voltando ao que interessa: Eu pensei em duas soluções para o caso (uma para o Flash 5 e outra para o MX - que se você contar bem podem ser até 3, pois o do flash 5 também funciona no MX :)) !!!).

Flash 5

Como o flash 5 não permite escolher se você quer exportar o filme no primeiro frame ou não, você pode simplesmente utilizar o código para carregamento de arquivos múltiplos (mostrados aqui neste tutorial) para ter esse valor.
    Ao invés de você exportar esses objetos no seu filme principal, você apenas precisa escolher a opção de importar (na opção "Linkage") o objeto de outro arquivo swf (Uma sugestão minha: biblioteca.swf). No código do preloader você utiliza duas variáveis, uma pegando o valor de bytes (total e recebidos) do filme principal e outro do filme externo (biblioteca.swf).

    Eis uma ilustração prática disso que eu falei:

 

onClipEvent(load){
     _level99.loadMovie("biblioteca.swf");
    _parent.stop ();
}

onClipEvent
(enterFrame) {
    partBytes = _level99.getBytesTotal();

    if (partBytes> 0) {
        bytesLd = _level99.getBYtesLoaded();
        totalBytes = partBytes + _parent.getBytesTotal();
        bytesLoaded = bytesLd + _parent.getBYtesLoaded();
        if (bytesLoaded == totalBytes) _parent.play();
    }
}

Se pintar dúvidas como exportar/ compartilhar objetos entre swf's, abra o flash e pressione F1!!!

Flash MX

Além da opção anterior, no flash MX você utilizar algo mais simples:

    Na opção de exportar no primeiro frame ou não, basta não selecionar a opção "export in first frame". No seu filme flash a única alteração que você vai precisar fazer é abrir um novo frame no seu filme. Uma boa dica seria deixar: no primeiro frame o preloader, no segundo frame os itens da biblioteca que você vai utilizar dinamicamente e do terceiro frame em diante você começa seu filme.

    Ah! Claro, no seu preloader, ao invés de dar um play() quando estiver tudo carregado, você precisa direcionar para o frame (gotoAndPlay ou gotoAndStop) após o frame que contém os objetos.

Considerações finais

Acredito que agora você poderá montar seu próprio preloader. Porém, algumas coisas importantes devem ser ressaltadas.

    1. Esse nosso tutorial foi desenvolvido todo ele dentro de um movieclip. Porém, nada impede que você o faça na timeline principal.
    Basta alterar o código do preloader. Veja um exemplo:

1° frame
total = getBytesTotal();

2° Frame
loaded = getBytesLoaded();

3° Frame
(total == loaded) ? play() : gotoAndPlay(2)

As outras opções seguem esse mesmo exemplo. Não é mais necessário utilizar _parent ou _root, pois a função getBytesTotal() e getBytesLoaded() vai retornar os bytes da timeline as quais estão subordinados.

    2. Você deve ter em mente que o preloader é a primeira coisa que vai aparecer no seu site, portanto, não adianta criar um preloader cheio de animações e efeitos e deixá-lo "pesado", pois o carregamento dessas animações se fará de forma gradual e poderá causar um péssimo efeito visual. Além de causar aquele "vazio" antes do preloader começar.

    3. Para alterar comando if com uma única linha, caso você sinta a necessidade de adicionar outros comandos na mesma condicional, basta adicionar o { e iniciar uma nova linha, finalizando sempre o bloco com o sinal }.

    Ex.: if (a > b) {
              // faça isso
              // depois aquilo
          }

    4. Caso você venha a utilizar esse preloader com objetos exportados na biblioteca, tenha em mente que os nomes (identificadores) do objeto precisam ser idênticos ou do contrário isso não vai funcionar!

    5. Os comandos e exemplos para downloads apresentados aqui se referem a flash 5.

clique aqui e pegue o exemplo do preloader completo.

Caso você tenha alguma dúvida em relação a este tutorial, entre em contato com o autor.

 



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 Derick
| 30/12/2010 - 17:21 |


show d+.. muito bem explicado..! meu agradecimentos..