2012-01-19 14 views
-2

Windows Phone XNAフレームワークを使用して、複数のボタンを同時に1つずつ異なる音で再生し、共通の停止ボタンを使用する方法を教えてください。サウンドが再生されると、停止ボタンを押すか別のボタンを押すまでループ再生されます。複数のボタンを使用して複数の音を再生する

CreateInstanceのやり方は、ループしてうまくいきましたが、2番目のボタンをクリックすると、2番目のサウンドが最初に再生されます。また、共通の停止ボタンの作成にも助けが必要です。ありがとうございます。

ボタンごとに以下のようなものを試していました。

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を呼び出すことができます。

関連する問題