Referencias mediante String
A ver, estoy aquí peleándome por que una Array multidimensio nal me devuelva un valor. Os explico.
Tengo una Array ll a mada instalacionesArray en la _root.
Para acceder a cada uno de los valores debería hacer <code>instalacionesArray[x].nombre_es;</code>
Pero claro, en el mismo nivel de la Array también tengo la versión en inglés <code>que es instalacionesArray[x].nombre_en;</code>
Pues me haria feliz poder hacer algo equivalente a:
<code>if(_root.idioma==1){
lengua="_es";
}else{
lengua="_en";
}
cadena1="nombre"+lengua;
trace(_root.instalacionesArray[x].cadena1);
</code>
Pero va a ser que no va, porque en este caso busca "cadena1" como si estubiese en la Array, como si fuese una columna más en [x].
¿Cómo lo haríais?
marcosmedina
Muchas gracias, quizás lo use para la próxima vez, por ahora no me apetece tener q reescribir mucho código, si no encuentro una solución me remitiré a hacer IF y cosas por el estilo. Es lo que hay. El partido que le saco a hacerlo en una Array de este tipo es que puedo ordenarla basándome en un sólo campo (el campo fecha por ejemplo...) y entonces no me sale a cuenta cambiarlo mucho ahora. Si encuentro la solución la postearé para que sea de provecho para los demás.
elsuricatorojo
Esto es cuestion de como estructurar los datos y ahí cada uno tiene su estilo propio. Veo que tu basas el idioma en un sufijo "_es" o "_en" y utilizas un array multidemnsional.
Yo, a bote pronto y no entrando en soluciones mas complejas basadas en clases, utilizaría un objeto el cual tuviera "subobjetos" y cada uno de ellos con parametros String con las cadenas de cada idioma:
<code>
var data:Object=new Object()
data.es=new Object()
data.es.nombre="mi nombre"
data.en=new Object()
data.en.nombre="my name"
</code>
Puedes utilizar una función que devuelva la cadena de ese idioma:
<code>function traducir(idioma:String, termino:String):String{
return data[idioma][termino]
}
trace (traducir("es", "nombre"))
trace (traducir("en", "nombre"))
</code>
...pero ya te digo hay mil formas o modelos de datos. Es cuestión de ir probando con cual te sientes mas comodo.
marcosmedina
A ver funcionar funciona, la Array está bien, lo sé porque extrayendo los datos me los devuelve correctamente (todos). Pero quiero poder ahorrarme el tener que hacer un if para comprovar el idioma y cambiar campo por campo "manualmente".
Si os sirve de algo, al crear la Array hago
<code>instalacionesArray=new Array();</code>
y para añadir contenidos hago un for recorriendo un xml, saco todos los datos en variables y luego se los enchufo así:
<code>instalacionesArray.push({titulo_es:titulo_es_temp, titulo_ca:titulo_ca_temp, titulo_en:titulo_en_temp, texto_es:texto_es_temp, texto_ca:texto_ca_temp, texto_en:texto_en_temp, imagen:imagen_temp});</code>
ozke
Los arrays multidimensionales en actionscript requieren que crees un array para cada subarray. (Prueba new Array en los nuevos subArrays).
marcosmedina
Me da "undefined"
elsuricatorojo
Hola,
Prueba con:
<code>
_root.instalacionesArray[x][cadena1]
</code>