만든 동요를 Flash+ActionScript 3.0으로 웹
상에서 들을 수 있게 만들다.
* 플레이 버튼을 마우스로 클릭하면 노래가 연주되고 연주중 다시 버튼을 클릭하면 노래가
중단됨.
* 노래 연주중 미쿠도 움직이게 처리. 노래가 멈추면 미쿠도 멈춤.
* 노래가 모두 연주되면 버튼이 연주중에서 비연주중 모드로
변경된다 -Sound를 직접 play 않고 SoundChannel에 넣어 간접적으로 play하며
channel.addEventListener(Event.SOUND_COMPLETE, musicEnd);
로 연주가 끝날 경우 이벤트를 발생하게 하여 처리.
|
import flash.events.MouseEvent;
import flash.media.Sound;
var snd:Sound = new akaSora();
var channel:SoundChannel=new SoundChannel(); //사운드 위치 기록용
var nowPlay:Boolean = false; //현재 음악 연주중인지 여부 체크용
function init(){
aniM.gotoAndStop(1); //전체 애니 멈추기
aniM.shadow.gotoAndStop(1); //애니속 그림자 애니 멈추기
aniM.miku.mikuIn.gotoAndStop(1); //애니속 미쿠 애니 멈추기
playBut.addEventListener(MouseEvent.MOUSE_DOWN, mClicked);
playBut.addEventListener(MouseEvent.MOUSE_OVER, mOver);
playBut.addEventListener(MouseEvent.MOUSE_OUT, mOut);
}
function mClicked(e:MouseEvent){
if(!nowPlay){ //현재 음악 연주 중이 아니면
musicStart(null);
}else{ //현재 음악 연주 중이면
musicEnd(null);
}
}
function musicStart(e:Event){ //음악 플레이시 처리
trace("musicStart!!!");
//snd.play(); //직접적인 방법. 여기선 우회적으로 channel에 넣어 실행
channel=snd.play(channel.position); //음악 재생 시작
nowPlay = true;
playBut.gotoAndStop(3);
playBut.x = 485, playBut.y = 75;
yFilter.x = -1000;
aniM.gotoAndPlay(1);
aniM.shadow.gotoAndPlay(1);
aniM.miku.mikuIn.gotoAndPlay(1);
//음악이 끝날 경우를 위한 이벤트 처리용
channel.addEventListener(Event.SOUND_COMPLETE, musicEnd);
}
function musicEnd(e:Event){ //음악 종료시 처리
trace("musicEnd!!!");
channel.stop(); //음악 멈추기
nowPlay=false;
playBut.gotoAndStop(1);
aniM.gotoAndStop(1);
aniM.shadow.gotoAndStop(1);
aniM.miku.mikuIn.gotoAndStop(1);
}
function mOver(e:MouseEvent){ //버튼 위에 마우스 오버시 처리
if(!nowPlay){playBut.gotoAndStop(2);}else{playBut.gotoAndStop(4);}
}
function mOut(e:MouseEvent){ //버튼에서 마우스 아웃시 처리
if(!nowPlay){playBut.gotoAndStop(1);}else{playBut.gotoAndStop(3);}
}
init();
|