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
----------------------------------

Responder a