Comunidad de diseño web y desarrollo en internet online

Diseño de clases - objeto no es alcanzable

Citar            
MensajeEscrito el 15 Mar 2005 05:22 am
Ayudenme por favor!!!, estoy haciendo una clase que carga el nombre de usuario logueado al sistena por medio de loadvars, pero desde el evento onload de mi objeto loadvar que recive las variables, no puedo setear ningun parametro ni invocar ningun método de la clase que la contiene, dejo mi código para que me den su opinión.

Código :

class UserHandler{
   private var myURLGetHandler:LoadVars;
   private var myURLResponseHandler:LoadVars;
   private var myURLPostHandler:LoadVars;
   var strUserName:String = "mentira";
   //---Constructor
   //---Carga el nombre de usuario
   function UserHandler(param_strURLToInformationPage:String){
      //---[Inicializacion de Variables]---
      myURLGetHandler = new LoadVars();
      myURLResponseHandler = new LoadVars();
      myURLPostHandler = new LoadVars();
      myURLResponseHandler.onLoad = respOnl;
      function respOnl(exito) {
         trace("entra");
         if (exito) {
            trace(this.name);
            trace("---->"+_parent.strUserName);
            //_parent.setUserName(this.name);                                   //_parent._parent.setUserName(this.name);
            strUserName=this.name;
         } else {
            _parent.setUserName("nope");
         }
      }
      //---[EntryPoint]---
      if(!param_strURLToInformationPage){
         param_strURLToInformationPage="get_user_data.php";
      }
      trace("1");
myURLGetHandler.sendAndLoad(param_strURLToInformationPage, myURLResponseHandler, "GET");
      trace("2");      
      
   }
      

   //---[GETERS Y SETERS]---
   function getUserName():String{
      return this.strUserName;
   }
   function setUserName(param_strName:String){
      trace("---->"+param_strName);
      this.strUserName=param_strName;
   }

}


Este es el código qeu usa la clase

Código :

import UserHandler;
var myGetBar:LoadVars = new LoadVars();
var myReturnBar:LoadVars  = new LoadVars();
this.onEnterFrame = function() {
   var myUH:UserHandler = new UserHandler("http://127.0.0.1/modules/scoreregister/get_user_data.php");
   trace(myUH.getUserName());
   _root.mensaje_txt.text = "test: ";
   _root.mensaje_txt.text += myUH.getUserName();
   this.onEnterFrame = null;   
}


Lo que obtengo en el campo que uso para ver los resultados es:

test:mentira


y en el trace


1
2
mentira
entra
anonimous
---->undefined


Estoy desorientado, apreciaría mucho cualquier ayuda.

Saludos

Por WEREW0LF

769 de clabLevel

4 tutoriales
1 articulo
1 ejemplo

 

Buenos Aires - Argentina

firefox
Citar            
MensajeEscrito el 15 Mar 2005 02:58 pm
en los eventos onLoad se pierde el foco de "this", que pasa de ser la clase a ser el objeto (LoadVars o XML). la solucion es usar la clase Delegate:

import mx.utils.Delegate;

miLoadVars.onLoad=Delegate.create(this, mionload);

function mionload(exito){

trace(this);//la clase
trace(miLoadVars);//para las variables
}

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 15 Mar 2005 09:19 pm
Lo que yo uso en Flash MX es crear sobre el objeto una referencia a la clase (segunda linea):

Código :

      myURLResponseHandler = new LoadVars();
      myURLResponseHandler.parent = this;
      myURLPostHandler = new LoadVars();
      myURLResponseHandler.onLoad = respOnl;
      function respOnl(exito) {
         trace("entra");
         if (exito) {
            trace(this.name);
            trace("---->"+_parent.strUserName);
            //_parent.setUserName(this.name);                                   //_parent._parent.setUserName(this.name);
            strUserName=this.name;
         } else {
            _parent.setUserName("nope");
         }
      } 


myURLResponseHandler.parent = this;

Asi, dentro de tu objeto LoadVars, haciendo this.parent accedes a la clase contenedora.

Saludos!

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox
Citar            
MensajeEscrito el 16 Mar 2005 02:26 am
bueno, ya obtengo la referencia a las respectivas clases(usando la clase Delegate, el otro no me anda no se por que), el tema es que necesito que la clase no devuelva el control hasta que la operacion de get halla concluido, como puedo realizar la carga de forma sincronica?

Saludos

Por WEREW0LF

769 de clabLevel

4 tutoriales
1 articulo
1 ejemplo

 

Buenos Aires - Argentina

firefox

 

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