Zugriff auf geladene Medien als DatenFlash Player 9 und höher, Adobe AIR 1.0 und höher Zum Zugriff auf geladene Daten verwenden Sie die Methoden BitmapData.draw() und SoundMixer.computeSpectrum(). Standardmäßig ist es nicht möglich, Pixeldaten oder Audiodaten von Grafik- oder Audioobjekten abzurufen, die von Medien, die in einer anderen Sandbox geladen sind, dargestellt oder abgespielt werden. Sie können jedoch folgende Methoden verwenden, um den sandboxübergreifenden Zugriff auf solche Daten zu gewähren:
In den folgenden Abschnitten finden Sie ausführliche Informationen über den Zugriff auf Bitmap-, Sound- und Videodaten. Zugriff auf Bitmap-DatenMit der Methode draw() eines BitmapData-Objekts können Sie die aktuell angezeigten Pixel eines Anzeigeobjekts in ein BitmapData-Objekt zeichnen. Dabei kann es sich um die Pixel eines MovieClip-Objekts, eines Bitmap-Objekts oder eines Anzeigeobjekts handeln. Die folgenden Bedingungen müssen zutreffen, damit die draw()-Methode Pixel in das BitmapData-Objekt schreibt:
Wenn diese Bedingungen nicht erfüllt werden, wird eine SecurityError-Ausnahme ausgelöst. Wenn Sie das Bild mit der load()-Methode der Loader-Klasse laden, können Sie einen context-Parameter angeben, bei dem es sich um ein LoaderContext-Objekt handelt. Wenn Sie die checkPolicyFile-Eigenschaft des LoaderContext-Objekts auf true festlegen, wird in Flash Player auf dem Server, von dem das Bild geladen wird, eine URL-Richtliniendatei gesucht. Wenn eine Richtliniendatei vorhanden und die Domäne der ladenden SWF-Datei darin enthalten ist, kann die Datei auf die Daten im Bitmap-Objekt zugreifen. Andernfalls wird der Zugriff verweigert. Sie können auch eine checkPolicyFile-Eigenschaft in einem Bild angeben, das über ein <img>-Tag in einem Textfeld geladen wird. Weitere Informationen finden Sie unter Laden von SWF-Dateien und Bildern mit dem <img>-Tag in einem Textfeld. Zugriff auf SounddatenFür die folgenden soundbezogenen ActionScript 3.0-APIs gelten Sicherheitseinschränkungen:
Jedem Sound sind zwei Arten von Sandboxen zugeordnet: eine Inhalt-Sandbox und eine Eigentümer-Sandbox.
Wenn Sie den Sound mit der load()-Methode der Sound-Klasse laden, können Sie einen context-Parameter angeben, bei dem es sich um ein SoundLoaderContext-Objekt handelt. Wenn Sie die checkPolicyFile-Eigenschaft des SoundLoaderContext-Objekts auf true setzen, sucht die Laufzeit auf dem Server, von dem der Sound geladen wird, eine URL-Richtliniendatei. Wenn eine Richtliniendatei vorhanden und die Domäne des ladenden Codes darin enthalten ist, kann der Code auf die id-Eigenschaft des Sound-Objekts zugreifen. Andernfalls wird der Zugriff verweigert. Darüber hinaus kann auch das Festlegen der checkPolicyFile-Eigenschaft die SoundMixer.computeSpectrum()-Methode für geladene Sounds aktivieren. Mit der Methode SoundMixer.areSoundsInaccessible() können Sie ermitteln, ob ein Aufruf der SoundMixer.stopAll()-Methode alle Sounds stoppen würde, da die Sandbox eines oder mehrerer Sound-Eigentümer für das aufrufende Objekt nicht zugänglich ist. Das Aufrufen der SoundMixer.stopAll()-Methode stoppt Sounds, deren Eigentümer-Sandbox die Gleiche wie die des aufrufenden Objekts von stopAll() ist. Sie stoppt auch die Sounds, deren Wiedergabe von SWF-Dateien gestartet wurde, welche die Security.allowDomain()-Methode aufgerufen haben, um Zugriff für die Domäne der SWF-Datei zu gewähren, welche die stopAll()-Methode aufruft. Alle anderen Sounds werden nicht gestoppt. Das Vorhandensein dieser Sounds kann durch Aufrufen der SoundMixer.areSoundsInaccessible()-Methode ermittelt werden. Das Aufrufen der computeSpectrum()-Methode erfordert, dass jeder wiedergegebene Sound entweder aus der gleichen Sandbox wie das Objekt stammt, das die Methode aufgerufen hat, oder von einer Quelle, der ein Zugriffsrecht für die Sandbox des aufrufenden Objekts erteilt wurde. Andernfalls wird eine SecurityError-Ausnahme ausgelöst. Bei Sounds, die aus den eingebetteten Sounds einer Bibliothek in einer SWF-Datei geladen werden, wird das Zugriffsrecht mit dem Aufruf der Security.allowDomain()-Methode in der geladenen SWF-Datei erteilt. Bei Sounds, die aus anderen Quellen als SWF-Dateien geladen werden (aus geladenen MP3-Dateien oder aus Videodateien), erteilt eine URL-Richtliniendatei auf dem Quellserver Zugriffsberechtigungen auf die Daten in den geladenen Medien. Weitere Informationen finden Sie unter Kontrolloptionen für Autoren (Entwickler) und Kontrolloptionen für Websites (Richtliniendateien). Zum Zugriff auf Sounddaten von RTMP-Streams müssen Sie den Zugriff auf dem Server gewähren. Verwenden Sie die serverseitige ActionScript-Eigenschaft Client.audioSampleAccess, um den Zugriff auf bestimmte Verzeichnisse auf dem Flash Media Server zu gewähren. Weitere Informationen finden Sie im Handbuch Server-Side ActionScript Language Reference. Zugriff auf VideodatenMit der BitmapData.draw()-Methode können Sie Pixeldaten des aktuellen Bilds eines Videos erfassen. Es gibt zwei verschiedene Arten von Video:
Damit die BitmapData.draw()-Methode zum Extrahieren von Laufzeitgrafiken aus RTMP-Streams verwendet werden kann, müssen Sie den Zugriff auf dem Server gewähren. Verwenden Sie die serverseitige ActionScript-Eigenschaft Client.videoSampleAccess, um den Zugriff auf bestimmte Verzeichnisse auf dem Flash Media Server zu gewähren. Weitere Informationen finden Sie im Handbuch Server-Side ActionScript Language Reference. Wenn Sie die BitmapData.draw()-Methode mit progressivem Video als source-Parameter aufrufen, muss sich das Objekt, das die Methode BitmapData.draw() aufruft, entweder in der gleichen Sandbox wie die FLV-Datei befinden, oder auf dem Server der FLV-Datei ist eine Richtliniendatei gespeichert, in der Zugriffsrechte für die Domäne der aufrufenden SWF-Datei erteilt werden. Durch Festlegen der checkPolicyFile-Eigenschaft des NetStream-Objekts auf true können Sie das Herunterladen der Richtliniendatei anfordern. |
|