標籤:cocos2d-x 手機遊戲 遊戲 移動
為了進一步瞭解背景音樂和音效播放的,我們通過一個執行個體給大家介紹一下。如所示有兩個情境:HelloWorld和Setting。在HelloWorld情境點擊“遊戲設定”菜單可以切換到Setting情境,在Setting情境中可以設定是否播放背景音樂和音效,設定完成後點擊“OK”菜單可以返回到HelloWorld情境。
我們需要在AppDelegate中實現背景音樂播放暫停與繼續函數,AppDelegate.h檔案代碼如下:
#ifndef _APP_DELEGATE_H_#define _APP_DELEGATE_H_#include "cocos2d.h"#include "SimpleAudioEngine.h"①using namespace CocosDenshion;②class AppDelegate : private cocos2d::Application{public: AppDelegate(); virtual ~AppDelegate(); virtual bool applicationDidFinishLaunching(); virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground();};#endif // _APP_DELEGATE_H_
上述代碼第①行是引入標頭檔SimpleAudioEngine.h,它是SimpleAudioEngine所需要的。第②行代碼using namespace CocosDenshion是使用命名空間CocosDenshion,它是CocosDenshion引擎所需要的。
#include "AppDelegate.h"#include "HelloWorldScene.h"USING_NS_CC;AppDelegate::AppDelegate() {}AppDelegate::~AppDelegate() {}bool AppDelegate::applicationDidFinishLaunching() {①… … // run director->runWithScene(scene);//初始化 背景音樂SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");②SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Synth.mp3");③//初始化 音效SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");④ return true;}void AppDelegate::applicationDidEnterBackground() {⑤ Director::getInstance()->stopAnimation(); SimpleAudioEngine::getInstance()->pauseBackgroundMusic();⑥}void AppDelegate::applicationWillEnterForeground() {⑦ Director::getInstance()->startAnimation(); SimpleAudioEngine::getInstance()->resumeBackgroundMusic();⑧}
我們在上述代碼第①行是聲明applicationDidFinishLaunching()函數,這個函數是在遊戲啟動時候調用。第②~④行代碼是初始化背景音樂和音效檔案。
第⑤行代碼是聲明applicationDidEnterBackground()是遊戲進入到後天時候調用函數,在這個函數中需要停止動畫和暫停背景音樂播放。第⑦行代碼是聲明applicationWillEnterForeground()是遊戲從後天回到前台時候調用,在這個函數中需要繼續動畫和背景音樂播放。
更多內容請關注Cocos2d-x系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》本書交流討論網站:http://www.cocoagame.net歡迎加入cocos2d-x技術討論群:257760386、327403678