js调用c++下载资源附带回调

本文介绍如何利用C++实现一个功能,让JavaScript能够调用来下载资源,并且包含回调机制,确保下载完成后能通知JavaScript。
摘要由CSDN通过智能技术生成
//js 调用下载


let FileDownLoadProgress = function(downLoadUrl, senarioDirName, progressCall, completeCall) {
    this._fileName = "",
    this._loadingResult = LoadingResult.Unknow,
    this.onFileDownLoad = function(ret) {
        if (ret.flag == "progress") {
            if (progressCall) progressCall(ret.totalReceived, ret.totalExpected);
        } else if (ret.flag == "success") {
            this._fileName = ret.fullName;
            cchelper.logSenario("[onFileDownLoad] File download ok -> " + ret.fullName);
            let writablePath = jsb.fileUtils.getWritablePath();
            cc.BCBridge.decompressFile(this.onDecompressFile, this, ret.fullName, "", writablePath + "Update/senarios/"+senarioDirName);
        } else {           
            this._loadingResult = LoadingResult.NetError;
            if (completeCall) completeCall(false, ret.errorStr);
        }
    };

    this.onDecompressFile = function(ret) {
        if (ret.flag == 100) {
            this._loadingResult = LoadingResult.OK;
            cchelper.logSenario("[onFileDownLoad] Decompress File OK !");
            jsb.fileUtils.removeFile(this._fileName);
            if (completeCall) completeCall(true);
        } else {
            cchelper.logSenario("[onFileDownLoad] Decompress File Error: " + ret.flag);
            this._loadingResult = LoadingResult.FileError;
            if (completeCall) completeCall(false, "decompress file failed");
        }
    };

    //开始下载
    this.start = function() {
        cc.BCBridge.startDownLoadFile(this.onFileDownLoad, this, downLoadUrl, senarioDirName);
    };
};





this.downloadSenario = function(senarioId, resUrl, progressCall, completedCall) {
    //下载对象
    let download = new FileDownLoadProgress(resUrl, senarioId, progressCall, completedCall);
    download.start();
};

onProgress: function() {};
onCompleted: function(isOK, errStr, sceneId, sceneVersion) {};

this.downloadSenario(
    sceneId,
    resUrl,
    (received, expected) => this.onProgress(received, e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值