本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改 什么是JSB JSB是javascript binding的简称。Cocos2d-JS中使用的javascript引擎是Mozilla 的spidermonkey,而JSB绑定的目的就是让javascript脚本能够调用到c++代码,c++代码能够调用到javascript脚本。 怎么生成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 python setup.py install 如果是mac下,在命令前面在sudo即可。 详细信息大家可以查看官网的教程(地址) (2)运行genbindings.py 搭建好环境后,打开命令行,进入目录cocos2d-js/tools/tojs 。输入命令 1 python genbindings.py 自动绑定成功以后可以看到下图所示 20150521210554473.jpg 绑定后的生成的代码在目录 cocos2d-js/frameworks/js-bindings/bindings/auto 至于为什么是生成这些代码,大家可以看genbindings.py中的代码。这里就不详细说明了 2、手动生成脚本(本文不做讲解) 怎么进行自动生成的脚本绑定规则修改 自动绑定规则的约束主要是在这个目录下tools/bindings-generator/targets/spidermonkey。 我们先来看conversions.yaml,这个是关于绑定代码的配置文件。 1、类型转换 20150521211842536.jpg 根据上图可以看到。在自动绑定中会将c++的float类型转换成double类型,因为float类型没有办法生成绑定。short类型转换成int32_t 2、命名空间转换 20150521212053405.jpg 将c++代码中带有左边命名空间的,在js中定义为右边的命名空间。 3、将JS传过来的脚本变量转换为c++变量 20150521212332451.jpg 比如传过来的js变量需要转换成是int型,就用右边的代码来转换。 4、将JS传过来的脚本对象转换成c++对象 20150521212601552.jpg js传递过来的对象类型需要跟c++对象进行映射。如果要增加对于对象为空值得处理判定,就可以在这里增加。 5、将c++的变量转换成js变量 20150521212946602.jpg 比如int对象需要转换成js变量那么用的就是int32_to_jsval。 6、将c++的对象转换成js对象 20150521213139219.jpg 看上图就对比代码就可以看出。c++转换成js对象的函数就通过这几个步骤 js_get_or_create_proxy OBJECT_TO_JSVAL 以上就是所有的转换基础规则,然后在根据一些模板,就完成了自动绑定代码的生产。 templates目录下则是一对生成代码的模板 20150521211533483.jpg 有构造函数的模板,重载函数的模板等等,具体大家可以看里面的代码写法。
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
精选 转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
cocos2d-x 中CCSpriteFrameCache用法与Cocos Creator中有关方案
本文给出cocos2d-x中CCSpriteFrameCache类的使用思路,并对比了Cocos Creator 3.8环境下的实现方案,但有关更高级的缓存方案并没有讨论,请注意。
缓存 cocos creator cocos2d-x CCSpriteFrameCache SpriteFrame -
cocos2d-x中的动作替换成Cocos creator 3.8中的Tween动画
文章简单介绍从Cocos2d-x向Cocos Creator转移过程中,原先的Action动作在Creator中如何实现。
Cocos Creator Cocos2d-x 动作 Tween -
Cocos2d-x 中精灵间的zIndex索引在cocos Creator 3.8中是如何实现的?
本文旨在探讨cocos creator 3.8环境中实现类似于cocos2d-x中节点zIndex值大小的控制方案,以便实现在各类扑克游戏中上下叠压的效果。
遮罩层 cocos creator cocos2d-x zIndex siblingIndex -
cocos2d-js 3.0 jsb环境调用底层java代码
cocos2d-js 3.0 jsb环境调用底层java代码
cocos2d-js jsb 调用 ja -
Cocos2d-JS 环境搭建
请参见:http://www.cnblogs.com/zisou/p/cocos2dx-js1.html
Cocos2d-JS 环境搭建 2d html cocos2d -
Cocos2d-JS实现的2048
一、前言2048是之前火过一段时间的休闲数字消除类游戏,它的玩法很简单,上手很容易,可是想到要得到高分却很难,看似简单的游戏却有着
游戏 Cocos Math 初始化 封装