| パッケージ | flash.media |
| クラス | public class Sound |
| 継承 | Sound EventDispatcher Object |
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
SWF ファイルに埋め込まれたサウンドを制御するには、SoundMixer クラスのプロパティを使用します。
メモ : ActionScript 3.0 の Sound API は、ActionScript 2.0 とは異なります。ActionScript 3.0 では、取得して階層内に配置した Sound オブジェクトのプロパティを制御することができません。
このクラスを使用するときは、Flash Player セキュリティモデルを考慮してください。
Sound.id3、SoundMixer.computeSpectrum()、SoundMixer.bufferTime、および SoundTransform クラスです。詳細については、以下を参照してください。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| bytesLoaded : uint
[read-only]
この Sound オブジェクトで現在利用できるデータのバイト数を返します。
| Sound | ||
| bytesTotal : int
[read-only]
この Sound オブジェクトの合計バイト数を返します。
| Sound | ||
![]() | constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| id3 : ID3Info
[read-only]
MP3 ファイルの一部であるメタデータに対するアクセスを提供します。
| Sound | ||
| isBuffering : Boolean
[read-only]
外部 MP3 ファイルのバッファリング状態を返します。
| Sound | ||
| length : Number
[read-only]
現在のサウンドの継続時間を示すミリ秒数です。
| Sound | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| url : String
[read-only]
サウンドがロードされる URL です。
| Sound | ||
| メソッド | 定義元 | ||
|---|---|---|---|
|
新しい Sound オブジェクトを作成します。
| Sound | ||
![]() |
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
| EventDispatcher | |
|
ストリームを閉じて、データのダウンロードを中止します。
| Sound | ||
![]() |
イベントをイベントフローに送出します。
| EventDispatcher | |
![]() |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
|
指定した URL から外部 MP3 ファイルのロードを開始します。
| Sound | ||
|
サウンドを再生する SoundChannel オブジェクトを新しく作成します。
| Sound | ||
![]() |
指定されたプロパティが存在し列挙できるかどうかを示します。
| Object | |
![]() |
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。
| Object | |
![]() |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | |
| イベント | 概要 | 定義元 | ||
|---|---|---|---|---|
![]() | Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | ||
| データが正常にロードされたときに送出されます。 | Sound | |||
![]() | Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | ||
| 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.COMM、my_sound.id3.TIME などの形式を使用してこれらのタグにアクセスできます。最初の表は、ID3 2.0 プロパティ名または ActionScript プロパティ名のいずれかを使用してアクセスできるタグを示します。2 番目の表は、サポートされているものの、ActionScript に定義済みのプロパティが存在しない ID3 タグを示します。
| ID3 2.0 タグ | 対応する ActionScript プロパティ |
| COMM | Sound.id3.comment |
| TALB | Sound.id3.album |
| TCON | Sound.id3.genre |
| TIT2 | Sound.id3.songName |
| TPE1 | Sound.id3.artist |
| TRCK | Sound.id3.track |
| TYER | Sound.id3.year |
次の表に、サポートされているものの、ActionScript に定義済みのプロパティが存在しない ID3 タグを示します。これらのタグにアクセスするには、mySound.id3.TFLT、mySound.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 | サイズ |
| TSRC | ISRC (国際標準録音資料コード) |
| TSSE | エンコードに使用したソフトウェア/ハードウェアと設定 |
| TYER | 年 |
| WXXX | URL リンクフレーム |
このプロパティを使用するときは、Flash Player セキュリティモデルを考慮してください。
id3 プロパティは、サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックがあります。load() メソッドを使用すると、SoundLoaderContext オブジェクトである context パラメータを指定できます。SoundLoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、Flash Player は、サウンドがロードされるサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルが存在しており、そのファイルでロード元 SWF ファイルのドメインが許可されている場合、Sound オブジェクトの id3 プロパティにアクセスできます。それ以外の場合は、アクセスできません。詳細については、以下を参照してください。
public function get id3():ID3Info
関連項目
コンストラクタで、サウンドファイルがロードされますが、再生するように設定されていません。ここでは、ファイルが 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 オブジェクトを作成します。
Sound.load() を呼び出すことはできません。allowNetworking パラメータ (object および embed タグ) を設定します。詳細については、以下を参照してください。
パラメータ
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;
}
}
}
コンストラクタで、サウンドがロードされ、単純な矩形の 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
flash.events.Event.COMPLETE
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
データが正常にロードされたときに送出されます。
type プロパティ (complete イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ロードが完了したネットワークオブジェクトです。 |
関連項目
| id3 | イベント |
flash.events.Event
flash.events.Event.ID3
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。
type プロパティ (id3 イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ID3 データが現在使用可能な MP3 をロードしている Sound オブジェクトです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。 |
関連項目
| ioError | イベント |
flash.events.IOErrorEvent
flash.events.IOErrorEvent.IO_ERROR
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
入出力エラーが発生してロード操作が失敗したときに送出されます。
type プロパティ (ioError イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 入出力エラーが発生したネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
関連項目
| open | イベント |
flash.events.Event
flash.events.Event.OPEN
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
ロード操作が開始したときに送出されます。
type プロパティ (open イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 接続をオープンしたネットワークオブジェクトです。 |
関連項目
| progress | イベント |
flash.events.ProgressEvent
flash.events.ProgressEvent.PROGRESS
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
ロード処理を実行中にデータを受信したときに送出されます。
type プロパティ (progress イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
bytesLoaded | リスナーがイベントを処理しているときにロードされたアイテム数またはバイト数です。 |
bytesTotal | ロードプロセスが成功した場合に最終的にロードされるアイテムまたはバイトの総数です。 |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 進行状況をレポートするネットワークオブジェクトです。 |
関連項目
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