Foros del Web » Creando para Internet » Flash y Actionscript »

Usar variable para referirme un nombre de un campo

Estas en el tema de Usar variable para referirme un nombre de un campo en el foro de Flash y Actionscript en Foros del Web. A ver si me explico. El caso real es que tengo 4 cuadritos de texto dinamico que se llaman resp_0, resp_1, resp_2, resp_3. Quiero asignarle ...
  #1 (permalink)  
Antiguo 28/03/2006, 14:51
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta Usar variable para referirme un nombre de un campo

A ver si me explico. El caso real es que tengo 4 cuadritos de texto dinamico que se llaman resp_0, resp_1, resp_2, resp_3.

Quiero asignarle a uno de ellos aleatoriamente algo. Pensaba hacerlo aprovechando el numero, pero no se como se pone.Seria esto, pero no se pone asi logicamente, y he probado multiples formas:

num=random(4)
resp_num="lo que sea";

No se si se puede hacer asi. Si no se pudiera asi, ¿como podria elegir aleatoriamente uno de estos campos de texto?.

GRACIAS, UN SALUDO...
  #2 (permalink)  
Antiguo 28/03/2006, 15:16
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 3 meses
Puntos: 1
Pues... a ver... a ver...

Código:
num=4 
while (num>3){
    num=Math.round(Math.random()*10)
}
eval("resp_"+num).text = "El texto que quieres"
Math.round() devuelve un número entre 0 y 1, y al multiplicarlo por 10 nos daría uno entre 0 y 10. Con Math.round lo redondeamos para quitarle la parte decimal... Eso está en un bucle que se repetirá mientras num sea mayor que 3. Por último, eval() se usa para evaluar un texto y ver si se puede contertir en el nombre de algún objeto (en nuestro caso un campo de texto dinámico), y text es la propiedad del campo de texto que contiene su texto (valga la redundancia...)

Si algo no entendiste dilo... espero que sea eso lo que buscabas
  #3 (permalink)  
Antiguo 28/03/2006, 15:25
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
De acuerdo Me faltaba lo de .text

Pues habia mirado lo de:
eval("resp_"+j) )"lo que sea"
y me decia que lo de la izquierda debia ser una variable. Me faltaba poner el .text. El problema es que asi no da error pero no funciona.

si pongo: resp_0="lo que sea"; furula
si pongo: eval("resp_"+0).text="lo que sea"; no da error pero no furula

¿Que puedo hacer?. Necesito coger el numero de una variable...

Última edición por bincito; 29/03/2006 a las 07:17
  #4 (permalink)  
Antiguo 29/03/2006, 07:19
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta Mensaje para subir a la primera pagina...

Pues sigo esperando ayude, jej...
  #5 (permalink)  
Antiguo 29/03/2006, 07:47
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 3 meses
Puntos: 1
Espera TODO lo que tengas que esperar... que si se te ayuda de buena voluntad es por eso, por buena voluntad y por querer aprender cada día más ayudando como otros me ayudan a mí... que si tal vas al instituto tú por mí y yo te hago unos tutoriales de ActionScript 2.0, ¿ok?

En fin... yo ese ejemplo lo he creado ayer para tí, y me funcionó... Me faltó detallarte que "resp_0" y sucesivos no son los nombres de la variable del campo de texto, sino su nombre de instancia, ¿entiendes? Si tú utilizas el nombre de variable en lugar de la propiedad text del campo de texto dinámico, modifica un poco el código... así:

Código:
num=4 
while (num>3){
    num=Math.round(Math.random()*10)
}

this["resp_"+num] = "El texto que quieres"
¿Que tal ahora?
  #6 (permalink)  
Antiguo 29/03/2006, 08:04
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
De acuerdo Gracias...

No era con mala leche ni nada, era simplemente para que volviera a la primera pagina, sin mala intencion. Se que quien contesta aqui es por ayudar y lo agradezco.

Lo probaré ahora. GRACIAS...
  #7 (permalink)  
Antiguo 29/03/2006, 08:25
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
Cita:
Iniciado por Sanva
Código:
num=4 
while (num>3){
    num=Math.round(Math.random()*10)
}
y eso es para... generar un numero entre 0 y 4 ...
hay varias cosas innecesarias
para qué sacar un numero aleatorio entre 0 y 10?
para qué hacer un bucle?

se puede obtener un numero aleatorio de una mejor manera

Código:
var random_entre:Function = function(minimo:Number,maximo:Number):Number{
	return Math.floor(Math.random()*(maximo-minimo+1))+minimo;
}
y para aplicarlo a tu caso:

this['resp_'+random_entre(0,4)] = "El texto que quieres";
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #8 (permalink)  
Antiguo 29/03/2006, 08:28
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta no es mas sencillo...

Ya me funciona, y el numero aleatorio lo saque con random, sin mas:

j=random(4);

¿No es mas sencillo? ¿Que limitaciones tiene?
  #9 (permalink)  
Antiguo 29/03/2006, 08:41
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 3 meses
Puntos: 1
Ummm genial luistar.

Cita:
y por querer aprender cada día más ayudando como otros me ayudan a mí...
Lo mejor es intentar ayudar... siempre acabas aprendiendo cosas nuevas
  #10 (permalink)  
Antiguo 29/03/2006, 08:50
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
random();
es una función independiente
Math.random() es un método que pertenece a la clase Math

por lo que la primera no encaja en la filosofía de POO

y no te extrañe que en versiones futuras ya no se use la función random()
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #11 (permalink)  
Antiguo 29/03/2006, 10:37
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta y si es un array?

Ya esta claro que para referirme a una variable es:

this("resp_"+num)

Y si es una array y tb tengo q poner el elemento?:

resp_1[5]

He probado varias combinaciones pero no doy con la adecuada:

this("resp_"+num... y ahora como pongo el elemento???

GRACIAS...
  #12 (permalink)  
Antiguo 29/03/2006, 10:44
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
para acceder al valor del elemento de un array

mi_array[numero_de_elemento]

no entiendo bien lo que intentas
resp_1 es un array? elemento del algun array?
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #13 (permalink)  
Antiguo 29/03/2006, 10:50
 
Fecha de Ingreso: junio-2004
Mensajes: 91
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta a ver...

Empezamos de cero para no liarnos:

mi_array1 es un array.

para acceder a un elemento es mi_array1[numero];

supongamos que tengo varios arrays llamados mi_array1, mi_array2...

y quiero acceder al elemento 5 de uno de esos arrays, y cual es lo determino por una variable que guarda un numero,y seria:

x=1;
para referirme a una variable mediante otra seria:

this("mi_array"+x) y ahora como especifico el elemento?
...
  #14 (permalink)  
Antiguo 29/03/2006, 12:04
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
Código:
//---------------------->
var random_entre:Function = function(minimo:Number,maximo:Number):Number{
	return Math.floor(Math.random()*(maximo-minimo+1))+minimo;
}

var array_1:Array = new Array('a0','a1','a2','a3','a4','a5');
var array_2:Array = new Array('b0','b1','b2','b3','b4','b5');
var array_3:Array = new Array('c0','c1','c2','c3','c4','c5');
var array_4:Array = new Array('d0','d1','d2','d3','d4','d5');
var array_5:Array = new Array('e0','e1','e2','e3','e4','e5');

//el cuarto elemento de un array al azaar
var array_al_azaar:Array = this['array_'+random_entre(1,5)];
trace( array_al_azaar[4] );

//un elemento al azaar de un array al azaar
var otro_al_azaar:Array = this['array_'+random_entre(1,5)];
trace( otro_al_azaar[random_entre(0,otro_al_azaar.length-1)] );
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.