Comunidad de diseño web y desarrollo en internet online

al convertir xml array me lo arroja vacio pero sin error que pasa?

Citar            
MensajeEscrito el 14 Oct 2011 12:55 am
Hola espero me puedan ayudar llevo 3 días con esto y no he podido resolverlo mi problema es el siguiente...

Al cargar un archivo xml externo no puedo lograr hacer un return, en la funcion que carga lo que me devuelve es una cadena array vacia, ni null, ni error, ni nada solo un espacio en blanco el único valor que me regresa es el trace que esta dentro de la función onCompleteXML y no se que pasa espero me puedan ayudar.

MI XML ES EL SIGUIENTE:


Código :

<?xml version="1.0" encoding="UTF-8"?>

<imagenes>  
  <img pag="0" src="luna1.jpg"/> 

  <img pag="1" src="luna2.jpg"/>  
 
</imagenes> 


MI CLASE ES LA SIGUIENTE :

Código :

   
   package{
   import flash.events.*;
   import flash.display.*;
   import flash.xml.*;
   import flash.net.URLLoader;
   import flash.net.URLRequest;

   
   
   
   public class Prueba {
      
      private var xmlExterno:XML;
      private var loader:URLLoader = new URLLoader();
      private var thumb:Number;
      private var esp_pag = 40;
      var miniaturas:Array= new Array();

      
      
      
      
      
      public function Prueba (){ 
      var prueba = this.obtieneMiniatura();
      trace(prueba);
   }
         
      
         
         
         
      public function obtieneMiniatura():Array{
         
         
         
          var ruta:URLRequest=new URLRequest("XML/imagenes.xml");// EL ARCHIVO ES APARTIR DEL .FLA

          loader.load(ruta);
          loader.addEventListener(Event.COMPLETE, onCompleteXML);
          
          
          function onCompleteXML(evt:Event):Array{
         
         

          var loader:URLLoader = evt.target as URLLoader;
         
         if(loader != null) {
         
         xmlExterno = new XML (loader.data);}
         
         else{ trace("no puedo cargar el archivo");}
         
         // TRAE LOS ATRIBUTOS DEL XML
         // THUMB MIDE LA CANTIDAD DE OBJETOS QUE TENEMOS
         
         thumb = xmlExterno.elements().length();
         
         
         
         
         for each (var miniatura:String in xmlExterno.img.attribute("src"))
      {
    miniaturas.push(miniatura);

      }
         trace(miniaturas) //este si me lo muestra
         return miniaturas   
         
      }     
               trace(miniaturas); // este me lo pinta blanco
         
                  return miniaturas   

                   
         
         }// termina funcion obtieneMiniatura
   
      }

   
   }


MI .FLA :


Código ActionScript :

import Prueba;

var miniatura:Prueba = new Prueba();





LES AGRADESCO MUCHO Y ESPERO ME PUEDAN AYUDAR QUE ME ESTOY VOLVIENDO LOCO SALUDOS!!!!

Por vicoy

7 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Oct 2011 02:25 pm
Tu c{odigo es difícil de leer porque está mal formateado (hay un botoncito en Flash que hace eso, o la mayoría de los editores te lo permite), pero básicamente no estás esperando el onCompleteXML para trazar la variable, es decir si no esperas a que se termine de cargar y parsear, obtendrás nada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Oct 2011 11:34 pm

solisarg escribió:

Tu c{odigo es difícil de leer porque está mal formateado (hay un botoncito en Flash que hace eso, o la mayoría de los editores te lo permite), pero básicamente no estás esperando el onCompleteXML para trazar la variable, es decir si no esperas a que se termine de cargar y parsear, obtendrás nada

Jorge


Agradesco mucho tu tiempo Jorge y una disculpa por como esta el formato lo hare en próximos post, pero mi duda es como puedo obtener una variable con return dentro de una función de evento, ya que al poner por ejemplo:


var miVariable = funcionEvento ();

me arroja el error de que le faltan argumentos en este caso el Evento

si lo pongo

var miVariable = funcionEvento (evt:Event);

me dice que le faltan argumentos y no me lo hace válido me podrías ayudar o podrías decirme a que te refieres con esperar a que termine y parsearlo lo siento soy un poco nuevo en el As3 saludos !! y nuevamente mil gracias!

Por vicoy

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2011 11:01 am
Ok, lo explico más. En el constructor llamas a obtieneMiniatura que carga un XML y extrae sus datos. Cuando se carga un archivo se denomina operación asincrónica, es decir hay un tiempo de espera hasta que carga, y eso se sabe por el evento COMPLETE. En tu caso mandas a cargas e inmeditamente quieres trazarlo, sin esperar a que termine.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Oct 2011 04:27 am
MUCHAS GRACIAS JORGE!!! AGRADESCO MUCHO TU TIEMPO, al parecer estuve intentando con funciones recursivas tratando que la funciòn se llame a si misma hasta que este cargado el arreglo pero no se puede me sigue mandando vacio, estuve viendo en otros foros en inglès pero al parecer lo que recomiendan es mandar llamar todas tus funciones desde la funciòn donde cargas el XML... mira lo que querìa intentar y lo voy a seguir intentando es... crear una clase la cual cargue completo tu XML y despues vaciarlo en un Array para poder usarla en otras clases... u hay manera de detectar cuando la funciòn que llama el listener ONCOMPLETE cargue mi variable?? seguirè intentando y si lo logro creo que serìa bueno subir el tutorial pues no he encontrado respuesta en ningun otro foro ji ji ji y el tema es muy demandado saludos y nuevamente mil gracias por tu tiempo

Por vicoy

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Oct 2011 02:00 pm
El evento es el onComplete, allí tienes cargado el XML y puedes hacer lo que quieras, lo que intentes antes fallará, el principio es bastante simple y vale para casi todas las cargas externas (por eso encontrar{as el evento onComplete o similar en todas las clases que hagan cargas externas)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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