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

时间:2012-01-19 15:18:24

标签: c# windows-phone-7 xna

如何让多个按钮一次播放一个不同的声音并使用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 :(得分: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