在Android和cocos2d-x上加载FMOD声音库

时间:2014-11-03 01:56:54

标签: android cocos2d-x fmod

我有一个在iOS和Win32上运行的游戏,使用cocos2d-x c ++编写。我还在游戏中使用FMOD Studio来发声。

我现在将游戏移植到Android,我在Android上遇到FMOD问题。我认为这个问题与资产加载有关。

目前音响系统已成功初始化。我使用以下代码加载可在iOS和Windows上运行的银行:

void FMODWrapper::loadBank(const char * bankFile)
{
    FMOD_RESULT result;
    std::string path = FileUtils::getInstance()->fullPathForFilename(bankFile);

    FMOD::Studio::Bank *bank;
    if (path.size() > 0)
    {
        result = system->loadBankFile(path.c_str(), FMOD_STUDIO_LOAD_BANK_NORMAL, &bank);
        if (result != FMOD_OK)
        {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
                LOGD("FMOD error! Unable to load bank: %s %d\n", path.c_str(), result);
#else
                printf("FMOD error! Unable to load bank: %s\n", path.c_str());
#endif
        }
        _loadedBanks.push_back(bank);
    }
}

当我使用FMOD调试库运行时,我得到以下输出:

  

11-02 20:48:50.173:I / fmod(2459):FMOD:   AsyncCommand_system_loadBankFile :: executeMain:无法打开文件   '资产/声音/ MX_AND_SFX_MASTER_BANK.bank' 11-02 20:48:50.173:   I / fmod(2459):../../ src / fmod_asynccommand_impl.cpp(443):FMOD错误   (20):找不到文件。 11-02 20:48:50.173:I / fmod(2459):FMOD:   Debug_OutputTrace:   ../../src/fmod_asynccommand_impl.cpp(443):FMOD错误(20):文件没有   找到。

assets / Sound / MX_AND_SFX_MASTER_BANK.bank对于我的资产驻留在我的eclipse项目中的位置是正确的。

任何人都知道我应该传递给loadBankFile()调用。

另外,我尝试将loadBankMemory与FileUtils :: getDataFromFile()一起使用。这导致声音播放,但它只是噪音。所以不是我想要的。

2 个答案:

答案 0 :(得分:0)

可能是资产被写入APK,使用file访问文件路径的那些资源前缀:/// android_asset /

答案 1 :(得分:0)

file:/// android_asset /在尝试使用外部库时,cocos2dx为我解决了问题,在这种情况下为fmod。