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

    gestire volumi di più suoni

    Ciao:

    dato che gestisco più file audio all'interno dell'applicazione (un eseguibile da distribuire su CD)... vorrei gestire i volumi in maniera indipendente...
    però se ne abbasso uno li abbasso tutti... se ne alzo uno li alzo tutti...
    come è possibile gestire i volumi indipendentemente?

    per intenderci vorrei che se faccio
    my_sound.setVolume(5);
    my_sound3.setVolume(100);

    solo my_sound3 rimanga a tutto volume, mentre l'altro suono rimanga solo come sottofondo... (i due suoni risiedono su due swf differenti)

    Grazie &

  2. #2
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Devi crearti più istanze Sound e poi ad ognuna setti il proprio volume, no?

    var mioSuono1:Sound = new Sound();
    var mioSuono2:Sound = new Sound();

    ecc...



  3. #3
    ovvero così?
    var my_sound:Sound = new Sound();
    var my_sound3:Sound = new Sound();

    ... è quello che ho fatto...

    ho creato diverse istanze di Sound
    a ognuna ho assegnato un file audio differente (precedentemente importato nella libreria)
    e poi ho cercato di assegnare i volumi... ma il risultato è che se cambio un volume a un oggetto Sound, il valore impostato viene assegnato a tutte le istanze in esecuzione... mentre io vorrei tenerle indipendenti per usare un suono come main-track e uno come sottofondo...

    Avete soluzioni alternative a quella che sto cercando di adottare? Oppure sbaglio da qualche parte...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    quando li crei dagli una timeline di appartenenza, crea meno problemi e potrebbe risolvere anche il tuo attuale

    var my_sound:Sound = new Sound(this);

  5. #5
    Perfetto, grazie mille, ora funziona alla perfezione! (lo sapevo che era una stupidata alla fine!!)

    Già che ci sono approfitto per porre un'altra domanda, sperando di non andare troppo OT:

    .. ho implementato un sistemino per fare l'effetto dissolvenza in entrata e in uscita... ma vorrei sapere se esiste una funzione più veloce di quella che ho fatto io.
    Voi come implementate la dissolvenza? Si riesce solamente via AS senza che sia troppo veloce?
    Ho provato con un semplice ciclo while ma è troppo veloce e sembra quasi che il suono aumenti o diminusca di colpo... quindi uso un clip secondario per fare in modo che avvenga gradatamente...

  6. #6
    Salve a tutti sono un novellino.



    Ho anche io questo problema, cioè di gestire più suoni. Solo che essendo un po' inesperto non ho capito bene quanto detto prima.

    Vi pongo meglio il mio problema:

    Tutto il codice l'ho messe nel primo fotogramma(scusate se l'implementazione fa schifo!):
    bottone1.onRelease = Fdescrizione1;
    Fdescrizione1 = function()
    {
    suono1 = new Sound(this);
    suono1.attachSound("supercar");
    suono1.start();

    //Ecco il problema
    _root.suono1.setVolume(20); <- NON VA!!

    }

    Come faccio?

    Scusate se la mia domanda pare semplice... ma sono 2 gg che ci sto sbattendo la testa...

  7. #7
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Tu suono lo crei all'interno della funzione, quindi _root.suono1.setVolume(20); va a cercare il suono sulla root, mentre tu lo crei nello scope della funzione...

    togli _root

  8. #8
    ok, funziona.

    Grazie Mille per la risposta velocissima!!!


  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    .. ho implementato un sistemino per fare l'effetto dissolvenza in entrata e in uscita... ma vorrei sapere se esiste una funzione più veloce di quella che ho fatto io.
    Voi come implementate la dissolvenza? Si riesce solamente via AS senza che sia troppo veloce?
    Ho provato con un semplice ciclo while ma è troppo veloce e sembra quasi che il suono aumenti o diminusca di colpo... quindi uso un clip secondario per fare in modo che avvenga gradatamente...
    Ciao .. con un ciclo while è ovvio che è troppo veloce.. tutte le azioni eseguite in un ciclo del genere vengono eseguite "nello stesso istante" .. potresti tuttalpiù utilizzare un evento enterFrame o un setInterval o altri metodi che creano un ciclo scandendo però le ricorrenze nel tempo.

    Proprio qualche giorno fa ho risposto ad una discussione riguardo lo stesso argomento, e ho sviluppato una funzioncina per creare l'effetto fade.

    Metto qui il link della discussione e riporto poi sotto la funzione ottimizzata, sperando possa tornare utile dato che l'autore dell'altra discussione non ha risolto per via di altri motivi: http://forum.html.it/forum/showthrea...=&pagenumber=1

    Tale funzione fa uso della classe Tween che appunto crea una sorta di ciclo in cui viene incrementata o decrementata una variabile, passata poi come valore del volume di un oggetto sound.
    La funzione è riutilizzabile per qualsiasi oggetto sound potendo quindi gestire vari suoni separatamente.

    Codice PHP:
    // creo degli oggetti sound applicandoli a dei mc contenitori
    var suono1 = new Sound(_root.createEmptyMovieClip("snd1"1));
    var 
    suono2 = new Sound(_root.createEmptyMovieClip("snd2"2));
    //
    // associo dei campioni che ho inserito in libreria con proprietà di concatenamento
    suono1.attachSound("campione 1");
    suono2.attachSound("campione 2");
    //
    // funzione soundFade (oggetto sound, volume iniziale, volume finale, durata del fade, [azione], [loops])
    var soundFade:Function = function (snd:Objectini:Numberend:Numberduration:Numberaction:Booleanloop:Number):Void {
        (
    snd.fade) && (snd.fade.stop());
        (
    ini == null) ? ini=snd.getVolume() : snd.setVolume(snd.vol);
        (
    action == "start") && (snd.start(0loop));
        
    snd.fade = new mx.transitions.Tween(snd"vol"mx.transitions.easing.Regular.easeOutinienddurationtrue);
        
    snd.fade.onMotionChanged = function() {
            
    snd.setVolume(snd.vol);
        };
        if (
    action == "stop") {
            
    snd.fade.onMotionFinished = function() {
                
    snd.stop();
            };
        }
    }; 
    // ----------------------------------------------------
    // varie modalità di applicazione della funzione soundFade
    //
    // fade-in da 0 a 100 in 4 secondi con start dell'oggetto sound indicato e loop infinito
    soundFade(suono101004"start"999);
    //
    // fade-out dal volume corrente a 0 in 5 secondi con stop al termine
    soundFade(suono1null05"stop");
    //
    // fade da 20 a 80 in mezzo secondo
    soundFade(suono12080.5);
    //
    // mix tra due tracce in 10 secondi
    suono1.start();
    soundFade(suono1100010"stop");
    soundFade(suono2010010"start"
    Si tratterà inizialmente di creare i vari oggetti sound e associarli a diverse istanze in modo da poterli gestire separatamente.

    Quindi la funzione soundFade potrà essere richiamata specificando alcuni parametri tra cui la durata dell'effetto.
    Ho indicato alcuni esempi nello script.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Grazie 1000!!!
    In realtà avevo già risolto con una funzione molto semplice che usa setInterval; la tua è molto più completa però! Sarebbe stato lo step successivo della mia, per fare in modo di parametrizzare anche l'oggetto sound al quale si vuole applicare l'effetto fade (per il momento la mia funzione agisce sempre sullo stesso oggetto e gli passo come parametro solamente il valore del volume al quale voglio arrivare)

    Grazie &

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.