"use strict";
|
cc._RF.push(module, '36187xGjVFOz6dZMgh6XWg8', 'downloadmanager');
|
// Scripts/common/downloadmanager.js
|
|
"use strict";
|
|
window.DownloadManager = cc.Class({
|
ctor: function ctor() {
|
this._spinesCache = [];
|
},
|
checkAnimaCache: function checkAnimaCache() {
|
return;
|
cc.sys.localStorage.removeItem("sszg_anima_cache_1");
|
var cache_info = cc.sys.localStorage.getItem("sszg_anima_cache_1");
|
|
if (cache_info) {
|
cache_info = JSON.parse(cache_info);
|
|
if (cache_info.status != "finish") {
|
var finish_num = parseInt(cache_info.status);
|
|
if (typeof finish_num == "number" && finish_num > 0 && finish_num < CacheAnimas.length) {
|
for (var anima_i = finish_num + 1; anima_i < CacheAnimas.length - 1; anima_i++) {
|
this.downloadSpine(CacheAnimas[anima_i], anima_i);
|
}
|
}
|
}
|
} else {
|
for (var anima_i in CacheAnimas) {
|
this.downloadSpine(CacheAnimas[anima_i], anima_i);
|
}
|
}
|
},
|
downloadSpine: function downloadSpine(spine_id, index) {
|
var spine_info = {
|
spine_id: spine_id,
|
index: index
|
};
|
|
this._spinesCache.push(spine_info);
|
|
if (this._spinesCache.length > 0 && !this._downTimer) {
|
this._downTimer = gcore.Timer.set(this.preDownLoad.bind(this), 500, -1);
|
}
|
},
|
preDownLoad: function preDownLoad() {
|
var load_status = cc.loader.getDownLoadStatus();
|
|
if (!load_status) {
|
// 主队列没有下载任务
|
var spine_info = this._spinesCache.shift();
|
|
if (spine_info.index) {
|
var status = spine_info.index;
|
|
if (spine_info.index >= CacheAnimas.length - 1) {
|
status = "finish";
|
}
|
|
cc.sys.localStorage.setItem("sszg_anima_cache_1", JSON.stringify({
|
status: status
|
}));
|
}
|
|
this.doDownloadSpine(spine_info.spine_id);
|
|
if (this._spinesCache.length <= 0 && this._downTimer) {
|
gcore.Timer.del(this._downTimer);
|
this._downTimer = null;
|
}
|
}
|
},
|
doDownloadSpine: function doDownloadSpine(spine_id) {
|
if (!spine_id) return;
|
var spine_path = "spine/" + spine_id + "/"; // spien文件
|
|
var spine_uuids = cc.loader.getDirUuids(spine_path, sp.SkeletonData);
|
cc.log(spine_uuids); // for (var spine_i in spine_uuids) {
|
// var spine_url = cc.loader.getUrlWithUuid(spine_uuids[spine_i]);
|
// this.downloadText(spine_url);
|
// }
|
// // 图片和纹理
|
// var img_uuids = cc.loader.getDirUuids(spine_path, cc.Texture2D);
|
// for (var img_i in img_uuids) {
|
// var texture_url = cc.loader.getUrlWithUuid(img_uuids[img_i]);
|
// var img_url = texture_url.replace(".json", ".png");
|
// this.downloadText(texture_url);
|
// this.downloadImage(img_url);
|
// }
|
},
|
downloadText: function downloadText(url, callback) {
|
var xhr = cc.loader.getXMLHttpRequest(),
|
// var xhr = new ActiveXObject("MSXML2.XMLHTTP");
|
errInfo = 'Load text file failed: ' + url;
|
xhr.open('GET', url, true);
|
if (xhr.overrideMimeType) xhr.overrideMimeType('text\/plain; charset=utf-8');
|
|
xhr.onload = function () {
|
if (xhr.readyState === 4) {
|
if (xhr.status === 200 || xhr.status === 0) {
|
callback && callback(null, xhr.responseText);
|
} else {
|
callback && callback({
|
status: xhr.status,
|
errorMessage: errInfo + '(wrong status)'
|
});
|
}
|
} else {
|
callback && callback({
|
status: xhr.status,
|
errorMessage: errInfo + '(wrong readyState)'
|
});
|
}
|
};
|
|
xhr.onerror = function () {
|
callback && callback({
|
status: xhr.status,
|
errorMessage: errInfo + '(error)'
|
});
|
};
|
|
xhr.ontimeout = function () {
|
callback && callback({
|
status: xhr.status,
|
errorMessage: errInfo + '(time out)'
|
});
|
};
|
|
xhr.send(null);
|
},
|
downloadImage: function downloadImage(url, callback, isCrossOrigin) {
|
if (!url) return;
|
if (isCrossOrigin === undefined) isCrossOrigin = true;
|
var img = new Image();
|
|
if (isCrossOrigin && window.location.protocol !== 'file:') {
|
img.crossOrigin = 'anonymous';
|
} else {
|
img.crossOrigin = null;
|
}
|
|
if (img.complete && img.naturalWidth > 0 && img.src === url) {
|
return img;
|
} else {
|
var loadCallback = function loadCallback() {
|
img.removeEventListener('load', loadCallback);
|
img.removeEventListener('error', errorCallback);
|
};
|
|
var errorCallback = function errorCallback() {
|
img.removeEventListener('load', loadCallback);
|
img.removeEventListener('error', errorCallback);
|
};
|
|
img.addEventListener('load', loadCallback);
|
img.addEventListener('error', errorCallback);
|
img.src = url;
|
}
|
}
|
});
|
|
DownloadManager.getInstance = function () {
|
if (!DownloadManager.instance) {
|
DownloadManager.instance = new DownloadManager();
|
}
|
|
return DownloadManager.instance;
|
};
|
|
module.exports = DownloadManager;
|
|
cc._RF.pop();
|