5.4 游戏中音乐的播放
在玩游戏时,除了漂亮丰富的图像能够吸引人外,优美动听的声音同样也使游戏更加多彩。那么在游戏中,声音是如何加载进来?又如何播放出来的呢?在本节中,将向大家简单介绍。
在游戏中要播放声音,可以调用Windows的API函数sndPlaySound来实现。这个函数的原型如下:
BOOL WINAPI sndPlaySound(LPCSTR pszSound, UINT fuSound);
其中,pszSound是指定将要播放声音文件的路径;fuSound指定播放声音的方式,其可选参数如表5.1所示。
技巧:使用API函数时,要注意添加相应的头文件及静态库文档,否则在编译或者连接时会产生错误。
表5.1 sndPlaySound中参数fuSound的参数值表
|
宏 定 义< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
说 明 |
|
SND_ASYNC |
在播放的同时继续执行后面的语句 |
|
SND_LOOP |
一直重复播放声音,直到下一次调用本函数 |
|
SND_MEMORY |
把声音数据载入内存 |
|
SND_NODEFAULT |
指如果没有找到声音文件,不播放默认声音 |
|
SND_NOSTOP |
不停止当前播放的声音 |
|
SND_SYNC |
播放完声音之后再执行后面的语句 |
下面就跟随笔者来创建一个有声音的应用程序--PlaySoundDemo,其功能要求为:单击"播放声音"按钮时,可以播放一段声音。而单击"播放音乐"按钮时,可以播放一段音乐。创建应用程序步骤如下。
(1)创建基于对话框的应用程序--PlaySoundDemo,并添加"播放声音"和"播放音乐"两个按钮。ID号分别为IDC_PLAY_SOUND和IDC_PLAY_MUSIC。主界面如图5.12所示。
(2)用类向导(Ctrl+W启动)给IDC_PLAY_SOUND和IDC_PLAY_MUSIC两个按钮资源添加响应函数,添加方法为:找到IDC_PLAY_SOUND选项,并单击Add Function按钮,如图5.13所示。
|
| (点击查看大图)图5.12 PlaySoundDemo主界面 |
|
| (点击查看大图)图5.13 添加响应函数的类向导 |
(3)添加完成后,分别在这两个按钮的实现函数中增加代码,如代码5.7所示。
代码5.7 按钮响应函数的实现
- 01 void CPlaySoundDemoDlg::OnPlaySound()
- 02 { //指定文件并播放
- 03 sndPlaySound("ding.wav",SND_ASYNC);
- 04 }
- 05
- 06 void CPlaySoundDemoDlg::OnPlayMusic()
- 07 { //指定文件并播放
- 08 sndPlaySound("music.wav", SND_ASYNC);
- 09 }
(4)在使用该API函数时,还需要在文件的开始加入函数的声明,其函数声明在mmsystem.h文件中。插入头文件的方法如下:
- #include <mmsystem.h> //插入头文件
(5)除了增加头文件外,还需要在当前工程中加入winmm.lib静态库文件。添加方法为选择Project | Setting命令,如图5.14所示。
(6)在弹出的对话框中,选择Link标签,进入Link选项卡。在object/library modules文本框中输入winmm.lib文件名,如图5.15所示。
|
| 图5.14 选中Setting菜单项 |
|
| (点击查看大图)图5.15 添加静态库文件 |
|
| (点击查看大图)图5.16 程序运行效果图 |




