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
在工程目录中有一对音频文件: 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
相关文章推荐
- Cocos2d入门 <六> 播放声音
- 关于cocos2d实现H5声音播放存在问题的解决办法
- cocos2d-html5 各平台声音播放总结
- Cocos2d-js 开发记录:声音播放
- 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音
- COCOS2D 播放声音
- Cocos2d-x 3.x 声音播放
- cocos2d-x 播放声音和音效
- COCOS2D 播放声音
- COCOS2D 播放声音
- cocos2d-x下播放声音SampleAudioEngine
- [寒江孤叶丶的Cocos2d-x之旅_08]Cocos2d-x如何播放声音,如何添加背景音乐,如何播放音效?
- cocos2d游戏界面卡住,声音正常播放的问题分析
- cocos2d游戏界面卡住声音正常播放的问题分析
- swift 播放声音
- Cocos2d-X中的声音和音效
- iPhone开发笔记(1)MPMoviePlayerController的用法和播放时只有声音没有图像的解决办法
- Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果
- 解决Windows 7播放网页视频没有声音的问题
- quickcocos2dx 切到后台声音继续播放