Documentazione di Flash CS3 |
|||
| Programmazione in ActionScript 3.0 > Sicurezza di Flash Player > Accesso a file multimediali caricati come dati | |||
Per accedere ai dati caricati è possibile utilizzare metodi quali BitmapData.draw() e SoundMixer.computeSpectrum(). Per impostazione predefinita, un file SWF appartenente a una data funzione di sicurezza sandbox non può 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, per ottenere tale autorizzazione è possibile utilizzare i seguenti metodi:
Security.allowDomain() per consentire l'accesso ai dati da parte di file SWF di altri domini. BitmapData.draw() o SoundMixer.computeSpectrum() per estrarre dati dal file. Nelle sezioni seguenti sono contenute maggiori informazioni sull'accesso a dati bitmap, audio e video.
Il 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:
draw() o devono trovarsi in un file SWF accessibile al chiamante del metodo Security.allowDomain(). draw() oppure il suo server di origine deve contenere un file di criteri dei domini che conceda l'autorizzazione al dominio del chiamante. Se queste condizioni non vengono soddisfatte, viene generata un'eccezione SecurityError.
Quando si carica l'immagine mediante il metodo load() della classe Loader, è possibile specificare un parametro context, che è un oggetto LoaderContext. Se la proprietà checkPolicyFile dell'oggetto LoaderContext viene impostata su true, Flash Player verifica la presenza di un file di criteri validi per domini diversi sul server da cui viene caricata l'immagine. Se esiste un file di criteri dei domini 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.
È inoltre possibile specificare una proprietà checkPolicyFile in un'immagine caricata mediante il tag<img> inserito in un campo di testo. Per informazioni dettagliate, vedere Caricamento di file SWF e di immagini mediante il tag <img> in un campo di testo.
Le seguenti API relative all'audio di ActionScript 3.0 presentano le seguenti limitazioni di sicurezza:
SoundMixer.computeSpectrum() è sempre consentito 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. SoundMixer.stopAll() è sempre consentito 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.id3 della classe 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.Ogni file audio presenta due tipi di sandbox associate, una per il contenuto e una per il titolare:
id3 e il metodo SoundMixer.computeSpectrum().SoundMixer.stopAll(). Quando si carica l'audio mediante il metodo load() della classe Sound, è possibile specificare un parametro context, che è 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 dei domini che consente l'accesso al dominio del file SWF da caricare, il file 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.
È possibile 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 al 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 (derivanti da file mp3 caricati o da video Flash), è necessario un file di criteri dei domini che conceda l'autorizzazione di accesso ai dati del file multimediale caricato. Non è possibile utilizzare il metodo computeSpectrum() se un file audio viene caricato da streaming RTMP.
Per ulteriori informazioni, vedere Controlli creatore (sviluppatore) e Controlli del sito Web (file di criteri dei domini).
È possibile utilizzare il metodo BitmapData.draw() per catturare i dati pixel del fotogramma corrente di un video.
Esistono due diversi tipi di video:
Non è possibile utilizzare il metodo BitmapData.draw() per accedere a video RTMP.
Quando si chiama 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. È possibile richiedere che il file dei criteri venga scaricato impostando la proprietà checkPolicyFile dell'oggetto NetStream su true.
Flash CS3
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/main/00000355.html