パッケージ | flash.media |
クラス | public class SoundLoaderContext |
継承 | SoundLoaderContext Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
メソッドにパラメーターとして渡されます。
このクラスを使用するときは、次のセキュリティモデルを考慮してください。
- 呼び出し元ファイルがネットワークサンドボックスにあり、ロードするサウンドファイルがローカルにある場合、サウンドのロードおよび再生はできません。
- 呼び出し元がローカルにあり、リモートサウンドのロードおよび再生を試行する場合、デフォルトでは、サウンドのロードや再生ができません。これを行うには、ユーザーが明示的な許可を与える必要があります。
- サウンドを処理する特定の操作が制限されます。ロードされたサウンドのデータには、URL ポリシーファイルを実装していない限り、別のドメインに存在する ファイルからアクセスできないことに注意してください。この制限の対象となるサウンド関連の API は
Sound.id3
プロパティおよびSoundMixer.computeSpectrum()
メソッド、SoundMixer.bufferTime
メソッド、SoundTransform()
メソッドです。
ただし、Adobe AIR では、アプリケーション
セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
プロパティ | 定義元 | ||
---|---|---|---|
bufferTime : Number = 1000
サウンドのストリーミングを開始するまでに、バッファーにストリーミングサウンドをプリロードするミリ秒数です。 | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
サウンドのロードを開始する前に、アプリケーションが、ロードされるサウンドのサーバーからの URL ポリシーファイルのダウンロードを試行するかどうかを指定します。 | SoundLoaderContext | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object |
メソッド | 定義元 | ||
---|---|---|---|
新しいサウンドローダーコンテキストオブジェクトを作成します。 | SoundLoaderContext | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
bufferTime | プロパティ |
public var bufferTime:Number = 1000
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドのストリーミングを開始するまでに、バッファーにストリーミングサウンドをプリロードするミリ秒数です。
SoundLoaderContext.bufferTime
の値を、グローバル SoundMixer.bufferTime
プロパティを設定してオーバーライドすることはできません。SoundMixer.bufferTime
プロパティは SWF ファイルに埋め込まれたストリーミングサウンドのバッファー時間には影響しますが、動的に作成される Sound オブジェクト(ActionScript で作成される Sound オブジェクト)には影響しません。
checkPolicyFile | プロパティ |
public var checkPolicyFile:Boolean = false
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドのロードを開始する前に、アプリケーションが、ロードされるサウンドのサーバーからの URL ポリシーファイルのダウンロードを試行するかどうかを指定します。このプロパティは、呼び出し元のファイル自体のドメインの外部から Sound.load()
メソッドを使用してロードされたサウンドに適用されます。
呼び出し元のファイル自体のドメインの外部からサウンドをロードし、呼び出し元のファイルのコードがサウンドのデータに低レベルアクセスを必要とする場合は、このプロパティを true
に設定します。サウンドデータへの低レベルアクセスの例です。ID3Info オブジェクトを取得するための Sound.id3
プロパティへの参照、またはロードされたサウンドからサウンドサンプリングを取得する SoundMixer.computeSpectrum()
メソッドの呼び出しが含まれます。ロード時に checkPolicyFile
プロパティを true
に設定せずにサウンドデータにアクセスしようとした場合、必要なポリシーファイルがダウンロードされていないために SecurityError 例外を受け取る場合があります。
ロードするサウンドデータへの低レベルのアクセスを必要としない場合は、checkPolicyFile
を true
に設定しないでください。ポリシーファイルの確認はネットワーク帯域幅を消費し、ダウンロードの開始が遅れる場合があるため、必要な場合にのみ行ってください。
Sound.load()
を呼び出すときに SoundLoaderContext.checkPolicyFile
を true
に設定すると、Flash Player または AIR は、関連する URL ポリシーファイルを正常にダウンロードするか、指定されたサウンドのダウンロードを開始する前に、そのようなポリシーファイルが存在しないことを判別する必要があります。ポリシーファイルの存在を確認するため、Flash Player または AIR は次のアクションをこの順番で実行します。
- Flash Player または AIR は、既にダウンロードされているポリシーファイルを考慮します。
- Flash Player または AIR は、
Security.loadPolicyFile()
の呼び出しで指定された保留されているポリシーファイルのダウンロードを試行します。 - Flash Player または AIR は、サウンドの URL に対応するデフォルトの場所、
/crossdomain.xml
(URLRequest.url
と同じサーバー)からポリシーファイルをダウンロードしようとします。 サウンドの URL は URLRequest オブジェクトのurl
プロパティで指定します。URLRequest オブジェクトはSound.load()
または Sound() コンストラクター関数に渡されます。
どのような場合でも、Flash Player または AIR では、適切なポリシーファイルがサウンドのサーバー上に存在していること、ポリシーファイルの場所に基づいて URLRequest.url
にあるサウンドファイルへのアクセスが可能であること、およびポリシーファイルの <allow-access-from>
タグによって呼び出し元ファイルのドメインによるサウンドへのアクセスが許可されていることが必要となります。
checkPolicyFile
を true
に設定した場合、Flash Player または AIR は、ポリシーファイルが検証されるまで待機してからサウンドをロードします。 サウンドデータに対する低レベルの操作(Sound.id3
の呼び出しまたは SoundMixer.computeSpectrum()
の呼び出しなど)は、Sound オブジェクトから progress
イベントおよび complete
イベントが送出されるまで待つ必要があります。
checkPolicyFile
を true
に設定していて、適切なポリシーファイルが見つからない場合は、ポリシーファイルを必要とする操作を実行するまでエラーは表示されません。ポリシーファイルが必要になると、Flash Player または AIR は SecurityError
例外をスローします。 complete
イベントを受け取ると、Sound.id3
の値(try
ブロック内)を取得して SecurityError
がスローされたかどうかを確認し、関連するポリシーファイルが見つかったかどうかをテストできます。
サーバーサイド HTTP リダイレクトを使用する URL からサウンドをダウンロードする場合は、checkPolicyFile
に注意してください。Flash Player または AIR は、URLRequest オブジェクトの url
プロパティに対応するポリシーファイルを取得しようとします。URLRequest オブジェクトは Sound.load()
に渡されます。 最終的なサウンドファイルが HTTP リダイレクトによって別の URL から取得される場合、最初にダウンロードされたポリシーファイルはサウンドの最終的な URL(セキュリティ判定においてはこの URL が重要となります)に適用できないことがあります。
このような状況になった場合の解決方法が 1 つあります。progress
イベントまたは complete
イベントを受け取った後、Sound.url
プロパティの値を調べることができます。ここには、サウンドの最終的な URL が格納されています。次に、サウンドの最終的な URL に基づいて算出したポリシーファイルの URL で Security.loadPolicyFile()
メソッドを呼び出します。最後に、例外がスローされなくなるまで Sound.id3
の値をポーリングします。
これは、AIR アプリケーションサンドボックス内のコンテンツには適用されません。アプリケーションサンドボックス内のコンテンツは、起点に関係なく、常にプログラムによってサウンドコンテンツにアクセスします。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
関連する API エレメント
SoundLoaderContext | () | コンストラクター |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
新しいサウンドローダーコンテキストオブジェクトを作成します。
パラメーターbufferTime:Number (default = 1000 ) — サウンドのストリーミングを開始するまでに、バッファーにストリーミングサウンドをプリロードする秒数です。
| |
checkPolicyFile:Boolean (default = false ) — オブジェクトのロード時に URL ポリシーファイルの存在を確認するかどうかを指定します(確認する場合は true )。
|
例 ( この例の使用方法 )
SoundLoaderContext オブジェクトの 1 つ目のパラメーター(context
)を使用して、バッファーのデフォルト値(1 秒)を 3 秒に増やしています。 値はミリ秒単位です。SoundLoaderContext オブジェクトの 2 つ目のパラメーターが true
に設定されている場合、オブジェクトのロード時にクロスドメインポリシーファイルが調べられます。ここでは、デフォルト値の false
に設定されているため、ポリシーファイルは調べられません。 サウンドオブジェクトの load()
メソッドによってコンテキスト設定が使用され、サウンドがストリームを開始する前に、バッファーにストリーミングサウンドをプリロードするために 3 秒間待機します。アドビ システムズ社のポッドキャストである URLRequest
オブジェクトによってファイルの位置が決定されます。サウンドファイルのロード中に IOErrorEvent.IO_ERROR
エラーが発生すると、errorHandler()
メソッドが呼び出されます。
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 10:34 AM Z