Comunidad de diseño web y desarrollo en internet online

eval para identificar una variable

Citar            
MensajeEscrito el 17 Sep 2006 12:14 pm
Buenas estoy haciendo una oca e intento hacer esto:

eval("_global.Total" + Turno) += Ultimatirada;

Pero me dice que la parte de la izquierda debe ser una variable. En Turno tengo almacenado el turno (rojo, verde, azul o amarillo, y en UltimaTirada el ultimo valor que ha salido en el dado.
En las variable TotalVerde, Azul.... almaceno los totales de cada ficha.
Tambien lo he intentado con

_global.eval("Total"+Turno) += Ultimatirada

Pero me sigue dando el mismo error.
¿alguien sabe como hacerlo? (aparte de con un if)

Por db

63 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Sep 2006 12:42 pm
No entiendo de que va el EVAL, pero puedes probar con

Código :

el_eval = eval("_global.Total" + Turno)
el_eval += Ultimatirada

Así ya es una variable. A ver si te sirve.

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 17 Sep 2006 06:58 pm
Lo que pasa es que asi no se almacena el nuevo valor en la variable TotalVerde (o TotalTurno). Yo busco algo que lo haga en una sola linea

Por db

63 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Sep 2006 07:28 pm
Prueba así:
_global["Total"+turno]

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 17 Sep 2006 07:33 pm
Muchas gracias zah. Acababa de leer en la ayuda de flash esto:

En Flash 5 o posterior, no se puede utilizar eval() para establecer y recuperar dinámicamente el valor de una variable o nombre de instancia porque no se puede utilizar eval() en el lado izquierdo de una ecuación. Por ejemplo, sustituya el código

eval ("var" + i) = "first";

por esto:

this["var"+i] = "first"

o esto:

set ("var" + i, "first")


Por lo que lo habia conseguido asi

set("_global.Total" + Turno,eval("Total"+Turno) + UltimaTirada);

Pero tu forma me parece mucho mas clara. Asi sustituyo esto

if(Turno == "Verde"){
_global.TotalVerde += UltimaTirada;
_global.Actual = TotalVerde;
}else
if(Turno == "Rojo"){
_global.TotalRojo += UltimaTirada;
_global.Actual = TotalRojo;
}else
if(Turno == "Azul"){
_global.TotalAzul += UltimaTirada;
_global.Actual = TotalAzul;
}else
if(Turno == "Amarillo"){
_global.TotalAmarillo += UltimaTirada;
_global.Actual = TotalAmarillo;
}


por esto:

_global["Total"+Turno] += UltimaTirada;
_global.Actual = eval("Total"+Turno)

Por db

63 de clabLevel



 

opera

 

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