Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: "infinity" nel preload

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477

    "infinity" nel preload

    Ho una funzione che carica e verifica il caricamento delle jpg esterne visualizzando la percentuale e la barra di caricamento. Se navigo il sito con un 56 K prima della percentuale vedo la scritta "infinity %" poi scatta di colpo al 100% quando è carica. Con l'adsl il caricamento funziona....anche se velocissimo (ovviamente )

    questa è parte della funzione:

    codice:
    loadMovie("img/"+this.categoria+r+".jpg", this.foto);
    onEnterFrame = function () {
    		tot = foto.getBytesTotal();
    		car = foto.getBytesLoaded();
    		if (tot == car && this.barra._yscale>98) {
    			foto._visible = 1;
    			this.barra.na = 0;
    			this.percentuale._visible = 0;
    			delete (onEnterFrame);
    		} else {
    			this.percentuale._visible = 1;
    			foto._visible = 0;
    			this.barra.nys = Math.round((car/tot)*100);
    			this.percentuale.perc = Math.round((car/tot)*100)+"%";
    			this.percentuale._y = (this.barra._y-this.barra._height)-10;
    		}
    Chi può aiutarmi?

    Grazie e Buona Pasqua!

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Succede ad esempio quando tot è ancora "undefined". Prova con:

    codice:
    loadMovie("img/"+this.categoria+r+".jpg", this.foto);
    onEnterFrame = function () {
    		tot = foto.getBytesTotal();
    		car = foto.getBytesLoaded();
    		if (tot == car && this.barra._yscale>98) {
    			foto._visible = 1;
    			this.barra.na = 0;
    			this.percentuale._visible = 0;
    			delete (onEnterFrame);
    		} else if(tot > 4){
    			this.percentuale._visible = 1;
    			foto._visible = 0;
    			this.barra.nys = Math.round((car/tot)*100);
    			this.percentuale.perc = Math.round((car/tot)*100)+"%";
    			this.percentuale._y = (this.barra._y-this.barra._height)-10;
    		}

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Scusa se rispondo solo ora ma ho avuto problemi con la connessione...
    La scritta infinity non la vedo più ma il caricamento passa ancora dallo 0 al 100% di scatto. Come mai? (e lo fa solo col 56Kb :master: )

    P.S. non so se riuscirò a risponderti prima di domenica 3 aprile perchè fino a quella data sarò all'estero.

    Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Sono tornato...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    C'è nessuuunooo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    8
    Io ho lo stesso problema e non riesco a capire come si possa risolvere. Anche perché testando in locale con l'opzione "Simula scaricamento" sembra tutto ok.
    Seguo da vicino la discussione in attesa di qualche suggerimento da qualche esperto.
    Per favore, aiutateci.

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Zippo, puoi farmi vedere il fla?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Il fatto è che il sito è già finito e il codice è al suo interno quindi dovrei passarti il sito completo...non so se ti conviene. Comunque il codice che ho postato prima è preso pari pari dal sito.

  10. #10
    tot == car

    per quel che mi riguarda non faccio mai un controllo di questo tipo ...

    getBytesLoaded parte da -1 , getBytesTotal da 0 ... se getBytesLoaded e' zero e getBytesTotal non e' ancora disponibile il loop va a meretrici ...


    if car >= tot && tot != NaN && tot > 0


    ... questo assicura , in parte , di aver finito il preload ... mentre nel durante , l' infinity e' causato proprio dal discorso appena fatto ...

    0 / 0 quanto fa ???

    infinity ...


    quindi sarebbe


    tot = foto.getBytesTotal();
    car = foto.getBytesLoaded();
    if( car >= tot && tot != NaN && tot > 0 ) {
    // preload finito
    }
    else {
    perc = Math.floor( ( car / tot ) * 100 );
    perc = perc == infinity || perc == undefined ? 0 : perc;
    // e qui tutto quello che vi pare con il preload
    }



    importante, i preloads conviene sempre farli con floor e non con round o ceil , questo perche' round si comporta come ceil , ovvero al 99.6% arrotonda a 100, mentre 100 non e' ... il floor rimane 99 finche' non e' proprio 100 ...

    con questo presupposto si potrebbe semplcificare con ...


    tot = foto.getBytesTotal();
    car = foto.getBytesLoaded();
    perc = Math.floor( ( car / tot ) * 100 );
    perc = perc == infinity || perc == undefined ? 0 : perc;
    if( car >= tot && perc == 100 ) {
    // preload finito
    }
    else {
    // e qui tutto quello che vi pare con il preload
    }


    prova



    [editato]
    qualora ci siano movimenti decellerati si puo' semplicemente fare un controllo in piu' sul primo if

    if( car >= tot && perc == 100 && Math.ceil( movie._x ) >= 98 ) {
    movie._x = 100;
    // etc etc ...
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.