首頁 資料庫 mysql教程 Cocos2d-x 3.0心得(04)

Cocos2d-x 3.0心得(04)

Jun 07, 2016 pm 03:09 PM
心得 播放

用cocos2dx播放音乐音效算是很简单的事了,没什么特殊需求的话,用SimpleAudioEngine就可以搞定。不过特殊需求总是会出现的。要是你经常听歌,应该会有印象,某些播放器在切换音乐的时候,正在播放的音乐会逐渐淡出直到消失,然后才会播放新的音乐。如果想在

用cocos2dx播放音乐音效算是很简单的事了,没什么特殊需求的话,用SimpleAudioEngine就可以搞定。不过特殊需求总是会出现的。要是你经常听歌,应该会有印象,某些播放器在切换音乐的时候,正在播放的音乐会逐渐淡出直到消失,然后才会播放新的音乐。如果想在游戏里也实现类似的效果,光靠SimpleAudioEngine是不够的。

cocos2dx里面的音频管理分3个层次,从高到低是SimpleAudioEngine、CDAudioManager、CDSoundEngine。当然这是官方的说法。通常一旦你用到了CDAudioManager,那么你基本上也得使用CDSoundEngine,因为CDAudioManager主管BGM,CDSoundEngine主管音效。另外比较遗憾的是,CDAudioManager和CDSoundEngine只能在iOS上使用。当然你可以写两套代码,在iOS上实现炫酷的音频效果,其他平台就只能soso了。


CDAudioManager是用来管理BGM的,这从它所包装的音频对象类名CDLongAudioSource就可以看出来,“长音频源”,没什么比BGM更合适了。而CDLongAudioSource实际是对AVAudioPlayer的包装,AVAudioPlayer是一个不折不扣的iOS原生类,所以你明白为什么CDAudioManager只能在iOS上用了。

CDLongAudioSource本身还算通俗易懂,加载、播放、暂停、循环、控制音量,该有的接口一应俱全。

CDAudioManager包含了一个CDLongAudioSource数组,这个数组在内部设定了固定长度为2。这意味着如果使用CDAudioManager,我们可以同时播放两首BGM。。。嗯,这不是说我们真的要同时放两首音乐,这是用来做其他效果的。比如说,当你准备换音乐的时候,让第一首淡出,同时第二首淡入,这一小段时间里,两首音乐是同时存在的,听起来的效果就是从第一首无缝切换到第二首。这不是很cool么Cocos2d-x 3.0心得(04)

CDAudioManager在内部把CDLongAudioSource数组里的第一个称为“左声道(kASC_Left)”,第二个称为“右声道(kASC_Right)”。但它其实跟你耳机那两根线没什么关系,都能出声。当然也可能是我没找到在什么地方设置,不过对于一个手机游戏我们还是不要太苛刻了。

你可以通过下面两个方法来加载和获取音乐对象:

/** Loads the data from the specified file path to the channel's audio source */
-(CDLongAudioSource*) audioSourceLoad:(NSString*) filePath channel:(tAudioSourceChannel) channel;
/** Retrieves the audio source for the specified channel */
-(CDLongAudioSource*) audioSourceForChannel:(tAudioSourceChannel) channel;
登入後複製
至于播放控制,那就是CDLongAudioSource自己的事了。

CDAudioManager里有一些被声明废弃的接口,看得出来,早期版本的CDAudioManager只能播放一首BGM。。。嘛,时代总是会进步的。

CDAudioManager除了控制BGM,还能用来做一些跟BGM相关的跨App的事。你可以给CDAudioManager设置一个模式

-(void) setMode:(tAudioManagerMode) mode;
登入後複製

它能做的事情包括:

只让你的App能放BGM(kAMM_FxPlusMusic);

让你的App到后台还能放BGM(kAMM_MediaPlayback);

当别的播放器在放BGM时让你的App静音(kAMM_FxPlusMusicIfNoOtherAudio),等等。

你还可以通过

-(void) setResignBehavior:(tAudioManagerResignBehavior) resignBehavior autoHandle:(BOOL) autoHandle;
登入後複製
来设置当App被中断的时候(比如说,来电话了),怎么处理BGM:

先停止,回游戏后继续放(kAMRBStopPlay);
先停止,回游戏后不放了(kAMRBStop),等等。


说了这么多,似乎还没讲到怎么做BGM的混合、淡入淡出。这其实没什么奥秘,你要做的只是控制CDLongAudioSource的音量。从1逐渐减至0,就是淡出;从0逐渐增至1,就是淡入。cocos2dx提供了一个CDLongAudioSourceFader,可以帮助你比较规范的控制这些音量。它继承自CDPropertyModifier,看名字就知道这是用来动态控制音频属性的。它的作用原理跟cocos2dx的Action系列很类似,所以你应该很快就能熟悉它。只不过,这里没有ActionManager一类的管理器Cocos2d-x 3.0心得(04)所以你得自己弄一个了。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
如何使用「隔空播放」串流影片或鏡像 iPhone 或 iPad 螢幕 如何使用「隔空播放」串流影片或鏡像 iPhone 或 iPad 螢幕 Jul 14, 2023 pm 07:53 PM

本快速指南將向您展示如何使用AirPlay,這是Apple的創新無線串流功能,可輕鬆分享和顯示內容。允許您使用Wi-Fi將iPhone或iPad連接到與AirPlay相容的AppleTV、智慧電視、揚聲器和Mac以及某些第三方揚聲器和智慧電視,以實現無縫資料傳輸。 「隔空播放」以點對點為基礎運行,透過本地網路連接您的Apple裝置。它使用多種技術的組合,包括用於串流音訊和視訊的即時傳輸協定(RTP)和用於設備發現的Bonjour。簡而言之,當您使用「隔空播放」時,您的裝置會傳送資料流,然後

如何使用Layui開發一個支援音訊和視訊播放的多媒體頁面 如何使用Layui開發一個支援音訊和視訊播放的多媒體頁面 Oct 27, 2023 pm 01:58 PM

如何使用Layui開發一個支援音訊和視訊播放的多媒體頁面在現代網路的發展中,媒體內容已經成為人們日常生活中不可或缺的一部分。為了提供更好的使用者體驗,我們經常需要在網頁上嵌入音訊和視訊播放器。本文將介紹如何使用Layui開發一個支援音訊和視訊播放的多媒體頁面,並提供詳細的程式碼範例。第一步:引入Layui和必要的CSS和JavaScript檔案要開始使用Lay

如何使用PHP播放有字幕的影片檔案? 如何使用PHP播放有字幕的影片檔案? Aug 07, 2023 pm 12:13 PM

如何使用PHP播放有字幕的影片檔案?隨著網路科技的發展,影片成為網路內容非常受歡迎的形式之一。而現在,許多影片檔案都配有字幕,這讓使用者更方便地理解和消化影片內容。那麼,如何使用PHP來實現在網頁中播放帶有字幕的影片檔案呢?本文將為您詳細介紹。首先,我們需要準備以下的環境:一個擁有PHP運作環境的伺服器(如Apache或Nginx);一個視訊檔案(支持

利用uniapp實現音訊播放功能 利用uniapp實現音訊播放功能 Nov 21, 2023 pm 06:14 PM

利用uniapp實現音訊播放功能隨著行動互聯網的發展,音訊播放功能成為了許多應用必不可少的功能之一。而利用uniapp可以方便地實現音訊播放功能,而且具有跨平台的特點,可以在不同的行動終端上運行。在進行uniapp開發之前,我們需要先準備好音訊資源檔案。在本文中,我們將使用一個名為"music.mp3"的音訊檔案作為範例。首先,我們需要在uniapp的專案中

愛奇藝怎麼播放本地影片 愛奇藝播放本地影片方法 愛奇藝怎麼播放本地影片 愛奇藝播放本地影片方法 Mar 13, 2024 pm 04:00 PM

愛奇藝怎麼播放本地影片?在愛奇藝這款手機app中用戶不僅可以播放各種平台上的影視資源進行觀看,還可以利用這款app播放自己的本地視頻!​​本地視頻最簡單的觀看方法自然是使用相冊,簡單直接,但是相冊播放視頻並沒有那麼好用,缺乏了許多功能,基本就只有一些基礎功能,雖然也不是不能用吧但是使用體驗完全沒法和這些平台相比!讓我們一起看看如何使用這款app觀看本地影片吧!愛奇藝播放本地影片教學1、進入我的頁面,點擊下載。  2、點選右上角的小圓點。  3、點選本地影片。  4、點選觀看本地影片。  5、

如何使用PHP實現一個簡單的線上影片上傳和播放系統 如何使用PHP實現一個簡單的線上影片上傳和播放系統 Sep 25, 2023 am 10:55 AM

如何使用PHP實現一個簡單的線上影片上傳和播放系統隨著網路的發展,影片內容逐漸成為人們獲取資訊和娛樂的重要方式之一。為了滿足用戶對影片上傳和播放的需求,我們可以使用PHP程式語言來實現一個簡單的線上影片上傳和播放系統。以下將介紹如何使用PHP來實現這個系統,包括資料庫建立、檔案上傳和影片播放功能。創建資料庫首先,我們需要建立一個MySQL資料庫來儲存用戶上

PHP學習經驗:如何進行錯誤處理 PHP學習經驗:如何進行錯誤處理 Aug 26, 2023 pm 08:01 PM

PHP學習經驗:如何進行錯誤處理在開發PHP應用程式時,處理錯誤是一個非常重要的面向。良好的錯誤處理可以提高程式碼的穩定性和可靠性,同時也可以更好地幫助我們調試程式碼和解決問題。本文將介紹一些常見的錯誤類型和如何進行錯誤處理的方法,並附帶相應的程式碼範例。語法錯誤語法錯誤是在程式碼編寫過程中最常見也最容易發現的錯誤。它通常會導致PHP解析器無法正確理解程式碼,從而導致

iOS 17.1:如何將自訂插圖新增至 Apple Music 播放清單 iOS 17.1:如何將自訂插圖新增至 Apple Music 播放清單 Oct 06, 2023 am 08:01 AM

在目前處於測試階段的iOS17.1中,Apple增加了用戶使用一系列預設選項自訂AppleMusic中的播放清單插圖的功能。繼續閱讀以了解它是如何完成的。以前在iOS中,建立自訂播放清單時,您必須使用由曲目專輯插圖組成的基本平鋪圖像,或上傳自訂圖像。鑑於您的自訂圖形或相關照片並不總是隨時可用於播放列表,並且預設的平鋪插圖相對簡單,播放列表可能難以識別並且看起來相當通用。值得慶幸的是,iOS17.1中的Apple現在提供了八種不同的插圖樣式供您選擇,具有幾何形狀和漸變,播放清單的標題顯示在

See all articles