美文网首页
引用cocos creator 讲解jsb如何生效

引用cocos creator 讲解jsb如何生效

作者: 不背包的程序员 | 来源:发表于2020-09-22 17:49 被阅读0次

                                                   无题

导读: jsb是什么,有什么作用

jsb是JavaScript和c++的桥梁,cocos creator 的js层面和native层面的沟通 靠的就是jsb。

1:首先在引擎初始化的时候会创建一个js的运行环境,引擎持有其上下文,保留在ScriptEngine类中,ScriptEngine为单例。

具体代码

2:注册所有需要的jsb    jsb_register_all_modules();

jsb_register_all_modules.cpp文件中罗列了非常多需要注册的jsb,我们挑选其中一个来具体分析。

obj为步骤1中创建的_globalObj,图中代码大概意思为,设置一个名字为"jsb"的 js obj到_globalObj中,持有这个js obj(nsval)传递给js_register_video_VideoPlayer()方法中。

se::Class用于暴露 C++ 类到 JS 中,它会在 JS 中创建一个对应名称的构造函数。

defineFunction绑定一个名字为xxx的js方法到这个对象上。

 cls->install();把cls注册到虚拟机中。

 JSBClassType::registerClass<cocos2d::VideoPlayer>(cls);绑定VideoPlayer类和cls。

3: js初始化刚才绑定的对象 

例子

let video = new jsb.VideoPlayer();

video.setFrame(0,0,100,100);

就会调用到我们之前绑定的js_video_VideoPlayer_setFrame方法里面

se::State 中包含初始化这个对象的时候,绑定的c++对象的指针。

static bool js_video_VideoPlayer_constructor(se::State& s) //初始化方法

{

    cocos2d::VideoPlayer* cobj =new(std::nothrow)cocos2d::VideoPlayer();

    s.thisObject()->setPrivateData(cobj);   

     return true;

}

seval_to_xxx为封装的一些列工具方法,用于类型转换 

相关文章

网友评论

      本文标题:引用cocos creator 讲解jsb如何生效

      本文链接:https://www.haomeiwen.com/subject/lopwyktx.html