Cocos2d-x JSB 自己主动绑定bindings
Javascript Binding (简称JSB) 自己主动绑定教程。
Cocos2d-x JSB 自己主动绑定bindings-generator (以下简称B-G) 使用心得
假设想弄清深入原理,推荐阅读 Cocos2D-x从C++到JS的进阶之路:http://blog.51cto.com/zt/560
B-G 是什么?
当使用JSB的时候,假设你想要使用的C++的类或者方法没有在已有JSB中被绑定,这时候。就能够使用B-G。
它能够生成相相应的C++的绑定文件和相相应的JS接口,届时,你仅仅须要调用生成的相相应的JS接口,它将自己主动转换成原来的C++的类。相当于直接调用原来的C++方法或者类。
B-G生成主要流程:
准备好必要的工具 -> 准备好你要绑定的C++的文件 -> 写生成文件的.ini配置文件和.sh 脚本程序 -> 执行 .sh 脚本文件 -> 生成绑定文件 -> 測试绑定文件直至能够正常使用
必要的工具:
cocos2d-x引擎:http://cocos2d-x.org/projects/cocos2d-x/wiki/Download
python 2.7:http://www.python.org/download/
(眼下引擎里面的bindings-generator仅仅支持python2.7版本号)
py-ymal: http://pyyaml.org/wiki/PyYAML (这是python的一个第三方包。下载页有不同系统的安装方式,能够參考。
generator.py会调用到这个包。
)
cheetah:http://www.cheetahtemplate.org/ (这也是python的一个第三方包,一个模板。generator.py会调用到这个包。安装方式跟py-ymal同样。)
libclang:http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz (生成的时候须要用到的lib,注意master分支也就是2.2.2这个版本号的引擎用3.1的,develop分支也就是3.0版本号的引擎用3.3的)
Android NDK:http://dl.google.com/android/ndk/android-ndk-r8c-darwin-x86.tar.bz2 (測试的时候使用的v2.2.2用的r8c, 如今的3.0beta版须要用r9b)
.ini文件
參考样例:cocos2dx引擎根文件夹/tools/bindings-generator/test/test.ini
cocos2dx引擎根文件夹/tools/tojs/cocos2dx_extension.ini
cocos2dx引擎根文件夹/tools/tojs/cocos2dx.ini
.ini中部分參数的使用方法:
name: 单纯仅仅是名称。
prefix: 最后生成的文件都会以这个命名前缀,如 prefix.cpp, prefix.hpp, prefix_api.js
classes: 你的所需转换的类的名称。必须是所导入的头文件里全部的类,这里能够使用正則表達式来增加多个类,參考cocox2dx.ini。
extra_arguments: 一些接口所需的系统參数。如clang包。android ndk包的引入所需的系统參数,写法能够參照以上三个.ini。
headers: 你所须要绑定的头文件路径。
target_namespace:命名空间。最后生成的JS文件的类。会以这个命名空间开头。比如你的类为sqlite。命名空间为cocos2dx。那么最后生成的就是cocos2dx.sqlite。
rename_functions:能够将你要绑定的方法的名称更改成你所要的。能够更改多个。用逗号隔开,写法參照 SqliteCpp::[sqlite3_execCpp=sqlite3_exec]。这个就是将SqliteCpp中的sqlite3_
execCpp方法重命名为sqlite3_exec方法。
rename_classes :同上。重命名类。
skip :跳过你所不须要绑定的方法和类,于是就不生成。
.sh文件:主要调用程序。用来读取.ini配置文件和写部分參数。
參考样例:cocos2dx引擎根文件夹/tools/tojs/genbindings.sh
cocos2dx引擎根文件夹/tools/bindings-generator/test/test.sh
以下这句话便设定了通过调用generator.py来调用你的配置文件。并在你所设定的敌方生成你须要的绑定文件。
set -x LD_LIBRARY_PATH=${CLANG_ROOT}/lib $PYTHON_BIN ${CXX_GENERATOR_ROOT}/generator.py
${TO_JS_ROOT}/sqlite.ini -s sqlite -o ${TO_JS_ROOT}/sqliteBinding
写好.ini和.sh后,在cmd执行 sudo 你的.sh路径 。便能够在你配置的地方找到你生成的文件。
Cocos2d-x JSB 自己主动绑定bindings的更多相关文章
- cocos2dx 自己主动绑定js
依照教程把全部资源下载好后....... 找到cocos2dx project下的tools/bindings-generator/test 发现里面有test.sh , test.ini , 去掉s ...
- cocos2d js jsb XMLHttpRequest 中文乱码
1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...
- slf自己主动绑定实现类过程推断
依照绑定实现类的方式是基于约定原则:推断分下面几个步骤 1.LoggerFactory扫描实现类路径有几个实现类,即在org/slf4j/impl/下有几个StaticLoggerBinder.cla ...
- 深入解析QML引擎, 第2部分: 绑定(Bindings)
原文 QML Engine Internals, Part 2: Bindings 译者注:这个解析QML引擎的文章共4篇,分析非常透彻,在国内几乎没有找到类似的分析,为了便于国内的QT/QML爱好 ...
- Knockoutjs实例 - 属性绑定(Bindings)之流程控制(Control flow)
一.foreach binding 使用此功能可以方便我们循环遍历输出某个数组.集合中的内容. (1).循环遍历输出数组 View Row Code 1 <script type="t ...
- javascript 自己主动绑定JS callback 的方法函数
自己写的一个javascript 智能绑定callback 而且调用运行的函数.主要用于异步请求的 ajax中: <!DOCTYPE html> <html> <head ...
- cocos2dx——lua自己主动和手动绑定
[自己主动绑定] 參考:http://my.oschina.net/skyhacker2/blog/298397 主要是通过引擎自带的tools/tolua,主要过程例如以下: 1.编写好要导出的c+ ...
- cocos2dx手写js绑定C++
这两天连续查阅了js绑定c++的非常多文章 , 有手动与自己主动两种方式 . 本来想用自己主动绑定的 , 可是NDK一直下载不下来.....就给算了 . 以下总结一下手动绑定的实现过程 : 一共三步 ...
- Linux中实现多网卡绑定总结
在Linux中实现多网卡绑定 一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用.用于网络负载均衡及网络冗余: Li ...
随机推荐
- Java8特性详解 lambda表达式 Stream【转】
本文转自http://www.cnblogs.com/aoeiuv/p/5911692.html 1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有 ...
- 微信小程序登录对接Django后端实现JWT方式验证登录
先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...
- gnu printf可变参数宏
可变参数的宏 标准C只支持可变参数的函数,意味着函数的参数可以是不固定的 例如printf()函数的原型是int printf(const char *format [,argument]...) 而 ...
- 基础训练 2n皇后问题
2n皇后问题 #include<iostream> #include<vector> using namespace std; int cnt = 0, n; vector&l ...
- <题解>洛谷P3385 【模板】负环
题目链接 判断一张图中是否存在关于顶点1的负环: 可以用SPFA跑一遍,存在负环的情况就是点进队大于n次 因为在存在负环的情况下,SPFA会越跑越小,跑进死循环 在最差的情况下,存在的负环长度是“n+ ...
- 【JavaScript 3—基础知识点】:运算符
导读:其实看到这个运算符的学习,很有一种熟悉感,因为在总体看来,和之前的C++有很多类似的地方,但当时觉得简单,没有总结.所以,这次一定得总结了.其实,知识的罗列,基础的积累,在学习中也很重要. 一. ...
- jQuery获得页面元素的绝对/相对位置
获取页面某一元素的绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; ...
- [UOJ#122][NOI2013]树的计数
[UOJ#122][NOI2013]树的计数 试题描述 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的 DFS 序以及 BFS 序.两棵不同的树的 DFS 序 ...
- [BZOJ1604] [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居(好题)
传送门 良心题解 #include <set> #include <cstdio> #include <iostream> #include <algorit ...
- BestCoder Round #32
问题描述 目前,我们用PM2.5的含量来描述空气质量的好坏.一个城市的PM2.5含量越低,它的空气质量就越好.所以我们经常按照PM2.5的含量从小到大对城市排序.一些时候某个城市的排名可能上升,但是他 ...