我有一些Windows Phone 7代码,使用SoundEffect.FromStream开始播放声音。 我正在使用这个,而不是一个正常的媒体对象,因为我需要多个audio剪辑在一个页面上。
但是,基于某些外部事件,我想停止播放特定的声音。 由于通过开放stream播放的声音是“播放和忘记”,我不能工作如何引用这个播放声音,并停止它。
public void PlaySoundCircus(object sender, RoutedEventArgs e) { if (audioPlaying == false) { using (var stream = TitleContainer.OpenStream("circus.wav")) { var effect = SoundEffect.FromStream(stream); FrameworkDispatcher.Update(); effect.Play(); } audioPlaying = true; } }
您需要创建一个SoundEffectInstance ,它将存储对SoundEffect
的引用。 SoundEffectInstance
有一个可以调用的Stop
方法。
SoundEffectInstance seiCircus; using (var stream = TitleContainer.OpenStream("circus.wav")) { var effect = SoundEffect.FromStream(stream); //create the instance seiCircus = effect.CreateInstance(); FrameworkDispatcher.Update(); //play sound via the instance seiCircus.Play(); } //some event called to stop sound seiCircus.Stop();