我有一些Windows Phone 7代码,可以使用SoundEffect.FromStream开始播放声音。我正在使用它而不是普通的媒体对象,因为我需要在一页上有多个音频剪辑。
但是,基于某些外部事件,我想停止特定的声音播放。由于通过开放流播放的声音是“玩耍和忘记”,我无法弄清楚如何引用这种播放声音并将其停止。
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;
}
}
答案 0 :(得分:11)
您需要创建一个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();