Comunidad de diseño web y desarrollo en internet online

Problema con variables en una clase

Citar            
MensajeEscrito el 02 Mar 2006 11:01 am
Hola a todos, tengo la siguiente clase:

Código :

class miClase
{
      private socket:XMLSocket;
 
      miClase()
      {
         this.socket = new XMLSocket();
         this.socket.onConnect = this.alConectar;
         this.socket.onXML = this.alRecibir;
      }

     public function conectar()
     {
          this.socket.connect("localhost", 3000);
     }

    private function alConectar()
    {
          trace("Conectado");
    }

   private function alRecibir( datos:String )
   {
        var mixml:XML = new XML();

        mixml.ignoreWhite = true;
        mixml.parseXML(datos);
        orden = miXML.firstChild.childNodes[0].attributes.tipo;
      
         switch ( orden )
   {
          case "textos":
         {
            trace ("Recibo los textos de las bolas");
            
                                //Aqui tengo el problema, no llama a la funcion de la clase
                                _analizarTextos(miXML);
            
            break;
         }
        }
       ........
   }
}


Se que el fallo está en que dentro de la función alRecibir, _analizarTextos no es una función del objeto que la llama, es decir, el XMLSocket, ya que esa función pertenece a la clase.
He intentado hacer

Código :

   this.socket.padre = this;


pero me dice que el objeto socket no tiene esa propiedad. ¿Hay alguna manera de que llame a la función _analizarTextos de la clase a la que pertenece o alguna manera de saber cual es la clase que contiene al objeto XMLSocket ?.

Gracias.

Por i02hajij

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2006 01:04 pm
primero que todo para conocer todos los datos de una classe o de una variable :

Código :

for (var i in myClass){trace(i+" = "+myClass[i])};


intentalo de esta manera :

Código :

class miClase {
   private var socket:XMLSocket;
   private var padre:Object;
   function miClase() {
      padre = this;
      this.socket = new XMLSocket();
      this.socket.onConnect = this.alConectar;
      this.socket.onXML = this.alRecibir;
   }
   public function conectar() {
      this.socket.connect("localhost", 3000);
   }
   private function alConectar() {
      trace("Conectado");
   }
   private function alRecibir(datos:String) {
      var mixml:XML = new XML();
      mixml.ignoreWhite = true;
      mixml.parseXML(datos);
      var orden = mixml.firstChild.childNodes[0].attributes.tipo;
      switch (orden) {
      case "textos" :
         trace("Recibo los textos de las bolas");
         //Aqui tengo el problema, no llama a la funcion de la clase
         padre._analizarTextos(mixml);
         //
         padre["_analizarTextos"](mixml);
         break;
      }
   }
}

Por geronimo

65 de clabLevel



Genero:Masculino  

mozilla
Citar            
MensajeEscrito el 02 Mar 2006 06:02 pm
Pues guardando la clase en la variable padre tampoco funciona. Dentro de la función alRecibir, si pones trace(padre) te dice undefined.

Lo he conseguido arreglar de una manera la verdad un poco fea, poniendo:

_root.partida._analizarTextos(mixml);

siendo partida la variable de la clase miClase. Pero esa forma, aunque funciona, no me gusta, ya que no quiero usar _root.

¿No habría otra manera de solucionar este problema?

Un saludo.

Por i02hajij

15 de clabLevel



 

firefox

 

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