ccc 2.2.0 jsb绑定
参考链接:https://www.jianshu.com/p/34260c0c5175
环境版本信息
Mac 10.15.1
Xcode 11.1
Cocos Creator 2.2.0
Python 2.7
一、首先用ccc创建一个hello world工程
快捷键command+shift+b 打开构建面板 构建build目录
二、使用xcode打开工程
然后在Classes文件夹中创建c++测试文件
CustomLog.h 代码如下:
#ifndef CustomLog_h
#define CustomLog_h#include <stdio.h>
#include <string.h>class CustomLog{
public:void MLog(const char * msg);static CustomLog* getInstance();CustomLog();~CustomLog();
};
#endif /* CustomLog_h */
CustomLog.cpp 代码如下:
nclude "CustomLog.h"
#include "cocos2d.h"static CustomLog* s_CustomLog = nullptr;
CustomLog::CustomLog(){cocos2d::log("CustomLog");
}
CustomLog::~CustomLog(){cocos2d::log("~CustomLog");
}
CustomLog* CustomLog::getInstance(){if (!s_CustomLog) {s_CustomLog = new CustomLog();}return s_CustomLog;
}
void CustomLog::MLog(const char* msg){cocos2d::log("MLog~~~~~~ = %s",msg);
}
三、生成jsb绑定文件
1、首先将Classes中的Custom文件夹复制到/Applications/CocosCreator.app/Contents/Resources/cocos2d-x中
2、然后进入目录/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/tools/tojs中
复制cocos2dx.ini文件改名为CustomLog.ini
并修改CustomLog.ini中6个key的值为
[CustomLog]
prefix = custom
target_namespace =
headers = %(cocosdir)s/Custom/CustomLog.h
classes = CustomLog
abstract_classes = CustomLog
复制genbindings.py为genbindings_custom.py
并修改genbindings_custom.py中的
cmd_args = {'CustomLog.ini': ('CustomLog', 'jsb_CustomLog_auto')}
3、运行genbindings_custom.py
#进入genbindings_custom.py当前目录cd /Applications/CocosCreator.app/Contents/Resources/cocos2d-x/tools/tojs python genbindings_custom.py
genbindings_custom.py运行可能会缺少库 在参考链接中有解决方案
看到
----------------------------------------
Generating javascript bindings succeeds.
----------------------------------------
代表生成绑定成功
四、将生成的绑定文件 添加到项目中
在目录/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/auto中可以找到
jsb_CustomLog_auto.hpp
jsb_CustomLog_auto.cpp
复制两个文件到Classes/CustomJsb文件夹中
//在AppDelegate.cpp中引入头文件
并在applicationDidFinishLaunching()方法中的jsb_register_all_modules()后调用se->addRegisterCallback(register_all_custom)
//AppDelegate.cpp
#include "CustomJsb/jsb_CustomLog_auto.hpp"
...
bool AppDelegate::applicationDidFinishLaunching(){...jsb_register_all_modules();se->addRegisterCallback(register_all_custom);//添加...
}
最后检查build phases是否存在两个新增cpp文件
android需要配置Android.mk文件
/Users/lewan/Documents/ccc_dir/ccc_test_1/build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk
LOCAL_SRC_FILES := hellojavascript/main.cpp \../../../Classes/AppDelegate.cpp \../../../Classes/Custom/CustomLog.cpp \../../../Classes/CustomJsb/jsb_CustomLog_auto.cpp \
五、在js中调用
onLoad: function () {if (cc.sys.isNative) {cc.log('this is native')var m_CustomLog = CustomLog.getInstance();m_CustomLog.MLog("啦啦啦啦啦啦啦啦 js");}}
运行结果 :
ios
android
ccc 2.2.0 jsb绑定相关推荐
- CocosCreator2.0.9的JSB绑定 - 手动绑定
CocosCreator2.0.9的JSB绑定 - 手动绑定 前言 准备 建立工程 先来个简单的 绑定整个C++类给JS 关于TypeScript里面的自动提示 在Android设备上 总结 前言 大 ...
- java中JSB_深入解析Cocos Creator JSB绑定原理以及应用实践
背景 一直以来,ABCmouse 项目中的整体 JS/Native 通信调用结构都是基于 callStaticMethod evalString 的方式.通过 callStaticMethod 方法我 ...
- cocos creator jsb2.0手动绑定过程
在打包原生包的时候js层想调用c++层,但是没有对应的实现需要自己扩展自己的jsb,官方有两种绑定方式:手动绑定和自动绑定,这里着重介绍手动绑定: 首先找到cocos creator自带的c++层的源 ...
- Vue 3.0双向绑定原理的实现
proxy方法 vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过new Proxy()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调. Vu ...
- cocos2d-js 3.0 jsb环境调用底层java代码
from: http://www.cocoachina.com/bbs/read.php?tid=209403 C++端工作 环境还是cocos2d-js 3.0 beta,准备给javascript ...
- jsb调用java_cocos2d-js 3.0 jsb环境调用底层java代码
C++端工作 环境还是cocos2d-js 3.0 beta,准备给javascript加一个osInfo的函数,来判断用户的系统信息以及网络信息. 首先在项目目录下的frameworks/runti ...
- Android8.0 HIDL绑定式和直通式区别
以前Adnroid版本的hal和framwork的代码紧密联系起来的,Google为了framework升级的方便在Android 8.0 上对 Android 操作系统底层进行了重新架构.新的架构已 ...
- Cocos Creator JSB绑定
至于绑定所需要的环境,自己百度,文章最后提供部分环境依赖 D:\CocosCreator 为Cocos Creator安装目录 在D:\CocosCreator\resources\cocos2d-x ...
- Cocos Creator JSB绑定 MAC系统环境
编译环境 python2.7(mac自带) 1.安装PyYAML mac: sudo easy_install pyyaml win: pip install pyyaml 2.安装Cheetah 下 ...
最新文章
- 汽车雷达 -- 车载ADAS常用中英文对照
- 正则表达式 非捕获性分组
- 金陵科技学院计算机开设课程,金陵科技学院各专业介绍
- 阿里云ECI如何6秒扩容3000容器实例?
- 试解释如下两个概念:CLR和CTS
- JAVA 多线程 JAVA 如何开发一个自定义线程池
- JAVA 8:Lambdas表达式初体验
- android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)
- 每日一九度之 题目1091:棋盘游戏
- YOLO学习笔记4——YOLOV2详解+论文解读
- window server 2012 win7 远程桌面报错问题,无法远程
- AIS数据修复-三次样条插值法(Cubic spline interpolation)
- dux修改index.php,DUX主题修改首页轮播图为通栏模式
- 关于nmap和traceroute在虚拟机里使用的问题
- 【摘录】大学课程对照英文翻译
- Unity - Timeline 之About Timeline(关于Timeline)
- Fleck For Web Socket
- Oracle删表报错ora00054,Oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
- Fama三因子和Carhat 四因子的介绍和计算
- 人工智能如何改善运输和物流
热门文章
- 生成树协议H3C真题
- 【云周刊】第183期:阿里云发布ET工业大脑开放平台,交付只需6天
- 【有利可图网】PS实战系列62:用PS将常规图片设计转成超棒的水墨效果
- Oracle10g之传输表空间详解
- Fielding博士论文导读----第1章
- 聆听中国—一款收音机类App的前世今生
- 老人机应用_每日佳软:老人机应该具备什么功能?
- jooq多表查询_JOOQ 入门(三)-- CRUD 语句
- 华环光端机MySQL_【HUAHUAN华环155M光端机,H9MO-LME-01T1642/EJ光端机】价格_厂家 - 中国供应商...
- 抖音小游戏背后:醉翁之意不在酒