Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lud-RP

Carregar imagem no Flash CS3

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.