苹果iOS系统中提供了两个框架用于播放音乐。分别是AVAudioPlayer 和OpenAL。 AVAudioPlayer: AVAudioPlayer在AVFoundation框架下,所以需要导入AVFoundation.framework框架。用于播放音频。 OpenAL:是自由软件界的跨平台音效API。比较底层。功能强大。 CocosDenshion音效引擎 幸运的是,在Cocos2d中,我们不必去专门研究AVAudioPlayer 和OpenAL。我们可以使用Cocos2d,提供的CocosDenshion音效引擎,就可以混合使用AVAudioPlayer 和OpenAL,来完成我们的音效控制。 CocosDenshion音效引擎提供多个API 1.CDSoundEngine:最底层的,基于OpenAL的,用于控制音效的。可以控制多达32种通道的声音。功能强大,完全可以取代CDAudioManager和SimpleAudioEngine。 2. CDAudioManager:是一个基础的,简单的,封装了AVAudioPlayer对象的,用于背景音乐播放的简单API。可以播放MP3,IMA4或者AAC 格式的音乐。 3. SimpleAudioEngine:提供一个最简单的声音控制API。如果我们仅仅是要播放一些简单的背景音乐,可以选用该API。 了解了原理,那么就可以开始研究了!!! 一、SimpleAudioEngine API的使用 使用前,必须引用相关的类 #import "SimpleAudioEngine.h" 背景音乐相关 背景音乐指,贯穿游戏始末的循环音乐。 1.播放背景音乐 [[SimpleAudioEngine sharedEngine]playBackgroundMusic:@"bgmusic.mp3" loop:YES]; 2.停止播放背景音乐 [[SimpleAudioEngine sharedEngine] stopBackgroundMusic]; 3.暂停播放背景音乐 [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic]; 4.恢复(暂停后)播放 [[SimpleAudioEngine sharedEngine] resumeBackgroundMusic]; 5.重新开始播放 [[SimpleAudioEngine sharedEngine] rewindBackgroundMusic]; 6.判断当前是否在播放背景音乐 BOOL isPlaying=[[SimpleAudioEngine sharedEngine] isBackgroundMusicPlaying]; 音效相关 音效指,游戏过程中某一个(小段)音乐。比如,爆炸,碰撞时,所使用的短音乐。 1.播放音效 [[SimpleAudioEngine sharedEngine] playEffect:@"music.mp3" pitch:12.0f pan:5.0fgain:2.0f]; 参数: pitch:音高。 pan:OpenAL中的音源位置。 gain:音量。 2.停止音效 ALuint musicId= [[SimpleAudioEngine sharedEngine] playEffect:@"music.mp3" pitch:12.0fpan:5.0f gain:2.0f]; [[SimpleAudioEngine sharedEngine] stopEffect:musicId]; 3.预加载音效 [[SimpleAudioEngine sharedEngine] preloadEffect:@"music.mp3"]; 4.从缓存中清除预加载的音效 [[SimpleAudioEngine sharedEngine] unloadEffect:@"music.mp3"];