La idea es la siguiente, tengo una lista de productos y sus categorías, como la lista es larga lo voy separando por páginas, al presionar sobre una categoría, se filtra la lista y vuelve a mostrar desde la primera página.
No es nada complicado en el caso de utilizar php, pero con flash se me ha complicado.
En flash tengo un botón de categoría el cual lo voy duplicando por cada categoría que se encuentra en un xml, despues tengo 8 mc en donde voy agregando los datos de los productos a medida que los voy leyendo del xml, el código es el siguiente:
Código ActionScript :
// Variables que vamos a utilizar a lo largo de la pelicula var xmlProductos:XML; var xmlCategorias:XML; registros = 0; paginas = 0; cantRegistros = 5; categoria = -1; clip = this; // Funcion que carga la cantidad de de registros y de páginas dependiendo de una categoría y la cantidad de registros que se desea mostrar por páginas function cargarValores(pCategoria){ var texto_php = new LoadVars; texto_php.onLoad = function() { registros = texto_php.cantidad; paginas = texto_php.paginas; }; texto_php.load(_root.carpeta+"calcular_productos.php?idcat=" + pCategoria + "&cant=" + cantRegistros); }; // Función para cargar las categorías function cargarCategorias(){ var GenCat = new LoadVars; GenCat.load(_root.carpeta+"categorias.php"); xmlCategorias = new XML(); xmlCategorias.ignoreWhite = true; xmlCategorias.onLoad = function(exito){ if(exito){ var i = 0; while(xmlCategorias.firstChild.childNodes[i].firstChild != null){ clip.categoria_mc.duplicateMovieClip ("categoria_mc" + i, i); clip["categoria_mc" + i].txt.text = xmlCategorias.firstChild.childNodes[i].firstChild.firstChild.nodeValue; clip["categoria_mc" + i].idcat.text = xmlCategorias.firstChild.childNodes[i].attributes.id; clip["categoria_mc" + i]._y += (clip["categoria_mc" + i]._height * (i+1)); i++; } } } xmlCategorias.load(_root.carpeta+"categorias.xml"); }; //Funcion para limpiar la lista de productos function limpiarLista(){ for(var i=0;i<8;i++){ clip["producto_mc" + i].codigo.text = ""; clip["producto_mc" + i].producto.text = ""; clip["producto_mc" + i].categoria.text = ""; clip["producto_mc" + i].precio.text = ""; } }; // Función para cargar los productos, pero no mostrarlo function cargarProductos(pCategoria){ var GenProd = new LoadVars; GenProd.load(_root.carpeta+"productos.php?idcat=" + pCategoria); cargarValores(pCategoria); xmlProductos = new XML() xmlProductos.ignoreWhite = true; xmlProductos.load(_root.carpeta+"productos.xml"); }; // Función para mostrar los productos dependiendo de la categoría function mostrarProductos(pNroPag){ limpiarLista(); var inicio = (pNroPag * cantRegistros) - cantRegistros; var final = 0; if(pNroPag == paginas){ final = paginas; } else{ final = pNroPag * cantRegistros; } _root.pos_mc.var1.texto.text = "Inicio = " + inicio; _root.pos_mc.var2.texto.text = "Final = " + final; for(i=inicio;i<final;i++){ clip["producto_mc" + i].codigo.text = xmlProductos.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue; clip["producto_mc" + i].producto.text = xmlProductos.firstChild.childNodes[i].childNodes[2].firstChild.nodeValue; clip["producto_mc" + i].categoria.text = xmlProductos.firstChild.childNodes[i].childNodes[7].firstChild.nodeValue; clip["producto_mc" + i].precio.text = "$" + xmlProductos.firstChild.childNodes[i].childNodes[4].firstChild.nodeValue; } };
A las categorías las carga bien, el problema es al cargar los productos que siempre me muestra undefined, yo lo que estoy haciendo es, primero cargo el archivo xml con la función cargarProdcuctos(pCategoria) en donde le paso la categoría por parametro y por medio de un script php genero el archivo xml, y luego con la función mostrarProductos(pNroPag) los quiero mostrar en los mc de la lista y en cada botón de número de página voy llamando a esta función.
La verdad es que no se porqué al querer cargar los datos del xml en la lista me da undefined, ya que si la parte de cargar los datos lo pongo en el evento onLoad del objeto xml me carga los datos, pero no puedo navegar por las páginas siguientes, solo me carga el primero.
Saludos.