同时播放2个声音

Cha*_*kha 8 c# .net-3.5

为任何笔记本电脑设计游戏:

我想同时播放2个声音!按下按钮时的背景音乐和声音!

使用System.Media将不允许我一起播放2个声音.对于背景音乐,我使用了以下内容:

SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav");
sp.Play;
Run Code Online (Sandbox Code Playgroud)

如果我玩另一个SoundPlayer,前一个停止!

我想要背景音乐继续播放,直到表格关闭!同时,如果单击一个按钮,音乐将播放另一个声音!

我还尝试将Windows Media Player添加到工具箱中并使用它(允许我同时播放2个声音).这工作正常,但如果我把它放在路径将会出错(@""..\..\bin\debug\tribal dance.wav"); ,我需要这样说,以便被任何计算机读取.

有什么建议?

Mer*_*OWA 6

您无法使用SoundPlayer一次播放两种声音.

SoundPlayer使用原生的WINAPI PlaySound功能来完成不支持播放同步声音的任务.创建SoundPlayer的多个实例无济于事.

有很多选项,其中大部分涉及为窗口的本机音频DirectSound实现大量低级API (注意既不是C#也需要很多互操作代码)

最简单的选择是依靠Windows媒体播放器为您播放音频.

添加对"C:\ Windows\System32\wmp.dll"的引用

然后用

var player = new WMPLib.WindowsMediaPlayer();
player.URL = @"..\..\bin\debug\tribal dance.wav";
Run Code Online (Sandbox Code Playgroud)

注意:设置URL属性后立即开始播放

这种方法的缺点是您依赖媒体播放器来使您的应用程序正常工作.在好的方面,您可以使用任何文件格式的媒体播放器支持.


小智 -4

http://msdn.microsoft.com/en-us/library/dd562851%28v=VS.85%29.aspx本文可能会有所帮助如果您需要文件的绝对路径,您可以使用下一个代码

string soundFile = Path.Combine(Directory.GetCurrentDirectory() + "file.wav");
Run Code Online (Sandbox Code Playgroud)