一次播放一个声音

时间:2014-11-24 10:02:07

标签: c# audio windows-phone-8 windows-phone-8.1

我正在建立一个Windows Phone 8 / 8.1应用程序,其中包括播放声音,我正在做的方式是一旦按下按钮,它会启动事件并运行此代码:

StreamResourceInfo info = Application.GetResourceStream(new Uri("Assets/Sound/DO_converted.wav", UriKind.Relative));
SoundEffect sound = SoundEffect.FromStream(info.Stream);
SoundEffectInstance instance = sound.CreateInstance();
instance.Play();

但如果我按下一个按钮,我会同时播放多个声音。 那么无论如何要阻止这种情况发生,一次播放一个声音?

电贺, JoséCorreia

2 个答案:

答案 0 :(得分:0)

计算出音效持续时间。使用队列对它们进行排队,并在当前持续时间之后有一个循环播放下一个循环。

SoundEffect具有以下属性:

public TimeSpan Duration { get; }

答案 1 :(得分:0)

所以,我也在Windows开发论坛上发布了这个问题,这是我问题的最佳解决方案:

MSDN Forum

      SoundEffectInstance instance;
private void Button1_Click(object sender, RoutedEventArgs e)
    {
                StreamResourceInfo info = Application.GetResourceStream(new Uri("Assets/Sound/test1.wav", UriKind.Relative));
                SoundEffect sound = SoundEffect.FromStream(info.Stream);
                if (instance != null)
                    instance.Stop();
                instance = sound.CreateInstance();
                instance.Play();
     }

    private void Button2_Click(object sender, RoutedEventArgs e)
    {
                StreamResourceInfo info = Application.GetResourceStream(new Uri("Assets/Sound/test2.wav", UriKind.Relative));
                SoundEffect sound = SoundEffect.FromStream(info.Stream);
                if (instance != null)
                    instance.Stop();
                instance = sound.CreateInstance();
                instance.Play();
    }