Ivan escribió: > si en un bucle pones trace (acordeon_acc.nombre[i]) y te pone undefined, > pero pones trace (acordeon_acc.nombre[1]) y te da correcto, el fallo parece > estar en que no entiende "largo" para asignarle un valor correcto a i. > prueba a trazar "largo" antes y durante el bucle, a ver que te dice. > Un saludo. > > Hola Ivan, Muchas gracias por contestar. Largo lo entiende bien, porque crea el Accordion con las pestañas necesarias, y el texto del primer hijo ( es decir el que se ve en las pestañas) también, el problema es que al hacer el bucle para asignar un nombre de instancia dinámicamente que corresponda al "contenido" de dentro de la pestaña no me entiende la variable dentro del nombre de instancia, no se si me he explicado bien, pego el código entero para explicarlo mejor:
<code> //importo el componente TextArea que esta en la libreria import mx.controls.TextArea; //creo el objjeto xml datosAgenda = new XML(); datosAgenda.ignoreWhite = true; //lo que sucede al cargar... datosAgenda.onLoad = function (success){ if (success){ //Creo los arrays donde iran los datos largo = datosAgenda.firstChild.childNodes.length; opcion = new Array(largo); contenido = new Array(largo); //Lleno los arrays for (i=0; i<largo; i++){ opcion[i] = datosAgenda.firstChild.childNodes[i].attributes.id; contenido[i] = datosAgenda.firstChild.childNodes[i].attributes.contenido; } //lanzo la funcion que llena el Accordion llenarAcordeon(); } else{ trace("No se pudo cargar el XML"); } } //cargo el xml datosAgenda.load("agenda.xml"); /************* FUNCIONES ****************/ function llenarAcordeon(){ //Atacheo el Accordion attachMovie("Accordion", "acordeon_acc", 1); //Propiedades del Accordion acordeon_acc.setSize(400, 400); acordeon_acc._x = 300; acordeon_acc._y = 50; //Le pongo las opciones de la pestañas del Accordion for (var i:Number = 0; i<largo; i++){ acordeon_acc.createChild("View", "nombre"+i ,{label: opcion[i]}); } //creo los hijos para el contenido usando un componente TextArea // aqui es donde tengo problemas for (var k:Number = 0; k<largo; k++) { //intento crear el texto con esta linea // acordeon_acc.nombre[k].createChild(TextArea, "texto"+k, {text: contenido[k], _width:400, _height:400, scroll: false, wordWrap:true}); //no me funciona, pero si pongo lo siguiente: //acordeon_acc.nombre0.createChild(TextArea, "texto"+k, {text: contenido[k], _width:400, _height:400, scroll: false, wordWrap:true}); //funciona bien, solo que no me sirve porque lo pone solo en el contenido de una pestaña //si le pido que trace esto: trace (acordeon_acc.nombre[k]); //me devuelve undefined // y me tiene muy desconcertado } // // //Listener para cuando se cambia de vista alCambiar = new Object(); alCambiar.change = function(evento) { trace("Has cambiado a la opción "+acordeon_acc.getChildAt(acordeon_acc.selectedIndex).label); trace("Número de opción: "+(acordeon_acc.selectedIndex+1)+"/"+acordeon_acc.numChildren); }; //Eventos acordeon_acc.addEventListener("change", alCambiar); }; </code> Y el xml, no muy ortodoxo, pero que lo uso para probar <code> <?xml version="1.0" encoding="utf-8"?> <XMLmenu> <encabezado id="Lorem ipsum" contenido="dolor sit amet, consectetuer adipiscing elit. Suspendisse neque erat, condimentum id, rutrum vitae, dapibus nec, nisi. Nunc fermentum urna vitae enim. Mauris id nulla. In rutrum risus id lectus. Nulla nec augue a urna fringilla posuere. Nullam interdum est molestie lacus. Sed vitae velit. Nullam fringilla tempus augue. Nam suscipit. Duis scelerisque justo at nisl fermentum accumsan. Phasellus mollis aliquam dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nulla ac diam. Sed tempor faucibus urna."></encabezado> <encabezado id="Dolor sit" contenido="Nunc fermentum urna vitae enim. Mauris id nulla. In rutrum risus id lectus. Nulla nec augue a urna fringilla posuere. Nullam interdum est molestie lacus. Sed vitae velit. Nullam fringilla tempus augue. Nam suscipit. Duis scelerisque justo at nisl fermentum accumsan. Phasellus mollis aliquam dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nulla ac diam. Sed tempor faucibus urna."></encabezado> <encabezado id="Amet Loquitor" contenido="Nam suscipit. Duis scelerisque justo at nisl fermentum accumsan. Phasellus mollis aliquam dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nulla ac diam. Sed tempor faucibus urna."></encabezado> </XMLmenu> </code> No se que es lo que estoy haciendo mal, y ya no se que probar o donde buscar... os pido por favor que me echéis una mano, porque esto, necesito meterlo en un proyecto, en el que ya voy retrasado... Muchísimas gracias aunque solo sea por leer hasta aquí. Saludos Rafa > ----- Original Message ----- > From: "Rafael Garc í a Lepper" <[EMAIL PROTECTED]> > To: <asnativos@5dms.com> > Sent: Wednesday, January 25, 2006 5:43 PM > Subject: [ASNativos] Componente Accordion y xml cargado dinámicamente > > Yo escribí: >> Hola a todos, >> >> Estoy intentando usar el componente Accordion, cargando desde un xml lo que >> voy a mostrar en la pestaña y en el ³child² de la pestaña, el caso es que >> llego hasta la pestaña, y se ve bien, pero no consigo que muestre nada en >> el hijo, he visto varios tutoriales, donde lo que meten en los hijos son mc >> pero ninguno de ellos depende del largo de un xml para crear el numero de >> pestañas y rellenarlas con el contenido del xml. Solo quiero que muestre >> texto, y he creado un clip con un campo de texto que quiero adjuntar, pero >> estoy en las mismas porque me esta fallando el nombre de instancia al crear >> el hijo >> >> Se que me esta fallando este código >> : >> <code> >> for (i=0; i<largo; i++){ >> >> acordeon_acc.createChild("View", "nombre"+i ,{label: opcion[i]}); >> >> acordeon_acc.nombre[i].createChild("cliptexto", "texto"+i); >> >> } >> </code> >> donde largo es: largo = datosAgenda.firstChild.childNodes.length; >> >> Soy Bastante novato en estas cosas, y no estoy seguro por que cuando le pido >> trace (acordeon_acc.nombre[i]); me devuelve undefined, sin embargo si en >> lugar de i pongo un numero todo funciona, lo malo es que no me sirve, porque >> necesito poder actualizar los datos en el xml, ademas no entiendo tampoco >> por qué i no es un numero si así se lo estoy diciendo el caso es que ando >> flojo de sintaxis y me imagino que por ahí van los tiros... Que seguramente >> veis el código y pensáis que tío mas bruto... >> Me podéis decir que pasa y por donde podría continuar? >> >> Muchas gracias. ---------------------------------- Lista ASNativos:asnativos@5dms.com http://www.5dms.com/listas ----------------------------------