1.10.0自定义加载器有问题

原来用1.9.1下面的代码是好的,loadRes的callback收到的content就是自定义加载器返回来的内容,升级到了1.10.0后,返回的content是一个cc_Asset对象,怎么解决?
cc.loader.addDownloadHandlers({
‘zip’: (item, callback) => {
let xhr = cc.loader.getXMLHttpRequest();
xhr.responseType = “arraybuffer”;
xhr.onload = function(oEvent) {
callback(null, xhr.response);
};
xhr.open(“GET”, item.url, true);
xhr.send();
}
});
cc.loader.addLoadHandlers({
‘zip’: (item, callback) => {
callback(null, item.content);
}
});
cc.loader.loadRes(’./config/config.zip’, (err, content)=>{
console.log(err, content);
});

=====================================================
这个cc.loader.md5Pipe是不是已经弃用了,用什么方式可以代替吗?
var path = cc.url.raw(‘xxxx’);
if (cc.loader.md5Pipe) {
path = cc.loader.md5Pipe.transformURL(path);
}

@panda帮看看

你调试看一下吧, 我加载一个json, 发现返回的数据里面重新封装过, 需要通过.json才能取到原来的数据.

自己解决了,看了1.10.0升级指南也没有帮助(http://docs.cocos.com/creator/1.10/manual/zh/release-notes/raw-asset-migration.html?h=未知类型),看API文档也也没有得到什么帮助,最后决定自己看看CCLoader的源码,这个文件的代码engine/cocos2d/core/load-pipeline/CCLoader.js,看到下面这个代码终于瞬间明白,proto.getRes = function (url, type) {
var item = this._cache[url];
if (!item) {
var uuid = this._getResUuid(url, type, true);
if (uuid) {
var ref = this._getReferenceKey(uuid);
item = this._cache[ref];
}
else {
return null;
}
}
if (item && item.alias) {
item = item.alias;
}
return (item && item.complete) ? item.content : null;
};

解决方案就是,自定义了资源的加载器以后,callback返回是一个CCAsset对象了,cc.loader.getRes用nativeUrl作为参数获取自定义加载器返回的原始数据,我自己的代码如下:
cc.loader.loadRes(’./config/config.zip’, (err, res:cc.Asset)=>{
let content = cc.loader.getRes(res.nativeUrl);
var zip = new JSZip(content);
});