转载标明出处:http://write.blog.csdn.net/postedit/38521613
上篇回顾
本篇名言:复杂中带着简单的思考,是人和动物的分别。[皮雅]
上篇中,蛤蟆学习如何实现血条掉血的特效。这次我们将跳跃到完全的不同世界,从图形化世界过渡到音乐世界。我们在游戏中的音乐简单可以分为两类,一种是背景游戏音乐,另一个种是效果音乐。
理论介绍
本次的理论知识,音乐我们主要用到的类是SimpleAutioEngine。这个类和我们之前学习的动画之类的不是同宗的。可以说也没亲戚关系的,完全是另一氏族了。
我们先介绍几个函数:
preloadBackgroundMusic,playBackgroundMusic,setBackgroundMusicVolume
函数原型如下:
virtual voidpreloadBackgroundMusic(const char * pszFilePath)
这个preloadBackgroundMusic函数是实现预加载背景音乐
virtual void playBackgroundMusic |
( |
const char * |
pszFilePath, |
||||
bool |
bLoop = false |
||||||
) |
这个playBackgroundMusic函数是用来播放背景音乐的。
virtual void setBackgroundMusicVolume |
( |
float |
volume |
) |
这个setBackgroundMusicVolume函数用来设置背景音乐音量大小,范围必须为0.0到1.0之间。
具体步骤
首先我们需要在HelloWorld.cpp的开始处加入
using namespaceCocosDenshion;
使用命名空间。
然后将一个mp3文件放入到resources文件中,命名为shenhua.mp3。
接着在HelloWorld.cpp文件中找到
bool HelloWorld::init()函数,加入如下代码。
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("shenhua.mp3" );
SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0);
SimpleAudioEngine::getInstance()->playBackgroundMusic("shenhua.mp3",true);
编译运行后,就会播放背景音乐了。
代码解释
下面我们来解释下代码的含义:
bool HelloWorld::init()函数中代码解释。
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("shenhua.mp3" );//加载音乐shenhua.mp3到内存中
SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.5);//设置背景播放音乐音量
SimpleAudioEngine::getInstance()->playBackgroundMusic("shenhua.mp3",true);//启动播放背景音乐,第一个参数表示音乐名字,第二个参数表示播放完毕是否循环。
OK,完毕。
是不是很简单,不过蛤蟆发现当前版本下setBackgroundMusicVolume 函数好像不会生效。蛤蟆进入了源码自带的voidSimpleAudioEngine::setBackgroundMusicVolume(floatvolume)函数发现这个函数式空的。额,难怪。我们暂时就不去管它了哈。
总结
本次蛤蟆开始学习音乐相关的知识。音乐虽然不是游戏中的核心,但是和游戏效果、游戏体验密切相关。一般游戏中会有专门的音乐师来负责音乐相关工作。