请教Openharmony调用原生接口方法疑问

  • Creator 版本: 3.8.2

  • 目标平台: Openharmony

大神好,我们需要在Cocos环境里面调用一个游戏的AI算法,就是类似于象棋游戏的下子提示,这个算法耗时大约有3秒,这几秒内用户可以点击取消按钮返回界面,在web平台上面我们可以使用worker加载算法js来进行运算,但现在切换到Openharmony平台,应该怎样使用这种耗时的计算?如果直接在界面使用代码,会卡死界面然后用户无法取消。

官方的文档有调用安卓和ios原生方法的例子,我们也考虑过回到原生这一层来进行运算,但是对于开鸿平台现在还没有相关的调用原生接口文档,这一点我们应该怎样使用比较合理?

Openharmony原生就提供了worker,可以直接用,华为Openharmony官方文档有介绍,需要注意的是要在DevEco工程里配置worker

我知道oh有提供worker,但是数据怎样从cocos传出到鸿蒙框架,然后运算玩我还要传回去cocos里面刷界面,这个ccc的官方文档缺了啊

worker的接口可以传入数据,cocos可以接受,然后在传出去。 可以参考 工程目录下entry\src\main\ets\components\ 的实现

我认真看了两天引擎源码,大概找到了解决方式

window.oh.postMessage()可以把消息从cocos发射到原生框架的worker中

在cocos层书写window.oh.onTest=()=>{},在原生框架的worker中使用globalThis.oh.onTest()就可以把消息从原生框架发射回cocos层

但是我想请教一下引擎开发大大,这种方式我已经可以跑通了,但是没有发现在文档中书写,关于开鸿的框架方面,以后会有那些开发方向可以关注呢?在论坛和github上面都没有发现有相关的讨论组。

  1. Creator发Openharmony游戏,cocos游戏层JS代码并不是给v8执行,而是直接传给鸿蒙系统的NAPI去执行,引擎编译的so里面没有v8.
  2. 这意味着理论上Openharmony Ark模块,在cocos的js里面可以直接调用访问,需要注意import方式。

对,我也发现了这一点,cocos的源码会编译成js放到鸿蒙的源码里面,但是由于打包方式,cocos访问鸿蒙层的代码,还有鸿蒙层回访cocos,我只找到window和globalThis这两个【桥】,我并不太懂cocos的打包原理,太少学习资料了

太有用了,非常感谢。