Cocos Creator JSB绑定

至于绑定所需要的环境,自己百度,文章最后提供部分环境依赖

D:\CocosCreator 为Cocos Creator安装目录

  • 在D:\CocosCreator\resources\cocos2d-x目录下创建一个custom文件夹

  • 在custom文件夹下创建W5.h文件

#ifndef __W5__CLASS
#define __W5__CLASS
#include "cocos2d.h"

class W5 {
public:
    static void log();
};
#endif
  • 在custom文件夹下创建W5.cpp文件
#include "W5.h"

void W5::log() {
    CCLOG("===========================");
}
  • 在D:\CocosCreator\resources\cocos2d-x\tools\tojs文件夹下创建w5.ini文件
# 模块名称
[w5]

# 绑定回调函数的前缀,也是生成的自动绑定文件的前缀
prefix = w5

# 绑定的类挂载在 JS 中的哪个对象中,类似命名空间
target_namespace =

# 自动绑定工具基于 Android 编译环境,此处配置 Android 头文件搜索路径
android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.9/include

# 配置 Android 编译参数
android_flags = -D_SIZE_T_DEFINED_

# 配置 clang 头文件搜索路径
clang_headers = -I%(clangllvmdir)s/%(clang_include)s

# 配置 clang 编译参数
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__


# 配置引擎的头文件搜索路径
cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/external/sources

# 配置引擎编译参数
cocos_flags = -DANDROID -DCOCOS2D_JAVASCRIPT

# 配置额外的编译参数ok
extra_arguments = %(android_headers)s %(clang_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s

# 需要自动绑定工具解析哪些头文件ok 等待修改
headers = %(cocosdir)s/custom/W5.h

# 在生成的绑定代码中,重命名头文件
replace_headers=

# 需要绑定哪些类,可以使用正则表达式,以空格为间隔
classes = W5.*

# 哪些类需要在 JS 层通过 cc.Class.extend,以空格为间隔
classes_need_extend = 

# 需要为哪些类绑定属性,以逗号为间隔
field = 

# 需要忽略绑定哪些类,以逗号为间隔
skip = 

# 重命名函数,以逗号为间隔
rename_functions = 

# 重命名类,以逗号为间隔
rename_classes = 


# 配置哪些类不需要搜索其父类
classes_have_no_parents = 

# 配置哪些父类需要被忽略
base_classes_to_skip =

# 配置哪些类是抽象类,抽象类没有构造函数,即在 js 层无法通过 var a = new SomeClass();的方式构造 JS 对象
abstract_classes = 

# 配置哪些类是始终以一个实例的方式存在的,游戏运行过程中不会被销毁
persistent_classes = 

# 配置哪些类是需要由 CPP 对象来控制 JS 对象生命周期的,未配置的类,默认采用 JS 控制 CPP 对象生命周期
classes_owned_by_cpp =

remove_prefix=
script_control_cpp = no
  • 复制一份genbindings.py 重命名为custom.py编辑部分内容

custom.py
170行左右

cmd_args = {
    'cocos2dx.ini' : ('cocos2d-x', 'jsb_cocos2dx_auto'), \
    'cocos2dx_audioengine.ini' : ('cocos2dx_audioengine', 'jsb_cocos2dx_audioengine_auto'), \
    'cocos2dx_network.ini' : ('cocos2dx_network', 'jsb_cocos2dx_network_auto'), \
    'cocos2dx_extension.ini' : ('cocos2dx_extension', 'jsb_cocos2dx_extension_auto'), \
    'cocos2dx_ui.ini' : ('cocos2dx_ui', 'jsb_cocos2dx_ui_auto'), \
    'cocos2dx_spine.ini' : ('cocos2dx_spine', 'jsb_cocos2dx_spine_auto'), \
    'cocos2dx_dragonbones.ini' : ('cocos2dx_dragonbones', 'jsb_cocos2dx_dragonbones_auto'), \
    'cocos2dx_experimental_webView.ini' : ('cocos2dx_experimental_webView', 'jsb_cocos2dx_experimental_webView_auto'), \
    'cocos2dx_experimental_video.ini' : ('cocos2dx_experimental_video', 'jsb_cocos2dx_experimental_video_auto'), \
    'creator.ini': ('creator', 'jsb_creator_auto'),
    'creator_camera.ini': ('creator', 'jsb_creator_camera_auto'),
    'creator_graphics.ini': ('creator', 'jsb_creator_graphics_auto'),
    'creator_physics.ini': ('creator', 'jsb_creator_physics_auto'),
    'box2d.ini' : ('box2d', 'jsb_box2d_auto'),
    'anysdk-common.ini': ('protocols', 'jsb_anysdk_protocols_auto'),
    'anysdk-appstore.ini': ('protocols', 'jsb_anysdk_protocols_auto'),
}

改成

cmd_args = {
    'w5.ini' : ('w5', 'jsb_w5_custom'),
}
  • win+R输入cmd回车,把custom.py拖到dos窗口回车。。。。。出现如下
D:\CocosCreator\resources\cocos2d-x\tools\tojs>D:\CocosCreator\resources\cocos2d
-x\tools\tojs\custom.py
PYTHON_BIN not defined, use current python.
generating userconf.ini...
Generating bindings for w5...
Using userconfig
  [('androidndkdir', 'D:\\ndkr14'), ('clangllvmdir', 'D:\\ndkr14\\toolchains\\ll
vm\\prebuilt\\windows-x86_64'), ('creatordir', 'D:\\CocosCreator\\resources\\coc
os2d-x\\cocos\\editor-support\\creator'), ('cocosdir', 'D:\\CocosCreator\\resour
ces\\cocos2d-x'), ('anysdk_common_dir', 'D:\\CocosCreator\\resources\\cocos2d-x\
\external\\ios\\include\\anysdk\\common'), ('anysdk_appstore_dir', 'D:\\CocosCre
ator\\resources\\cocos2d-x\\external\\ios\\include\\anysdk\\appstore'), ('jsbdir
', 'D:\\CocosCreator\\resources\\cocos2d-x\\cocos\\scripting\\js-bindings'), ('c
xxgeneratordir', 'D:\\CocosCreator\\resources\\cocos2d-x\\tools\\bindings-genera
tor'), ('extra_flags', '-D__WCHAR_MAX__=0x7fffffff -U__MINGW32__'), ('clang_incl
ude', 'lib64/clang/3.8/include')]

.... Generating bindings for target spidermonkey

.... .... Processing section w5

>>> parse_header: D:\CocosCreator\resources\cocos2d-x/custom/W5.h
----------------------------------------
Generating javascript bindings succeeds.
----------------------------------------

D:\CocosCreator\resources\cocos2d-x\tools\tojs>

Generating javascript bindings succeeds.代表成功了

  • 打开win32项目工程,把D:\CocosCreator\resources\cocos2d-x\cocos\scripting\js-bindings\auto下的jsb_w5_custom.cpp和jsb_w5_custom.hpp拖到libjscocos2d->auto中

  • 打开ibjscocos2d->manual->jsb_module_register.cpp

找到
#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp"
#include "cocos/scripting/js-bindings/auto/jsb_creator_auto.hpp"

// 添加下面这行代码
#include "cocos/scripting/js-bindings/auto/jsb_w5_custom.hpp"

找到
se->addRegisterCallback(register_all_cocos2dx_extension);
se->addRegisterCallback(register_all_cocos2dx_extension_manual);

// 添加下面这行代码
se->addRegisterCallback(register_all_w5);
  • libjscocos2d项目右键属性—配置属性 => c/c++ 右面窗口附加包含目录选项中添加D:\CocosCreator\resources\cocos2d-x\custom目录

  • 然后在主工程中的Classes中拖入D:\CocosCreator\resources\cocos2d-x\custom下的W5.h和W5.cpp

  • 在js文件中添加

onLoad() {
    W5.log();
}
  • 在Visiual Stuido中运行项目

在输出窗口你会看到打印的消息
===========================

绑定成功~~~

部分依赖
https://download.csdn.net/download/u013791665/10596052

  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一bird一

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值