我将游戏内的声音文件分为子包,在进去对局前分包加载。
正常没有问题进去对局,然而有时候安卓手机会偶现 退出后进不去对局 , 看日志打印是 分包加载没有回调导致的。
贴出代码:
loadSubpackage: function (nameArr, succCallback, failCallback) {
try {
let arr = [];
for (let i = 0; i < nameArr.length; i++) {
arr.push(nameArr[i]);
}
tyhappy.isDebug && tyhappy.LOGE("loadSubpackage arr=", arr);
let name = arr[0];
let targetVersion = "2.1.0";
if (tyhappy.IsWechatPlatform() &&
tyhappy.Util.compareVersion(tyhappy.SystemInfo.wxSystemInfo.SDKVersion, targetVersion) > 0 &&
wx && wx.loadSubpackage) {
//support
tyhappy.LOGE("loadSubpackage support!");
tyhappy.NotificationCenter.trigger(tyhappy.EventType.EVENT_SHOW_LOADING_LAYER, {
event: tyhappy.EventType.EVENT_SHOW_LOADING_LAYER
});
const loadTask = wx.loadSubpackage({
name: name, // name 可以填 name 或者 root
success: (res) => {
// 分包加载成功后通过 success 回调
tyhappy.isDebug && tyhappy.LOGE("loadSubpackage success ====== res=", JSON.stringify(res));
tyhappy.isDebug && tyhappy.LOGE("loadSubpackage success ====== arr.length=", arr.length);
if (arr.length == 1) {
tyhappy.NotificationCenter.trigger(tyhappy.EventType.EVENT_HIDE_LOADING_LAYER, {
event: tyhappy.EventType.EVENT_HIDE_LOADING_LAYER
});
if(succCallback){
succCallback();
}
} else {
arr.splice(0, 1);
this.loadSubpackage(arr, succCallback, failCallback);
}
},
fail: function (res) {
// 分包加载失败通过 fail 回调
tyhappy.isDebug && tyhappy.LOGE("loadSubpackage fail ====== res=", JSON.stringify(res));
tyhappy.NotificationCenter.trigger(tyhappy.EventType.EVENT_HIDE_LOADING_LAYER, {
event: tyhappy.EventType.EVENT_HIDE_LOADING_LAYER
});
failCallback && failCallback();
}
});
loadTask.onProgressUpdate(res => {
tyhappy.isDebug && tyhappy.LOGE('下载进度', res.progress);
tyhappy.isDebug && tyhappy.LOGE('已经下载的数据长度', res.totalBytesWritten);
tyhappy.isDebug && tyhappy.LOGE('预期需要下载的数据总长度', res.totalBytesExpectedToWrite);
tyhappy.NotificationCenter.trigger(tyhappy.EventType.EVENT_UPDATE_LOADING_LAYER, {
event: tyhappy.EventType.EVENT_UPDATE_LOADING_LAYER,
progress: res.progress || 1
});
})
} else {
//not support
tyhappy.LOGE("loadSubpackage not support!");
if(succCallback){
succCallback();
}
}
} catch (e) {
tyhappy.LOGE("应用层出错====e=", JSON.stringify(e));
failCallback && failCallback();
}
},
输出日志:
tyhappy.LOGE(“loadSubpackage support!”);
后面就没有了。
后面我以为是wx的接口导致的问题,改为了cocos的接口:
cc.loader.downloader.loadSubpackage(‘01_graphics’, function (err) {
if (err) {
return console.error(err);
}
console.log(‘load subpackage successfully.’);
});
还是会偶现一样的问题。
希望大大指点一下。@jare @官方团队
如果需要demo的话。我可能需要点时间。