2013-11-25 3 views
0

마우스 롤오버 이벤트가있는 노래의 5 초 클립을 재생하는 버튼이 있습니다. 나는 그것을 뒤집을 때마다 계속해서 노래를 연주하길 원하지만 나는 소리를내는 법을 이해할 수 없다.AS3에서 사운드 재생

var songOne:Song1 = new Song1(); 
var SongOneChannel:SoundChannel; 
var soundPlaying:Boolean=false; 

stop(); 
btnOne.addEventListener(MouseEvent.ROLL_OVER,playSongOneFunction); 
function playSongOneFunction(event:MouseEvent):void 
{ 
if(soundPlaying==false) 
{ 
    SongOneChannel = songOne.play(); 
    trace("Did the Sound just start playing?"); 
    soundPlaying=true; 
} 
} 
+0

5 초 안에 버튼을 한 번 이상 빠르게 롤오버하면 어떻게됩니까? – Vesper

+0

사운드를 반복 할 수없는 유일한 문제는 무엇입니까? 누군가가 버튼에서 굴러 떨어졌을 때, 멈추어야합니까? 다음 번에 롤오버 할 때, 중단 한 부분부터 재생을 재개해야합니까? 더 자세한 정보를 제공해야하거나 원하는 대답을 얻지 못할 수도 있습니다. (그리고 사람들의 시간을 낭비 할 것입니다.) – prototypical

+0

내가해야 할 일은 누군가가 버튼을 굴릴 때마다 노래가 재생되지만 멈추었을 때만 재생된다는 것입니다. 나는 그 자체로는 연주하고 싶지 않지만 누군가가 버튼을 굴려서 연주를 멈췄을 때 다시 연주해야합니다. – user3029940

답변

0

그냥 SongOneChannel SoundComplete에 리스너를 추가 : 여기에 지금까지 내 코드입니다. 청취자 기능에서 사운드 재생을 갱신하십시오.

0

soundPlayingfalse으로 재설정되지 않으므로 다음 번에 버튼을 롤오버하면 if 문을 입력하지 않습니다.

어느 @ Dub4ek에서 알 수 있듯이 수행하고 soundPlaying를 재설정 할 수 있습니다, 또는 당신이 정말 필요하지 않는 한, 완전히 체크를 제거 있도록 soundComplete 이벤트를 추가 - 당신이 songOne.play()를 호출 할 때마다, 새로운 SoundChannel가 발생, 그래서 당신은 그 자체로 소리를 재생할 수 있습니다 (원하는 행동 인 경우).

function playSongOneFunction(event:MouseEvent):void 
{ 
    songOne.play(); 
} 
+0

지금까지 도와 줘서 고마워요. 하지만 한 번에 한 번만 재생할 수있는 방법이 있는지 궁금합니다. 소리가 멈 추면 다시 시작됩니다. – user3029940

+0

한 번만 재생하려면 위의 부울 솔루션을 좋게 설정해야합니다. 'soundPlaying' bool을 재설정하면됩니다. 사운드 리스너를 추가하고 거기에 리셋합니다 (리스너를'PlaySongOneFunction' 외부에 추가합니다. 그렇지 않으면 매번 새 리스너를 추가합니다) – divillysausages