Ir para conteúdo

POWERED BY:

Arquivado

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

Mirth

Como fazer preloading de varias fotos!

Recommended Posts

Ola, eu quero carregar 5 ficheiro jpg dinamicamente, 1 de cada vez, mas quero que o preloading só acabe quando carregar as 5 imagens. Como consigo saber o getTotalBytes() de todos os ficheiros que quero carregar para depois fazer o tal preloader?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mirth você quer carregar 5 fotos, pq nau coloca dentro do fla principal já, e carrega tudo juntonau entendi muito bem <_<

não pode ser porque são sempre fotos diferentes carregadas dinamicamente..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, você precisa tomar um certo cuidado quando carregar uma imagem externa, pois pela lógica você vai pegar os bytesTotal() e bytesLoaded() do movieclip onde você vai descarregar a foto, e de inicio eles serão iguais, então você terá que fazer dessa maneira:

 

loadMovie("imagem.jpg", alvo);

 

Dai como você vai carregar mais de uma imagem o ideal é fazer uma função com parametros pra carregar a imagem. por exemplo:

 

function carrega(imagem, alvo){

loadMovie(imagem, alvo);

onEnterFrame = function(){

c = alvo.getBytesLoaded();

t = alvo.getBytesTotal();

if(c == t && c > 10){

delete onEnterFrame

}

}

}

 

ai para chamar a função você usa:

 

carrega("imagem.jpg", _root.mc);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, você precisa tomar um certo cuidado quando carregar uma imagem externa, pois pela lógica você vai pegar os bytesTotal() e bytesLoaded() do movieclip onde você vai descarregar a foto, e de inicio eles serão iguais, então você terá que fazer dessa maneira:loadMovie("imagem.jpg", alvo);Dai como você vai carregar mais de uma imagem o ideal é fazer uma função com parametros pra carregar a imagem. por exemplo:function carrega(imagem, alvo){ loadMovie(imagem, alvo);onEnterFrame = function(){ c = alvo.getBytesLoaded(); t = alvo.getBytesTotal(); if(c == t && c > 10){ delete onEnterFrame}}}ai para chamar a função você usa:carrega("imagem.jpg", _root.mc);

Obrigado pela atenção, mas não é bem essa ideia, é um pouco mais complicado..Eu disse cinco fotos como exemplo, a ideia é carregar fotos dinamicamente de um banco de dados, separados por galerias, o que quero é fazer preloadings para as miniaturas todas de uma galeria e depois carregar 1 a 1 mas com uma barra de progresso com o resultado do carreggamento total..Já pensei como fazer tudo, pensei em fazer um loop para carregar as fotos e já sei como fazer. COnsigo fazer o preloading para cada foto e carregar foto a foto, só não consigo fazer o preloading global..há alguma maneira de saber o total de bytes de um jpg externo sem o carregar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, faz assim, termina a sua galeria sem o preloader das imagens, quando estiver pronta você me passa só o código que usou pra fazer a galeria que eu te ajudo a fazer o preloader, não vou postar agora porque vai depender muito de como está carregando a imagem pra fazer o preloader dela, mas tem jeito sim, eu faço isso sempre

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, faz assim, termina a sua galeria sem o preloader das imagens, quando estiver pronta você me passa só o código que usou pra fazer a galeria que eu te ajudo a fazer o preloader, não vou postar agora porque vai depender muito de como está carregando a imagem pra fazer o preloader dela, mas tem jeito sim, eu faço isso sempre

A parte que carrega as miniaturas está +- feita, só ainda não carrega as imagens dinâmicamente e é assim:A função que carrega as imagens e que ainda estou a optimizar (se tiveres algum ajuste possivel agradeço) é assim;
//"ficheiro.jpg", "pasta/", altura da foto, largura da foto, MC de destino, ver detalhes?! 1 para sim//function loadimg(ficheiro, pasta, altura, largura, destino, detalhes) {	var meuMVL:MovieClipLoader = new MovieClipLoader();	meuMVL.loadClip(pasta+ficheiro, destino);	var meuListener:Object = new Object();	meuMVL.addListener(meuListener);	meuListener.onLoadInit = function(destino:MovieClip) {		if (detalhes == 1) {			daltura = destino._width+" pixels";			dlargura = destino._height+" pixels";			dsizeround = destino.getBytesTotal()/1024;			dsize = Math.round(dsizeround)+" KB";		}		destino._width = altura;		destino._height = largura;	};	meuListener.onLoadStart = function() {		loading = "A Carregar";	};	meuListener.onLoadComplete = function() {		loading = "Completo";	};	meuListener.onLoadProgress = function(alvo:Object, bLoad:Number, bTotal:Number) {		loading = Math.round(bLoad/bTotal*100)+"%";	};	meuListener.onLoadError = function() {		loadimg("logo.jpg", "/", altura, largura, destino, detalhes);	};}
para carregar as miniaturas é a seguinte:
//"pasta", altura da miniatura, largura da miniatura, MC de destino, detalhes?!, numero de colunas, distâcia das colunas, numero de linhas, distância das linhasfunction loadnails(pasta, altura, largura, destino, detalhes, colunas, distc, linhas, distl) {	mcinit = imagem_mc1._x;	mcinity = imagem_mc1._y;	npag = Math.ceil(totalRow/(linhas*colunas));	i = 1;	j = 1;	tppag = linhas*colunas;	while (i<=totalnails and i<=tppag) {		j++;		loadimg(this["thumb"+i], pasta, altura, largura, this["imagem_mc"+i], detalhes);		duplicateMovieClip(this["imagem_mc"+i], "imagem_mc"+j, this.getNextHighestDepth());		this["imagem_mc"+j]._x = this["imagem_mc"+i]._x+largura+distc;		if (i%colunas == 0) {			this["imagem_mc"+j]._y = this["imagem_mc"+i]._y+altura+distl;			this["imagem_mc"+j]._x = mcinit;		}		i++;	}}loadnails("galeria/", 100, 100, this["imagem_mc"+i], 2, 3, 10, 3, 20);
Isto de futuro vai receber toda a informação de um banco de dados, mas por enquanto só por experiência tenho as seguintes vars.thumb1 = "img1.jpg";thumb2 = "img2.jpg";thumb3 = "img3.jpg";thumb4 = "img4.jpg";thumb5 = "img5.jpg";thumb6 = "img6.jpg";thumb7 = "img7.jpg";thumb8 = "img8.jpg";thumb9 = "img9.jpg";totalRow = 19;totalnails = totalRow;E tenho criado um MC com o instance name de imagem_mc1 que será a que marca a posição inicial (não criei dinâmicamente para facilitar o posicionamento)Obrigado pela atenção :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra avisar que não esqueci do seu tópico, as coisas estão corridas no trabalho, acho que até amanhã no final do dia dou uma olhada nisso.

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra avisar que não esqueci do seu tópico, as coisas estão corridas no trabalho, acho que até amanhã no final do dia dou uma olhada nisso.abraço

Muito obrigado, entretanto estou quase a acabar a galeria de fotos, falta essa parte e agora coordenar com a base de dados que é o que estou a fazer agora.. depois mostro o aspecto final

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.