1.js调用c++函数

在c++中声明函数,名为functionCpp,通过spidermonkey中jsapi
的JS_DefineFunction绑定一个js函数,名为functionJS,此函数名

可在js中直接调用,并可以传参,参数由functionCpp接收。

2.c++调用js函数
在js中声明函数,名为functionJS,通过spidermonkey中jsapi的
JS_CallFunctoionName(也可用JS_CallFunction,但参数不一样),

c++调用该函数,并传入参数,参数由functionJS接收。

以上两种方法皆可接收返回值。

示例代码:

js中

    var haha = testjs("js run hahhahaha");
if (haha) {
cc.log("return from c++ :true");
} else {
cc.log("false");
} var testfunction = function (var1) {
cc.log(var1);
var testhaha = "return from js";
return testhaha;
}

c++中

声明函数

JSBool testjs(JSContext *cx, uint32_t argc, jsval *vp)
{
if (argc > 0) {
JSString *string = NULL;
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "S", &string);
if (string) {
JSStringWrapper wrapper(string);
//这块就有值了
CCLog(wrapper.get().c_str());
}
}
CCLog("js function");
return JS_TRUE; }

调用:

    CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance();
CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);
ScriptingCore::getInstance()->runScript("hello.js"); JSContext *cx = sc->getGlobalContext();
JSObject *obj = sc->getGlobalObject();
JS_DefineFunction(cx, obj, "testjs", testjs, 2, JSPROP_READONLY | JSPROP_PERMANENT); jsval var1 = c_string_to_jsval(cx, "hahhahah");
jsval rval;
JS_CallFunctionName(cx, obj, "testfunction", 1, &var1, &rval); JSString* pS = JS_ValueToString(ScriptingCore::getInstance()->getGlobalContext(), rval);
JSStringWrapper pW(pS);
CCLog(pW.get().c_str());

关于jsb中js与c++的相互调用的更多相关文章

  1. JS和C#方法相互调用

    JS和C#方法相互调用 1.JS调用C#后台方法 方法一: 1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;2.在前台写一个js函数,内容为document.getEle ...

  2. Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

    IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 dele ...

  3. knockout中viewmodel跟子model相互调用

    用knockout写前端复杂js逻辑的确很方便,而且html界面也很清爽. 在ko中对于复杂的业务逻辑我会给viewmodel创建一些子model对象,但是viewmodel跟子model怎样相互调用 ...

  4. JS和ASP.net相互调用问题

    项目开发时,我们有时候会遇到后台asp调用前台的JS函数,又或者前台JS需要调用后台aspx.cs的函数,这里记录下如何处理这些问题 1.  ASP后台代码中,如果需要运行JS函数,则使用Regist ...

  5. js与C#之间相互调用的一些方法

    1.获得aspx客户端请求地址: <a src= 'http://<%=Request.Url.Host %><%= ResolveUrl("../PayCenter ...

  6. JS和Flash(AS)相互调用

    <!DOCTYPE html> <html> <head> <title>swf</title> <meta charset=&quo ...

  7. iOS中Objective-C与JavaScript之间相互调用的实现(实现了与Android相同的机制)转

    第三方库WebViewJavascriptBridge http://blog.csdn.net/zhaoxy_thu/article/details/22794201 Demo

  8. 在WebView中如何让JS与Java安全地互相调用

    在现在安卓应用原生开发中,为了追求开发的效率以及移植的便利性,使用WebView作为业务内容展示与交互的主要载体是个不错的折中方案.那么在这种Hybrid(混合式) App中,难免就会遇到页面JS需要 ...

  9. java与js交互,相互调用传参

    随着前端技术的发展与H5的广泛使用,移动端采用native+h5的方式越来越多了,对于Android来说就涉及到java与js的交互,相互调用传参等.下面就来看一下java与js交互的简单demo. ...

随机推荐

  1. 150个JS特效脚本

    收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...

  2. 很棒的Sketch动画教程

    就像别人可以用PPT做动画,而你只会用它做演示,别人可以拿ps做gif,你却只会用它p照片.软件就是这样,我们使用大多数的软件也就是了解的程度,很难算得上精通.(后面补充了小教程,想看干货的直接看后面 ...

  3. 【boost】使用lambda表达式和generate_n生成顺序序列

    程序中经常用到顺序序列(0,1,2,3,4,5,6.....),一直羡慕python有range这样的函数,而C++中通常只有用循环来处理这种初始化. 现在,结合boost库lambda(虽然差C++ ...

  4. Typecho集成ueditor笔记

    前言:萝卜青菜各有所爱,因为个人需求所以需要在博客中集成ueditor,并非是我不喜欢md语法 其实本篇的笔记的书写最早也是在本地的md编辑器上完成的 1. 首先下载ueditor编辑器,然后重命名文 ...

  5. CameraComponent Quality

    CameraComponent1.Quality := TVideoCaptureQuality.HighQuality; procedure TCameraComponentForm.Set720p ...

  6. Windows Socket 最大连接数

    Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响. Windows 下单机的TCP连接数受多个参数影响: 最大TCP连接数 [HKEY_LOCAL_MACHINE \Sy ...

  7. UVALive 3959 Rectangular Polygons (排序贪心)

    Rectangular Polygons 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/G Description In thi ...

  8. 关于缺省路由传递问题的探讨(上)[ip default-network、ip default-gateway等]

    指定缺省路由(last resort gateway)的指令供有3种,可以分成两类:   1.Ip default-gateway   仅在 "no ip routing" (关闭 ...

  9. 巧解Tomcat中JVM内存溢出问题

    你对Tomcat 的JVM内存溢出问题的解决方法是否了解,这里和大家分享一下,相信本文介绍一定会让你有所收获. tomcat 的JVM内存溢出问题的解决 最近在熟悉一个开发了有几年的项目,需要把数据库 ...

  10. 结合windows消息系统理解C#中WndProc函数和DefWndProc函数

    Windows消息系统由3部分组成:     1.消息队列.Windows应用程序的消息是由Windows统一在一个消息队列中管理的.     2.消息循环.应用程序从Windows消息队列中获得自己 ...