使用多个按钮播放多种声音

本文关键字:声音 播放 按钮 | 更新日期: 2023-09-27 18:20:59

如何使用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();

但是,由于创建的实例不是程序级的,我在创建一个通用的停止按钮时遇到了问题。

我是编程初学者。感谢您的理解。

使用多个按钮播放多种声音

您可以向类和一些辅助方法添加成员变量:

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