js绑定c++(JSB或者jsbinding)的小白教程! (已完结)

很实用,赞一个,谢谢分享

楼主,我发现你这样做的话岂不是每个新项目都要在把之前的生成的代码重新拖到新项目来。
今天研究了一会,发现可以直接在creator那里搞定,然后改下配置,就可以在新建项目的时候对于每个项目都会有新的代码了。。
还有,楼主,有没有办法可以不构建,直接在creator里面改脚本就可以了。。表示好麻烦啊

能不能弄个教程让大家都学习一下?:heart_eyes:

这个我觉得把c++绑定部分定制到引擎里,应该就可以像cocos2d引擎自带的api一样,可以用creator直接预览了,当然我只是猜测,因为我没有实践过,引擎定制请看这里

在上班拉
下班回去了 在这说下怎么搞吧

好的,感谢,到时候我可以把你的教程合并到我的帖子吗?当然我会说明出处:grin:

写好的jsbTest.cpp和jsbTest.h文件放到
CocosCreator\resources\cocos2d-x\cocos\scripting\js-bindings 下
我这里是新建了一个文件夹,也就是jsbTest文件夹,然后把cpp和h文件放在里面。

然后再到CocosCreator\resources\cocos2d-x\tools\tojs下修改之前编写好的jsbTest.ini
将headers 的路径修改成现在jsbTest.h所在的路径,比如我的是:
%(cocosdir)s/cocos/scripting/js-bindings/jsbTest/jsbTest.h

改完之后重新生成一次,成功就可以了

接下来来到 CocosCreator\resources\cocos2d-x\build下, 运行cocos2d-win32.sln

如图所示,将生成的jsb_jsbTest_auto.cpp 和.h文件添加到如图目录下,
然后就是我新添加的文件夹jsbTest,因为我这里新建的是和 auto在同级目录下,所以我在这里新建的筛选器也是同级的。
添加完jstTest后,也要在libjscocos2d的属性中添加附加目录的路径,一定要填相对路径,不要绝对,参考auto的路径。

这里完成之后,就在这个项目中打开 js_module_register.cpp文件



如图添加这些代码

改完这些之后, 重新生成项目

然后,到路径
CocosCreator\resources\cocos2d-x\templates下
编辑cocos2dx_files.json
如下图:




添加完这些路径就全部OK了
然后新建项目就可以如楼主所说那样 调用C++代码了

2赞

我也搞完了,不过我是按官方的做法搞的

mac上我运行.py文件的时候一直提示没有NDK_ROOT,
我creator打包到ios的 还用配置NDK,要是配置怎么弄?求解???

mac上我也不知道,你只有百度看看了:joy:

那个已经解决了,就是运行.py文件后 文件好像都没有绑定成功。。我感觉是ini文件的问题,正在搞

有什么错误提示吗?

mac 需要cd到py文件目录下,再执行。我是这么搞定的。

官方做法是什么?求个链接

http://www.cocos.com/docs/creator/advanced-topics/engine-customization.html
就是这个引擎定制。

终端cd到py文件目录下 python不显示找不到NDK_ROOT了,但是绑定不成功,sudo python就会又提示找不到NSK_ROOT这种真是醉了帮忙看一下我的环境配置这样行吗?网上教程的方法我都试了一遍了,还是不行,真是醉了

http://www.cocos2d-x.org/wiki/Binding_Custom_Class_To_Js_Runtime#
这个是官方的文档,我就是按着这个做的,到JSB绑定就挂了:joy::joy:

How to Use bindings-generator
==================

On Windows:
------------

* Make sure that you have installed `android-ndk-r10c` or later.
* Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi).
* Add the installed path of python (e.g. C:\Python27) to windows environment variable named 'PATH'.
* Download pyyaml from http://pyyaml.org/download/pyyaml/PyYAML-3.11.win32-py2.7.exe and install it.
* Download pyCheetah from https://raw.github.com/dumganhar/cocos2d-x/download/downloads/Cheetah.zip, unzip it to "C:\Python27\Lib\site-packages"
* Set environment variables (`NDK_ROOT`) and `PYTHON_BIN`
* Go to "cocos2d-x/tools/tojs" folder, and run "genbindings.py". The generated codes will be under "cocos\scripting\auto-generated\js-bindings".


On MAC:
----------

* The OSX 10.10 has a built-in python2.7 and if your os don't have python2.7 then use [Homebrew](http://brew.sh/) to install the python and use pip install the python dependencies.
<pre>
	brew install python
</pre>

* Install python dependices by pip.
<pre>
    sudo easy_install pip
    sudo pip install PyYAML
	sudo pip install Cheetah
</pre>
    
* Download NDK 64bit r10c or later from [Android Ndk](https://developer.android.com/ndk/downloads/index.html)
* Run
<pre>
	export NDK_ROOT=/path/to/android-ndk-r10c
    ./genbindings.py
</pre>

这是官方的tojs的readme,建议你看一下,特!别!注!意!各!个!软!件!的!版!本,比如 有可能 你把NDK换成R10或者R11之类的就行了,有可能你把py换成2.7.5或者2.7.7就没问题了

但是就是看着这文档配置的,NDk我的是r10e py是2.7的,但感觉应该不是这个问题吧~~

只是猜测各种可能性,而且也不一定,有些时候就是版本不对造成的错误,当然如果和版本无关,也可以当我没有说过:joy:

刚目录看了一下,自动生成的那俩文件已经出来了,但是错误还在报:joy::joy::joy:醉了