Comunidad de diseño web y desarrollo en internet online

Recoger evento desde fuera de una clase

Citar            
MensajeEscrito el 11 Nov 2009 09:29 pm
Muy buenas a todos. Estoy empezando a trabajar con clases, así que aún hay algunas cosas que me superan...
Lo que estoy haciendo es una clase que carga un fichero XML y que tendría diversos métodos get para recuperar datos concretos del XML. De momento no es del todo funcional, ya que estoy haciendo una prueba y no consigo lo que quiero.

Ésta es la clase:

Código ActionScript :

package clases
{
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.utils.*;

   public class CargaXML extends MovieClip
   {
      private var prueba:String;
     
     public function CargaXML(ruta:String)
      {
         var loader:URLLoader=new URLLoader;
         var request:URLRequest=new URLRequest(ruta);
         loader.dataFormat=URLLoaderDataFormat.TEXT;
         loader.addEventListener(Event.COMPLETE,xmlcompletado);
         loader.load(request);
      }
      private function xmlcompletado(event:Event)
      {
         // Aquí se leería el XML y se irían asignando datos a variables          
         prueba = "hola";
      }
     
     public function nombre()
     {
                // Ésta luego sería un método get para devolver un dato concreto del XML
      trace(prueba);
     }
     
   } 
} 


Y ésta la llamada a la misma:

Código ActionScript :

import clases.*;
var xmlCursos:CargaXML = new CargaXML("cursos.xml");
xmlCursos.nombre();


Y aquí vienen el problema: En la salida, el trace devuelve null. Esto creo que es porque la llamada al método nombre() se ejecuta antes de que termine de cargar el fichero XML, por tanto aún no ha dado tiempo a que se le asigne un valor a la variable prueba dentro del método xmlcompletado. ¿Cómo haríais para solucionar esto? ¿habría alguna manera de no se permita llamar al método nombre() hasta que haya terminado de cargar el fichero xml?

Me he extendido tanto porque espero que el problema quede claro, a ver si alguien me puede ayudar. Gracias!

Por FGordon

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Nov 2009 03:21 pm
Puedes enviarf un evento:

Código ActionScript :

private function xmlcompletado(event:Event) 
      { 
         // Aquí se leería el XML y se irían asignando datos a variables           
         dispatchEvent(new Event("completo"));
         prueba = "hola"; 
      }


Luego agregas un listener al evento en el timeline

Código ActionScript :

xmlCursos.addEventListener("completo", muestraNombre)
function muestraNombre(evt:Event){
  xmlCursos.nombre();
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Nov 2009 06:26 pm
Gracias Jorge. Ahora estoy en el trabajo, cuando llegue a casa lo pruebo.

Por FGordon

6 de clabLevel



 

firefox

 

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