首页 > 移动开发 > 其他综合 > 正文
8.6 声音音效操作函数
2015-11-25 14:00:15     我来说两句      
收藏    我要投稿

声音音乐与背景音乐相比有着不同的内容以及实现方法。因此在类SimpleAudioEngine中存在另一套专门处理游戏中音效声音的函数。在这些函数内部也调用不同声音处理方法。见下面的代码8-2。

代码8-2  类SimpleAudioEngine中音效的操作函数

//获得当前音效的音量大小(最大值为1.0,最小值为0.0)
float getEffectsVolume();

//设置音效播放的音量大小
void setEffectsVolume(float volume);

//播放音效,参数为:音效文件名包含路径,是否循环播放。
//返回参数为音效的编号
unsigned int playEffect(const char* pszFilePath, bool bLoop = false);

//暂停音效,参数为:暂停音效的Id
void pauseEffect(unsigned int nSoundId);

//暂停所有的音效
void pauseAllEffects();

//恢复音效音效,参数为:指定音效
void resumeEffect(unsigned int nSoundId);

//恢复所有音效
void resumeAllEffects();

//停止音效的播放,参数为指定音效
void stopEffect(unsigned int nSoundId);

//停止所有音效的播放
void stopAllEffects();

//预加载音效,参数为音效文件名包含路径
void preloadEffect(const char* pszFilePath);

//卸载音效,参数为音效文件名包含路径
void unloadEffect(const char* pszFilePath);

音效的函数调用次数要比背景音乐更为频繁。比如在游戏菜单中,可能用户每点击一次按钮,都会播放一个音效。而背景音乐只是在进入菜单时,播放一次。而且单从数目上来算,音效的个数也要比背景音乐多一些。

因此上面的代码就提供了一些操作多个音效的函数。读者可以假想在游戏当中存在一个音效池,在音效池里面存放着许多的单个音效声音,它们需要被预先加载到内存当中。这是为了在播放时,能够快速的发出声音。试想一下,要是音效播放产生延迟,游戏会变得有多糟糕?

技巧:最好在游戏开始时,就将需要播放的音效预加载,不过要考虑内存的空间。

水果忍者的游戏中,玩家每次切砍水果时都会伴随着音效。音效的播放哪怕只是延迟一秒钟,就会让玩家感觉很别扭。这也是游戏中音效使用的一个特点。那就是短暂而频繁。因此引擎才会采用池的技术,来实现良好的效果。

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:8.5 背景音乐操作函数
下一篇:8.7 示例程序
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站