`
fireDragonpzy
  • 浏览: 462689 次
  • 性别: 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 3.x游戏开发实战pdf含目录

    本书会介绍Cocos2d-x的音频API,包括音乐播放、音效处理以及音效资源的加载和管理。 此外,书中还会涉及用户输入处理、触摸事件、键盘事件的响应,以及如何实现游戏的交互功能。对于网络编程,Cocos2d-x提供了网络...

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

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

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

    在Cocos2d-x中,C++作为主要的编程语言,相比初版,第二版可能涵盖了更多Cocos2d-x的新特性和优化。C++的使用可以提供更好的性能和更直接的内存管理,同时也能充分利用面向对象编程的特性来构建复杂的游戏逻辑。 源...

    Cocos2d-x实战C++卷关东升著完整版pdf

    本书可能会详细讲解Cocos2d-x中的内存管理机制,如自动引用计数(ARC)和弱引用,以及如何通过优化代码和数据结构来提高游戏运行效率。 最后,还会涉及到Cocos2d-x的构建系统和发布流程,包括多平台支持、资源打包...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    8. **Audio支持**:支持音频播放和音效处理,方便游戏中的音乐和声音效果实现。 9. **脚本支持**:通过tolua++和jsb,开发者可以选择使用Lua或JavaScript进行游戏逻辑编写,降低开发门槛。 10. **资源管理**:内置...

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

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

    cocos2d-x-3.1.zip

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

    Cocos2d-x游戏引擎实战开发炸弹超人

    《Cocos2d-x游戏引擎实战开发炸弹超人》是一个基于Cocos2d-x框架的2D游戏开发教程,旨在帮助开发者深入理解并熟练运用这一强大的游戏引擎。Cocos2d-x是一个开源、跨平台的2D游戏开发工具,它支持iOS、Android、...

    cocos2d-x-2.1.4.rar

    《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...

    cocos2d-x 跑酷源码

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

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

    《Cocos2D-X游戏开发技术精解》是一本深入探讨Cocos2D-X游戏引擎的专著。Cocos2D-X是世界上最流行的开源游戏开发框架之一,它基于C++,并提供了Python和Lua的绑定,让开发者可以利用这些语言进行高效的游戏开发。这...

    Cocos2d-x实战 JS卷

    8. **网络编程**:学习如何在Cocos2d-x中实现网络通信,包括HTTP请求、WebSocket连接,以及游戏中的数据同步。 9. **音频播放**:掌握音频管理,包括背景音乐、音效的播放与控制,提升游戏体验。 10. **性能优化**...

    cocos2d-x游戏源码横版游戏源码仙落凡尘

    游戏源码中包含了大量的图像资源,这些图片资源是构建游戏场景、角色、特效等视觉元素的基础,通过解析这些资源,我们可以了解如何在cocos2d-x中加载和管理图片资源,以及如何实现动态动画效果。 在cocos2d-x中,...

    cocos2d-x-3.13.1.zip

    cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,使得开发者能够更高效地构建游戏。 一、...

    cocos2d-x 《保卫萝卜》源代码

    总的来说,《保卫萝卜》的源代码揭示了Cocos2d-x在2D游戏开发中的应用,涵盖了游戏设计、动画、音频处理、跨平台发布等多个方面的知识。通过研究这套源代码,开发者可以学习到如何利用Cocos2d-x框架构建一款功能完备...

    Cocos2D-X游戏开发技术精解学习

    书中会讲解如何使用Cocos2D-X的音频API播放背景音乐和音效,以及如何实现音频的同步。 为了增强游戏的互动性,事件处理和触摸输入的响应机制是必不可少的。这部分内容将教会读者如何监听和处理用户输入,创建响应...

    cocos2d-x 案例开发大全 第二章(源码)

    3. **场景和层管理**:在cocos2d-x中,游戏逻辑通常组织在不同的场景(Scene)和层(Layer)中。场景是游戏的主要容器,而层则是场景中的子容器,用于承载具体的游戏元素和逻辑。 4. **精灵(Sprite)和动画(Animation)**...

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

    在这个项目实战中,我们将深入探讨如何利用Cocos2d-x 3.2版本构建一款完整的射击游戏。 首先,Cocos2d-x的场景管理是游戏开发的基础。在《迷失航线》中,游戏会通过Scene对象来组织不同的游戏阶段,如主菜单、游戏...

    cocos2d-x手机游戏开发

    cocos2d-x提供了一套音频管理接口,支持播放背景音乐和音效,同时可以控制音量和播放状态,以实现沉浸式的游戏体验。 除此之外,cocos2d-x还支持事件处理,如触摸事件和键盘事件,这使得游戏可以响应用户的输入。...

    Cocos2d-x背景音乐播放

    本文将深入探讨如何在Cocos2d-x中实现背景音乐的播放,并提供相关的示例代码供初学者参考。 1. **Cocos2d-x的音频支持** Cocos2d-x提供了强大的音频处理功能,通过`SimpleAudioEngine`类,开发者可以方便地进行...

Global site tag (gtag.js) - Google Analytics