Ir para conteúdo

POWERED BY:

Arquivado

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

eronventer

[Resolvido] Carregamento de imagem externa

Recommended Posts

Ae galera!!

 

Estou carregando um imagem externa, essa imagem vem de um arquivo XML, mas eu preciso resgatar

a altura e a largura da imagem, como eu faria isso?

 

loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer funcionar, mas em partes...isso pq o posicionamento esta acontecendo somente a partir do segundo registro do XML...pq será?

 

var loadPeq:Loader = new Loader();
		
loadPeq.contentLoaderInfo.addEventListener(Event.COMPLETE, function(){
     produto.foto.x = (produto.fundo.width-produto.foto.width)/2;
     produto.foto.y = (produto.fundo.height-produto.foto.height)/2;
});
		
loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque no event INIT não no complete ;)

 

E para ficar mais organizadinho faça assim:

var loadPeq:Loader = new Loader();
 
loadPeq.contentLoaderInfo.addEventListener(Event.INIT, onLoadInit);
function onLoadInit(Event){
produto.foto.x = (produto.fundo.width-produto.foto.width)/2;
produto.foto.x = (produto.fundo.height-produto.foto.height)/2;
}
 
loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);
Abraços ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

var loadPeq:Loader = new Loader();
                
loadPeq.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoader);

function handleLoader(e:Event):void {
     produto.foto.x = (e.currentTarget.content.width)/2;
     produto.foto.y = (e.currentTarget.content.height)/2;
}
                
loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);

Coloque no event INIT não no complete ;)

Event.INIT só faz sentido se você estiver carregando um swf, já que este é disparado especialmente para se ter acesso aos métodos e funções do swf externo sem que ele tenha sido totalmente carregado necessariamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

brunobispo,

 

Da maneira que você falou funciona normalmente também, porém o posicionamento tbm ocorre somente a partir do segundo registro do XML, muito doido isso...mas dai me veio uma luz e dei uma alterada na função e funcionou!!

 

function handleLoader(e:Event):void 
{
	e.currentTarget.content.x = (produto.fundo.width-e.currentTarget.content.width)/2;
	e.currentTarget.content.y = (produto.fundo.height-e.currentTarget.content.height)/2;
}

Muito obrigado pela ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

var loadPeq:Loader = new Loader();
 
loadPeq.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoader);

function handleLoader(e:Event):void {
 produto.foto.x = (e.currentTarget.content.width)/2;
 produto.foto.y = (e.currentTarget.content.height)/2;
}
 
loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);

Event.INIT só faz sentido se você estiver carregando um swf, já que este é disparado especialmente para se ter acesso aos métodos e funções do swf externo sem que ele tenha sido totalmente carregado necessariamente.

 

Só para maiores informações.

O evento INIT é chamado somente depois do COMPLETE, ele serve para pegar informações do conteudo como, tamanho e outras configurações que você possa procurar saber, não importa se é jpg ou SWF, só nesse evento que você pega os dados.

 

O Complete você também tem acesso a esses dados

Eis aqui um exemplo:

var loader:Loader = new Loader();

loader.load(new URLRequest('index.jpg'));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);

function onComplete(e:Event):void{
 trace('Event.Complete');
 trace(e.currentTarget.content.x);
 trace(e.currentTarget.content.width);
}

function onInit(e:Event):void{
 trace('Event.Init');
 trace(e.currentTarget.content.x);
 trace(e.currentTarget.content.width);
}

addChild(loader);

O que você vai ver é que o evento INIT é chamado antes do evento COMPLETE

Assim você dependendo da quantidade de coisas carregadas ao mesmo tempo, pode tornar o processo do que você está fazendo mais rápido, ou mais lento.

 

Basta você decidir o que você quer fazer, cada evento tem suas caracteristicas e seus bubbles ;) que podem ser usados de maneiras diferentes.

 

Apesar de aparentemente servirem para a mesma coisa.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

var loadPeq:Loader = new Loader();
 
loadPeq.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoader);

function handleLoader(e:Event):void {
 produto.foto.x = (e.currentTarget.content.width)/2;
 produto.foto.y = (e.currentTarget.content.height)/2;
}
 
loadPeq.load(new URLRequest("/upload/produtos/grd/"+listaDados[i].foto));
produto.foto.addChild(loadPeq);

Event.INIT só faz sentido se você estiver carregando um swf, já que este é disparado especialmente para se ter acesso aos métodos e funções do swf externo sem que ele tenha sido totalmente carregado necessariamente.

 

Só para maiores informações.

O evento INIT é chamado somente depois do COMPLETE, ele serve para pegar informações do conteudo como, tamanho e outras configurações que você possa procurar saber, não importa se é jpg ou SWF, só nesse evento que você pega os dados.

 

O Complete você também tem acesso a esses dados

Eis aqui um exemplo:

var loader:Loader = new Loader();

loader.load(new URLRequest('index.jpg'));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);

function onComplete(e:Event):void{
 trace('Event.Complete');
 trace(e.currentTarget.content.x);
 trace(e.currentTarget.content.width);
}

function onInit(e:Event):void{
 trace('Event.Init');
 trace(e.currentTarget.content.x);
 trace(e.currentTarget.content.width);
}

addChild(loader);

O que você vai ver é que o evento INIT é chamado antes do evento COMPLETE

Assim você dependendo da quantidade de coisas carregadas ao mesmo tempo, pode tornar o processo do que você está fazendo mais rápido, ou mais lento.

 

Basta você decidir o que você quer fazer, cada evento tem suas caracteristicas e seus bubbles ;) que podem ser usados de maneiras diferentes.

 

Apesar de aparentemente servirem para a mesma coisa.

 

Abraços

 

http://forum.imasters.com.br/index.php?/topic/368366-artigo-eventcomplete-ou-eventinit/

 

E me desculpem se fui off-topic demais.

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.