CocosCreator Java与TypeScript 交互

最近做一个项目用到了CocosCreator,需要与Android进行交互,从Java回调到TS部分的写法不太明白,折腾了一天多的时间,在网上搜了大部分例子,讲解TS端的比较模糊,记录一下,以后用到的时候能够找到

1、TS调用Java的方法,官网介绍的很详细,以下只是一个简单的例子:

jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "CallJavaTest", "()V");

2、Java端接收并调用TS的代码:

public static void CallJavaTest(){
        Cocos2dxHelper.runOnGLThread(new Runnable() {
            @Override
            public void run() {
                Cocos2dxJavascriptJavaBridge.evalString("cc.error('12345')");
                Cocos2dxJavascriptJavaBridge.evalString("window.callAndroid.JavaCallBack('bbbbb')");
            }
        });
    }

3、TS中的写法,新建了一个ThirdParty.ts的脚本,内部方法如下:

class CallAndroid
{
    private static _instance:CallAndroid = null;
    public static getInatance(){
        if(this._instance==null) this._instance = new CallAndroid();
        return this._instance;
    }
    public JavaCallBack(_str:string){
        cc.error("TS Callback:"+_str);
    }
}
//第一种方法
window["callAndroid"] = CallAndroid.getInatance();
//第二种方法
// window.callAndroid = CallAndroid.getInatance();
// declare interface Window{
//     callAndroid:CallAndroid;
// }

以上就可以互通消息了

tips1:

直接使用class和namescape会提示找不到这个类或者命名空间,所以根据网络上的方法,把它挂载在Cocos的cc或者JS的window下;如果有更好的方法实现可以在下面留言,提前谢谢了

tips2:

前期点击编译按钮的时候一直报function是undefined的,后来无意间点击了构建项目按钮,然后再点击编译按钮,测试后TS可以接收到Java传过来的信息,So初步怀疑,前面报的那些function undefined的错误都是因为没有重新构建造成的

如果有更好的方法或者意见,欢迎指正!!! 

你可能感兴趣的:(CocosCreator,CocosCreator,Java,TypeScript,TS)