Pacchettoflash.media
Classepublic class Sound
EreditarietàSound Inheritance EventDispatcher Inheritance Object

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

La classe Sound consente di eseguire operazioni sui file audio in un'applicazione. La classe Sound consente di creare un nuovo oggetto Sound, di caricare e riprodurre un file MP3 esterno in tale oggetto, di interrompere lo streaming audio e di accedere ai dati relativi al file audio quali il numero di byte dello streaming e i metadati ID3. Un controllo più preciso dell'audio avviene tramite la sorgente audio (l'oggetto SoundChannel o Microphone relativo al suono) e tramite le proprietà della classe SoundTransform che controllano l'audio in uscita inviato agli altoparlanti del computer.

Per controllare l'audio incorporato in un file SWF, utilizzare le proprietà della classe SoundMixer.

Nota: l'API Sound di ActionScript 3.0 è diversa rispetto a quella di ActionScript 2.0. In ActionScript 3.0 non è possibile scegliere gli oggetti Sound e ordinarli gerarchicamente per controllarne le proprietà.

Quando si utilizza questa classe, considerare il modello di sicurezza di Flash Player.

Per ulteriori informazioni, vedere i seguenti riferimenti:

Vedere gli esempi

Vedere anche

Microphone
SoundChannel
SoundMixer
SoundTransform
Nozioni fondamentali sulle operazioni con l'audio


Proprietà pubbliche
 ProprietàDefinito da
  bytesLoaded: uint
[sola lettura] Restituisce il numero di byte attualmente disponibili in questo oggetto Sound.
Sound
  bytesTotal: int
[sola lettura] Restituisce il numero totale di byte dell'oggetto Sound.
Sound
 Inheritedconstructor: Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
Object
  id3: ID3Info
[sola lettura] Fornisce l'accesso ai metadati contenuti in un file MP3.
Sound
  isBuffering: Boolean
[sola lettura] Restituisce lo stato di bufferizzazione dei file MP3 esterni.
Sound
  length: Number
[sola lettura] La lunghezza in millisecondi del file audio corrente.
Sound
 Inheritedprototype: Object
[statico] Un riferimento all'oggetto prototipo di un oggetto classe o funzione.
Object
  url: String
[sola lettura] L'URL da cui è stato caricato l'audio.
Sound
Metodi pubblici
 MetodoDefinito da
  
Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Crea un nuovo oggetto Sound.
Sound
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un oggetto listener di eventi con un oggetto EventDispatcher, in modo che il listener riceva la notifica di un evento.
EventDispatcher
  
Interrompe lo streaming e provoca l'arresto di tutte le operazioni di scaricamento dati.
Sound
 Inherited
Invia un evento nel flusso di eventi.
EventDispatcher
 Inherited
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento.
EventDispatcher
 Inherited
Indica se per un oggetto è definita una proprietà specifica.
Object
 Inherited
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
Object
  
load(stream:URLRequest, context:SoundLoaderContext = null):void
Avvia il caricamento di un file MP3 esterno dall'URL specificato.
Sound
  
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel
Genera un nuovo oggetto SoundChannel per la riproduzione dell'audio.
Sound
 Inherited
Indica se la proprietà specificata esiste ed è enumerabile.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Rimuove un listener dall'oggetto EventDispatcher.
EventDispatcher
 Inherited
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
Object
 Inherited
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
Object
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
 Inherited
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato.
EventDispatcher
Eventi
 Evento Riepilogo Definito da
 Inherited Inviato quando Flash Player riceve lo stato di attivazione del sistema operativo e diventa attivo.EventDispatcher
   Inviato quando i dati sono stati caricati correttamente.Sound
 Inherited Inviato quando Flash Player perde lo stato di attivazione del sistema operativo e sta per diventare inattivo.EventDispatcher
  
id3
Inviato da un oggetto Sound quando sono disponibili dati ID3 per il file audio MP3.Sound
   Inviato quando si verifica un errore di input/output che impedisce l'operazione di caricamento.Sound
   Inviato quando inizia un'operazione di caricamento.Sound
   Inviato quando vengono ricevuti i dati nel corso di un'operazione di caricamento.Sound
Descrizione delle proprietà
bytesLoadedproprietà
bytesLoaded:uint  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Restituisce il numero di byte attualmente disponibili in questo oggetto Sound. Questo dato generalmente è utile solo per i file caricati dall'esterno.


Implementazione
    public function get bytesLoaded():uint
bytesTotalproprietà 
bytesTotal:int  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Restituisce il numero totale di byte dell'oggetto Sound.


Implementazione
    public function get bytesTotal():int
id3proprietà 
id3:ID3Info  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Fornisce l'accesso ai metadati contenuti in un file MP3.

I file audio MP3 possono contenere i tag ID3, che forniscono i metadati relativi a un file. Se un file audio MP3 caricato con il metodo Sound.load() contiene dei tag ID3, è possibile interrogare tali proprietà. Sono supportati solo i tag ID3 che utilizzano il set di caratteri UTF-8.

Flash Player 9 e versioni successive supportano i tag ID3 2.0, nello specifico 2.3 e 2.4. Le tabelle seguenti contengono l'elenco dei tag ID3 2.0 standard e del tipo di contenuto rappresentato dai tag. La proprietà Sound.id3 consente di accedere a questi tag tramite il formato my_sound.id3.COMM, my_sound.id3.TIME e così via. La prima tabella descrive i tag a cui si può accedere tramite il nome di proprietà ID3 2.0 o ActionScript. La seconda tabella descrive i tag ID3 supportati ma privi di proprietà predefinite in ActionScript.

Tag ID3 2.0Proprietà ActionScript corrispondente
COMMSound.id3.comment
TALBSound.id3.album
TCONSound.id3.genre
TIT2Sound.id3.songName
TPE1Sound.id3.artist
TRCKSound.id3.track
TYERSound.id3.year

La tabella seguente descrive i tag ID3 supportati ma privi di proprietà predefinite in ActionScript. Per accedere a questi tag, chiamare mySound.id3.TFLT, mySound.id3.TIME e così via.

ProprietàDescrizione
TFLTTipo di file
TIMETempo
TIT1Descrizione del gruppo del contenuto
TIT2Titolo/nome canzone/descrizione del contenuto
TIT3Sottotitolo/approfondimento della descrizione
TKEYTonalità iniziale
TLANLingue
TLENLunghezza
TMEDTipo di supporto
TOALTitolo originale album/film/spettacolo
TOFNNome di file originale
TOLYParolieri originali
TOPEArtisti/esecutori originali
TORYAnno di pubblicazione originale
TOWNProprietario del file/licenziatario
TPE1Esecutori/solisti principali
TPE1Band/orchestra/accompagnamento
TPE3Direttore d'orchestra/approfondimento dell'esecutore
TPE4Interpretato, remissato o modificato in altro modo da
TPOSParte di un set
TPUBEditore
TRCKNumero della traccia/posizione nel set
TRDADate della registrazione
TRSNNome della Web radio
TRSOProprietario della Web radio
TSIZDimensione
TSRCISRC (International Standard Recording Code)
TSSESoftware/hardware e impostazioni utilizzate per la codifica
TYERAnno
WXXXCollegamento URL

Quando si utilizza questa proprietà, tenere presente il modello di sicurezza di Flash Player:

Per ulteriori informazioni, vedere i seguenti riferimenti:


Implementazione
    public function get id3():ID3Info

Vedere anche


Esempio

L'esempio seguente legge le informazioni ID3 da un file audio e le visualizza in un campo di testo.

Nella funzione di costruzione, il file audio viene caricato, ma non è impostato per la riproduzione. In questo caso, si presume che il file si trovi nella directory SWF. Il sistema deve avere le autorizzazioni per leggere i tag ID3 di un file audio caricato. Se il file contiene informazioni ID3 e il programma ha le autorizzazioni per leggerle, viene attivato un evento Event.ID3 e la proprietà id3 del file audio viene popolata. La proprietà id3 contiene un oggetto ID3Info con tutte le informazioni ID3.

Nel metodo id3Handler(), i tag ID3 del file vengono memorizzati in id3, un oggetto della classe ID3Info. Viene creata un'istanza di un campo di testo per visualizzare l'elenco dei tag ID3. Il ciclo for ripassa tutti i tag ID3 2.0 e aggiunge il nome e il valore al contenuto del campo di testo. Grazie alle proprietà delle informazioni ID3 (ID3Info), vengono aggiunti anche i nomi dell'artista, del brano e dell'album. ActionScript 3.0 e Flash Player 9 e versioni successive supportano i tag ID3 2.0, e in particolare 2.3 e 2.4. Se si ripassano le proprietà come nel ciclo for, vengono visualizzati solo i tag ID3 2.0. Tuttavia, anche i dati delle versioni precedenti vengono memorizzati nella proprietà id3 del brano ed è possibile accedervi utilizzando le proprietà della classe di informazioni ID3. I tags per ID3 1.0 si trovano alla fine del file mentre i tag per ID3 2.0 si trovano all'inizio del file. (Talvolta, i file possono avere tag di versioni precedenti e successive nello stesso punto.) Se un file è codificato sia con i tag della versione 1.0 che con quelli della versione 2.0 all'inizio e alla fine del file, il metodoid3Handler() verrà richiamato due volte. Tale metodo leggerà per prima la versione 2.0 e quindi la versione 1.0. Se è disponibile solamente il tag ID3 1.0, allora l'informazione sarà accessibile attraverso proprietà ID3 info, quali id3.songname. Nel caso di ID3 2.0, id3.TITS le proprietà recupereranno il nome del brano utilizzando il nuovo tag (TITS).

Si noti che nessuna gestione degli errori è stata scritta per questo esempio e nel caso in cui il contenuto ID3 sia troppo lungo, il risultato potrebbe andare oltre l’aria visibile.

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.net.URLRequest;
    import flash.media.ID3Info;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;

    public class Sound_id3Example extends Sprite {
        private var snd:Sound = new Sound();       
        private var myTextField:TextField = new TextField();

        public function Sound_id3Example() {
            snd.addEventListener(Event.ID3, id3Handler);
            snd.load(new URLRequest("mySound.mp3"));
        }
    
        private function id3Handler(event:Event):void {
            var id3:ID3Info = snd.id3;

            myTextField.autoSize = TextFieldAutoSize.LEFT;
            myTextField.border = true;

            myTextField.appendText("Received ID3 Info: \n");
              
            for (var propName:String in id3) {
                myTextField.appendText(propName + " = " + id3[propName] + "\n");
            }
 
            myTextField.appendText("\n" + "Artist: " + id3.artist + "\n");
            myTextField.appendText("Song name: " + id3.songName + "\n");
            myTextField.appendText("Album: " + id3.album + "\n\n"); 
 
            this.addChild(myTextField);
        }
    }
}
isBufferingproprietà 
isBuffering:Boolean  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Restituisce lo stato di bufferizzazione dei file MP3 esterni. Se il valore è true, qualsiasi riproduzione in corso viene interrotta mentre l'oggetto attende altri dati.


Implementazione
    public function get isBuffering():Boolean
lengthproprietà 
length:Number  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

La lunghezza in millisecondi del file audio corrente.


Implementazione
    public function get length():Number
urlproprietà 
url:String  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

L'URL da cui è stato caricato l'audio. Questa proprietà è applicabile solo agli oggetti Sound caricati tramite il metodo Sound.load(). Per gli oggetti Sound associati a una risorsa audio di una libreria SWF, il valore della proprietà url è null.

Quando si effettua la prima chiamata a Sound.load(), la proprietà url all'inizio ha valore null perché l'URL finale è ancora sconosciuto. La proprietà url avrà un valore non nullo non appena sarà inviato un evento open dall'oggetto Sound.

La proprietà url contiene l'URL finale assoluto da cui è stato caricato un file audio. Il valore di url in genere è uguale al valore passato al parametro stream di Sound.load(). Tuttavia, se a Sound.load() è stato passato un URL relativo, il valore della proprietà url rappresenta l'URL assoluto. Inoltre, se la richiesta di URL originale viene reindirizzata da un server HTTP, il valore della proprietà url rispecchia l'URL finale da cui è stato effettivamente scaricato il file audio. Questa segnalazione di un URL assoluto e definitivo equivale al comportamento di LoaderInfo.url.


Implementazione
    public function get url():String

Vedere anche

Descrizione della funzione di costruzione
Sound()Funzione di costruzione
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Crea un nuovo oggetto Sound. Se viene passato un oggetto URLRequest valido alla funzione di costruzione Sound, questa effettua automaticamente la chiamata alla funzione load() per l'oggetto Sound. Se non viene passato un oggetto URLRequest valido alla funzione di costruzione Sound, è necessario che l'utente stesso effettui la chiamata alla funzione load() per l'oggetto Sound; in caso contrario, lo streaming non sarà caricato.

Una volta chiamata la funzione load() su un oggetto Sound, non è possibile caricare un file audio diverso in quell'oggetto Sound. Per caricare un file audio diverso, creare un nuovo oggetto Sound.

Parametri
stream:URLRequest (default = null) — L'URL che punta a un file MP3 esterno.
 
context:SoundLoaderContext (default = null) — Il numero minimo di millisecondi di dati MP3 che può essere caricato nel buffer dell'oggetto Sound. L'oggetto Sound attende che venga caricata almeno questa quantità di dati prima di iniziare la riproduzione o riprenderla dopo un blocco della rete. Il valore predefinito è 1000 (1 secondo).
Descrizione dei metodi
close()metodo
public function close():void

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Interrompe lo streaming e provoca l'arresto di tutte le operazioni di scaricamento dati. Dopo la chiamata al metodo close() non è più possibile leggere dati dallo streaming.


Genera
IOError — Impossibile chiudere lo streaming oppure lo streaming non è stato aperto.

Esempio

Nell'esempio seguente, quando l'utente fa clic sul pulsante Interrompi, viene chiamato il metodo Sound.close() e lo streaming audio viene interrotto.

Nella funzione di costruzione, viene creato un campo di testo per il pulsante Avvia e Interrompi. Quando l'utente fa clic sul campo di testo, viene richiamato il metodo clickHandler(), che gestisce l'avvio e l'interruzione del file audio. In base alla connessione di rete o quando l'utente fa clic sul pulsante Interrompi, è possibile che buona parte del file sia già stata caricata e potrebbe passare del tempo prima che la riproduzione del file audio venga effettivamente interrotta. Un blocco try...catch viene utilizzato per rilevare eventuali errori IO che potrebbero verificarsi durante la chiusura dello streaming. Ad esempio, se il suono viene caricato da una directory locale e non eseguito in streaming, viene rilevato l'errore 2029, che significa: "Per questo oggetto URLStream non è aperto alcun flusso".

 
package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;    
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.errors.IOError;
    import flash.events.IOErrorEvent;

    public class Sound_closeExample extends Sprite {
        private var snd:Sound = new Sound();
        private var button:TextField = new TextField();
        private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
        
        public function Sound_closeExample() {
            button.x = 10;
            button.y = 10;
            button.text = "START";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.LEFT;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {

            if(button.text == "START") {

                snd.load(req);
                snd.play();        

                snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

                button.text = "STOP";
            }
            else if(button.text == "STOP") {
                    
                try {
                    snd.close();
                    button.text = "Wait for loaded stream to finish.";
                }
                catch (error:IOError) {
                    button.text = "Couldn't close stream " + error.message;    
                }
            }
        }
        
        private function errorHandler(event:IOErrorEvent):void {
                button.text = "Couldn't load the file " + event.text;
        }
    }
}


load()metodo 
public function load(stream:URLRequest, context:SoundLoaderContext = null):void

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Avvia il caricamento di un file MP3 esterno dall'URL specificato. Se alla funzione di costruzione Sound viene fornito un oggetto URLRequest valido, la funzione effettua automaticamente la chiamata a Sound.load(). La chiamata a Sound.load() deve essere effettuata dall'utente solo quando alla funzione di costruzione Sound non viene passato un oggetto URLRequest valido o viene passato un valore null.

Una volta chiamata la funzione load() su un oggetto Sound, non è possibile caricare un file audio diverso in quell'oggetto Sound. Per caricare un file audio diverso, creare un nuovo oggetto Sound.

Quando si utilizza questo metodo, considerare il modello di sicurezza di Flash Player:

Per ulteriori informazioni, vedere i seguenti riferimenti:

Parametri

stream:URLRequest — Un URL che punta a un file MP3 esterno.
 
context:SoundLoaderContext (default = null) — Il numero minimo di millisecondi di dati MP3 che può essere caricato nel buffer dell'oggetto Sound. L'oggetto Sound attende che venga caricata almeno questa quantità di dati prima di iniziare la riproduzione o riprenderla dopo un blocco della rete. Il valore predefinito è 1000 (1 secondo).


Genera
IOError — Il caricamento non è riuscito a causa di un errore di rete.
 
SecurityError — I file SWF non attendibili locali potrebbero non essere in grado di comunicare con Internet. Questo problema può essere risolto riclassificando il file SWF come file locale con utilizzo in rete o come attendibile.

Vedere anche


Esempio

L'esempio seguente mostra l'avanzamento del caricamento di un file audio.

Nella funzione di costruzione viene creato un oggetto URLRequest per identificare la posizione del file audio, un podcast di Adobe. Il file viene caricato in un blocco try...catch per individuare eventuali errori che potrebbero verificarsi durante il caricamento del file. Se si verifica un errore IO, anche il metodo errorHandler() viene richiamato e il messaggio di errore viene scritto nel campo di testo preposto della relazione sull'avanzamento. Quando è in corso un'operazione di caricamento, viene inviato un evento ProgressEvent.PROGRESS e viene richiamato il metodo progressHandler(). L'evento ProgressEvent.PROGRESS viene utilizzato come timer per il calcolo dell'avanzamento del caricamento.

Il metodo progressHandler() divide il valore bytesLoaded trasferito con l'oggetto ProgressEvent per il valore bytesTotal per arrivare alla percentuale di dati audio in corso di caricamento. Questi valori vengono visualizzati nel campo di testo. (Se il file è piccolo, memorizzato nella cache o se si trova nella directory locale, l'avanzamento potrebbe passare inosservato.)

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    
    public class Sound_loadExample extends Sprite {
        private var snd:Sound = new Sound();
        private var statusTextField:TextField  = new TextField();

        public function Sound_loadExample(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;
            var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
            snd.load(req);
            
            snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
 
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                     
            this.addChild(statusTextField);
        }
    
        private function progressHandler(event:ProgressEvent):void {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
              
            statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" 
                                 + "Bytes being loaded: " + event.bytesLoaded + "\n" 
                                 + "Percentage of sound file that is loaded " + LoadPercent + "%.\n";
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}
play()metodo 
public function play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Genera un nuovo oggetto SoundChannel per la riproduzione dell'audio. Questo metodo restituisce un oggetto SoundChannel a cui è possibile accedere per interrompere l'audio e per controllare il volume (per controllare il volume, la panoramica e il bilanciamento, accedere all'oggetto SoundTransform assegnato al canale audio).

Parametri

startTime:Number (default = 0) — La posizione iniziale in cui deve iniziare la riproduzione, in millisecondi.
 
loops:int (default = 0) — Definisce il numero di ripetizioni del valore startTime di un suono prima che il canale audio interrompa la riproduzione.
 
sndTransform:SoundTransform (default = null) — L'oggetto SoundTransform iniziale assegnato al canale audio.

Restituisce
SoundChannel — Un oggetto SoundChannel utilizzato per controllare l'audio. Questo metodo restituisce null se non è installata una scheda audio o se non vi sono più canali audio disponibili. Il numero massimo di canali audio disponibili contemporaneamente è 32.

Vedere anche


Esempio

Nell'esempio seguente, al termine del caricamento del file, l'utente che utilizza una barra grafica può selezionare la posizione iniziale (ora di inizio) del file audio.

La funzione di costruzioni chiama il metodo Sound.load() per avviare il caricamento dei dati audio. In seguito, chiama il metodo Sound.play(), che avvia la riproduzione del suono non appena sono stati caricati dati a sufficienza. Il metodo Sound.play() restituisce un oggetto SoundChannel che può essere utilizzato per controllare la riproduzione del suono. Il campo di testo visualizza le istruzioni. Per avere la certezza che il contenuto del punto da cui deve avere inizio la riproduzione sia già stato caricato, l'oggetto Sprite bar viene creato e visualizzato al termine del caricamento del file. Al termine del caricamento del file, viene inviato un evento Event.COMPLETE, che genera il metodo completeHandler(). Il metodo completeHandler() crea quindi la barra e l'aggiunge all'elenco di visualizzazione. (Un oggetto Sprite viene utilizzato al posto di un oggetto Shape per il supporto dell'interattività.) Quando l'utente fa clic sulla barra, viene attivato il metodo clickHandler().

Nel metodo clickHandler(), la posizione della coordinata x del clic dell'utente, event.localX, viene utilizzata per determinare il punto da cui l'utente desidera iniziare la riproduzione del file. Poiché la barra rappresenta 100 pixel e inizia alla coordinata x dei 100 pixel, è molto semplice determinare la percentuale della posizione. Inoltre, poiché il file è stato caricato, la proprietà length del file audio avrà la lunghezza del file completo in millisecondi. Tramite la lunghezza del file audio e la posizione sulla linea, è possibile determinare la posizione di avvio del file audio. Se si interrompe la riproduzione audio, il file audio riparte dalla posizione di avvio selezionata, che viene trasmessa come parametro startTime al metodo play().

 
package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.MouseEvent;
    import flash.media.Sound;;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample1 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel = new SoundChannel();
        private var infoTextField:TextField = new TextField();
    
        public function Sound_playExample1() {

            var req:URLRequest = new URLRequest("MySound.mp3");
            
            infoTextField.autoSize = TextFieldAutoSize.LEFT;
            infoTextField.text = "Please wait for the file to be loaded.\n" 
                                + "Then select from the bar to decide where the file should start.";
            
            snd.load(req);               
            channel = snd.play();

            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(Event.COMPLETE, completeHandler);


            this.addChild(infoTextField);
        }

        private function completeHandler(event:Event):void {                
            infoTextField.text = "File is ready.";

            var bar:Sprite = new Sprite();

            bar.graphics.lineStyle(5, 0xFF0000);
            bar.graphics.moveTo(100, 100);
            bar.graphics.lineTo(200, 100);

            bar.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(bar);
        }
    
        private function clickHandler(event:MouseEvent):void {
            
                var position:uint = event.localX;
                var percent:uint = Math.round(position) - 100;   
                var cue:uint = (percent / 100) * snd.length;

                channel.stop();
                channel = snd.play(cue);    
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            infoTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}

Nell'esempio seguente, il suono viene riprodotto una o due volte, a seconda che l'utente faccia clic o doppio clic su un pulsante.

Nella funzione di costruzione, il suono viene caricato e viene creato un oggetto Sprite button a forma di rettangolo. (Un oggetto Sprite viene utilizzato al posto di un oggetto Shape per il supporto dell'interattività.) Si presume che il file audio si trovi nella stessa directory del file SWF. (Non è presente codice di gestione degli errori per questo esempio.)

Due listener di eventi sono impostati per rispondere ai clic e ai doppi clic del mouse. Se l'utente fa clic, viene richiamato il metodo clickHandler(), che riproduce il suono. Se l'utente fa doppio clic sul pulsante, viene richiamato il metodo doubleClickHandler(), che riproduce il suono due volte. Il secondo argomento del metodo play() è impostato su 1, il che significa che la riproduzione audio torna una volta al punto di inizio e viene eseguita nuovamente. L'ora di inizio, primo argomento, è impostata su 0, quindi il file verrà riprodotto dall'inizio.

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.media.Sound;
    import flash.net.URLRequest;

    public class Sound_playExample2 extends Sprite {
        private var button:Sprite = new Sprite(); 
        private var snd:Sound = new Sound();
            
        public function Sound_playExample2() {

            var req:URLRequest = new URLRequest("click.mp3");
            snd.load(req);               
     
            button.graphics.beginFill(0x00FF00);
            button.graphics.drawRect(10, 10, 50, 30);
            button.graphics.endFill();
     
            button.addEventListener(MouseEvent.CLICK, clickHandler);
            button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
     
            this.addChild(button);
        }

        private function clickHandler(event:MouseEvent):void {
            snd.play();            
        }

        private function doubleClickHandler(event:MouseEvent):void {
            snd.play(0, 2);        
        }
    }
}

L'esempio seguente mostra l'avanzamento del caricamento e della riproduzione di un file audio.

Nella funzione di costruzione, il file viene caricato in un blocco try...catch per individuare eventuali errori che potrebbero verificarsi durante il caricamento del file. Un listener viene aggiunto all'oggetto audio che risponde a un evento IOErrorEvent chiamando il metodo errorHandler(). Un altro listener viene aggiunto per l'applicazione principale che risponde a un evento Event.ENTER_FRAME, utilizzato come meccanismo di determinazione del momento in cui visualizzare l'avanzamento della riproduzione. Infine, un terzo listener viene aggiunto per il canale audio che risponde a un evento Event.SOUND_COMPLETE (al termine della riproduzione), chiamando il metodo soundCompleteHandler(). Il metodo soundCompleteHandler() rimuove anche il listener di eventi per l'evento Event.ENTER_FRAME.

Il metodo enterFrameHandler() divide il valore bytesLoaded trasferito con l'oggetto ProgressEvent per il valore bytesTotal per arrivare alla percentuale di dati audio in corso di caricamento. La percentuale di dati audio in corso di riproduzione può essere determinata dividendo il valore della proprietà position del canale audio per la lunghezza dei dati audio. Tuttavia, se i dati audio non sono stati completamente caricati, la proprietà length dell'oggetto audio mostra solo la dimensione dei dati audio caricata al momento. È possibile calcolare una stima della dimensione definitiva del file audio completo dividendo il valore della proprietà length dell'oggetto audio corrente per il valore della proprietà bytesLoaded diviso il valore della proprietà bytesTotal.

Se il file è piccolo, memorizzato nella cache o se si trova nella directory locale, l'avanzamento del caricamento potrebbe passare inosservato. Anche l'intervallo di tempo tra il momento in cui inizia il caricamento e la riproduzione dei dati audio viene determinato grazie al valore della proprietà SoundLoaderContext.buffertime, che per impostazione predefinita è 1000 millisecondi e può essere reimpostato.

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample3 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel;
        private var statusTextField:TextField  = new TextField();

        public function Sound_playExample3(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;

           var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
                snd.load(req);
            
                channel = snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
                    
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                    
            this.addChild(statusTextField);
        }
    
        private function enterFrameHandler(event:Event):void {    
            var loadTime:Number = snd.bytesLoaded / snd.bytesTotal;
            var loadPercent:uint = Math.round(100 * loadTime);
            var estimatedLength:int = Math.ceil(snd.length / (loadTime));
            var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength));
      
            statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" 
                                   + "Bytes being loaded: " + snd.bytesLoaded + "\n" 
                                   + "Percentage of sound file that is loaded " + loadPercent + "%.\n"
                                   + "Sound playback is " + playbackPercent + "% complete.";     
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }

        private function soundCompleteHandler(event:Event):void {
            statusTextField.text = "The sound has finished playing.";
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
    }
}
Descrizione degli eventi
complete Evento
Tipo di oggetto evento: flash.events.Event
Event.type property = flash.events.Event.COMPLETE

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Inviato quando i dati sono stati caricati correttamente.

Definisce il valore della proprietà type di un oggetto evento complete.

Questo evento ha le seguenti proprietà:

ProprietàValore
bubblesfalse
cancelablefalse; non è presente alcun comportamento predefinito da annullare.
currentTargetL'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
targetL'oggetto di rete che ha completato il caricamento.

Vedere anche

id3 Evento  
Tipo di oggetto evento: flash.events.Event
Event.type property = flash.events.Event.ID3

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Inviato da un oggetto Sound quando sono disponibili dati ID3 per il file audio MP3.

Definisce il valore della proprietà type di un oggetto evento id3.

Questo evento ha le seguenti proprietà:

ProprietàValore
bubblesfalse
cancelablefalse; non è presente alcun comportamento predefinito da annullare.
currentTargetL'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
targetL'oggetto Sound che carica l'MP3 per cui sono ora disponibili dati ID3. Il target non è sempre l'oggetto nell'elenco di visualizzazione che ha registrato il listener di eventi. Utilizzare la proprietà currentTarget per accedere all'oggetto nell'elenco di visualizzazione, che sta elaborando l'evento.

Vedere anche

ioError Evento  
Tipo di oggetto evento: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Inviato quando si verifica un errore di input/output che impedisce l'operazione di caricamento.

Definisce il valore della proprietà type di un oggetto evento ioError.

Questo evento ha le seguenti proprietà:

ProprietàValore
bubblesfalse
cancelablefalse; non è presente alcun comportamento predefinito da annullare.
currentTargetL'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
targetL'oggetto di rete interessato dall'errore di input/output.
textTesto da visualizzare come messaggio di errore.

Vedere anche

open Evento  
Tipo di oggetto evento: flash.events.Event
Event.type property = flash.events.Event.OPEN

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Inviato quando inizia un'operazione di caricamento.

Definisce il valore della proprietà type di un oggetto evento open.

Questo evento ha le seguenti proprietà:

ProprietàValore
bubblesfalse
cancelablefalse; non è presente alcun comportamento predefinito da annullare.
currentTargetL'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
targetL'oggetto di rete che ha aperto una connessione.

Vedere anche

progress Evento  
Tipo di oggetto evento: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS

Versione linguaggio: ActionScript 3.0
Versione lettore: Flash Player 9

Inviato quando vengono ricevuti i dati nel corso di un'operazione di caricamento.

Definisce il valore della proprietà type di un oggetto evento progress.

Questo evento ha le seguenti proprietà:

ProprietàValore
bubblesfalse
bytesLoadedIl numero di elementi o di byte caricati nel momento in cui il listener elabora l'evento.
bytesTotalIl numero totale di elementi o byte che vengono caricati se il processo di caricamento viene completato correttamente.
cancelablefalse; non è presente alcun comportamento predefinito da annullare.
currentTargetL'oggetto che elabora attivamente l'oggetto Event con un listener di eventi.
targetL'oggetto di rete che riporta l'avanzamento.

Vedere anche

Esempi Come utilizzare gli esempi
SoundExample.as

Nell'esempio seguente vengono visualizzate le informazioni sugli eventi relativi all'audio che si verificano quando si apre e si riproduce un file MP3. Per provare l'esempio, collocare un file di nome MySound.mp3 nella stessa directory del file SWF.
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class SoundExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var song:SoundChannel;

        public function SoundExample() {
            var request:URLRequest = new URLRequest(url);
            var soundFactory:Sound = new Sound();
            soundFactory.addEventListener(Event.COMPLETE, completeHandler);
            soundFactory.addEventListener(Event.ID3, id3Handler);
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            soundFactory.load(request);
            song = soundFactory.play();
        }

        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }

        private function id3Handler(event:Event):void {
            trace("id3Handler: " + event);
        }

        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler: " + event);
        }
    }
}




 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/ActionScriptLangRefV3/flash/media/Sound.html