Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > Flash Player セキュリティ > ロードされたメディアへのデータとしてのアクセス | |||
ロードされたデータにアクセスするには、BitmapData.draw() や SoundMixer.computeSpectrum() などのメソッドを使用します。デフォルトでは、あるセキュリティサンドボックスの SWF ファイルでは、別のサンドボックス内にあるロードされたメディアによってレンダリングまたは再生されるグラフィックオブジェクトまたはオーディオオブジェクトからピクセルデータやオーディオデータを取得できません。ただし、次のメソッドを使用するとこの許可を付与できます。
Security.allowDomain() メソッドを呼び出して、別のドメインにある SWF ファイルへのデータアクセスを許可します。 BitmapData.draw() または SoundMixer.computeSpectrum() メソッドを呼び出してファイルからデータを抽出しようとする SWF ファイルのドメインにアクセスを許可する必要があります。 次のセクションでは、ビットマップ、サウンド、およびビデオのデータにアクセスする方法を詳しく説明します。
BitmapData オブジェクトの draw() メソッドを使用すると、任意の表示オブジェクトの現在表示されているピクセルを BitmapData オブジェクトに描画できます。描画できるピクセルには、MovieClip オブジェクト、Bitmap オブジェクト、または任意の表示オブジェクトのピクセルがあります。draw() メソッドを使って BitmapData オブジェクトにピクセルを描画するには、次の条件を満たす必要があります。
draw() メソッドを呼び出すオブジェクトと同じドメインに属しているか、Security.allowDomain() メソッドの呼び出しを済ませていて、呼び出し側からアクセスできる SWF ファイル内に存在する必要があります。 draw() メソッドを呼び出すオブジェクトと同じドメインに所属する必要があります。あるいはそのソースサーバーは、呼び出し側ドメインに権限を付与するクロスドメインポリシーファイルをインクルードしている必要があります。 これらの条件が満たされない場合は、SecurityError 例外が発生します。
イメージをロードするとき、Loader クラスの load() メソッドを使用すると、LoaderContext オブジェクトである context パラメータを指定できます。LoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、Flash Player は、ロードされるイメージが入っているサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルが存在し、そのファイルがロードを行おうとしている SWF ファイルのドメインを許可している場合、その SWF ファイルは Bitmap オブジェクト内のデータにアクセスできます。それ以外の場合は、アクセスできません。
テキストフィールド内の <img> タグによってロードされるイメージの中で、checkPolicyFile プロパティを指定することもできます。詳細については、テキストフィールドに <img> タグを使用した SWF ファイルとイメージのロードを参照してください。
次のサウンド関連の ActionScript 3.0 API にはセキュリティ制限があります。
SoundMixer.computeSpectrum() メソッド - サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックが行われます。SoundMixer.stopAll() メソッド - サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックが行われます。id3 プロパティ - サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックが行われます。それぞれのサウンドに、コンテンツサンドボックスとオーナーサンドボックスの 2 種類のサンドボックスが関連付けられています。
id3 プロパティと SoundMixer.computeSpectrum() メソッドによってサウンドからデータを抽出できるかどうかを決定します。SoundMixer.stopAll() メソッドを使用してサウンドを停止できるかどうかを決定します。 サウンドをロードするとき、Sound クラスの load() メソッドを使用すると、SoundLoaderContext オブジェクトである context パラメータを指定できます。SoundLoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、Flash Player は、サウンドがロードされるサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルがあり、そのファイルでロードする側の SWF ファイルのドメインが許可されている場合、SWF ファイルは Sound オブジェクトの id プロパティにアクセスできます。それ以外の場合はアクセスできません。また、checkPolicyFile プロパティの設定により、ロードされたサウンドに SoundMixer.computeSpectrum() メソッドを有効にできます。
SoundMixer.areSoundsInaccessible() メソッドを使用すると、SoundMixer.stopAll() メソッドの呼び出しが、呼び出し側からサウンド所有者のサンドボックスにアクセスできないためにすべてのサウンドを停止できないかどうかを知ることができます。
SoundMixer.stopAll() メソッドを呼び出すと、所有者サンドボックスが stopAll() の呼び出し側のそれと同じものであるサウンドが停止します。また、Security.allowDomain() メソッド (これによって stopAll() メソッドを呼び出す SWF ファイルのドメインによるアクセスを許可する) を呼び出した SWF ファイルによって再生が開始されたサウンドも停止します。それ以外のサウンドは停止せず、そのようなサウンドの存在は、SoundMixer.areSoundsInaccessible() メソッドを呼び出すことによって知ることができます。
computeSpectrum() メソッドを呼び出すには、再生中のすべてのサウンドが、このメソッドを呼び出すオブジェクトと同じサンドボックスに属するか、呼び出し側のサンドボックスに許可を与えたソースに属する必要があります。それ以外の場合は、SecurityError 例外が発生します。SWF ファイル内でライブラリの埋め込みサウンドからロードされたサウンドの場合、ロードされた SWF ファイルの Security.allowDomain() メソッドへの呼び出しを使用して許可を付与します。SWF ファイル以外のソースからロードされたサウンド (ロードされた MP3 ファイルまたは Flash Video からのサウンド) の場合、ソースサーバー上のクロスドメインポリシーファイルが、ロードされたメディア内のデータへのアクセスを許可します。サウンドが RTMP ストリームからロードされた場合は、computeSpectrum() メソッドを使用できません。
詳細については、作成者 (開発者) コントロールおよびWeb サイトの管理 (クロスドメインポリシーファイル)を参照してください。
ビデオの現在のフレームのピクセルデータをキャプチャするには、BitmapData.draw() メソッドを使用します。
ビデオには、次の 2 種類があります。
BitmapData.draw() メソッドを使用して RTMP ビデオにアクセスすることはできません。
プログレッシブビデオを source パラメータとして BitmapData.draw() メソッドを呼び出す場合は、BitmapData.draw() の呼び出し側が FLV ファイルと同じサンドボックスに属しているか、FLV ファイルのサーバーが、呼び出しを行う SWF ファイルのドメインに許可を与えるポリシーファイルを持っている必要があります。NetStream オブジェクトの checkPolicyFile プロパティを true に設定する方法で、ポリシーファイルがダウンロードされるように要求できます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000355.html