Visualizzazione dei risultati da 1 a 7 su 7

Discussione: preload mp3

  1. #1

    preload mp3

    Ciao ciao, ho un problemino con un preload di un MP3
    Il mio codice è questo:

    myLoop = new Sound();
    function preloadMP3(){
    totali = _root.myLoop.getBytesTotal();
    caricati = _root.myLoop.getBytesLoaded();
    perc = Math.floor(caricati/totali*100);
    //txt_status è la casella di testo
    //per visualizzare la percentuale caricata
    _root.txt_status = perc + "%";
    if (caricati < totali){
    myInt = setInterval(preloadMP3, 100);
    }else{
    myLoop.start();
    clearInterval(myInt);
    _root.isPlaying = true;
    _root.txt_status = "play";
    _root.status = _root.txt_status;
    }
    }
    myLoop.onLoad = preloadMP3;
    myLoop.onSoundComplete = function(){
    myLoop.start()
    }
    myLoop.loadSound("mp3/dontdisturb.mp3",false);

    Funziona tutto, tranne il preload: la percentuale non viene visualizzata.
    Potrebbe essere un problema di banda, ma non vedo niente anche con un MP3 di 4mb
    A scanso di equivoci eccovi il link:
    http://demo.multilab2000.it/Demo_Sit...undcontrol.htm
    Fatemi sapere che sto uscendo pazzo!
    Ciao e grazie

  2. #2
    myInt = setInterval(preloadMP3, 100);

    richiami la stessa funzione con setInterval, non ho capito il senso di questa cosa ... visto ricrei l'intervallo fino a che non ha caricato il suono, che vuoi che ti faccia vedere ?

    in piu' l' onSoundComplete lo usi in maniera errata, non serve a fare uno start() quando e' finito un preload ...


    myLoop = new Sound();
    myLoop.loadSound("mp3/dontdisturb.mp3",false);
    myLoop.onEnterFrame = function() {
    var totali = this.getBytesTotal();
    var caricati = this.getBytesLoaded();
    var perc = Math.round((caricati/totali)*100);
    _root.txt_status.text = perc + "%";
    if((caricati == totali) && (caricati > 1024)) {
    delete this.onEnterFrame;
    _root.isPlaying = true;
    _root.txt_status.text = "play";
    this.start(0,999);
    }
    }


    poi se vuoi guardarti questo esempio fammi sapere se ti e' stato utile ...
    http://www.3site.it/index.php?sezion...lo=19&pagina=2
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Grazie degli spunti e della risorsa, adesso ci provo...
    richiami la stessa funzione con setInterval, non ho capito il senso di questa cosa ... visto ricrei l'intervallo fino a che non ha caricato il suono, che vuoi che ti faccia vedere ?
    cercavo di fare la stessa cosa che tu fai con enterframe.
    L'idea era: se non ho caricato tutto richiamo la funzione tra 100ms, altrimenti cancello l'intervallo. E' così sbagliato? (evidentemente sì, dato che non va, ma sono gnucco e non vedo l'errore)
    in piu' l' onSoundComplete lo usi in maniera errata, non serve a fare uno start() quando e' finito un preload ...
    difatti non era per lo start, ma per creare un loop. Dici che è meglio settare il numero dei loop con start()?

  4. #4
    Per il "non vedere niente" non era quello il problema .. il fatto e' questo:
    richiami una funzione contenente un setIntervall che la richiama a sua volta ...

    il setIntervall di per se da gia' un intervallo (nel tuo caso 100) alla funzione che richiama, se la funzione ha questo setIntervall al suo interno, viene richiamata 1 decimo di secondo, e all' interno di questo decimo viene creato un altro setIntervall, che la richiama, con un altro dentro, che la richiama ...
    alla fine ti ritrovi la CPU al 100% e non fai niente di piu' di quanto avresti fatto con un solo setIntervall, ecco perche' e' sbagliato.

    Sarebbe stato giusto mettere all' interno della funzione il setIntervall solo controllando che non sia precedentemente stato richiamato.

    Per l' onSoundComplete, considera che si utilizza solitamente per fare un'azione / funzione alla fine della riproduzione di un suono e non come "meta" di un preload ... per quello c'e' l' onLoad, con le differneze dal loadMovie di cui l'articolo linkato parla.

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Scusa se rompo, ma è corretto associare onEnterFrame a un oggetto sound? Nel tuo tutorial (utile, utile - ho sbirciato anche quello su onEnterFrame ) lo associ a this e funziona, ma nell'esempio che hai postato no.
    Inoltre ho visto che per assegnare un testo a un campo usi (ad es.):

    _root.txt_pincopallo.text = "la mia stringa";

    ma nel mio caso non va: devo usare

    _root.txt_pincopallo = "la mia stringa";

    qual è la differenza tra i due casi?

  6. #6
    la differenza e' questa:

    _root.txt_pincopallo.text = "la mia stringa";

    hai un nome di istanza txt_pincopallo nel campo dinamico ... mentre ...




    _root.txt_pincopallo = "la mia stringa";

    significa che hai scritto txt_pincopallo su var del campo di testo dinamico e non il nome di istanza, come e' invece solito usare in FlashMX ...

    Ma se usi loadSound tu stai usando FlashMX, quindi abituati piu' con i nomi di istanza che con la var probabilmente deprecated tra non molto tempo ...


    Per l' onEnterFrame considera che come associ sul keyframe del movie, clickando sul movie stesso un onClipEvent(enterframe), puoi associarlo piu' o meno a quello che ti pare, basta che abbia un nome di istanza o un identificativo AS ...

    Nel caso del sound non ho provato direttamente riferendolo all' oggetto, credevo andasse lostesso, ma se mi dici di no e' evidente che non e' vero
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    il setIntervall di per se da gia' un intervallo (nel tuo caso 100) alla funzione che richiama, se la funzione ha questo setIntervall al suo interno, viene richiamata 1 decimo di secondo, e all' interno di questo decimo viene creato un altro setIntervall, che la richiama, con un altro dentro, che la richiama ...
    OK, ho capito! Pensavo che l'intervallo venisse sovrascritto e che non creasse questo tipo di problema.

    Chiarita anche la differenza sui campi di testo dinamici.
    Grazie di tutto!
    Ti farò sapere l'esito!
    Ciao, Marco

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.