パッケージ | flash.media |
クラス | public class Sound |
継承 | Sound EventDispatcher Object |
サブクラス | SoundAsset |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player 10 以降と AIR 1.5以降では、このクラスを使用して、動的に生成されたサウンドを処理することもできます。この場合、サウンドデータのポーリングには、sampleData
イベントハンドラーに割り当てられた関数が使用されます。サウンドは、サウンドデータに設定された ByteArray オブジェクトから取得され、再生されます。Sound.extract()
を使用すると、Sound オブジェクトからサウンドデータを抽出できます。抽出したサウンドデータは、ストリームに書き戻して再生する前に処理できます。
SWF ファイルに埋め込まれたサウンドを制御するには、SoundMixer クラスのプロパティを使用します。
注意:ActionScript 3.0 の Sound API は、ActionScript 2.0 とは異なります。ActionScript 3.0 では、取得して階層内に配置した Sound オブジェクトのプロパティを制御することができません。
このクラスを使用するときは、次のセキュリティモデルを考慮してください。
- 呼び出し元ファイルがネットワークサンドボックスにあり、ロードするサウンドファイルがローカルにある場合、サウンドのロードおよび再生はできません。
- 呼び出し元 ファイルがローカルにあり、リモートサウンドのロードおよび再生を試行する場合、デフォルトでは、サウンドのロードや再生ができません。この種のアクセスを許可するには、ユーザーが明示的な許可を与える必要があります。
- サウンドを処理する特定の操作が制限されます。ロードされたサウンドのデータには、クロスドメインポリシーファイルを実装していない限り、別のドメインに存在するファイルからアクセスできないことに注意してください。この制限の対象となるサウンド関連の API は、
Sound.id3
、SoundMixer.computeSpectrum()
、SoundMixer.bufferTime
、およびSoundTransform
クラスです。
ただし、Adobe AIR では、アプリケーション
セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
bytesLoaded : uint [読み取り専用]
この Sound オブジェクトで現在利用できるデータのバイト数を返します。 | Sound | ||
bytesTotal : int [読み取り専用]
この Sound オブジェクトの合計バイト数を返します。 | Sound | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
id3 : ID3Info [読み取り専用]
MP3 ファイルの一部であるメタデータに対するアクセスを提供します。 | Sound | ||
isBuffering : Boolean [読み取り専用]
外部 MP3 ファイルのバッファリング状態を返します。 | Sound | ||
isURLInaccessible : Boolean [読み取り専用]
Sound.url プロパティが切り詰められているかどうかを示します。 | Sound | ||
length : Number [読み取り専用]
現在のサウンドの継続時間を示すミリ秒数です。 | Sound | ||
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 | ||
MP3 サウンドデータを ByteArray オブジェクトから Sound オブジェクトにロードします。 | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
PCM 32 ビット浮動小数点のサウンドデータを ByteArray オブジェクトから Sound オブジェクトにロードします。 | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
サウンドを再生する SoundChannel オブジェクトを新しく作成します。 | Sound | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
データが正常にロードされたときに送出されます。 | Sound | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。 | Sound | |||
入出力エラーが発生してロード操作が失敗したときに送出されます。 | Sound | |||
ロード操作が開始したときに送出されます。 | Sound | |||
ロード処理の実行中にデータを受信したときに送出されます。 | Sound | |||
ランタイムが新しいオーディオデータを要求するときに送出されます。 | Sound |
bytesLoaded | プロパティ |
bytesTotal | プロパティ |
id3 | プロパティ |
id3:ID3Info
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
MP3 ファイルの一部であるメタデータに対するアクセスを提供します。
MP3 サウンドファイルには、ファイルについてのメタデータを示す ID3 タグを含めることができます。Sound.load()
メソッドを使用してロードした MP3 サウンドに ID3 タグが含まれる場合は、これらのプロパティを調べることができます。サポートされているのは、UTF-8 文字セットを使用する ID3 タグだけです。
Flash Player 9 以降および AIR では 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
などを呼び出します。注意:これらのタグはいずれも、Flash Lite 4 ではサポートされません。
プロパティ | 説明 |
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 セキュリティモデルを考慮してください。
- Sound オブジェクトの
id3
プロパティは、サウンドファイルと同じセキュリティサンドボックス内にある SWF ファイルで常に使用できます。他のサンドボックス内のファイルには、セキュリティチェックがあります。 - サウンドをロードするとき、Sound クラスの
load()
メソッドを使用すると、SoundLoaderContext オブジェクトであるcontext
パラメーターを指定できます。SoundLoaderContext オブジェクトのcheckPolicyFile
プロパティをtrue
に設定した場合、Flash Player は、サウンドがロードされるサーバー上に URL ポリシーファイルがあるかどうかをチェックします。ポリシーファイルが存在しており、そのファイルでロード元 SWF ファイルのドメインからのアクセスが許可されている場合、Sound オブジェクトのid3
プロパティにアクセスできます。それ以外の場合は、アクセスできません。
ただし、Adobe AIR では、アプリケーション
セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
実装
public function get id3():ID3Info
関連する API エレメント
例 ( この例の使用方法 )
コンストラクターで、サウンドファイルがロードされますが、再生するように設定されていません。ここでは、ファイルが 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 | プロパティ |
isURLInaccessible | プロパティ |
isURLInaccessible:Boolean
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
Sound.url
プロパティが切り詰められているかどうかを示します。isURLInaccessible
の値が true
の場合、Sound.url
の値は、サウンドのロード元となる最終的な URL のドメイン部分のみになります。例えば、サウンドが http://www.adobe.com/assets/hello.mp3
からロードされ、Sound.url
プロパティの値が http://www.adobe.com
の場合、このプロパティは切り詰められています。isURLInaccessible
の値は、以下の値もすべて true の場合のみ true
になります。
- サウンドファイルのロード中に HTTP リダイレクトが発生しました。
Sound.load()
の呼び出し元の SWF ファイルが、サウンドファイルの最終的な URL とは別のドメインからのファイルです。Sound.load()
の呼び出し元の SWF ファイルに、サウンドファイルにアクセスする許可がありません。サウンドファイルへのアクセス許可は、Sound.id3
プロパティへアクセスする場合と同じ方法で許可されます。つまり、ポリシーファイルを作成して、SoundLoaderContext.checkPolicyFile
プロパティを使用します。
注意:isURLInaccessible
プロパティは Flash Player 10.1 および AIR 2.0 用に追加されました。ただし、Flash ランタイムでサポートされている場合、このプロパティはすべてのバージョンの SWF ファイルで使用できます。このため、オーサリングツールを「strict モード」で使用するとコンパイルエラーが発生します。このエラーを回避するには、間接構文 mySound["isURLInaccessible"]
を使用するか、strict モードを無効にします。Flash Professional CS5 または Flex SDK 4.1 を使用している場合、Flash Player 10.1 および AIR 2 以前にリリースされたランタイム向けに、この API を使用してコンパイルすることができます。
AIR のアプリケーションコンテンツの場合、このプロパティの値は常に false
です。
実装
public function get isURLInaccessible():Boolean
関連する API エレメント
length | プロパティ |
url | プロパティ |
url:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドがロードされる 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
の動作と同じです。
場合によっては、url
プロパティの値が切り詰められていることがあります。詳しくは、isURLInaccessible
プロパティを参照してください。
実装
public function get url():String
関連する API エレメント
Sound | () | コンストラクター |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
新しい 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, Flash Lite 4 |
ストリームを閉じて、データのダウンロードを中止します。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 bit 浮動小数値で、ByteArray.readFloat()
を使用して Number に変換できます。
パラメーター
target:ByteArray — 抽出されるサウンドサンプリングの配置先の ByteArray オブジェクトです。
| |
length:Number — 抽出するサウンドサンプリングの数です。サンプルには、2 つの 32 bit 浮動小数点数を意味する左チャンネルと右チャンネルがあります。
| |
startPosition:Number (default = -1 ) — 抽出を開始するサンプルです。値を指定しない場合、Sound.extract() の最初の呼び出しはサウンドの先頭から開始され、startPosition の値が設定されていない後続の呼び出しでは、ファイル全体が順に処理されます。
|
Number — target パラメーターに指定されている ByteArray に書き込まれるサンプルの数です。
|
関連する API エレメント
例 ( この例の使用方法 )
extract()
メソッドを使用してオーディオデータにアクセスします。
mp3 データは sourceSnd
Sound オブジェクト内にロードされます。アプリケーションが mp3 データをロードすると、loaded()
関数が呼び出されます。この関数は、sourceSnd
オブジェクトの complete
イベントのイベントハンドラーです。2 番目の Sound オブジェクト outputSound
を使用して、変更されたオーディオが再生されます。outputSound
オブジェクトには sampleData
イベントリスナーがあり、オブジェクトの play()
メソッドを呼び出すと、この sampleData
イベントが定期的に送出されます。upOctave()
メソッドは、ソースのオーディオデータに基づいて、変更されたオーディオデータのバイト配列を返します。ソースデータのオーディオサンプルを 1 つおきにスキップすることにより、1 オクターブ高いオーディオが返されます。sampleData
イベントのイベントハンドラーによって、返されたバイト配列が outoputSound
オブジェクトの data
プロパティに書き込まれます。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, Flash Lite 4 |
指定した URL から外部 MP3 ファイルのロードを開始します。Sound コンストラクターに有効な URLRequest オブジェクトを渡すと、コンストラクターは Sound.load()
を呼び出します。ユーザー自身で Sound.load()
を呼び出す必要があるのは、Sound コンストラクターに有効な URLRequest オブジェクトを渡さない場合、または null
値を渡す場合のみです。
Sound オブジェクトで load()
が呼び出された後は、その Sound オブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しい Sound オブジェクトを作成します。
このメソッドを使用するときは、次のセキュリティモデルを考慮してください。
- 呼び出し元ファイルが local-with-file-system サンドボックスにあり、サウンドがネットワークサンドボックスにある場合、
Sound.load()
を呼び出すことはできません。 - 信頼できるローカルのサンドボックスまたはネットワーク接続したローカルのサンドボックスからアクセスするには、URL ポリシーファイルを使用して Web サイトで許可する必要があります。
- 一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。
- SWF ファイルがこのメソッドを使用しないようにするには、
allowNetworking
パラメーター(SWF コンテンツを含んでいる HTML ページのobject
タグおよびembed
タグのパラメーター)を設定します。
Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメーターで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
- POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
- POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。
また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
Adobe AIR では、application
セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
パラメーター
stream:URLRequest — 外部の MP3 ファイルを指定する URL です。
| |
context:SoundLoaderContext (default = null ) — オプションの SoundLoader コンテクストオブジェクト。バッファー時間(Sound オブジェクトのバッファー内に保持する MP3 データの最小ミリ秒数)を定義でき、サウンドをロードする前にクロスドメインポリシーファイルをチェックするかどうかを指定できます。
|
例外
IOError — このロードの失敗原因であるネットワークエラーです。
| |
SecurityError — 信頼されていないローカルファイルはインターネットへの接続を許可されません。この問題は、このファイルを local-with-networking または trusted として分類し直すことで回避できます。
| |
SecurityError — 一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。
| |
IOError — stream オブジェクトの digest プロパティが null ではありません。URLRequest オブジェクトの digest プロパティを設定できるのは、URLLoader.load() メソッドを呼び出して SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込む場合のみです。
|
例 ( この例の使用方法 )
コンストラクターで、アドビ システムズ社のポッドキャストであるサウンドファイルの位置を識別する 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; } } }
loadCompressedDataFromByteArray | () | メソッド |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 3, Flash Player 11 |
MP3 サウンドデータを ByteArray オブジェクトから Sound オブジェクトにロードします。このデータは現在の ByteArray の位置から読み取られます。終了すると、ByteArray の位置は、指定のバイトの長さの末尾に設定されます。MP3 サウンドデータに ID3 データが含まれている場合は、この関数の呼び出しで ID3 イベントが送出されます。ByteArray オブジェクトに十分なデータが含まれていない場合、この関数は例外をスローします。
パラメーター
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | メソッド |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 3, Flash Player 11 |
PCM 32 ビット浮動小数点のサウンドデータを ByteArray オブジェクトから Sound オブジェクトにロードします。このデータは現在の ByteArray の位置から読み取られます。終了すると、ステレオフラグが設定されている場合、ByteArray の位置は、1 つのチャンネルまたは 2 つのチャンネルを乗算した指定のサンプルの長さの末尾に設定されます。
Flash Player 11.8 以降、この関数に渡せるオーディオデータの量は制限されます。SWF バージョンが 21 以降の場合、この関数に渡されるオーディオデータが 1800 秒を超えると、この関数は例外をスローします。つまり、サンプル/サンプルレートは 1800 またはそれ以下である必要があります。SWF バージョンが 21 より後の場合、渡されるオーディオデータが 12000 秒を超えると、ランタイムは警告なしで終了します。これは後方互換で提供されます。
ByteArray オブジェクトに十分なデータが含まれていない場合、この関数は例外をスローします。
パラメーター
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | メソッド |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドを再生する SoundChannel オブジェクトを新しく作成します。このメソッドは SoundChannel オブジェクトを返します。このオブジェクトにアクセスして、サウンドの停止、およびボリュームの監視を行います。ボリュームの制御、パン、バランスの設定を行うには、サウンドチャンネルに割り当てられた SoundTransform オブジェクトにアクセスします。
パラメーター
startTime:Number (default = 0 ) — 再生を開始する初期位置(ミリ秒単位)です。
| |
loops:int (default = 0 ) — サウンドチャネルの再生が停止するまで startTime 値に戻ってサウンドの再生を繰り返す回数を定義します。
| |
sndTransform:flash.media:SoundTransform (default = null ) — サウンドチャンネルに割り当てられた初期 SoundTransform オブジェクトです。
|
SoundChannel — サウンドの制御に使用する SoundChannel オブジェクトです。このメソッドは、サウンドカードがない場合、または使用できるサウンドチャンネルが不足した場合は null を返します。一度に使用できるサウンドチャンネルの最大数は 32 チャネルです。
|
関連する API エレメント
例 ( この例の使用方法 )
コンストラクターが 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
プロパティ Event.type =
flash.events.Event.COMPLETE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
データが正常にロードされたときに送出されます。
Event.COMPLETE
定数は、type
プロパティ(complete
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 読み込みが完了したネットワークオブジェクトです。 |
関連する API エレメント
id3 | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.ID3
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
MP3 サウンドで ID3 データを使用できる場合に、Sound オブジェクトによって送出されます。
Event.ID3
定数は、type
プロパティ(id3
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ID3 データが現在使用可能な MP3 を読み込んでいる Sound オブジェクトです。target は、必ずしもイベントリスナーを登録した表示リスト内のオブジェクトとは限りません。現在イベントを処理している表示リスト内のオブジェクトにアクセスするには、currentTarget プロパティを使用します。 |
関連する API エレメント
ioError | イベント |
flash.events.IOErrorEvent
プロパティ IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
入出力エラーが発生してロード操作が失敗したときに送出されます。
type
プロパティ(ioError
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
errorID | 特定のエラーに関連付けられた参照番号です(AIR のみ)。 |
target | 入出力エラーが発生したネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
関連する API エレメント
open | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.OPEN
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ロード操作が開始したときに送出されます。
Event.OPEN
定数は、type
プロパティ(open
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 接続をオープンしたネットワークオブジェクトです。 |
関連する API エレメント
progress | イベント |
flash.events.ProgressEvent
プロパティ ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ロード処理の実行中にデータを受信したときに送出されます。
type
プロパティ(progress
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
bytesLoaded | リスナーがイベントを処理しているときに読み込まれたアイテム数またはバイト数です。 |
bytesTotal | 読み込みプロセスが成功した場合に最終的に読み込まれるアイテムまたはバイトの総数です。 |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 進行状況をレポートする オブジェクトです。 |
関連する API エレメント
sampleData | イベント |
flash.events.SampleDataEvent
プロパティ SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ランタイムが新しいオーディオデータを要求するときに送出されます。
type
プロパティ(SampleDataEvent
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
position | オーディオデータの提供元となるポイントです。 |
例 ( この例の使用方法 )
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(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
関連する API エレメント
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); } } }
Tue Jun 12 2018, 10:34 AM Z