案例一:
js层
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “requestLogin”, “(Ljava/lang/String;)Ljava/lang/String;”, “this string from js”);
this.label.string = result;
java层
public static String requestLogin(final String strPlatform) {
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,"requestLogin platform = " + strPlatform);
}
});
return strPlatform;
}
jsb.reflection.callStaticMethod参数剖析:
参数一:“org/cocos2dx/javascript/AppActivity”:java中的包名(.换成/)+class文件名,就当是路径好了
参数二:“requestLogin”:方法名(必须public static)
参数三:“(Ljava/lang/String;)Ljava/lang/String;”:()内的是调用的java方法的参数类型,()外面的是返回值类型
【类型对应表:java类型int —I java类型float----F java类型boolean(布尔)-----Z java类型String-----Ljava/lang/String;】
参数N: “this string from js”:是java方法需要传入的参数(可以多个,与参数三中()内的数量和类型一一对应)
案例二:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_1”, “()I”);
this.label.string = result;
java:
public static int callback_1(){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_1”);
}
});
return 1;
}
案例三:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_2”, “(I)I”, 9);
this.label.string = result;
java:
public static int callback_2(final int intData){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_2”);
}
});
return intData;
}
案例四:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_3”, “(II)I”, 9,9);
this.label.string = result;
java:
public static int callback_3(final int i, final int j){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_3”);
}
});
return i+j;
}