欢迎光临Software MyZone,有问题可留言或到站点论坛发帖,争取第一时间帮忙解决 || 站点论坛:火龙论坛 || 淘宝小店:应小心的易淘屋 【欢迎大家提建设性意见】

音乐库:MusicManager

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

欢迎热爱编程的朋友们参与到cocos2d-x编程中,为了给大家提供良好的交流环境,网站以开启QQ群
Software MyZone:66202765(群号,欢迎加入,若满,请加1群)
Software MyZone 1群(2dx):286504621
【加群请写:Software MyZone或者是firedragonpzy】
淘宝店:【应小心的易淘屋】初次开店,大家多多支持……
群论坛:火龙论坛正试运营阶段,欢迎大家多提些建设性意见……

 

这里主要是游戏中音乐音效的处理,先提供工具类与大家分享,不明白的可以参考站点文章,之前挨个分析过。贡献出来,大家直接copy用就好了。之前也写过一个,和和UserDefault的加密混在一块,现在分离出来,并且新增播放另外音乐的功能。具体代码中使用的UtilTools::setIntegerForKey,请从:工具库:UtilTools获取,
使用注意事项【处理下两个静态属性】:

const char* MusicManager::m_cCurMusic = MUSIC_BG;
bool MusicManager::s_bIsMusicPlaying = false;

下面贴出代码:

#ifndef Game_MusicManager_h
#define Game_MusicManager_h

#include "UtilTools/RConfig.h"

USING_NS_CC;
using namespace CocosDenshion;

class MusicManager{
public:
	// about music
	static bool s_bIsMusicPlaying;
private:
	// about music and effect
	static const char *m_cCurMusic;

public:
	// about music and effect
	static void playBackgroundMusic(const char* pszFilePath,bool bLoop)
	{
		SimpleAudioEngine::sharedEngine()->playBackgroundMusic(pszFilePath,bLoop);
		MusicManager::m_cCurMusic = pszFilePath;
		UtilTools::setIntegerForKey(XML_MUSIC_STATUS,FDTRUE);
	}

	static void playAnotherBackgroundMusic(const char* pszFilePath,bool bLoop)
	{
		SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
		MusicManager::playBackgroundMusic(pszFilePath,true);
	}

	static void pauseBackgroundMusic()
	{
		SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
		UtilTools::setIntegerForKey(XML_MUSIC_STATUS,FDFALSE);
		MusicManager::s_bIsMusicPlaying = true;
	}

	static void pauseBackgroundMusicForEnterBackground()
	{
		SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	}

	static void resumeBackgroundMusic()
	{
		if (MusicManager::s_bIsMusicPlaying)
		{
			SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
			UtilTools::setIntegerForKey(XML_MUSIC_STATUS,FDTRUE);
		}else
		{
			MusicManager::playBackgroundMusic(MusicManager::m_cCurMusic,true);
		}
		MusicManager::s_bIsMusicPlaying = false;
	}

	static void resumeBackgroundMusicForEnterForeground()
	{
		if (UtilTools::getIntegerForKey(XML_MUSIC_STATUS))
		{
			SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
		}
	}

	static void stopBackgroundMusic()
	{
		SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
		UtilTools::setIntegerForKey(XML_MUSIC_STATUS,FDFALSE);
	}

	static void playEffect(const char* pszFilePath)
	{
		if (UtilTools::getIntegerForKey(XML_EFFECT_STATUS))
		{
			SimpleAudioEngine::sharedEngine()->playEffect(pszFilePath);
		}
	}
};
#endif

简单先这些,后期补充,包括使用什么的,不断完善中……这个是最简单的。。。