パッケージflash.media
クラスpublic class SoundLoaderContext
継承SoundLoaderContext Inheritance Object

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

SoundLoaderContext クラスはサウンドをロードする SWF ファイルのセキュリティチェックを提供します。SoundLoaderContext オブジェクトは、コンストラクタと Sound クラスの load() メソッドにパラメータとして渡されます。

このクラスを使用するときは、Flash® Player セキュリティモデルを考慮してください。

詳細については、以下を参照してください。



パブリック プロパティ
 プロパティ定義元
  bufferTime : Number = 1000
サウンドのストリーミングを開始するまでに、バッファにストリーミングサウンドをプリロードする秒数です。
SoundLoaderContext
  checkPolicyFile : Boolean = false
サウンドのロードを開始する前に、Flash Player が、ロードされるサウンドのサーバーからのクロスドメインポリシーファイルのダウンロードを試行するかどうかを指定します。
SoundLoaderContext
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリック メソッド
 メソッド定義元
  
SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
新しい ContextMenu オブジェクトを作成します。
SoundLoaderContext
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
bufferTimeプロパティ
public var bufferTime:Number = 1000

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

サウンドのストリーミングを開始するまでに、バッファにストリーミングサウンドをプリロードする秒数です。

SoundLoaderContext.bufferTime の値を、グローバル SoundMixer.bufferTime プロパティを設定してオーバーライドすることはできません。SoundMixer.bufferTime プロパティは SWF に埋め込まれたストリーミングサウンドのバッファ時間に影響し、動的に作成される Sound オブジェクト (ActionScript で作成される Sound オブジェクト) には影響しません。

checkPolicyFileプロパティ 
public var checkPolicyFile:Boolean = false

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

サウンドのロードを開始する前に、Flash Player が、ロードされるサウンドのサーバーからのクロスドメインポリシーファイルのダウンロードを試行するかどうかを指定します。このプロパティは、呼び出し元の SWF ファイル自身のドメイン外から Sound.load() メソッドを使用してロードされたサウンドに適用されます。

呼び出し元の SWF ファイル自身のドメイン外からサウンドをロードし、ActionScript から低レベルでサウンドにアクセスする必要がある場合は、このプロパティを true に設定します。サウンドデータへの低レベルアクセスの例です。ID3Info オブジェクトを取得するための Sound.id3 プロパティへの参照、またはロードされたサウンドからサウンドサンプリングを取得する SoundMixer.computeSpectrum() メソッドの呼び出しが含まれます。ロード時に checkPolicyFile プロパティを true に設定せずにサウンドデータにアクセスしようとした場合、必要なポリシーファイルがダウンロードされていないために SecurityError 例外を受け取る場合があります。

ロードするサウンドデータへの低レベルのアクセスを必要としない場合は、checkPolicyFiletrue に設定しないでください。ポリシーファイルの確認はネットワーク帯域幅の浪費になり、ダウンロードの開始が遅れる場合があるため、必要な場合にのみ行います。

Sound.load() を呼び出すときに SoundLoaderContext.checkPolicyFiletrue に設定すると、Flash Player は、関連するクロスドメインポリシーファイルを正常にダウンロードするか、指定されたサウンドのダウンロードを開始する前に、そのようなポリシーファイルが存在しないことを判別する必要があります。ポリシーファイルの存在を確認するため、Flash Player は次のアクションをこの順番で実行します。

どのような場合でも、Flash Player では、適切なポリシーファイルがサウンドのサーバー上に存在しており、ポリシーファイルの場所に応じて URLRequest.url にあるサウンドファイルへのアクセスが提供され、<allow-access-from> タグに応じて呼び出し元 SWF ファイルのドメインによるアクセスが許可されている必要があります。

checkPolicyFiletrue に設定した場合、Flash Player はサウンドをロードする前に、ポリシーファイルが検証されるまで待機します。サウンドデータに対する低レベルの操作 (Sound.id3 の呼び出しまたは SoundMixer.computeSpectrum() の呼び出しなど) の実行を、Sound オブジェクトから progress イベントおよび complete イベントが送出されるまで、待つ必要があります。

checkPolicyFiletrue に設定していても、適切なポリシーファイルが見つからない場合は、ポリシーファイルを必要とする操作を実行するまでエラーが表示されません。ポリシーファイルが必要になると、Flash Player は SecurityError 例外をスローします。complete イベントを受け取ると、Sound.id3 の値 (try ブロック内) を取得して SecurityError がスローされたかどうかを確認し、関連するポリシーファイルが見つかったかどうかをテストできます。

サーバーサイド HTTP リダイレクトを使用する URL からサウンドをダウンロードする場合は、checkPolicyFile に注意してください。Flash Player は、URLRequest オブジェクトの url プロパティに対応するポリシーファイルを取得しようとします。URLRequest オブジェクトは Sound.load() に渡されます。最終的なサウンドファイルが HTTP リダイレクトによって別の URL から取得される場合、最初にダウンロードされたポリシーファイルはサウンドの最終的な URL に適用できないことがあります。そのため、URL はセキュリティ判定において重要です。

このような状況になった場合の解決方法が 1 つあります。progress イベントまたは complete イベントを受け取った後、Sound.url プロパティの値を調べることができます。ここには、サウンドの最終的な URL が格納されています。次に、サウンドの最終的な URL に基づいて算出したポリシーファイルの URL で Security.loadPolicyFile() メソッドを呼び出します。最後に、例外がスローされなくなるまで Sound.id3 の値をポーリングします。

ポリシーファイルの詳細については、『ActionScript 3.0 のプログラミング』の「Flash Player セキュリティ」の章を参照してください。

関連項目

コンストラクタの詳細
SoundLoaderContext()コンストラクタ
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

新しい ContextMenu オブジェクトを作成します。

パラメータ
bufferTime:Number (default = 1000) — サウンドのストリーミングを開始するまでに、バッファにストリーミングサウンドをプリロードする秒数です。
 
checkPolicyFile:Boolean (default = false) — オブジェクトをロードする際、Flash Player がクロスドメインポリシーファイルの存在を確認する (true) かどうかを指定します。



次の例では、ロードされるサウンドのバッファが 3 秒に設定されます。

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(30000, 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);
        }

    }
}




 

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

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/media/SoundLoaderContext.html