실질적으로 사운드 제어에 필요한 클래스는 Sound Class, SoundChannel Class, SoundTransform Class 가 있고, 사운드 로드 할때 URLRequest 가 사용된다.
사운드를 다루기 위해선 당연히 다루어야할 사운드가 필요하다. 사운드는 URLRequest로 로드한다.
var soundUrl:URLRequest = new URLRequest(url);
sound = new Sound();
sound.load(soundUrl);
로드한 사운드를 조작해야 한다. 이때 필요한 클래스가 SoundChannel class 이다. 이 클래스는 사운드를 재생 시키거나 멈추게 한다.
var control:SoundChannel = sound.play();
controlSoundChannel = control;
controlSoundChannel.stop();
사운드를 다룰때 주의 해야할 것은 사운드가 플레이 되고 있는 상태에서 추가로 플레이 시키면, 기존에 플레이되고 있는 거와 같이 추가 된것이 플레이된다. 이는 여러번 계속 플레이 시키면 플레이 시킨 만큼 계속해서 사운드가 중복된다. 이때 SoundChannel 를 가지고 stop() 하면 처음 플레이된거 하나만 멈추고 나머지는 남아있게된다.
Boolean을 활용해서 플레이 중에는 또 플레이 되지 않도록 하는게 좋다.
사운드가 끝날 때, 이벤트를 통해서 끝나자마 특별한 행동들을 줄수가 있다.
controlSound.addEventListener(Event.SOUND_COMPLETE, soundComplete);
SoundChannel 의 position 프로퍼티를 통해서 현재 플레이 되고 있는 위치를 밀리세컨드 단위로 알수 있다. play() 메서드는 밀리세컨드를 인자값으로 받는데, 받은 인자 값의 위치에서 사운드가 시작된다. 사운드를 멈출때, 그 위치를 저장했다가 시작할때 저장된 값을 사용해서 멈춘 부분에서 다시 시작하는 기능을 구현할 수 있다.
이 때 주의 할 것은 stop() 전에 position을 저장해야 한다. 사운드가 멈추면 position은 0이 되어버린다. play(0)은 처음부터 시작된다. 0은 play()의 디폴트 값이다.
startPoint = controlSoundChannel.position;
controlSoundChannel.stop();
sound.play(startPoint);
사운드 볼륨을 조절할 때는 SoundTransform class 를 사용한다. volume 프로퍼티로 적용 시킬수 있는데, 범위는 0~1 사이 이다.
var transformVolume:SoundTransform = controlSound.soundTransform;
transformVolume.volume = 0.6;
controlSound.soundTransform = transformVolume;
'prev record' 카테고리의 다른 글
[2010.05.07.금요일] NetStream의 client 프로퍼티 (0) | 2013.07.14 |
---|---|
[2010.05.06.목요일] 비디오 제어 (0) | 2013.07.14 |
[2010.05.04.화요일] pure MVC (0) | 2013.07.14 |
[2010.05.01.토요일] 프로젝트 데드라인 (0) | 2013.07.14 |
[2010.04.30.금요일] fiddler (0) | 2013.07.14 |