Hola a todos:
El problema quiz�s es que no entendemos todo lo que quieres hacer, cuando
quieres acceder a diferentes niveles, con index es cuando se complica, ya
que no puede evaluarlo directamente flash, por tanto tendr�s que hacerte un
parser que interprete la cadena y "navegue" hasta ese nivel, o por lo menos
es lo que me parece entender.
si el nivel al que quieres llegar, es ese, tendr�as que hacer:
valor = tienda["listaProductos"]["Producto"][0]["descripcion"][0]._valor;
Ya que Flash no puede evaluar correctamente un camino directo a un index de
un array ni puede identificar los puntos como lo hace normalmente. Es decir,
cuando pides que eval�e la cadena
"productos.listaProductos.producto[0].descripcion[0]", lo que hace flash es
buscar un nombre de objeto o propiedad que coincida exactamente con esa
cadena, nunca interpretar� los puntos o los corchetes como accesos internos
como si hace si escribes el literal. Si necesitas imperiosamente pasarle la
cadena completa, deber�s hacer un parser, la mejor soluci�n es una funci�n
recursiva(funciona por que lo he probado):
[code]
function localizaObjecto (referer, cadena)
{
var punto = cadena.indexOf (".");
var corchete = cadena.indexOf ("[");
if (((punto != -1 && corchete != -1) && (punto < corchete)) || (punto != -1
&& corchete == -1))
{
var apuntador = referer[cadena.substring (0, punto)];
if (cadena.substring (index2 + 2, cadena.length).length != 0)
{
return localizaObjecto (apuntador, cadena.substring (punto + 1,
(cadena.length)));
}
else
{
return apuntador;
}
}
else if (((punto != -1 && corchete != -1) && (punto > corchete)) || (punto
== -1 && corchete != -1))
{
var apuntador = referer[cadena.substring (0, corchete)];
var name = cadena.substring (0, corchete);
var index2 = cadena.indexOf ("]");
var apuntador = apuntador[cadena.substring (corchete + 1, index2)];
if (cadena.substring (index2 + 2, cadena.length).length != 0)
{
return localizaObjecto (apuntador, cadena.substring (index2 +
2,
cadena.length));
}
else
{
return apuntador;
}
}
}
trace (localizaObjecto (tienda,
"listaproductos.producto[0].descripcion[0]")._valor);
[/code]
-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Paulo Carvajal --
Vudumedia.com --
Enviado el: viernes, 05 de marzo de 2004 1:07
Para: [EMAIL PROTECTED]
Asunto: Re: [ASNativos] Convertir cadena en path
Gracias Carlos, Francisco, ninguna de las opciones funciona.
Helmut, creo que no has leido bien la historia, se agradece la aportaci�n en
cualquier caso.
Se que parece una pregunta de novato, pero no encuentro la manera de
conseguirlo.
Todas las opciones ser�an v�lidas si la cadena fuera un solo nivel:
valor = tienda["listaProductos"]._valor;
Pero no parece funcionar cuando hay varias propiedades de objeto
concatenadas en la propia cadena:
valor = tienda["listaProductos.producto[0].descripcion[0]"]._valor;// ni pa
diox
El "eval" tampoco resuelve nada de momento. Un absurdo de apariencia
sencilla.
Gracias de todas formas,
Paulo.
----- Original Message -----
From: "Carlos Terradillos Guti�rrez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, March 04, 2004 8:43 PM
Subject: RE: [ASNativos] Convertir cadena en path
No estoy nada seguro pero...
valor = mc["path"]._valor;
Saludos.
:��: croma2 :������������������������:
: Carlos Terradillos Guti�rrez :
::::::::::::::::::::::::::::::::::::::
> -----Mensaje original-----
> De: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] En nombre de Francisco Salas
> Enviado el: jueves, 04 de marzo de 2004 19:58
> Para: [EMAIL PROTECTED]
> Asunto: RE: [ASNativos] Convertir cadena en path
>
>
> y asi?
>
> valor = eval
> ("tienda.listaProductos.producto[0].descripcion[0]")._valor
>
> Por probar, digo...
>
>
> -----Mensaje original-----
> De: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] nombre de Paulo Carvajal --
> Vudumedia.com---
> Enviado el: jueves, 04 de marzo de 2004 19:31
> Para: [EMAIL PROTECTED]
> Asunto: [ASNativos] Convertir cadena en path
>
>
> Hola a todos
> Tengo una cadena que hace referencia a una propiedad de un
> objeto dentro de
> un clip (la cadena es el path hasta esa propiedad) y no
> consigo "evaluarla"
> como path.
> La cadena es
> "listaProductos.producto[0].descripcion[0]._valor" y tienda es
> el clip donde est� el objeto listaProductos
>
> Las pruebas que no van:
> valor = tienda["listaProductos.producto[0].descripcion[0]._valor"];
> valor = tienda["listaProductos.producto[0].descripcion[0]"]._valor;
> valor = eval
> ("tienda.listaProductos.producto[0].descripcion[0]._valor")
>
> As� s� que chuta, pero no me vale, tiene que ser string:
> valor = tienda.listaProductos.producto[0].descripcion[0]._valor
>
> Tiene que ser una tonter�a, pero no lo veo, hoy ya no veo
> nada, la verdad.
>
> Gracias y un saludo,
> Paulo.
>
> <!-------------------------------
> Lista ASNativos:
> subscripciones/desubscripciones
> http://www.sidedev.net/asnativos
> Archivos:
> sin busqueda (+actualizado):
> http://www.sidedev.net/archive
> con busqueda (-actualizado)
> http://www.mail-archive.com/[EMAIL PROTECTED]/
> -------------------------------->
>
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
Archivos:
sin busqueda (+actualizado):
http://www.sidedev.net/archive
con busqueda (-actualizado)
http://www.mail-archive.com/[EMAIL PROTECTED]/
-------------------------------->
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
Archivos:
sin busqueda (+actualizado):
http://www.sidedev.net/archive
con busqueda (-actualizado)
http://www.mail-archive.com/[EMAIL PROTECTED]/
-------------------------------->
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
Archivos:
sin busqueda (+actualizado):
http://www.sidedev.net/archive
con busqueda (-actualizado)
http://www.mail-archive.com/[EMAIL PROTECTED]/
-------------------------------->