2012-01-19 66 views
-2

如何使多個按鈕一次播放一個不同的聲音,並且使用Windows Phone XNA框架具有常見的停止按鈕?播放聲音時,應循環播放,直至遇到停止按鈕或點擊另一個按鈕。使用多個按鈕播放多個聲音

我使用SoundEffectCreateInstance的方式,它循環播放並且播放良好,但是當第二個按鈕被點擊時,第二個聲音會與第一個聲音一起播放。還需要幫助創建常用停止按鈕。提前致謝。

我正在嘗試類似下面的每個按鈕。

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    var stream = TitleContainer.OpenStream("Sounds/A3.wav"); 
    var effect = SoundEffect.FromStream(stream); 
    SoundEffectInstance instance = effect.CreateInstance(); 
    instance.IsLooped = true; 
    instance.Play(); 

但由於創建的實例不在程序範圍內,因此無法創建常用停止按鈕。

我是編程初學者。感謝您的理解。

+1

你能展示一個你的代碼的例子,所以我們可以看到你的嘗試? –

回答

0

您可以將成員變量添加到您的類和一些輔助方法:

public class YourClass 
{ 
    private SoundEffectInstance currentSoundEffect = null; 

    private void StopCurrentSoundEffect() 
    { 
     this.currentSoundEffect.Stop(); 
     this.currentSoundEffect = null; 
    } 

    private void PlaySoundEffect(string fileName) 
    { 
     this.StopCurrentSoundEffect(); 
     using (var stream = TitleContainer.OpenStream("Sounds/A3.wav")) 
     { 
      var soundEffect = SoundEffect.FromStream(stream); 
      this.currentSoundEffect = soundEffect.CreateInstance(); 
      this.currentSoundEffect.IsLooped = true; 
      this.currentSoundEffect.Play(); 
     } 
    } 
} 

現在,每個事件處理程序只需調用this.PlaySoundEffect與所需的文件名。