Gestire il Suono in Flash AS2: Classe Sound();

- Letture: 2.894

E’ sempre più necessario inserire file audio nei nostri filamti in flash, e la classe Sound è quello che ci serve, infatti consente di controllare l’audio di un filmato.

I metodi per l’oggetto sono:

  • attachSound Associa il suono specificato nell’argomento;
  • getPan Restituisce il valore della chiamata setPan precedente;
  • getBytesLoaded Restituisce il numero dei byte caricati (in streaming) per l’oggetto Sound specificato.
  • getBytesTotal Restituisce le dimensioni, espresse in byte, dell’oggetto Sound specificato.
  • getTransform Restituisce il valore della chiamata setTransform precedente;
  • getVolume Restituisce il valore della chiamata setVolume precedente;
  • setPan Imposta il bilanciamento destra/sinistra dell’audio;
  • setTransform Imposta la trasformazione dell’audio;
  • setVolume Imposta il livello del volume dell’audio;
  • start Avvia la riproduzione di un suono dall’inizio o, se indicato, a partire dal punto impostato nell’argomento;
  • stop Arresta il suono specificato o tutti i suoni in corso di riproduzione.

Il nostro file Audio puo’ essere interno, quindi in libreria, oppure esterno, vediamo come caricare il suono in questi due casi

  • CARICARE UN FILE AUDIO ESTERNO

loadSound (metodo Sound.loadSound)

Nell’esempio seguente viene caricato il suono song1.mp3 che risiederà nella stessa directory, e non potrà essere riprodotto finché non viene caricato completamente:

var my_sound:Sound = new Sound();
my_sound.loadSound("song1.mp3", false);

Nell’esempio seguente viene caricato il suono song1.mp3 che risiederà nella stessa directory in streaming:

var my_sound:Sound = new Sound();
my_sound.loadSound("song1.mp3", true);

  • CARICARE UN FILE AUDIO PRESENTE IN LIBRERIA

attachSound (metodo Sound.attachSound)

Nel seguente esempio, viene concatenato il suono in libreria come “suono_lib” e viene associato a my_sound.
NB. per concatenare un elemento in libreria, selezionarlo, cliccare con il tasto destro del mouse e poi su Concatenamento

var my_sound:Sound = new Sound(); // creazione oggeto Sound
my_sound.attachSound("suono_lib"); // prendo il suono dalla libreria denominato "suono_lib"
my_sound.start(); // Riproduco il suono

Avvolte è necessario stoppare il suono oppure farlo riniziare da capo al fine della sua riproduzione

  • per fermare il suono abbiamo visto la proprietà stop

my_sound.stop();

  • per riprodurre il suono alla sua fine invece utilizziamo il seguente codice

var my_sound:Sound = new Sound(); // creazione oggeto Sound
my_sound.loadSound("song1.mp3", true); // eseguo il suono in streaming
my_sound.onSoundComplete = function() { // intercetto il momento in cui il suono finisce la riproduzione
my_sound.start(); // riproduco il suono da capo
};

In questo caso abbiamo utilizato l’evento onSoundComplete che ci permette di eseguire un azione al fine della riproduzione del suono

  • Vediamo altre 2 cosette utili:

E’ possibile impostare o conoscere il bilanciamento dell’audio.
Il valore assegnato deve essere compreso tra -100 e 100, dove -100 corrisponde al canale sinistro, mentre 100 a quello destro.my_sound = new Sound(suono); // creazione oggeto Sound
my_sound.setPan(-100); // Imposto l'audio nella cassa sinistra
my_sound.setPan(100); // Imposto l'audio nella cassa destra
my_sound.setPan(0); // Imposto l'audio in modo bilanciato
getPan restituisce il valore, compreso tra -100 e 100, dell’ultima chiamata di setPan.Il volume invece, necessita di un valore compreso tra 0 e 100, dove 0 corrisponde al silenzio totale, mentre a 100 il volume di default del sistema.my_sound = new Sound(suono); // creazione oggeto Sound
my_sound.setVolume(0); // volume assente
my_sound.setVolume(100); // volume al massimo
my_sound.setVolume(50); // volume normale
getVolume restituisce il valore, compreso tra 0 e 100, dell’ultima chiamata di setVolume.

Ok detto cio’ spegnamo tutto ora =P

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Partner & Chief Innovation Officer di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

10 Commenti

  1. IO sto usando il metodo (loadSound), funziona per una singola scena. Ma se invece le scene diventano 6 e sono tutte caricate con

    ES: on (release){loadMovie(“biografia.swf”,0);}

    arriva il problema, quando cambio scena l’audio va via!
    Come si risolve?

  2. Prima di tutto penso che non stiamo parlando di scene ma di swf esterni caricati..

    ti basta creare un main.swf in cui includerai le canzoni di sottofondo richiamandole come dice il tutorial…

    Una volta richiamate gli altri swf non avrai problemi…

  3. Giulio Golinelli

    Ciao Giulio,
    ti chiedo un’aiuto, ovviamente se puoi :)
    Non riesco a mettere in loop l’mp3 nella scena.
    Ho questo codice inserito nel primo frame (e viene caricato correttamente)

    var canzone:Sound = new Sound();
    _soundbuftime = 10;

    caricami = function (quale) {
    var caricati = quale.getBytesLoaded();
    var totali = quale.getBytesTotal();
    var percentuale = Math.floor((caricati * 100)/totali);
    }

    canzone.onLoad = function () {
    clearInterval(check);
    canzone.start(0,20);
    }

    canzone.loadSound(”intro.mp3″, true);

    var check = setInterval(caricami , 1000, canzone);

    ——————–
    alla riga:
    canzone.start(0,20);
    il secondo valore dovrebbe rappresentare il numero dei loop……
    ma nulla!

    Hai un consiglio per aiutarmia risolvere il problema?
    Grazie in anticipo.
    Tuo omonimo,Giulio.

  4. Giuseppe

    Ciao Jiulius, questa è la prima volta che ti invio un messaggio.Già da un mese entro e esco dal tuo sito, certamente ci sono tante cose interessanti per noi, che per la prima volta ci affacciamo a creare un sito senza nessuna pretesa, è interessante aver qualcuno che ci aiuti.
    Da una settimana sono in possesso di un domino, è in fase di costruzione, come programma uso dreamweaver 8 e flash profesional 8. Grazie a te sono riuscito ad avere due piccoli programmi per inserire nelle pagine web un po’ di musica, ma non riesco a farli funzionare, esternamente tutto ok, ma nel momento in cui li inserisco nella pagina web html, non viene emesso il suono. Puoi aiutarmi? ti ringrazio.Giuseppe
    Scusami dimenticavo di dirti il nome dei due programmi: Sound flash e player_mp3. grazie. Giuseppe

  5. ciao julius ho letto il post di fabio minerva…
    se carico la musica in streaming nella mia homepage:
    es: var my_sound:Sound = new Sound();
    my_sound.loadSound(“sottofondo.mp3”, true);
    my_sound.start();
    negli altri swf caricati con loadmovienum(.swf, 0), se la rimetto così mi riparte da capo…
    come faccio a lasciarla continuare anche se cambio swf?

  6. Devi inserire le istruzioni del suono in un swf che contiente tutto in questo modo questo rimane sempre e a cambiare è tutto il resto

  7. ciao Julius,
    dovrei inserire sul mio sito flash, 3 brani da far ascoltare con possibilità di poterli scaricare, penso sia il tutorial giusto, lo proverò, anche se non essendo caricati in xml dovrei caricare i 3 file musicali con il rischio di appesantire il file. (??)
    Per scaricarli dovrei fare un semplice link al file MP3? Ma in questo modo mi parte il player di QUIKTIME sul mio mac, ho provato a zippare il file MP3, ma explorer 6 su PC non lo scarica.
    Hai un consiglio da darmi?

    I tuoi tutoral sono sempre molto utili
    Thank

  8. Si,
    penso sia quello che fa al caso mio, magari personalizzandolo un pò,
    ma è possibile far partire la musica solo se gli dò il play?

    Ho sentito dell’evento AIR a Milano, vorrei andarci, pensi ne valga la pena?
    Non sò se è solo in inglese.

    Grazie per i tuoi consigli

  9. ciao Julius,
    ho un grosso problema legato al discorso di attachSound che non mi funziona più niente una volta che vcarico il flash all’interno di un’alto flash:
    nel flash child (0001.swf):
    var my_sound:Sound = new Sound();
    my_sound.attachSound(“audio0”);
    my_sound.onSoundComplete = audioFine;
    my_sound.start();

    e nel flash contenitore:
    swf_mc.loadMovie(“content/0001.swf”);
    var spk:Sound = new Sound();
    spk.attachSound(“swf_mc.audio0”);

    dove sta l’errore?
    grazie mille per l’aiuto

Commenti