博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSBing-js自动绑定C++
阅读量:5279 次
发布时间:2019-06-14

本文共 2807 字,大约阅读时间需要 9 分钟。

什么是JSB

JSB是 binding的简称。Cocos2d-JS中使用的javascript引擎是Mozilla 的spidermonkey,而JSB绑定的目的就是让javascript脚本能够调用到c++代码,c++代码能够调用到javascript脚本。

怎么生成JSB绑定

1、自动生成脚本

(1)、确认好你的Binding-generator

  cocos2d-x下载下来后,tools目录底下有一个名为bindings-generator的文件夹,这就是自动绑定需要的工具。

  如果仍需下载,请到github。
  GitHub repository: 

2)、下载MacPorts软件包管理系统,通过MacPorts我们可以通过命令行快速的安装需要的软件(官方网站: )。

      安装完后需要在.bash_profile里添加搜索路径:具体方法是在终端输入vim ~/.bash_profile,然后分别插入export PATH=/opt/local/bin:$PATH 、export PATH=/opt/local/sbin:$PATH。

    使用MacPort前应该首先更新Port的index,输入: $ sudo port -v selfupdate (强烈推荐第一次运行的时候使用-v参数,显示详细的更新过程)

    (注:在使用MacPort时提示找不到port,要确定是否设置好搜索路径等环境变量)

(3)、开始使用MacPort安装需要软件

 

  •  2.7.x():目前引擎里面的bindings-generator只支持python2.7.x版本

  • py-ymal():这是python的一个第三方包,下载页有不同系统的安装方式,可以参考generator.py会调用到这个包。

  • cheetah():这也是python的一个第三方包,一个模板,generator.py会调用到这个包,安装方式跟py-ymal相同。

 

  sudo port install python27 py27-yaml py27-cheetah

  安装 llvm-3.3,这个需要单独下载安装,下载地址 

  下载完后请解压至Users/你的名字/bin底下,并将解压岀來的文件夹更名成clang+llvm-3.3。如果沒有bin文件夹,请自行创建。最后的路径应该是这样的:

  /Users/lp43/bin/clang
+llvm-3.3(lp43是我的名字)
  安装android ndk r9,这个下载安装可自行百度
(4)、修改自动邦定的配置文件,将bindings-generator\test下的userconf.ini.sample和user.cfg.sample重命名为userconf.ini、user.cfg。
  
userconf.ini内容修改为:
  androidndkdir=
android-ndk-r9存放目录
  clangllvmdir=llvm-3.3安装目录
  cxxgeneratordir=
bindings-generator存放目录
  
user.cfg内容修改为:
  [DEFAULT]
  PYTHON_BIN=
python2
.7安装目录
(5)、已test.ini为模版修改自动邦定规则
  
先了解test.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 :跳过你所不需要绑定的方法和类,于是就不生成。
  将test.ini重命名为cocos2dx_custon.ini,然后
主要修改name、prefix、classes、headers、target_namespace。
(6)、修改完test.ini后还需要修改下test.py这个脚本,打开test.py找到custom_cmd_args添加
 coco2dx_coustom对应cocos2dx_custon.ini里面的name,jsb_cocos2dx_custom对应cocos2dx_custon.ini里面的prefix (7)、生成绑定文件,运行命令python ./test.py,成功后可以在frameworks/cocos2d-x/cocos/scripting/js-bindings/custom文件夹下看到生成的绑定文件。(注:生成目录可能有所不同)

(8)、绑定文件使用,将文件加入工程                     

打开 jsb_cocos2dx_custom.hpp找到register_all_cocos2dx_custom(JSContext* cx, JSObject* obj),然后将绑定js注册到AppDelegate.cpp里面sc->addRegisterCallback(register_all_cocos2dx_custom);

(注:记得绑定到原文件也要加到工程中,jsBing只是个转接口)

(9)、测试

   var customClass = cc.CustomClass.create();

     var msg = customClass.helloMsg()

      cc.log("customClass's msg is : " + msg)

注:绑定原文件如下

 

 

cocos2dx_custon.ini文件

 

 

 

    

 

 

转载于:https://www.cnblogs.com/guangyun/p/6048152.html

你可能感兴趣的文章
ASP.NET MVC 3.0学习系列文章--序
查看>>
Daemontools和Supervisor管理linux常驻进程
查看>>
双显示屏下主显示屏任务栏不见了
查看>>
学Java的第30天 异常
查看>>
docker修改国内官方镜像
查看>>
如何验证二维数组
查看>>
Java中系统属性Properties介绍 System.getProperty()参数大全
查看>>
dom get selector
查看>>
11 | 怎么给字符串字段加索引?
查看>>
微信支付之前的统一下单
查看>>
jmap查看内存使用情况与生成heapdump
查看>>
软件测试(三)—— 参数化测试用例(Nextday.java)
查看>>
go学习笔记-流程控制(if/else,for/range)
查看>>
c++中的.hpp文件
查看>>
elementUI 表格设置表头样式
查看>>
ios公司开发者账号申请分享攻略
查看>>
cat 命令详解
查看>>
CSS()
查看>>
JDK 环境变量的设置、eclipse、Tomcat的配置
查看>>
Exploring the world of Android :: Part 2
查看>>