Intro
오늘은 ActionScript 3.0으로 Flash에 음악, 노래, 또는 Sound를 넣고 Play 와 Pause를 하는 법을 배웠습니다.

Flash에 Sound를 넣는 방법은 두가지가 있습니다.

첫번째는, Flash Project 파일(FLA확장자) 과 넣으려는 노래를 같은 폴더에넣구 Flash파일의 외부에서 그 같은 폴더에있는 노래를 필요한때에 불러와서 재생하는 방법이있구요.

두번째는, 제가 밑에 한 방법으로, 라이브러리에 그 노래를 import 해놓구 Flash 파일(swf)에 자체에 저장함으로써 같은폴더에 노래를 둘 필요가없이 swf파일 하나만으로 그노래를 재생하는 방법이있습니다.

먼저 코드를 봅시다!

Code
stopButton.visible = false;
startButton.visible = true;

var song:Sound = new Song();
var sc:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;

startButton.addEventListener( MouseEvent.CLICK, startSong);
stopButton.addEventListener( MouseEvent.CLICK, stopSong);

function startSong( event:MouseEvent ):void

      if ( lastPosition == 0 )
      {
            sc = song.play(lastPosition );
      }
      startButton.visible = false;
      stopButton.visible = true;
}

function stopSong( event:MouseEvent ):void
{
      lastPosition = sc.position;
      sc.stop();

      stopButton.visible = false;
      startButton.visible = true;


Explanation
var song:Sound = new Song();
var sc:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;

song 이라는 이름을 가진 Sound type의 variable(변수)를 만들고 그 variable이 Song Class의 object(instance)를 값으로 가지게 하구요.
요기서 Song class는 library에 import한 노래의 property에서 Linkage 밑에 Export for Actionscript 를 체크해주시고 밑에 class 이름을 Song이라구 해주셔야 합니다. class이름은 Song아니여도 원하시는값으로 해주시고 코드를 바꾸셔두 되구요.
그리고 sc라는 이름을 가진 SoundChannel type의 variable을 SoundChannel Class의 object를 값으로 가지게 하구요.
sc가 노래가 pause했다가 다시 play될때 마지막으로 pause한 부분이 노래의 어느 부분인지 기억하도록 lastPosition이라는 Number type의 variable을 만들었습니다. 0(노래의 시작부분)을 첫 값으로 줍니다.

function startSong( event:MouseEvent ):void
{     
      sc = song.play( lastPosition );

      startButton.visible = false;
      stopButton.visible = true;
}
startSong funtion(함수)가 불려지면 lastPosition에서부터 노래를 play하구 startButton을 가리구 stopButton을 보이게 합니다.

function stopSong( event:MouseEvent ):void
{
      lastPosition = sc.position;
      sc.stop();

      stopButton.visible = false;
      startButton.visible = true;

stopSong function이 불려지면 지금 나오고있는 노래의 부분의 값을 lastPosition에 저장하구 바로 노래를 멈춥니다. 그리구 stopButton을 가리구 startButton을 보여줍니다.

startButton.addEventListener( MouseEvent.CLICK, startSong);
stopButton.addEventListener( MouseEvent.CLICK, stopSong);

그리고 각 버튼에 startSong function과 stopSong function을 버튼을 클릭했을시 불려지도록 해줍니다.

Outro
그리구 버튼은 원하시는 디자인으로 두개 만드시고 저같은 경우엔 같은자리에 두개다 둠으로써 startButton이사라지면 그자리에 stopButton이 생기는 식으로 하였습니다. 각 버튼들의 instance name도 코드에 쓰여진 버튼이름과 같게 하여주시는걸 까먹지 마세요!

마지막으로! 음.. 이렇게 library로 import한후에 swf에 자체저장을 하고 play pause play이렇게 하면 Flash가 Sound를 읽는 방법에서 문제로인해 정확히 멈춘부분에서 시작하지 않고 0~2초내지 앞부분 또는 뒷부분에서 시작하는 경우가 많은데요. 이것은 Adobe에서 고쳐줬으면 할 부분으로 아직 유저가 코드로 고칠수 없는 부분인듯 하네요.. 하지만 같은 폴더에 노래를 저장하고 외부적으로 불러오기 방법을 쓰신다면 정확히 멈춘부분에서 다시 시작을 하는데 이러면 인터넷에 올려보지는 않아서모르겠지만 친구에게 보내서 보여준다거나할때 노래를 같이 보내줘야하는 단점이 생깁니다. 혹시 SoundChannel 을 쓰지않고 자체 저장에서 고칠수있는 방법을 아시면 댓글로 가르쳐주시면 감사하겠습니다!

이히히
            


글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!