2010-02-04 5 views
4

큐를 중지하고 다시 재생하려고합니다. 이 코드는 업데이트() 루프에 있습니다C# XNA : 큐 (사운드) 개체 중지 및 재생

Cue torpedoSound = soundBank.GetCue("torpedo"); 
torpedoSound.Stop(AudioStopOptions.AsAuthored); 
torpedoSound.Play(); // Invalid Operation Exception 

그러나, 나는 항상 위의 위치에서 InvalidOperationException를 얻을. 문서에 Play()이 에서 호출되고 isPlaying이 참일 경우 발생합니다. 하지만 바로 전에 Stop()으로 전화하면 어떻게 될 수 있습니까?

이 잘 작동 :

soundBank.PlayCue("torpedo"); 
torpedoSound.Stop(AudioStopOptions.Immediate); 

이 그것을들을 수 결코해서는 안 :

soundBank.PlayCue("torpedo"); 

나를 놀라게하는, 즉 어쨌든 연주 소리를 할 수 있습니다 직후 Stop()에 전화 걸기 사용자에게?

또한 소리가 이미 재생 중이면 Stop()을 호출하면 소리가 멈추지 않습니다.

저는 C#/XNA를 처음 사용합니다.

+0

나는 이해하지 못한다. 이미 멈췄을 때 Stop이라고 부르는 이유는 무엇입니까? 그럼 너는 그걸로 놀고있어 그만하고 싶어한다고 말하면 그만하고 싶어? 설명해주세요. – Amirshk

+0

소리가 들리지 않습니다.하지만 안전을 위해'Stop()'을 부릅니다. 그러나 어쨌든, 그것은 마치 나에게 마치 놀고있는 것처럼 예외를줍니다. –

답변

2

큐가 중지되면 더 이상 사용할 수 없습니다. 오디오 엔진에서 새로운 큐 인스턴스를 얻어야합니다.

이 샘플을 참조하십시오 : 당신이 중지를 호출 할 때 정지에 관한 이 http://msdn.microsoft.com/en-us/library/dd940205.aspx

, 큐 즉시 중지하지 않습니다. 종료 전환이 정의되어 있으면 프레임 하나 또는 둘 이상이 걸릴 수 있습니다.