《Cocos2d-x遊戲開發實戰精解》學習筆記3--在Cocos2d-x中播放聲音

以前的內容主要都是介紹如何在屏幕上顯示圖像,事實上除了圖像以外,音樂的播放也能夠被理解爲一種顯示的方式,本節將學習在Cocos2d-x中播放聲音的方法。segmentfault

(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。this

【範例3-7 在Cocos2d-x中實現音樂的播放和暫停等操做】spa

#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("play", "Arial", 40);
       auto* pLabel_play = MenuItemLabel::create(label_play, this, menu_selector(HelloWorld::play));
       auto* button_play = Menu::create(pLabel_play, NULL);
       button_play->setPosition(160,180);
       addChild(button_play);
       //暫停按鈕
       auto* label_pause = Label::create("pause", "Arial", 40);
       auto* pLabel_pause = MenuItemLabel::create(label_pause, this, menu_selector(HelloWorld::pause
       auto* button_pause = Menu::create(pLabel_pause, NULL);
       button_pause->setPosition(320,180);
       addChild(button_pause);30
       //中止按鈕
       auto* label_stop = Label::create("stop", "Arial", 40);
       auto* pLabel_stop = MenuItemLabel::create(label_stop, this, menu_selector(HelloWorld::stop));
       auto* button_stop = Menu::create(pLabel_stop, NULL);
       button_stop->setPosition(480,180);
       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個標籤按鈕則會執行音樂的播放、暫停等操做。
210939_JlNe_2633993.png
圖3-12 能夠點擊按鈕進行音樂的播放暫停等操做code

在使用Cocos2d-x播放音樂時須要引入文件SimpleAudioEngine.h(如範例第02行所示),以後就可使用如範例第4二、4六、5三、58行所示的代碼來對音樂進行操做了。由於代碼很是簡單,這裏便再也不作太多介紹了。遊戲

如今須要讀者思考一個問題,爲何在播放音樂時使用的方法是playBackgroundMusic而不是playMusic?Background是背景的意思,是否是說這個方法只能用來播放背景音樂?那麼什麼音樂不是背景音樂呢?遊戲開發

實際上該方法是能夠播聽任何音樂的,可是比較適合播放大段的音樂,而在遊戲中大段的音樂經常被用來做爲背景音樂使用。在遊戲中一些短小的音樂(如怪物的叫聲、打鬥聲等)則是要經過其餘方法來播放的,這些內容將在下一節介紹。開發

Cocos2d-x遊戲開發學習筆記1--在Cocos2d中顯示圖像
《Cocos2d-x遊戲開發實戰精解》學習筆記2--在Cocos2d-x中顯示一行文字get

相關文章
相關標籤/搜索