背景音乐的播放与停止实例代码如下:
- SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true);
- SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3");
背景音乐的播放代码放置到什么地方比较适合呢?例如:在Setting场景中,主要代码如下:
- bool Setting::init()
- {
- //播放代码 ①
- return true;
- }
- void Setting::onEnter()
- {
- Layer::onEnter();
- log("Setting onEnter");
- //播放代码 ②
- }
- void Setting::onEnterTransitionDidFinish()
- {
- Layer::onEnterTransitionDidFinish();
- log("Setting onEnterTransitionDidFinish");
- //播放代码 ③
- }
- void Setting::onExit()
- {
- Layer::onExit();
- log("Setting onExit");
- }
- void Setting::onExitTransitionDidStart()
- {
- Layer::onExitTransitionDidStart();
- log("Setting onExitTransitionDidStart");
- }
- void Setting::cleanup()
- {
- Layer::cleanup();
- log("Setting cleanup");
- }
关于播放背景音乐,理论上我们是可以将播放代码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函数播放背景音乐会更好一些。
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11584534.html
当当: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
相关推荐
6. **音频和音乐**:介绍如何在Cocos2d-x中播放背景音乐和音效,以及音乐的控制和管理。 7. **网络与存储**:讨论如何进行网络通信,如下载更新、保存和读取游戏数据。 8. **性能优化**:提供关于代码优化、内存...
6. **声音与音乐**:Cocos2d-x支持音频播放,包括背景音乐和音效,可以实现音效的同步和控制。 7. **资源管理**:有效管理和加载图片、音频、字体等资源是游戏开发的关键,Cocos2d-x提供了资源管理工具和缓存机制。...
在Cocos2d-x游戏开发中,为游戏添加背景音乐是一项基本且重要的任务,它可以提升游戏体验,带给玩家沉浸式的感觉。Cocos2d-x是一个跨平台的2D游戏开发框架,支持多种操作系统,包括iOS、Android、Windows等。本文将...
总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...
3. 音效处理:集成的音频引擎支持播放背景音乐和音效,为游戏增添了生动的声音效果。 4. 网络通信:提供网络接口,方便实现游戏的在线功能,如用户登录、排行榜、多人对战等。 5. 学习资源:cocos2d-x 社区活跃,...
9. **音频播放**:掌握音频管理,包括背景音乐、音效的播放与控制,提升游戏体验。 10. **性能优化**:探讨性能分析工具的使用,以及如何优化代码执行效率、减少内存占用和CPU负载。 11. **发布与打包**:学习项目...
《cocos2d-x 3.13.1:深入解析与应用》 cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,...
在这款源码中,开发者利用cocos2d-x构建了一个策略游戏,玩家可以扮演三国时期的诸侯,通过策略和战术来征服其他势力,体验那个时代的战争与智谋。 【源码学习要点】 1. **场景与层管理**:cocos2d-x中的Scene和...
总结,通过深入研究"runningGame"的源码,我们可以了解到cocos2d-x在跑酷游戏开发中的应用,掌握从资源管理到游戏逻辑实现的全过程。这对于开发者来说,既是一次实践操作的锻炼,也是一次理论知识的巩固,对于后续的...
cocos2d-x提供了音频播放接口,支持音乐背景播放和音效播放。可以轻松实现游戏中的音乐和声音效果。 九、脚本系统 除了C++,cocos2d-x还支持JavaScript和Lua作为脚本语言。JavaScript版本称为cocos2d-js,而Lua可以...
9. **音频管理**:cocos2d-x包含了音频播放功能,支持背景音乐和音效的播放和管理。 10. **Lua和JavaScript绑定**:除了C++,cocos2d-x还支持使用Lua和JavaScript进行开发,这两种脚本语言简化了游戏逻辑的编写,...
6. **音频与音乐**:如何在Cocos2d-x中播放背景音乐和音效,了解音频管理类的使用。 7. **动画与特效**:涵盖Tiled Map、粒子系统、动作(Action)和动画(Animate)的创建与应用,让游戏更具视觉吸引力。 8. **...
2. **图形渲染**:掌握如何使用Cocos2d-x的绘图工具,如DrawNode、Label、SpriteBatchNode等创建游戏元素,如方块、背景和得分显示。 3. **事件处理**:学习如何使用EventDispatcher和EventListener处理用户输入,...
Cocos2d-x提供了音频服务,支持播放背景音乐和各种音效,如枪声、爆炸声。开发者需要合理设计和控制音频资源,确保游戏的音效质量。 此外,存档和得分系统也是必不可少的。Cocos2d-x提供了一些基础的数据存储接口,...
6. **声音与音乐播放**:Cocos2d-x 提供了简单的音频API,可以播放背景音乐和音效。在Demo中,可能演示了如何加载和播放音频文件。 7. **脚本支持**:Cocos2d-x 支持Lua和JScript等脚本语言,允许开发者快速原型和...
《cocos2d-x 3.x 游戏开发实战光盘源码》是针对使用cocos2d-x 3.x框架进行游戏开发的学习资源。cocos2d-x是一款跨平台的2D游戏开发引擎,广泛应用于iOS、Android、Windows等多平台的游戏开发,尤其适合制作2D图形和...
在本项目中,开发者利用cocos2d-x 2.0.4版本创建了一个简单的益智类魔塔小游戏,旨在展示cocos2d-x在跨平台游戏开发中的应用能力。 1. **cocos2d-x框架**: - **C++基础**:cocos2d-x 2.0.4主要采用C++编写,这...
4. **音频管理**:Cocos2d-x支持播放背景音乐、音效和语音,可以增强游戏的沉浸感。例如,当敌人被击中或防御塔升级时,会有相应的音效反馈。 5. **事件处理和脚本系统**:游戏逻辑通常由Lua或JavaScript等脚本语言...
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...