cocos2d-x 3.3如何播放音乐
由于在cocos2d-x 3.3中添加播放音乐的代码量较少,所以我们在此深入探讨一下音效引擎。Cocos2d-x封装了SimpleAudioEngine用于实现跨平台音频播放功能。在游戏开发中,开发者仅需一行代码,就能实现背景音乐和音效的播放,十分便捷。不过,所支持的音频格式会因平台不同而有所差异,你可以参考不同平台CocosDenshion支持的音频格式获取详细信息。
事实上,cocos2d-iphone中包含cocosDenshion库,该库从底层到高层提供了三层接口,分别为CDSoundEngine -> CDAudioManager -> SimpleAudioEngine。但整个库完全依赖于OpenAL来实现。OpenAL并非Khronos Group的标准,而是Creative公司的一个开源库,它既可以通过软件实现,也能借助硬件实现。目前,似乎只有苹果的产品实现了OpenAL的硬件支持,因此在其他平台上,无法提供cocosDenshion底层的支持,但顶层接口是被支持的,而顶层接口也是开发者最常用的部分。
接下来,我们回到如何在cocos2d-x 3.3中播放音乐的正题。
步骤一:准备音效文件
首先,将音效文件background-music-aac.wav和pew-pew-lei.wav复制到Resource目录下。选择wav格式是因为它能在所有平台上被支持,并且这两个文件也包含在Cocos2dSimpleGame项目中,你可以在页面底部下载它们。
步骤二:包含头文件
在HelloWorldScene.cpp文件中包含SimpleAudioEngine.h头文件,不同开发语言的代码如下:
C++(cocos2d-x)
#include "SimpleAudioEngine.h"
Objective-C(cocos2d-iphone)
#import "SimpleAudioEngine.h"
步骤三:添加背景音乐
在init()方法中添加播放背景音乐的代码:
C++(cocos2d-x)
CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background-music-aac.wav", true);
这里的第二个参数true表示背景音乐将循环播放。
Objective-C(cocos2d-iphone)
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background-music-aac.caf"];
步骤四:播放发射子弹的音效
在ccTouchesEnded()方法中添加播放发射子弹音效的代码:
C++(cocos2d-x)
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("pew-pew-lei.wav");
Objective-C(cocos2d-iphone)
[[SimpleAudioEngine sharedEngine] playEffect:@"pew-pew-lei.caf"];
通过以上步骤,你就可以在cocos2d-x 3.3项目中实现音效和背景音乐的播放了。