zoukankan      html  css  js  c++  java
  • Cocos2d-x中使用音频CocosDenshion引擎介绍与音频文件的预处理

    Cocos2d-x提供了一个音频CocosDenshion引擎,CocosDenshion引擎可以独立于Cocos2d-x单独使用,CocosDenshion引擎本质上封装了OpenAL音频处理库。
    具体使用的API是SimpleAudioEngine。SimpleAudioEngine有几个常用的函数:
    void preloadBackgroundMusic (const char *pszFilePath) 预处理背景音乐文件,将压缩格式的文件进行解压处理,如MP3解压为WAV。
    void playBackgroundMusic (const char *pszFilePath) 播放背景音乐。
    void stopBackgroundMusic () 停止播放背景音乐。
    void pauseBackgroundMusic () 暂停播放背景音乐。
    void resumeBackgroundMusic () 继续播放背景音乐。
    bool isBackgroundMusicPlaying () 判断背景音乐是否在播放。
    unsigned int playEffect (const char *pszFilePath)  播放音效。
    void pauseEffect (unsigned int nSoundId)  暂停播放音效,参数nSoundId 是playEffect函数返回ID。
    void pauseAllEffects () 暂停所有播放音效。
    void resumeEffect (unsigned int nSoundId)  继续播放音效,参数nSoundId 是playEffect函数返回ID。
    void resumeAllEffects ()  继续播放所有音效。
    void stopEffect (unsigned int nSoundId) 停止播放音效,参数nSoundId 是playEffect函数返回ID。
    void stopAllEffects ()  停止所有播放音效。
    void preloadEffect (const char *pszFilePath) 预处理音效音频文件,将压缩格式的文件进行解压处理,如MP3解压为WAV。


    无论是播放背景音乐还是音效在播放之前进行预处理是有必要的,这个过程是对于音频文件进行解压等处理,预处理只需要在整个游戏运行过程中处理依次就可以了。如果不进预处理,则会发现在第一次播放这个音频文件时候感觉很“卡”,用户体验不好。
    预处理相关函数有两个:preloadBackgroundMusic和preloadEffect。下面代码是预处理背景音乐和音频:
    //初始化 背景音乐
    SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
    //初始化 音效
    SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");
    这些预处理过程代码放置到什么地方比较适合呢?由于放置到任何一个场景层中,当进入到这个层时候都比较“卡”,所以最好不要放置到场景层中,最好放置到AppDelegate文件中applicationDidFinishLaunching()函数中,代码如下。
    bool AppDelegate::applicationDidFinishLaunching() {
        … …
        // run
        director->runWithScene(scene);

    //初始化 背景音乐
    SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
    //初始化 音效
    SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");


        return true;
    }

    applicationDidFinishLaunching()函数是游戏启动时候回调。在游戏启动时候,一般会有一个启动界面,启动界面一般会有一个延迟展示,这是段时间是初始化最佳时机。

    更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》
    本书交流讨论网站:http://www.cocoagame.net
    欢迎加入cocos2d-x技术讨论群:257760386、327403678
  • 相关阅读:
    ubuntu VirtualBox 网络配置
    Linux Lsof命令详解
    自然用户界面
    [Java]读取文件方法大全
    java设计模式_命令模式 两个不同风格的实现
    创建线程的方法 Thread Runnable
    程序员每天到底可以写几行代码?
    eclipse Javadoc 汉化成中文
    linux jna调用so动态库
    使用GNU Make来管理Java项目,IDE神马都是浮云
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3889859.html
Copyright © 2011-2022 走看看