Comunidad de diseño web y desarrollo en internet online

¿Cómo recuperar y utilizar variables de un loadVars?

Citar            
MensajeEscrito el 18 Abr 2008 09:37 pm
Hola, tengo un reloj de cuenta atrás en un web site, y quiero cambiar la fecha de finalización desde un archivo externo, un *.txt por ejemplo.
La cuenta atras funciona bien, pero tengo que abrir el FLA cada vez que cambia la fecha terminal... por eso es que quiero que esté en un archivo externo.
El codigo que utilizo:

Código :

//Crea una objeto de la clase "LoadVars" llamado "cargdor_lv"
var cargador_lv:LoadVars = new LoadVars();

/*Esta es la función que va a manejar todo lo que pase cuando se carguen las variables
  Por eso se llama el evento "onLoad", notese que la función no tiene nombre porque
  es asignada directamente al "onLoad" asi que ese sera su nombre, tambien tiene un 
  parametro llamado "exito", este asume el valor "true" si se cargo con exito el 
  archivo o "false" si buho algun problema como errores 404*/ 
cargador_lv.onLoad = function(exito) {
   if (exito) {
      var anio:Number = Number(this.anio);
      var mes:Number = Number(this.mes);
      var dias:Number = Number(this.dias);
      var horas:Number = Number(this.horas);
      var minutos:Number = Number(this.minutos);
      var segundos:Number = Number(this.segundos);
      trace(anio+"/"+mes+"/"+dias+"/"+minutos+"/"+segundos)

   } else {
      anio = 20;
   }
};
cargador_lv.load("variables.txt");


System.useCodepage = true;

endDate = new Date(anio, mes, dias, horas, minutos, segundos);
timeLeft = (endDate-new Date());
var d = 24*60*60*1000;
var h = 60*60*1000;
var m = 60*1000;
var s = 1000;
dosDigitos = function (value) {
   return (value<10) ? ("0"+value) : (value);
};
function calculate(factor) {
   var result = Math.floor(timeLeft/factor);
   timeLeft -= (result*factor);
   return dosDigitos(result);
}
getTimeLeft = function () {
   timeLeft = (endDate-new Date());
   if (timeLeft>0) {
      
      dias = calculate(d);
      horas = calculate(h);
      minutos = calculate(m);
      segundos = dosDigitos(Math.floor(timeLeft/1000));
      campo.text = dias+" días | "+horas+"hr | "+minutos+"min | "+segundos+"s. ";
   } else {
      //se acabo;
      campo.text = "00 días, 00 : 00 : 00";
      clearInterval(id);
      
   }
};
//this.createTextField("campo",1,0,0,0,0)
//this.campo.autoSize= true;
id = setInterval(getTimeLeft, 1000);
stop();


El trace me devuelve correctamente los valores si esta dentro del onLoad, si lo hago fuera de eso, me da "undefined", creo que las variables están definidas dentro del objeto loadVars llamado cargador_lv, pero si hago un trace

Código :

trace(cargador_lv.anio);
no me devuelve nada...

Resumiendo, con cargador_lv carga los valores de anio,mes..., etc que utilizo en el objeto newDate del contador.
Si defino las variables en el AS, anda. Si las cargo como en el codigo de arriba, no anda!
Gracias por la ayuda.

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Abr 2008 10:02 pm
Define las variables fuera del onLoad, sin solo estarán accesibles desde dentro de la función

Código :

var anio:Number;
var etc...
cargador_lv.onLoad = function(exito) {
   if (exito) {
      anio = Number(this.anio);
      etc...

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

clabbrowser
Citar            
MensajeEscrito el 18 Abr 2008 10:10 pm
Gracias Zguillez! hice esto:

Código :

var anio:Number;
var mes:Number;
var dias:Number;
var horas:Number;
var minutos:Number;
var segundos:Number;

var cargador_lv:LoadVars = new LoadVars();

cargador_lv.onLoad = function(exito) {
   if (exito) {
      anio = Number(this.anio);
      mes = Number(this.mes);
      dias = Number(this.dias);
      horas = Number(this.horas);
      minutos = Number(this.minutos);
      segundos = Number(this.segundos);
      
   } else {
      anio = 20;
   }
};
cargador_lv.load("variables.txt");

trace(anio+"/"+mes+"/"+dias+"/"+minutos+"/"+segundos);


el trace me devuelve: undefined/undefined/undefined/undefined/undefined
si lo coloco dentro del onLoad: 2008/4/16/0/0

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Abr 2008 10:26 pm
El trace debes colocarlo dentro del evento onLoad. con lo que tienes estás pidiendo que muestre los resultados antes de procesarlos:

Código :

var anio:Number;
var mes:Number;
var dias:Number;
var horas:Number;
var minutos:Number;
var segundos:Number;

var cargador_lv:LoadVars = new LoadVars();

cargador_lv.onLoad = function(exito) {
   if (exito) {
      anio = Number(this.anio);
      mes = Number(this.mes);
      dias = Number(this.dias);
      horas = Number(this.horas);
      minutos = Number(this.minutos);
      segundos = Number(this.segundos);
      
   } else {
      anio = 20;
   }
   trace(anio+"/"+mes+"/"+dias+"/"+minutos+"/"+segundos);
};
cargador_lv.load("variables.txt");

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 18 Abr 2008 10:26 pm
Tu problema es simple.. estás lanzando el trace antes de que tengas los datos cargados. Haz la prueba:

Código :

var anio:Number;
var mes:Number;
var dias:Number;
var horas:Number;
var minutos:Number;
var segundos:Number;

var cargador_lv:LoadVars = new LoadVars();

cargador_lv.onLoad = function(exito)
{
   if (exito)
   {
      anio = Number(this.anio);
      mes = Number(this.mes);
      dias = Number(this.dias);
      horas = Number(this.horas);
      minutos = Number(this.minutos);
      segundos = Number(this.segundos);
      trace("2: " + anio + "/" + mes + "/" + dias + "/" + minutos + "/" + segundos);

   }
   else
   {
      anio = 20;
   }
};
cargador_lv.load("variables.txt");

trace("1: " + anio + "/" + mes + "/" + dias + "/" + minutos + "/" + segundos);

tu resultado será este:

Código :

1: undefined/undefined/undefined/undefined/undefined
2: 2008/4/8/0/0

Primero se ejecuta el trace que está fuera del onload, y devuelve undefined por que los datos aun no están cargados... Cuando los datos cargan se ejecuta el trace del onload, ahí las variables ya estan definidas y podrás acceder a ellas tanto dentro como fuera del onLoad (lo que no puedes pretender es acceder a ellas antes de que esten cargadas)

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

clabbrowser

 

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