5.4 游戏中音乐的播放

2013-10-07 13:03:50 · 作者: · 浏览: 69

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  按钮响应函数的实现

  1. 01  void CPlaySoundDemoDlg::OnPlaySound()  
  2. 02  {   //指定文件并播放  
  3. 03      sndPlaySound("ding.wav",SND_ASYNC);  
  4. 04  }  
  5. 05  
  6. 06  void CPlaySoundDemoDlg::OnPlayMusic()  
  7. 07  {   //指定文件并播放  
  8. 08      sndPlaySound("music.wav", SND_ASYNC);  
  9. 09  } 

(4)在使用该API函数时,还需要在文件的开始加入函数的声明,其函数声明在mmsystem.h文件中。插入头文件的方法如下:

  1. #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  添加静态库文件
(7)编译并执行程序,结果如图5.16所示。要注意,因为这是播放声音和音乐,所以只能用听来测试效果。
 
(点击查看大图)图5.16  程序运行效果图