`
浮生长恨
  • 浏览: 208265 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cocos2d-音乐播放(转)

阅读更多

原地址:http://blog.csdn.net/cwq9944/article/details/7441418

 

1、使用cocos2d的SimpleAudioEngine播放背景音乐和音效

 

使用cocos2d的SimpleAudioEngine可以很简单的播放背景音乐和音效。

 

1,准备工作
   引入头文件:#import "SimpleAudioEngine.h"
2,播放背景音乐
   [[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background.wav"];
注:如果之前有播放过名字为background.wav的背景音乐,则这个方法为从头开始播放背景音乐。
3,播放音效
   [[SimpleAudioEngine sharedEngine] playEffect:@"effect1.wav"];
4,暂停背景音乐
   [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
5,预先加载背景音乐
   [[SimpleAudioEngine sharedEngine] preloadBackgroundMusic];
使用CDAudioManager来更改音乐的属性(更改属性之前必须有背景音乐在播放或者背景音乐被preload进来 了)
6,更改音量(音量大小从0到1)
   [CDAudioManager sharedManager].backgroundMusic.volume = 1.0f;
7,循环播放N次背景音乐
   [CDAudioManager sharedManager].backgroundMusic.numberOfLoops = N;
8,背景音乐停止时触发事件
   [[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:selfselector:@selector()];


2、Cocos2d-音乐播放(音效循环播放&&停止)

//预加载背景音乐 和 预加载音效 在播放背景音乐与音效之前都要提前加载,为了防止加载消耗时间发生与游戏不同步; 
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"office_background.mp3"]; 
[[SimpleAudioEngine sharedEngine] preloadEffect:@"office_background.mp3"]; 
//播放背景音乐 和 循环播放背景音乐; 
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"office_background.mp3"]; 
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"school_kissing.mp3" loop:YES]; 
//暂停播放背景音乐; 
[[SimpleAudioEngine sharedEngine] pauseBackgroundMusic]; 
//继续播放背景音乐(不是从头开始播) 
[[SimpleAudioEngine sharedEngine] resumeBackgroundMusic]; 
//停止播放背景音乐 
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
//设置背景音乐音量大小; 
[CDAudioManager sharedManager].backgroundMusic.volume=1.0; //(volume值范围为0.0-1.0); 
//背景音乐播放几次: 
[CDAudioManager sharedManager].backgroundMusic.numberOfLoops= int值; 
//背景音乐播放完后: 
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self selector:@selector(触发的方法)];
 
//播放音效; 
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3"]; 
//pitch(值范围:>0){值最大,音调越高,播放时间越短} pan:(值范围:-1到1)貌似是左右声道 gain:(值范围:>0)音量大小; 
[[SimpleAudioEngine sharedEngine] playEffect:@"office_background.mp3" pitch:3.0 pan:-1 gain:0.1];

有时我们需要循环播放一个音效;

可以做如下操作:

在 #import "SimpleAudioEngine.h" 源码中:

-(ALuint) playEffect:(NSString*) filePath loop:(BOOL)loop; -(ALuint) playEffect:(NSString*) filePath pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain loop:(BOOL)loop;

 #import "SimpleAudioEngine.m"源码中 实现方法:

-(ALuint) playEffect:(NSString*) filePath loop:(BOOL)loop { 
    return [self playEffect:filePath pitch:1.0f pan:0.0f gain:1.0f loop:loop]; 
-(ALuint) playEffect:(NSString*) filePath pitch:(Float32) pitch pan:(Float32) pan gain:(Float32) gain loop:(BOOL)loop { 
   int soundId = [bufferManager bufferForFile:filePath create:YES]; 
   if (soundId != kCDNoBuffer) { 
    return [soundEngine playSound:soundId sourceGroupId:0 pitch:pitch pan:pan gain:gain loop:loop]; 
  } else 
    return CD_MUTE;
}

这样我们就可以用如下方法实现音效循环播放:

//loop循环播放音效; 
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES]; 
[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" pitch:1.0 pan:0.0 gain:1.0 loop:YES];

停止播放音效:设一个全局的静态变量:

static int i=1;
在播放音效时候 i=[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES];
停止播放音效:   [[SimpleAudioEngine sharedEngine] stopEffect:i];

需要注意的是:如有多个音效播放,索引“i”值不能相同,相同音效不能用同一个索引“i”; 如:

i=[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES]; 
i=[[SimpleAudioEngine sharedEngine] playEffect:@"school_kissing.mp3" loop:YES];
[[SimpleAudioEnginesharedEnginestopEffect:i];

你会发现,还在循环播放;必须使用不同的“索引”才行;

分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    Cocos2d-x背景音乐播放

    cocos2d-x背景音乐播放的示例代码,适合初学者

    Cocos2D-x游戏开发之音乐播放

    Cocos2D-x游戏开发之音乐播放

    Cocos2D-X开发学习笔记-音乐和音效的使用示例

    Cocos2D-X开发学习笔记-音乐和音效的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10228941

    Cocos2d-x3.1 《飞机大战》源代码(全)

    Cocos2d-x3.0项目创建和VS2012编译 场景跳转和主菜单实现 游戏场景背景滚动 飞机动画和触摸控制 子弹发射 敌机实现 碰撞检测和加分 爆炸效果 粒子特效和音乐播放 判定死亡 移植到Android平台

    使用Cocos2d-X开发中国象棋

    使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现、新局面、悔棋、游戏音乐、胜利后会显示游戏结果

    Cocos2D-X游戏开发技术精解

    第1章 Cocos2D-X引擎的介绍 1 1.1 何为游戏引擎 1 1.1.1 游戏的核心—引擎 1 1.1.2 引擎的特点 2 1.1.3 知名的引擎介绍 4 1.1.4 引擎的分类 5 1.2 Cocos2D-X引擎的来历 8 1.3 引擎的版本 9 1.4 下载与安装 10 1.5 ...

    Cocos2d-x实战 C++卷,完整扫描版

    全书内容涵盖了Cocos2d-x的核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、数据交换格式、内存管理、性能优化、平台移植、程序代码管理、三大应用商店发布产品等。本书共29章,按内容结构可分为六篇...

    Cocos2d-x高级开发教程(最新)

    《cocos2d-x高级开发教程:制作自己的[捕鱼达人]》以《捕鱼达人》游戏为案例,全面系统地讲解了cocos2d-x 的功能与特性,以及进行游戏开发的基本思路,包括游戏框架的搭建、基本游戏元素的使用、动作、音乐与音效、...

    基于cocos2d-x的连连看游戏

    基于cocos2d-x的连连看游戏,这次移植是基于了解 cocos2d 系列而作的动手系列。音频处理还不完善,背景音乐还得深入了解。

    Cocos2d-x音乐手游Echo完整源代码

    Cocos2d-x音乐手游Echo完整源代码 cocos精品小游戏源码 , 完整项目源码 是整个项目的压缩包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作。 适合二次开发和学习使用,都是经典游戏,需要其他游戏源码包...

    Cocos2d-x游戏开发之SimpleAudioEngine音乐音效

    Cocos2d-x游戏开发之SimpleAudioEngine音乐音效 http://blog.csdn.net/cjsen/article/details/9405879

    cocos2d-x3.1实例—微信打飞机源码及素材

    cocos2d-x3.1编写的微信经典打飞机源码及所有图片音乐音效素材下载

    【cocos2d-x IOS游戏开发-捕鱼达人19】音乐与音效的实现

    【cocos2d-x IOS游戏开发-捕鱼达人19】音乐与音效的实现

    PompaDroid2 cocos2d-x

    在第一篇《如何制作一个横版格斗过关游戏》基础上,增加角色运动、碰撞、敌人、AI和音乐音效,原文《How To Make A Side-Scrolling Beat ‘Em Up Game Like Scott Pilgrim with Cocos2D – Part 2》,在这里继续以...

    cocos2d-x 自学文档

    一、运动中的加速度 二、拖动间隐效果(比如子弹的运动轨迹) 三、图形绘制 ...cocos2d-x中的CCArray使用注意 十一、屏幕旋转,schedule 和系统语言(后面再看) 十二、音乐音效 十三、CCRenderTexture

    如何用cocos2d-x来开发简单的Uphone游戏:(四)

    如何用cocos2d-x来开发简单的Uphone游戏:(四) 音乐音效 最后的润色

Global site tag (gtag.js) - Google Analytics