Cocos2d-x中播放背景音乐

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

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函数播放背景音乐会更好一些。

很多其它内容请关注最新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课堂微信公共平台

时间: 2024-10-13 16:43:52

Cocos2d-x中播放背景音乐的相关文章

Android(java)学习笔记181:Android 服务的应用,在Activity中实现背景音乐播放

1.在android应用程序里,有一种没有UI的类(android.app.Service)——Service.简单来说,Service是一个 background process(背景程序),通过背景程序,可以实现一些不需要UI的功能,比如播放背景音乐. 下面是一个实现播放背景音乐的例程: 在上个工程的基础上,在Activity中添加音乐播放功能. 在工程中添加一个新类 VoiceService (File->New->Class): import android.app.Service;

【Cocos2dx】资源文件夹,播放背景音乐,导入外部库

在Cocos2dx中播放背景音乐是一件很容易的事情,就一行代码,但是首先要导入Cocos2dx的音频引擎cocosDenshion.cocosDenshion对cocos2d工程提供了很方便的声音素材的调用和管理.同时要把要播放的音乐放到工程的资源文件夹才能正确播放 与<[Cocos2dx]Windows平台下Cocos2dx 2.x的下载.安装.配置,打造自己的Helloworld>(点击打开链接)同样通过如下的Python命令,创建一个BGM工程之后: python create_proj

Cocos2d-x开发中国象棋《十一》在游戏中添加背景音乐

在上一节中实现了悔棋,在这节将介绍如何在游戏中添加背景音乐 看一下效果: 实现思路: 当单击后游戏中播放背景音乐,并且背景音乐切换按钮由变成 当单击后停止播放背景音乐,并且背景音乐切换按钮由变成 当游戏进入后台后停止播放背景音乐 当游戏恢复后继续播放背景音乐 实现代码: 在SceneGame类中定义一个成员函数Voice(CCObject*)用于实现背景音乐的切换,Voice(CCObject*)中的代码 //播放背景音乐 void SceneGame::Voice(CCObject*) { s

Cocos2d-JS 中游戏背景音乐与音效

游戏中音频的处理也是非常重要的,它分为背景音乐播放与音效播放. 背景音乐是长时间循环播放的,它会长时间占用较大的内存,背景音乐不能多个同时播放. 而音效是短的声音,它占用内存较小,音效能多个同时播放. 在Cocos2d-JS中提供了一个音频引擎-AudioEngine,通过引擎能够很好地控制游戏背景音乐与音效优化播放. Cocos2d-JS音频文件 音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号通过音频编码变成音频数字信号保存到某种格式文件中.在播放过程中再对音频文件解码

Cocos2d-x中停止播放背景音乐

停止背景音乐播放代码放置到什么地方比较适合呢?例如:在HelloWorld场景中,主要代码如下: [html] view plaincopy bool HelloWorld::init() { return true; } void HelloWorld::onEnter() { Layer::onEnter(); log("HelloWorldonEnter"); } voidHelloWorld::onEnterTransitionDidFinish() { Layer::onEn

Android通过startService播放背景音乐简单示例

关于startService的基本使用概述及其生命周期可参见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单示例,演示startService的基本使用流程. 系统界面如下: 界面上面就两个按钮,"播放音乐并退出Activity" 和 "停止播放音乐".我们在该示例中,通过操纵Activity的按钮控制MusicService播放或停止播放音乐. 我将一个名为music.mp3的放到资源目录/r

在网页中添加背景音乐

有两种添加背景音乐的方式分别用<bgsound>和<embed></embed>标签,当用<embed>插入背景音乐时可以设置宽度和高度为0,隐藏播放器.二者的参数如下: ■ <bgsound>: <bgsound> 是用来插入背景音乐,但只适用于 IE,其参数设定不多.如下 <bgsound src="your.mid"autostart=true loop=infinite> src="y

在网页中插入背景音乐代码(html)hK3V

有两种分别用和标签当用插入背景音乐时可以设置宽度和高度为,隐藏播放器.二者的参数如下:■: 是用来插入背景音乐,但只适用于,其参数设定不多.如下 设定档案及路径,可以是相对或绝对.是否在音乐档下载完之后就自动播放.是,否内定.是否自动反复播放.表示重复两次,表示重复多次.■: 是用来插入各种多媒体,式可以是...等等,及新版的都支持.其参数设定较多.如下下 设定档案及路径,可以是相对或绝对.是否在音乐档下载完之后就自动播放.是,否内定.是否自动反复播放.表示重复两次,是,否.是否完全隐藏控制画面

在网页中插入背景音乐代码(html)

有两种 分别用<bgsound>和<embed></embed>标签,当用<embed>插入背景音乐时可以设置宽度和高度为0,隐藏播放器. 二者的参数如下: ■ <bgsound>: <bgsound> 是用来插入背景音乐,但只适用于 IE,其参数设定不多.如下 <bgsound src="your.mid"autostart=true loop=infinite> src="your.mid