3. 音乐的播放
在游戏中,一般音乐分两大类型,一种是长时间播放的背景音乐,一种是根据游戏事件播放的短时间音乐(音效)。
在Cocos2d-X中,使用SimpleAudioEngine类来播放两种类型的声音:
1.1. 播放背景音乐
CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("backgroundmusic.mp3",true);//此种方法为直接播放,也可用preLoadXXX方法先加载再播放
1.2. 播放音效
音效一般是对应的特定事件发生时,再播放。因此,为了避免音效文件第一次加载时可能会引起的卡顿(等待),一般采用初始化时先加载,事件发生时再播放的方法:
①预先加载音效文件
#include "cocos2d/cocos/audio/include/SimpleAudioEngine.h"
CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("1.mp3");
CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("2.mp3");
CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("3.mp3");
CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("4.mp3");
②在对应的事件中播放
本例是一个Menu的4个菜单项对应的事件来播放相应的音效。
void HelloWorld::menuCloseCallback(Ref*pSender)
{
switch (((MenuItem*)pSender)->getTag())
{
case 1:
CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("1.mp3");
break;
case 2:
CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("2.mp3");
break;
case 3:
CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("3.mp3");
break;
case 4:
CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("4.mp3");
break;
}
}
注意,声音的加载和播放必须文件名一致!