我试图使用SoundPlayer类(每次模拟打字机声音)每次按下按键时播放打字声音。
public void MyKeyDown(object sender, KeyEventArgs)
{
player = new System.Media.SoundPlayer(@"f:\sounds\2.wav");
player.Play();
}
只要您每分钟输入大约20个单词,它就可以正常工作。任何比这快的速度,声音都不会完全播放,甚至完全停止播放,直到您放慢速度
2.wav是一个8kb的声音文件,持续时间为0.1秒,因此,仅根据声音持续时间,该文件就可以每分钟完整播放600次(键入速度约为90 wpm)。
有没有更快的播放声音文件的方法,还是其他地方的问题?
最佳答案
这样,您将在每个KeyDown上创建一个SoundPlayer的新实例,然后每次都需要从光盘重新加载相同的样本。 SoundPlayer类具有一个构造函数,该构造函数将声音文件的位置作为参数。在这种情况下,您可以重复使用SoundPlayer实例,并且文件将缓存在内存中。我可以想象这会更快。
这样的事情应该可以解决问题:
private SoundPlayer soundPlayer;
// Call this on App Startup / Initialization...
private void InitializeSoundPlayer()
{
this.soundPlayer = new SoundPlayer("sound.wav");
}
public void MyKeyDown(object sender, KeyEventArgs)
{
this.soundPlayer.Play();
}
就我而言,这种方法更加流畅。