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

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

Sound クラスを使用すると、アプリケーション内のサウンドを処理することができます。Sound クラスを使用すると、新しい Sound オブジェクトの作成、外部 MP3 ファイルのオブジェクトへのロードと再生ができます。また、サウンドストリームを閉じたり、サウンド関連のデータ (ストリームおよび ID3 メタデータのバイト数などの情報) へアクセスすることができます。サウンドソース (サウンドの SoundChannel オブジェクトまたは Microphone オブジェクト) を使用すると、サウンドを詳細に制御できます。また、コンピュータのスピーカーへのサウンド出力を制御する SoundTransform クラスのプロパティを使用することもできます。

SWF ファイルに埋め込まれたサウンドを制御するには、SoundMixer クラスのプロパティを使用します。

メモ : ActionScript 3.0 の Sound API は、ActionScript 2.0 とは異なります。ActionScript 3.0 では、取得して階層内に配置した Sound オブジェクトのプロパティを制御することができません。

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

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

例を表示

関連項目

Microphone
SoundChannel
SoundMixer
SoundTransform
サウンドの操作の基礎


パブリック プロパティ
 プロパティ定義元
  bytesLoaded : uint
[read-only] この Sound オブジェクトで現在利用できるデータのバイト数を返します。
Sound
  bytesTotal : int
[read-only] この Sound オブジェクトの合計バイト数を返します。
Sound
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  id3 : ID3Info
[read-only] MP3 ファイルの一部であるメタデータに対するアクセスを提供します。
Sound
  isBuffering : Boolean
[read-only] 外部 MP3 ファイルのバッファリング状態を返します。
Sound
  length : Number
[read-only] 現在のサウンドの継続時間を示すミリ秒数です。
Sound
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  url : String
[read-only] サウンドがロードされる URL です。
Sound
パブリック メソッド
 メソッド定義元
  
Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
新しい Sound オブジェクトを作成します。
Sound
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  
ストリームを閉じて、データのダウンロードを中止します。
Sound
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
load(stream:URLRequest, context:SoundLoaderContext = null):void
指定した URL から外部 MP3 ファイルのロードを開始します。
Sound
  
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel
サウンドを再生する SoundChannel オブジェクトを新しく作成します。
Sound
 Inherited
指定されたプロパティが存在し列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
   データが正常にロードされたときに送出されます。Sound
 Inherited Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
  
id3
MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。Sound
   入出力エラーが発生してロード操作が失敗したときに送出されます。Sound
   ロード操作が開始したときに送出されます。Sound
   ロード処理を実行中にデータを受信したときに送出されます。Sound
プロパティの詳細
bytesLoadedプロパティ
bytesLoaded:uint  [read-only]

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

この Sound オブジェクトで現在利用できるデータのバイト数を返します。これは通常、外部からロードするファイルのみに使用します。


実装
    public function get bytesLoaded():uint
bytesTotalプロパティ 
bytesTotal:int  [read-only]

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

この Sound オブジェクトの合計バイト数を返します。


実装
    public function get bytesTotal():int
id3プロパティ 
id3:ID3Info  [read-only]

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

MP3 ファイルの一部であるメタデータに対するアクセスを提供します。

MP3 サウンドファイルには、ファイルについてのメタデータを示す ID3 タグを含めることができます。Sound.load() メソッドを使用してロードした MP3 サウンドに ID3 タグが含まれる場合は、これらのプロパティを調べることができます。サポートされているのは、UTF-8 文字セットを使用する ID3 タグだけです。

Flash Player 9 以降では、ID3 2.0 (厳密には 2.3 および 2.4) のタグのサポートが追加されました。次の表に、標準の ID3 2.0 タグと、そのタグが表すコンテンツタイプを示します。Sound.id3 プロパティは my_sound.id3.COMMmy_sound.id3.TIME などの形式を使用してこれらのタグにアクセスできます。最初の表は、ID3 2.0 プロパティ名または ActionScript プロパティ名のいずれかを使用してアクセスできるタグを示します。2 番目の表は、サポートされているものの、ActionScript に定義済みのプロパティが存在しない ID3 タグを示します。

ID3 2.0 タグ対応する ActionScript プロパティ
COMMSound.id3.comment
TALBSound.id3.album
TCONSound.id3.genre
TIT2Sound.id3.songName
TPE1Sound.id3.artist
TRCKSound.id3.track
TYERSound.id3.year

次の表に、サポートされているものの、ActionScript に定義済みのプロパティが存在しない ID3 タグを示します。これらのタグにアクセスするには、mySound.id3.TFLTmySound.id3.TIME などを呼び出します。

プロパティ概要
TFLTファイル形式
TIME時刻
TIT1内容の属するグループの説明
TIT2タイトル/曲名/内容の説明
TIT3サブタイトル/説明の追加情報
TKEY最初の調
TLAN言語
TLEN長さ
TMEDメディアタイプ
TOALオリジナルのアルバム/ムービー/ショーのタイトル
TOFNオリジナルのファイル名
TOLYオリジナルの作詞家/文書作成者
TOPEオリジナルのアーティスト/演奏者
TORYオリジナルのリリース年
TOWNファイルの所有者/ライセンス保持者
TPE1主な演奏者/ソリスト
TPE2バンド/オーケストラ/伴奏
TPE3指揮者/演奏者詳細情報
TPE4翻訳、リミックス、その他の修正を行った人
TPOSセット中の位置
TPUB発行者
TRCKトラック番号/セット内の位置
TRDA録音日
TRSNインターネットラジオ局の名前
TRSOインターネットラジオ局の所有者
TSIZサイズ
TSRCISRC (国際標準録音資料コード)
TSSEエンコードに使用したソフトウェア/ハードウェアと設定
TYER
WXXXURL リンクフレーム

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

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


実装
    public function get id3():ID3Info

関連項目




次の例では、サウンドファイルから ID3 情報を読み取り、テキストフィールドに表示します。

コンストラクタで、サウンドファイルがロードされますが、再生するように設定されていません。ここでは、ファイルが SWF ディレクトリにあると想定しています。ロードされるサウンドファイルの ID3 タグを読み取るために、システムにアクセス権がある必要があります。ファイル内に ID3 情報が存在し、プログラムに読み取ることが許可されている場合、Event.ID3 イベントが送出され、サウンドファイルの id3 プロパティに値が設定されます。id3 プロパティには、すべての ID3 情報を持つ ID3Info オブジェクトが格納されています。

id3Handler() メソッドで、ファイルの ID3 タグが ID3Info クラスのオブジェクトである id3 に保存されます。テキストフィールドがインスタンス化され、ID3 タグの一覧が表示されます。for ループによってすべての ID3 2.0 タグが繰り返し処理され、テキストフィールドの内容に名前と値が追加されます。ID3 info (ID3Info) プロパティを使用して、アーティスト、曲名、およびアルバムも追加されます。ActionScript 3.0 および Flash Player 9 以降では、ID3 2.0 タグ、特に 2.3 と 2.4 がサポートされます。この for ループのようにプロパティの反復処理を実行すると、ID3 2.0 タグだけが表示されます。ただし、以前のバージョンからのデータも曲の id3 プロパティに保存され、ID3 info クラスのプロパティを使用してアクセスできます。ID3 1.0 のタグはファイルに末尾にあります。一方、ID3 2.0 タグはファイルの先頭にあります。以前のバージョンと最新バージョンのタグがファイルの同じ場所にある場合があります。ファイルが、ファイルの先頭と末尾にあるバージョン 1.0 タグと 2.0 タグの両方でエンコードされている場合、id3Handler() メソッドが 2 回呼び出されます。最初にバージョン 2.0 が読み込まれ、次にバージョン 1.0 が読み込まれます。ID3 1.0 タグだけが使用できる場合、id3.songname などと記述して、ID3 info プロパティを介して情報にアクセスできます。ID3 2.0 では、新しいタグ (TITS) を使用して id3.TITS プロパティによって曲名が取得されます。

この例にはエラー処理の記述がないため、ID3 の内容が長い場合、結果が表示可能領域を超える場合があります。

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.net.URLRequest;
    import flash.media.ID3Info;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;

    public class Sound_id3Example extends Sprite {
        private var snd:Sound = new Sound();       
        private var myTextField:TextField = new TextField();

        public function Sound_id3Example() {
            snd.addEventListener(Event.ID3, id3Handler);
            snd.load(new URLRequest("mySound.mp3"));
        }
    
        private function id3Handler(event:Event):void {
            var id3:ID3Info = snd.id3;

            myTextField.autoSize = TextFieldAutoSize.LEFT;
            myTextField.border = true;

            myTextField.appendText("Received ID3 Info: \n");
              
            for (var propName:String in id3) {
                myTextField.appendText(propName + " = " + id3[propName] + "\n");
            }
 
            myTextField.appendText("\n" + "Artist: " + id3.artist + "\n");
            myTextField.appendText("Song name: " + id3.songName + "\n");
            myTextField.appendText("Album: " + id3.album + "\n\n"); 
 
            this.addChild(myTextField);
        }
    }
}
isBufferingプロパティ 
isBuffering:Boolean  [read-only]

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

外部 MP3 ファイルのバッファリング状態を返します。値が true の場合、再生は現在中断され、オブジェクトがデータを待機しています。


実装
    public function get isBuffering():Boolean
lengthプロパティ 
length:Number  [read-only]

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

現在のサウンドの継続時間を示すミリ秒数です。


実装
    public function get length():Number
urlプロパティ 
url:String  [read-only]

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

サウンドがロードされる URL です。このプロパティは Sound.load() メソッドを使用してロードされた Sound オブジェクトにのみ適用できます。SWF ライブラリのサウンドアセットに関連付けられた Sound オブジェクトの url プロパティの値は null です。

初めて Sound.load() を呼び出す際は最終的な URL が不明なため、url プロパティの初期値は null になります。url プロパティは、Sound オブジェクトから open イベントが送出されると同時に、null 以外の値になります。

url プロパティには、サウンドがロードされる元の最終的な絶対 URL が格納されます。url の値は、通常 stream パラメータ (Sound.load()) に渡される値と同じです。ただし、Sound.load() に相対 URL を渡しても、url プロパティの値は絶対 URL を表します。また、元の URL 要求が HTTP サーバーによってリダイレクトされると、url プロパティの値はサウンドファイルが実際にダウンロードされた URL を示します。この最終的な絶対 URL の報告は、LoaderInfo.url の動作と同じです。


実装
    public function get url():String

関連項目

コンストラクタの詳細
Sound()コンストラクタ
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)

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

新しい Sound オブジェクトを作成します。Sound コンストラクタに有効な URLRequest オブジェクトを渡すと、コンストラクタは自動的に Sound オブジェクトの load() 関数を呼び出します。Sound コンストラクタに有効な URLRequest オブジェクトを渡さない場合は、ユーザー自身が Sound オブジェクトの load() 関数を呼び出す必要があります。呼び出さないと、ストリームがロードされません。

Sound オブジェクトで load() が呼び出された後は、その Sound オブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しい Sound オブジェクトを作成します。

パラメータ
stream:URLRequest (default = null) — 外部の MP3 ファイルを指定する URL です。
 
context:SoundLoaderContext (default = null) — Sound オブジェクトのバッファで MP3 データを保持する最小時間 (ミリ秒単位) です。Sound オブジェクトは、再生の開始前、ならびにネットワーク停止後の再生の再開前に少なくともこの大量のデータを取得するまで待機します。デフォルト値は 1000 ミリ秒 (1 秒) です。
メソッドの詳細
close()メソッド
public function close():void

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

ストリームを閉じて、データのダウンロードを中止します。close() メソッドの呼び出し後は、ストリームからデータを読み込みません。


例外
IOError — ストリームを閉じることができないか、またはストリームが開いていません。



次の例では、ユーザーが [停止] ボタンをクリックしたときに、Sound.close() メソッドが呼び出され、サウンドがストリーミングを停止します。

コンストラクタで、[開始] ボタンおよび [停止] ボタン用のテキストフィールドが作成されます。ユーザーがテキストフィールドをクリックすると、clickHandler() メソッドが呼び出されます。このメソッドは、サウンドファイルの開始と停止を処理します。ネットワーク接続によって、またはユーザーが [停止] ボタンを押したときにファイルの多くがロードされてしまっているため、サウンドファイルの再生を停止するのにしばらく時間がかかる場合があります。ストリームを閉じている間に発生する可能性のある IO エラーをキャッチするために、try...catch ブロックが使用されます。たとえば、サウンドがローカルディレクトリからロードされ、ストリームされない場合、エラー 2029 がキャッチされ、"この URLStream オブジェクトには開いているストリームがありません" というメッセージが表示されます。

 
package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;    
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.errors.IOError;
    import flash.events.IOErrorEvent;

    public class Sound_closeExample extends Sprite {
        private var snd:Sound = new Sound();
        private var button:TextField = new TextField();
        private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
        
        public function Sound_closeExample() {
            button.x = 10;
            button.y = 10;
            button.text = "START";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.LEFT;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {

            if(button.text == "START") {

                snd.load(req);
                snd.play();        

                snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

                button.text = "STOP";
            }
            else if(button.text == "STOP") {
                    
                try {
                    snd.close();
                    button.text = "Wait for loaded stream to finish.";
                }
                catch (error:IOError) {
                    button.text = "Couldn't close stream " + error.message;    
                }
            }
        }
        
        private function errorHandler(event:IOErrorEvent):void {
                button.text = "Couldn't load the file " + event.text;
        }
    }
}


load()メソッド 
public function load(stream:URLRequest, context:SoundLoaderContext = null):void

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

指定した URL から外部 MP3 ファイルのロードを開始します。Sound コンストラクタに有効な URLRequest オブジェクトを渡すと、コンストラクタは Sound.load() を呼び出します。ユーザー自身で Sound.load() を呼び出す必要があるのは、Sound コンストラクタに有効な URLRequest オブジェクトを渡さない場合、または null 値を渡す場合のみです。

Sound オブジェクトで load() が呼び出された後は、その Sound オブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しい Sound オブジェクトを作成します。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。

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

パラメータ

stream:URLRequest — 外部の MP3 ファイルを指定する URL です。
 
context:SoundLoaderContext (default = null) — Sound オブジェクトのバッファで MP3 データを保持する最小時間 (ミリ秒単位) です。Sound オブジェクトは、再生の開始前、ならびにネットワーク停止後の再生の再開前に少なくともこの大量のデータを取得するまで待機します。デフォルト値は 1000 ミリ秒 (1 秒) です。


例外
IOError — このロードの失敗原因であるネットワークエラーです。
 
SecurityError — 信頼されていないローカル SWF はインターネットへの接続を許可されません。これは、ネットワークアクセスを許可されたローカル SWF ファイル、または信頼できる SWF ファイルとして再分類すると回避できる場合があります。

関連項目




次の例では、サウンドファイルのロードの進行状況を表示します。

コンストラクタで、アドビ システムズ社のポッドキャストであるサウンドファイルの位置を識別する URLRequest オブジェクトが作成されます。ファイルのロード中に発生する可能性のあるエラーをキャッチするために、ファイルが try...catch ブロックにロードされます。IO エラーが発生すると、errorHandler() メソッドも呼び出され、進行状況をレポートするテキストフィールドにエラーメッセージが書き出されます。ロード操作が進行している間に、ProgressEvent.PROGRESS イベントが送出され、progressHandler() メソッドが呼び出されます。ここでは、ProgressEvent.PROGRESS イベントがロードの進行状況を計算するタイマとして使用されます。

progressHandler() メソッドによって、ProgressEvent オブジェクトで渡される bytesLoaded 値が bytesTotal 値で除算され、ロードされるサウンドデータの割合 (パーセント) が算出されます。次に、これらの値がテキストフィールドに表示されます。ファイルが小さいか、キャッシュされているか、ローカルディレクトリにある場合、進行状況が目立たない場合があります。

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    
    public class Sound_loadExample extends Sprite {
        private var snd:Sound = new Sound();
        private var statusTextField:TextField  = new TextField();

        public function Sound_loadExample(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;
            var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
            snd.load(req);
            
            snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
 
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                     
            this.addChild(statusTextField);
        }
    
        private function progressHandler(event:ProgressEvent):void {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
              
            statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" 
                                 + "Bytes being loaded: " + event.bytesLoaded + "\n" 
                                 + "Percentage of sound file that is loaded " + LoadPercent + "%.\n";
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}
play()メソッド 
public function play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel

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

サウンドを再生する SoundChannel オブジェクトを新しく作成します。このメソッドは SoundChannel オブジェクトを返します。このオブジェクトにアクセスして、サウンドの停止、およびボリュームの監視を行います。ボリュームの制御、パン、バランスの設定を行うには、サウンドチャンネルに割り当てられた SoundTransform オブジェクトにアクセスします。

パラメータ

startTime:Number (default = 0) — 再生を開始する初期位置 (ミリ秒単位) です。
 
loops:int (default = 0) — サウンドチャネルの再生が停止するまで startTime 値に戻ってサウンドの再生を繰り返す回数を定義します。
 
sndTransform:SoundTransform (default = null) — サウンドチャンネルに割り当てられた初期 SoundTransform オブジェクトです。

戻り値
SoundChannel — サウンドの制御に使用する SoundChannel オブジェクトです。このメソッドは、サウンドカードがない場合、または使用できるサウンドチャンネルが不足した場合は null を返します。一度に使用できるサウンドチャンネルの最大数は 32 チャンネルです。

関連項目




次の例では、ファイルがロードされると、グラフィックバーを使用するユーザーは、サウンドファイルの開始位置 (開始時点) を選択できます。

コンストラクタが Sound.load() メソッドを呼び出して、サウンドデータのロードを開始します。次に、Sound.play() メソッドを呼び出して、十分なデータがロードされ次第、サウンドの再生を開始します。Sound.play() メソッドによって、サウンドの再生を制御するために使用される SoundChannel オブジェクトが返されます。テキストフィールドにはユーザーに対する説明が表示されます。ユーザーが再生を開始しようとしているサウンドの内容が確実にロードされているようにするため、ファイルのロードが完了してから bar Sprite オブジェクトが作成され、表示されます。ファイルが正常にロードされると、Event.COMPLETE イベントが送出され、そのイベントによって completeHandler() メソッドがトリガされます。次に、completeHandler() メソッドによってバーが作成され、表示リストに追加されます。インタラクティブ機能をサポートするために、Shape オブジェクトの代わりに Sprite オブジェクトが使用されます。ユーザーがバーをクリックすると、clickHandler() メソッドがトリガされます。

clickHandler() メソッドで、ユーザーがクリックした x 座標の位置 event.localX を使用して、ユーザーがファイルの開始を指定した場所が特定されます。バーは 100 ピクセルであり、x 座標の 100 ピクセルの位置から開始するので、位置の割合 (パーセント) は簡単に特定されます。また、ファイルがロードされるため、サウンドファイルの length プロパティに、完全なファイルの長さ (ミリ秒単位) が設定されます。サウンドファイルの長さと行内の位置を使用して、サウンドファイルの開始位置が特定されます。サウンドの再生を停止した後は、startTime パラメータとして play() メソッドに渡される選択した開始位置からサウンドファイルの再生が再開されます。

 
package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.MouseEvent;
    import flash.media.Sound;;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample1 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel = new SoundChannel();
        private var infoTextField:TextField = new TextField();
    
        public function Sound_playExample1() {

            var req:URLRequest = new URLRequest("MySound.mp3");
            
            infoTextField.autoSize = TextFieldAutoSize.LEFT;
            infoTextField.text = "Please wait for the file to be loaded.\n" 
                                + "Then select from the bar to decide where the file should start.";
            
            snd.load(req);               
            channel = snd.play();

            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(Event.COMPLETE, completeHandler);


            this.addChild(infoTextField);
        }

        private function completeHandler(event:Event):void {                
            infoTextField.text = "File is ready.";

            var bar:Sprite = new Sprite();

            bar.graphics.lineStyle(5, 0xFF0000);
            bar.graphics.moveTo(100, 100);
            bar.graphics.lineTo(200, 100);

            bar.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(bar);
        }
    
        private function clickHandler(event:MouseEvent):void {
            
                var position:uint = event.localX;
                var percent:uint = Math.round(position) - 100;   
                var cue:uint = (percent / 100) * snd.length;

                channel.stop();
                channel = snd.play(cue);    
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            infoTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}

次の例では、ユーザーがボタンをシングルクリックするか、ダブルクリックするかに応じて、サウンドを 1 回または 2 回再生します。

コンストラクタで、サウンドがロードされ、単純な矩形の button Sprite オブジェクトが作成されます。インタラクティブ機能をサポートするために、Shape オブジェクトの代わりに Sprite オブジェクトが使用されます。ここでは、サウンドファイルが SWF ファイルと同じディレクトリにあると想定しています。この例には、エラー処理コードはありません。

マウスのシングルクリックとダブルクリックに応答するために、2 つのイベントリスナーが設定されます。ユーザーがボタンをシングルクリックすると、clickHandler() メソッドが呼び出され、サウンドが再生されます。ユーザーがボタンをダブルクリックすると、doubleClickHandler() メソッドが呼び出され、サウンドファイルが 2 回再生されます。play() メソッドの 2 番目の引数が 1 に設定されます。これは、サウンドが開始時点に 1 回ループバックされ、再び再生されることを意味します。1 つ目の引数 (開始時点) は 0 に設定されます。これは、ファイルが最初から再生されることを意味します。

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.media.Sound;
    import flash.net.URLRequest;

    public class Sound_playExample2 extends Sprite {
        private var button:Sprite = new Sprite(); 
        private var snd:Sound = new Sound();
            
        public function Sound_playExample2() {

            var req:URLRequest = new URLRequest("click.mp3");
            snd.load(req);               
     
            button.graphics.beginFill(0x00FF00);
            button.graphics.drawRect(10, 10, 50, 30);
            button.graphics.endFill();
     
            button.addEventListener(MouseEvent.CLICK, clickHandler);
            button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
     
            this.addChild(button);
        }

        private function clickHandler(event:MouseEvent):void {
            snd.play();            
        }

        private function doubleClickHandler(event:MouseEvent):void {
            snd.play(0, 2);        
        }
    }
}

次の例では、サウンドファイルのロードと再生の進行状況を表示します。

コンストラクタで、ファイルのロード中に発生する可能性のあるエラーをキャッチするために、ファイルが try...catch ブロックにロードされます。リスナーが errorHandler() メソッドを呼び出すことで IOErrorEvent イベントに応答するサウンドオブジェクトに追加されます。もう 1 つのリスナーが Event.ENTER_FRAME イベントに応答するメインアプリケーションに追加されます。このイベントは、再生の進行状況を表示するタイミング制御メカニズムとして使用されます。最後に、3 番目のリスナーが soundCompleteHandler() メソッドを呼び出すことで Event.SOUND_COMPLETE イベントに (サウンドの再生が終了したときに) 応答するサウンドチャンネルに追加されます。soundCompleteHandler() メソッドによって、Event.ENTER_FRAME イベントのイベントリスナーの削除も実行されます。

enterFrameHandler() メソッドによって、ProgressEvent オブジェクトで渡される bytesLoaded 値が bytesTotal 値で除算され、ロードされるサウンドデータの割合 (パーセント) が算出されます。再生されるサウンドデータの割合 (パーセント) は、サウンドチャンネルの position プロパティの値をサウンドデータの長さで除算することで算出される場合があります。ただし、サウンドデータが完全にロードされていない場合、サウンドオブジェクトの length プロパティは、現在ロードされているサウンドデータのみのサイズを表示します。完全なサウンドファイルの最終的なサイズの推定値は、現在のサウンドオブジェクトの length の値を bytesLoaded プロパティの値で除算してから、bytesTotal プロパティの値で除算することで算出されます。

ファイルが小さいか、キャッシュされているか、ローカルディレクトリにある場合、ロードの進行状況が目立たない場合があります。また、サウンドデータのロードが開始されてから、ロードされたデータの再生が開始されるまでの遅延時間は、SoundLoaderContext.buffertime プロパティの値によって指定されます。この値は、デフォルトで 1000 ミリ秒であり、リセットできます。

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample3 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel;
        private var statusTextField:TextField  = new TextField();

        public function Sound_playExample3(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;

           var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
                snd.load(req);
            
                channel = snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
                    
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                    
            this.addChild(statusTextField);
        }
    
        private function enterFrameHandler(event:Event):void {    
            var loadTime:Number = snd.bytesLoaded / snd.bytesTotal;
            var loadPercent:uint = Math.round(100 * loadTime);
            var estimatedLength:int = Math.ceil(snd.length / (loadTime));
            var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength));
      
            statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" 
                                   + "Bytes being loaded: " + snd.bytesLoaded + "\n" 
                                   + "Percentage of sound file that is loaded " + loadPercent + "%.\n"
                                   + "Sound playback is " + playbackPercent + "% complete.";     
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }

        private function soundCompleteHandler(event:Event):void {
            statusTextField.text = "The sound has finished playing.";
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
    }
}
イベントの詳細
complete イベント
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.COMPLETE

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

データが正常にロードされたときに送出されます。

type プロパティ (complete イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetロードが完了したネットワークオブジェクトです。

関連項目

id3 イベント  
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.ID3

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

MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。

type プロパティ (id3 イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetID3 データが現在使用可能な MP3 をロードしている Sound オブジェクトです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。

関連項目

ioError イベント  
イベントオブジェクトの型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

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

入出力エラーが発生してロード操作が失敗したときに送出されます。

type プロパティ (ioError イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target入出力エラーが発生したネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

関連項目

open イベント  
イベントオブジェクトの型: flash.events.Event
Event.type property = flash.events.Event.OPEN

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

ロード操作が開始したときに送出されます。

type プロパティ (open イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target接続をオープンしたネットワークオブジェクトです。

関連項目

progress イベント  
イベントオブジェクトの型: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS

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

ロード処理を実行中にデータを受信したときに送出されます。

type プロパティ (progress イベントオブジェクト) の値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
bytesLoadedリスナーがイベントを処理しているときにロードされたアイテム数またはバイト数です。
bytesTotalロードプロセスが成功した場合に最終的にロードされるアイテムまたはバイトの総数です。
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target進行状況をレポートするネットワークオブジェクトです。

関連項目

例の使用法
SoundExample.as

次の例では、MP3 ファイルを開い再生すると発生するサウンドイベントに関する情報が表示されます。この例を実行するには、MySound.mp3 ファイルを SWF ファイルと同じディレクトリに配置します。
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class SoundExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var song:SoundChannel;

        public function SoundExample() {
            var request:URLRequest = new URLRequest(url);
            var soundFactory:Sound = new Sound();
            soundFactory.addEventListener(Event.COMPLETE, completeHandler);
            soundFactory.addEventListener(Event.ID3, id3Handler);
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            soundFactory.load(request);
            song = soundFactory.play();
        }

        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }

        private function id3Handler(event:Event):void {
            trace("id3Handler: " + event);
        }

        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler: " + event);
        }
    }
}




 

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

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