@vkyii 写道:
目前能想到两种方式:
使用
ScriptingCore::getInstance()->evalString(script);
,局限是需要向某个全局的位置指定回调函数,比如:// 在js的某组件onLoad函数中
_G.callback = this.onCallback.bind(this);
// 在C++的需要回调的地方
ScriptingCore::getInstance()->evalString("_G.callback(123)");使用CustomEvent发送,在js端接收消息:
// C++
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("callback_from_cpp", "123");
// js
cc.game.on("callback_from_cpp", e => { cc.log(e); });
dispatchCustomEvent的第二个参数是void*
,我能想到传基本类型,像const char*,目测传结构体的话应该是在js端接收不到的吧.在写问题的时候其实已经梳理了一遍思路,至少能达到传数据的目的了,但还是想弄得更清楚一些:
1. 使用CustomEvent时有办法可以传结构体或者数组吗?
2. 有没有更直观的方法,比如在js端直接传一个回调函数.(可能是我想多了)感谢.
帖子: 5
参与者: 2