您的位置:首页 > 移动开发 > Cocos引擎

【cocos2d-x 3.0】装配FMOD外部音频引擎【Android】

2014-03-23 17:55 369 查看
Cocos2d-x目前最新版本(3.0 rc0)自带的音频引擎仍然还是CocosDenshion,仅提供一些基本功能

对于音乐、音效方面要求较高的游戏而言难以满足要求

所以我们可以使用强大的FMOD引擎来解决需求!它几乎支持所有游戏平台,无论Windows/Linux/Mac/ios/android/Xbox/PlayStation通通支持!

废话不多说,下面up主举例说明如何在Cocos2dx(3.0 rc0)+Android下面使用FMOD音频引擎:

1. 首先到Fmod.org官网下载<Fmod Ex Programmer's API>其中的Android版

2. 将刚刚下载的压缩包中的<api>文件夹解压到proj.android目录中的fmodex文件夹(需自建)

3. 编辑proj.android/jni/Android.mk(红色的部分是我们添加进去的)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := fmodex

LOCAL_SRC_FILES := ../fmodex/api/lib/$(TARGET_ARCH_ABI)/libfmodex.so

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)../fmodex/api/inc 

include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \

                   ../../Classes/AppDelegate.cpp \

                   ../../Classes/HelloWorldScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static

LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static

LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static

LOCAL_SHARED_LIBRARIES := fmodex


include $(BUILD_SHARED_LIBRARY)

$(call import-module,2d)

$(call import-module,audio/android)

$(call import-module,Box2D)

4. 编辑proj.android/src/org/cocos2dx/cpp/Cocos2dxActivity.java(红色的部分是我们添加进去的)

package org.cocos2dx.cpp;

import android.app.NativeActivity;

import android.os.Bundle;

public class Cocos2dxActivity extends NativeActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
    static

    {

        System.loadLibrary("fmodex");

    }


}

OK,这样基本的配置就完成了!

我们可以做一个简单的试验(需要包含fmod.hpp和fmod_errors.h)

FMOD_RESULT result;
FMOD::System *system;
result = FMOD::System_Create(&system);
result = system->init(100, FMOD_INIT_NORMAL, 0);

FMOD::Sound *sound;
result = system->createStream("/mnt/sdcard/TEST.mp3", FMOD_DEFAULT, 0, &sound);

FMOD::Channel *channel;
result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);


这样就可以播放sd卡根目录下的TEST.mp3了~

关于FMOD更多强大的功能可以查阅引擎官方文档,这里就不进行介绍了

另外上面样例cpp中的写法不能读取Assets中的音频只能读取SD卡中的,不过有方法可以解决(请自行百度啦^^)

*转载请注明*

copyright by

scarlet.MP5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x 游戏引擎