MANGOOST (80 pts)

IRAPUAN MARTINEZ (45 pts)

BÁRBARA TOSTES (64 pts)

DEMIS BUCCI (50 pts)

GUILHERME G.G. (137 pts)

MUZAK (45 pts)

JOTA LAGO (40 pts)

MARLOS ALVES CARMO (90 pts)

MARCELO SIQUEIRA (96 pts)

DANIELA PIRES (86 pts)

DAUTON JANOTA (255 pts)

ILVA RUDEV (90 pts)
Treinamento PontoFlash de Flash e ActionScript

Preciso que de um botão se abra uma nova mensagem no outlook?

Como posso mudar as propriedades de um movieclip de dentro dele?

Com o LocalConnection do FlashMX, posso enviar variáveis para outro SWF?

Como fazer uma arma móvel atirar um projétil verticalmente?

Por favor se faz máscara? Quero que sobre o meu texto passe um círculo mostrando o que está escrito.

Rodar movieclip invisível.

Como posso dessaturar uma foto para seus níveis de preto e branco?

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

Queria saber como fazer uma scrollbar (barra de rolagem) no flash.

Como posso fazer uma animação com um alfa aparecendo e sumindo com actions.

Quero que no mouseOver meu movieclip pare e no mouseOut ele se movimente.

Como eu simulo frames no Flash?

Como faço, caso o usuário não tenha o plugin do flash5.

Como determinar um tempo de pausa numa animação?
Aplicação simultânea de Fio e Sombra a bitmaps - Fireworks

Loop Mixer.

Pre-loader simples.

MC se movimenta ao contrario do mouse (velocidade, distância)

Movimento por meio de actionscript

Objeto Math.

Usando XML com Fireworks MX.

Objeto Movieclip - Endereçamento (segunda parte)

Conversão de Datas e Horas em Servers Estrangeiros (Flash+Asp).

Flash Intro - Aspectos Básicos do MX

Sistema de newsletter utilizando Flash + ASP

Botão Radio.
Drag simples

Imageviewer

Pintar

Fract1

Cursor customizado relativo

Movimento

Barra de navegação

Static

Motionblur

Duas casas decimais

Photo album

Esferas conectadas
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..