cocos2d-js-v3.0-rc2:js绑定调用c++函数 1

本文介绍了一种简单的方法,演示如何在Cocos2d-js中将C++函数绑定到JavaScript,以便在JavaScript代码中直接调用。通过在CCSprite类中定义一个C++函数`sumTwonum`,并在JavaScript Bindings(jsb)中进行相应的绑定,使得JavaScript能够调用并执行C++的计算操作。示例代码展示了如何调用`sumTwonum`函数并打印结果。
摘要由CSDN通过智能技术生成

分享一种简单的js调用c++代码的绑定方法、


首先用c++写一个方法,为了简便就在CCSprite里面写个一个sumTwonum(两个数相加)

在CCSprite.h里添加

public:
    int sumTwonum(int a,int b);

在CCSprite.cpp里添加

int Sprite::sumTwonum(int a,int b){
    return a+b;
}


接着就是jsb里面绑定这个函数

在jsb_cocos2dx_auto.hpp里添加

bool js_cocos2dx_Sprite_sumTwonum(JSContext *cx, uint32_t argc, jsval *vp);

在jsb_cocos2dx_auto.cpp里添加

bool js_cocos2dx_Sprite_sumTwonum(JSContext *cx, uint32_t argc, jsval *vp)
{
jsval *argv = JS_ARGV(cx, vp);
bool ok = true;


JSObject *obj = JS_THIS_OBJECT(cx, vp);
js_proxy_t *proxy = jsb_get_js_proxy(obj);
cocos2d::Sprite* cobj = (cocos2d::Sprite *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_Sprite_getOffsetPosition : Invalid Native Object");
if (argc == 2) {
int arg0;
int arg1;
do {
ok &= jsval_to_int32(cx, argv[0], (int32_t *)&arg0);
ok &= jsval_to_int32(cx, argv[1], (int32_t *)&arg1);
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_Event_constructor : Error processing arguments");
}while(0);


const int ret = cobj->sumTwonum(arg0,arg1);
jsval jsret = JSVAL_NULL;
jsret = int32_to_jsval(cx, ret);
JS_SET_RVAL(cx, vp, jsret);
return true;
}
return false;
}

在这个cpp里找到static JSFunctionSpec funcs[] ,这个数组里面添加一条如下一条数据

        JS_FN("sumTwonum", js_cocos2dx_Sprite_sumTwonum, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),


这样就好了,用js可以直接调用,代码如下:

cc.log("bounding Success "+this.sprite.sumTwonum(1,1));

输出的结果是:

JS: bounding Success 2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值