js代码调用c++代码的测试

来源:互联网 发布:男鞋推荐 知乎 编辑:程序博客网 时间:2024/05/21 11:19

根据前面的博客对JS调用C++的代码进行了测试,在Node里面加了jsbTest的方法进行Android打包测试。

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







0 0
原创粉丝点击