为任何笔记本电脑设计游戏:
我想同时播放2个声音!按下按钮时的背景音乐和声音!
使用System.Media
不允许我一起播放2个声音。对于背景音乐,我使用了以下内容:
SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav");
sp.Play;
如果我播放了另一个SoundPlayer
,则前一个停止!
我想让背景音乐继续播放,直到表格关闭!同时,如果单击一个按钮,音乐将播放另一个声音!
我还尝试将Windows Media Player添加到工具箱并使用它(允许我同时播放2个声音)。这工作正常,但如果我把它(@""..\..\bin\debug\tribal dance.wav");
,路径将会出错
我需要这样说才能被任何计算机阅读。
有什么建议吗?
答案 0 :(得分:6)
使用SoundPlayer无法一次播放两种声音。
SoundPlayer正在使用本机WINAPI PlaySound功能来完成不支持播放同步声音的任务。创建SoundPlayer的多个实例无济于事。
有很多选项,其中大部分涉及为窗口的本机音频library或DirectSound实现大量低级API(注意既不是C#也需要很多互操作代码)
最简单的选择是依靠Windows媒体播放器为您播放音频。
添加对“C:\ Windows \ System32 \ wmp.dll”
的引用然后使用
var player = new WMPLib.WindowsMediaPlayer();
player.URL = @"..\..\bin\debug\tribal dance.wav";
注意:设置URL属性后立即开始播放
这种方法的缺点是您依赖媒体播放器来使您的应用程序正常工作。从好的方面来说,您可以使用媒体播放器支持的任何文件格式。
答案 1 :(得分:0)
使用(WMPLib)Windows Media Player库,您可以轻松地做到这一点。将您的文件保存在Debug / Sound文件夹中,并遵循以下代码。这将同时运行2个文件。要在项目中添加WMPLib,请通过NuGet软件包管理器将其添加。
bus
答案 2 :(得分:-3)
http://msdn.microsoft.com/en-us/library/dd562851%28v=VS.85%29.aspx这篇文章可能有所帮助 如果您需要文件的绝对路径,可以使用下一个代码
string soundFile = Path.Combine(Directory.GetCurrentDirectory() + "file.wav");