1、创建Cocos2d-x3.1工程
在调用静态函数文章中有详细介绍。
2、将工程导入XCode
在调用静态函数的文章中有详细介绍
3、将工程导入ADT
在调用静态函数的文章中有详细介绍,遇到的错误及解决办法都有描述。
4、在Xcode中添加如下代码
通过修改关闭按钮实现静态与非静态代码的调用。在 void HelloWorld ::menuCloseCallback( Ref * pSender)添加如下代码:
void HelloWorld::menuCloseCallback(Ref* pSender) { //平台判断 #if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) JniMethodInfo info; //判断org/cocos2dx/cpp/AppActivity.java中是否存在getObj静态函数 bool ret = JniHelper::getStaticMethodInfo(info,"org/cocos2dx/cpp/AppActivity","getObj","()Ljava/lang/Object;"); jobject jobj;//用于存放返回的对象 if(ret) { log("call void getObj() succeed"); jobj = info.env->CallStaticObjectMethod(info.classID,info.methodID);//调用getObj函数,返回一个对象 } //判断org/cocos2dx/cpp/AppActivity.java中是否存在func1非静态函数 bool re = JniHelper::getMethodInfo(info,"org/cocos2dx/cpp/AppActivity","func1","()V"); if(re) { log("call func1 succeed"); info.env->CallVoidMethod(jobj,info.methodID);//通过返回的对象调用非静态函数 } #endif }
5、在ADT中的src/org.cocos2dx.cpp下AppActivity.java中添加如下代码
public static Object getObj() { Log.e("Static", "func"); return instance; } private Intent i; public void func1() { Log.e("unStatic", "func1"); i = new Intent(AppActivity.this,MyService.class); startService(i); }
6、编译运行
如有问题翻看前面关于在Java中调用静态函数的文章。