Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
salve salve.
Não sou programador flash, mas quando preciso quebro um galho http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
Foi o que aconteceu esta semana, precisei criar um "sistema" onde ao entrar no site, o flash carregue aleatoriamente uma das 16 imagens que estão na pasta "xx"
Depois de xx tempos, ele muda a imagem com uma transição.
bom.
Tudo funcionou muito bem e meu arquivo .swf ficou com 7kb
mas quando eu fui testar no meu servidor de hospedagem, observei que as imagens demoram um pouco para aparecer, ou seja, ele está carregando a imagem e só depois aparece.. mas como eu não havia preparado o projeto para isso, ele ficou com fundo branco, atraza a transição.. enfim.. não ficou muito legal.
Eu dei uma pesquisada mas não consegui encontrar... precisava fazer o flash carregar a imagem em questão e só depois exibir, e na hora de fazer a transição, só fazer a transição depois que a imagem estiver carregada.
Meu projeto está da seguinte forma:
um movieclip em branco com a instancia: mc_back;
e um movieclip com a instancia: animacao onde dentro deste movie clip exite outro movie clip chamado mc_foto e algumas animações que fazem a transição.
No 1 Frame do palco principal tenho o seguinte:
CODE
stop();
_global.imagem = "";
numero = int(Math.random()*15);
numero = numero + 1;
if(_global.imagem == ""){
_global.imagem = "fotos_topo/faixa" + numero + ".jpg";
}
mc_back.onEnterFrame = function(){
mc_back.loadMovie(_global.imagem);
}
function Inicia(){
play();
clearInterval(inicial);
}
inicial = setInterval(Inicia, 10000);
bom.. depois disso no frame 3 eu tenho um STOP(); e o MovieClip animacao.
Dentro do movieclip animacao tenho apenas um frame com o seguinte código:
CODE
stop();
totalBytes = 0;
function montaImagem(){
numero = int(Math.random()*15);
numero = numero + 1;
loadMovie("fotos_topo/faixa" + numero + ".jpg",mc_fotos); //carrega no MovieClip mc_fotos a imagem gerada aleatóriamente
}
mc_fotos.onEnterFrame = montaImagem;
function montaSegunda(){
montaImagem();
_root.animacao.mask_animacao.play(); //da play na transição
_root.animacao.mask_animacao2.play(); //play na transição
clearInterval(intervalo);
}
function setMontagem(){
_root.mc_back.loadMovie("fotos_topo/faixa" + numero + ".jpg", mc_back); //carrega uma imagem no mc_back
intervalo = setInterval(montaSegunda,2000);
}
setInterval(setMontagem,20000);
Bom.. basicamente eu queria que. ele só executasse a transição depois de o arquivo estar carregado.
Acho que ta meio confuso, mas tentem entender, se não conseguirem pergunte que ajudo!!
http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Valeu
>
Amigo, está utilizando AS2?
Se sim, utilize a classe MovieClipLoader, com o método loadClip para carregar o conteúdo.
Daí com esssa classe você pode utilizar um listener e gerenciar o progresso de carregamento do arquivo, permitindo o carregamento da proxima imagem...
Abs.
Weverton, vamos com calma
ehehehe
Bom.. estou utilizando o Flash CS3 mas com AS 2.0.
Eu não tenho interesse em exibir nenhuma barra indicando o carregamento.
acessa o meu site e vê lá o que está acontecendo: http://www.lojacenterpisos.com.br
o FLA pode ser baixado em: http://www.lojacenterpisos.com.br/flashSuperior.fla
Se observar vai ver que ao abrir o site a parte do flash vai ficar toda branca e depois aparece uma imagem.
depois de um tempo, 10 segundos, ele inicia uma transição... provavelmente vai ver uma barra branca com alpha correndo da esquerda para a direita.. e no meio da tela (depende da velocidade da internet) ele vai trocar a imagem e acontecer a transição como deveria ser...
se você deixar o site aberto por 1 minuto +- vai ver como deveria ser a transição correta (caso todas as imagens já tivessem sido carregadas).
Ahh.. mais uma coisa Weverton, poderia explicar melhor como eu poderia fazer utilizando os métodos que disse?
Como falei não sou um programador experiente em flash, apenas me esforço para quebrar uns galhos quando preciso..
Lógica de programação agente se vira, mas a forma correta de utilizar os métodos fica dificil!!
=D
vlew
Então, não precisa de exibir mensagens de carregando.
MAs você pode utilizar mais ou menos assim:
var myMCloader:MovieClipLoader = new MovieClipLoader();
var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
//libera o carregamento do proximo
}
myMCloader.addListener(loadListener);
myMCloader.loadClip("meufilme.swf",alvo);Eu coloco essa ação no movie clip correto?? ou no Frame??
No frame amigo.
Weverton,
fiz o que disse, no frame coloquei:
CODE
stop();
var myMCloader:MovieClipLoader = new MovieClipLoader();
var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
setInterval(setMontagem,20000);
}
var myMCloader2:MovieClipLoader = new MovieClipLoader();
var loadListener2:Object = new Object();
loadListener2.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
intervalo = setInterval(montaSegunda,2000);
}
function montaImagem(){
numero = int(Math.random()*15);
numero = numero + 1;
myMCloader.addListener(loadListener);
myMCloader.loadClip("fotos_topo/faixa" + numero + ".jpg", mc_fotos);
}
mc_fotos.onEnterFrame = montaImagem;
function montaSegunda(){
montaImagem();
_root.animacao.mask_animacao.play();
_root.animacao.mask_animacao2.play();
clearInterval(intervalo);
}
function setMontagem(){
myMCloader2.addListener(loadListener2);
myMCloader2.loadClip("fotos_topo/faixa" + numero + ".jpg",_root.mc_back);
trace("Passou das variáveis de load");
}
Mas veja o resultado: Site com o SWF
Ele continua demorando para carregar, ele ta chamando o setinterval msmo antes de carregar a imagem.
Então amigo.
Tome cuidado com esse onEnterFrame:
mc_fotos.onEnterFrame = montaImagem;
Com isso, ele vai estar executando a função a todo momento....
Tente arrancar isso. tanto do primeiro codigo, quanto do segundo.
Chame a função de uma outra maneira.
Amigo, está utilizando AS2?
Se sim, utilize a classe MovieClipLoader, com o método loadClip para carregar o conteúdo.
Daí com esssa classe você pode utilizar um listener e gerenciar o progresso de carregamento do arquivo, permitindo o carregamento da proxima imagem...
Abs.