//ScriptingCore.h 中添加
//JS::HandleObject getGlobalHandle() { return _global.ref(); }
void CallJSFuncName(string jsname, string jsmethod, int count, ...) {
ScriptingCore* sc = ScriptingCore::getInstance();
JSContext* cx = sc->getGlobalContext();
JS::RootedValue nsval(cx);
if (JS_GetProperty(cx, sc->getGlobalHandle(), jsname.c_str(), &nsval)) {
int argc = count;
jsval* argv = new jsval[argc];;
va_list insvalist;
va_start(insvalist, count);
for (int i = 0; i < count; ++i)
{
argv[i] = std_string_to_jsval(sc->getGlobalContext(), std::string(va_arg(insvalist, const char *)));
}
va_end(insvalist);
sc->executeFunctionWithOwner(nsval, jsmethod.c_str(), argc, argv);
delete[] argv;
}
}
//使用
//CallJSFuncName(对象名, 方法名, 参数个数, …);
CallJSFuncName("Socket", "onMessage", 1, 参数1);
//js部分
var Socket = {};
Socket.onMessage = function (data) {
cc.log("this is c++ call js");
};