美文网首页
[cocosjs] android/ios平台用js调用Java

[cocosjs] android/ios平台用js调用Java

作者: invalid_name | 来源:发表于2017-10-15 23:54 被阅读121次

    Cocos2d-JS v3.0加入了在原生平台调用java/oc静态方法的特性。使用方法如下:

    • java调用:
    jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
    

    在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。
    方法签名:
    目前Cocos2d-js中支持的Java类型签名有下面4种:

    Java类型 签名
    int I
    float F
    boolean Z
    String Ljava/lang/String; (后面带分号)

    示例:

    ()V 表示一个没有参数没有返回值的方法
    (I)V 表示参数为一个int,没有返回值的方法
    (I)I 表示参数为一个int,返回值为int的方法
    (IF)Z 表示参数为一个int和一个float,返回值为boolean的方法
    

    注意:
    在android应用中,cocos的渲染和js的逻辑是在gl线程中进行的,而android本身的UI更新是在app的ui线程进行的,所以在js中调用的Java方法有任何刷新UI的操作,都需要在ui线程进行。


    • OC调用:
    jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);
    

    在jsb.reflection.callStaticMethod方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。

    注意:
    1、参数中的类名,只需要传入OC中的类名即可,与Java不同,类名并不需要路径
    2、需要传入完整的方法名,特别是当某个方法带有参数的时候,需要将:也带上 ,没有参数不需要带。
    3、在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:
    float,int 请使用NSNumber类型
    bool请使用BOOL类型
    目前参数和返回值支持 int, float, bool, string,其余的类型暂时不支持。

    相关文章

      网友评论

          本文标题:[cocosjs] android/ios平台用js调用Java

          本文链接:https://www.haomeiwen.com/subject/kfyhuxtx.html