Cocos2d-JS自动JSB绑定规则修改

Cocos2d-JS自动JSB绑定规则修改,第1张

概述2015-05-28 10:28:39 什么是JSB JSB是javascript binding的简称。Cocos2d-JS中使用的javascript引擎是Mozilla 的spidermonkey,而JSB绑定的目的就是让javascript脚本能够调用到c++代码,c++代码能够调用到javascript脚本。 怎么生成JSB绑定 1、自动生成脚本 在Cocosd-JS引擎目录下的tool 2015-05-28 10:28:39

什么是JsB

JsB是JavaScript binding的简称。Cocos2d-Js中使用的JavaScript引擎是Mozilla 的spIDermonkey,而JsB绑定的目的就是让JavaScript脚本能够调用到c++代码,c++代码能够调用到JavaScript脚本。


@H_301_20@怎么生成JsB绑定

1、自动生成脚本

在Cocosd-Js引擎目录下的tools/toJs目录下有官方用于生成自动版本的脚本。我们可以从这里入手来学习。

(1)搭建环境

需要安装以下三个软件

python 2.7.x(下载地址):目前引擎里面的bindings-generator只支持python2.7.x版本

py-ymal(下载地址):这是python的一个第三方包,下载页有不同系统的安装方式,可以参考generator.py会调用到这个包。

cheetah(下载地址):这也是python的一个第三方包,一个模板,generator.py会调用到这个包,安装方式跟py-ymal相同。

下载好的软件包解压后。在软件目录下执行

1 pythonsetup.pyinstall

如果是mac下,在命令前面在sudo即可。

详细信息大家可以查看官网的教程(@L_403_3@)

(2)运行genbindings.py

搭建好环境后,打开命令行,进入目录cocos2d-Js/tools/toJs 。输入命令

pythongenbindings.py

自动绑定成功以后可以看到下图所示

绑定后的生成的代码在目录

cocos2d-Js/frameworks/Js-bindings/bindings/auto

至于为什么是生成这些代码,大家可以看genbindings.py中的代码。这里就不详细说明了

2、手动生成脚本(本文不做讲解)

@H_301_20@怎么进行自动生成的脚本绑定规则修改

自动绑定规则的约束主要是在这个目录下tools/bindings-generator/targets/spIDermonkey。

我们先来看conversions.yaml,这个是关于绑定代码的配置文件。

1、类型转换

根据上图可以看到。在自动绑定中会将c++的float类型转换成double类型,因为float类型没有办法生成绑定。short类型转换成int32_t

2、命名空间转换

将c++代码中带有左边命名空间的,在Js中定义为右边的命名空间。

3、将Js传过来的脚本变量转换为c++变量

比如传过来的Js变量需要转换成是int型,就用右边的代码来转换。

4、将Js传过来的脚本对象转换成c++对象

Js传递过来的对象类型需要跟c++对象进行映射。如果要增加对于对象为空值得处理判定,就可以在这里增加。

5、将c++的变量转换成Js变量

比如int对象需要转换成Js变量那么用的就是int32_to_Jsval。

6、将c++的对象转换成Js对象

看上图就对比代码就可以看出。c++转换成Js对象的函数就通过这几个步骤

1 2
Js_get_or_create_proxy OBJECT_TO_JsVAL

以上就是所有的转换基础规则,然后在根据一些模板,就完成了自动绑定代码的生产。

templates目录下则是一对生成代码的模板

有构造函数的模板,重载函数的模板等等,具体大家可以看里面的代码写法。

总结

以上是内存溢出为你收集整理的Cocos2d-JS自动JSB绑定规则修改全部内容,希望文章能够帮你解决Cocos2d-JS自动JSB绑定规则修改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存