2013-11-01 4 views
1

내 Windows Phone 앱에서 부팅 할 때와 유사한 짧은 .wav 오디오를 재생하고 싶습니다. 처음에는 내 컨트롤 중 하나가로드되었을 때 이벤트 처리기를 사용했습니다. (시간의 약 60 %를 처리했습니다. 매우 흥미 롭습니다. 누군가 그 것을 정리할 수도 있습니다. 순서와 관련 있다고 생각합니다. 일이로드되기 때문에 그 이유가 다릅니다. 난 비주얼 스튜디오 궁극적 인 2012을 사용하고 있는데,이 .wav 파일에 대한 내 XAML 코드 :앱 시작시 소리 재생 방법

<MediaElement x:Name="MySound" 
          Source="/quantum_drive.wav" 
          Volume="1" 
          AutoPlay="false" 
          /> 

내가 또한 단지이 메소드를 호출하려고 한 경우 메인 페이지가로드 :

private void MainPage1_Loaded(object sender, RoutedEventArgs e) 
    { 
     MySound.Play(); 
    } 

웬일인지 이것은 시간의 60 % (겉으로보기에는 무작위로)에 단지 작용한다, 이것이 왜?! 이것은 전화 애플 리케이션에서하고 싶은 공통점처럼 보이지만 아직 stackoverflow 또는 Google 검색에 대한 모든 정보를 찾을 수 없습니다.

답변

0

미디어 요소를 사용하여 수행하려는 작업을 수행하지 마십시오. 그것은 음향 효과를 위해 버기위한 것입니다. 이는 사용자 상호 작용 미디어를위한 것입니다. 대신

, 다음을 수행하십시오 (you can the full article here)

using Microsoft.Xna.Framework.Audio; 

using Microsoft.Xna.Framework.Media; 

using Microsoft.Xna.Framework; 

static Stream stream1 = TitleContainer.OpenStream("soundeffect.wav"); 

static SoundEffect sfx = SoundEffect.FromStream(stream1); 

static SoundEffectInstance soundEffect = sfx.CreateInstance(); 

이제 당신의로드 방법에서 플레이 사운드를 호출

public void playSound(){ 

    FrameworkDispatcher.Update(); 

    soundEffect.Play(); 

} 
+0

나는 네임 스페이스 "XNA는"존재하지 않는 것을 말한다 네임 스페이스를 추가 할 때 Microsoft 네임 스페이스 Windows 전화 8.0에만 해당됩니까? 7.1을 대상으로하는 Windows Phone App으로 구축했습니다. – slinhart

+0

이것이 의미하는 바는 솔루션에 대한 참조를 추가해야한다는 것입니다. http://msdn.microsoft.com/en-us/library/vstudio/wkze6zky.aspx –

+0

Gotcha. 그래서이 코드를 구현했는데, 현재 무슨 일이 일어나고 있는지는 내가 처음으로 앱을 실행할 때 (에뮬레이터가 닫히기 전에 닫혀서 소리를 내야한다는 것입니다.); 하지만 나중에 (에뮬레이터를 닫지 않고) 매 시간마다 사운드를 재생합니다. 실제로 mediaElements와 동일한 종류의 버그 무작위성을 갖는 것으로 보입니다. 왜 이런거야? 또한, 나는 키워드에서 "정적"키워드를 제거해야했다, 컴파일러는 그것에 대해 불평했다. – slinhart