| Pacchetto | flash.media |
| Classe | public class Sound |
| Ereditarietà | Sound EventDispatcher Object |
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
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.
Sound.id3, SoundMixer.computeSpectrum(), SoundMixer.bufferTime e la classe SoundTransform.Per ulteriori informazioni, vedere i seguenti riferimenti:
Vedere anche
| 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 | ||
![]() | constructor: 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 | ||
![]() | prototype: 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 | ||
| Metodo | Definito da | ||
|---|---|---|---|
|
Crea un nuovo oggetto Sound.
| Sound | ||
![]() |
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 | ||
![]() |
Invia un evento nel flusso di eventi.
| EventDispatcher | |
![]() |
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento.
| EventDispatcher | |
![]() |
Indica se per un oggetto è definita una proprietà specifica.
| Object | |
![]() |
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
| Object | |
|
Avvia il caricamento di un file MP3 esterno dall'URL specificato.
| Sound | ||
|
Genera un nuovo oggetto SoundChannel per la riproduzione dell'audio.
| Sound | ||
![]() |
Indica se la proprietà specificata esiste ed è enumerabile.
| Object | |
![]() |
Rimuove un listener dall'oggetto EventDispatcher.
| EventDispatcher | |
![]() |
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
| Object | |
![]() |
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
| Object | |
![]() |
Restituisce il valore di base dell'oggetto specificato.
| Object | |
![]() |
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato.
| EventDispatcher | |
| Evento | Riepilogo | Definito da | ||
|---|---|---|---|---|
![]() | 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 | |||
![]() | Inviato quando Flash Player perde lo stato di attivazione del sistema operativo e sta per diventare inattivo. | EventDispatcher | ||
| 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 | |||
| bytesLoaded | proprietà |
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.
public function get bytesLoaded():uint
| bytesTotal | proprietà |
bytesTotal:int [sola lettura]
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Restituisce il numero totale di byte dell'oggetto Sound.
public function get bytesTotal():int
| id3 | proprietà |
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.0 | Proprietà ActionScript corrispondente |
| COMM | Sound.id3.comment |
| TALB | Sound.id3.album |
| TCON | Sound.id3.genre |
| TIT2 | Sound.id3.songName |
| TPE1 | Sound.id3.artist |
| TRCK | Sound.id3.track |
| TYER | Sound.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 |
| TFLT | Tipo di file |
| TIME | Tempo |
| TIT1 | Descrizione del gruppo del contenuto |
| TIT2 | Titolo/nome canzone/descrizione del contenuto |
| TIT3 | Sottotitolo/approfondimento della descrizione |
| TKEY | Tonalità iniziale |
| TLAN | Lingue |
| TLEN | Lunghezza |
| TMED | Tipo di supporto |
| TOAL | Titolo originale album/film/spettacolo |
| TOFN | Nome di file originale |
| TOLY | Parolieri originali |
| TOPE | Artisti/esecutori originali |
| TORY | Anno di pubblicazione originale |
| TOWN | Proprietario del file/licenziatario |
| TPE1 | Esecutori/solisti principali |
| TPE1 | Band/orchestra/accompagnamento |
| TPE3 | Direttore d'orchestra/approfondimento dell'esecutore |
| TPE4 | Interpretato, remissato o modificato in altro modo da |
| TPOS | Parte di un set |
| TPUB | Editore |
| TRCK | Numero della traccia/posizione nel set |
| TRDA | Date della registrazione |
| TRSN | Nome della Web radio |
| TRSO | Proprietario della Web radio |
| TSIZ | Dimensione |
| TSRC | ISRC (International Standard Recording Code) |
| TSSE | Software/hardware e impostazioni utilizzate per la codifica |
| TYER | Anno |
| WXXX | Collegamento URL |
Quando si utilizza questa proprietà, tenere presente il modello di sicurezza di Flash Player:
id3 di un oggetto Sound è sempre consentita per i file SWF che si trovano nella stessa funzione di sicurezza sandbox del file audio. Per i file di altre sandbox esistono invece dei controlli di sicurezza.load() della classe Sound è possibile specificare un parametro context, cioè un oggetto SoundLoaderContext. Se la proprietà checkPolicyFile dell'oggetto SoundLoaderContext viene impostata su true, Flash Player verifica la presenza di un file di criteri validi per domini diversi sul server da cui viene caricato l'audio. Se esiste un file di criteri validi per domini diversi che consente l'interazione con il dominio del file SWF da caricare, il file può accedere alla proprietà id3 dell'oggetto Sound; in caso contrario, non vi può accedere.Per ulteriori informazioni, vedere i seguenti riferimenti:
public function get id3():ID3Info
Vedere anche
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);
}
}
}
| isBuffering | proprietà |
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.
public function get isBuffering():Boolean
| length | proprietà |
length:Number [sola lettura]
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
La lunghezza in millisecondi del file audio corrente.
public function get length():Number
| url | proprietà |
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.
public function get url():String
Vedere anche
| 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.
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).
|
| 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.
IOError — Impossibile chiudere lo streaming oppure lo streaming non è stato aperto.
|
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.
Sound.load() non è consentita se il file SWF chiamante è nella sandbox locale con file system e il suono è in una sandbox di rete.allowNetworking dei tag object ed embed nella pagina HTML che include il contenuto SWF.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).
|
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
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.
|
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
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;
}
}
}
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);
}
}
}
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);
}
}
}| complete | Evento |
flash.events.Event
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 |
|---|---|
bubbles | false |
cancelable | false; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto di rete che ha completato il caricamento. |
Vedere anche
| id3 | Evento |
flash.events.Event
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 |
|---|---|
bubbles | false |
cancelable | false; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'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 |
flash.events.IOErrorEvent
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 |
|---|---|
bubbles | false |
cancelable | false; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto di rete interessato dall'errore di input/output. |
text | Testo da visualizzare come messaggio di errore. |
Vedere anche
| open | Evento |
flash.events.Event
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 |
|---|---|
bubbles | false |
cancelable | false; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto di rete che ha aperto una connessione. |
Vedere anche
| progress | Evento |
flash.events.ProgressEvent
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 |
|---|---|
bubbles | false |
bytesLoaded | Il numero di elementi o di byte caricati nel momento in cui il listener elabora l'evento. |
bytesTotal | Il numero totale di elementi o byte che vengono caricati se il processo di caricamento viene completato correttamente. |
cancelable | false; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
target | L'oggetto di rete che riporta l'avanzamento. |
Vedere anche
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