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 ...
随机推荐
- docker系列之分区挂载和数据卷
容器中的文件系统是独立的, 一旦容器被删除, 则文件系统也会被删除. 如果想容器和实体机在文件系统层面打通, 可以把指定目录挂载到容器当中: docker run -d -p 5000:22 -v / ...
- XML,面向对象基础
什么是XML XML与JSON的对比 XML文档格式 使用XML模块解析 一,什么是XML ''' XML 全称可扩展标记语言 <tag></tag> 双标签 <tag/ ...
- (转)python之禅
凡是用过 Python的人,基本上都知道在交互式解释器中输入 import this 就会显示 Tim Peters 的 The Zen of Python,但它那偈语般的语句有点令人费解,所以我想分 ...
- LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
题目 Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume ...
- sqlserver查看死锁进程工具脚本p_lockinfo
/* -- 处理死锁 -- 查看当前进程,或死锁进程,并能自动杀掉死进程 -- 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 -- 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 ...
- leetcode刷题——动态规划
知识点 专题-B-动态规划 题目 斐波那契数列 矩阵路径 数组区间 分割整数 最长递增子序列 最大连续子序列和 最长公共子序列 最长回文子序列 最长公共子串 最长回文子串 背包 题解 CS-Notes ...
- C#上位机开发(二)—— Hello,World
上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...
- luogu1129 [ZJOI2007]矩阵游戏
其实,只用考虑某一行能否放到某一行就行了 #include <iostream> #include <cstring> #include <cstdio> usin ...
- xfce-OpenVAS自动化安全风险评估指南
1. 登录系统 在客户端,打开浏览器,在地址栏输入https://IP:9392/ 看到如下界面: 我们要信任此网站,点击继续浏览此网站,进入系统登录界面,如下图: 输入我提供的通用登录账号:wdl ...
- 四丶人生苦短,我用python【第四篇】
1 基本数据类型 数字 int 字符串 str 布尔值 bool 列表 list 元组 tuple 字典 dict >>>type( ...