Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    riconoscere la velocità di connessione

    Sapete come posso risolvere questo enigma ?

    x veri esperti..
    Si tratta di riconoscere la banda utilizzata e se il valore della banda è molto basso lo script esegue una pagina.

    Composizione:


    primo frame

    onClipEvent(load){
    //ferma l'esecuzione e controlla il tempo
    _root.stop();
    tempo = getTimer();
    }

    onClipEvent(enterFrame){

    // se è passato un secondo esegue il calcolo
    if ((getTimer()-tempo) >= 1000) {
    // valuta la banda dopo 1 secondo
    banda = Math.round(((_root.getBytesLoaded()/1024)/kbytes)*10)/10;
    kbytes = _root.getBytesLoaded/1024;
    // dopo un altro secondo controlla se il valore della banda è inferiore a 80 se lo è passa al frame successivo
    if ((getTimer()-tempo) >= 2000) {
    if (banda <= 80) {
    _root.nextFrame();
    }
    }
    }
    }


    frame 2

    onClipEvent(load){
    getURL("http://www.sitoweb/",_self);
    }


    lo script non funziona, ho provato in diversi modi ma non trovo mai una soluzione, ho provato anche a testarlo tramite internet.
    Può essere che ho adsl e allora è un problema ?

  2. #2

  3. #3
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    devi inizializzare kbytes nel (load)...inizialmente e' zero o undefined..
    la dizione per zero....fa male alla cpu !:quote:

  4. #4
    Per non sovraccaricare la cpu con degli enterFrame, puoi utilizzare il setInterval:

    function controlla(maxnum, tuomvie) {
    if (volte<maxnum) {
    trace(caricati);
    caricatinew = Math.floor(tuomovie.getBytesLoaded()/1024);
    trace(caricatinew);
    diff = Number(caricatinew-caricati);
    if (number<80) {
    trace("la tua banda è minore di80 Kb");
    } else {
    tuomovie.nextFrame();
    }
    caricati = caricatinew;
    volte++;
    trace(volte);
    trace(diff);
    } else {
    clearInterval(banda);
    }
    }
    caricati = Math.floor(tuomovie.getBytesLoaded()/1024);
    banda = setInterval(controlla, 1000, 2, _root);
    //qui passi l'intervallo, il numero delle volte che sarà controllato
    //e il mc da controllare

    In questo modo puoi controllare anche la banda mentre un altro mc si sta caricando ... anche perchè se lo fai mentre la root si sta caricando sei sicuro che gli script ed i frame a cui mandi la testina siano gia stati caricati ?

    Lo script che ti ho fornito non ho potuto provarlo online, appena posso lo controllo e ti dico, ma ad occhio dovrebbe funzionare.

    Fammi sapere !

    Ciao,
    .:| bandafox |:.

  5. #5
    così dovrebbe funzionare.. ma l'importante è che il file swf si abbastanza pesante per poter valutare la differenza tra byte iniziali e quelli caricati...
    il mio è grande 40 kb.

    Ora devo testarlo...


    var volte = 0;
    _root.onLoad = function () {
    caricati = 0;
    }

    function controlla(maxnum, movie) {
    if (volte<maxnum) {
    trace("caricati: "+caricati);
    caricatinew = Math.floor(_root.getBytesLoaded()/1024);
    trace("nuovi caricati: "+caricatinew);
    diff = Number(caricatinew-caricati);
    if (diff>20) {
    trace("banda: "+diff);
    } else {
    movie.nextFrame();
    }
    caricati = Math.floor(_root.getBytesLoaded()/1024);
    volte++;
    trace(volte);
    trace(diff);
    } else {
    clearInterval(banda);
    }
    }
    banda = setInterval(controlla, 1000, 1, _root);
    //qui passi l'intervallo, il numero delle volte che sarà controllato
    //e il mc da controllare

  6. #6
    Puoi impostare il controllo prima, ad esempio dopo 100 o 200 millisecondi. Più il tuo file è piccolo, prima devi effettuare il controllo.

    Ciao,
    .:| bandafox |:.

  7. #7

  8. #8
    Neanche questo funziona:


    stop();
    var volte = 0;
    var caricati = 0;
    this.createEmptyMovieClip("primo", 1);
    this.primo.loadMovie("http://www.jeansartdesign.com/check2.swf");
    this.primo._visible = false;

    function controlla(maxnum) {
    if (volte<maxnum) {
    trace("caricati: "+caricati);
    caricatinew = Math.floor(this.primo.getBytesLoaded()/1024);
    trace("nuovi caricati: "+caricatinew);
    diff = Number(caricatinew-caricati);
    if (diff>20) {
    trace("banda: "+diff);
    } else {
    _root.nextFrame();
    }
    volte++;
    trace("volte: "+volte);
    trace("banda: "+ diff);
    caricati = caricatinew;
    }
    else {
    clearInterval(banda);
    }
    }

    banda = setInterval(controlla, 1000, 5);




  9. #9
    Il problema è che non riesce a vedere i byte caricati nel movie clip...

    facendo
    movie = this.primo.getBytesLoaded;
    trace("byte caricati nel movie : " + movie);

    viene :: byte caricati nel movie : 0



    ho perso ogni speranza

  10. #10
    ok ci sono riuscito

    utilizzando il primo script yessss :metallica :metallica :metallica

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.