CocosJavascriptJavaBridge.evalString 的问题

执行这个代码报错CocosJavascriptJavaBridge.evalString(“ZYMobilePlugin.AdsCallback()”);

  • Creator 版本: 3.4.2

  • 目标平台:Android

  • 重现方式: 必现

  • 首个报错:ERROR: Uncaught ReferenceError: ZYMobilePlugin is not defined, location: (no filename):0:0

能否给个 调用自定义类的 例子,网上资料少的可怜,官方的demo调用的是自家的库cc.log , 到底是个什么规则…真的很懵逼

自己顶,等个官方的来解答

image 不是说了这个没定义吗?你可以在js下打印下console.log(window. ZYMobilePlugin); 是否有值

是这样,我所有的逻辑出了这一步,全跑通了, ZYMobilePlugin.AdsCallback 也是一个静态方法,因为ts没有静态类,这里我不确定是 cocos有什么特殊写法比如一定要注册到某个命名空间下,又或者其它的,本质不是逻辑问题,我自己估计就是得有个什么特殊写法,但是这个写法 文档里还找不到…就超级抓狂

说白了这里要处理的就是 激励视频广告下发奖励的回调,目前就卡着这一点点…

在游戏初始化的时候加上(只要在你原生调用前写了就行)
(window as any).ZYMobilePlugin(or a、b …) = ZYMobilePlugin.getInstance(); or other
然后你调用可以用window下面的变量就行

这句逻辑应该写在什么地方呢, 得有个生命周期啥的吧

明白了,果然是有个特殊写法…非常感谢

不是什么特殊不特殊,而是你要理解使用方式,这么写只是为了暴露一个全局变量而已,你可以有其它很多种写法,比如我就会把交互的方法写成闭包,同时与项目分开

参考这个 CocosCreator跨平台优雅的集成广告SDK

是这样,我本身是做Unity开发的,看的出来cocos 不少东西是照着Unity来的,但是关于这块我确实很难理解,比如Unity中有专门的平台交互方法 SendMessage,理解起来也很简单。 刚您的回复中,最难理解的就是 window, window是什么,可以理解为 application吗? 如果和 application为啥要叫个 window呢…

cocos 3.4.2及以上似乎有一套类似的新的桥接方式,你可以看下。unity的话,只能传一个参数,然后各种转换,我反而觉得很繁琐

好的 感谢

感谢,jsb就是我想象中的 流程,之前也是太心急没有细看, jsb的流程可以说和Unity是一模一样了,都是通过消息机制处理,Unity的 SendMessage 也是可以很简单的包装成消息机制,JSB的方案理解成本很低。