博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
阅读量:6305 次
发布时间:2019-06-22

本文共 1590 字,大约阅读时间需要 5 分钟。

  hot3.png

本文为  机构官方  教程,主要介绍: —— Cocos2d-JS自动JSB绑定规则修改

 

什么是JSBJSB是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相同。下载好的软件包解压后。在软件目录下执行1python setup.py install如果是mac下,在命令前面在sudo即可。详细信息大家可以查看官网的教程(地址)(2)运行genbindings.py搭建好环境后,打开命令行,进入目录cocos2d-js/tools/tojs 。输入命令1python 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_t2、命名空间转换20150521212053405.jpg将c++代码中带有左边命名空间的,在js中定义为右边的命名空间。3、将JS传过来的脚本变量转换为c++变量20150521212332451.jpg比如传过来的js变量需要转换成是int型,就用右边的代码来转换。4、将JS传过来的脚本对象转换成c++对象20150521212601552.jpgjs传递过来的对象类型需要跟c++对象进行映射。如果要增加对于对象为空值得处理判定,就可以在这里增加。5、将c++的变量转换成js变量20150521212946602.jpg比如int对象需要转换成js变量那么用的就是int32_to_jsval。6、将c++的对象转换成js对象20150521213139219.jpg看上图就对比代码就可以看出。c++转换成js对象的函数就通过这几个步骤js_get_or_create_proxyOBJECT_TO_JSVAL以上就是所有的转换基础规则,然后在根据一些模板,就完成了自动绑定代码的生产。templates目录下则是一对生成代码的模板20150521211533483.jpg有构造函数的模板,重载函数的模板等等,具体大家可以看里面的代码写法。

转载于:https://my.oschina.net/yom/blog/744964

你可能感兴趣的文章
Python使用QRCode模块生成二维码
查看>>
英语学习的重要性
查看>>
Android中Handler引起的内存泄露
查看>>
原产地政策,jsonp跨域
查看>>
HDU 1143 Tri Tiling(递归)
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>
轨磁条简介
查看>>
(算法)交错的字符串
查看>>
hdu 5471(状压DP or 容斥)
查看>>
oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动的区别
查看>>
NSQ部署
查看>>
git常用命令记录
查看>>
IBM发布新一代云计算工具包MobileFirst Foundation
查看>>
唯品会HDFS性能挑战和优化实践
查看>>
大规模学习该如何权衡得失?解读NeurIPS 2018时间检验奖获奖论文
查看>>
大厂前端高频面试问题与答案精选
查看>>
我们用5分钟写了一个跨多端项目
查看>>