Comunidad de diseño web y desarrollo en internet online

Cargando elementos externos runtime con vários XML

Citar            
MensajeEscrito el 05 Mar 2010 03:44 pm
Estoy cargando imágenes con dos XMLs diferentes y sendos botones todo hecho runtime. Cuando clico uno de los botones las imágenes correspondientes son cargadas correctamente pero al clicar el otro botón las imágenes se superponen con las anteriores em lugar de substiuirlas. Aprendí que dos imágenes no pueden compartir um loader porqué será que esto está ocurriendo?

Código ActionScript :

// Button btn1;
// Button btn2;

// INICIALIZACIONES Y VARIABLES

var aCarregadores:Array = new Array();
var aContainers:Array = new Array();
var iniY:Number = 20;
var step:Number = 120;

var ldrXML:URLLoader = new URLLoader();
ldrXML.dataFormat = URLLoaderDataFormat.TEXT;

var xmlImagens:XML; 

// LISTENERS

ldrXML.addEventListener( Event.COMPLETE, ldrXML_COMPLETE );
btn1.addEventListener(MouseEvent.CLICK, btn1_CLICK);
btn2.addEventListener(MouseEvent.CLICK, btn2_CLICK);

// FUNCIONES DE EVENTOS

function btn1_CLICK(e:MouseEvent):void
{
   ldrXML.load( new URLRequest("xml/imagens.xml") );
}

function btn2_CLICK(e:MouseEvent):void
{
   ldrXML.load( new URLRequest("xml/imagensswf.xml") );
}

function ldrXML_COMPLETE ( evento:Event ):void

{
   xmlImagens = new XML ( evento.target.data ) 
   mostrarImagem(); 
}


// FUNCIONES

function mostrarImagem():void
{
   for ( var i:int = 0; i<xmlImagens.imagem.length(); i++ )
   {
      aCarregadores[i] = new Loader();
      aContainers[i] = new Sprite();
      aContainers[i].x = 50;
      if ( i == 0 )
      {
         aContainers[i].y = iniY;
      }
      else
      {
         aContainers[i].y = aContainers[i-1].y + step;
      }
      this.addChild( aContainers[i] );
      aContainers[i].addChild(aCarregadores[i]);
      aCarregadores[i].load( new URLRequest ( xmlImagens.imagem[i] ) );
   }
}


Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Mar 2010 08:26 pm
antes de comenzar con el ciclo for intenta

Código ActionScript :

this.removeAllChildren()

prueba y nos comentas

Por rubencho176

Claber

301 de clabLevel

3 tutoriales

 

Colombia

firefox
Citar            
MensajeEscrito el 05 Mar 2010 10:18 pm
Rubencho, solucioné criando una función para "limpiar" los loaders antes de las cargas subsiguientes de esta forma:

Código ActionScript :

function descarregar():void
{
   for ( var i:int = 0; i<numCarregadores; i++ )
   {
      aCarregadores[i].unload();
   }
   mostrarImagem();
}


Coloqué un boolean llamado clicado inicialmente definido como false. Cuando se hace el primer ciclo lo fefino como true. A partir de allí la función descarregar será siempre llamada;
numCarregadores es una variable que guarda la cantidad de loaders del ciclo anterior.

De la forma que vos sugeriste me parece que no dá. De todas formas muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

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