使用多个按钮播放多种声音
本文关键字:声音 播放 按钮 | 更新日期: 2023-09-27 18:20:59
如何使用Windows Phone XNA框架使多个按钮一次播放不同的声音并有一个通用的停止按钮?当播放一个声音时,它应该循环播放,直到有人按下停止按钮或按下另一个按钮。
我用SoundEffect
和CreateInstance
的方式,它循环播放得很好,但当点击第二个按钮时,第二个声音开始和第一个一起播放。还需要帮助创建通用停止按钮。提前非常感谢。
我试着为每个按钮做如下的操作。
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
。