Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40

    Barra preloader "uniforme"

    Salve a tutti! e rieccomi con un nuovo problemino da risolvere!

    ho creato una barra preloader che scala da 0 a 100 con l'avanzare dei byte caricati del filmato.
    La barra funziona alla perfezione, solo vorrei che non avanzasse a scatti, mi spiego:
    se il browser carica già da subito il 50% del mio filmato flash, la barra di colpo si ritrova ad essere lungo il 50% dellasua lunghezza effettiva.
    Vi posto il codice così capite meglio:

    _root.stop();
    barra.onEnterFrame = function() {
    car = _root.getBytesLoaded();
    tot = _root.getBytesTotal();
    per = car/tot*100;
    _root.barra._xscale = per;
    if (per == 100) {
    _root.gotoAndPlay(2);
    }
    };

    se notate la stringa "_root.barra._xscale = per;" indica che la barra deve allungarsi in modo uguale alla variabile par. Par allora assume valori a scatti del tipo 20 - 50 - 57 - 70 ...ecc ecc fino ad arrivare a 100. Di conseguenza la barra si allunga a scatti e si ingrandisce di 20, poi di 50, poi di 57 e così via (i numeri di par riportati sono solo per esempio, non conosco il reale valore di par ogni istante).
    Quindi in definitiva, vorrei che la barra mi si allungasse in modo uniforme senza fare questi "salti grafici".
    Grazie in anticipo per il vostro aiuto!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sul sito di riferimento di questo forum http://flash.html.it/ nella sezione "movie" puoi trovare una serie di preload da scaricare e tra questi ricordo che ce n'era uno ad andamento "progressivo", puoi scaricarlo e vedere che codice utilizza.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    si, prima di postare già avevo trovato qualcosina, ma essendo il codice troppo complesso non ci ho capito molto, quindi speravi che si potesse fare con qualcosa di più semplice. Comunque adesso faccio qualche prova e vi faccio sapere. Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    allora, non ho trovato nulla che potesse andare bene al caso mio.
    Ho trovato questo preload a barra che non riesco proprio a capire e quindi a modificare come serve a me. Posto il codice:
    nel primo frame ho questo codice:
    Codice PHP:
    //Calculates the amount to load and how much is loaded
    percentLoaded Math.round(_root.getBytesLoaded() / _root.getBytesTotal()*100);

    //Sets the width of the bar
    this.myWidth(this.loadBar,percentLoaded*1.94);
    this.myMove(this.mc_loadNum,percentLoaded*1.9-8);
    loadNum.text percentLoaded +"%";

    // FUNCTIONS

    function myWidth(moveObjnewWidth) {
        
    moveObj.moveObj._width;
        
    moveObj.dwidth newWidth+moveObj.w;
        
    moveObj.0;
        
    NFRAMES 10;
        
    moveObj.onEnterFrame = function() {
            if (
    moveObj.t++<NFRAMES) {
                
    moveObj._width easeOutQuad(moveObj.tmoveObj.wmoveObj.dwidthNFRAMES);
            } else {
                
    delete this.onEnterFrame;
            }
        };
    }
    function 
    myMove(moveObjnewX) {
        
    moveObj.moveObj._x;
        
    moveObj.dx newX-moveObj.x;
        
    moveObj.0;
        
    NFRAMES 8;
        
    moveObj.onEnterFrame = function() {
            if (
    moveObj.t++<NFRAMES) {
                
    moveObj._x easeOutQuad(moveObj.tmoveObj.xmoveObj.dxNFRAMES);
            } else {
                
    delete this.onEnterFrame;
            }
        };
    }

    easeOutQuad = function (timebeginXchangeXdurationX) {
        if ((
    time /= durationX/2)<1) {
            return 
    changeX/2*time*time+beginX;
        }
        return -
    changeX/2*((--time)*(time-2)-1)+beginX;
    }; 
    nel secondo frame ho:
    Codice PHP:
    if (percentLoaded 100) {
        
    gotoAndPlay("loading");

    e nel terzo frame ciò che deve apparire nel filmato.

    Vorei poter modificare questo codice in modo da allungare la barra di caricamento (nel caso del codice la barra è molto piccola, circa 20 px). In realtà sono riuscito ad allungarla modificando il valore 1.94 della seconda stringa, impostandolo a 100:
    Codice PHP:
    this.myWidth(this.loadBar,percentLoaded*1.94); 
    ma comunque la barra mi va a scatti quando deve arrivare a 100. Allora ho pensato di aumentare il numero NFRAMES nella funzione myMove(moveObj, newX),ma il filmato passa subito al terzo frame senza che la barra sia stata caricata per tutta la lunghezza che vorrei.
    C'è quindi un modo per far sì che la barra carichi uniformemente per tutta la sua lunghezza?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    nessuno è in grado di aiutarmi??

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Devi dare il tempo di risponderti, inoltre non hai inserito il link da cui hai scaricato l'esempio. Se uno volesse provarlo per aiutarti, come fa?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    hai ragione...ora lo posto
    ecco il link

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mi sembra un po' troppo complesso per il tuo caso, poi non so dove hai visto che era 20px, saranno almeno 150-200px.
    Perciò o la usi così tenendola per buona nel suo complesso e cambiandone gli elementi grafici a piacimento, o passi ad un'altra e vedi se possa risultare più indicata alla tua situazione.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    si, infatti è molto complessa sta barra...magari ora cerco qualche altra soluzione...grazie per il consiglio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.