ロードされたメディアへのデータとしてのアクセスFlash Player 9 以降、Adobe AIR 1.0 以降 ロードされたデータにアクセスするには、BitmapData.draw() メソッドおよび SoundMixer.computeSpectrum() メソッドを使用します。デフォルトでは、別のサンドボックス内にロードされたメディアによってレンダリングまたは再生されるグラフィックオブジェクトまたはオーディオオブジェクトから、ピクセルデータまたはオーディオデータを取得できません。ただし、次のメソッドを使用すれば、このようなサンドボックス境界をまたがるデータへのアクセス許可を付与できます。
次の節では、ビットマップ、サウンド、およびビデオのデータにアクセスする方法を詳しく説明します。 ビットマップデータへのアクセスBitmapData オブジェクトの draw() メソッドを使用すると、任意の表示オブジェクトの現在表示されているピクセルを BitmapData オブジェクトに描画できます。描画できるピクセルには、MovieClip オブジェクト、Bitmap オブジェクト、または任意の表示オブジェクトのピクセルがあります。 draw() メソッドを使用して BitmapData オブジェクトにピクセルを描画するには、次の条件を満たす必要があります。
これらの条件が満たされない場合は、SecurityError 例外が発生します。 イメージをロードするとき、Loader クラスの load() メソッドを使用すると、LoaderContext オブジェクトである context パラメーターを指定できます。LoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、Flash Player は、イメージがロードされるサーバー上に URL ポリシーファイルがあるかどうかをチェックします。ポリシーファイルが存在し、そのファイルがロードを行おうとしている SWF ファイルのドメインを許可している場合、その SWF ファイルは Bitmap オブジェクト内のデータにアクセスできます。それ以外の場合は、アクセスできません。 テキストフィールド内の <img> タグによってロードされるイメージで checkPolicyFile プロパティを指定することもできます。詳しくは、テキストフィールドに <img > タグを使用した SWF ファイルとイメージのロードを参照してください。 サウンドデータへのアクセス次のサウンド関連の ActionScript 3.0 API にはセキュリティ制限があります。
それぞれのサウンドに、コンテンツサンドボックスとオーナーサンドボックスの 2 種類のサンドボックスが関連付けられています。
サウンドをロードするとき、Sound クラスの load() メソッドを使用すると、SoundLoaderContext オブジェクトである context パラメーターを指定できます。SoundLoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、ランタイムは、サウンドがロードされるサーバー上に URL ポリシーファイルがあるかどうかをチェックします。ポリシーファイルがあり、ロードする側のコードのドメインがそのファイルで許可されている場合、そのコードは Sound オブジェクトの id プロパティにアクセスできます。それ以外の場合はアクセスできません。また、checkPolicyFile プロパティの設定により、ロードされたサウンドの SoundMixer.computeSpectrum() メソッドを有効にできます。 SoundMixer.areSoundsInaccessible() メソッドを使用すると、呼び出し側からサウンド所有者のサンドボックスにアクセスできないので、SoundMixer.stopAll() メソッドの呼び出しがすべてのサウンドを停止できるかどうかを知ることができます。 SoundMixer.stopAll() メソッドを呼び出すと、所有者サンドボックスが stopAll() の呼び出し側と同じものであるサウンドが停止します。また、stopAll() メソッドを呼び出す SWF ファイルのドメインによるアクセスを許可するために Security.allowDomain() メソッドを呼び出した SWF ファイルによって再生が開始されたサウンドも停止します。それ以外のサウンドは停止しません。そのようなサウンドの存在は、SoundMixer.areSoundsInaccessible() メソッドを呼び出すことによって確認できます。 computeSpectrum() メソッドを呼び出すには、再生中のすべてのサウンドが、このメソッドを呼び出すオブジェクトと同じサンドボックスに属するか、呼び出し側のサンドボックスに許可を付与したソースに属する必要があります。それ以外の場合は、SecurityError 例外が発生します。SWF ファイル内でライブラリの埋め込みサウンドからロードされたサウンドの場合、ロードされた SWF ファイルの Security.allowDomain() メソッドへの呼び出しを使用して許可を付与します。SWF ファイル以外のソースからロードされたサウンド(ロードされた MP3 ファイルまたはビデオファイルからのサウンド)の場合、ソースサーバー上の URL ポリシーファイルが、ロードされたメディア内のデータへのアクセスを許可します。 詳しくは、作成者(開発者)コントロールおよびWeb サイトのコントロール(ポリシーファイル)を参照してください。 RTMP ストリームのサウンドデータにアクセスするには、サーバーでアクセスを許可する必要があります。Flash Media Server にある特定のディレクトリへのアクセスを許可するには、サーバーサイド ActionScript のClient.audioSampleAccess プロパティを使用します。詳しくは、『サーバーサイド ActionScript 言語リファレンス』を参照してください。 ビデオデータへのアクセスビデオの現在のフレームのピクセルデータをキャプチャするには、BitmapData.draw() メソッドを使用します。 ビデオには、次の 2 種類があります。
BitmapData.draw() メソッドを使用して RTMP ストリームからランタイムグラフィックを抽出するには、サーバーでアクセスを許可する必要があります。Flash Media Server にある特定のディレクトリへのアクセスを許可するには、サーバーサイド ActionScript の Client.videoSampleAccess プロパティを使用します。詳しくは、『サーバーサイド ActionScript 言語リファレンス』を参照してください。 プログレッシブビデオを source パラメーターとして BitmapData.draw() メソッドを呼び出す場合は、BitmapData.draw() の呼び出し側が FLV ファイルと同じサンドボックスに属しているか、FLV ファイルのサーバーに、呼び出しを行う SWF ファイルのドメインに許可を付与するポリシーファイルがある必要があります。NetStream オブジェクトの checkPolicyFile プロパティを trueに設定して、ポリシーファイルがダウンロードされるように要求できます。 |
|