/* loader.js:负责对资源的加载 */ "use strict"; function loader() { this._init(); } loader.prototype._init = function () { } ////// 设置加载进度条进度 ////// loader.prototype.setStartProgressVal = function (val) { core.dom.startTopProgress.style.width = val + '%'; } ////// 设置加载进度条提示文字 ////// loader.prototype.setStartLoadTipText = function (text) { core.dom.startTopLoadTips.innerHTML = text; } loader.prototype._load = function (callback) { // 加载icons core.loader.loadIcons(); // 加载图片 core.loader.loadImages(core.materials, core.material.images, function () { // 加载png图片 core.material.images.images = {}; var images = core.clone(core.images); if (images.indexOf("hero.png")<0) images.push("hero.png"); core.loader.loadImages(images, core.material.images.images, function () { // 加载autotile core.material.images.autotile = {}; var keys = Object.keys(core.material.icons.autotile); var autotiles = {}; core.loader.loadImages(keys, autotiles, function () { keys.forEach(function (v) { core.material.images.autotile[v] = autotiles[v]; }); setTimeout(function () { core.maps.makeAutotileEdges(); }); // 加载tilesets core.material.images.tilesets = {}; if (!core.isset(core.tilesets)) core.tilesets = []; core.loader.loadImages(core.clone(core.tilesets), core.material.images.tilesets, function () { // 检查宽高是32倍数,如果出错在控制台报错 for (var imgName in core.material.images.tilesets) { var img = core.material.images.tilesets[imgName]; if (img.width%32!=0 || img.height%32!=0) { console.warn("警告!"+imgName+"的宽或高不是32的倍数!"); } if (img.width * img.height > 32*32*3000) { console.warn("警告!"+imgName+"上的图块素材个数大于3000!"); } } core.loader.loadAnimates(); core.loader.loadMusic(); if (core.isset(callback)) callback(); }) }) }) }) } loader.prototype.loadIcons = function () { this.loadImage("icons.png", function (id, image) { var images = core.cropImage(image); for (var key in core.statusBar.icons) { if (typeof core.statusBar.icons[key] == 'number') { core.statusBar.icons[key] = images[core.statusBar.icons[key]]; if (core.isset(core.statusBar.image[key])) core.statusBar.image[key].src = core.statusBar.icons[key].src; } } }); } loader.prototype.loadImages = function (names, toSave, callback) { if (!core.isset(names) || names.length==0) { if (core.isset(callback)) callback(); return; } var items = 0; for (var i=0;i=0) { core.musicStatus.cachedBgms.splice(index, 1); } else { // 预加载BGM core.material.bgms[name].load(); // 清理尾巴 if (core.musicStatus.cachedBgms.length == core.musicStatus.cachedBgmCount) { this.freeBgm(core.musicStatus.cachedBgms.pop()); } } // 移动到缓存最前方 core.musicStatus.cachedBgms.unshift(name); }