《Cocos2d-x游戏开发实战精解》学习笔记1--在Cocos2d中显示图像

《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字

之前的内容主要都是介绍如何在屏幕上显示图像,事实上除了图像之外,音乐的播放也可以被理解为一种显示的方式,本节将学习在Cocos2d-x中播放声音的方法。

(1)在HelloWorld.h中对HelloWorld类进行如下定义:

class HelloWorld : public Cocos2d::Layer
{
public:
       bool is_paused;
    static Cocos2d::Scene* createScene();
    virtual bool init();
       void play(Cocos2d::Object* pSender);         //播放音乐
       void stop(Cocos2d::Object* pSender);         //停止音乐
       void pause(Cocos2d::Object* pSender);              //暂停
    CREATE_FUNC(HelloWorld);
};
(2)在HelloWorldScene.cpp中实现这些方法,如范例3-7所示,完整代码可见源文件本章目录下的项目ChapterThree05。

【范例3-7 在Cocos2d-x中实现音乐的播放和暂停等操作】

#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
USING_NS_CC;
Scene* HelloWorld::createScene()
{
    auto scene = Scene::create();
    auto layer = HelloWorld::create();
    scene->addChild(layer);
    return scene;
}
bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
       is_paused = false;
       //播放按钮
       auto* label_play = Label::create();
       auto* pLabel_play = MenuItemLabel::create(label_play, this, menu_selector(HelloWorld::play));
       auto* button_play = Menu::create(pLabel_play, NULL);
       button_play->setPosition(,);
       addChild(button_play);
       //暂停按钮
       auto* label_pause = Label::create();
       auto* pLabel_pause = MenuItemLabel::create(label_pause, this, menu_selector(HelloWorld::pause
       auto* button_pause = Menu::create(pLabel_pause, NULL);
       button_pause->setPosition(,);
       addChild(button_pause);
       //停止按钮
       auto* label_stop = Label::create();
       auto* pLabel_stop = MenuItemLabel::create(label_stop, this, menu_selector(HelloWorld::stop));
       auto* button_stop = Menu::create(pLabel_stop, NULL);
       button_stop->setPosition(,);
       addChild(button_stop);
       return true;
}
void HelloWorld::play(Cocos2d::Object* pSender)
{     //如果背景音乐被暂停则继续播放
       if (is_paused)
       {
              CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
       }
       else
       {     //否则重新播放
              CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music.mp3");
       }
       is_paused = false;
}
void HelloWorld::stop(Cocos2d::Object* pSender)
{     //停止音乐
       is_paused = false;
       CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
}
void HelloWorld::pause(Cocos2d::Object* pSender)
{     //暂停播放音乐
       is_paused = true;
       CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

本例运行后的界面如图3-12所示,点击屏幕上的3个标签按钮则会执行音乐的播放、暂停等操作。

图3-12 可以点击按钮进行音乐的播放暂停等操作

在使用Cocos2d-x播放音乐时需要引入文件SimpleAudioEngine.h(如范例第02行所示),之后就可以使用如范例第42、46、53、58行所示的代码来对音乐进行操作了。因为代码非常简单,这里便不再做太多介绍了。

现在需要读者思考一个问题,为什么在播放音乐时使用的方法是playBackgroundMusic而不是playMusic?Background是背景的意思,是不是说这个方法只能用来播放背景音乐?那么什么音乐不是背景音乐呢?

实际上该方法是可以播放任何音乐的,但是比较适合播放大段的音乐,而在游戏中大段的音乐常常被用来作为背景音乐使用。在游戏中一些短小的音乐(如怪物的叫声、打斗声等)则是要通过其他方法来播放的,这些内容将在下一节介绍。

最新文章

  1. scp报错 -bash: scp: command not found
  2. 窥探Swift之基本数据类型
  3. java高新技术-操作javaBean
  4. Android 动态生成 EditTest
  5. Linq To SQLite by CRUD
  6. Hibernate逍遥游记-第4章映射对象标识符-increment、identity、hilo、native、assigned、sequence、<meta>
  7. Android 自定义Android带图片和文字的ImageButton
  8. Android高德地图自定义Markers的例子
  9. Velocity引擎导致jvm内存外内存泄露
  10. 用 rsync 同步本地和服务器的文件
  11. javascript函数querySelector
  12. java开发之提高java和mysql代码性能和质量
  13. 201521123108《Java程序设计》第14周学习总结
  14. 《Language Implementation Patterns》之 增强解析模式
  15. hive 非等值连接, 设置hive为nonstrict模式
  16. 使用VMWare虚拟mac系统,设置网络的正确姿势
  17. [hdu6148][Valley Numer]
  18. Cannot convert value of type [java.lang.String] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy found
  19. Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转
  20. 2. DAS,NAS,SAN在数据库存储上的应用

热门文章

  1. 大话Linux内核中锁机制之原子操作、自旋锁
  2. JAVA语言编程思维入门
  3. Python 学习笔记(十四)Python类(一)
  4. [iOS]UIFont的lineHeight与pointSize
  5. python3爬虫-通过selenium获取TB商品
  6. Java调用WeChat's API总结
  7. js实现把textarea通过换行或者回车把多行数字分割成数组,并且去掉数组中空的值。
  8. Java学习笔记二十九:一个Java面向对象的小练习
  9. Gulp的安装配置过程和一些小坑
  10. 1. oracle12C的安装