次のサウンド関連の ActionScript 3.0 API にはセキュリティ制限があります。
-
SoundMixer.computeSpectrum()
メソッド - サウンドファイルと同じセキュリティサンドボックス内で実行中のコードで常に使用できます。他のサンドボックス内で実行中のコードには、セキュリティチェックが行われます。
-
SoundMixer.stopAll()
メソッド - サウンドファイルと同じセキュリティサンドボックス内で実行中のコードで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックが行われます。
-
Sound クラスの
id3
プロパティ - サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内で実行中のコードには、セキュリティチェックが行われます。
それぞれのサウンドに、コンテンツサンドボックスとオーナーサンドボックスの 2 種類のサンドボックスが関連付けられています。
-
サウンドの元のドメインはコンテンツサンドボックスを決定し、コンテンツサンドボックスは、サウンドの
id3
プロパティと
SoundMixer.computeSpectrum()
メソッドによってサウンドからデータを抽出できるかどうかを決定します。
-
サウンドの再生を開始したオブジェクトは、所有者サンドボックスを決定し、所有者サンドボックスは、
SoundMixer.stopAll()
メソッドを使用してサウンドを停止できるかどうかを決定します。
サウンドをロードするとき、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 言語リファレンス
』を参照してください。