如何在不每次创建新玩家的情况下播放声音



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

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

在另一个,我有:

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

我想要的是在表单代码开始时仅创建一个Soundplayer类的实例,例如

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

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

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

等...

我看到了一些构造函数,例如SoundPlayer(Stream)SoundPlayer(String),但我不明白其中任何一个。我需要简短而简单的事情,例如我过去的方式,但是每次我想播放声音时都没有创建新实例。我所有的声音都嵌入在资源中。resx。

使用其他构造函数

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();

在此处查看信息:msdn soundplayer class(system.media)

看起来您可以通过设置soundlocation属性然后进行load()或loadAsync()()。

来更改特定播放器会播放的声音。

但是,制作类似于字典的东西可能是明智的选择,将许多声音播放器对象放置在您认为与当前上下文相关的情况下。类似:

Dictionary<string, SoundPlayer> sounds;
// Load sounds
// I wouldn't hardcode strings here, use constants or something. This is just an example.
sound["Sound1"].Play();

相关内容

  • 没有找到相关文章

最新更新