| パッケージ | flash.media |
| クラス | public class Sound |
| 継承 | Sound EventDispatcher Object |
| サブクラス | SoundAsset |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
Flash Player 10 以降および AIR 1.5 以降では、このクラスを使用して、動的に生成されたサウンドを処理することもできます。この場合、sampleData イベントハンドラに割り当てた関数が Sound オブジェクトでサウンドデータのポーリングに使用されます。サウンドは、サウンドデータに設定された ByteArray オブジェクトから取得され、再生されます。Sound.extract() を使用すると、Sound オブジェクトからサウンドデータを抽出できます。抽出したサウンドデータは、ストリームに書き戻して再生する前に処理できます。
SWF ファイルに埋め込まれたサウンドを制御するには、SoundMixer クラスのプロパティを使用します。
メモ : ActionScript 3.0 の Sound API は、ActionScript 2.0 とは異なります。ActionScript 3.0 では、取得して階層内に配置した Sound オブジェクトのプロパティを制御することができません。
このクラスを使用するときは、次のセキュリティモデルを考慮してください。
Sound.id3、SoundMixer.computeSpectrum()、SoundMixer.bufferTime および SoundTransform クラスです。ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティ情報について詳しくは、以下を参照してください。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| bytesLoaded : uint [読み取り専用]
この Sound オブジェクトで現在利用できるデータのバイト数を返します。 | Sound | ||
| bytesTotal : int [読み取り専用]
この Sound オブジェクトの合計バイト数を返します。 | Sound | ||
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
| id3 : ID3Info [読み取り専用]
MP3 ファイルの一部であるメタデータに対するアクセスを提供します。 | Sound | ||
| isBuffering : Boolean [読み取り専用]
外部 MP3 ファイルのバッファリング状態を返します。 | Sound | ||
| length : Number [読み取り専用]
現在のサウンドの継続時間を示すミリ秒数です。 | Sound | ||
![]() | prototype : Object [静的]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| url : String [読み取り専用]
サウンドがロードされる URL です。 | Sound | ||
| メソッド | 定義元 | ||
|---|---|---|---|
新しい Sound オブジェクトを作成します。 | Sound | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | |
ストリームを閉じて、データのダウンロードを中止します。 | Sound | ||
![]() |
イベントをイベントフローに送出します。 | EventDispatcher | |
Sound オブジェクトから生のサウンドデータを抽出します。 | Sound | ||
![]() |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
指定した URL から外部 MP3 ファイルのロードを開始します。 | Sound | ||
サウンドを再生する SoundChannel オブジェクトを新しく作成します。 | Sound | ||
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
![]() |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher | |
| イベント | 概要 | 定義元 | ||
|---|---|---|---|---|
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | ||
| データが正常にロードされたときに送出されます。 | Sound | |||
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | ||
| MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。 | Sound | |||
| 入出力エラーが発生して読み込み操作が失敗したときに送出されます。 | Sound | |||
| 読み込み操作が開始したときに送出されます。 | Sound | |||
| ロード処理の実行中にデータを受信したときに送出されます。 | Sound | |||
| Flash Player が新しいオーディオデータを要求するときに送出されます。 | Sound | |||
| bytesLoaded | プロパティ |
bytesLoaded:uint [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
この Sound オブジェクトで現在利用できるデータのバイト数を返します。このプロパティは、通常、外部から読み込むファイルのみに使用します。
public function get bytesLoaded():uint| bytesTotal | プロパティ |
bytesTotal:int [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
この Sound オブジェクトの合計バイト数を返します。
public function get bytesTotal():int| id3 | プロパティ |
id3:ID3Info [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
MP3 ファイルの一部であるメタデータに対するアクセスを提供します。
MP3 サウンドファイルには、ファイルについてのメタデータを示す ID3 タグを含めることができます。Sound.load() メソッドを使用してロードした MP3 サウンドに ID3 タグが含まれる場合は、これらのプロパティを調べることができます。サポートされているのは、UTF-8 文字セットを使用する ID3 タグだけです。
では、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 タグ | 対応する Sound クラスプロパティ |
| 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 |
次の表は、サポートされているものの、Sound クラスに定義済みのプロパティが存在しない 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 は、サウンドがロードされるサーバー上に URL ポリシーファイルがあるかどうかをチェックします。ポリシーファイルが存在しており、そのファイルでロード元 SWF ファイルのドメインからのアクセスが許可されている場合、Sound オブジェクトの id3 プロパティにアクセスできます。それ以外の場合は、アクセスできません。ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティ情報について詳しくは、以下を参照してください。
public function get id3():ID3Info関連項目
コンストラクタで、サウンドファイルがロードされますが、再生するように設定されていません。ここでは、ファイルが SWF ディレクトリにあると想定しています。ロードされるサウンドファイルの ID3 タグを読み取るために、システムにアクセス権がある必要があります。ファイル内に 情報が存在し、プログラムに読み取ることが許可されている場合、Event.ID3 イベントが送出され、サウンドファイルの id3id3 プロパティに値が設定されます。id3 プロパティには、すべての 情報を持つ ID3InfoID3 オブジェクトが格納されています。
id3Handler() メソッドで、ファイルの ID3 タグが ID3Info クラスのオブジェクトである id3 に保存されます。テキストフィールドがインスタンス化され、ID3 タグの一覧が表示されます。for ループによってすべての ID3 2.0 タグが繰り返し処理され、テキストフィールドの内容に名前と値が追加されます。(ID3InfoID3Info)プロパティを使用して、アーティスト、曲名、およびアルバムも追加されます。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 が読み込まれます。 1.0 タグだけが使用できる場合、id3.songnameid3. などと記述して、ID3 info プロパティを介して情報にアクセスできます。 2.0 では、新しいタグ()を使用して id3.TITSid3.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 [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
外部 MP3 ファイルのバッファリング状態を返します。値が true の場合、再生は現在中断され、オブジェクトがデータを待機しています。
public function get isBuffering():Boolean| length | プロパティ |
length:Number [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在のサウンドの継続時間を示すミリ秒数です。
public function get length():Number| url | プロパティ |
url:String [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 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 を表します。また、元の 要求が HTTP サーバーによってリダイレクトされると、urlurl プロパティの値はサウンドファイルが実際にダウンロードされた URL を示します。この最終的な絶対 URL の報告は、LoaderInfo.url の動作と同じです。
public function get url():String関連項目
| Sound | () | コンストラクタ |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
新しい Sound オブジェクトを作成します。Sound コンストラクタに有効な URLRequest オブジェクトを渡すと、コンストラクタは自動的に Sound オブジェクトの load() 関数を呼び出します。Sound コンストラクタに有効な URLRequest オブジェクトを渡さない場合は、ユーザー自身が Sound オブジェクトの load() 関数を呼び出す必要があります。呼び出さないと、ストリームがロードされません。
Sound オブジェクトで load() が呼び出された後は、その Sound オブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しい Sound オブジェクトを作成します。
load() の代わりに sampleData イベントハンドラを使用して、サウンドを Sound オブジェクトに動的にロードできます。
パラメータ stream:URLRequest (default = null) — 外部の MP3 ファイルを指定する URL です。
| |
context:SoundLoaderContext (default = null) — オプションの SoundLoader コンテキストオブジェクトです。これは、バッファ時間 (Sound オブジェクトのバッファに保持する MP3 データのミリ秒単位の最小数) を定義でき、また、アプリケーションがサウンドをロードする前にクロスドメインポリシーを確認すべきかどうかを指定できます。
|
| close | () | メソッド |
public function close():void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 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;
}
}
}
| extract | () | メソッド |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Sound オブジェクトから生のサウンドデータを抽出します。
このメソッドは、動的に生成されたオーディオを処理する場合に、別の Sound オブジェクトの sampleData イベントに割り当てられた関数を使って使用するように設計されています。つまり、このメソッドを使用して Sound オブジェクトからサウンドデータを抽出できます。次に、別の Sound オブジェクトによってダイナミックオーディオのストリーミングに使用されているバイト配列に、そのデータを書き込むことができます。
オーディオデータは、対象のバイト配列に、現在の位置から配置されます。オーディオデータは、通常、44,100 Hz ステレオで公開されます。サンプルの型は 32 ビット浮動小数値で、ByteArray.readFloat() () を使用して Number に変換できます。
パラメータ
target:ByteArray — 抽出されるサウンドサンプリングの配置先の ByteArray オブジェクトです。
| |
length:Number — 抽出するサウンドサンプリングの数です。サンプルには、2 つの 32 ビット浮動小数点数を意味する左チャンネルと右チャンネルがあります。
| |
startPosition:Number (default = -1) — 抽出を開始するサンプルです。値を指定しない場合、Sound.extract() の最初の呼び出しはサウンドの先頭から開始され、startPosition の値が設定されていない後続の呼び出しでは、ファイル全体が順に処理されます。
|
Number — Sound オブジェクトで使用できるサンプルの数です。
|
関連項目
extract() メソッドを使用してオーディオデータにアクセスします。
mp3 データは sourceSnd Sound オブジェクト内に読み込まれます。アプリケーションが mp3 データを読み込むと、loaded() 関数が呼び出されます。この関数は、complete イベント(sourceSnd オブジェクトのイベント)のイベントハンドラです。2 番目の Sound オブジェクト outputSound を使用して、変更されたオーディオが再生されます。outputSound オブジェクトには sampleData イベントリスナーがあり、sampleData イベントが定期的に送出されます(このオブジェクトの play() メソッドを呼びだした場合)。upOctave() メソッドは、ソースのオーディオデータに基づいて、変更されたオーディオデータのバイト配列を返します。ソースデータのオーディオサンプルを 1 つおきにスキップすることにより、1 オクターブ高いオーディオが返されます。sampleData イベントのイベントハンドラによって、返されたバイト配列が data プロパティ(outputSound オブジェクトのプロパティ)に書き込まれます。data バイト配列は outputSound オブジェクトの出力オーディオデータに追加されます。
この例をテストするには、test.mp3 ファイルを SWF ファイルと同じディレクトリに追加してください。
var sourceSnd:Sound = new Sound();
var outputSnd:Sound = new Sound();
var urlReq:URLRequest = new URLRequest("test.mp3");
sourceSnd.load(urlReq);
sourceSnd.addEventListener(Event.COMPLETE, loaded);
function loaded(event:Event):void
{
outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
outputSnd.play();
}
function processSound(event:SampleDataEvent):void
{
var bytes:ByteArray = new ByteArray();
sourceSnd.extract(bytes, 4096);
event.data.writeBytes(upOctave(bytes));
}
function upOctave(bytes:ByteArray):ByteArray
{
var returnBytes:ByteArray = new ByteArray();
bytes.position = 0;
while(bytes.bytesAvailable > 0)
{
returnBytes.writeFloat(bytes.readFloat());
returnBytes.writeFloat(bytes.readFloat());
if (bytes.bytesAvailable > 0)
{
bytes.position += 8;
}
}
return returnBytes;
}| load | () | メソッド |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
指定した URL から外部 MP3 ファイルのロードを開始します。Sound コンストラクタに有効な URLRequest オブジェクトを渡すと、コンストラクタは Sound.load() を呼び出します。ユーザー自身で Sound.load() を呼び出す必要があるのは、Sound コンストラクタに有効な URLRequest オブジェクトを渡さない場合、または null 値を渡す場合のみです。
Sound オブジェクトで load() が呼び出された後は、その Sound オブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しい Sound オブジェクトを作成します。
このメソッドを使用するときは、次のセキュリティモデルを考慮してください。
Sound.load() を呼び出すことはできません。allowNetworking パラメータ (SWF コンテンツを含んでいる HTML ページの object タグおよび embed タグのパラメータ) を設定します。Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメータで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティ情報について詳しくは、以下を参照してください。
パラメータ
stream:URLRequest — 外部の MP3 ファイルを指定する URL です。
| |
context:SoundLoaderContext (default = null) — オプションの SoundLoader コンテキストオブジェクトです。これは、バッファ時間 (Sound オブジェクトのバッファに保持する MP3 データのミリ秒単位の最小数) を定義でき、また、アプリケーションがサウンドをロードする前にクロスドメインポリシーを確認すべきかどうかを指定できます。
|
IOError — このロードの失敗原因であるネットワークエラーです。
| |
SecurityError — 信頼されていないローカルファイルはインターネットへの接続を許可されません。この問題は、このファイルを local-with-networking または trusted として分類し直すことで回避できます。
| |
SecurityError — 一般的な予約ポートに接続しようとしている場合。ブロックされているポートの完全な一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。
| |
IOError — digest プロパティ(stream オブジェクトのプロパティ)は null ではありません。RLRequest オブジェクトの digest プロパティを設定できるのは、URLLoader.load() メソッドを呼び出して SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込む場合のみです。
| |
SecurityError — 一般的な予約ポートに接続しようとしている場合。ブロックされているポートの完全な一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。
|
関連項目
コンストラクタで、アドビ システムズ社のポッドキャストであるサウンドファイルの位置を識別する URLRequest オブジェクトが作成されます。ファイルのロード中に発生する可能性のあるエラーをキャッチするために、ファイルが try...catch ブロックにロードされます。IO エラーが発生すると、errorHandler() メソッドも呼び出され、進行状況をレポートするテキストフィールドにエラーメッセージが書き出されます。ロード操作が進行している間に、ProgressEvent.PROGRESS イベントが送出され、progressHandler() メソッドが呼び出されます。ここでは、ProgressEvent.PROGRESS イベントがロードの進行状況を計算するタイマとして使用されます。
progressHandler() メソッドによって、bytesLoaded 値(ProgressEvent オブジェクトで渡される値)が 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 |
| ランタイムバージョン: | AIR 1.0 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 ブロックにロードされます。IOErrorEvent イベントに応答するサウンドオブジェクトに、errorHandler() メソッドを呼び出すことでリスナーが追加されます。もう 1 つのリスナーが Event.ENTER_FRAME イベントに応答するメインアプリケーションに追加されます。このイベントは、再生の進行状況を表示するタイミング制御メカニズムとして使用されます。最後に、(サウンドの再生が終了したとき)soundCompleteHandler() イベントに応答するサウンドチャンネルに、Event.SOUND_COMPLETE メソッドを呼び出すことで 3 番目のリスナーが追加されます。soundCompleteHandler() メソッドによって、Event.ENTER_FRAME イベントのイベントリスナーの削除も実行されます。
enterFrameHandler() メソッドによって、bytesLoaded 値(ProgressEvent オブジェクトで渡される値)が 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.Eventflash.events.Event.COMPLETE| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
データが正常に読み込まれたときに送出されます。
Event.COMPLETE 定数は、type プロパティ(complete イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ロードが完了したネットワークオブジェクトです。 |
関連項目
| id3 | イベント |
flash.events.Eventflash.events.Event.ID3| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。
Event.ID3 定数は、type プロパティ(id3 イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ID3 データが現在使用可能な MP3 をロードしている Sound オブジェクトです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。 |
関連項目
| ioError | イベント |
flash.events.IOErrorEventflash.events.IOErrorEvent.IO_ERROR| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
入出力エラーが発生して読み込み操作が失敗したときに送出されます。
type プロパティ (ioError イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
errorID | 特定のエラーに関連付けられた参照番号です(AIR のみ)。 |
target | 入出力エラーが発生したネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
関連項目
| open | イベント |
flash.events.Eventflash.events.Event.OPEN| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
読み込み操作が開始したときに送出されます。
Event.OPEN 定数は、type プロパティ(open イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 接続をオープンしたネットワークオブジェクトです。 |
関連項目
| progress | イベント |
flash.events.ProgressEventflash.events.ProgressEvent.PROGRESS| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ロード処理の実行中にデータを受信したときに送出されます。
type プロパティ (progress イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
bytesLoaded | リスナーがイベントを処理しているときにロードされたアイテム数またはバイト数です。 |
bytesTotal | ロードプロセスが成功した場合に最終的にロードされるアイテムまたはバイトの総数です。 |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 進行状況をレポートする オブジェクトです。 |
関連項目
| sampleData | イベント |
flash.events.SampleDataEventflash.events.Event.SAMPLE_DATA| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Flash Player が新しいオーディオデータを要求するときに送出されます。
var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
for ( var c:int=0; c<8192; c++ ) {
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
}
}
mySound.addEventListener(Event.SAMPLE_DATA,sineWaveGenerator);
mySound.play();関連項目
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/flex/3_jp/langref/flash/media/Sound.html