2011-01-19 93 views
7

设计任何笔记本电脑的游戏:同时播放2个声音

我想同时播放2个声音!按下按钮时会出现背景音乐和声音!使用System.Media不允许我一起播放2个声音。对于背景音乐,我用了以下内容:

SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav"); 
sp.Play; 

如果我打另一个SoundPlayer,前一站!

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

我也尝试添加Windows媒体播放器到工具箱,并使用它(让我2播放2声音在同一时间)。这工作正常,但路径会给出一个错误,如果我把它(@""..\..\bin\debug\tribal dance.wav"); ,我需要把它这样才能被任何计算机读取。

有什么建议吗?

+0

可能的重复[播放wav文件异步多次与.net](http://stackoverflow.com/questions/4429513/play-wav-file-async-multiple-times-with-net) – 2011-01-19 20:45:49

回答

6

你不能一次用声音播放演奏两个音色绝对路径。

SoundPlayer正在使用原生WINAPI PlaySound函数来完成不支持播放同步声音的任务。创建SoundPlayer的多个实例将无济于事。

有很多选择,其中大部分涉及实施了很多低级别的API来窗口的本地音频libraryDirectSound(注也不是C#,需要很多的互操作代码)

最简单的办法是依靠在Windows Media Player上为您播放音频。

增加提及 “C:\ WINDOWS \ SYSTEM32 \的Wmp.dll”

然后用

var player = new WMPLib.WindowsMediaPlayer(); 
player.URL = @"..\..\bin\debug\tribal dance.wav"; 

注:播放设置URL属性

的一面后立即开始这种方法是您的媒体播放器为您的应用程序正常工作的依赖。有利的是,您可以使用任何文件格式的媒体播放器支持。