1.在 Classes目录创建Test.h 和Test.cpp
Test.h:
#ifndef _Test_
#define _Test_
#include "cocos2d.h"
#ifndef _Test_
#define _Test_
#include "cocos2d.h"
class Test
{
public:
Test();
~Test();
};
#endif // !_Test_
Test.cpp:
#include "Test.h"
USING_NS_CC;
using namespace std;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
extern "C" //org.cocos2dx.javascript
{
JNIEXPORT void JNICALL Java_org_cocos2dx_javascript_MyHelper_myFunc(JNIEnv *env, jobject thiz, jint m)
{
log("myFunc called!");
}
};
注释:
1.Java_org_cocos2dx_javascript_MyHelper_myFunc: ”Java”固定开头 ”org_cocos2dx_javascript”为包名 ”MyHelper”为对应的java文件 ”myFunc”为对应的方法 使用”_”连接
2.(JNIEnv *env, jobject thiz, jint m) 前两个为自带参数,第三个m是自定义的参数
#endif
Test::Test()
{
}
Test::~Test()
{
}
- 在org/cocos2dx/javascript 新建MyHelper.java:
MyHelper.java内容:
package org.cocos2dx.javascript;
public class MyHelper {
/**
* 这里是java调用cocos2d-x的地方
* @param m
*/
public static native void myFunc(int m); //native 方法
}
3.在同目录下AppActivity.java内调用如下:
public class AppActivity extends Cocos2dxActivity {
static { System.loadLibrary("cocos2djs"); } //调用前加上这句
@Override
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// TestCpp should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
MyHelper.myFunc(100); //此处调用
return glSurfaceView;
}
}
- 在android.mk 加上自己的cpp文件Test.cpp:
LOCAL_SRC_FILES := hellojavascript/main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/Test.cpp
正确运行后可以看到成功调用日志。
网友评论