Mi logica es la siguiente...
Código :
class Terrenos{ // Declaro las propiedades de mi clase public var RutaXML:String = "lotes.xml" // Declaro las variables privadas private var xmlLotes:XML; // Declaro la funcion para cargar el XML private function CargarXML(){ // Configuro mi objeto XML xmlLotes = new XML(); xmlLotes.ignoreWhite(); // Cuando se cargue el XML... xmlLotes.onLoad = function(exito:Boolean){ // Si se cargo con exito... if(exito){ // Obtiene la cantidad de nodos var numLotes:Number = xmlLotes.firstChild.ChildNodes.length; // Extrae cada uno de los datos for(var i=0;i<numLotes;i++){ trace(xmlLotes.firstChild.ChildNodes[i].firstChild.nodeValue); } } } // Carga el documento XML xmlLotes.load(RutaXML); } // Declaro el constructor function Terrenos(){ CargarXML(); } }
de esta forma todo funciona bien a excepcion de cuando el documento XML se ha cargado, pues todas las funciones o sentencias que coloco dentro del for, es como si Flash no las tomara en cuenta, estube buscando por ahi y una solucion que me dio un amigo es la siguiente...
Código :
class Terrenos{ // Declaro las propiedades de mi clase public var RutaXML:String = "lotes.xml" // Declaro las variables privadas private var xmlLotes:XML; // Declaro la funcion para cargar el XML private function CargarXML(){ // Configuro mi objeto XML xmlLotes = new XML(); xmlLotes.ignoreWhite(); // Crea un objeto del mismo tipo que la clase var clon:Terrenos = this; // Cuando se cargue el XML... xmlLotes.onLoad = function(exito:Boolean){ // Utilizo el clon para llamar a una funcion clon.ExtraerDatos(exito); // Elimino el clon delete clon; } // Carga el documento XML xmlLotes.load(RutaXML); } // funcion para extraer los datos function ExtraerDatos(exito:Boolean){ // Si se cargo con exito... if(exito){ // Obtiene la cantidad de nodos var numLotes:Number = xmlLotes.firstChild.ChildNodes.length; // Extrae cada uno de los datos for(var i=0;i<numLotes;i++){ trace(xmlLotes.firstChild.ChildNodes[i].firstChild.nodeValue); } } } // Declaro el constructor function Terrenos(){ CargarXML(); } }
Como pueden ver lo que hago es crear un objeto del mismo tipo dentro de la funcion para que este llame a la funcion extraer datos, es correcto esto??, de esta forma funciona quiero aclarar, pero me interesa saber la razon por la cual no pueden ejecutarse funciones anidadas en un clase, por lo que he visto no me corren funciones anidadas mas alla de tres niveles.
Les agradesco mucho su atención y sus respuestas