0

私のプロジェクトは、単純なゲームを構築することです。今のところForm1、5 つのボタンを備えたメイン メニューのみを作成しました。ボタンにはMouseClickMouseEnterがあり、WMP メソッド (WMPLib と axWMPLib を使用) を使用したバックグラウンド ミュージック トラックがあります。

私の問題は、bin/debugそれをファイルに入れてrar友人に渡すと、音が聞こえないということです。私はこのプロジェクトを WMP バージョン 11 で作成したので、彼らに WMP バージョンが 11 かどうか尋ねたところ、彼らは「はい」と答えました。コンピューターで音が聞こえるのに聞こえない理由がわかりません。

私は彼らにフォルダを与えようとしました:

  • bin\Release
  • bin\Debug
  • x86\Release
  • x86\Debug

しかし、彼らはまだ、すべての音を聞くことができないと言いました。

編集

すべてのサウンドは「Sounds」というフォルダにあります。いくつかの詳細を見つけたところ、これらの WMP サウンドを「リソース」に埋め込む必要があることがわかりました。

Form1では、どうすればそれを行うことができ、ロード時にどのように呼び出すことができますか。いいえ、次のコードは機能しません。

BackGround.URL = Properties.Resources.Invincible;

に変換できませんと表示System.IO.UnmanagedMemoryStreamされStringます。

4

1 に答える 1

1

WMPの使用はお勧めしませんので、SoundPlayerクラスをご覧ください。ただし、ファイルに正しい場所を指定していないことが問題だと思います。できることは、アプリケーション フォルダでファイルを見つけ、その場所を取得して、音楽ファイルの場所を作成することです。

だから試してください:

string musicName = Application.StartupPath + "music.mp3";

または、アプリケーション パスにSoundsフォルダがある場合は、次を使用します。

string musicName = Application.StartupPath + "\\Sounds\\music.mp3";

それ以外の場合は、音楽ファイルをアプリケーション リソースに挿入すると、次のようになります。

BackGround.URL = Properties.Resources.Invincible;

は音楽ファイル ストリームであるのBackGround.URLに対し、 は文字列型であるため、機能しませんでした。Properties.Resources.Invincible

WMPを使用して、ファイルを再生できる場所からストリームを設定できるかどうかはわかりません。以前にリンクしたSoundPlayerクラスには、入力ストリームを設定できるプロパティが含まれています。次の方法で実行できます。

SoundPlayer mySoundPlayer = new SoundPlayer();
mySoundPlayer.Stream = Properties.Resources.Invincible;
mySoundPlayer.Load();
mySounPlayer.Play(); //plays the Properties.Resources.Invincible sound
于 2012-09-28T20:30:57.080 に答える