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

Cocos2d-x目前最新版本(3.0 rc0)自带的音频引擎仍然还是CocosDenshion,仅提供一些基本功能

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

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


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


1. 首先到Fmod.org官网下载其中的Android版

2. 将刚刚下载的压缩包中的文件夹解压到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])