CocosCreator调用c++函数

打开 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.生成安卓/苹果/模拟器包,运行测试

你可能感兴趣的:(code)