Comunidad de diseño web y desarrollo en internet online

Problema para instanciar variables

Citar            
MensajeEscrito el 28 Mar 2009 03:26 pm
Hola, estoy haciendo una clase usando AS2 pero me ha surgido un problema al intentar agregar un valor dentro de un evento el codigo es el siguiente:

Código :

import mx.transitions.Tween; 
import mx.utils.Delegate;

class ciencias.CrearAnimales
{  
   private var loader_mcl:MovieClipLoader; 
   private var movie_mc:MovieClip; 
   private var animales:Array;
   private var matriz:Array=new Array();
   private var my_xml:XML;
   private var num:Number;
   function CrearAnimales(clip:MovieClip)
   {
      this.movie_mc=clip;
      
      this.loader_mcl = new MovieClipLoader(); 
       this.cargarAnimales();
//CUANDO VISUALIZO EL VALOR 0 DE LA MATRIZ EN ESTA FUNCION EL RESULTADO ES undefined
      trace(matriz[0]);
      var numeros:Array= new Array(0+random(8),9+random(17),27+random(5));
       for(var i:Number=1;i<=3;i++)
      {
         this.movie_mc.createEmptyMovieClip("animal_swf"+i, this.movie_mc.getNextHighestDepth()); 
         this.movie_mc["animal_swf"+i].createEmptyMovieClip("load", 0); 
        this.movie_mc["animal_swf"+i].owner = this; 
         this.movie_mc["animal_swf"+i]._x = 150*i; 
         this.movie_mc["animal_swf"+i]._y = 300; 
       this.movie_mc["animal_swf"+i]._xscale = 25; 
         this.movie_mc["animal_swf"+i]._yscale = 25; 

      }
   }
   public function cargarAnimales()
   { 
      this.my_xml=new XML();
      this.my_xml.ignoreWhite=true;
      this.my_xml.load("ciencias/archivo.xml");
      this.my_xml.onLoad = Delegate.create(this, cargaXML);
   }
   function cargaXML()
   {
      var agua:Array=new Array();      
      var tierra:Array=new Array();      
      var aire:Array=new Array();    
      num=5;
      for(var i:Number=0;i<this.my_xml.childNodes.length;i++)
      {
         if(this.my_xml.childNodes[i].childNodes[0].childNodes[0].nodeValue=="agua")
         {
            agua.push({src:this.my_xml.childNodes[i].childNodes[3].childNodes[0].nodeValue, dieta:this.my_xml.childNodes[i].childNodes[1].childNodes[0].nodeValue, nacimiento:this.my_xml.childNodes[i].childNodes[2].childNodes[0].nodeValue});
         }
         if(this.my_xml.childNodes[i].childNodes[0].childNodes[0].nodeValue=="aire")
         {
            aire.push({src:this.my_xml.childNodes[i].childNodes[3].childNodes[0].nodeValue, dieta:this.my_xml.childNodes[i].childNodes[1].childNodes[0].nodeValue, nacimiento:this.my_xml.childNodes[i].childNodes[2].childNodes[0].nodeValue});
         }
         if(this.my_xml.childNodes[i].childNodes[0].childNodes[0].nodeValue=="tierra")
         {
            tierra.push({src:this.my_xml.childNodes[i].childNodes[3].childNodes[0].nodeValue, dieta:this.my_xml.childNodes[i].childNodes[1].childNodes[0].nodeValue, nacimiento:this.my_xml.childNodes[i].childNodes[2].childNodes[0].nodeValue});
         }
      }
//EN ESTA PARTE AGREGO LOS VALORES AL ARRAY matriz
      matriz.push(aire[0+random(aire.length-1)]);
      matriz.push(tierra[0+random(tierra.length-1)]);
      matriz.push(agua[0+random(agua.length-1)]);


      for(i=1;i<=3;i++)
      {
         this.loader_mcl.loadClip( "ciencias/animales/"+matriz[i-1].src, _root["animal_swf"+i].load ); 
//SI LO VISUALIZO DENTRO DE ESTA FUNCION ME MUESTRA EL RESULTADO
                       trace(matriz[i-1]);
      }
   }
}


les agradeceria si fueran tan amables de ayudarme con este problema muchas gracias.
Muchas gracias!.

Por Diego Fernando

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Mar 2009 01:09 am
No da muchos detalles sobre que evento y que valor, pero bueno U_U

Mira ahi donde dices que da undefined se debe a que en ese momento el XML aun no esta cargado, cuando se ejecuta la funcion "cargaXML" es cuando ya tiene valor matriz[0], entonces, tienes que cambiar todo esto:

Código ActionScript :

 trace(matriz[0]);
      var numeros:Array= new Array(0+random(8),9+random(17),27+random(5));
       for(var i:Number=1;i<=3;i++)
      {
         this.movie_mc.createEmptyMovieClip("animal_swf"+i, this.movie_mc.getNextHighestDepth()); 
         this.movie_mc["animal_swf"+i].createEmptyMovieClip("load", 0); 
        this.movie_mc["animal_swf"+i].owner = this; 
         this.movie_mc["animal_swf"+i]._x = 150*i; 
         this.movie_mc["animal_swf"+i]._y = 300; 
       this.movie_mc["animal_swf"+i]._xscale = 25; 
         this.movie_mc["animal_swf"+i]._yscale = 25; 

      }


Eso va dentro de la funcion cargaXML

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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