zoukankan      html  css  js  c++  java
  • Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现

    为了进一步了解背景音乐和音效播放的,我们通过一个实例给大家介绍一下。如下图所示有两个场景:HelloWorld和Setting。在HelloWorld场景点击“游戏设置”菜单可以切换到Setting场景,在Setting场景中可以设置是否播放背景音乐和音效,设置完成后点击“OK”菜单可以返回到HelloWorld场景。 

     







    我们需要在AppDelegate中实现背景音乐播放暂停与继续函数,AppDelegate.h文件代码如下:

    [html] view plaincopy
     
    1. #ifndef  _APP_DELEGATE_H_  
    2. #define  _APP_DELEGATE_H_  
    3.   
    4.   
    5. #include "cocos2d.h"  
    6. #include "SimpleAudioEngine.h"                                          ①  
    7.   
    8.   
    9. using namespace CocosDenshion;                                          ②  
    10. class  AppDelegate : private cocos2d::Application  
    11. {  
    12. public:  
    13.     AppDelegate();  
    14.     virtual ~AppDelegate();  
    15.   
    16.   
    17.     virtual bool applicationDidFinishLaunching();  
    18.     virtual void applicationDidEnterBackground();  
    19.     virtual void applicationWillEnterForeground();  
    20. };  
    21.   
    22.   
    23. #endif // _APP_DELEGATE_H_  



    上述代码第①行是引入头文件SimpleAudioEngine.h,它是SimpleAudioEngine所需要的。第②行代码using namespace CocosDenshion是使用命名空间CocosDenshion,它是CocosDenshion引擎所需要的。

    [html] view plaincopy
     
    1. #include "AppDelegate.h"  
    2. #include "HelloWorldScene.h"  
    3.   
    4.   
    5. USING_NS_CC;  
    6.   
    7.   
    8. AppDelegate::AppDelegate() {  
    9.   
    10.   
    11. }  
    12.   
    13.   
    14. AppDelegate::~AppDelegate()   
    15. {  
    16. }  
    17.   
    18.   
    19. bool AppDelegate::applicationDidFinishLaunching() {                             ①  
    20. … …  
    21.     // run  
    22.     director->runWithScene(scene);  
    23.       
    24.     //初始化 背景音乐  
    25.     SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");      ②  
    26.     SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Synth.mp3");     ③  
    27.     //初始化 音效  
    28.     SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");                   ④  
    29.   
    30.   
    31.     return true;  
    32. }  
    33.   
    34.   
    35. void AppDelegate::applicationDidEnterBackground() {                             ⑤  
    36.     Director::getInstance()->stopAnimation();  
    37.   
    38.   
    39.     SimpleAudioEngine::getInstance()->pauseBackgroundMusic();                    ⑥  
    40. }  
    41.   
    42.   
    43. void AppDelegate::applicationWillEnterForeground() {                                ⑦  
    44.     Director::getInstance()->startAnimation();  
    45.   
    46.   
    47.     SimpleAudioEngine::getInstance()->resumeBackgroundMusic();                   ⑧  
    48. }  



    我们在上述代码第①行是声明applicationDidFinishLaunching()函数,这个函数是在游戏启动时候调用。第②~④行代码是初始化背景音乐和音效文件。

    第⑤行代码是声明applicationDidEnterBackground()是游戏进入到后天时候调用函数,在这个函数中需要停止动画和暂停背景音乐播放。第⑦行代码是声明applicationWillEnterForeground()是游戏从后天回到前台时候调用,在这个函数中需要继续动画和背景音乐播放。

    更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》
    本书交流讨论网站:http://www.cocoagame.net
    欢迎加入cocos2d-x技术讨论群:257760386、327403678
  • 相关阅读:
    经典数组排序方法------快速排序法
    经典数组排序方法------选择排序法,冒泡排序法
    两个非常好的bootstrap模板,外送大话设计模式!
    商场促销-策略模式(和简单工厂模式很像的哇) C#
    代码无错就是优?简单工厂模式 C#
    大话设计模式(C#)
    马加爵遗书 VS 药家鑫遗书
    GIT 常用命令
    Random快速产生相同随机数的原因及解决方案
    JSON WEB TOKEN,简单谈谈TOKEN的使用及在C#中的实现
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3893019.html
Copyright © 2011-2022 走看看