`

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

 
阅读更多

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()函数中停止播放背景音乐。

 

 

 

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386


《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

 

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台
分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    Cocos2d-x实战:C++卷(2版)源代码

    6. **声音与音乐**:Cocos2d-x支持音频播放,包括背景音乐和音效,可以实现音效的同步和控制。 7. **资源管理**:有效管理和加载图片、音频、字体等资源是游戏开发的关键,Cocos2d-x提供了资源管理工具和缓存机制。...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...

    Cocos2d-x实战:Lua卷(第2版)书籍代码

    这是书籍 Cocos2d-x实战:Lua卷(第2版)的代码,关东升老师的,这里分享出来。除了章节的小示例代码外,还有一个《迷失航线》的游戏示例代码。这是一个下载地址。

    《Cocos2d-x实战 Lua卷》源码.7z

    这本书的源码提供了丰富的实例和练习,帮助读者更好地理解和掌握Cocos2d-x与Lua的结合使用。 源码是学习编程的重要资源,特别是对于游戏开发来说,通过实际代码可以深入理解引擎的工作原理和Lua在游戏逻辑中的应用...

    cocos2d-x实战 c++卷教程及完整源码

    cocos2d-x实战 c++卷教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 3、根据书籍...

    Cocos2d-x实战_Lua卷 _第2版

    《Cocos2d-x实战_Lua卷_第2版》是一本专为游戏开发者准备的指南,主要聚焦于使用Cocos2d-x框架与Lua语言进行游戏开发。Cocos2d-x是一个开源的游戏开发框架,它允许开发者用C++、Lua或者JavaScript编写游戏,并且可以...

    Cocos2d-x实战:Lua卷

    3. **Cocos2d-x与Lua的集成**:学习如何配置Cocos2d-x项目以支持Lua,包括安装tolua++,设置Lua脚本路径,以及在C++代码中调用Lua函数和在Lua中调用C++函数的方法。 4. **游戏逻辑实现**:通过Lua编写游戏的逻辑...

    Cocos2d-x实战C++卷关东升著完整版pdf

    同时,音效和音乐管理也是游戏体验的重要组成部分,书中会介绍如何使用Cocos2d-x的音频API来播放和控制音频资源。 在实际项目开发中,内存管理和性能优化是关键。本书可能会详细讲解Cocos2d-x中的内存管理机制,如...

    关东升-Cocos2d-x实战:Lua卷

    4. **游戏对象与场景管理**:详细解释如何使用Cocos2d-x创建游戏对象(如精灵、按钮等),以及如何管理和切换不同的游戏场景。 5. **物理引擎与碰撞检测**:这一部分将介绍如何使用Cocos2d-x内置的物理引擎实现物体...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    在学习和使用cocos2d-x 3.8时,开发者需要注意与最新版本的差异,例如API的变化、新功能的缺失等。同时,由于3.8是旧版本,可能不再受到官方的维护和支持,所以在解决特定问题时可能需要查阅旧的文档或社区论坛。 ...

    cocos2d-x windows vs2010配置

    接下来,把 F:\cocos2d-1.0.1-x-0.9.1\cocos2dx 和 F:\cocos2d-1.0.1-x-0.9.1\CocosDenshion 这两个文件夹里面的全部内容拷贝一份到 D:\cocos2d-xProjects\HelloWorld 中去。 九、设置静态链接库 接下来,打开 F:\...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    本书会介绍Cocos2d-x的音频API,包括音乐播放、音效处理以及音效资源的加载和管理。 此外,书中还会涉及用户输入处理、触摸事件、键盘事件的响应,以及如何实现游戏的交互功能。对于网络编程,Cocos2d-x提供了网络...

    cocos2d-x-cocos2d-x-2.2.2.zip

    cocos2d-x不仅适用于游戏开发,还可以用于创建教育软件、互动媒体和其他2D图形应用,其强大的场景管理、精灵(Sprite)系统和粒子效果等功能,使得开发者能够快速构建各种复杂的2D场景。 总的来说,cocos2d-x 2.2.2...

    [Cocos2d-X] Cocos2d-X 实例开发初学者指南 (英文版)

    [Packt Publishing] Cocos2d-X 实例开发初学者指南 (英文版) [Packt Publishing] Cocos2d-X by Example Beginner's Guide (E-Book) ☆ 出版信息:☆ [作者信息] Roger Engelbert [出版机构] Packt Publishing ...

    Cocos2d-x教程

    - 第1章:Hello Cocos2d-x - **引擎简介**:介绍Cocos2d-x的基本概念和发展历史。 - **开发环境搭建**:详细步骤说明如何搭建Cocos2d-x开发环境。 - **HelloWorld示例**:通过第一个示例程序“HelloWorld”展示...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    6. **音频和音乐**:介绍如何在Cocos2d-x中播放背景音乐和音效,以及音乐的控制和管理。 7. **网络与存储**:讨论如何进行网络通信,如下载更新、保存和读取游戏数据。 8. **性能优化**:提供关于代码优化、内存...

    Cocos2D-X开发学习笔记-音乐和音效的使用示例

    在Cocos2D-X中,音乐和音效的管理主要通过`cocos2d::AudioEngine`类来完成。这个类提供了一系列的方法用于播放、暂停、停止以及控制音量等操作。 1. **音乐播放**: - `playBackgroundMusic()`:用于播放背景音乐...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    Flash2Cocos2d-x 1.3版本是这个工具的一个重要迭代,它提供了一系列增强的功能和优化,旨在帮助开发者更好地将Adobe Flash的动画效果和交互性引入到cocos2d-x的游戏场景中。通过这个工具,开发者可以将精心制作的...

    cocos2d-x-3.1.zip

    8. **音频支持**:支持播放背景音乐和音效,提供了简单的音频API。 9. **资源管理**:使用ResourceManager来加载和管理游戏资源,如图片、音频、字体等。 10. **性能优化**:Cocos2d-x 3.1对内存管理和渲染效率...

Global site tag (gtag.js) - Google Analytics