2010년 3월 26일 금요일

#사운드를 이용한 mp3 플레이어_(2)SoundChannel

사운드 일시정지와 재생을 만들어보자.

 

- 사운드 재생 :  Sound 클래스의 play() 메서드 담당.

- 사운드 일시정지 : SoundChannel 클래스의 stop() 메서드 담당.

 

그런데 Sound 클래스의 play()메서드를 살펴보자.

 

 

 

play() 메서드를 실행하면 리턴값으로 SoundChannel을 반환한다.

따라서 일시정지를 하려면 Sound 클래스의 play() 메서드를 통해 생성해야한다.  

 

 

 

[code as3]
var sound:Sound = new Sound(new URLRequest("힘을내줘.mp3"));

var channel:SoundChannel = sound.play(); // SoundChannel 객체 생성

channel.stop();
[/code]

이렇게 하면 사운드를 정지시킬 수 있께 된다. 정지시킨 다음에 다시 재생을 해보자.

그럼 처음부터 다시 재생이 된다. 처음부터 재생되는 것이 아니라 일시정지된 지점부터 재생되게 하고싶다.

사운드의 정지된 지점을 알고 싶을 때는 SoundChannel 클래스의 position속성을 사용한다.

 

 

 

[code as3]
var position:Number = 0;

var sound:Sound = new Sound(new URLRequest("힘을내줘.mp3"));

var channel:SoundChannel = sound.play(); // SoundChannel 객체 생성

position  = channel.position;  // 사운드가 재생되는 현재위치 저장.

channel.stop(); // 사운드 정지.

sound.play(position); // 사운드가 저장된 위치부터 다시 재생.
[/code]


 

그럼 제대로 한번 만들어보자.

새로운 플래시 파일을 하나 만들고 거기에 2개의 무비클립 재생버튼(play_btn)과 일시정지버튼(pause_btn)을 만들어 사운드가 재생, 일시정지 되도록 만들어보자.

 

[code as3]
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;

public class MyMusic extends Sprite
{
 public function MyMusic()
 {
  super(); // Sprite 클래스(상속하는 상위클래스)  생성
  configureSound(); // 사운드 설정 메서드 호출
 }

 /**
  *  @private
  *   사운드 객체 : 객체 생성시 자동으로 사운드 파일 로드
  */
 private var music:Sound = new Sound(new URLRequest("힘을내줘.mp3"));

 /**
  *  @private
  *  사운드 채널
  */
 private var channel:SoundChannel;

 /**
  *  @private
  *  현재 재생 위치(ms)
  */
 private var position:Number = 0;

 /**
  *  @private
  *  사운드 버튼 설정
  */
 private function configureSound():void
 {
  pause_btn.mouseEnabled = false; // 일시정지버튼 비활성화
  play_btn.mouseEnabled = true;   // 재생 버튼 활성화
  pause_btn.addEventListener(MouseEvent.CLICK, pauseButtonClickHandler); //일시정지버튼 이벤트 등록
  play_btn.addEventListener(MouseEvent.CLICK, playButtonClickHandler); // 재생버튼 이벤트 등록
 }

 /**
  *  @private
  *  일시정지 버튼 클릭
  */
 private function pauseButtonClickHandler(event:MouseEvent):void
 {
  pause_btn.mouseEnabled = false; // 일시정지버튼 비활성화
  play_btn.mouseEnabled = true; // 재생 버튼 활성화
  position = channel.position; // 현재 재생 위치 저장
  channel.stop(); // 사운드 정지
 }

 /**
  *  @private
  *  재생 버튼 클릭
  */
 private function playButtonClickHandler(event:MouseEvent):void
 {
  pause_btn.mouseEnabled = true; // 일시정지버튼 활성화
  play_btn.mouseEnabled = false; // 재생버튼 비활성화
  channel = music.play(position); // 사운드 재생
 }
}
}
[/code]

 

 

 

 

실행시켜보자.

댓글 없음:

댓글 쓰기