CocosCreator自动化绑定jsb

2023-10-27

与之前的cocos2dx js自定义js-binding不同,这次用的是Cocos2dx里的自动绑定技术,更加的简单、高效、规整以及方便得多。

而且之前的手动写文件不能适应更新后的CocosCreator版本的情况。


环境配置:

JDK、NDK、SDK、ANT:这些环境变量,当打包成原生平台的时候,已经配置过。

PYTHON:Mac自带有python,一般是python2.7。

等会还会有其他环境配置,主要是在执行genbindings.py的时候,需要配置的环境。等会再说。

当前的CocosCreator环境是1.8.1。版本的不同,会造成一些小的差异,比如1.8.1的jsb_module_register.cpp文件是放在runtime-src/Clesses下的,而之前我用的1.5.1版本是放在cocos/scripting/js-bindings/manual下的。

配置过程:

先自定义自己的头文件Test.h

//
//  Test.h
//  libcocos2d Mac
//
//  Created by zhufu on 2018/3/15.
//

#ifndef Test_h
#define Test_h

#include <stdio.h>

#endif /* Test_h */

class Test : public Node
{
public:
    void test();
}
再定义Test.cpp文件

//
//  Test.cpp
//  libcocos2d Mac
//
//  Created by zhufu on 2018/3/15.
//

#include "Test.h"


void Test::test()
{
    printf("js binding success!!!!\n");
}
把这两个文件放在以下路径


之后,进入cocos2d-x/tools/tojs文件夹中,

这里我们也要配置一个.ini文件,配置方式就学着coco2dx_extension.ini文件来。


箭头指向的是自己创建的ini文件,里面的内容是:

[cocos2dx_test]
# the prefix to be added to the generated functions. You might or might not use this in your own
# templates
prefix = cocos2dx_test

# create a target namespace (in javascript, this would create some code like the equiv. to `ns = ns || {}`)
# all classes will be embedded in that namespace
target_namespace = cc

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_flags = -D_SIZE_T_DEFINED_ 

clang_headers = -I%(clangllvmdir)s/%(clang_include)s 
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__

cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/external/sources

cocos_flags = -DANDROID

cxxgenerator_headers = 

# extra arguments for clang
extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s 

# what headers to parse
headers = %(cocosdir)s/test/Test.h

replace_headers = Test.h::test/Test.h

# what classes to produce code for. You can use regular expressions here. When testing the regular
# expression, it will be enclosed in "^$", like this: "^Menu*$".

classes = Test

# what should we skip? in the format ClassName::[function function]
# ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also
# regular expressions, they will not be surrounded by "^$". If you want to skip a whole class, just
# add a single "*" as functions. See bellow for several examples. A special class name is "*", which
# will apply to all class names. This is a convenience wildcard to be able to skip similar named
# functions from all classes.

skip = 

rename_functions =

rename_classes = 

# for all class names, should we remove something when registering in the target VM?
remove_prefix = 

# classes for which there will be no "parent" lookup
classes_have_no_parents = 

# base classes which will be skipped when their sub-classes found them.
base_classes_to_skip = Ref

# classes that create no constructor
# Set is special and we will use a hand-written constructor
abstract_classes = 

classes_need_extend =
文件内容的参数可以参考http://www.cocoachina.com/bbs/read.php?tid=177904

至于我们配置的.ini文件与原来的cocos2dx_extension.ini的不同之处,可以两个文件对比查看。

接着,打开genbindings.py文件,增加如下的一行:


打开终端,cd到genbindings.py文件所在的目录,运行./genbindings.py。

如无意外,并不成功。。。

但是只要一报错,就查看锦囊,就能逢凶化吉。

记住,只要一报错,就看一下。

直到出现

----------------------------------------

Generating javascript bindings succeeds.

----------------------------------------

为止。

这时候在cocos/scripting/js-bindings/auto,出现在jsb_cocos2dx_test.cpp。


后,我们打开jsb_module_register.cpp文件下添加如下代码:



至此,c++部分完整工作。

之后,写javascript测试:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CocosCreator自动化绑定jsb 的相关文章

  • CocosCreator多语言包的处理

    如果项目需要国际化的处理 也就是需要切换语言的功能时 一般有两种方案 单个包 优点 1 可以动态切换语言 当然要代码上实现 2 只有一个版本 容易维护 缺点 1 安装包大 多个包 优点 1 安装包小 2 可以对不同语言做深入的本地化 比如功
  • CocosCreator在电脑Web打印vConsole日志的问题

    忘了什么时候开始 Web端的日志打印的文件输入信息全是vconsole min js文件 很纠结啊有木有 完全不知道日志的出处 日志输入如以下图片 官方还没有给出对于这个问题的配置是怎么样解决的 所以我们自己搞定 我们进入CocosCrea
  • CocosCreator Java传参数到JS

    最近正在接GooglePlay内购 在传参数回CocosCreator的环境的时候 没有调用到JS的方法 其中错误的写法是 app runOnGLThread new Runnable Override public void run Co
  • CocosCreator自动化绑定jsb

    与之前的cocos2dx js自定义js binding不同 这次用的是Cocos2dx里的自动绑定技术 更加的简单 高效 规整以及方便得多 而且之前的手动写文件不能适应更新后的CocosCreator版本的情况 环境配置 JDK NDK
  • CocosCreator之KUOKUO带你做小小PK(二)Boss血条与站桩挨打

    本次引擎2 0 5 编辑工具VSCode 目标 小小PK 二 血条素材 好了 我们接着上个教程 上一个教程我们做了 移动与跳跃还有攻击 但是只有主角一人是不是很尬 接下来让我们放入血条 放入Boss 血条的模式改为横向填充 然后把血条x方向
  • 【Cocos谁学谁会】定制属于自己的脚本模板

    版权申明 本文原创首发于以下网站 您可以自由转载 但必须加入完整的版权声明 博客园 https www cnblogs com MogooStudio csdn博客 https blog csdn net nmjkl001 知乎 https
  • 【cocos creator 3.x】精灵图片不显示

    精灵图片不显示 现象 原因 解决方案 现象 在cocos creator 3 2版本的使用中遇到了精灵图片无法展示的几个场景 在prefab某个node下Sprite的图片无法显示 动态加载prefab时 某些节点的图片无法显示 原因 图片
  • CocosCreator3.8研究笔记(十四)CocosCreator 资源管理Asset Manager

    在游戏的开发过程中 需要使用到大量的图片 音频等资源来 从而带来管理上的困难 Asset Manager 资源管理模块具备加载资源 查找资源 销毁资源 缓存资源 Asset Bundle 等功能 帮助开发者管理其资源的使用 一 资源的加载
  • Rot.js 随机地牢,迷宫地图生成

    js 插件随机地牢 迷宫地图生成 插件git https github com ondras rot js tree master dist 使用 1 我们的游戏是在网页内进行的 一个基本的 HTML 文件就足够了
  • javascript全局异常监听

    不管我们用javascript做什么开发 总会出现项目运行异常 甚至crash 这个时候 我们希望不只是javascript会打印一行日志 而是可以出现一个弹窗或者其他的一些让我们开发者更能直接获取到的信息 对于这个需求 javascrip
  • mvvm设计模式总结

    要了解mvvm 首先要了解mvc和mvp 我们也先简单说一下mvc和mvp MVC MVC全名是Model View Controller 是模型 model 视图 view 控制器 controller 的缩写 一种软件设计典范 用一种业
  • CocosCreator3.8研究笔记(十八)CocosCreator UI组件(二)

    前面的文章已经介绍了Canvas 组件 UITransform 组件 Widget 组件 想了解的朋友 请查看 CocosCreator3 8研究笔记 十七 CocosCreator UI组件 一 今天我们主要介绍CocosCreator
  • CocosCreator之KUOKUO教你如何用瓦片地图生成碰撞赛车道

    本次引擎v2 0 10 目标 瓦片地图生成碰撞赛车道 过程 首先 我们需要撸一个瓦片地图 很简单的地图 分两层 墙和地面 然后 在CocosCreator中直接拖进层级管理器就行 然后你就会发现层自动形成节点并挂载组件了 然后给wall和c
  • cocos cretor shader effect-the book of shader-4.二维矩阵

    2D Matrices 二维矩阵 前面章节 TheBookofShader开始 Shaping functions 造型函数 Color 颜色 Shapes 形状 平移 之前的章节我们学习了如何制作一些图形 而如何移动它们的技巧则是借助移动
  • TypeScript 自定义数组排序

    TypeScript 自定义数组排序 前言 代码 基本原理 基本类型排序 复杂类型排序 前言 对列表进行排序 根据自定义规则 代码 基本原理 sort使用属性相减 a b 获取一个基本类型 1 0 1 如果小于0则将元素放到前面 如果大于0
  • cocosCreator 之 ScrollView

    版本 3 4 0 参考 ScrollView组件 简介 ScrollView组件作为滚动容器来使用 它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域 来保证有限的区域内显示更多的内容 它的构成部分 ScrollB
  • CocosCreator接入GoogleAdMob激励广告

    我们的App需要通过接入广告的方式来赚取收入 其中GoogleAdMob就是比较简单容易实现的一种 我在文章中接入GoogleAdmob的方式是通过AndroidStudio原生来接入的 一 前提条件 使用 Android Studio 1
  • Cocos Creator 如何处理物理和碰撞检测?

    Cocos Creator 如何处理物理和碰撞检测 cocos creator 版本 v3 6 1 Cocos Creator 3 x 实现碰撞检测 Cocos Creator 通过使用物理引擎来处理物理和碰撞检测 Cocos Creato
  • CocosCreator之KUOKUO带你做小小赛车-摄像机跟随

    本次引擎2 0 5 编辑工具VSCode 目标 小小赛车 先亮素材 很简单 就两个 爱给网中的赛道 以及一个小车 好了 让我们新建工程然后把赛道放进去 调整方向与大小 然后把小车拖上去 这样 我是把赛道放大了2倍 旋转了90度 拖一拖位置
  • CocosCreator列表scrollview滑动速度的修改,鼠标滚动速度修改

    由于cocos creator 在pc端 使用scrollview 鼠标滚动速度太慢 原文地址 CocosCreator列表滑动速度的修改 简书CocosCreator列表滑动速度的修改 简书引擎版本 2 2 2 之后升级的2 4 0直接可

随机推荐

  • 10个问题解答火热的元宇宙概念

    这篇转自金色财经平台的文章涵盖了我们近期文章中所讨论过的大部分关于元宇宙的内容 虽然不甚全面 但胜在系统 虽然现在探讨最终应用为时甚早 但各行各业开始想元宇宙靠拢已是不争 让我们通过十个由点及面浅层问题 一同简单的回顾下元宇宙伊始至今都经历
  • easyexcel 数据量过大问题

    java总的生成excel工具 poi太费事了 于是就是用来 阿里提供的 easyexcel 很简单 具体使用方式参考 https zhuanlan zhihu com p 88720415 utm source wechat timeli
  • WebSocket协议及优点(总结)

    参考文章 https www zhihu com question 20215561 参考书籍 图解HTTP 这篇文章通过http的瓶颈 引出ajax轮询以及长轮询 最后说明为什么使用websocket以及他的原理 当我们使用http协议探
  • 2020-09-18

    python的subprocess模块 在python文件中想调用spm encode命令对一个句子进行分词 就需要使用subprocess模块在python中执行shell命令 但是网上其他的给出的都是传递文件的 或者把字符串传递给cmd
  • 从“二义性”谈到企业数字化工作开展

    中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要 中提到 加快数字化发展 建设数字中国 自此各行各业开始投身各自领域的数字化转型中 但什么是数字 数字化又是什么 转型之于企业究竟意味着什么 我们暂且不用学术语言来诠释
  • centos8安装使用nc

    转自 https linuxconfig org install netcat on redhat 8 README nc 是什么 nc 全名叫netcat 它可以用来完成很多的网络功能 譬如端口扫描 建立TCP UDP连接 数据传输 网络
  • 【读书笔记】Principles and practices of interconnection networks 第一章笔记

    互联网络导论 互联网络的三个问题 数字系统的三个基本构件 数字系统由3个基本构件组成 逻辑 logic 内存 memory 通信 communication 本书关注点 通信 这本书所关注的是数字系统的通信 因为随着技术的进步 处理器与存储
  • 关于matlab提示“警告: 矩阵为奇异工作精度” 的问题

    在自己编写基于手写数字多特征数据集的机器学习中的最小风险贝叶斯算法过程中 总是提示 警告 矩阵为奇异工作精度 虽然知道问题出在 R 1 k i j 1 2 test 1 k i s e ave 1 j 1 inv sigma 1 j tes
  • Java中的类(Object类、Data类、Objects类、DataFormat类、Calender类、String和StringBuilder类、包装类)

    一 Object类 1 Object类介绍 Object是所有类的父类 一个类都会直接或者间接继承该类 该类中提供了一些非常常用的方法 2 toString 方法 作用 打印对象的信息 重写前 打印的是包类名 地址值 重写后 打印的是对象中
  • python-selenium自动化-窗口的切换/过期

    1 过期 当页面来回去切换的时候 必须重新获取 否则报错过期 必须重新获取一次 避免ABA的发生 代码案例 from selenium import webdriver from selenium webdriver common by i
  • 虚拟机下ubuntu上网

    在配置的时候 虚拟机有三种方法上网 一个是NAT 一个是host only 一个是bridge 我主要是试过两种 简单的介绍一下 我是xp下装的虚拟机 虚拟机里面是redhat就简单的用redhat代替虚拟机 xp代替真机 NAT 方法 它
  • (Ext基础篇) Ext核心组件

    Ext Componet 概述 所有Ext组件的基类 所有Componet的子类都自动地参与标准的Ext组件生命周期 创建 渲染 销毁 这些操作 由Container 类提供 在创建容器时 组件可以通过items 配置选项被添加到容器中 或
  • 计算机屏幕出现蓝色条,电脑显示器出现一道蓝条怎么回事

    公告 为响应国家净网行动 部分内容已经删除 感谢读者理解 话题 电脑显示器出现一道蓝条怎么回事 回答 瑕疵屏 有坏点坏线 这就是次品了 要是使用一段时间后出现的 就是液晶面板排线出焊接问题 硬件故障 很难修理 除非有专业设备 参考回答 电脑
  • 同时连接内外网教程

    一台电脑可以同时上内外网 省去了办公的许多烦恼 每台电脑都有自己的路由表 可以通过开始 运行 输cmd 输入route print 就可查询到自身的路由信息 计算机上的路由表可以手动进行修改 添加或删除 这样就可以通过一系列的设置来满足同时
  • 机器学习算法基础概念学习总结

    1 基础概念 1 10折交叉验证 英文名是10 fold cross validation 用来测试算法的准确性 是常用的测试方法 将数据集分成10份 轮流将其中的9份作为训练数据 1分作为测试数据 进行试验 每次试验都会得出相应的正确率
  • ST-LINK烧录stm32程序步骤

    此篇文章记录下STM32使用ST LINK烧录程序的步骤 好兄弟 给个关注呗 材料 ST LINK驱动安装 点我下载st link驱动 提取码 4aw1 安装包有详细教程 stm32f103c8t6 ST LINK 杜邦线 keil5配置
  • vscode搭建esp32(避坑小窍门)

    这里写自定义目录标题 1 编译过程出现 终端将被任务重用 按任意键关闭 错误 可能的解决办法 1 在 终端 配置任务 PlatformIO Test 以Test工程名为例 打开tasks json文件 2 添加 presentation e
  • 02-离散仿真引擎基础

    Homework02 简答题 1 解释游戏对象 GameObjects 和资源 Assets 的区别与联系 区别 游戏对象是具有一定属性与功能的类的实体化 对应为Unity中具有对应职能与属性的组件 例如游戏中常见的玩家 怪物等 资源是预先
  • react 引入antd 样式_引用Ant.Design到React中

    参考地址 http ant design index cn ant design 首先说说ant design是干啥的 ant design是基于react开发的一个解放ui和前端的工具 它提供了一致的设计方便我们快速开发和减少不必要的设计
  • CocosCreator自动化绑定jsb

    与之前的cocos2dx js自定义js binding不同 这次用的是Cocos2dx里的自动绑定技术 更加的简单 高效 规整以及方便得多 而且之前的手动写文件不能适应更新后的CocosCreator版本的情况 环境配置 JDK NDK