Cocos2d-x中播放背景音樂,cocos2d-x背景音樂

來源:互聯網
上載者:User

Cocos2d-x中播放背景音樂,cocos2d-x背景音樂
背景音樂的播放與停止執行個體代碼如下:

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


背景音樂的播放代碼放置到什麼地方比較適合呢?例如:在Setting情境中,主要代碼如下:
bool Setting::init(){//播放代碼 ①    return true;}void Setting::onEnter(){Layer::onEnter();log("Setting onEnter");//播放代碼 ②}void Setting::onEnterTransitionDidFinish(){Layer::onEnterTransitionDidFinish();log("Setting onEnterTransitionDidFinish");//播放代碼 ③}void Setting::onExit(){Layer::onExit();log("Setting onExit");}void Setting::onExitTransitionDidStart(){Layer::onExitTransitionDidStart();log("Setting onExitTransitionDidStart");}void Setting::cleanup(){Layer::cleanup();log("Setting cleanup");}



關於播放背景音樂,理論上我們是可以將播放代碼SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Synth.mp3",true)放置到三個位置(代碼中的①、②、③)。下面我們分別分析一下它們還有什麼不同。
1、代碼放到第①行
代碼放到第①行(即在Setting::init函數),如果前面情境中沒有調用背景音樂停止語句,則可以正常播放背景音樂。但是如果前面情境層HelloWorld::onExit函數有調用背景音樂停止語句,那麼會出現背景音樂播放幾秒鐘後停止。

為瞭解釋這個現象,我們可以參考一下6.3.2一節多情境切換生命週期。使用pushScene函數從實現HelloWorld情境進入Setting情境,生命週期函數調用順序如所示。


 
可見,HelloWorld::onExit調用是在Setting::init之後,這樣當我們在Setting::init中開始播放背景音樂後,過一會調用HelloWorld::onExit停止背景音樂播放,這樣問題就出現了。
注意 無論播放和停止的是否是同一個檔案,都會出現個問題。


2、代碼放到第②行
代碼放到第②行(即在Setting::onExit函數),如果前面情境中沒有調用背景音樂停止語句,則可以正常播放背景音樂。如果前面的情境層HelloWorld::onExit函數有背景音樂停止語句,也會出現背景音樂播放幾秒鐘後停止。原因與代碼放到第①行情況一樣。


3、代碼放到第③行
我們推薦代碼放到第③行代碼位置,因為onEnterTransitionDidFinish函數是在進入層而且過渡動畫結束時候調用,代碼放到這裡不用考慮中前面情境是否有調用背景音樂停止語句。而且使用者也不會先聽到聲音,後出現介面現象。

綜上所述,是否能夠成功播放背景音樂,前面情境是否有調用背景音樂停止語句有關,也與當前情境中播放代碼在哪個函數裡有關。如果前面情境沒有調用背景音樂停止語句,問題也就簡單了,我們可以將播放代碼放置在代碼①、②、③任何一處。但是如果前面情境調用背景音樂停止語句,在onEnterTransitionDidFinish函數播放背景音樂會更好一些。


更多內容請關注Cocos2d-x系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》本書交流討論網站:http://www.cocoagame.net歡迎加入cocos2d-x技術討論群:257760386、327403678



cocos2d-x播放不了背景音樂

先用preloadBackgroundMusic載入一下音樂再試試看,另外背景音樂請使用mp3格式的。如果還不行的話,很小的可能是你的mp3格式不標準,可以使用轉換工具重新進行下轉換然後再試試應該就可以解決問題了。還有就是注意音樂所在的位置是否正確。
 
怎在網頁中自動播放音樂

背景音樂代碼
1、<embed src="背景音樂網址" hidden="true" autostart="true" loop="true">

--------hidden="true"表示隱藏播放,即不顯示播放器的外觀,若要想顯示,把"true" 替換為"false"即可,這樣為預設是最小化播放,若還想具體顯示播放器的大小,另加上height="高度值" width="寬度值" 就可以了。

-------autostart="true"表示當前頁一載入則自動播放,若不希望播放改為autostart="false"
即可...

------ loop="true"表示無限次迴圈播放音樂直到當前頁關閉為止,不想迴圈播放替換為 loop="false"就OK了

2、<embed src="背景音樂網址" autostart="true" loop="-1" controls="ControlPanel" width="0" height="0" >

-----------loop="-1" 表示無限次迴圈播放,可設定播放次數,用具體數字代替即可,比如我希望它播放兩次,則loop="2"

---------controls="ControlPanel"這個控制選項可省略

--------width="0" height="0"表示隱藏播放,和前面的一樣。
若欲設定播放器的外觀,則替換為具體的數值就可以了,比如width="123" height="100"

--------------------------------------------------
其實要說最簡化的播放背景音樂的代碼,則下面的代碼是最簡單的了--->

<embed src="背景音樂網址" >
-----------------------------------------------------

另外:bgsound src="背景音樂路徑" loop="-1">

這個只支援IE瀏覽器,而且是完全下載完後才開始播放,不像前面所說的格式那樣可以一邊緩衝一邊播放。這個一般用於mid音樂或較小的mp3,wav格式的音樂. 若是較大的檔案還是用前面所說的格式吧~~
<bgsound src="背景音樂路徑" loop="-1">這個隨瀏覽器的開啟而播放,當已最小化的視窗時即停止播放,當已最大化的視窗時又開始播放。
而,<embed src="背景音樂網址" autostart="true" loop="-1" controls="ControlPanel" width=&quot......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.