CocosCreator调用c++函数
打开 Classes 下的 jsb_module_register.cpp文件在里面添加个给js调用的jsb_base64 c++函数// base64编码static bool jsb_base64(se::State& s){const auto& args = s.args();size_t argc = args.size();CC_UNUS
·
打开 Classes 下的 jsb_module_register.cpp文件
例子:
1.在里面添加个给js调用的jsb_base64 c++函数
// base64编码
static bool jsb_base64(se::State& s)
{
const auto& args = s.args();
size_t argc = args.size();
CC_UNUSED bool ok = true;
if (argc == 1) {
cocos2d::Data data;
std::string arg1;
// 获得传进来的参数
ok &= seval_to_Data(args[0], &data);
SE_PRECONDITION2(ok, false, "jsb_base64 : Error processing arguments");
// 逻辑处理
char *encodedData = nullptr;
base64Encode(data.getBytes(), data.getSize(), &encodedData);
// 返回数据到js
std::string retStr = encodedData;
ok &= std_string_to_seval(retStr, &s.rval());
SE_PRECONDITION2(ok, false, "js_cocos2dx_Texture2D_getDescription : Error processing arguments");
return true;
}
SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 2);
return false;
return true;
}
SE_BIND_FUNC(jsb_base64)
static bool jsb_customFunc(se::Object* global)
{
// 写一个js的全局函数
global->defineFunction("jsbBase64",_SE(jsb_base64));
return true;
}
2.在下面注册这函数
bool jsb_register_all_modules()
{
se::ScriptEngine* se = se::ScriptEngine::getInstance();
se->addRegisterCallback(jsb_customFunc);
3.js调用该c++方法
var str_base64 = jsbBase64("转换成base64")
cc.log(str_base64)
4.生成安卓/苹果/模拟器包,运行测试
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)