2011-02-25 2 views
1

나는 griddle_mc, bacon_mc 및 BaconCooking.wav가 있습니다. 나는 베이컨이 철판에 옮겨 질 때 wav를 연주하고 싶다. 내가 베이컨을 움직이면서 방금 철판에 닿으면 wav가 잘 작동하지만, 계속해서 철판에 bacon_mc를 드래그하면 wav가 커지고 왜곡되어 거의 동시에 wav의 여러 인스턴스를 재생하는 것과 같습니다.액션 스크립트 3 - 개체가 터치 될 때 한 번만 소리가납니다.

private function __handleSliceDown($evt:MouseEvent):void { 
    slice1_mc.startDrag(true); 
} 

private function __handleSliceUp($evt:MouseEvent):void { 
    slice1_mc.stopDrag(); 
    addEventListener(Event.ENTER_FRAME, __checkHit);  
} 

private function __checkHit($evt:Event):void { 
    if (this.slice1_mc.hitTestObject(griddle_mc)) { 
     if (!hitting) { 
      sc = BaconCooking.play();  
     } 
    } 
} 

어떻게하면 제대로 재생할 수 있습니까?

편집 :

private function __checkHit($evt:Event):void { 
      if (this.slice1_mc.hitTestObject(griddle_mc)) {  
       if(isPlaying){ 
        sc = BaconCooking.play(); 
        isPlaying = true; 
       } 
      }else{ 
       isPlaying = false; 
       sc.stop(); 
        } 
      } 
  • isPlaying는 기본적으로 false로 부울 세트입니다.

답변

0

편집 : 기본적으로 isPlaying은 false이므로 처음에는 소리가 재생되지 않습니다. 당신의 if 문은 다음과 같아야합니다 또한

if(!isPlaying){ 
<code to play sound 
} 

, 내가 전에이에 감동,하지만 난 확장됩니다 : 당신이 객체가 -not- 접촉이있을 때 감지 추가 이벤트 리스너를해야 그는 사용자가 설정 한 것이다 호출 될 때 isPlaying를 false로 설정합니다. 내가 Actionscript에서 프로그래밍 한 이후로 어느 정도 시간이 지났지 만, 그것은 당신이해야 할 일에 대한 일반적인 생각입니다.

변수와 조건문을 사용하십시오. 객체가 충돌 할 때마다이 변수가 true인지 확인합니다. 만약 그렇다면 소리를 내고 변수를 참으로 설정하는 것보다 그렇지 않으면 아무것도하지 않을 것입니다. 객체가 더 이상 만지지 않으면 변수보다 false로 설정됩니다.

+0

나는 약간의 편집을했지만 올바르게 작동하지 않습니다. 지금은 소리가 전혀 재생되지 않습니다. – RapsFan1981

+0

감사합니다. :) – RapsFan1981

1

이제 if(isPlaying){이되었지만 if(!isPlaying){이 아니어야합니까?

나는 그것을 할 것입니다 : 두 개체 hittest, false로 설정하고 소리를 재생하는 경우 true로 isPlaying 부울을 설정하십시오. 객체가 더 이상 충돌하지 않으면 isPlaying 부울은 거짓이 될 수 있습니다.

관련 문제