• User

    galleria di immagini dinamica (che non va...)

    Premesso: sono assolutamente principiante.

    Il mio obiettivo è creare una galleria di immagini che senza intervento utente scorrano ciascuna preceduta da una descrizione.
    Ogni descrizione viene visualizzata con effetto di fade on e fade off e lo stesso l'immagine.
    Le immagini possono essere in numero variabile ed hanno nomi da 0.jpg a n.jpg.
    C'è un file di testo esterno dove sono contenute le descrizioni delle immagini e una variabile con il numero di elementi.

    Ecco cosa ho provato a fare:

    FRAME 1:

    
    // carica descrizioni //
    dati = new LoadVars(); 
    _global.numElem = 0;
    dati.onLoad = function (success)
    { 
         if (success)
        { 
             _global.numElem = dati.tot;
             titoli =new Array(); 
             for(indDesc = 0;indDesc < numElem; indDesc++)
             {        
                   pushed = titoli.push(dati["d" + indDesc]); 
              }
          gotoandplay(3);
         }
         else
         { 
               trace("problemi con il file di testo");
         } 
    }
     
    dati.load("descrizioni.txt");
    
    

    FRAME 2:

    
    stop();
    
    

    FRAME 3:

    
    // carica le foto //
    var indFoto = 0;
    var car = new MovieClipLoader();
    url = ""; /* eventuale percorso per le immagini */
    for (indFoto = 0; indFoto < _global.numElem; indFoto++)
    {
          car.loadClip(url + indFoto + ".jpg", "mcPortafoto" + indFoto);
    // qui il primo problema; non sapendo a priori quante foto avrò come posso sapere quanti portafoto devo creare? come posso creare un numero di portafoto dinamicamente? oppure ci sono altre soluzioni?
    };
    indFoto = 0;
    

    FRAME 20:

    
    mcContDesc.varDesc = titoli[indFoto];
    // metto nel contenitore della descrizione la descrizione caricata
    
    

    dal frame 20 in poi comincia l'effetto "fade in" e poi "fade off" sul contenitore della descrizione.
    ebbene questo funziona!

    FRAME 95:

    
    // carica una foto per volta
     
    // secondo problema: avevo provato a scrivere qualcosa del tipo [mcPortafoto + indFoto].x = 50 ecc. ma mi dà errore; per testare cmq la cosa ho inserito il nome di una delle istanze dei portafoto; come posso risolvere?
     
    mcPortafoto0._x = 50;
    mcPortafoto0._y = 110;
    mcPortafoto0._visible = true;
    
    

    Dal frame 95 in poi inizia il fade in ed il fade off dell'immagine.
    E questo è il terzo problema: appare il bel contenitore ma non ha caricato un bel niente!
    Come mai?

    FRAME 210:

    
    indFoto++;
    if (indFoto == 10)
     {
     indFoto = 0;
     };
     
    gotoAndPlay(21);
    
    

    Grazie mille ciao!


  • Super User

    Ciao,
    numElem è il numero totale di immagini, quindi nel frame 210 al posto di if (indFoto == 10) scrivi if (indFoto == numElem)


  • User

    Hai ragione grazie mille, è rimasto quel valore che avevo messo all'inizio prima di tentare di rendere dinamico il tutto.
    Lo correggo ma purtroppo non mi risolve i problemi! :arrabbiato:


  • Super User

    Quali problemi ?


  • User

    Chiedo scusa, ho scritto il primo post in modo un po' disordinato ed in effetti non si notano bene i "problemi" 😄

    Il primo è che a priori non so quanti portafoto devo creare perchè il numero delle immagini è sconosciuto fino alla lettura del .txt; ma qui penso di poter risolvere, mi pare esista un "duplicate" che possa fare al caso mio da usare n volte.

    Il secondo è al frame 95.
    Lì ho scritto

    mcPortafoto0._x = 50;
    mcPortafoto0._y = 110;
    mcPortafoto0._visible = true;
    

    Però non va bene perchè non è mcPortafoto0 ma mcPortafoton...
    Ho provato a scrivere degli obbrobri tipo [mcPortafoto + indFoto].x = 50 ma non gli piace chissà perchè.

    Ed il terzo problema è che... L'immagine non mi viene caricata.
    Almeno per il mcPortafoto0 mi sarei aspettato di vederla... 😞

    Grazie.


  • Super User

    prova con this["mcPortafoto" + indFoto].x oppure
    this.["mcPortafoto" + indFoto].x

    L' immagine non la carica perchè hai solo istanziato il MovieClipLoader.
    Devi anche aggiungere un Object che funge da listener:
    var obj:Object=new Object();

    poi devi assegnare il listener
    car.addEventListener(obj);
    caricare l' immagine
    car.loadClip(....);

    poi devi intercettare l' evento per cui il listener è in ascolto
    obj.onLoadComplete=function()
    {
    trace('caricato');
    }

    Ti invito anche a dare u' occhiata alla guida Flash gurdando gli esempi della classe MovieClipLoader