http://www.desarrolloweb.com/articul...l-a-flash.html
y ayudándome de un scroll que me bajé de inet.
Pues bien, la lista es muy simple, son nombres de clientes ordenados alfabeticamente. La lista acabada debería de ser así:
A
Angel Apellido Apellido
Antonio Apellido Apellido
C
Carlos Apellido Apellido
Cristian Apellido Apellido
M
Manuel Apellido Apellido
Maria Apellido Apellido
Z
Zoe Apellido Apellido
Y pretendo que se actualice en la película modificando solo el archivo XML que contiene los datos.
Esto es lo que contiene el XML.
lista.xml
Código:
La idea es que se carguen los valores letra (cada letra representa una seccion) y nombre en 2 MovieClips (mc_seccion y mc_cliente)<?xml version="1.0" encoding="iso-8859-1"?> <lista> <seccion letra="A"> <cliente nombre="Angel Apellido Apellido"> </cliente> <cliente nombre="Antonio Apellido Apellido"> </cliente> </seccion> <seccion letra="C"> <cliente nombre="Carlos Apellido Apellido"> </cliente> <cliente nombre="Cristian Apellido Apellido"> </cliente> </seccion> <seccion letra="M"> <cliente nombre="Maria Apellido Apellido"> </cliente> <cliente nombre="Manuel Apellido Apellido"> </cliente> </seccion> <seccion letra="Z"> <cliente nombre="Zoe Apellido Apellido"> </cliente> </seccion> </lista>
Este es el code del action script en flash que me servirá para construir "lista.swf":
Código:
Como veis al final los clips se crean dinamicamente dentro de un MovieClip (contenedor) que los muestra en su interior. Hay una mascara que sirve para hacer el scroll del clip contenedor.listaXML = new XML(); listaXML.ignoreWhite = true; listaXML.load("xml/lista.xml"); listaXML.onLoad = organizarXML; stop(); // Esta es la función encargada de armar los Arrays a partir de los datos function organizarXML() seccion = new Array(); for (yy=0; yy<listaXML.firstChild.childNodes.length; yy++) { seccion.push(listaXML.firstChild.childNodes[yy].attributes.letra); _root[listaXML.firstChild.childNodes[yy].attributes.letra] = new Array(); for (aa=0; aa<listaXML.firstChild.childNodes[yy].childNodes.length; aa++) { _root[listaXML.firstChild.childNodes[yy].attributes.letra].push( listaXML.firstChild.childNodes[yy].childNodes[aa].attributes.cliente); } } mostrarDatos(); } //Funcion para mostrar los datos function mostrarDatos() { //Contruyo la lista intContaClientes = 0; intPosicion = 0; intSeparar = 50; for (aa=0; aa<seccion.length; aa++) { _root.contenedor.attachMovie("mc_seccion", "mc_seccion"+aa, aa); _root.contenedor["mc_seccion"+aa]._y = (intPosicion * intSeparar); _root.contenedor["mc_seccion"+aa]._x = 25; _root.contenedor["mc_seccion"+aa].tx_seccion = seccion[aa]; intPosicion++; } for (bb=0; bb<_root[seccion[aa]].length; bb++) { _root.contenedor.attachMovie("mc_cliente", "mc_cliente"+intContaClientes, 100+intContaClientes); _root.contenedor["mc_cliente"+intContaClientes]._y = (intPosicion * intSeparar); _root.contenedor["mc_cliente"+intContaClientes]._x = 45; _root.contenedor["mc_cliente"+intContaClientes].tx_cliente = _root[seccion[aa]][bb]; intPosicion++; } intContaClientes++; } contenedor.setMask(mask_mc); _root.h_not = contenedor._height; _root.h_mask = mask_mc._height; _root.tramo = _root.h_not-_root.h_mask;
Pues bien, hago todo esto, todos los pasos del tutorial, y al exportar la lista me aparece en todos los valores "UNDEFINED". No se que estoy haciendo mal, creo que es porque la lista va colocada en una carpeta (/secciones/lista.swf) y luego la cargo dentro de una película principal (index.swf).
Puede ser que por esto las construcciones _root.contenedor...., _root[listaXML......, etc no sean válidas? O puede ser porque el linkage de los movieclips no lo haga correctamente? Yo lo hago los mc_cliente y mc_seccion con "export for runtime sharing" apuntando a "secciones/lista.swf"
:(
Alguien sabe donde esta el fallo?