在工程目录中有一对音频文件: 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 播放声音相关推荐

  1. Improve Performance and Reduce Memory with PVRTC Textures and Cocos2d

    转载自:http://www.uchidacoonga.com/2011/07/pvrtc-textures-and-cocos2d/ Hello everyone! A few months hav ...

  2. 【Cocos2d开发】Cocos2d下安卓环境的搭建

    在进行Cocos2d游戏开发前 我们先来配置一下环境,我们先来准备一下工具,我们所需要的工具分别为: 1.Cocos2d引擎 2.JDK 3.SDK 4.NDK 5.ANT 6.ADT 1.下载Coc ...

  3. cocos2d 从v1.x升级到v2.x需要注意的几个地方

    首先v1.x一些CCNode定位函数实现的有问题,导致返回的CCPoint的x坐标不正确(超出320后无变化),怀疑是其对屏幕旋转判断的不正确;而且这种现象在iOS 7.1之前的模拟器中运行都正常,在 ...

  4. cocos2d游戏jsc文件格式解密,SpideMonkey大冒险

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍cocos2d游戏中常用的jsc格式文件的解密." 01 - 在破解游戏应用中,经常会碰到后缀为jsc的文件,这是基于coco ...

  5. 如何优化cocos2d程序的内存使用和程序大小:第一部分

    译者: 在我完成第一个游戏项目的时候,我深切地意识到"使用cocos2d来制作游戏的开发者们,他们大多会被cocos2d的内存问题所困扰".而我刚开始接触cocos2d的时候,社区 ...

  6. Cocos2d入门--3--向量的应用

    小球向一个方向持续运动的Demo HelloWorldScene.h ...... //设置一个protected的属性 protected:cocos2d::Vec2 _vec; ...... He ...

  7. Cocos2d之Action类详解

    一.声明 文章中使用到的cocos2d的源代码的版本是cocos2d-x-3.3rc0. 二.主要内容 [Action类简介] 在cocos2d中,Action类是所有动作的基类.Action类继承了 ...

  8. [cocos2d-x]cocos2d和cocos2d-x的一些通用性

    不得不说要说总结,因为Cocos2d-X的代码和Cocos2d-iphone两个引擎除了语言不同外(Cocos2d-X使用C++,Cocos2d-iphone使用Object-C)可以说没有其他差异. ...

  9. Cocos2d中从场景切换到UIViewController视图方法总结

    第一种:直接从场景切换到UIViewController视图(网上流传的版本) - (void) showUIViewController:(UIViewController *) controlle ...

最新文章

  1. 《马哥教育协办GIAC、GOPS顶级技术峰会完美落幕》
  2. 智能车竞赛技术报告 | 双车接力组 - 沈阳航空航天大学 - 精神小车成双 - 双轮车
  3. Simple print, much secret
  4. 函数中参数有数组时注意的小问题(不一定要传递数组长度,不用返回数组,可以在函数中改变数组元素值)
  5. 黄金点游戏之客户端(homework-05)
  6. 零元学Expression Blend 4 - Chapter 1 缘起
  7. fatal error C1001的一个解决心得
  8. kotlin 覆盖属性_Kotlin程序| 方法覆盖的示例
  9. 成功演示的关键步骤(三)
  10. mybatis工作笔记002_mybatis中如果返回的结果没有的话默认返回null的list_但可启用returnInstanceForEmptyRow_返回为list不为null但为0条
  11. Wireshark 检索命令
  12. 怎么查看自己电脑是否被安装远程监控
  13. 学习C语言编程,推荐你看这6本书
  14. AD快捷键无法使用的解决方法
  15. 不使用任何中间变量如何将a、b的值进行交换(三种方法)
  16. OpenCV:图像的基本操作之修改像素、拆分及合并RGB通道
  17. 6月15号MOVE PROTOCOL上线测试版,如何参与呢?
  18. 软件开发新技术(工具及相关技术)
  19. 向日葵(SunLoginClient_10.5.0.29)RCE验证
  20. datatables实现复选框全选反选!!(亲测有效)

热门文章

  1. [LOJ]#6515. 「雅礼集训 2018 Day10」贪玩蓝月
  2. mysql日期vlog
  3. 原码,反码,补码,全面解析
  4. 【AIS学习】06:AIS缩略语
  5. 在Keil 5上配置ST-Link下载器的方法 Windows 10
  6. 电子行业测试软件,CAM软件技术在电子行业的应用测试验证
  7. js中数组插入、删除元素操作
  8. 节拍器在学习音乐过程中起到什么作用?-小星星节拍器怎么样?
  9. nodejs+vue+elementui休闲娱乐美食优惠卷商城销售系统
  10. 原来手机图片转文字这么简单!按下这个按钮,纸质稿轻松电子化