android平台上使用js直接调用Java

在cocos2d-js 3.0+ 中,在android平台上我们可以直接在js中调用java方法。使用方法:
1
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
  1. className。 –Java的类名。
  2. methodName。 –Java的方法名。
  3. methodSignature。 –Java的方法签名。
  4. parameters –Java的参数名。
例如我们在org.cocos2dx.javascript这个包下面写了一个Test类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package org.cocos2dx.javascript;

public class Test {

public static void hello(String msg){
System.out.println(msg);
}

public static int sum(int a, int b){
return a + b;
}

public static int sum(int a){
return a + 2;
}

}

使用示例:

我们将会调用上面的Test类中的静态方法:

1
2
3
4
5
6
7
8
9
10
//调用hello方法
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello", "(Ljava/lang/String;)V", "this is a message from js");

//调用第一个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 3, 7);
cc.log(result); //10

//调用第二个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(I)I", 3);
cc.log(result); //5

注意
  • 这个Test类的完整类名应该是org/cocos2dx/javascript/Test,注意这里必须是斜线/,而不是在Java代码中我们习惯的点.。