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