按照官方的方法jsb绑定自定义类,js调用C++成功了,但是怎么C++怎么回调js?求各路大神指导或者提供一篇好的教程文章。 好像需要手写JSB?
1赞
不要沉
来人啊
js code:
var jsb = new JsbCustom();
jsb .callBackReq = function () {...}
c++:
void JsbCustom::callbackRequest(int cmdId, const std::string& reqData, const std::string& returnData)
{
std::string strReq = std::string(reqData);
std::string strRet = std::string(returnData);
JSContext* cx = ScriptingCore::getInstance()->getGlobalContext();
js_proxy_t* proxy = jsb_get_native_proxy((void*)this);
if (proxy)
{
jsval v[] = {
v[0] = UINT_TO_JSVAL(cmdId),
v[1] = std_string_to_jsval(cx, strReq),
v[2] = std_string_to_jsval(cx, strRet)
};
ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(proxy->obj), "callBackReq", 3, v);
}
}
注意"callBackReq" 这个函数名保持一致
1赞
我是刚转游戏开发,有点不明白,我是creator打包到ios的工程,有没有Xcode的工程参考下啊。

我用这种方法为什么没有反应呢?
JSContext *jc = ScriptingCore::getInstance()->getGlobalContext();
JS::RootedObject object(jc, ScriptingCore::getInstance()->getGlobalObject());
JS::RootedValue owner(jc);
jsval v[] = {
v[0] = int32_to_jsval(jc, 32),
v[1] = UINT_TO_JSVAL(88)
};
JS_GetProperty(jc, object, "Config ", &owner);
ScriptingCore::getInstance()->executeFunctionWithOwner(owner, "Callbackwithparameters", 2, v);
按照这种方式会报内存的错误:

问题解决了 3q
解决了 3q
