Comunidad de diseño web y desarrollo en internet online

LoadVars con variable dinámica

Citar            
MensajeEscrito el 06 Ago 2010 09:33 am
Hola a todos, nos e si he descrito muy bien el problema en el Asunto, ya que buscando por internet y en el foro no he encontrado respuesta.

Mi problema es el siguiente:
Tengo que acceder mediante LoadVars a un .txt que contiene un listado de preguntas y respuestas.
De manera aleatoria debo seleccionar una de ellas.

Código TXT

Código :

&SQ_Num=009&
&SQ_001_P=blablabla& &SQ_001_R=asasasas&
&SQ_002_P=blablabla& &SQ_002_R=asasasas&
&SQ_003_P=blablabla& &SQ_003_R=asasasas&
&SQ_004_P=blablabla& &SQ_004_R=asasasas&
&SQ_005_P=blablabla& &SQ_005_R=asasasas&
&SQ_006_P=blablabla& &SQ_006_R=asasasas&
...


Mi problema reside en que para acceder a uno de los contenidos debo usar ObjINI.SQ_001_P, entonces me gustaría que la parte 001 fuera dinámica y que según el random generado, accediera a un dato u otro.

He probado varios códigos, pero no me funcionan, y finalmente he dado con este, que me da error al esperar un valor tras el "." (tras ObjINI.)

Código AS

Código :

ObjINI=new LoadVars ();
ObjINI.load("http://URL/sq_ini.txt");
ObjINI.onLoad = function () {
   SQ_num.text = ObjINI.SQ_Num; //carga el total de entradas que tiene
   Ran = random(SQ_num.text+1); //genera un numero aleatorio entre las entradas

   SQ_Titulo.text = ObjINI.this["SQ_"+ran+"_P"]; //Debería buscar esto: SQ_002_P que sustituye--> ObjINI.SQ_002_P
   SQ_Respuesta.text = ObjINI.this["SQ_"+ran+"_P"];//Debería buscar esto: SQ_002_R que sustituye--> ObjINI.SQ_002_R
}


Se que no se debe usar el this["..."] pero es lo que he encontrado buscando como crear variables dinámicamente.

Muchísimas gracias por adelantado! :)

Por pau7_fcb

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ago 2010 04:50 pm
te recomiendo que uses xml para poder cargar tus datos y almacenarlos en un arreglo, date una vuelta por los tutoriales

Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox
Citar            
MensajeEscrito el 08 Ago 2010 02:25 pm

joshuavw escribió:

te recomiendo que uses xml para poder cargar tus datos y almacenarlos en un arreglo, date una vuelta por los tutoriales

Saludos


Gracias por la respuesta joshuavw, el problema es que en este caso tiene que ser un .txt si o si, ya que tienen montado ya el sistema de publicación del archivo .txt, no es una cosa a elegir.
Habitualmente si que uso acceso a datos vía xml o RSS, se como hacerlo y demás, y en este caso sería más fácil de solucionar mediante una variable "i" en los child, pero como comentaba, y se me olvidó especificar en la pregunta inicial, es que el acceso mediante .txt no debería cambiar.

De nuevo, gracias por tu tiempo en leer la pregunta :)

Por pau7_fcb

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ago 2010 06:36 pm
Quita el ".this" después del ObjINI:

Código ActionScript :

SQ_Titulo.text = ObjINI["SQ_"+ran+"_P"]; //Debería buscar esto: SQ_002_P que sustituye--> ObjINI.SQ_002_P

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 09 Ago 2010 07:37 am

The Fricky! escribió:

Quita el ".this" después del ObjINI:

Código ActionScript :

SQ_Titulo.text = ObjINI["SQ_"+ran+"_P"]; //Debería buscar esto: SQ_002_P que sustituye--> ObjINI.SQ_002_P


Muchas gracias por la respuesta The Fricky! y tu tiempo en leerme,
Usando el código que me sugeriste, elSQ_Titulo.text carga como valor "UNDEFINED".
(he fijado previamente el random como 003, en lugar de hacerlo aleatorio ya que se debería comprobar que si es inferior a 10 añada dos 0 delante y si es inferior a 100 añada un 0 delante).

El problema es que para referenciar al valor interno mediante LoadVars debo poner un "." después de ObjINI, que es el que identifica la variable interna del .txt cargada en ObjINI. Con lo que al estar obligado a poner el ".", si pongo el corchete o cualquier intento de fórmula me da error.

Pienso que para salir del paso, inicializaré todos los valores en una array, que al fin y al cabo ya están cargados en ObjINI, y luego cargaré una entrada u otra según el random. Lo que para optimizar el funcionamiento, me seguiría interesando descubrir como llamar a una variable a la que puedas cambiar uno de los valores.

De nuevo, muchas gracias por la respuesta.

Un saludo,

Por pau7_fcb

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ago 2010 11:18 pm
En AS2 las propiedades de los objetos pueden ser referenciadas tanto por la nomenclatura "objeto.propiedad" como "objeto[propiedad]", por eso te da un error cuando llamas a "this", porque envías un valor no esperado después del punto.
Haz una depuración y revisa si los nombres que envías son correctos. Es posible que allí esté el problema.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox

 

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