看一下效果:
实现思路:
当单击后游戏中播放背景音乐,并且背景音乐切换按钮由变成
当单击后停止播放背景音乐,并且背景音乐切换按钮由变成
当游戏进入后台后停止播放背景音乐
当游戏恢复后继续播放背景音乐
实现代码:
在SceneGame类中定义一个成员函数Voice(CCObject*)用于实现背景音乐的切换,Voice(CCObject*)中的代码
//播放背景音乐 void SceneGame::Voice(CCObject*) { static int i = 0; if(0 == i) { //播放背景音乐 CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("floor.wav",true); //显示停止播放背景音乐按钮 itemCloseVoice->setVisible(true); i++; } else { //停止播放背景音乐 CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(); //隐藏停止播放背景音乐按钮 itemCloseVoice->setVisible(false); i--; } }
将AppDelegate.cpp下的函数void AppDelegate::applicationDidEnterBackground() 中的代码
// 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()->stopAnimation(); // if you use SimpleAudioEngine,it must be pause //SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); }
改成(去掉代码前的注释)
// This function will be called when the app is inactive. When comes a phone call,it must be pause SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); }
将AppDelegate.cpp下的函数void AppDelegate::AppDelegate::applicationWillEnterForeground() 中的代码
// this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); // if you use SimpleAudioEngine,it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }
改成(去掉代码前的注释)
// this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); // if you use SimpleAudioEngine,it must resume here SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();