• User

    Dubbi su Xml Gallery

    Ciao a tutti sto cercano di realizzare una galleria in Flash utilizzando Xml....ovviamente in giro se ne trovano molte ma vorrei capire come funzionano....
    adesso vorrei creare una galleria di foto, per ora solamente far apparire le foto (senza miniature)e con una piccola descrizione

    il codice è questo

    xmlData = new XML();
    xmlData.ignoreWhite = true;
    xmlData.onLoad = loadXML;  //al caricamento fai questa funzione
    xmlData.load("images.xml");
    function loadXML(loaded) {
        if (loaded) {
            xmlNode = this.firstChild;
            //trace (xmlNode);  ti da tutto XML
            image = [];
            
            description = [];
            total = xmlNode.childNodes.length;
            //trace (xmlNode.childNodes.length); = 7
            for (i=0; i<total; i++) {
                trace("*********************************************************");
                image* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
    
                
                trace (" IMAGE* = "+xmlNode.childNodes*.childNodes[0].firstChild.nodeValue);
                trace("*********************************************************");
                description* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
                
                trace (" descrizione* = " +xmlNode.childNodes*.childNodes[1].firstChild.nodeValue);
            }
            
        } else {
            content = "Errore nel caricamento dell XML";
        }
    }
    
    

    la mia principale domanda è.....come faccio a fare in modo che le foto siano messe dentro un MC e distanziato?? riesco solo a farci mettere una foto, sia se faccio un attach e se lo metto sullo stage....non sono un espertissimo di AS ma nemmeno un niubbone....quello che nn riesco a capire è come fare a fare in modo, che ogni volta si crei un MC, che ci sia la foto successiva.....

    grazie


  • Super User

    Ciao Kerotan 🙂

    Dovresti agire dentro il ciclo for function loadXML(loaded).
    Crei una MovieClip vuota con createEmptyMovieClip, fai caricare l' immagine dentro la MovieClip.
    Poi ad esempio dici alla MovieClip:
    clip._x=clip._widthi+10i;


  • User

    buongiorno grazie pe rla risposta, dovrei fare un createEmptyMovieClip dentro il ciclo for giusto=?? in modo tale che crei tanti movieClip tanti quanti sono le foto no?? però come faccio a dire che quel movieclip deve far vedere una foto??

    per poi distanziarli avevo gia capito

    grazie


  • User

    sto provando a mettere questo script all interno del ciclo for
    ho creato un Mc vuoto posizionato sullo stage con nome istanza picture

    picture._x=10;
    loadMovie(image*, picture); //carica l immagine in picture
    trace (image*);
    picture._x+=50;
    
    

    solo che mi carica solo l ultima immagine....grazie a tutti :ciauz:


  • Super User

    Cosa dice il trace di image* ?

    Poi, dichiara var image:Array=new Array(); all' inizio dello script.


  • User

    il trace di image* mi da tutte le immagini del Xml

    1.jpg
    2.jpg
    ....
    7.jpg

    grazie ancora 🙂


  • Super User

    Per caso, non è che le carica tutte, ma le hai tutte sovrapposte e vedi solo l' ultima ?


  • User

    vedo solo l ultima, mi sa che le carica tutte, però vedo solo l ultima


  • Super User

    picture è la MC che carica l' immagine ?

    Se sì, prova a dirgli:
    picture._x= picture._widthi+10i;


  • User

    si è il contenitore che carica l immagini ho provato quello script ma mi sposta solamente la foto ( sempre l ultima)

    non è che bisogna fare in modo che a ogni passaggio del For, il contenitore picture sia in qualche modo duplicato in modo tale che ospiti le altre foto??

    ti ringrazio per le risposte 🙂


  • Super User

    Ad ogni iterazione del ciclo, devi creare una nuova MovieClip vuota:

    var picture:MovieClip=this.createEmptyMovieClip('nome'+i,this.getNextHighestDepth());
    picture.loadMovie....
    picture._x= picture._widthi+10i;

    Però hai un problema,
    picture.width è sempre zero, in quanto non hai un metodo che ti permette di catturare l' evento nel quale flash finisce di caricare l' immagine e allora conosce il width di picture.
    Se le immagini hanno tutte lo stesso width ( supponiamo 200 ), allora usi:
    picture._x= 200i+10i;

    Se invece hanno width divero, allora devi usare MovieClipLoader per caricare l' immagine e poi usare un listener per usufruire dell' evento onLoadInit nel quale Flash ha finito di caricare l' immagine e allora puoi interagire completamente con la clip che l' ha caricata e quindi conoscere il width di tale clip.


  • User

    per adesso supponiamo di avere tutte le foto della stessa grandezza a ogni ciclo del for picture deve incrementare di uno

    avevo pensato a questo

    attachMovie("picture", "picture"+i, this.getNextHighestDepth());
    trace (picutre*)
    picture*._x+=50;

    solo che il trace di picture mi da undefined......

    dopo provo anche la tua soluzione che cmq mi sembra simile a qs

    grazie ancora