0

私はフォームプロジェクトで作業していて、いくつかのメソッドやイベントでいくつかのサウンドを再生しています。たとえば、メソッドには次のようなものがあります。

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

sndplayrONE.Play();

別のものでは、私はこれを持っています:

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

sndplayrTWO.Play();

私が欲しいのは、フォームコードの最初にsoundplayerクラスのインスタンスを1つだけ作成することです。

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

そして、次のような任意のイベントからそれを呼び出します

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

等...

SoundPlayer(Stream)またはのようないくつかのコンストラクターを見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 に答える