Caricamento di contenutoFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive Il contenuto Flash Player e AIR può caricare molti altri tipi di contenuto, compresi i seguenti:
Caricamento di file SWF e immagini con la classe LoaderUtilizzate la classe Loader per caricare file SWF e immagini (file JPG, GIF o PNG). Tutti i file SWF, eccetto quelli che si trovano nella sandbox locale con file system, possono caricare file SWF e di immagine di qualsiasi dominio di rete. Solo i file SWF contenuti nelle sandbox locali possono caricare file SWF e di immagine del file system locale. Tuttavia, i file nella sandbox locale con rete possono caricare unicamente file SWF locali che si trovano nella sandbox locale affidabile o locale con rete. I file SWF nella sandbox locale con rete possono caricare contenuto locale diverso da file SWF (quali immagini), tuttavia, essi non possono accedere ai dati del contenuto caricato. Quando si carica un file SWF da un'origine non affidabile (ad esempio un dominio diverso da quello del file SWF principale dell'oggetto Loader), può essere opportuno definire una maschera per l'oggetto Loader, in modo da impedire che il contenuto caricato (che è un elemento secondario dell'oggetto Loader) possa essere disegnato in parti dello stage al di fuori della maschera, come nel codice seguente: import flash.display.*; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr); Quando chiamate il metodo load() dell'oggetto Loader, potete specificare un parametro context, che è un oggetto LoaderContext. La classe LoaderContext include tre proprietà che consentono di definire il contesto di utilizzo del contenuto caricato:
Per informazioni dettagliate, vedete Impostazione del contesto di caricamento. Un'importante proprietà dell'oggetto Loader è la proprietà contentLoaderInfo, che è un oggetto LoaderInfo. A differenza della maggior parte degli oggetti, l'oggetto LoaderInfo viene condiviso tra il file SWF che carica e il contenuto caricato ed è sempre accessibile da entrambe le parti. Se il contenuto caricato è un file SWF, esso può accedere all'oggetto LoaderInfo mediante la proprietà DisplayObject.loaderInfo. Gli oggetti LoaderInfo includono informazioni quali stato di avanzamento del caricamento, URL di caricante e caricato, relazione di affidabilità tra caricante e caricato e altre informazioni. Per ulteriori informazioni, vedete Monitoraggio dello stato di avanzamento del caricamento. Caricamento di audio e videoTutto il contenuto, ad eccezione di quello nella sandbox locale con file system, può caricare audio e video da origini di rete mediante i metodi Sound.load(), NetConnection.connect() e NetStream.play(). Solo il contenuto nelle sandbox locali con file system e dell'applicazione AIR può caricare file multimediali dal file system locale. Solo il contenuto nella sandbox locale con file system, nella sandbox dell'applicazione AIR o nella sandbox locale attendibile può accedere ai dati in questi file caricati. Esistono altre restrizioni relative all'accesso ai dati dei file multimediali caricati. Per ulteriori informazioni, vedete Accesso a file multimediali caricati come dati Caricamento di file SWF e di immagini mediante il tag <img> in un campo di testoÈ possibile caricare file SWF e bitmap in campi di testo mediante il tag <img>, come illustrato dal codice seguente: <img src = 'filename.jpg' id = 'instanceName' > Per accedere al contenuto caricato in questo modo, utilizzate il metodo getImageReference() dell'istanza TextField, come nel codice seguente: var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');
Notate, tuttavia, che i file SWF e le immagini caricate in questo modo vengono inseriti nella sandbox corrispondente alla rispettiva origine. Quando caricate un file immagine utilizzando un tag <img> in un campo di testo, l'accesso ai dati di tale file può essere autorizzato da un file di criteri degli URL. Per verificare la presenza di un file di criteri, aggiungete l'attributo checkPolicyFile al tag <img>, come nel codice seguente: <img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' > Quando caricate un file SWF mediante un tag <img> in un campo di testo, potete consentire l'accesso ai dati di tale file SWF chiamando il metodo Security.allowDomain(). Quando utilizzate un tag <img> in un campo di testo per caricare un file esterno (anziché utilizzare una classe Bitmap incorporata al file SWF), viene automaticamente creato un oggetto Loader come elemento secondario dell'oggetto TextField e il file esterno viene caricato nel Loader come se fosse stato caricato in ActionScript mediante l'oggetto Loader. In questo caso, il metodo getImageReference() restituisce l'oggetto Loader creato automaticamente. Non è necessaria alcuna verifica di sicurezza per accedere a questo Loader poiché si trova nella stessa sandbox di sicurezza del codice chiamante. Tuttavia, quando fate riferimento alla proprietà content dell'oggetto Loader per accedere ai contenuti multimediali caricati, le regole di sicurezza vengono applicate. Se il contenuto è un'immagine, dovete implementare un file di criteri degli URL, mentre se il contenuto è un file SWF, è necessario che il codice del file chiami il metodo allowDomain(). Adobe AIRNella sandbox dell'applicazione, i tag <img> in un campo di testo vengono ignorati per impedire attacchi di phishing. Inoltre, il codice in esecuzione nella sandbox dell'applicazione non può chiamare il metodo allowDomain() della classe Security. Contenuto distribuito mediante server RTMPFlash Media Server impiega il protocollo RTMP (Real-Time Media Protocol) per gestire dati, audio e video. Potete caricare questi file multimediali mediante il metodo connect() della classe NetConnection, passando un URL RTMP come parametro. Flash Media Server è in grado di limitare le connessioni e impedire lo scaricamento di contenuto, in base al dominio del file richiedente. Per informazioni dettagliate, vedete la documentazione Flash Media Server in linea all'indirizzo www.adobe.com/go/learn_fms_docs_it. Per utilizzare i metodi BitmapData.draw() e SoundMixer.computeSpectrum() per estrarre dati audio e di immagine in fase di runtime da flussi RTMP, dovete consentire l'accesso sul server. Utilizzate le proprietà Client.videoSampleAccess e 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. |
|