0

効果音を再生するための本当に簡単な方法があります。

private void PlaySound(string file){
   SoundPlayer sp = new SoundPlayer(@"Effects\" + file ' ".wav");
   sp.Play();

}

それから私はこれを行います:

PlaySound("音楽");

ここで、初めて PlaySound("music") が呼び出されたとき、それは再生されません。2回目以降はそうなるでしょう。

ここで何がうまくいかないのか考えていますか?

4

2 に答える 2

1

これを試して:

private void PlaySound(string file){
   using (SoundPlayer player = new SoundPlayer(@"Effects\" + file ' ".wav"))
    {
        // Use PlaySync to load and then play the sound.
        player.PlaySync();
    }
}

PlaySync を使用する理由 このプログラムで Play メソッドを呼び出すだけでは、サウンドが再生される前にプログラムが終了します。Sync は、サウンドの再生中にプログラムを一時停止する必要があることを示します。

于 2012-11-20T16:51:45.393 に答える
0

再生する前にloadメソッドを呼び出す必要があります。ファイルがまだロードされていない場合は、Playを呼び出してファイルがロードされます。これにより、ファイルが最初に再生されない理由が説明されます。

.wavファイルがメモリにロードされる前にPlayを呼び出すと、再生が開始される前に.wavファイルがロードされます。-MSDN

LoadPlaySyncの両方が現在のスレッドをブロックします。より良いオプションは、LoadAsyncを使用してファイルを非同期にロードすることです。

于 2012-11-20T16:52:34.903 に答える