• User

    Problema Loading....

    Ragazzi ho un piccolo grande problema,
    tanto per cambiare dite voi, e avete ragione, ma che ci posso fare? Dunque:

    Ho un pulsante che cliccandolo richiama tramite la funzione: gotoAndPlay(25);

    il frame 25 nel quale ho inserito il seguente codice:

    loadMovieNum("contatore_sito.swf", 3);
    loadMovieNum("caffè letterario.swf", 4);
    loadMovieNum("video.swf", 5);
    stop();

    per caricare i tre swf indicati.

    Ora il mio problema è questo:
    Qunado il sito on line viene caricato per la prima volta i tre swf vengono caricati non contemporaneamente ma in una loro sequenza, prima i file più leggeri poi quelli più pesanti.

    Avevo pensato di inserire un preload iniziale che finisca quando tutti e tre gli swf sono caricati in memoria, ma come fare? dove inserire questo preload? In una nuova pagina?

    Spero di essere stato abbastanza chiaro.........grazie :ciauz:


  • Super User

    Ciao Dolphin,
    personalmente cerco sempre di scoraggiare ad usare metodi tipo loadMovieNum() perchè ritengo che la classe MoviClipLoader sia molto più efficiente per caricare swf esterni.
    Detoo questo, dovresti fare in modo di controllare i bytes caricati di ogni swf e aggiungerli ad un variabile numerica globale che terrà traccia di tutti i bytes caricati e quando sarà al 100% accadrà un'azione che deciderai 🙂

    Per farti un esempio di loadMovieNum() forse Onsitus è meglio di me perchè io non lo uso mai 🙂 , comunque il concetto è quello.


  • User

    Giusto......bravo era questo il concetto che nn riuscivo a capire, ma ora ti chiedo come faccio a definire una variabile globale?:)

    Mi spiego meglio: una volta caricato i bytes di uno swf, nn posso inizializzare la variabile globale nello swf stesso, ma dovrei trasferire quel valore nella pagine principale e sommarla ai valorei dei bytes degli altri due swf. Come passare questi dati?:)

    Grazie:ciauz:


  • Super User

    Come ho già detto non è una pratica corretta, ma comunque per dichiarare una variabile globale lo fai in questo modo:

    
     _global.myBytes=0;
    
    

  • User

    Ok....ma dove la devo inserire in ogni singolo swf? E come faccio a sommarli?


  • Super User

    La metti nell'swf pricipale.
    Poi a quelli esterni mentre li carichi gli fai aggiungere i bytes.


  • User

    Allora se ho ben capito nello swf principale inizializzo la variabile

    _global.mybytes = 0;

    poi negli swf esterni effettuo il caricamento dei bytes con

    car = _root.getBytesLoaded();
    tot = _root.getBytesTotal();

    ed in più inserisco

    _global.mybytes = ? (cosa?)

    potresti farmi un esempio se nn disturbo? Grazie....Flep (sono un pò duro con i nuovi concetti)


  • Super User

    Ecco la mia brillante idea della serata.:D

    Nel filmato principale, invece di avere 3 loadMovieNum per un fotogramma, crea un fotogramma per ogni loadMovieNum e un stop(); per ogni frame.

    Nel primo swf esterna crea un preloader normale, quando e caricato completamente, fermalo la e usa _level0.nextFrame();

    Il playhead del filmato principale si spostera allora al secondo fotogramma, caricando il secondo loadMovieNum. Stesso processo per il preloading.

    Il playhead si postera allora al terzo fotogramma con il terzo loadMovieNum. Stesso processo per il preloading.

    Finalemente il playhead arrivera al quarto fotogramma con tutti 3 swf esterni caricati e da la puo fare come ti pare.:eheh:

    :fumato:


  • User

    Onsitus, e se voglio realizzare un effetto grafico di preload generale, dove lo devo inserire?


  • Super User

    Ogni swf esterno con il suo proprio preloader (codice e grafica inclusa). Poi basta riusare la stessa grafica. Puo sempre 'preparare' l'utente a l'atesa con un 'preloading file 1 da 3'.:D

    Se ho il tempo, ti faro un esempio prima d'andare al letto.;)


  • User

    Onsitus, nn ci sono riuscito............😢

    Ritornando al concetto di Flep, come faccio a far passare il valore delle variabili locali di ogni swf per sommarli nella variabile globale dello swf principale?


  • User

    Si ti prego Onsitus........mi faresti una grossa cortesia


  • Super User

    Ok, non sara il metodo piu elaborato ma funziona.:D

    Ecco l'opera d'arte onlinea.:fumato:

    http://www.onsitus.it/test/dolphin/main.html

    E il piccolo zip (foto di sfondo inclusi per dare un po di peso:D )

    http://www.onsitus.it/test/dolphin/dolphin.zip

    😉

    PS: meglio che non m'intrometto nel concetto di Flep
    PSbis: il preloader deve 'testato' onlinea, in locale non funziona


  • Super User

    @Dolphin said:

    Ritornando al concetto di Flep, come faccio a far passare il valore delle variabili locali di ogni swf per sommarli nella variabile globale dello swf principale?

    Ok, supponiamo tu hai 3 swf da caricare.
    Non ti serve nenche una variabile globale.
    Puoi fare così:
    -nel primo frame scrivi:

    
    var movies:Number=0;
    
    

    -carichi gli swf e controlli i bytes, e per ogni swf scrivi:

    
    if(my_mc.getBytesLoaded()==my_mc.getBytesTotal())
    {
        _root.movies++;
        if(_root.movies==3)
        {
            //qui metti l'azione che vuoi venga eseguita solo 
            //se tutti e tre gli swf sono stati caricati
        }
    }
    
    

    Chiaramente my_mc è l'swf vuoto dove carichi l'swf esterno, quindi ne devi avere uno per ogni swf esterno,ad esempio potresti chiamarli my_mc_1, my_mc_2 e my_mc_3 .


  • User

    Onsitus, ho adattato il tuo script ai miei swf, ma carica solo il primo swf, nn va avanti, forse xkè dopo ogni loadmovienum() c'è lo stop?:x Ora provo con lo script di Flep


  • User

    PER FLEP:

    Allora vediamo se ho capito bene:

    nello swf principale inizializzo la variabile movies = 0;
    e successivamente con 3 loadmovienum richiamo i 3 swf

    Poi per ogni swf effettuo il controllo dei bytes con getBytesLoaded e getBytesTotal e successivamente inserisco

    [LEFT]if(my_mc.getBytesLoaded()==my_mc.getBytesTotal())
    {
    _root.movies++; if(_root.movies==3)
    {
    //qui metti l'azione che vuoi venga eseguita solo
    //se tutti e tre gli swf sono stati caricati
    }
    }

    giusto?
    :arrabbiato: :ciauz: [/LEFT]


  • Super User

    Il stop(); dopo il loadMovieNum serve per bloccare il filmato aspetando che il swf esterno sia caricato e la chiamata con il _level0.nextFrame(); chi sposta appunto il playhead da un fotogramma quando completato.:)

    Vabbe, ci sarano altre soluzione.;)


  • Super User

    @Dolphin said:

    PER FLEP:

    Allora vediamo se ho capito bene:

    nello swf principale inizializzo la variabile movies = 0;
    e successivamente con 3 loadmovienum richiamo i 3 swf

    Poi per ogni swf effettuo il controllo dei bytes con getBytesLoaded e getBytesTotal e successivamente inserisco

    [LEFT]if(my_mc.getBytesLoaded()==my_mc.getBytesTotal())
    {
    _root.movies++; if(_root.movies==3)
    {
    //qui metti l'azione che vuoi venga eseguita solo
    //se tutti e tre gli swf sono stati caricati
    }
    }

    giusto?
    :arrabbiato: :ciauz: [/LEFT]

    ricordati che my_mc è riferito ad ogni movieclip vuoto che deve caricare il tuo swf esterno.
    Per cui devi avere 3 movieclips vuote che caricano i 3 swf e quel codice va per ogni movieclip vuota che hai.


  • User

    Allora io nello swf principale faccio dal menù Inserisci ---> Clip Filmato lo chiamo my_mc_1

    si apre la linea temporale del my_mc_1 e nel primo frame cosa inserisco?

    Non chiamarmi seccante ti prego, nn riesco a capirlo................o meglio ho capito il concetto ma nn riesco a capire dove devo inserire il codice e come intendi richiamare gli swf esterni e controllare i bytes
    Grazie


  • Super User

    Dunque, loadmovienum non l'ho mi usato in tutta la mia vita.
    Dovresti aprire un po la guida Flash e guardare se puoi caricare con loadmovienum un swf esterno dentro un movieclip vuota 🙂

    ...possibile che devo aprire la guida io al tuo posto ?... 😄