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

转载于:https://www.cnblogs.com/zhchoutai/p/8608989.html

Cocos2d-x JSB 自己主动绑定bindings相关推荐

  1. 回调函数传参c++_流程篇 | 避免 eval String 进行回调,使用 JSB 进行手动绑定

    想要聚焦 Cocos Creator.Flutter.React Native 等跨平台开发技术实践吗?请大家积极关注我们的技术博客 https://oedx.github.io 背景 一直以来,AB ...

  2. RabbitMQ绑定(bindings)

    什么是bingding.呢, binding其实是exchange和queue之间的桥梁,它告诉我们exchange和那个队列进行了绑定关系.比如说下面这张图告诉我们的就是×与Q1和Q2进行了绑定

  3. javascript 自己主动绑定JS callback 的方法函数

    自己写的一个javascript 智能绑定callback 而且调用运行的函数.主要用于异步请求的 ajax中: <!DOCTYPE html> <html> <head ...

  4. Cocos Creator JSB [Lv.3]

    目录 摘要 资源 正式开始 为什么要使用`JSB` `JSB`能做什么 进行`JSB`绑定需要做什么 构建工程 创建类 绑定(搭建桥梁) 实现自定义的类型转换(非必须) 注册 将新增的文件加入`lib ...

  5. Cocos Creator JSB [Lv.1] (1)

    目录 摘要 系列文章 JSB能做什么 环境 资源 准备工作 正式开始 对工程做一些修改 如何互动 小姐姐现身 与小姐姐互动的桥梁 找到小姐姐 划重点 摘要 本系列文章主要实操JSB的手动绑定,在官方教 ...

  6. MVVM下拉框绑定触发事件

    开发工具与关键技术:MVVM 撰写时间:2021年06月15日 在MVVM中下拉框的绑定跟MVC的下拉框绑定基本一样,只不过在MVVM中要写多一步声明下拉框的属性来接收数据. 首先我们要在DAL层写查 ...

  7. JS创建对象和事件绑定

    JS对象 1.对象的创建 1.使用原始的方式创建对象 var obj = new Object();obj.name = "zhangsan"; //为obj对象添加属性obj.a ...

  8. RabbitMQ简介以及AMQP协议

    RabbitMQ能为你做些什么? 消息系统允许软件.应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步 ...

  9. 消息中间件系列 - RabbitMQ

    前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习视频:https://www.bilibili.com/video/BV1cb4y1o7zz?spm_id_from=333.337.searc ...

最新文章

  1. python生产和消费模型_python queue和生产者和消费者模型
  2. vivado----fpga硬件调试 (六)----数据导出
  3. Apache Beam和BigQuery的错误处理(Java SDK)
  4. hashCode和equals方法的关系
  5. Eclipse-Java代码规范和质量检查插件-PMD
  6. Kafka基础系列第1讲:Kafka的诞生背景及应用
  7. 微软阵营企稳的利好消息:.NET开源、Visual Studio免费
  8. 【Clickhouse】Clickhouse Live View
  9. CSS3制作动画的三个属性
  10. android 自动打印出来,Android:签名打包后关闭Log打印
  11. 设计模式之桥接模式(Java语言描述)
  12. win10桌面管理文件收纳_放心的电脑桌面收纳工具必备,电脑桌面win10应用商店
  13. 无约束多元函数求极值
  14. adprw指令通讯案例_S7200和威纶通触摸屏MODBUS RTU协议通讯
  15. 舵机的基本了解以及数字舵机和模拟舵机的区别
  16. linux进化树分析的软件,一款好用的进化树可视化编辑软件
  17. 操作系统4.1.8 文件保护
  18. 此实现不是windows平台fips验证的加密算法的一部分
  19. HTML+CSS实现聚光灯效果
  20. 利用winform 操作access 数据库

热门文章

  1. matlab完成信源编码译码,Huffman编码和译码的MATLAB实现.doc
  2. Java:Set接口
  3. 第十三章:项目相关方管理 - (13.1 识别相关方)
  4. Nextchip系列芯片资料收集----RX/ISP/AHD使用场景
  5. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree 日志结构合并树...
  6. [LeetCode]题解(python):155-Min Stack
  7. 设计模式-原型模式C++
  8. IPv4 Type of Service服务类型(TOS)字段
  9. linux卡利系统设置密码,Windows 10 Windows Linux子系统安装指南-官网
  10. 数据库基本知识和命令