Accesso a file multimediali caricati come datiFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive Per accedere ai dati caricati utilizzate i metodi BitmapData.draw() e SoundMixer.computeSpectrum(). Per impostazione predefinita, non potete ottenere dati pixel o audio da oggetti grafici o audio di cui è stato eseguito il rendering o che sono stati riprodotti da file multimediali di un'altra sandbox. Tuttavia, potete utilizzare i metodi seguenti per concedere l'accesso a tali dati tramite i limiti sandbox:
Nelle sezioni seguenti sono contenute maggiori informazioni sull'accesso a dati bitmap, audio e video. Accesso ai dati bitmapIl metodo draw() di un oggetto BitmapData consente di disegnare i pixel visualizzati di un qualsiasi oggetto di visualizzazione sull'oggetto BitmapData. Sono inclusi i pixel di oggetti MovieClip, Bitmap e di qualsiasi oggetto di visualizzazione. Perché il metodo draw() sia in grado di disegnare pixel sull'oggetto BitmapData, è necessario che vengano soddisfatte le seguenti condizioni:
Se queste condizioni non vengono soddisfatte, viene generata un'eccezione SecurityError. Quando caricate l'immagine mediante il metodo load() della classe Loader, potete specificare un parametro context, che è un oggetto LoaderContext. Se impostate la proprietà checkPolicyFile dell'oggetto LoaderContext su true, Flash Player verifica la presenza di un file di criteri degli URL sul server da cui viene caricata l'immagine. Se esiste un file di criteri degli URL che consente l'accesso al dominio del file SWF da caricare, il file può accedere ai dati dell'oggetto Bitmap; in caso contrario, non vi può accedere. Potete anche specificare una proprietà checkPolicyFile in un'immagine caricata mediante il tag<img> inserito in un campo di testo. Per ulteriori informazioni, vedete Caricamento di file SWF e di immagini mediante il tag <img> in un campo di testo. Accesso a dati audioLe seguenti API relative all'audio di ActionScript 3.0 presentano le seguenti limitazioni di sicurezza:
Ogni file audio presenta due tipi di sandbox associate, una per il contenuto e una per il titolare:
Quando caricate l'audio mediante il metodo load() della classe Sound, potete specificare un parametro context, che è un oggetto SoundLoaderContext. Se impostate la proprietà checkPolicyFile dell'oggetto SoundLoaderContext su true, il runtime verifica la presenza di un file di criteri degli URL sul server da cui viene caricato l'audio. Se esiste un file di criteri degli URL che consente l'accesso al dominio del codice che carica, il codice può accedere alla proprietà id dell'oggetto Sound; in caso contrario, non vi può accedere. Inoltre, l'impostazione della proprietà checkPolicyFile può attivare il metodo SoundMixer.computeSpectrum() per i file audio caricati. Potete utilizzare il metodo SoundMixer.areSoundsInaccessible() per sapere se una chiamata al metodo SoundMixer.stopAll() non consente l'interruzione della riproduzione audio perché la sandbox di uno o più titolari non è accessibile al chiamante. Mediante la chiamata al metodo SoundMixer.stopAll() viene interrotta la riproduzione dei file audio la cui sandbox del titolare corrisponde a quella del chiamate di stopAll(). Tale metodo consente inoltre di interrompere la riproduzione audio avviata da file SWF che hanno chiamato il metodo Security.allowDomain() per consentire l'accesso da parte del dominio del file SWF che chiama il metodo stopAll(). Tutte le altre riproduzioni audio non vengono interrotte e la presenza di tali file audio può essere rilevata chiamando il metodo SoundMixer.areSoundsInaccessible(). Se si chiama il metodo computeSpectrum(), tutti i file audio in riproduzione devono appartenere alla stessa sandbox dell'oggetto che chiama il metodo oppure provenire da un'origine che ha acquisito l'autorizzazione di accesso alla sandbox del chiamante; in caso contrario, viene generata un'eccezione SecurityError. Per file audio caricati da audio incorporati in una libreria di un file SWF, l'autorizzazione viene concessa mediante chiamata al metodo Security.allowDomain() nel file SWF caricato. Per file audio caricati da fonti diverse dai file SWF (originati da file mp3 caricati o da file video), è necessario un file di criteri degli URL che conceda l'autorizzazione di accesso ai dati del file multimediale caricato. Per ulteriori informazioni, vedete Controlli autore (sviluppatore) e Controlli del sito Web (file di criteri). Per accedere ai dati audio da flussi RTMP, dovete concedere l'accesso al server. Utilizzate la proprietà Client.audioSampleAccess ActionScript lato server per consentire l'accesso a directory specifiche su Flash Media Server. Per ulteriori informazioni, vedete la Guida di riferimento di ActionScript lato server. Accesso a dati videoÈ possibile utilizzare il metodo BitmapData.draw() per catturare i dati pixel del fotogramma corrente di un video. Esistono due diversi tipi di video:
Per utilizzare il metodo BitmapData.draw() per estrarre grafica in fase di runtime da flussi RTMP, dovete consentire l'accesso sul server. Utilizzate la proprietà Client.videoSampleAccess ActionScript lato server per consentire l'accesso a directory specifiche su Flash Media Server. Per ulteriori informazioni, vedete la Guida di riferimento di ActionScript lato server. Quando chiamate il metodo BitmapData.draw() con video progressivi come il parametro source, il chiamante di BitmapData.draw() deve appartenere alla stessa sandbox del file FLV oppure il server del file FLV deve contenere un file di criteri che conceda l'autorizzazione di accesso al dominio del file SWF chiamante. Potete richiedere che il file dei criteri venga scaricato impostando la proprietà checkPolicyFile dell'oggetto NetStream su true. |
|