사운드 일시정지와 재생을 만들어보자.
- 사운드 재생 : 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]
실행시켜보자.
댓글 없음:
댓글 쓰기