2011-06-02 79 views
5

我知道我可以引用SoundNffect類的XNA,這就是我迄今一直在做的事情,但我想知道是否有比我更好的方法這樣做。什麼用於在Silverlight中爲wp7播放聲音效果

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個聽起來每次1秒長,我想一旦按鈕被按下播放。我正在玩各種不同的技術,但如果可能的話,我想知道專業人員如何在製作基於聲音效果的應用程序之前執行此操作。一些小東西,比如先加載聲音效果或者加載它按下按鈕的實例會有幫助。

謝謝。

+0

你檢查的MediaElement? – Shanadas 2011-06-02 20:59:23

+0

我確實在MediaElement上做過一些閱讀,並且他們不建議將它用於簡短的聲音,而是使用諸如背景音樂之類的長音軌。 – Tom 2011-06-02 22:00:31

+0

我認爲soundeffect除了一個wav文件流不是MP3 – Gluip 2012-01-21 22:28:47

回答

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(); 

    } 
} 
+0

我試着用phoneytools同時播放4種不同的聲音,它仍然滯後我也試過了下面的帖子中的例子,它也做了同樣的事情。我不知道爲什麼我得到這個滯後。在模擬器和手機上。 – Tom 2011-06-05 01:34:49

2

我認爲一個很好的例子是AppHub的官方樣本。它演示瞭如何播放多個聲音。您可以直接從here下載樣本。

此示例演示瞭如何使用 由XNA Framework的SoundEffect中和 SoundEffectInstance類爲Windows 手機 Silverlight應用程序同時播放多個 聲音。它還顯示了一個簡單的方法,以 設置一個DispatchTimer來調用 FrameworkDispatcher.Update,以便 模擬XNA的遊戲循環 框架的內部。最後,它 顯示瞭如何將波形音頻文件 加載到SoundEffect類可以播放的流中。