Comunidad de diseño web y desarrollo en internet online

identificar contenido del Loader al cargar una imagen

Citar            
MensajeEscrito el 27 Ene 2011 06:04 pm
Hola,
una pregunta rápida, estoy cargando una sucesión de imágenes (cada una en un MovieClip Contenedor: tab_0...tab_n) con el Loader. Si no controlo la carga con llisteners y lo hago todo consecutivo no hay problema pero si hago el for y controlo la carga completa con la función listener 'imageLoaded' no puedo identificar que imagen estoy cargando para asignarle un Mc contenedor

Código ActionScript :

var sectionImage:MovieClip; 
for (var i:int = 0; i < sectionsInfo.length; i++) { 
   loadImage(sectionsInfo[i].imagePath,"tab_" + i.toString()); 
}//end 'for'

//FUNCTION: 
private function loadImage(_url:String,_imageLoader:String):void {
         
imageLoader = new Loader();
imageLoader.load(new URLRequest(_url)); 
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading); 
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);          
}
      
//FUNCTION: 
private function imageLoading(progressEvent:ProgressEvent):void {
   trace("Image is loading...." + progressEvent.toString()); 
}
      
//FUNCTION: 
private function imageLoaded(event:Event):void {
var sectionImage:MovieClip; 

sectionImage =MovieClip(tabMenuHolder.getChildByName("tab_"+index.toString()));//necesito saber este índice para saber en que clip cargar!!!
//sectionImage.categoryImageHolder.addChild(event.target.content);//-> Es la actual
}


Gracias! Un saludo

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Ene 2011 07:06 pm
BuenA:

Una solución rápida, create un diccionario:

Código ActionScript :

var dic:Dictionary = new Dictionary();

var sectionImage:MovieClip;  
for (var i:int = 0; i < sectionsInfo.length; i++) {  
   loadImage(sectionsInfo[i].imagePath,"tab_" + i.toString());  
}//end 'for' 
 
//FUNCTION:  
private function loadImage(_url:String,_imageLoader:String):void { 
          
imageLoader = new Loader(); 
dic[imageLoader] = _imageLoader;
imageLoader.load(new URLRequest(_url));  
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);  
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);           
} 
       
//FUNCTION:  
private function imageLoading(progressEvent:ProgressEvent):void { 
   trace("Image is loading...." + progressEvent.toString());  
} 
       
//FUNCTION:  
private function imageLoaded(event:Event):void { 
var sectionImage:MovieClip;  
 var imageLoader:String = dic[LoaderInfo(event.target).loader];
sectionImage =MovieClip(tabMenuHolder.getChildByName("tab_"+index.toString()));//necesito saber este índice para saber en que clip cargar!!! 
//sectionImage.categoryImageHolder.addChild(event.target.content);//-> Es la actual 
} 


En la variable imageLoader recupero el nombre que pasaste como 2º parámetro al llamara a la función que hace la precarga, que creo es lo que andas buscando.

He escrito directamente aquí, por lo que habrá alguna errata. Pero basicamente es crear un Dictionary, guardar en él el nombre que pasas como segundo parámetro, con la clave del loader que has creado, y en el método controlador del evento COMPLETE recupero este nombre del Dictionary gracias al loader.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Ene 2011 07:50 am
Pregunta:
¿Y no puedes añadir el Loader directamente al MC?

Código ActionScript :

for (var i:int = 0; i < sectionsInfo.length; i++) {   
   loadImage(i,sectionsInfo[i].imagePath,"tab_" + i.toString());   //<--le paso "i"
}
private function loadImage(_index:int,_url:String,_imageLoader:String):void {  //<--parámetro "_index
          
imageLoader = new Loader(); 
....
var mc:MovieClip=tabMenuHolder.getChildByName("tab_"+_index) 
mc.addChild(imageLoader) //<--lo añado
} 

NOTA:Deberías eliminar el listener ProgressEvent.PROGRESS y Event.COMPLETE en la función "imageLoaded"

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ene 2011 08:14 am
Ya, así sí funciona pero quiero controlar la carga o si se ha producido un error (i.e. no encuentra la URL....

Por emedmaria

73 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.