パッケージ | flash.media |
クラス | public final class SoundChannel |
継承 | SoundChannel EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
stop()
メソッド、チャンネルの振幅(ボリューム)を監視するためのプロパティ、および SoundTransform オブジェクトをチャンネルに割り当てるためのプロパティがあります。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
leftPeak : Number [読み取り専用]
左チャンネルの現在の振幅(ボリューム)、0(無音)~ 1(完全な振幅)です。 | SoundChannel | ||
position : Number [読み取り専用]
サウンドの再生中、position プロパティは、サウンドファイル内で再生されている現在のポイント(ミリ秒単位)を示します。 | SoundChannel | ||
rightPeak : Number [読み取り専用]
右チャンネルの現在の振幅(ボリューム)、0(無音)~ 1(完全な振幅)です。 | SoundChannel | ||
soundTransform : flash.media:SoundTransform
サウンドチャンネルに割り当てられた SoundTransform オブジェクトです。 | SoundChannel |
メソッド | 定義元 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
チャンネルで再生しているサウンドを停止します。 | SoundChannel | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
サウンドの再生が終了したときに送出されます。 | SoundChannel |
leftPeak | プロパティ |
position | プロパティ |
position:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドの再生中、position
プロパティは、サウンドファイル内で再生されている現在のポイント(ミリ秒単位)を示します。サウンドを停止または一時停止すると、position
プロパティはサウンドファイル内で再生された最後のポイントを示します。
一般的な使用方法は、サウンドを停止したときに position
プロパティの値を保存することです。その保存した位置からサウンドを再起動して、後でサウンドを再開できます。
サウンドをループしている場合、サウンド位置
は各ループの最初に 0 にリセットされます。
実装
public function get position():Number
rightPeak | プロパティ |
soundTransform | プロパティ |
soundTransform:flash.media:SoundTransform
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドチャンネルに割り当てられた SoundTransform オブジェクトです。SoundTransform オブジェクトには、ボリューム、パン、左スピーカーの割り当て、および右スピーカーの割り当てを設定するプロパティが含まれます。
実装
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
関連する API エレメント
stop | () | メソッド |
public function stop():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
チャンネルで再生しているサウンドを停止します。
例 ( この例の使用方法 )
コンストラクターで、サウンドファイルがロードされます。(この例では、ファイルが SWF ファイルと同じディレクトリにあると想定しています。)ユーザーがサウンドの再生または一時停止を実行するボタンとして、テキストフィールドが使用されます。ユーザーが button
テキストフィールドを選択すると、clickHandler()
メソッドが呼び出されます。
clickHandler()
メソッドで、ユーザーが初めてテキストフィールドを選択したときに、サウンドが再生するように設定され、サウンドチャンネルに割り当てられます。 次に、ユーザーが一時停止するテキストフィールドを選択すると、サウンドが再生を停止します。 サウンドチャンネルの position
プロパティは、停止時のサウンドの位置を記録します。このプロパティを使用して、ユーザーがテキストフィールドを選択して再生を再開した後、その位置でサウンドが再開されます。 Sound.play()
メソッドが呼び出されるたびに、新しい SoundChannel オブジェクトが作成され、channel
変数に割り当てられます。サウンドチャンネルの stop()
メソッドを使用してサウンドを一時停止するためには、Sound オブジェクトを SoundChannel オブジェクトに割り当てる必要があります。
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.events.MouseEvent; import flash.text.TextFieldAutoSize; public class SoundChannel_stopExample extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var button:TextField = new TextField(); public function SoundChannel_stopExample() { var req:URLRequest = new URLRequest("MySound.mp3"); snd.load(req); button.x = 10; button.y = 10; button.text = "PLAY"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.CENTER; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { var pausePosition:int = channel.position; if(button.text == "PLAY") { channel = snd.play(pausePosition); button.text = "PAUSE"; } else { channel.stop(); button.text = "PLAY"; } } } }
soundComplete | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.SOUND_COMPLETE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
サウンドの再生が終了したときに送出されます。
Event.SOUND_COMPLETE
定数は、type
プロパティ(soundComplete
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | サウンドの再生が終了した SoundChannel オブジェクトです。 |
例 ( この例の使用方法 )
コンストラクターには、テキストフィールドが定義され、曲リスト、および再生を選択するための行が保持されます。(通常、曲の再生にはボタンが使用され、曲リストにはリストボックスが使用されます。)選択された曲の行の書式をイタリックに変更するテキストフォーマットオブジェクトが定義されます。ユーザーがテキストフィールドを選択すると、clickHandler()
メソッドが呼び出されます。
clickHandler()
メソッドでは、テキストフィールドオブジェクトの getLineIndexAtPoint()
メソッドによってユーザーが選択した行のインデックスが返されます。 行のインデックスを使用して、getLineText()
メソッドによってテキストの内容が取得されます。次に、if ステートメントで、ユーザーが曲の再生と再生リストへの追加のいずれを選択したかがチェックされます。 ユーザーが再生を選択し、曲が選択された場合、マウスのクリックに対するイベントリスナーが削除され、playNext()
メソッドが呼び出されて、曲の再生が開始されます。ユーザーが曲のタイトルを選択した場合、行の内容が songList
配列に追加され、行の書式がイタリックに設定されます。
playNext()
メソッドによって配列リストが反復処理され、各曲がロードおよび再生されます。曲のサウンドチャンネルへの割り当ても行われます。曲の再生が終了し、Event.SOUND_COMPLETE
イベントが送出されるときに応答するために、そのサウンドチャンネルに対するイベントリスナーが追加されます。次に、soundCompleteHandler()
メソッドによって playNext()
メソッドが呼び出され、次の曲が再生されます。この処理は、配列にリストされたすべての曲の再生が完了するまで続行します。
package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.text.TextFormat; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; public class SoundChannel_event_soundCompleteExample extends Sprite { private var channel:SoundChannel = new SoundChannel(); private var songList:Array = new Array(); private var listTextField:TextField = new TextField(); private var songFormat:TextFormat = new TextFormat(); private var arrayIndex:int = 0; private var songSelected:Boolean = false; public function SoundChannel_event_soundCompleteExample() { listTextField.autoSize = TextFieldAutoSize.LEFT; listTextField.border = true listTextField.background = true; listTextField.text = "Song1.mp3\n" + "Song2.mp3\n" + "Song3.mp3\n" + "Song4.mp3\n" + "PLAY"; songFormat.italic = true; listTextField.addEventListener(MouseEvent.CLICK, clickHandler); addChild(listTextField); } private function clickHandler(e:MouseEvent):void { var index:int = listTextField.getLineIndexAtPoint(e.localX, e.localY); var line:String = listTextField.getLineText(index); var firstIndex:uint = listTextField.getLineOffset(index); var playLine:uint = listTextField.numLines - 1; if((index == playLine) && (songSelected == true)) { listTextField.removeEventListener(MouseEvent.CLICK, clickHandler); playNext(); } else if (index != playLine) { songList.push(line.substr(0, (line.length - 1))); listTextField.setTextFormat(songFormat, firstIndex, (firstIndex + listTextField.getLineLength(index))); songSelected = true; } } private function playNext():void { if(arrayIndex < songList.length) { var snd:Sound = new Sound(); snd.load(new URLRequest(songList[arrayIndex])); channel = snd.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); arrayIndex++; } else { songSelected = false; while(arrayIndex > 0) { songList.pop(); arrayIndex--; } } } private function soundCompleteHandler(e:Event):void { playNext(); } private function errorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.utils.Timer; public class SoundChannelExample extends Sprite { private var url:String = "MySound.mp3"; private var soundFactory:Sound; private var channel:SoundChannel; private var positionTimer:Timer; public function SoundChannelExample() { var request:URLRequest = new URLRequest(url); soundFactory = 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); channel = soundFactory.play(); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); positionTimer = new Timer(50); positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler); positionTimer.start(); } private function positionTimerHandler(event:TimerEvent):void { trace("positionTimerHandler: " + channel.position.toFixed(2)); } 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); positionTimer.stop(); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } private function soundCompleteHandler(event:Event):void { trace("soundCompleteHandler: " + event); positionTimer.stop(); } } }
Tue Jun 12 2018, 10:34 AM Z