SoundTransform 클래스에는 볼륨, 패닝(왼쪽 스피커와 오른쪽 스피커의 음량 조절) 등에
대한 속성이 포함되어 있다. 따라서 사운드의 볼륨과 패닝을 조절하기 위해서는 SoundTransform 클래스를 이용해야한다.
SoundTransform 객체를 생성하는 방법에는 두가지가 있다.
첫번째
[code as3]
var vol_tran:SoundTransform = channel.soundTransform;
[/code]
두번째
[code as3]
var vol_tran:SoundTransform = new SoundTransform(1, 0);
[/code]
첫번째 방법은 SoundChannel 클래스의 soundTransform 속성을 사용하여 생성한다.
두번째 방법은 SoundTransform 클래스에서 객체를 생성한다.
첫번째 파라미터는 볼륨값이고, 두번째 파라미터는 패닝값이다.
첫번째 방법을 이용하여 사운드 볼륨과 패닝을 조절하겠다. 그럼 이제 만들어보자.
[code as3]
package
{
import fl.events.SliderEvent;
import fl.controls.Slider;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
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 var vol_tran:SoundTransform;
/**
* @private
* 사운드 초기화
*
* Slider(클래스) snapInterval(속성) : 패닝 slider 이동시 값이 증가하거나 감소하는 기준 간격 설정.
*/
private function configureSound():void
{
pan_slider.maximum = 1; // 패닝 Slider 최대값 설정.
pan_slider.minimum = -1; // 패닝 Slider 최소값 설정.
pan_slider.value = 0; // 기본값 0으로 설정.
pan_slider.snapInterval = 0.1; // 0.1만큼 증가 감소.
pause_btn.mouseEnabled = false; // 일시정지버튼 비활성화.
play_btn.mouseEnabled = true; // 재생 버튼 활성화.
pause_btn.addEventListener(MouseEvent.CLICK, pauseButtonClickHandler); //일시정지버튼 이벤트 등록.
play_btn.addEventListener(MouseEvent.CLICK, playButtonClickHandler); // 재생버튼 이벤트 등록.
sound_vol.addEventListener(SliderEvent.THUMB_DRAG, volumeSliderHandler); // 볼륨조절 이벤트 등록
pan_slider.addEventListener(SliderEvent.THUMB_DRAG, panSliderHandler); // 패닝조절 이벤트 등록
}
/**
* @private
* 사운드 볼륨
*
* 사운드 볼륨 범위 : 0 ~ 1
* SoundTransForm의 volume 속성 값 : 0 ~ 1
* Slider Component 값(정수값) : -1, 0, 1
* event.target : 마우스로 Slider를 클릭한 지점
* Slider(클래스) value(속성) : 현재 값을 가져오거나 설정.
* 이 값은 최소값과 최대값 사이에서 슬라이더 썸의 위치에 따라 결정.
* Slider : maximum = 10, minimum = 0
*/
private function volumeSliderHandler(event:SliderEvent):void
{
vol_tran = channel.soundTransform; // 현재 재생되고 있는 사운드의 볼륨 정보를 넘겨줌.
vol_tran.volume = event.target.value / 10; // 실제 보륨에 적용하기 위해 단위변환.
channel.soundTransform = vol_tran; // 변환된 사운드의 볼륨을 다시 적용.
}
/**
* @private
* 사운드 패닝
*
* 사운드 패닝 범위 : -1 ~ 1
* SoundTransForm의 volume 속성 값 : 0 ~ 1
* Slider Component 값(정수값) : -1, 0, 1
*/
private function panSliderHandler(event:SliderEvent):void
{
vol_tran = channel.soundTransform; // 현재 재생되고 있는 사운드의 패닝 정보를 넘겨줌.
vol_tran.pan = event.value;
channel.soundTransform = vol_tran; // 변환된 사운드의 패닝 다시 적용.
}
/**
* @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); // 사운드 재생.
vol_tran = channel.soundTransform; // 현재 재생되고 있는 사운드의 볼륨, 패닝 정보를 넘겨줌.
vol_tran.volume = sound_vol.value / 10;
channel.soundTransform = vol_tran; // 변환된 사운드의 볼륨, 패닝을 다시 적용.
}
}
}
[/code]
댓글 없음:
댓글 쓰기