Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现
HelloWorld场景就是游戏中的主菜单场景。HelloWorld.h文件代码如下:
- #define __HELLOWORLD_SCENE_H__
- #include "cocos2d.h"
- #include "SimpleAudioEngine.h" ①
- #include "SettingScene.h"
- class HelloWorld : public cocos2d::Layer
- {
- public:
- static cocos2d::Scene* createScene();
- virtual bool init(); ②
- virtual void onEnter();
- virtual void onEnterTransitionDidFinish();
- virtual void onExit();
- virtual void onExitTransitionDidStart();
- virtual void cleanup(); ③
- void menuItemHelpCallback(cocos2d::Ref* pSender);
- void menuItemStartCallback(cocos2d::Ref* pSender);
- void menuItemSettingCallback(cocos2d::Ref* pSender);
- CREATE_FUNC(HelloWorld);
- };
- bool HelloWorld::init()
- {
- if ( !Layer::init() )
- {
- return false;
- }
- log("HelloWorld init");
- Size visibleSize = Director::getInstance()->getVisibleSize();
- Point origin = Director::getInstance()->getVisibleOrigin();
- Sprite *bg = Sprite::create("background.png");
- bg->setPosition(Point(origin.x + visibleSize.width/2,
- origin.y + visibleSize.height /2));
- this->addChild(bg);
- //开始精灵
- Sprite *startSpriteNormal = Sprite::create("start-up.png");
- Sprite *startSpriteSelected = Sprite::create("start-down.png");
- MenuItemSprite *startMenuItem = MenuItemSprite::create(startSpriteNormal,
- startSpriteSelected,
- CC_CALLBACK_1(HelloWorld::menuItemStartCallback, this));
- startMenuItem->setPosition(Director::getInstance()->convertToGL(Point(700, 170)));
- // 设置图片菜单
- MenuItemImage *settingMenuItem = MenuItemImage::create(
- "setting-up.png",
- "setting-down.png",
- CC_CALLBACK_1(HelloWorld::menuItemSettingCallback, this));
- settingMenuItem->setPosition(Director::getInstance()->convertToGL(Point(480, 400)));
- // 帮助图片菜单
- MenuItemImage *helpMenuItem = MenuItemImage::create(
- "help-up.png",
- "help-down.png",
- CC_CALLBACK_1(HelloWorld::menuItemHelpCallback, this));
- helpMenuItem->setPosition(Director::getInstance()->convertToGL(Point(860, 480)));
- Menu* mu = Menu::create(startMenuItem, settingMenuItem, helpMenuItem, NULL);
- mu->setPosition(Point::ZERO);
- this->addChild(mu);
- return true;
- }
- void HelloWorld::menuItemSettingCallback(Ref* pSender)
- {
- auto sc = Setting::createScene();
- auto reScene = TransitionJumpZoom::create(1.0f, sc);
- Director::getInstance()->pushScene(reScene);
- SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav"); ②
- }
- void HelloWorld::menuItemHelpCallback(Ref* pSender)
- {
- MenuItem* item = (MenuItem*)pSender;
- log("Touch Help %p", item);
- SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav"); ③
- }
- void HelloWorld::menuItemStartCallback(Ref* pSender)
- {
- MenuItem* item = (MenuItem*)pSender;
- log("Touch Start %p", item);
- SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav"); ④
- }
- void HelloWorld::onEnter()
- {
- Layer::onEnter();
- log("HelloWorld onEnter");
- }
- void HelloWorld::onEnterTransitionDidFinish()
- {
- Layer::onEnterTransitionDidFinish();
- log("HelloWorld onEnterTransitionDidFinish");
- //播放
- SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true); ⑤
- }
- void HelloWorld::onExit()
- {
- Layer::onExit();
- log("HelloWorld onExit");
- }
- void HelloWorld::onExitTransitionDidStart()
- {
- Layer::onExitTransitionDidStart();
- log("HelloWorld onExitTransitionDidStart");
- }
- void HelloWorld::cleanup()
- {
- Layer::cleanup();
- log("HelloWorld cleanup");
- //停止
- SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3"); ⑥
- }
上述代码第①行using namespace CocosDenshion是使用命名空间CocosDenshion,它是CocosDenshion引擎所需要的。代码②、③、④行SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav")是在点击菜单时候播放音效。第⑤行代码是onEnterTransitionDidFinish()函数中播放背景音乐。第⑥行代码是cleanup()函数中停止播放背景音乐。
Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现的更多相关文章
- Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现
为了进一步了解背景音乐和音效播放的,我们通过一个实例给大家介绍一下.如下图所示有两个场景:HelloWorld和Setting.在HelloWorld场景点击“游戏设置”菜单可以切换到Setting场 ...
- Cocos2d-x实例:设置背景音乐与音效-设置场景实现
设置场景(Setting),Setting.h文件代码如下: #ifndef __Setting_SCENE_H__ #define __Setting_SCENE_H__ #include &quo ...
- Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置
UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活.UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵 ...
- Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)
游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...
- android开发之背景音乐与音效
android开发之背景音乐与音效 一:添加背景音乐(MediaPlayer) MediaPlayer class can be used to control playback of audio/v ...
- 将 SQL Server 实例设置为自动启动(SQL Server 配置管理器)
本主题说明如何使用 SQL Server 配置管理器在 SQL Server 2012 中将 SQL Server 实例设置为自动启动. 在安装过程中,SQL Server 通常配置为自动启动. 如果 ...
- ORACLE默认实例设置--linux
数据库实例多了之后,每次export的时候,显示的ORACLE_SID总不是自己经常用的那个,要是能让默认的自定义就好了. 现在就解释一下在linux环境中如何定义: 1.su - oracle 2. ...
- 关于Cocos2d-x中背景音乐和音效的添加
1.首先引入头文件和命名空间 #include "SimpleAudioEngine.h" using namespace CocosDenshion; 2.在GameScene. ...
- 一个filebeat实例 设置多topic设置
方法1:一实例多topic: https://discuss.elastic.co/t/filebeat-5-0-output-to-kafka-multiple-topics/67934 The d ...
随机推荐
- Codeforces Round #280 (Div. 2) E. Vanya and Field 数学
E. Vanya and Field Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/492/pr ...
- jQuery Mobile的学习 jQuery Mobile工具栏、标题栏、页脚栏的定位学习
程序猿都非常赖.你懂的! 近期在做html5页面的开发,主要做智能终端设备的开发.对于内容比較少的页面,领导提出了要将页眉和页脚定位到网页的最上方和最下方.对于这种要求,事实上一点也只是分.但对于新手 ...
- 关于AS3的垃圾回收
FlashPlayer运行GC(Gabage Collection)的时间并不固定,它会根据你的内存的占用情况来决定运行GC的时间.它会根据用户机器的内存值来设定一个阀值,然后将程序的占用内存量保存在 ...
- IntellijIdea中常用的快捷键
快速查找类:Ctrl+N 提示:Ctrl+Space 提示:Ctrl+Shift+Space 查看documentation:Ctrl+Q 查找类.方法.变量的引用:Alt+F7 定位类.方法.变量的 ...
- RDDTest.scala
/** * Created by root on 9/7/15. */ import org.apache.spark.SparkContext import org.apache.spark.Spa ...
- Ruby on Rails Tutorial 第一章 之 搭建开发环境
云端开发环境,Cloud9(https://ide.c9.io/).这个开发环境预先安装好了Rails开发所需要的大多数软件,包括Ruby.RubyGems和Git,需要自己安装Rails. 1.安装 ...
- String StringBuilder以及StringBuffer
例一:[看了威哥视频,下面更好理解] package sunjava; public class String_test { public static void main(String[] args ...
- PHP.4-DIV+CSS标准网页布局准备工作(下)
DIV+CSS标准网页布局准备工作 区块属性(区块模型) 属 性 描 述 Margin(注) 是定义区块外边界与上级元素距离的属性,用1到4个值来设置元素的边界,每个值都是长度.百分比或者auto,百 ...
- proxy代理类
package cn.hncu.proxy.rent; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Meth ...
- Android进阶笔记06:Android 实现扫描二维码实现网页登录
一. 扫描二维码登录的实现机制: 详细流程图: (1)PC端打开网页(显示出二维码),这时候会保存对应的randnumber(比如:12345678). (2)Android客户端扫码登录,Andro ...