C++回调js的问题

按照官方的方法jsb绑定自定义类,js调用C++成功了,但是怎么C++怎么回调js?求各路大神指导或者提供一篇好的教程文章。 好像需要手写JSB?

1赞

不要沉:smiley:

来人啊:scream:

更新下,测试成功的C++回调JS,两种方法:点击查看

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的工程参考下啊。

http://blog.csdn.net/einsteinlike/article/details/31378769

这个下面有介绍JS C++互相调用

1赞

http://www.cocos2d-x.org/wiki/Binding_Custom_Class_To_Js_Runtime

Mac下的自动绑定

1赞

我用这种方法为什么没有反应呢?

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