您的位置:首页 > 移动开发 > Cocos引擎

【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题

2016-08-15 17:15 295 查看
对于C++来说,存在函数重载,例如:

这两个函数的函数名是一样的,但是参数表不同。最终在编译器编译后的函数签名不一样。

但是在JavaScript中并没有这种机制。怎么破?存在两种情况:

第一种、JS需要调用重载的C++函数接口

我们就以上面的函数为例,来看看在cxx-generator的自动生成代码中,函数重载是如何处理的。打开jsb_cocos2dx_auto.cpp,找到如下代码:

只是通过argc参数简单判断了一下参数个数,然后就执行对应的分支代码就好了。但是如果遇到参数个数相同,而类型不同的情况呢?尚不得而知。

第二种、不需要调用C++函数接口,直接在JS层代码中模拟一下函数重载。这个就要利用JS语言的一些特性了。我们直接看Cocos2d-html5中的对应代码。哦,no,因为html5里面关于CCNode::setScale函数写了一点杂技代码。所以我们改成看setPosition函数吧。也是一样的。

可以看到,该代码使用了JS的arguments来判断参数个数,然后执行对应的分支代码。

好了,重载就说道这里,下篇继续~

来自:http://blog.csdn.net/kaitiren/article/details/22163345
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: