您的位置:首页 > 移动开发 > Cocos引擎

COCOS2D 播放声音

2012-08-28 15:04 651 查看
转载自:http://blog.csdn.net/zltianhen/article/details/6743220

在工程目录中有一对音频文件: blues.mp3 和 alien- sfx.caf 。

在cocos2d中播放音频的最好也是最初的方法是用 SimpleAudioEngine。然而音频支持并不是cocos2d内置的一部分。它属于CocosDenshion,就像物理引擎一样。因此,你需要import额外的头文件:

#import "SimpleAudioEngine.h"

然后可以在init方法中象这样来播放音乐/音频:

[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"blues.mp3" loop:YES];

[[SimpleAudioEngine sharedEngine] preloadEffect:@"alien-sfx.caf"];

对于背景音乐,我们设置loop参数为YES,这样就会循环播放。

对于音频声效,我们并没有立即播放,而仅仅是加载到内存。然后在条件合适时播放(比如碰撞发生时):

[[SimpleAudioEngine sharedEngine] playEffect:@"alien-sfx.caf"];

对于音乐,最好使用mp3格式。注意,同一时间内,只能播放1首背景音乐。虽然同时播放多首mp3从技术上是可行的,但物理硬件在同一时间内只能对一首mp3进行解码。在游戏中拒绝任何额外的CPU开销,因此对大部分游戏而言,都不会同时播放多首mp3.

至于声效,我喜欢用CAF格式。如果要进行音频格式的转换,可以使用 SoundConverter:

http://dekorte.com/projects/ shareware/SoundConverter/

如果文件大小在500k以内,该软件是免费的,无限制的许可仅仅需要$15。

如果你发现无法播放音频文件或者出现杂音,不要担心。有无数音频软件和音频编码拥有它们特有的文件格式。有些格式无法在iOS设备上播放,然而在其他设备上播放正常。解决办法是打开它们,然后重新保存。或者使用音频转换程序或音频软件。

//1.在当前的场景中设定全局变量

CDSoundSource *myEffect;

SimpleAudioEngine *mySAE;

//2. 在init方法中初始化SimpleAudioEngine并将场景音效都放入缓冲

mySAE=[SimpleAudioEngine sharedEngine];

[mySAE preloadEffect:@"myeffect.caf"];

....

//3. 需要播放音效时这样做

myEffect=[[SAE soundSourceForFile:@"myeffect.caf"] retain];

[myEffect play];

//4. 判断是否播放的时候这样做

if (myEffect.isPlaying)

{

     //正在播放

}

else

{

     //音效没有播放

}

//5. 需要停止播放的时候这样做

[myEffect stop];

//6. 在场景的dealloc方法中卸载所有被缓冲过的音效,以便释放内存

[myEffect dealloc];

[mySAE unloadEffect:@"myeffect.caf"];

....

....

// 如果背景音乐要带入下一个场景则不要unload,dealloc留给CocosDension去autorelease
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  音乐 游戏 import 引擎 ios