我的项目是构建一个简单的游戏,现在我只用5个按钮制作了Main Menu Form1。这些按钮上有一个MouseClickMouseEnter,我有一个使用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
    

    10-07 13:54