用什么来为wp7在silverlight中播放音效

时间:2011-06-02 19:23:52

标签: c# silverlight windows-phone-7 audio effect

我知道我可以为SoundEffect类引用XNA,这就是我到目前为止所做的事情,但我想知道是否有比我一直做得更好的方法。

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

using (var stream = TitleContainer.OpenStream("test.mp3"))
{
          var effect = SoundEffect.FromStream(stream);
          FrameworkDispatcher.Update();
          effect.Play();
}

对于我的测试应用程序,每按一次按钮,我就会播放20个声音。我正在玩不同的技术,但如果可能的话,我想知道专业人士在制作基于声音效果的应用程序之前是如何做到这一点的。诸如首先加载声音效果或将按钮按下的实例加载的小事情将会有所帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

我认为一个很好的例子就是AppHub上的官方样本。它演示了如何播放多个声音。您可以直接从here下载示例。

  

此示例演示了如何使用   XNA Framework的SoundEffect和   SoundEffectInstance类要播放   a。同时发出多个声音   适用于Windows的Silverlight应用程序   电话。它还显示了一种简单的方法   设置DispatchTimer来调用   FrameworkDispatcher.Update以便   模拟XNA的游戏循环   框架的内部。最后,它   显示如何加载wave音频文件   进入可以播放的流   SoundEffect类。

答案 1 :(得分:2)

如果我是你,我会使用PhoneyTools SoundEffectPlayer

  

此类用于播放SoundEffect   使用XNA集成的对象。该   球员必须活得足够长   声音效果发挥所以很常见   让它在方法之外的范围。   例如:

public partial class MediaPage : PhoneApplicationPage
{
  // ...

  SoundEffectPlayer _player = null;

  private void playButton_Click(object sender, RoutedEventArgs e)
  {
    var resource = Application.GetResourceStream(new Uri("alert.wav", UriKind.Relative));
    var effect = SoundEffect.FromStream(resource.Stream);
    _player = new SoundEffectPlayer(effect);
    _player.Play();

  }
}