Adobe Flex 3 ヘルプ

ロードされたメディアへのデータとしてのアクセス

ロードされたデータにアクセスするには、BitmapData.draw()SoundMixer.computeSpectrum() などのメソッドを使用します。デフォルトでは、あるセキュリティサンドボックスの SWF ファイルでは、別のサンドボックス内にあるロードされたメディアによってレンダリングまたは再生されるグラフィックオブジェクトまたはオーディオオブジェクトからピクセルデータやオーディオデータを取得できません。しかし、次のメソッドを使用してこのアクセス許可を付与することができます。

  • ロードされた SWF ファイルで Security.allowDomain() メソッドを呼び出して、別のドメインにある SWF ファイルへのデータアクセスを許可します。
  • ロードされたイメージ、サウンド、またはビデオの場合は、ロードされたファイルのサーバー上でクロスドメインポリシーファイルを追加します。このポリシーファイルでは、BitmapData.draw() メソッドまたは SoundMixer.computeSpectrum() メソッドを呼び出してファイルからデータを抽出しようとする SWF ファイルのドメインにアクセスを許可する必要があります。

次のセクションでは、ビットマップ、サウンド、およびビデオのデータにアクセスする方法を詳しく説明します。

サブトピック



ビットマップデータへのアクセス

BitmapData オブジェクトの draw() メソッドを使用すると、任意の表示オブジェクトの現在表示されているピクセルを BitmapData オブジェクトに描画できます。描画できるピクセルには、MovieClip オブジェクト、Bitmap オブジェクト、または任意の表示オブジェクトのピクセルがあります。draw() メソッドで BitmapData オブジェクトへピクセルを描画するには、次の各条件を満たす必要があります。

  • ロードされたビットマップ以外のソースオブジェクトの場合、そのソースオブジェクトおよび(Sprite または MovieClip オブジェクトの場合には)そのすべての子オブジェクトは、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 ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックがあります。
  • Sound クラスの 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 ビデオからのサウンド)の場合、ソースサーバー上のクロスドメインポリシーファイルが、ロードされたメディア内のデータへのアクセスを許可します。サウンドが RTMP ストリームからロードされた場合は、computeSpectrum() メソッドを使用できません。

詳細については、作成者(開発者)の管理およびWeb サイトの管理(クロスドメインポリシーファイル)を参照してください。

ビデオデータへのアクセス

ビデオの現在のフレームのピクセルデータをキャプチャするには、BitmapData.draw() メソッドを使用します。

ビデオには、次の 2 種類があります。

  • RTMP ビデオ
  • プログレッシブビデオ(RTMP サーバーなしに FLV ファイルからロードされる)

BitmapData.draw() メソッドを使用して RTMP ビデオにアクセスすることはできません。

プログレッシブビデオを source パラメータとして BitmapData.draw() メソッドを呼び出す場合は、BitmapData.draw() の呼び出し側が FLV ファイルと同じサンドボックスに属しているか、FLV ファイルのサーバーが、呼び出しを行う SWF ファイルのドメインに許可を与えるポリシーファイルを持っている必要があります。NetStream オブジェクトの checkPolicyFile プロパティを true に設定することにより、ポリシーファイルのダウンロードを要求できます。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート