Cocos2d-x JSB 自己主动绑定bindings

时间:2024-08-13 17:06:14

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.7http://www.python.org/download/  
(眼下引擎里面的bindings-generator仅仅支持python2.7版本号)
py-ymal: http://pyyaml.org/wiki/PyYAML  (这是python的一个第三方包。下载页有不同系统的安装方式,能够參考。

generator.py会调用到这个包。


cheetahhttp://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路径 。便能够在你配置的地方找到你生成的文件。