Pacchetto | flash.media |
Classe | public class SoundLoaderContext |
Ereditarietà | SoundLoaderContext Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
della classe Sound.
Quando utilizzate questa classe, prendete in considerazione il modello di sicurezza seguente:
- Il caricamento e la riproduzione audio non sono consentiti se il file che effettua la chiamata si trova in una sandbox di rete mentre il file audio da caricare è locale.
- Per impostazione predefinita, il caricamento e la riproduzione audio non sono consentiti se il file che effettua la chiamata è locale e cerca di caricare e riprodurre audio remoto. Per consentirlo, un utente deve accordare un permesso esplicito.
- Alcune operazioni associate all'audio sono soggette a limitazioni. Per un file di un altro dominio non è possibile accedere ai dati dell'audio caricato, a meno che non venga implementato un file di criteri per gli URL. Le API associate all'audio soggette a questa limitazione sono la proprietà
Sound.id3
e i metodiSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
eSoundTransform()
.
Tuttavia, in Adobe AIR, il contenuto della funzione di sicurezza sandbox dell'applicazione
(contenuto installato con l'applicazione AIR) non è interessato da queste limitazioni di sicurezza.
Per ulteriori informazioni sulla sicurezza, vedete l'argomento sulla sicurezza nel Centro per sviluppatori di Flash Player .
Proprietà | Definito da | ||
---|---|---|---|
bufferTime : Number = 1000
Il numero di millisecondi per precaricare l'audio in streaming in un buffer prima dell'avvio dello streaming. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Specifica se l'applicazione deve tentare di scaricare un file di criteri URL dal server su cui carica l'audio prima di iniziare il caricamento. | SoundLoaderContext | ||
constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object |
Metodo | Definito da | ||
---|---|---|---|
Crea un nuovo oggetto SoundLoaderContext. | SoundLoaderContext | ||
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 | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object |
bufferTime | proprietà |
public var bufferTime:Number = 1000
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Il numero di millisecondi per precaricare l'audio in streaming in un buffer prima dell'avvio dello streaming.
Non è possibile sostituire il valore di SoundLoaderContext.bufferTime
impostando la proprietà globale SoundMixer.bufferTime
. La proprietà SoundMixer.bufferTime
incide sul tempo di bufferizzazione dell'audio in streaming incorporato in un file SWF ed è indipendente dagli oggetti Sound creati in modo dinamico (ovvero gli oggetti Sound creati in ActionScript).
checkPolicyFile | proprietà |
public var checkPolicyFile:Boolean = false
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Specifica se l'applicazione deve tentare di scaricare un file di criteri URL dal server su cui carica l'audio prima di iniziare il caricamento. Questa proprietà è valida per l'audio caricato all'esterno del dominio del file che effettua la chiamata mediante il metodo Sound.load()
.
Impostate questa proprietà su true
quando caricate audio dall'esterno del dominio del file che esegue la chiamata e il codice nel file che esegue la chiamata richiede un accesso di basso livello ai dati audio. Esempi di accesso di basso livello ai dati audio comprendono il riferimento alla proprietà Sound.id3
per ottenere un oggetto ID3Info o la chiamata del metodo SoundMixer.computeSpectrum()
per ottenere il campionamento audio dal suono caricato. Se si tenta di accedere ai dati audio senza impostare la proprietà checkPolicyFile
su true
al momento del caricamento, può verificarsi un'eccezione SecurityError perché il file di criteri necessario non è stato scaricato.
Se l'accesso di basso livello ai dati audio da caricare non è necessario, evitare di impostare checkPolicyFile
su true
. Il controllo della presenza di un file di criteri richiede una notevole ampiezza di banda e potrebbe ritardare l'avvio dello scaricamento; pertanto, deve essere eseguito solo quando è necessario.
Se chiamate Sound.load()
con SoundLoaderContext.checkPolicyFile
impostato su true
, Flash Player o AIR deve scaricare correttamente un file di criteri URL appropriato o determinare l'inesistenza di tale file prima di iniziare a scaricare il file audio specificato. Per verificare l'esistenza di un file di criteri, Flash Player o AIR esegue le seguenti operazioni, nell'ordine:
- Flash Player o AIR prende in considerazione i file dei criteri che sono già stati scaricati.
- Flash Player o AIR cerca di scaricare gli eventuali file dei criteri in attesa specificati nelle chiamate a
Security.loadPolicyFile()
. - Flash Player o AIR cerca di scaricare un file di criteri dal percorso predefinito che corrisponde all'URL del file audio, ovvero
/crossdomain.xml
sullo stesso server diURLRequest.url
. (L'URL del file audio è specificato nella proprietàurl
dell'oggetto URLRequest passato aSound.load()
o alla funzione di costruzione Sound).
In ogni caso, Flash Player o AIR richiede che sul server del file audio esista un file dei criteri appropriato, che questo consenta di accedere al file audio in URLRequest.url
per mezzo del percorso del file dei criteri e che consenta al dominio del file che effettua la chiamata di accedere all'audio tramite uno o più tag <allow-access-from>
.
Se impostate checkPolicyFile
su true
, Flash Player o AIR attende la verifica del file dei criteri prima di caricare l'audio. È opportuno aspettare a eseguire qualsiasi operazione di basso livello sui dati audio (ad esempio, la chiamata a Sound.id3
o SoundMixer.computeSpectrum()
) fino a quando gli eventi progress
e complete
non vengono inviati dall'oggetto Sound.
Se impostate checkPolicyFile
su true
ma non viene trovato un file di criteri appropriato, l'errore viene generato solo quando si esegue un'operazione che richiede un file di criteri e, in quel caso, Flash Player o AIR genera un'eccezione SecurityError
. Quando viene restituito un evento complete
è possibile verificare se è stato trovato un file di criteri appropriato inserendo il valore di Sound.id3
all'interno di un blocco try
per vedere se viene generata un'eccezione SecurityError
.
Prestate attenzione nell'uso di checkPolicyFile
in caso di scaricamento di audio da un URL che utilizza il reindirizzamento HTTP sul lato server. Flash Player o AIR tenta di recuperare i file di criteri che corrispondono alla proprietà url
dell'oggetto URLRequest passato a Sound.load()
. Se il file audio finale proviene da un URL diverso per via del reindirizzamento HTTP, i file di criteri scaricati all'inizio potrebbero non essere validi per l'URL del file audio finale, che è quello fondamentale nelle decisioni relative alla sicurezza.
Nel caso in cui si verifichi questa eventualità, di seguito è illustrata una possibile soluzione. Quando si riceve un evento progress
o complete
, è possibile esaminare il valore della proprietà Sound.url
, che contiene l'URL finale del file audio. A questo punto, chiamate il metodo Security.loadPolicyFile()
con un URL del file di criteri calcolato in base all'URL finale del file audio. Infine, eseguite il polling del valore di Sound.id3
fino a quando non vengono più generate eccezioni.
Ciò non vale per il contenuto presente nella funzione di sicurezza sandbox dell'applicazione AIR. Il contenuto presente nella funzione di sicurezza sandbox ha sempre accesso a livello di codice al contenuto audio, a prescindere dall'origine.
Per ulteriori informazioni sulla sicurezza, vedete l'argomento sulla sicurezza nel Centro per sviluppatori di Flash Player .
Altre informazioni
Elementi API correlati
SoundLoaderContext | () | Funzione di costruzione |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Crea un nuovo oggetto SoundLoaderContext.
ParametribufferTime:Number (default = 1000 ) — Il numero di secondi per precaricare l'audio in streaming in un buffer prima dell'avvio dello streaming.
| |
checkPolicyFile:Boolean (default = false ) — Specifica se è necessario verificare l'esistenza di un file di criteri URL al caricamento dell'oggetto (true ) o meno.
|
Esempio ( Come utilizzare questo esempio )
Il primo parametro dell'oggetto Soundloadercontext (context
) viene utilizzato per aumentare il valore predefinito del buffer da uno a tre secondi. (Il valore è espresso in millisecondi.) Se il secondo parametro dell'oggetto SoundLoaderContext è impostato su true
, Flash Player controllerà se esiste un file di criteri validi tra più domini al caricamento dell'oggetto. In questo caso tale parametro è impostato su false
, per cui non verrà fatto nessun controllo riguardante il file di criteri validi. Il metodo load()
relativo all'oggetto audio, grazie all'impostazione di contesto, impiegherà tre secondi per precaricare l'audio in streaming in un buffer prima dell'avvio dello streaming stesso. L'oggetto URLRequest
determina la posizione del file, che sarà un podcast Adobe. Se si verifica un errore IOErrorEvent.IO_ERROR
nel corso del caricamento del file audio, verrà richiamato il metodo errorHandler()
.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 02:44 PM Z