之前一直用 cc.loader.load 加载图片资源,一直都没问题,昨天突然4g情况下无法加载,wifi下正常,这个是什么原因,怎么解 (ios 用相同的代码,加载正常)
2赞
遇到相同情况,同问
你那现在解决了吗
这是腾讯网络的问题
没有解决,正在想办法。有些安卓机4G加载是正常的,有些4G加载不到,很怪异…
有些安卓机4G加载是正常的,有些4G加载不到,很影响用户使用,现在也只能想办法去解决了…
有什么办法解决吗
我准备做头像微信头像缓存,相同的头像只加载一次。
我们也碰到了, 引擎组出来解释下啊, 怎么解决, 这肯定和底层的加载机制有关系吧, 不然ios可以,web可以, android用wifi也可以
android7.0 100%必现,而且这个问题是最近出现的。我怀疑是腾讯和抖音出事后的后续了
腾讯和抖音涉及头像问题后,应该腾讯限制了部分访问头像方法,刚好 某些特定条件下的ccload被限制了,换http下载是可以的
1赞
我也遇到了 好几个项目都遇到这个问题了,请问有解决方案吗
android7.0 4g网络 100%必现 等engine组修复吧
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = function () {
cc.log("xhr.readyState " +xhr.readyState);
cc.log("xhr.status " +xhr.status);
if (xhr.readyState === 4) {
if(xhr.status === 200) {
saveFile(xhr.response);
} else {
saveFile(null);
}
}
};
xhr.send();
试试这种方式保存。我这样可以的
这种把图片下载到本地保存,再从本地读取?
Native.loadNative = function(url, callback){
if (!Native.isNav()) {
callback(url);
return;
}
if (Native.isIos()) {
callback(url);
return;
}
let dirpath = jsb.fileUtils.getWritablePath() + 'headimg/';
let filepath = dirpath + Base64.encode64(url) + '.jpg';
if( jsb.fileUtils.isFileExist(filepath) ){
callback(filepath);
return;
}
let saveFile = function(data){
if( data ){
if( !jsb.fileUtils.isDirectoryExist(dirpath) ){
jsb.fileUtils.createDirectory(dirpath);
}
if( jsb.fileUtils.writeDataToFile( new Uint8Array(data) , filepath) ){
console.log('Remote write file succeed.');
callback(filepath);
}else{
console.log('Remote write file failed.');
}
}else{
console.log('Remote download file failed.');
}
};
let xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = function () {
cc.log("xhr.readyState " +xhr.readyState);
cc.log("xhr.status " +xhr.status);
if (xhr.readyState === 4 ) {
if(xhr.status === 200){
saveFile(xhr.response);
}else{
saveFile(null);
}
}
}.bind(this);
xhr.open("GET", url, true);
xhr.send();
};
使用这个方法暂时解决问题, 第一次会比较慢;所以判断了下如果不是原生或者是ios就直接返回url;否则保存到本地 并返回本地路径
我们的解决了。
我们的微信授权这块是放在后台服务器处理的,就把微信授权那块的代码调整了下,获取微信头像路径之后将头像下载到服务器,然后在数据库中存服务器的图片地址, cc.loader.load加载直接使用数据库中服务器图片地址。.
这种处理只需要重新登录下就可以获取自己的头像,不需要cocos做改动。
不过牵涉到其他人头像的,就需要批处理将数据库里面的全部转换成服务器的图片路径。
我们也出现了,也是最近才出现,今天会试试服务器转发微信头像,谢谢