Comunidad de diseño web y desarrollo en internet online

AS3.Implementar clase de XML ?????????

Citar            
MensajeEscrito el 12 Nov 2010 12:33 am
Hola Amigos de Cristalab!!

Junto con una amiga y super programadora hicimos una clase para cargar archivos XML, el problema esta en la implementación, puedo ver los trace que vienen desde la Clase pero no puedo acceder al contenido del XML como tal, espero me puedan ayudar, de antemano gracias! :lol:


Clase para cargar XML

Código ActionScript :

package 
{
   /**
    * Clase para controlar XML
    * Noviembre 2010
    * @author Ismael Cruz Procel
    */
   
   import flash.events.EventDispatcher;
   import flash.net.URLRequest;
   import flash.net.URLLoader;
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.xml.XMLDocument;
   
   public class XMLclass extends EventDispatcher
   {
      //Variables de clase, las puedes usar en todas las funciones que declares dentro de esta.
      
      public var xmlDoc:XML = new XML; // guardas el XML del archivo que le pasas
      private var urlLoader:URLLoader = new URLLoader(); //carga el archivo xml segun el nombre que le des.
      public var myXML:XML;//
      public var numAtomos;//
      //public var xmlDoc;
      

      //Funcion constructora, recibe un String con el nombre del archivo XML
      function XMLclass(myXML:String ):void 
      {
         //Escuchador que te dice cuando termino de cargar el xml, a que funcion te lleva.
         urlLoader.addEventListener(Event.COMPLETE, fXmlLoaded);
         
         //Carga el archivo xml segun el String que le pasas.
         //Me salto el paso de crear una variable URLRequest y lo meto ahi mismo.
         urlLoader.load(new URLRequest(myXML));
      }

      //Manejador del termino de carga del archivo xml
      public function fXmlLoaded(e:Event):void
      {
         //Capto el xml
         xmlDoc = new XML(e.target.data);

         //Ya que tengo mi variable en XML, puedo buscar el nodo que quiera o la longitud de los nodos.
         numAtomos = xmlDoc..Atomos.Atomo.length();
         //trace(numAtomos);
         

         
         for (var k:Number = 0; k < numAtomos; k++) 
         {
            //trace(xmlDoc..Atomos.Atomo[k].NombreAtomo);
         }

      }
   }
}




Y asi la implemento

Código ActionScript :

var manejoXML:XMLclass=new XMLclass("Molecula.xml");


trace(manejoXML); //Obtengo los resultados de los trace de la clase

trace(manejoXML.length); // Obtengo Error 1119 Acceso a una propiedad posiblemente no definida




Mil gracias por su ayuda!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 12 Nov 2010 02:40 am
Pues esta mal porque no existe la propiedad length dentro de tu Clase XMLclass. No puedes sencillamente acceder a métodos internos salvo que los declares como tal.

Al igual que no tienes que definir en público funciones internas de la clase.

Yo haría:

Código ActionScript :

public function get length():Number{
   return numAtomos;
}


También necesitarías cambiar:

Código ActionScript :

public function fXmlLoaded(e:Event):void 

Por:

Código ActionScript :

private function fXmlLoaded(e:Event):void


Además, es prioritario cuando programas en OOP declarar las variables. Como en el caso:

Código ActionScript :

  public var numAtomos;// 


Debería ser:

Código ActionScript :

 private var numAtomos:Number;


Tampoco borras nunca el listener del Event.COMPLETE.

Código ActionScript :

 urlLoader.removeEventListener(Event.COMPLETE, fXmlLoaded); 


En fin... ¿Sabes algo de OOP? Yo primero leería a fondo sobre el tema, porque puedo seguir citandote problemas jaja.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox

 

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