【cocos2d-x从c++到js】JS与C++的交互1——JS代码调用C++代码
发布时间:2020-12-14 17:10:14 所属栏目:百科 来源:网络整理
导读:我们要通过SpiderMonkey引擎的注册接口,向SpiderMonkey注册相应的从C++到JS的绑定函数,这些函数用于把JS函数调用代码转换成对应C++函数调用来执行。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //在AppDelegate::applicationDidFinishLaunching函数
2
|
var
node = cc.Node.create();
node.setVisible(
false
);
|
auto
node = CCNode::create();
node->setVisible(
false
当然,SpiderMonkey远远还不止干了这些,还做了很多事,比如绑定和查找JS和C++对象的对应关系,包装参数为对应类型,类型安全检查,返回值包装等等。要知道他干了些什么,直接看引擎代码是更好的选择。
19
JSBool js_cocos2dx_Node_create(JSContext *cx,uint32_t argc,jsval *vp)
{
if
(argc == 0) {
cocos2d::Node* ret = cocos2d::Node::create();
jsval jsret = JSVAL_NULL;
do
{
(ret) {
js_proxy_t *proxy = js_get_or_create_proxy<cocos2d::Node>(cx,(cocos2d::Node*)ret);
jsret = OBJECT_TO_JSVAL(proxy->obj);
}
else
{
jsret = JSVAL_NULL;
}
while
(0);
JS_SET_RVAL(cx,vp,jsret);
return
JS_TRUE;
}
JS_ReportError(cx,
"js_cocos2dx_Node_create : wrong number of arguments"
);
JS_FALSE;
}
1
jsval jsret = JSVAL_NULL;
jsret = OBJECT_TO_JSVAL(proxy->obj);