`

Cocos2d-x中播放背景音乐

 
阅读更多

背景音乐的播放与停止实例代码如下:

[html] view plaincopy
 
  1. SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true);  
  2. SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3");  



背景音乐的播放代码放置到什么地方比较适合呢?例如:在Setting场景中,主要代码如下:

[html] view plaincopy
 
  1. bool Setting::init()  
  2. {  
  3.     //播放代码                                                              ①  
  4.     return true;  
  5. }  
  6.   
  7.   
  8. void Setting::onEnter()  
  9. {  
  10.     Layer::onEnter();  
  11.     log("Setting onEnter");  
  12.     //播放代码                                                              ②  
  13. }  
  14.   
  15.   
  16. void Setting::onEnterTransitionDidFinish()  
  17. {  
  18.     Layer::onEnterTransitionDidFinish();  
  19.     log("Setting onEnterTransitionDidFinish");    
  20.     //播放代码                                                              ③  
  21. }  
  22.   
  23.   
  24. void Setting::onExit()  
  25. {  
  26.     Layer::onExit();  
  27.     log("Setting onExit");                                            
  28. }  
  29.   
  30.   
  31. void Setting::onExitTransitionDidStart()  
  32. {  
  33.     Layer::onExitTransitionDidStart();  
  34.     log("Setting onExitTransitionDidStart");                                  
  35. }  
  36.   
  37.   
  38. void Setting::cleanup()  
  39. {  
  40.     Layer::cleanup();                                                         
  41.     log("Setting cleanup");  
  42. }  




关于播放背景音乐,理论上我们是可以将播放代码SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Synth.mp3",true)放置到三个位置(代码中的①、②、③)。下面我们分别分析一下它们还有什么不同。
1、代码放到第①行
代码放到第①行(即在Setting::init函数),如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐。但是如果前面场景层HelloWorld::onExit函数有调用背景音乐停止语句,那么会出现背景音乐播放几秒钟后停止。

为了解释这个现象,我们可以参考一下6.3.2一节多场景切换生命周期。使用pushScene函数从实现HelloWorld场景进入Setting场景,生命周期函数调用顺序如下图所示。

 
从图中可见,HelloWorld::onExit调用是在Setting::init之后,这样当我们在Setting::init中开始播放背景音乐后,过一会调用HelloWorld::onExit停止背景音乐播放,这样问题就出现了。
注意 无论播放和停止的是否是同一个文件,都会出现个问题。


2、代码放到第②行
代码放到第②行(即在Setting::onExit函数),如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐。如果前面的场景层HelloWorld::onExit函数有背景音乐停止语句,也会出现背景音乐播放几秒钟后停止。原因与代码放到第①行情况一样。


3、代码放到第③行
我们推荐代码放到第③行代码位置,因为onEnterTransitionDidFinish函数是在进入层而且过渡动画结束时候调用,代码放到这里不用考虑中前面场景是否有调用背景音乐停止语句。而且用户也不会先听到声音,后出现界面现象。

综上所述,是否能够成功播放背景音乐,前面场景是否有调用背景音乐停止语句有关,也与当前场景中播放代码在哪个函数里有关。如果前面场景没有调用背景音乐停止语句,问题也就简单了,我们可以将播放代码放置在代码①、②、③任何一处。但是如果前面场景调用背景音乐停止语句,在onEnterTransitionDidFinish函数播放背景音乐会更好一些。

 

 

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386


《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

 

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台
分享到:
评论

相关推荐

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

    6. **音频和音乐**:介绍如何在Cocos2d-x中播放背景音乐和音效,以及音乐的控制和管理。 7. **网络与存储**:讨论如何进行网络通信,如下载更新、保存和读取游戏数据。 8. **性能优化**:提供关于代码优化、内存...

    Cocos2d-x实战:C++卷(2版)源代码

    6. **声音与音乐**:Cocos2d-x支持音频播放,包括背景音乐和音效,可以实现音效的同步和控制。 7. **资源管理**:有效管理和加载图片、音频、字体等资源是游戏开发的关键,Cocos2d-x提供了资源管理工具和缓存机制。...

    Cocos2d-x背景音乐播放

    在Cocos2d-x游戏开发中,为游戏添加背景音乐是一项基本且重要的任务,它可以提升游戏体验,带给玩家沉浸式的感觉。Cocos2d-x是一个跨平台的2D游戏开发框架,支持多种操作系统,包括iOS、Android、Windows等。本文将...

    cocos2d-x-3.1.zip

    总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...

    cocos2d-x-2.1.4.rar

    3. 音效处理:集成的音频引擎支持播放背景音乐和音效,为游戏增添了生动的声音效果。 4. 网络通信:提供网络接口,方便实现游戏的在线功能,如用户登录、排行榜、多人对战等。 5. 学习资源:cocos2d-x 社区活跃,...

    Cocos2d-x实战 JS卷

    9. **音频播放**:掌握音频管理,包括背景音乐、音效的播放与控制,提升游戏体验。 10. **性能优化**:探讨性能分析工具的使用,以及如何优化代码执行效率、减少内存占用和CPU负载。 11. **发布与打包**:学习项目...

    cocos2d-x-3.13.1.zip

    《cocos2d-x 3.13.1:深入解析与应用》 cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,...

    cocos2d-x游戏源码 三国策略游戏源码

    在这款源码中,开发者利用cocos2d-x构建了一个策略游戏,玩家可以扮演三国时期的诸侯,通过策略和战术来征服其他势力,体验那个时代的战争与智谋。 【源码学习要点】 1. **场景与层管理**:cocos2d-x中的Scene和...

    cocos2d-x 跑酷源码

    总结,通过深入研究"runningGame"的源码,我们可以了解到cocos2d-x在跑酷游戏开发中的应用,掌握从资源管理到游戏逻辑实现的全过程。这对于开发者来说,既是一次实践操作的锻炼,也是一次理论知识的巩固,对于后续的...

    cocos2d-x教程

    cocos2d-x提供了音频播放接口,支持音乐背景播放和音效播放。可以轻松实现游戏中的音乐和声音效果。 九、脚本系统 除了C++,cocos2d-x还支持JavaScript和Lua作为脚本语言。JavaScript版本称为cocos2d-js,而Lua可以...

    cocos2d-x-2.2.2 中文帮助文档

    9. **音频管理**:cocos2d-x包含了音频播放功能,支持背景音乐和音效的播放和管理。 10. **Lua和JavaScript绑定**:除了C++,cocos2d-x还支持使用Lua和JavaScript进行开发,这两种脚本语言简化了游戏逻辑的编写,...

    精通COCOS2D-X游戏开发 基础卷 ,王永宝著 ,P368 ,2016.04

    6. **音频与音乐**:如何在Cocos2d-x中播放背景音乐和音效,了解音频管理类的使用。 7. **动画与特效**:涵盖Tiled Map、粒子系统、动作(Action)和动画(Animate)的创建与应用,让游戏更具视觉吸引力。 8. **...

    Cocos2d-x 3.0的俄罗斯方块代码

    2. **图形渲染**:掌握如何使用Cocos2d-x的绘图工具,如DrawNode、Label、SpriteBatchNode等创建游戏元素,如方块、背景和得分显示。 3. **事件处理**:学习如何使用EventDispatcher和EventListener处理用户输入,...

    迷失航线-Cocos2d-x项目实战-射击类游戏-关东升

    Cocos2d-x提供了音频服务,支持播放背景音乐和各种音效,如枪声、爆炸声。开发者需要合理设计和控制音频资源,确保游戏的音效质量。 此外,存档和得分系统也是必不可少的。Cocos2d-x提供了一些基础的数据存储接口,...

    Cocos2d-x demo程序

    6. **声音与音乐播放**:Cocos2d-x 提供了简单的音频API,可以播放背景音乐和音效。在Demo中,可能演示了如何加载和播放音频文件。 7. **脚本支持**:Cocos2d-x 支持Lua和JScript等脚本语言,允许开发者快速原型和...

    cocos2d-x 3.x 游戏开发实战光盘源码

    《cocos2d-x 3.x 游戏开发实战光盘源码》是针对使用cocos2d-x 3.x框架进行游戏开发的学习资源。cocos2d-x是一款跨平台的2D游戏开发引擎,广泛应用于iOS、Android、Windows等多平台的游戏开发,尤其适合制作2D图形和...

    使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏

    在本项目中,开发者利用cocos2d-x 2.0.4版本创建了一个简单的益智类魔塔小游戏,旨在展示cocos2d-x在跨平台游戏开发中的应用能力。 1. **cocos2d-x框架**: - **C++基础**:cocos2d-x 2.0.4主要采用C++编写,这...

    cocos2d-x贼来了塔防

    4. **音频管理**:Cocos2d-x支持播放背景音乐、音效和语音,可以增强游戏的沉浸感。例如,当敌人被击中或防御塔升级时,会有相应的音效反馈。 5. **事件处理和脚本系统**:游戏逻辑通常由Lua或JavaScript等脚本语言...

    Cocos2D-X游戏开发技术精解.pdf

    《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...

Global site tag (gtag.js) - Google Analytics