En lo personal considero que las funciones recursivas para trabajar con XML son demaciado ineficientes.
bajen el "xpath" class PARA FLASH claro! y prueben que les parece.
saludos
----- Original Message ----- From: "Joseba Alonso" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, December 15, 2004 6:23 AM
Subject: RE: [ASNativos] problema de recursividad en actionscript
Precisamente los bueno de las funciones recursivas es que son independientes de la profundidad. Muchas veces la información no es homogénea en ese sentido. Nodos que pueden tener hijos con mucha profundidad y otros no.
Yo lo que suelo hacer es generar un modelo de datos local a partir de un XML y convirtiéndolo a un patrón composite a medida. Para parsearlo utilizo una función recursiva y así no tengo que preocuparme por futuros cambios en la estructura del documento mientras la semántica sea la misma.
El objeto XML es bastante rápido desde Flash MX donde ya se hacía nativamente, así que no he tenido problemas de velocidad, de hecho normalmente es muy rápido, incluso con 5 y 6 niveles de profundidad. De todas maneras, gracias por el apunte. Si alguna vez tengo problemas con la velocidad probaré a no usar recursividad. Seguro que es más rápido (menos llamadas a funciones, menos búsquedas en el stack interno). Pero de mientras las funciones recursivas me parecen más sencillas de programar, menos liosas y más fáciles de cambiar.
Por cierto, usar AS1 o AS2 no tiene ninguna repercusión en la velocidad, al final el bytecode producido es prácticamente idéntico.
Un saludo,
Joseba Alonso www.5dms.com www.sidedev.net
-----Mensaje original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Hari Seldon Enviado el: martes, 14 de diciembre de 2004 19:52 Para: [EMAIL PROTECTED] Asunto: RE: [ASNativos] problema de recursividad en actionscript
¿Para parsear XML?
¿De cuántos nodos de profundidad?
Yo en árboles de más de 3 nodos de profundidad, obtenía mejores resultados leyéndolos secuencialmente, que utilizando funciones recursivas. Eso si, con AS 1.0.
(Y te aseguro que hice un testeo importante, los árboles q teníamos pesaban entre 50 y 100 kb y la velocidad de parseo y que no se quedase "torrado" el flash player eran bastante vitales)
Saludos.
-----Mensaje original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Joseba Alonso Enviado el: martes, 14 de diciembre de 2004 11:19 Para: [EMAIL PROTECTED] Asunto: RE: [ASNativos] problema de recursividad en actionscript
A ver si me equivoco...pero creo que no declaras la variable en el for. Si no es por eso, será por otra razón pero la variable se esta haciendo persistente en el objeto de activación de la función.
Deberías tener algo así:
for(var i:Number=0;i<=4;i++)
sino es así envía una versión reducida de la función recursiva a ver que pasa. Yo las uso mucho para parsear XML y nunca he tenido ese problema.
Un saludo,
Joseba Alonso www.5dms.com www.sidedev.net
-----Mensaje original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de David Pariente Enviado el: martes, 14 de diciembre de 2004 10:56 Para: ACTION SCRIPT Asunto: [ASNativos] problema de recursividad en actionscript
Hola a [EMAIL PROTECTED]
Bien...estoy haciendo un foro en flash, para lo que estoy usando recursividad.
Dentro de una funcion, hago un bucle for, i dentro de este, la funcion de llama a si misma.
Pues...cuando la recursividad se efectua hacia adentro...es decir...la funcion se llama asi misma, i se vuelve a hacer todo el bucle for de nuevo, no hay ningun problema.
El problema biene cuando la recursividad es hacia afuera...es decir...salgo de la funcion...i vuelvo a la funcion madre. al volver a la funcion madre, EL INDICE DEL BUCLE FOR SE HA ACTUALIZADO!! :O
Es decir...por ejemplo...tengo un for i un indice que ejecuta el for desde i=0 a i=4...en i=2 la funcion se ejecuta a si misma...i hace el bucle for de i=0 a i=4...ningun problema, cuando acaba, vuelve a la funcion madre ...i DEBERIA CONTINUAR EN EL i=3...pero en lugar de eso...simplemente deja de ejecutarse i sale del bucle for.
Da la impresion de q al volver a la funcion madre, i vale 4, en vez de valer 3 que es lo q deberia pasar...:O
En otros lenguages no tenia problemas, ya que i, aun teniendo el mismo nombre, se guarda en casillas de memoria diferentes. pero en flash da la impresion que i se machaca a si mismo :O
bien...seguramente alguno de vosotros ha utilizado recursividad en actionscript i se ha encontrado antes con este problema. Estoy seguro que debe de haber alguna forma de hacerlo, que no sea muy chapucera :)
Muchas gracias a [EMAIL PROTECTED], a ver si a alguien se le ocurre algo :)
______________________________________________ Renovamos el Correo Yahoo!: ¡250 MB GRATIS! Nuevos servicios, más seguridad http://correo.yahoo.es ---------------------------------- Lista ASNativos:[EMAIL PROTECTED] http://www.5dms.com/listas ----------------------------------
---------------------------------- Lista ASNativos:[EMAIL PROTECTED] http://www.5dms.com/listas ----------------------------------
---------------------------------- Lista ASNativos:[EMAIL PROTECTED] http://www.5dms.com/listas ----------------------------------
----------------------------------
Lista ASNativos:[EMAIL PROTECTED]
http://www.5dms.com/listas
----------------------------------
---------------------------------- Lista ASNativos:[EMAIL PROTECTED] http://www.5dms.com/listas ----------------------------------