我的项目是构建一个简单的游戏,现在我只用5个按钮制作了Main Menu Form1
。这些按钮上有一个MouseClick
和MouseEnter
,我有一个使用WMP方法(使用WMPLib和axWMPLib)的背景音乐曲目。
我的问题是,当我将bin/debug
放入rar
文件并将其提供给我的 friend 时,他们说他们听不到声音。我使该项目通过WMP版本11,所以我问他们的WMP版本是否为11,他们说是。我不知道为什么我在计算机上听到了声音,却听不到。
我试图给他们文件夹:
bin\Release
bin\Debug
x86\Release
x86\Debug
但是他们仍然说他们听不到所有人的声音。
编辑
我所有的声音都在一个名为“声音”的文件夹中。我发现了一些细节,发现需要将这些WMP声音嵌入到“资源”中。
那么我该怎么做,以及在
Form1
加载后如何调用它们。不,下面的代码不起作用:BackGround.URL = Properties.Resources.Invincible;
它说我不能将
System.IO.UnmanagedMemoryStream
转换为String
。 最佳答案
真诚的建议您不要使用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