`
周大帅
  • 浏览: 26506 次
社区版块
存档分类
最新评论

JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改

阅读更多
本文为 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

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

相关推荐

    Cocos2d-x实战 JS卷

    2. **JavaScript绑定**:Cocos2d-x如何将C++底层库与JavaScript结合,提供JSB(JavaScript Bindings),让开发者能够使用JavaScript编写游戏逻辑。 3. **图形渲染**:学习如何使用Cocos2d-x的绘图API,包括纹理、...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...

    iOS实例开发源码——Devint6669-cocos2d-iphone-bedca97.zip

    9. **脚本支持**:Cocos2d-iphone可以通过JavaScript Bindings (JSB) 支持JavaScript编写游戏逻辑,也可以使用Lua绑定。 10. **国际化与本地化**:支持多语言设置,便于将游戏推向全球市场。 这个源码实例很可能是...

    cocos2d-js 3.17.2升级spine到3.8.rar

    这可能影响到Cocos2d-js中的绑定代码,例如`jsb_cocos2dx_spine_manual.cpp`、`jsb_cocos2dx_spine_manual.h`、`jsb_cocos2dx_spine_auto.cpp`和`jsb_cocos2dx_spine_auto.hpp`这些文件。需要仔细检查和适配新的API...

    Cocos2d-x VS模板修改

    在本文中,我们将深入探讨如何修改Cocos2d-x中的Visual Studio(VS)模板,特别是针对JavaScript(JS)的开发环境。 首先,我们要明白VS模板是用于快速创建新项目的基础结构。这些模板包含了项目的基本文件和配置,...

    bearcat-cocos2d-js-example:熊猫-cocos2d-js-example

    这意味着 Cocos2d-JS 游戏可以使用 Cocos2d 的“JavaScript 绑定”在 Cocos2d-x 上运行,无需或只需很少修改。 但是,使用cocos2d-js 开发有一些弱点,最主要的就是依赖管理 的Cocos2D-JS使用全局命名空间管理依赖...

    cocos2d-Lua示例demo源码踩虫子-MOD美国大兵

    - `jsb.sqlite`:JavaScript绑定数据库,用于存储cocos2d-x的JSAPI与Lua之间的映射关系,以便于Lua调用JavaScript代码。 - `.settings`:IDE的项目特定设置目录,可能包含编译器设置、代码风格等。 - `runtime`:...

    cocos2d-x-3.0.zip

    Cocos2d-x 是一个跨平台的游戏开发框架,它基于 C++ 实现,同时提供了 Lua 和 JavaScript 的绑定,让开发者能够灵活地选择适合自己的编程语言进行游戏开发。在 Cocos2d-x 3.0 版本中,引入了一系列重要的更新和改进...

    cocos2d-js-breakouts:突破教程游戏的Cocos2d-html实现

    但也可以用作本机Android / iOS / Mac / Win7 / WinRT / Linux(TODO:需要确认平台支持)应用程序的基础,只需进行一些修改即可使用Mozilla的SpiderMonkey Javscript引擎支持的Javascript绑定(jsb)。 去做 将...

    jsb绑定工具

    总的来说,Cocos2d-x JSB绑定工具是游戏开发中的利器,它简化了C++和JavaScript之间的交互,使开发者能够充分利用两种语言的优势,提高开发效率并保证游戏质量。通过熟练掌握和使用这个工具,开发者可以在多平台上...

    cocos creater2.x JSB绑定 toJS python3

    2. **生成绑定代码**:使用`genbindings.py`脚本(通常位于`cocos2d-x/tools/js-bindings/python-bindings`目录下),这一步需要Python环境。由于官方提供的脚本是基于Python2的,你需要对脚本进行修改,使其兼容...

    基于coco2d-html5 开发的小游戏.zip

    - `jsb`: JavaScript Bindings(JSB)是Cocos2d-x和Cocos2d-HTML5之间的桥梁,用于在JavaScript和C++之间实现高效的交互。这里可能包含预编译的库和绑定文件。 - `project.json`: 这是Cocos Creator项目配置文件,...

    2.jsb_c++调用js中的方法

    JSB是Cocos2d-x为了实现C++与JavaScript之间的互操作性而创建的一套绑定机制。它基于SpiderMonkey JavaScript引擎,使得C++对象和JavaScript对象可以相互调用对方的方法和属性,实现了两种语言的无缝集成。 **二、...

    1.jsb_js调用c++中的方法

    首先,JSB是Cocos2d-x项目中的一部分,它实现了JavaScript与C++的双向绑定,使得开发者可以利用JavaScript的易用性和灵活性,同时利用C++的高性能。JSB的核心思想是通过一种名为“绑定”的过程,将C++的API转换为...

    BMF字体制作工具

    通过COCOS2D-X的JavaScript Bindings (JSB) 框架,开发者可以利用JavaScript来编写游戏逻辑,利用C++的性能优势同时享受JavaScript的易用性和灵活性。 【C++】是COCOS2D-X引擎的主要编程语言,以其高效、灵活和强大...

    C++与JS互调、异步网络通信文档_ 20190606.doc

    - 游戏引擎:Cocos2d-JS 版本3.10,这是一个基于C++和JavaScript的游戏开发框架,用于创建2D游戏和其他互动应用。 2. **开发工具**: - **Visual Studio Code**:一个强大的源代码编辑器,支持多种语言,包括C++...

    JSBinding test --CCTableView

    在这个"JSBinding test --CCTableView"项目中,主要的目标是实现Cocos2d-x游戏引擎中的CCTableView控件与JavaScript的紧密集成。 Cocos2d-x是一款开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android和其他...

    JS与C++间通讯DEMO

    Cocos2d-html5 v3.0 RC0引入了更强大的JavaScript绑定机制,使得JS与C++间的通信变得更加便捷。这个"JS与C++间通讯DEMO"正是为了展示这一功能而设计的。 首先,我们来理解一下JS与C++通信的重要性。在HTML5游戏或...

    TcpJsbProtobufTest:一个基于cocos Creator的项目,解决了tcp + jsb + protobuf的问题

    jsb是cocos2d-x引擎中的JavaScript Bindings,它允许JavaScript代码直接调用C++接口,从而在cocos Creator中实现高性能的游戏逻辑。在TcpJsbProtobufTest项目中,jsb被用来在JavaScript层与底层C++ TCP通信库之间...

Global site tag (gtag.js) - Google Analytics