您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-X 学习笔记 17 Cocos2dx 下对sqlite3 的简单封装

2014-10-23 11:01 393 查看
typedef struct {

unsigned int soundId;

const char* soundFilePath;

}Sound;





typedef struct {

const char* musicFilePath;

} Music;



/*

* 注意,Andoird下面只支持.ogg

*

*/



static Music bgMusic =

{

"audio/mainbgmusic.ogg"

};

static Sound testSound =

{

0,

"audio/clicksound.ogg"

};



class AudioManager

{

public:

/* 注意,此方法在进入游戏前调用 */

static void init();



public:



/* 预加载 */

static void preLoadBgMusic(Music& music);

static void preLoadSound(Sound& sound);



/* 播放 */

static void playMusic(Music& music,bool loop = true);

static void playSound(Sound& sound,bool loop = false);



/* 暂停 */

static void pauseMusic(Music& music);

static void pauseSound(Sound& sound);



/* 停止 */

static void stopMusic(Music& music,bool release = true);

static void stopSound(Sound& sound);

static void stopAllSound();





/* 恢复 */

static void resumeMusic();



/* 全部结束 */

static void end();

};

</pre><br>

<pre></pre>

<br>

<pre name="code" class="cpp"><pre name="code" class="cpp">void AudioManager::init()

{

/* 例子 */

preLoadBgMusic(bgMusic);

preLoadSound(testSound);

}







/*********************************************************

一些方法的封装

*********************************************************/

void AudioManager::preLoadBgMusic(Music& music)

{

using namespace CocosDenshion;

using namespace cocos2d;

music.musicFilePath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(music.musicFilePath);



CCLOG(music.musicFilePath);



SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(music.musicFilePath);

}



void AudioManager::preLoadSound(Sound& sound)

{

using namespace CocosDenshion;

using namespace cocos2d;



sound.soundFilePath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(sound.soundFilePath);



SimpleAudioEngine::sharedEngine()->preloadEffect(sound.soundFilePath);

}



void AudioManager::playMusic(Music& music,bool loop/* default = true */)

{

using namespace CocosDenshion;



/* 先判断是否已经在播放,如果在播放,则直接返回 */

if (SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) {

return;

}



SimpleAudioEngine::sharedEngine()->playBackgroundMusic(music.musicFilePath, loop);

}





void AudioManager::playSound(Sound& sound,bool loop/* default is false */)

{

using namespace CocosDenshion;

sound.soundId = SimpleAudioEngine::sharedEngine()->playEffect(sound.soundFilePath, loop);

}





void AudioManager::pauseMusic(Music& music)

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();

}



void AudioManager::pauseSound(Sound& sound)

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->pauseEffect(sound.soundId);

}





void AudioManager::stopMusic(Music& music,bool release/* default is true */)

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(release);

}



void AudioManager::stopSound(Sound& sound)

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->stopEffect(sound.soundId);

}



void AudioManager::stopAllSound()

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->stopAllEffects();

}



void AudioManager::resumeMusic()

{

using namespace CocosDenshion;

SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();

}



void AudioManager::end()

{

using namespace CocosDenshion;



SimpleAudioEngine::sharedEngine()->end();

}

注意:

进入游戏后,开始初始化资源调用



/* 初始化游戏音效 */

AudioManager::init();

游戏切换到后台调用:

AudioManager::pauseMusic(bgMusic);



游戏重新切换回前台

AudioManager::resumeMusic();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: