官方文档中没有提及到二进制资源的支持,即使扩展名取为bin了,最后得到的还是Text。但实际上还是有这种需求的。的确,loader是可以定制的,所以我用了下面的办法:
比如我们需要扩展名是bin的是二进制格式:
cc.loader.addDownloadHandlers({ bin: cc.loader.downloader["extMap"].binary }); cc.loader.addLoadHandlers({ bin: function (item, callback) { item._owner.rawBuffer = item.content; return item.content; } });
这样就可以通过rawBuffer获得二进制数据。
但在微信小游戏中又多了一层wxDownloader,这个就没有途径定制了。但实际只需要改动一处,在function readText 里,将encoding: ‘utf8’ 改成 encoding: item.type==‘bin’?null:‘utf8’, 就可以了。
不知道以后官方会不会增加二进制资源的支持,或者已经有?
如果不能,那只有两条路,一个是像上面那样改,一个只能将二进制编码base64了。