0

我正在一个表单项目中工作,并在某些方法和事件中播放一些声音。例如,在一种方法中,我有这个:

SoundPlayer sndplayrONE = new SoundPlayer(Properties.Resources.wavsound1);

sndplayrONE.Play();

在另一个中,我有这个:

SoundPlayer sndplayrTWO = new SoundPlayer(Properties.Resources.wavsound2);

sndplayrTWO.Play();

我想要的是在表单代码的开头只创建一个声音播放器类的实例,比如

SoundPlayer sndplayr = new SoundPlayer(--some generic input---)

然后从任何事件中调用它,比如

sndplayr2.Play(sound1); sndplayr2.Play(sound2); sndplayr2.Play(sound3);

ETC...

我见过一些类似SoundPlayer(Stream)or的构造函数SoundPlayer(String),但我不明白其中的任何一个。我需要一些简单的东西,就像我以前做的那样,但每次我想播放声音时都不需要创建一个新实例。我在 Resources.resx 中嵌入了所有声音。

4

2 回答 2

2

使用不同的构造函数

http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx

System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer();
myPlayer.SoundLocation = @"c:\click.wav";
myPlayer.Play();
于 2012-10-23T15:28:43.760 回答
0

在此处查看信息:MSDN SoundPlayer 类 (System.Media)

看起来您可以通过设置 SoundLocation 属性然后执行 Load() 或 LoadAsync() 来更改特定播放器将播放的声音。

然而,明智的做法是制作像字典一样的东西,将一些您认为与当前上下文相关的 SoundPlayer 对象放入其中。就像是:

Dictionary<string, SoundPlayer> sounds;

// Load sounds

// I wouldn't hardcode strings here, use constants or something. This is just an example.
sound["Sound1"].Play();
于 2012-10-23T15:30:34.333 回答