Rieccomi ancora qua.
è da qualche giorno che sto impazzendo, sto provando a caricare dei dati passati tramite php, che mi vanno a popolare dei MovieClip e delle textarea.
Premetto che non è la prima volta che carico i dati da DB-Php e creo movieClip dinamicamente, ma questa volta sto avendo un pò di problemi.
Mi sono dovuto complicare un pò la vita perchè dovevo utilizzare la Google map, ed essendo che non supporta AS2, ho creato un swf in AS3 che è diventato il contenitore di tutto il sito, che richiama i vari swf esterni. In sostanza la mia struttura è diventata così:
la lunghezza delle frecce indica il livello "virtuale" in cui vengono caricate.codice:Main(AS3) | |-> Index (AS2) | |----> Home (AS2) | |----> Società (AS2) | |----> Servizi (AS2) | |----> Affiliati(AS2) | |------------> GMap (AS3)
per caricare i vari swf ho usato l'oggetto Loader, gestito da Main.
Andiamo al problema vero e proprio:
nella pagina affiliati, ho una sezione a sinistra, dove verranno mostrate 3 foto per volta, con delle frecce scorro per mostrare il resto delle foto.
ho provato 2 strade
1. inserisco nella timeline 3 movieClip che conterranno le mie foto, e con MovieClipLoader gestisco il caricamento dell'immagine esterna.
codice://quando entra nel frame va alla funzione visualizza_dati visualizza_dati(); function visualizza_dati(){ //la variabile dati contiene i dati caricati dal php esterno //index è un numero sequenziale per pescare i dati dalle variabili. fileToLoad1 =_root.dati["logo_aff" + index]; fileToLoad2 =_root.dati["logo_aff" + index+1]; fileToLoad3 =_root.dati["logo_aff" + index+2]; var loader1:MovieClipLoader = new MovieClipLoader(); var loader2:MovieClipLoader = new MovieClipLoader(); var loader3:MovieClipLoader = new MovieClipLoader(); var loadListener:Object = new Object(); var loadListener2:Object = new Object(); var loadListener3:Object = new Object(); loadListener1.onLoadStart = function(loadTarget) { foto1.image_mc._visible = false; } loadListener2.onLoadStart = function(loadTarget) { foto2.image_mc._visible = false; } loadListener3.onLoadStart = function(loadTarget) { foto3.image_mc._visible = false; } loadListener1.onLoadInit = function(loadTarget) { loader1.removeListener(loadListener1); foto1.image_mc._visible = true; }; loadListener2.onLoadInit = function(loadTarget) { loader2.removeListener(loadListener2); foto2.image_mc._visible = true; }; loadListener3.onLoadInit = function(loadTarget) { loader3.removeListener(loadListener3); foto3.image_mc._visible = true; }; loader1.addListener(loadListener1); loader2.addListener(loadListener2); loader3.addListener(loadListener3); loader1.loadClip(fileToLoad1, foto1.image_mc); loader2.loadClip(fileToLoad2, foto2.image_mc); loader3.loadClip(fileToLoad3, foto3.image_mc); } //evento al click sulla freccia giu freccia_dwn.onPress = function() { index++; loader1.unloadMovieClip(foto1.image_mc); loader2.unloadMovieClip(foto2.image_mc); loader3.unloadMovieClip(foto3.image_mc); visualizza_dati(); }; stop();
In prova filmato, tutto funziona perfettamente.
Nel browser, le foto vengono mostrate correttamente, ma il problema nasce quando provo a cliccare sulla freccia per scorrere, in teoria dovrebbero scorrere di una foto per volta, caricando le nuove immagini, ma non succede
2.carico dinamicamente dalla libreria 10 movieClip (ma ne mostrerà solo 3, tramite maschera)
uso questo codice:
In prova filmato, le foto vengono caricate correttamente.codice:/*la variabile prima_apertura viene impostata nel frame precedente, in modo da non creare, ogni volta che entra nel frame, i movieClip.*/ if (prima_apertura == 1) { create_clip(); prima_apertura = 0; } visualizza_dati(); //funzione utiliazzata per mostrare i dati degli affiliati function visualizza_dati() { //carico le movie clip con i dati //imposto i=index e decremento fino ad arrivare ad 1 for (var i:Number = index - 1; i >= 1; i--) { //creo tre MovieClipLoader var loader:MovieClipLoader = new MovieClipLoader(); //Crea tre oggeti listener var loadListener:Object = new Object(); //assegno alle variabili il file da caricare var fileToLoad = _root.dati["logo_aff" + i]; //collego gli oggetti loadListener per gestire gli eventi ai MovieClip loader.addListener(loadListener); //carico l'immagine nel movieclip loader.loadClip(fileToLoad,contenitore_loghi["logo_mc" + i].image_mc); } //quando inizia il caricamento, abbassa l'alpha dei movieClip loadListener.onLoadStart = function(loadTarget) { for (var i:Number = index - 1; i >= 1; i--) { setProperty("contenitore_loghi.logo_mc" + i + ".image_mc", _visible, false); } }; //quando finisce il caricamento e le immagini sono realmente utilizzabili loadListener.onLoadInit = function(loadTarget) { for (var i:Number = index - 1; i >= 1; i--) { loader.removeListener(loadListener); setProperty("contenitore_loghi.logo_mc" + i + ".image_mc", _visible, true); setProperty("contenitore_loghi.preload_mc" + i, _visible, false); } }; } //funzione usata per duplicare 10 volte il movieclip che contiene i loghi function create_clip() { //prendo dalla libreria il movieclip che conterrà i loghi //li metto dentro al movieclip contenitore così posso usare una sola maschera this.attachMovie("contenitore_loghi","contenitore_loghi",this.getNextHighestDepth()); contenitore_loghi._x = -145.20; contenitore_loghi._y = 0; contenitore_loghi.setMask(mask_logo); for (index = index; index <= 10; index++) { contenitore_loghi.attachMovie("logo_mc","logo_mc" + index,contenitore_loghi.getNextHighestDepth()); setProperty("contenitore_loghi.logo_mc" + index, _x, 10); setProperty("contenitore_loghi.logo_mc" + index, _y, 160 * (index - 1)); } } //evento al click sulla freccia giu freccia_dwn.onPress = function() { //ancora non implementato }; stop();
Nel browser, in locale, funziona correttamente.
su internet invece le foto non vengono caricate, per farle caricare devo far ricaricare lo stesso frame.
il romanzo è finito![]()
spero che si è capito, e soprattutto che qualcuno mi aiuti![]()
grazie a tutti!


Rispondi quotando
