Comunidad de diseño web y desarrollo en internet online

Ambito de las variables con LoadVars

Citar            
MensajeEscrito el 17 Feb 2005 09:31 pm
me he topado :o con un extraño comportamiento de LoadVars y es la imposibilidad de leer las variables fuera del bucle OnLoad (aun incluso asignandole un valor a una variable en root o _global o con set (variable, myGal.mivariable) donde myGal viene de:
var myGal:Object = new LoadVars();
Espero que me ayuden en esto..

Por phenobarbital

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Feb 2005 09:35 pm
creo q es asi

Código :

var myGal:LoadVars = new LoadVars();


en tutoriales hay uno de LoadVars q esta rebueno

Saludos :D

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 18 Feb 2005 01:43 am
de hecho, sea var myGal:LoadVars = new LoadVars(); o myGal solamente, el código funciona y puedo leer perfectamente las variables pero mi pregunta es por el ámbito de las variables (eso no pasaba con LoadVariablesNum); mira este ejemplo:

var myGal:LoadVars = new LoadVars();
myGal._path = _root;
myGal.onLoad = getValues;
function getValues() {
txtFotos.text = myGal.nFotos;
set("misFotos", myGal.nFotos);
//Aqui puedo leer perfectamente las variables...
}
myGal.load("variables.php");

Pero fuera del ámbito de la función onLoad, si intento leer a myGal.nFotos, o intento leer la variable "misFotos" obtengo undefined, como si las variables que declaro dentro del onLoad "murieran" al final de la ejecución del script.

:roll: me tiene enredado ese extraño comportamiento de las variables, pues no he podido hacer que variables globales, locales, de linea de tiempo (solo campos de texto) mantengan el valor asignado dentro del onLoad FUERA del ámbito de acción de la función...
Tal vez las variables estén pasando por referencia y no por valor... no sé...

Por phenobarbital

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 18 Feb 2005 02:58 am
:shock:
Estas usando codigo de Flash 4 !!!!!! :shock: :shock: :shock: :shock: :shock: :shock:

mira ese set; eso ya no existe, no se usa

Si obtienes undefined bien puede ser porque lo que esta fuera del ambito es el objeto LoadVars y no las variables o porque aun no ha ocurrido la carga; el evento "onLoad" tiene una razon de ser y es verificar que todo estuvo bien; no cargues variables llegadas por LoadVars mas alla del ambito de ese evento; sino guardalas ahi dentro en variables declaradas en el frame, por fuera de eventos y luego si manipulalas ... pero igual no podras manipularlas hasta que no ocurra el evento onLoad que obviamente no es automatico y tampoco puedes predecir cuanto tardara; todo hazlo en base al evento onLoad

Y en serio ... usas codigo de Flash 4 :S

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 18 Feb 2005 06:05 am
Claro que sé que es Flash 4 (pero todavia funciona, dejame decirte) pero he intentado todo tipo de declaraciones, desdee _global hasta arrays!... variables en frame y demás:
dejame darte un ejemplo...

var a:Number = 0;
var myGal:LoadVars = new LoadVars();
myGal._path = _root;
myGal.onLoad = getValues;
function getValues() {
a=myGal.nFotos;
}
trace (a);
esto retorna cero, sé que las variables se están cargando porque anteriormente no tenía esa función GetValues sino que hacia directamente esto:

myGal.onLoad = function (sucess) {
}

y esperaba a que sucess fuera true, incluso cuando eso era true, podía usar:
a=myGal.nFotos;
y asignarlo a un text:
txtNFotos.text = a;
y aparecía el valor REAL de a

cuando fuera del onLoad pido mostrar la variable; ejemplo
myGal.onLoad = function (sucess) {
trace(a); <- aqui dice que vale 4
}
trace(a); <- aqui dice que vale 0

me dice que a vale 0 (si le inicié el valor) o que vale "undefined" si no la inicialicé...

Y es que de hecho, todos los ejemplos de LoadVars que hay en la página web hacen uso de las variables DENTrO del ambito de onLoad y no he encontrado uno donde yo lea una variable dentro del onLoad y la use en otro lado (por ejemplo, si es _global, en el frame siguiente...)

ves a lo que me refiero?... si debo esperar a OnLoad para iniciarlizar variables y meter los valores en variables de linea de tiempo o globales... como hago para esperar que esto termine para continuar al frame siguiente?...

Por phenobarbital

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 18 Feb 2005 06:52 am
Mira, que todavia funcione no implica que lo debas seguir usando ... es una afirmación ... un poco descarada

Ahora, quizas no entiendes bien como funciona LoadVars

El evento "onLoad" solo ocurre cuando se carga una variable, si pones esto:

Código :

myGal.onLoad = function (sucess) {
trace(a); <- aqui dice que vale 4
}
trace(a); <- aqui dice que vale 0 

Claro que va a valer cero; porque ese codigo NO se ejecuta despues del onLoad,... el onLoad no es automatico, puede tardar 10 milisegundos, o 20 segundos dependiendo de la conexión AUN si lo pruebas localmente; el onLoad no es mas rapido que el procesador asi que de esa manera JAMAS te funcionara; solo puedes usar las variables del LoadVars DESPUES de que se ejecute el onLoad ... y escribir el codigo del evento NO SIGNIFICA que justo despues ese codigo se ejecute.

Como lo veo, tienes un problema de concepto y esos problemas hacen que tengas que reescribir el codigo; por favor lee muy cuidadosamente el tutorial de LoadVars

http://www.cristalab.com/vertutorial.php?id=6

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh

 

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