패키지 | 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
속성 값을 저장하는 데 사용합니다. 나중에, 저장된 위치에서 사운드를 다시 시작할 수 있습니다.
사운드가 반복되면 각 반복이 시작될 때 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
변수에 할당됩니다. Sound 객체는 사운드 채널의 stop()
메서드를 사용하여 사운드를 일시 정지해야 하므로 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
상수는 soundComplete
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
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, 03:17 PM Z