Zugriff auf geladene Medien als Daten
Flash Player 9 und höher, Adobe AIR 1.0 und höher
Zum Zugriff auf geladene Daten verwenden Sie die Methoden
BitmapData.draw()
,
BitmapData.drawWithQuality()
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:
-
Rufen Sie in dem Inhalt, in dem die gewünschten Daten dargestellt oder abgespielt werden, die
Security.allowDomain()
-Methode auf, um den Datenzugriff auf Inhalt in anderen Domänen zu gewähren.
-
Bei einem geladenen Bild, Sound oder Video fügen Sie dem Server der geladenen Datei eine URL-Richtliniendatei hinzu. Diese Richtliniendatei muss Zugriff auf die Domäne der SWF-Datei gewähren, die versucht, die Methoden
BitmapData.draw()
,
BitmapData.drawWithQuality()
oder
SoundMixer.computeSpectrum()
aufzurufen, um Daten aus der Datei zu extrahieren. Die
drawWithQuality
-Methode ist in Flash Player 11.3 und höher sowie AIR 3.3 und höher verfügbar.
In den folgenden Abschnitten finden Sie ausführliche Informationen über den Zugriff auf Bitmap-, Sound- und Videodaten.
Zugriff auf Bitmap-Daten
Mit der Methode
draw()
oder
drawWithQuality()
(Flash Player 11.3; AIR 3.3) eines BitmapData-Objekts können Sie die aktuell angezeigten Pixel eines beliebigen 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 diese Methoden Pixel in das BitmapData-Objekt schreiben:
-
Handelt es sich bei dem Quellobjekt nicht um eine geladene Bitmap, müssen das Quellobjekt und (bei einem Sprite- oder MovieClip-Objekt) alle untergeordneten Objekte aus der gleichen Domäne wie das Objekt stammen, das die draw-Methode aufruft, oder sie müssen sich in einer SWF-Datei befinden, die dem aufrufenden Objekt durch Aufrufen der Methode
Security.allowDomain()
zugänglich ist.
-
Handelt es sich bei dem Quellobjekt um eine geladene Bitmap, muss das Quellobjekt aus der gleichen Domäne wie das Objekt stammen, das die draw-Methode aufruft, oder der Quellserver muss eine URL-Richtliniendatei enthalten, die der aufrufenden Domäne Zugriffsrechte erteilt.
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 Sounddaten
Für die folgenden soundbezogenen ActionScript 3.0-APIs gelten Sicherheitseinschränkungen:
-
SoundMixer.computeSpectrum()
-Methode – Für Code, der in der gleichen Sicherheits-Sandbox wie die Sounddatei ausgeführt wird, immer zulässig. Bei Code, der in anderen Sandboxen ausgeführt wird, werden Sicherheitsprüfungen durchgeführt.
-
SoundMixer.stopAll()
-Methode – Für Code, der in der gleichen Sicherheits-Sandbox wie die Sounddatei ausgeführt wird, immer zulässig. Bei Dateien in anderen Sandboxen werden Sicherheitsprüfungen durchgeführt.
-
id3
-Eigenschaft der Sound-Klasse – Für SWF-Dateien, die sich in der gleichen Sicherheits-Sandbox wie die Sounddatei befinden, immer zulässig. Bei Code, der in anderen Sandboxen ausgeführt wird, werden Sicherheitsprüfungen durchgeführt.
Jedem Sound sind zwei Arten von Sandboxen zugeordnet: eine Inhalt-Sandbox und eine Eigentümer-Sandbox.
-
Die Ursprungsdomäne des Sounds legt die Inhalt-Sandbox fest und diese bestimmt, ob Daten aus dem Sound über die
id3
-Eigenschaft des Sounds und die
SoundMixer.computeSpectrum()
-Methode extrahiert werden.
-
Das Objekt, das die Wiedergabe des Sounds gestartet hat, legt die Eigentümer-Sandbox fest und diese bestimmt, ob der Sound mit der
SoundMixer.stopAll()
-Methode gestoppt werden kann.
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 Videodaten
Mit der
BitmapData.draw()
- oder
BitmapData.drawWithQuality()
-Methode können Sie Pixeldaten des aktuellen Bilds eines Videos erfassen. (Die
drawWithQuality
-Methode ist in Flash Player 11.3 und höher sowie AIR 3.3 und höher verfügbar.)
Es gibt zwei verschiedene Arten von Video:
-
Über RTMP von Flash Media Server gestreamtes Video
-
Progressives Video, das aus einer FLV- oder F4V-Datei geladen wird
Damit die draw-Methoden zum Extrahieren von Laufzeitgrafiken aus RTMP-Streams verwendet werden können, 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 eine draw-Methode mit progressivem Video als
source
-Parameter aufrufen, muss sich das Objekt, das die Methode 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.
|
|
|
|
|