cocos2dx js java oc 和 js 的相互调用
引擎版本: 3.17
语言: js
Xcode: 10.1
AndroidStudio: 3.2.1
时间: 2018年12月14日16:23:47
看这篇文章需要 会一些 android java oc ios 的一些知识的基础 不然看着可能有点费劲.
js调用java
js 调用 java java中声名的方法需要是静态方法(static method)
Android 平台下
1 | if(cc.sys.os == cc.sys.OS_ANDROID){ |
1 | ej: java |
支持传递的数据类型
- Z 布尔
- I int
- F float
- 字符串 Ljava/lang/String;
注意这里有个字符串是有个分号的
java调用js
java调用js 实际是 将字符串转成 function 然后调用
1 | /* 导入需要的包 */ |
1 | /* |
问题记录
js调用 java 没反应
有很大的几率是 js调用中 方法签名没有写正确 你需要检查你的写法 具体的写法上面有写的.
js 调用 oc
js 调用 oc 其实和 Java的写法是大同小异的
- 在 ios/AppController.h 中声名 静态函数
1 | +(NSString *) showVdong:(NSString *)str title:(NSString *)tit; |
在 ios/AppController.mm 文件中实现
1
2
3
4
5
6
7
8
9@implementation
// 在这个之间实现函数
+(NSString *) showVdong:(NSString *)str title:(NSString *)tit {
return @"haha";
}
@endjs 调用用例
1
2
3
4if(cc.sys.os == cc.sys.OS_IOS || cc.sys.os == cc.sys.OS_OSX) {
var ret = jsb.reflection.callStaticMethod("AppController","showVdong:title","你是谁???","天呢");
cc.log('****************',ret);
}
oc 调用 js
在 ios/AppController.mm 文件中实现
1
2
3
4
5
6
7
8
+(NSString *) showVdong:(NSString *)str title:(NSString *)tit {
ScriptingCore::getInstance()->evalString("test");
return @"haha";
}js 中的测试用例
1
2
3var test = function() {
cc.log("OC call JS success !!!");
}
参考地址(这个是CocosCreator原生游戏调用) > https://www.cnblogs.com/billyrun/articles/8529503.html
最后更新: 2019年08月14日 11:22