文档章节

Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现

智捷课堂
 智捷课堂
发布于 2014/08/05 19:42
字数 468
阅读 128
收藏 0

HelloWorld场景就是游戏中的主菜单场景。HelloWorld.h文件代码如下:

[html] view plaincopy在CODE上查看代码片派生到我的代码片

 

  1. #define __HELLOWORLD_SCENE_H__  

  2.   

  3.   

  4. #include "cocos2d.h"  

  5. #include "SimpleAudioEngine.h"                                          ①  

  6. #include "SettingScene.h"  

  7.   

  8.   

  9. class HelloWorld : public cocos2d::Layer  

  10. {  

  11. public:  

  12.     static cocos2d::Scene* createScene();  

  13.   

  14.   

  15.     virtual bool init();                                                    ②  

  16.     virtual void onEnter();  

  17.     virtual void onEnterTransitionDidFinish();  

  18.     virtual void onExit();  

  19.     virtual void onExitTransitionDidStart();  

  20.     virtual void cleanup();                                                 ③  

  21.   

  22.   

  23.     void menuItemHelpCallback(cocos2d::Ref* pSender);  

  24.     void menuItemStartCallback(cocos2d::Ref* pSender);  

  25.     void menuItemSettingCallback(cocos2d::Ref* pSender);  

  26.     CREATE_FUNC(HelloWorld);  

  27. };  

  28.   

  29.   

  30.   

  31.   

  32. bool HelloWorld::init()  

  33. {  

  34.     if ( !Layer::init() )  

  35.     {  

  36.         return false;  

  37.     }  

  38.   

  39.   

  40.     log("HelloWorld init");  

  41.   

  42.   

  43.     Size visibleSize = Director::getInstance()->getVisibleSize();  

  44.     Point origin = Director::getInstance()->getVisibleOrigin();  

  45.   

  46.   

  47.     Sprite *bg = Sprite::create("background.png");  

  48.   

  49.   

  50.     bg->setPosition(Point(origin.x + visibleSize.width/2,  

  51.         origin.y + visibleSize.height /2));  

  52.     this->addChild(bg);  

  53.   

  54.   

  55.     //开始精灵  

  56.     Sprite *startSpriteNormal = Sprite::create("start-up.png");  

  57.     Sprite *startSpriteSelected = Sprite::create("start-down.png");  

  58.   

  59.   

  60.     MenuItemSprite *startMenuItem = MenuItemSprite::create(startSpriteNormal,   

  61.         startSpriteSelected,  

  62.         CC_CALLBACK_1(HelloWorld::menuItemStartCallback, this));  

  63.     startMenuItem->setPosition(Director::getInstance()->convertToGL(Point(700, 170)));  

  64.   

  65.   

  66.     // 设置图片菜单  

  67.     MenuItemImage *settingMenuItem = MenuItemImage::create(  

  68.         "setting-up.png",  

  69.         "setting-down.png",  

  70.         CC_CALLBACK_1(HelloWorld::menuItemSettingCallback, this));   

  71.     settingMenuItem->setPosition(Director::getInstance()->convertToGL(Point(480, 400)));  

  72.   

  73.   

  74.     // 帮助图片菜单  

  75.     MenuItemImage *helpMenuItem = MenuItemImage::create(  

  76.         "help-up.png",  

  77.         "help-down.png",  

  78.         CC_CALLBACK_1(HelloWorld::menuItemHelpCallback, this));   

  79.     helpMenuItem->setPosition(Director::getInstance()->convertToGL(Point(860, 480)));  

  80.   

  81.   

  82.     Menu* mu = Menu::create(startMenuItem, settingMenuItem, helpMenuItem, NULL);      

  83.     mu->setPosition(Point::ZERO);  

  84.     this->addChild(mu);  

  85.   

  86.   

  87.     return true;  

  88. }  

  89.   

  90.   

  91. void HelloWorld::menuItemSettingCallback(Ref* pSender)  

  92. {     

  93.     auto sc = Setting::createScene();  

  94.     auto reScene = TransitionJumpZoom::create(1.0f, sc);  

  95.     Director::getInstance()->pushScene(reScene);  

  96.     SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");                  ②  

  97. }  

  98.   

  99.   

  100. void HelloWorld::menuItemHelpCallback(Ref* pSender)  

  101. {  

  102.     MenuItem* item = (MenuItem*)pSender;  

  103.     log("Touch Help %p", item);  

  104.     SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");                  ③  

  105. }  

  106.   

  107.   

  108. void HelloWorld::menuItemStartCallback(Ref* pSender)  

  109. {  

  110.     MenuItem* item = (MenuItem*)pSender;  

  111.     log("Touch Start %p", item);  

  112.     SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");                  ④  

  113. }  

  114.   

  115.   

  116. void HelloWorld::onEnter()  

  117. {  

  118.     Layer::onEnter();  

  119.     log("HelloWorld onEnter");        

  120. }  

  121.   

  122.   

  123. void HelloWorld::onEnterTransitionDidFinish()  

  124. {  

  125.     Layer::onEnterTransitionDidFinish();  

  126.     log("HelloWorld onEnterTransitionDidFinish");  

  127.     //播放  

  128.     SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true);       ⑤  

  129. }  

  130.   

  131.   

  132. void HelloWorld::onExit()  

  133. {  

  134.     Layer::onExit();  

  135.     log("HelloWorld onExit");  

  136. }  

  137.   

  138.   

  139. void HelloWorld::onExitTransitionDidStart()  

  140. {  

  141.     Layer::onExitTransitionDidStart();  

  142.     log("HelloWorld onExitTransitionDidStart");  

  143. }  

  144.   

  145.   

  146. void HelloWorld::cleanup()  

  147. {  

  148.     Layer::cleanup();  

  149.     log("HelloWorld cleanup");    

  150.     //停止  

  151.     SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3");         ⑥  

  152. }  



上述代码第①行using namespace CocosDenshion是使用命名空间CocosDenshion,它是CocosDenshion引擎所需要的。代码②、③、④行SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav")是在点击菜单时候播放音效。第⑤行代码是onEnterTransitionDidFinish()函数中播放背景音乐。第⑥行代码是cleanup()函数中停止播放背景音乐。

 

 

 

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入cocos2d-x技术讨论群:257760386、327403678

 


© 著作权归作者所有

智捷课堂

智捷课堂

粉丝 40
博文 239
码字总数 215495
作品 0
东城
私信 提问
加载中

评论(0)

Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现

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

智捷课堂
2014/08/05
42
0
Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置

UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活。UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵等...

智捷课堂
2014/10/20
102
0
Cocos2d-x实例:设置背景音乐与音效-设置场景实现

设置场景(Setting),Setting.h文件代码如下: [html] view plaincopy #ifndef SettingSCENEH #define SettingSCENEH #include "cocos2d.h" #include "SimpleAudioEngine.h" class Setting ......

智捷课堂
2014/08/05
94
0
Cocos2d-JS使用CocosDenshion引擎

Cocos2d-JS提供了一个音频CocosDenshion引擎。具体使用的API是cc.AudioEngine。cc.AudioEngine有几个常用的函数: playMusic(url, loop)。播放背景音乐,参数url是播放文件的路径,参数loop控...

智捷课堂
2015/04/06
326
0
实例介绍Cocos2d-x开关菜单

开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单。它可以通过下面的函数创建: [html] view plaincopy static MenuItemToggle*createWithCallback ( const ccMenuCal...

智捷课堂
2014/05/13
1.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

普宁哪里可以开餐饮费发票-中国新闻网

普宁哪里可以开餐饮费发票【139 * 7⒏ б2 * 15 З9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

17054723687
34分钟前
21
0
资兴哪里可以开餐饮费发票-中国新闻网

资兴哪里可以开餐饮费发票【139 * 7⒏ б2 * 15 З9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

17054723480
43分钟前
32
0
沅江哪里可以开餐饮费发票-中国新闻网

沅江哪里可以开餐饮费发票【139 * 7⒏ б2 * 15 З9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

17054723685
44分钟前
36
0
天津哪里可以开餐饮费发票-中国新闻网

天津哪里可以开餐饮费发票【139 * 7⒏ б2 * 15 З9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

17054723617
44分钟前
33
0
汨罗哪里可以开餐饮费发票-中国新闻网

汨罗哪里可以开餐饮费发票【139 * 7⒏ б2 * 15 З9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

17060820048
44分钟前
38
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部