Comunidad de diseño web y desarrollo en internet online

AS3 Sacar datos obtenidos de una funcion

Citar            
MensajeEscrito el 16 Nov 2010 10:54 am
Hola:

Tengo la siguiente duda:

Realizo una consulta a una BD y me devuelve una cadena de texto de tipo

Código :

txt 1&txt 2&txt 3&txt 4&txt 5&


gracias a este código

Código ActionScript :

var peticion:URLRequest = new URLRequest( "http://localhost/www/bd.php" ); 
peticion.method = URLRequestMethod.POST; 
// Enviamos el nombre a recuperar, por ejemplo de un listado o de una BD ;) 
var variables:URLVariables = new URLVariables(); 
variables.dato1 = "1"; 
peticion.data = variables;  
// Fin envio 
var loader:URLLoader = new URLLoader(); 
loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
loader.addEventListener( Event.COMPLETE, loadCompleteHandler ); 
loader.load(peticion); 
                      
function loadCompleteHandler( e:Event ):void { 
   trace (e.target.data.devuelvo); 
/////// Aqui si que me contesta la cadena obtenida////////

} 
/////// Aqui NO que me contesta la cadena obtenida////////


y tras hacer unas pruebas, que en conclusion es introducir los datos obtenidos en un array para despues poder trabajar con ellos en el resto del documento, me encuentro con que "no veo la forma" de sacar los datos de dicha funcion.

He leido que una forma "no recomendable" por los creadores de los distintos posts es hacer una clase para así tener unas variables "globales", pero eso mismo, dicen que no es la forma mas fina de hacerlo.

Ahora y tras estos comentarios, mi pregunta sería:

Como puedo sacar los datos de la funcion de una forma "correcta"? o no se si es del mismo método,
Como hago esos datos globales?

Gracias por adelantado

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Nov 2010 11:25 am
Pues asignandolos a una variable

Código ActionScript :

private var devuelvo:String;
function loadCompleteHandler( e:Event ):void {  
  devuelvo = e.target.data.devuelvo;
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 16 Nov 2010 12:06 pm
Hola Hernan:

Lo primero gracias por contestar. Te comento desglosando los resultados obtenidos:

Poniendo

Código ActionScript :

private var devuelvo:String;
function loadCompleteHandler( e:Event ):void {
devuelvo=e.target.data.devuelvo;
}

Me salta un error donde me indica

Código :

1013: El atributo private sólo se puede utilizar en definiciones de propiedad de clase

Como no es una clase, se lo quito y ya no me aparece el error. Entonces hago traces con los siguientes resultados

Código ActionScript :

private var devuelvo:String;
function loadCompleteHandler( e:Event ):void {
devuelvo=e.target.data.devuelvo;
trace(devuelvo); // Este me devuelve la cadena correcta
}
trace(devuelvo); // Este me devuelve null


Alguna idea / sugerencia?

Un saludo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Nov 2010 12:08 pm
Perdon, un error de copiar y pegar...

Código ActionScript :

var devuelvo:String; 
function loadCompleteHandler( e:Event ):void { 
devuelvo=e.target.data.devuelvo; 
trace(devuelvo); // Este me devuelve la cadena correcta 
} 
trace(devuelvo); // Este me devuelve null 


Esto si. :P

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Nov 2010 08:53 pm
Hola:

Sigo intentnado pero sin resultado.
Alguien me puede orientar como hacerlo o me puede dar alguna idea para poder tirar del hilo?

El objetivo es obtener el resultado de una consulta y poder trabajar con ellos.

Gracias por adelantado de cualquier comentario que me pueda ayudar.

Un saludo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Nov 2010 11:35 pm
Pues claro que te dirá null, si le pides un trace de una variable, que aún no has seteado. El esquema correcto sería:

Código ActionScript :

var devuelvo:String;  
function loadCompleteHandler( e:Event ):void {  
   devuelvo=e.target.data.devuelvo;
   onLoadCompleteHandler();
} 
function onLoadCompleteHandler():void{
   trace(devuelvo);
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 17 Nov 2010 09:33 am
Hola Hernan:

Efectivamente asi funciona sin problemas, pero no se si es que estoy intentando hacer algo que no se puede.

Habría forma de poder "sacar" el contenido de dicha variable un nivel por arriba? (como no se si me explico, perdonar que lo intente decir de otra forma.).
El contenido de esa variable con este ejemplo solo se puede tratar dentro de la funcion onLoadCompleteHandler, por lo que todo el "proceso" posterior que usa ese contenido deberá estar dentro de esa funcion.

Hay alguna forma para sacar dicho contenido "fuera" de esa funcion, y por lo tanto, que se pueda usar en cualquier sitio y poder tratarla como si hubiera definido un var a "fuego"? o poder pasar la variable de forma global? (ya se que OOP eso de "global" no sigue demasiado su "politica" ;) )

Muchas gracias por adelantado

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 17 Nov 2010 10:03 am
Sigo pensando en ello, y supongamos que tenga que hacer varias consultas a la BD, una de nombre de rios, otra de edades de los usuarios, y otra de idioma a mostrar (es un decir, para indicar que son 3 tablas distintas)... Tendría que encadenar

function ... {
function ...{
function ...{

Codigo que sea
}
}
}

Muchas gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 17 Nov 2010 02:26 pm
Bien, antes que nada. No es posible depender de una variable que aún no está cargada. Aunque parezca, existe un delay mínimo entre la carga del dato y la carga del código. Por eso si haces el invoque de la variable en la linea, simplemente devuelve null (Sin definir).

Sin embargo, tampoco es totalmente correcto crear 3 funciones así como planteas, es simplemente desprolijo.

Para lo cual tienes dos opciones:

1. OOP (Programación Orientada a Objetos)
2. Centralizar el evento, lo cual hace que UNA función procese todo.

Personalmente, prefiero crear una clase para manejar este tipo de cosas.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 17 Nov 2010 09:02 pm
Buenas noches:

Pues sigo tus instrucciones. Voy a ponerme con la OOP. Seguro que me tendreis por aquí volviendo a pedir consejo y ayuda :D

Un saludo y gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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