- 浏览: 27163 次
最新评论
本文为 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
有构造函数的模板,重载函数的模板等等,具体大家可以看里面的代码写法。
什么是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强化教程 —— 对象创建模式
2016-10-09 17:12 749本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 依赖注入
2016-09-28 17:10 677本文为 H5EDU 机构官方 HT ... -
AngularJs 基础教程 —— Select(选择框)
2016-09-23 17:14 861本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 控制器
2016-09-21 17:22 630本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 简介(10)
2016-09-14 17:41 566本文为 H5EDU 机构官方 HT ... -
AngularJs 基础教程 —— 与php服务器
2016-09-12 17:49 1321本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— 资源打包工具的使用及资源的异步加载处理
2016-09-08 17:45 804本文为 HTML5培训 机构官方 HTML5培训 教程,主要介 ... -
JavaScript强化教程 —— Cocos2d-JS极速调试技巧
2016-09-05 16:18 927本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— Cocos2d-JS游戏快速接入微信JS-SDK
2016-09-02 16:07 1082本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程—— 内置粒子系统
2016-08-29 16:00 803本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——JavaScript Math(算数) 对象
2016-08-26 16:33 595本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案
2016-08-25 16:25 1244本文为 H5EDU 机构官方 HT ... -
JavaScript强化教程 -- cocosjs场景切换
2016-08-24 16:11 1410本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
CSS基础教程 -- 媒体查询屏幕适配
2016-08-22 15:15 1130本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JQuery强化教程 —— jQuery Easing
2016-08-18 14:54 833本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
fullPage教程 -- 整屏滚动效果插件 fullpage详解
2016-08-17 15:21 853本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——获取内容和属性
2016-08-15 15:35 484本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——jQuery 动画2
2016-08-12 14:12 651本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
bootstrap教程(二) —— 列表组listgroup
2016-08-11 14:46 661本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
bootstrap教程(二)——导航条
2016-08-08 16:22 568本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ...
相关推荐
2. **JavaScript绑定**:Cocos2d-x如何将C++底层库与JavaScript结合,提供JSB(JavaScript Bindings),让开发者能够使用JavaScript编写游戏逻辑。 3. **图形渲染**:学习如何使用Cocos2d-x的绘图API,包括纹理、...
cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这个“cocos2d-x-3.8.zip”压缩包包含的是cocos...
9. **脚本支持**:Cocos2d-iphone可以通过JavaScript Bindings (JSB) 支持JavaScript编写游戏逻辑,也可以使用Lua绑定。 10. **国际化与本地化**:支持多语言设置,便于将游戏推向全球市场。 这个源码实例很可能是...
这可能影响到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中的Visual Studio(VS)模板,特别是针对JavaScript(JS)的开发环境。 首先,我们要明白VS模板是用于快速创建新项目的基础结构。这些模板包含了项目的基本文件和配置,...
这意味着 Cocos2d-JS 游戏可以使用 Cocos2d 的“JavaScript 绑定”在 Cocos2d-x 上运行,无需或只需很少修改。 但是,使用cocos2d-js 开发有一些弱点,最主要的就是依赖管理 的Cocos2D-JS使用全局命名空间管理依赖...
- `jsb.sqlite`:JavaScript绑定数据库,用于存储cocos2d-x的JSAPI与Lua之间的映射关系,以便于Lua调用JavaScript代码。 - `.settings`:IDE的项目特定设置目录,可能包含编译器设置、代码风格等。 - `runtime`:...
Cocos2d-x 是一个跨平台的游戏开发框架,它基于 C++ 实现,同时提供了 Lua 和 JavaScript 的绑定,让开发者能够灵活地选择适合自己的编程语言进行游戏开发。在 Cocos2d-x 3.0 版本中,引入了一系列重要的更新和改进...
但也可以用作本机Android / iOS / Mac / Win7 / WinRT / Linux(TODO:需要确认平台支持)应用程序的基础,只需进行一些修改即可使用Mozilla的SpiderMonkey Javscript引擎支持的Javascript绑定(jsb)。 去做 将...
总的来说,Cocos2d-x JSB绑定工具是游戏开发中的利器,它简化了C++和JavaScript之间的交互,使开发者能够充分利用两种语言的优势,提高开发效率并保证游戏质量。通过熟练掌握和使用这个工具,开发者可以在多平台上...
2. **生成绑定代码**:使用`genbindings.py`脚本(通常位于`cocos2d-x/tools/js-bindings/python-bindings`目录下),这一步需要Python环境。由于官方提供的脚本是基于Python2的,你需要对脚本进行修改,使其兼容...
- `jsb`: JavaScript Bindings(JSB)是Cocos2d-x和Cocos2d-HTML5之间的桥梁,用于在JavaScript和C++之间实现高效的交互。这里可能包含预编译的库和绑定文件。 - `project.json`: 这是Cocos Creator项目配置文件,...
JSB是Cocos2d-x为了实现C++与JavaScript之间的互操作性而创建的一套绑定机制。它基于SpiderMonkey JavaScript引擎,使得C++对象和JavaScript对象可以相互调用对方的方法和属性,实现了两种语言的无缝集成。 **二、...
首先,JSB是Cocos2d-x项目中的一部分,它实现了JavaScript与C++的双向绑定,使得开发者可以利用JavaScript的易用性和灵活性,同时利用C++的高性能。JSB的核心思想是通过一种名为“绑定”的过程,将C++的API转换为...
通过COCOS2D-X的JavaScript Bindings (JSB) 框架,开发者可以利用JavaScript来编写游戏逻辑,利用C++的性能优势同时享受JavaScript的易用性和灵活性。 【C++】是COCOS2D-X引擎的主要编程语言,以其高效、灵活和强大...
- 游戏引擎:Cocos2d-JS 版本3.10,这是一个基于C++和JavaScript的游戏开发框架,用于创建2D游戏和其他互动应用。 2. **开发工具**: - **Visual Studio Code**:一个强大的源代码编辑器,支持多种语言,包括C++...
在这个"JSBinding test --CCTableView"项目中,主要的目标是实现Cocos2d-x游戏引擎中的CCTableView控件与JavaScript的紧密集成。 Cocos2d-x是一款开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android和其他...
Cocos2d-html5 v3.0 RC0引入了更强大的JavaScript绑定机制,使得JS与C++间的通信变得更加便捷。这个"JS与C++间通讯DEMO"正是为了展示这一功能而设计的。 首先,我们来理解一下JS与C++通信的重要性。在HTML5游戏或...
jsb是cocos2d-x引擎中的JavaScript Bindings,它允许JavaScript代码直接调用C++接口,从而在cocos Creator中实现高性能的游戏逻辑。在TcpJsbProtobufTest项目中,jsb被用来在JavaScript层与底层C++ TCP通信库之间...