Cocos Creator 下载.png或者.zip到WritablePath并加载资源

当前Cocos Creator 版本:2.3.2

1、文件下载函数

function downloadBinary(item, callback) {
    var url = item.url;
    var xhr = cc.loader.getXMLHttpRequest(), errInfo = "Load binary data failed: " + url;
    xhr.open("GET", url, true);
    xhr.responseType = item.type;
    xhr.onload = function () {
        var resp = xhr.response;
        if (resp) {
            callback && callback(null, xhr.response);
        } else callback && callback(errInfo + "(no response)");
    };
    xhr.onerror = function () {
        callback && callback(errInfo + "(error)");
    };
    xhr.ontimeout = function () {
        callback && callback(errInfo + "(time out)");
    };
    xhr.send(null);
}

2、下载zip

downloadBinary({ url: zipUrl, type: "arraybuffer" }, (err, data) => {
    if (null == err) {
        let u8Arr = new Uint8Array(data);
        //保存文件
        let path = jsb.fileUtils.getWritablePath() + "classes/res/";
        if (!jsb.fileUtils.isDirectoryExist(path)) {
            jsb.fileUtils.createDirectory(path);
        }
        let fPath = `${path}test.zip`;
        let rst = jsb.fileUtils.writeDataToFile(u8Arr, fPath)
        if (rst) {
            var testSp = this.node.getChildByName("testSp");
            if (testSp) {
                //解压压缩包
                window.ui_login_main = this;
                // 调用android 或者iOS 原生解压.zip
                deviceHelper.unzipFilePath("test", path, path, "ui_login_main.unzipCallback");
            }
            return;
        } else {
            cc.log("Blade:下载失败1")
        }
    } else {
        cc.log("Blade:下载失败2")
    }
});

3、解压并加载

function unzipCallback(cbData) {
    cc.log("Blade:解压回调cbData:" + JSON.stringify(cbData));
    // zip包里放了两个测试文件cover_def.png和testPng.json
    let prePath = jsb.fileUtils.getWritablePath() + "classes/res/";
    // 检测其中一个文件是否存在
    cc.log("Blade:文件是否存在:" + jsb.fileUtils.isFileExist(prePath + "cover_def.png"))
    var testSp = this.node.getChildByName("testSp");
    if (testSp) {
        // 注意资源是绝对路径
        var allRes = [prePath + "cover_def.png", prePath + "testPng.json"];
        cc.loader.load(allRes, (errors, results) => {
            if (errors) {
                cc.log("Blade:糟糕我被return了:" + JSON.stringify(error))
                return;
            }
            var aTex = results.getContent(allRes[0]);//读取文件也是读取绝对路径
            // 设置图片
            testSp.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(aTex);
            //输出json内容
            var bJsonObj = results.getContent(allRes[1]);
            cc.log("Blade:bJsonObj:" + JSON.stringify(bJsonObj))
        });
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值