js代码调用c++代码的测试
2016-05-21 18:49
471 查看
根据前面的博客对JS调用C++的代码进行了测试,在Node里面加了jsbTest的方法进行Android打包测试。
1.编写coco2dx层的方法
CCNode.h
<span style="font-size:12px;">virtual int jsbTest() const;</span>
CCNode.cpp
jsb_cocos2dx_auto_api.js
jsb_cocos2dx_auto.hpp
运行结果
1.编写coco2dx层的方法
CCNode.h
<span style="font-size:12px;">virtual int jsbTest() const;</span>
CCNode.cpp
int Node::jsbTest(void) const { return 100; }2.编写js层的方法
jsb_cocos2dx_auto_api.js
cc.Node = { jsbTest : function() { return 0; }, }3.进行方法映射
jsb_cocos2dx_auto.hpp
bool js_cocos2dx_Node_jsbTest(JSContext *cx, uint32_t argc, jsval *vp); //声明jsb_cocos2dx_auto.cpp
bool js_cocos2dx_Node_jsbTest(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); cocos2d::Node* cobj = (cocos2d::Node *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Node_jsbTest : Invalid Native Object"); if (argc == 0) { uint16_t ret = cobj->jsbTest(); jsval jsret = JSVAL_NULL; jsret = uint32_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_cocos2dx_Node_jsbTest : wrong number of arguments: %d, was expecting %d", argc, 0); return false; } static JSFunctionSpec funcs[] = { JS_FN("jsbTest", js_cocos2dx_Node_jsbTest, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), //映射 }
运行结果
05-21 18:13:18.293: D/cocos2d-x debug info(5009): JS: 100
相关文章推荐
- JSP03
- 深入解析JavaScript中的立即执行函数
- JS数组sort比较函数
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
- Express.js Tutorial
- 禁止firefox 缓存input
- javascript的eval()方法
- JavaScript-学习一获取表单的值
- JS 系列一: Javascript 定义类(class)的三种方法
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理
- 关于Javascript模块化和命名空间管理