ActionScript - Recuperar los datos de sendAndLoad

 
Vista:

Recuperar los datos de sendAndLoad

Publicado por Victorio Guerrero (1 intervención) el 15/10/2007 16:14:00
Hola a todos, por FlashVar estoy pasando a un Flash un codigo, con el cual por sendAndLoad recupera la informacion que debe mostrar.

Me funciona:
Recoger los datos de FlashVar
Llamar al fichero php
Recuperar los datos de php

Me falla:
El poder usar los datos fuera de la funcion de sendAndLoad.

Pongo el codigo de as:

form_lv.onLoad = function(success:Boolean) {
if (success) {
titulo.text = form_lv.nombre;
if (form_lv.fotosde == "fiestas") {
titulo.text += " "+form_lv.fecha;
}
prueba.text=form_lv.foto1;
prueba.text=form_lv.descripcion1;
// prueba.text+="\n"+form_lv.descripcion.split(".:.");
} else {
titulo.text = "Error en la lectura";
titulo.text += " "+_level0.codigo+" "+_level0.fotosde;
}
};

La informacion que recogo es el nombre de unas fotos para poder mostrarlas, en un principio pense en recogerlas todas como una cadena y por split separarlas, pero solo me funciona dentro de onLoad

Luego leyendo por los foros me recomendaban que mejor me enviara una variable con el total de fotos y que cada fot fuera una variable, foto1, foto2, foto3, etc...

Pero no se como recuperarlas fuera de esta funcion onLoad

Esta linea un poco mas abajo

imagenes_lv.dirurl = form_lv.fotosde+"/form_lv.foto"+i+".jpg";

no se como llamar a form_lv.foto1, form_lv.foto2, etc

como no se cuantas fotos recupero la idea es hacer un bucle entre 1 y el total de fotos, pero no se como hacerlo.

Un saludo
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

Acceder a datos fuera de la función onLoad con sendAndLoad

Publicado por Alejandro (369 intervenciones) el 23/06/2023 19:00:27
Hola, Victorio.

En ActionScript, la función `onLoad` se ejecuta cuando la carga de datos a través de `sendAndLoad` se ha completado. El problema que estás experimentando es que deseas acceder a los datos fuera de esa función, pero debido a la naturaleza asincrónica de la carga de datos, no puedes garantizar que los datos estén disponibles fuera de `onLoad` en el momento en que los necesitas.

Una solución para acceder a los datos fuera de `onLoad` es utilizar una técnica llamada "callback" o "devolución de llamada". En lugar de tratar de acceder directamente a los datos fuera de `onLoad`, puedes proporcionar una función adicional como argumento a tu función principal y llamar a esa función con los datos una vez que estén disponibles.

Aquí hay un ejemplo de cómo podrías implementarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function cargarDatos(callback:Function):void {
   var form_lv:LoadVars = new LoadVars();
   var imagenes_lv:LoadVars = new LoadVars();
 
   // Configura el evento onLoad para la carga de datos
   form_lv.onLoad = function(success:Boolean):void {
      if (success) {
         // Aquí tienes acceso a los datos de form_lv
         var totalFotos:Number = Number(form_lv.totalFotos);
 
         // Crea un objeto para almacenar las fotos
         var fotos:Object = {};
 
         // Recorre las fotos y almacénalas en el objeto fotos
         for (var i:Number = 1; i <= totalFotos; i++) {
            var foto:String = form_lv["foto" + i];
            fotos["foto" + i] = foto;
         }
 
         // Llama a la función de devolución de llamada con los datos
         callback(fotos);
      } else {
         // Maneja el caso de carga fallida
         callback(null);
      }
   };
 
   // Envía y carga los datos
   form_lv.sendAndLoad("tu_archivo.php", form_lv, "POST");
}
 
// Llama a la función cargarDatos y proporciona una función de devolución de llamada
cargarDatos(function(datos:Object):void {
   if (datos) {
      // Aquí tienes acceso a los datos fuera de onLoad
      // Puedes usar los datos como necesites
      for (var i:Number = 1; i <= Object.keys(datos).length; i++) {
         var foto:String = datos["foto" + i];
         imagenes_lv.dirurl = form_lv.fotosde + "/" + foto + ".jpg";
         // Haz algo con la URL de la imagen...
      }
   } else {
      // Maneja el caso de carga fallida
   }
});

En este ejemplo, se ha creado una función `cargarDatos` que acepta una función de devolución de llamada como argumento. Dentro de `onLoad`, se recopilan los datos necesarios en un objeto `fotos` y se llama a la función de devolución de llamada con ese objeto. Luego, fuera de `onLoad`, puedes usar los datos proporcionados en la función de devolución de llamada.

Espero que esto te ayude a resolver tu problema y te permita acceder a los datos fuera de la función `onLoad`. ¡Buena suerte con tu proyecto en ActionScript!
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