`
fireDragonpzy
  • 浏览: 443630 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

cocos2d-x游戏中音乐音效的处理

阅读更多
本文为firedragonpzy原创,转载务必在明显处注明:
转载自【Softeware MyZone】原文链接: http://www.firedragonpzy.com.cn/index.php/archives/905


有关cocos2d-x游戏中音乐音效的处理一般可选两种方式:第一种,在没有进度处理的情况下,最好将音乐音效的状态设置为三种,开状态,关状态,未初始化状态,因为得判断是否首次进入场景,然后进行处理。第二种,有了进度的情况下,设置一种即可。
   接下来分别说下两种的设置,关于第一种,你可以讲状态设置为三个值,0,1,2等等,但是我是个比较懒惰的人,所以我设置了两个值,bool型,true或false。这是本文的精华,大家注意哦。
  首先,大家先看看CCUserDefault的头文件,如下:
    /**
	@brief Get bool value by key, if the key doesn't exist, a default value will return.
	 You can set the default value, or it is false.
	*/
	bool	getBoolForKey(const char* pKey, bool defaultValue = false);
	/**
	@brief Get integer value by key, if the key doesn't exist, a default value will return.
	 You can set the default value, or it is 0.
	*/
	int		getIntegerForKey(const char* pKey, int defaultValue = 0);
	/**
	@brief Get float value by key, if the key doesn't exist, a default value will return.
	 You can set the default value, or it is 0.0f.
	*/
	float	getFloatForKey(const char* pKey, float defaultValue=0.0f);
	/**
	@brief Get double value by key, if the key doesn't exist, a default value will return.
	 You can set the default value, or it is 0.0.
	*/
	double  getDoubleForKey(const char* pKey, double defaultValue=0.0);
	/**
	@brief Get string value by key, if the key doesn't exist, a default value will return.
	You can set the default value, or it is "".
	*/
	std::string getStringForKey(const char* pKey, const std::string & defaultValue = "");

如果没有设置的bool型为false,所以我讲未初始化和开状态都设置为false,而关状态设置为true。

    关于第二种,设置了进度,即可在进度处设置音乐音效的开关,如下代码:
    CCUserDefault *userDefault = CCUserDefault::sharedUserDefault();
		if (!userDefault->getIntegerForKey(gcCURPROGRESSMARK))
		{
			userDefault->setIntegerForKey(gcCURPROGRESSMARK, nBLOOMINGDALEFIRST );
			userDefault->setIntegerForKey(gcHASICELOTUS,0);
			userDefault->setIntegerForKey(gcHASCRYSTAL,0);
			userDefault->setIntegerForKey(gcHASWINDBELL,0);
			userDefault->setBoolForKey( gcMUSICSTATE, true );
			userDefault->setBoolForKey( gcEFFECTSTATE, true );
		}

    这只是音乐音效开关的设置,但是我还遇到了一个比较扯淡的问题,我在游戏音乐设置界面,将音乐关了,按Home键退出,再次进入的时候音乐竟然是打开的,而我的音乐按钮是关闭的。音乐按钮关闭是应该的,但是音乐打开确实不对的。在退出之前我明明是将音乐关掉的啊!
    若你也有此疑问,那就接着往下看。
    相信很多朋友们都很少关注AppDelegate.cpp吧。其实我也关注很少,偶然发现里面有这段代码,如下:
    // This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
    CCDirector::sharedDirector()->pause();
	if ( MusicManager::getMusicState() )
	{
		SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
	}
	else
	{
		SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	}
    
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
    CCDirector::sharedDirector()->resume();
	if ( MusicManager::getMusicState() )
	{
		SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
	}
	else
	{
		SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	}   
}

   当然我贴出来的是我修改后的代码,When comes a phone call,it's be invoked too这就是按了home键,// this function will be called when the app is active again再次进入的时候,相信到这里大家就应该很明白了吧!

提醒:(1)在使用CCUserDefault的时候注意状态值得设置,是设置两个还是三个
      (2)注意AppDelegate里面的applicationDidEnterBackground()和applicationWillEnterForeground()方法,我现在知道的就是音乐要在这里处理下,别的没有必要,要是有别的需要处理,欢迎大家评论指教……
   今天就先到这里吧,呼呼……
分享到:
评论

相关推荐

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

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

    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开发学习笔记-音乐和音效的使用示例

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

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

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

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

    第四篇设计与优化,即第18章~第20章,内容包括Cocos2d-x中的常用设计模式、Cocos2d-x中的内存管理和性能优化。 第五篇平台移植,即第21章~第23章,内容包括从Win32到Android平台的移植、从Win32到WindowsPhone8...

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

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

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

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

    Tree's Cocos2d-x 背景音乐与音效

    ~绝对原创~ 多多关注:http://blog.csdn.net/lttree 内涵 实现背景音乐与音效的实例 用法: 新建工程,将里面resource和classes文件夹替换即可。

    Cocos2d-x 游戏Demo

    完成功能: 1)支持中文字符(前面博文指出) 2)支持图片,文字按钮,及按钮回调 3)支持场景转换(渐变) 4)支持简单距形碰撞算法 ...6) 支持消灭怪物音效 http://blog.sina.com.cn/s/blog_43bc29e70101bpma.html

    cocos2d-x记忆小游戏-资源包

    cocos2d-x记忆小游戏-资源包 资源为暴走漫画中的gif自己剪切的,音效为自己制作。

    cocos2d-x飞行射击类游戏整套素材资源包

    cocos2d-x飞行射击类游戏整套素材资源包,包含音效以及所有场景的素材

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

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

    PompaDroid2 cocos2d-x

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

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

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

    cocos2d-x 自学文档

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

    ios平台cocos2d-x播放音频、视频、音效的Demo(支持网络视频)

    最近由ios应用转做游戏,游戏开始时需要播放一个视频,由于本身cocos2d-x播放视频的相关库,在网上搜到的资料都不是很全,所以就自己弄了一个,希望对大家有帮助.MP4文件自己导入 cocos2dx版本2.1.5 xcode5

    cocos2d-x图片素材

    内包含cocos2d 图片UI基本素材 非plist 带音效

Global site tag (gtag.js) - Google Analytics