2012-10-23 61 views
0

我在表單項目中工作並在某些方法和事件中播放一些聲音。 例如,在一個方法我有這樣的一個:如何在沒有每次創建新玩家的情況下播放聲音

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

sndplayrONE.Play(); 

在一個又一個,我有這樣的:

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

sndplayrTWO.Play(); 

我要的是在beggining創建只有一個聲音播放類的實例形式的代碼,類似

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

,然後從任何情況下調用它,就像

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

等等

從來就看到了一些類似的構造或SoundPlayer(Stream)SoundPlayer(String),但我不明白任何這些。我需要一些簡單而容易的事情,就像我以前那樣做,但每次我想要播放聲音時都不會創建新實例。我有所有的聲音嵌入在Resources.resx中。

+1

是否真的*,*你的工作很多,每次創建一個新的實例? – Servy

+0

它不只是工作,但也可以聲稱效率和代碼的氣味 –

回答

0

退房這裏的信息:MSDN SoundPlayer Class (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(); 
相關問題