ActionScript - Novato en action script con problemas

 
Vista:

Novato en action script con problemas

Publicado por Martin (2 intervenciones) el 20/06/2006 12:12:21
Hola: estoy haciendo una clase con el siguiente código, en un archivo llamado Casa.as:

class Casa
{
var codigo:String;
var nombre:String;
var dueno:String;
var direccion:String;
var cp:Number;
var poblacion:String;
var provincia:String;
var telefonos:String;

function Casa(id:Number)
{
var variables_lv:LoadVars = new LoadVars();

variables_lv.onLoad = function(success)
{
trace(this.dbpoblacion);
poblacion = this.dbpoblacion;
}

variables_lv.load("http://localhost/casas/script.php?op=casa&id=" + id);
}
}

y en el primer frame de la pelicula:

import Casa.as;

var micasa:Casa = new Casa(1);

nombre_txt.text = micasa.poblacion;

Bien. El problema lo tengo en la clase, ya que la sentencia trace(this.dbpoblacion) devuelve el texto "Madrid" correctamente. Pero no sé como referenciar la propiedad poblacion de la clase, ya que ahora this se refiere a las propiedades de la variable LoadVars. Es decir, que no sé cargar los valores obtenidos en la propiedades de la clase.
Ayuda por favor..... y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Asignar valores de una función anidada a las propiedades de una clase

Publicado por Alejandro (369 intervenciones) el 22/06/2023 17:24:43
¡Hola, Martín! Parece que estás teniendo problemas para asignar el valor obtenido de `dbpoblacion` a la propiedad `poblacion` de la clase `Casa`. Puedes solucionarlo utilizando una técnica llamada "captura de contexto". Aquí tienes una posible solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Casa {
    var codigo:String;
    var nombre:String;
    var dueno:String;
    var direccion:String;
    var cp:Number;
    var poblacion:String;
    var provincia:String;
    var telefonos:String;
 
    function Casa(id:Number) {
        var _this:Casa = this; // Captura el contexto actual de la clase
 
        var variables_lv:LoadVars = new LoadVars();
 
        variables_lv.onLoad = function(success) {
            trace(this.dbpoblacion);
            _this.poblacion = this.dbpoblacion; // Utiliza _this en lugar de this para referenciar la propiedad de la clase
        }
 
        variables_lv.load("http://localhost/casas/script.php?op=casa&id=" + id);
    }
}

En este código, se crea una variable `_this` dentro del método `Casa()`, que captura el contexto actual de la clase `Casa`. Luego, dentro de la función `onLoad` de `variables_lv`, se utiliza `_this` en lugar de `this` para referenciar la propiedad `poblacion` de la clase.

De esta manera, puedes asignar correctamente el valor obtenido de `dbpoblacion` a la propiedad `poblacion` de la clase `Casa`.

Espero que esto resuelva tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar