官术网_书友最值得收藏!

4.2 使用SimpleAudioEngine

SimpleAudioEngine是一個簡單的聲音引擎,是一個單例對象,命名空間為CocosDenshion,包含SimpleAudioEngine.h頭文件并引用CocosDenshion命名空間后即可使用它。SimpleAudioEngine提供了背景音樂、音效的加載、緩存、播放等功能,使用了SimpleAudioEngine后需要在程序退出時執行SimpleAudioEngine的end方法,否則有可能產生內存泄漏。SimpleAudioEngine經過了多個版本的更新,目前最新的Cocos2d-x 3.10版本相比之前的版本有了不少調整,接下來簡單了解一下SimpleAudioEngine的相關接口。

        //獲取單例
        static SimpleAudioEngine* getInstance();
        //釋放單例
        static void end();

以下是背景音樂相關接口。

        //傳入文件名,預加載背景音樂
        virtual void preloadBackgroundMusic(const char* filePath);
        //傳入文件名和是否循環,播放背景音樂
        virtual void playBackgroundMusic(const char* filePath, bool loop = false);
        //停止播放背景音樂,如果releaseData為true,背景音樂還會被釋放掉
        virtual void stopBackgroundMusic(bool releaseData = false);
        //暫停播放背景音樂
        virtual void pauseBackgroundMusic();
        //恢復被暫停的背景音樂
        virtual void resumeBackgroundMusic();
        //重新播放當前背景音樂
        virtual void rewindBackgroundMusic();
        //判斷背景音樂是否可以被播放
        virtual bool willPlayBackgroundMusic();
        //判斷當前是否正在播放背景音樂
        virtual bool isBackgroundMusicPlaying();
        //獲取背景音樂的音量,返回值的范圍是0~1.0
        virtual float getBackgroundMusicVolume();
        //設置背景音樂的音量,范圍為0~1.0
        virtual void setBackgroundMusicVolume(float volume);

以下是音效相關接口。

        //獲取音效的音量,返回值的范圍是0~1.0
        virtual float getEffectsVolume();
        //設置音效的音量,范圍為0~1.0
        virtual void setEffectsVolume(float volume);
        //播放指定的音效,并返回音效句柄ID,參數意義如下
              filePath音效文件名
              loop是否循環播放
              pitch播放頻率,默認為1.0,該值越小播放速度越慢、時間越長,反之則播放速度越快、
              時間越短
              pan聲道,取值范圍為-1.0~1.0, -1.0表示只開啟左聲道
              gain音量,取值范圍為0.0~1.0,默認為1.0
        //在Win32下,pitch、pan、gain參數都是無效的,并且在Win32下同一個音效不能同時播
        放多個
        //在三星Galaxy S2上,pitch參數是無效的
        virtual unsigned int playEffect(const char* filePath, bool loop = false,
                          float pitch = 1.0f, float pan = 0.0f, float gain = 1.0f);
        //傳入playEffect返回的音效句柄,暫停音效播放
        virtual void pauseEffect(unsigned int soundId);
        //暫停所有音效的播放
        virtual void pauseAllEffects();
        //傳入playEffect返回的音效句柄,恢復被暫停的音效
        virtual void resumeEffect(unsigned int soundId);
        //恢復所有被暫停的音效
        virtual void resumeAllEffects();
        //傳入playEffect返回的音效句柄,停止播放音效
        virtual void stopEffect(unsigned int soundId);
        //停止播放所有音效
        virtual void stopAllEffects();
        //傳入文件名,預加載音效
        virtual void preloadEffect(const char* filePath);
        //傳入文件名,卸載指定音效
        virtual void unloadEffect(const char* filePath);

在cpp-tests的CocosDenshion示例中演示了上述接口的使用,只需要直接獲取單例對象并執行相應的方法即可,非常簡單,這里不再贅述。需要注意的是播放了平臺不支持的音頻格式有可能導致程序崩潰。

主站蜘蛛池模板: 巧家县| 克东县| 桦甸市| 策勒县| 温泉县| 黄龙县| 隆德县| 揭西县| 铅山县| 隆化县| 浦江县| 东城区| 淳化县| 丰县| 云浮市| 托克托县| 长顺县| 法库县| 宜君县| 运城市| 凤台县| 邵阳县| 乌鲁木齐县| 出国| 庆云县| 满洲里市| 松阳县| 长岛县| 阳谷县| 磐石市| 平潭县| 洪江市| 鹤壁市| 河南省| 祁阳县| 平阴县| 女性| 泾阳县| 常德市| 娄烦县| 南溪县|