大神求助,c++向js传递数据,如果是对象类型的能传递吗??

我是想把CCBuffer对象传递到js端,但是 JS::Value中不知道如何写,请指教。

这个需要绑定 CCBuffer 类,或者写一个 conversion 函数把所有 CCBuffer 在 js 层需要的数据转换好保存在一个 js 对象中

CCBuffer对象已经绑定了,主要是不知道参数传递的地方该如何实现,能这样做吗

请大神指导下 传递对象的方法

参考下面这段代码

https://github.com/cocos-creator/cocos2d-x-lite/blob/develop/cocos/scripting/js-bindings/manual/ScriptingCore.cpp#L1623

关键在于获取 typeClass 和使用 jsb_ref_get_or_create_jsobject 获取 js 对象

value 数组也要用 JS::AutoValueVector 而不要用 JSValue []

大神还得帮忙给 看下 不知道哪里写错了 (>_<)

对了,jsb_get_or_create_weak_jsobject 应该改为 jsb_ref_get_or_create_jsobject

编译报错是什么?没看到啊

用jsb_ref_get_or_create_jsobject 这个方法也试了 和这个问题一样,都是第二张图的27行调用出错,编译正常没有错误,运行到这的时候中断

可能你的 CCBuffer 绑定有问题

JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET 这句话不晓得是什么作用,加上这句就没报错,望解惑,非常感谢panda

哦,从 C++ 调用 JS 时需要重新设置 JS context 的数据环境,这句话的作用就是恢复 JS Context 的 compartment(这就是 Spidermonkey 中的数据环境)

提醒一下,1.6 升级 Spidermonkey 后,很多接口都改变了,到时候需要参考引擎绑定代码进行升级。比如这里的 AutoCompartment 就不再需要了

1赞