Jump to content


Photo

"ifframeloaded" No Flash Cs3


  • Faça o login para participar
1 reply to this topic

#1 Eduardo Dall Accua

Eduardo Dall Accua

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 23/01/2009, 01:39

Pessoal, quando eu exporto apenas para preview a animação, aparece a seguinte mensagem de erro:

"A script in this movie is causing Flash Player to run slowly... Do you want to abort the script?" -> Clico em SIM e o filme roda.

Eu não tenho certeza se é o tamanho do filme ou se é algo errado que eu fiz!

Vamos lá. Tenho duas CENAS. Na CENA_1 tenho duas camadas, só interessa a primeira camada que é onde eu tenho meu pre-loader. Esse meu pre-loader são 11 imagens (png) que eu fiz como se fosse a porcentagem (0, 10, 20 ... 100.png). Eu inseri na layer uma imagem a cada 5 frames. Mas coloquei uma ação antes de cada imagem, além da ação que fica na imagem. Exemplo:

-- Camada1 (chamada de "animacao")

-Frame1

Possui a imagem "0.png"
ação:

ifFrameLoaded ("site", 1) {
gotoAndPlay ("animacao", 6);
}
========================================
-Frame5

ação:

gotoAndPlay("animacao", 1);
========================================
-Frame6

Possui a imagem "1.png"
ação:

ifFrameLoaded ("site", 10) {
gotoAndPlay ("animacao", 11);
}
========================================
-Frame10

ação:

gotoAndPlay("animacao", 5);
========================================
-Frame11

possui a imagem "2.png"
ação:

ifFrameLoaded ("site", 20) {
gotoAndPlay ("animacao", 16);
}
========================================
-Frame51

possui a imagem "10.png"
ação:

ifFrameLoaded ("site", 100) {
gotoAndPlay ("site",1);
}


No término do filme da CENA_1, vai para a CENA_2 (uma camada chamada "site") onde tem uma interpolação de forma apenas de 100 frames.

Estou usando Flash CS3 e sei que a "ifFrameLoaded" deprecated. Mas e ai? Como usar uma nova e qual é a nova? Ou é possível arrumar esse meu exemplo de pre-loader?


Estou subindo uma imagem que eu fiz de 3 telas minha. Espero que ajude no entendimento.

Obrigado desde já!

Eu pergunto ... eu respondo!! O importante é o resultado!

Bom, o que eu fiz de errado foi na penultima linda dessa action:

=====================
-Frame51

possui a imagem "10.png"
ação:

ifFrameLoaded ("site", 100) {
gotoAndPlay ("site",1);
}
=====================

O certo é

=====================
goto ("site",1);
=====================

Bom pessoal, acho que pelo menos serviu para eu aprender e quem sabe você a fazer um pre-loader com imagens estáticas.

Abraços!!

Attached Files



#2 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 18/02/2009, 11:38

Vixi.

Eu nã sei se entendi direito o que vc quer fazer, mas se eu entendi - SE eu entendi - o que você quer é muito simples em termos de matemática.

Você quer fazer um preloader que seja uma animação, quadro a quadro e que ele avance essa animção conforme a porcentagem atualiza, certo?
Isso de colocar uma série de actions em cada quadro é uma solução muito difícil de manter. Imagine se vc tem uma sequência de 300 imagens? hahahauh. Aí estava bem encrencado hein? Você pode ter uma animação de 328 quadros que vai sendo executada em função de um número de 0 a 100%.

Já que vc resolveu usando frameLoaded, vou postar aqui para que alguém, se precisar no futuro, faça um preloader de um número "n" de quadros na animação e transponha isso para valores em porcentagem.

Os códigos para porcentagem eu vou presumir que você já saiba, já que qualquer preloader precisa de uma porcentagem. (E aqui é o grande salto porque você não vai ficar fazendo "se o frame carregou vá para quadro 'x'").

Cada imagem estática da animação fica em um quadro. Ou seja, 25 imagens, 25 quadros. Não tem porque ser diferente....

Então o código é:

this.onEnterFrame = function():Void {
   var numFrames:Number = 25; // aqui é o número de frames que sua animação tem. O exemplo é de 25 frames...
   var pct:int = Math.round((pr.bytesLoaded / pr.bytesTotal) * 100);
   var quadroTarget:Number = Math.round((pct * (numFrames/100)) + 1); // somo '1' ao cálc
   // Supondo que a sua animação de loading tem nome de instância 'animacao_mc', você vai dar um gotoAndStop para o quadro correspondente à   
   // porcentagem do carregamento
   animacao_mc.gotoAndStop(quadroTarget);
   if (pct >= 100) {
	  delete this.onEnterFrame;
	 // aqui você coloca o que vc vai fazer quando tudo carregar... Algo como um gotoAndPlay ou um visible, etc.
   }
}

Eu não tenho certeza que está funcionando perfeito pois escrevi direto aqui no"resposta rápida" e não testei. Mas deve funcionar.

Abraços.

pp




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq