From 0ea99226cc6947e182826ed934feff2cdaa00ecc Mon Sep 17 00:00:00 2001 From: pandamicro Date: Mon, 22 Feb 2016 17:52:06 +0800 Subject: [PATCH] Replace cc.loader with pipeline loader --- CCBoot.js | 8 +- cocos2d/audio/CCAudio.js | 303 +----------- cocos2d/core/CCGame.js | 4 +- cocos2d/core/label/CCSGLabel.js | 4 +- cocos2d/core/label/FNTLoader.js | 103 ---- cocos2d/core/load-pipeline/CCLoader.js | 6 +- cocos2d/core/platform/CCLoader.js | 595 ------------------------ cocos2d/core/platform/CCLoaders.js | 156 ------- cocos2d/core/platform/index.js | 1 - cocos2d/core/scenes/CCLoaderScene.js | 17 +- cocos2d/core/sprites/CCSpriteFrame.js | 2 +- cocos2d/core/textures/CCTextureCache.js | 22 +- cocos2d/core/utils/BinaryLoader.js | 2 - cocos2d/labels/CCLabelBMFont.js | 104 ----- cocos2d/particle/CCParticleSystem.js | 13 +- cocos2d/tilemap/CCTMXXMLParser.js | 3 - cocos2d/tilemap/CCTiledMap.js | 4 +- extensions/runtime/CCLoaderLayer.js | 4 +- gulp/tasks/build-cocos2d.js | 2 - gulpfile.js | 2 - jsb/jsb-game.js | 4 +- moduleConfig.json | 1 - predefine.js | 1 - test/qunit/unit/test-loader.js | 2 +- 24 files changed, 51 insertions(+), 1312 deletions(-) delete mode 100644 cocos2d/core/label/FNTLoader.js delete mode 100644 cocos2d/core/platform/CCLoader.js delete mode 100644 cocos2d/core/platform/CCLoaders.js diff --git a/CCBoot.js b/CCBoot.js index 2a3b4c4a826..771f82833a9 100644 --- a/CCBoot.js +++ b/CCBoot.js @@ -192,8 +192,8 @@ cc.formatStr = function(){ }; require('../cocos2d/core/utils'); -require('../cocos2d/core/platform/CCLoader'); require('../cocos2d/core/platform/CCSys'); +require('../cocos2d/core/load-pipeline/CCLoader'); require('../cocos2d/core/CCGame'); @@ -276,7 +276,7 @@ function _load(config) { } else { // Load cocos modules var ccModulesPath = cc.path.join(engineDir, "moduleConfig.json"); - loader.loadJson(ccModulesPath, function (err, modulesJson) { + loader.load(ccModulesPath, function (err, modulesJson) { if (err) throw new Error(err); var modules = config["modules"] || []; var moduleMap = modulesJson["module"]; @@ -287,8 +287,8 @@ function _load(config) { var arr = _getJsListOfModule(moduleMap, modules[i], engineDir); if (arr) jsList = jsList.concat(arr); } - cc.loader.loadJsWithImg(jsList, function (err) { - if (err) throw err; + loader.load(jsList, function (err) { + if (err) throw new Error(JSON.stringify(err)); _afterEngineLoaded(config); }); }); diff --git a/cocos2d/audio/CCAudio.js b/cocos2d/audio/CCAudio.js index f26f8da1778..9b148acf38b 100644 --- a/cocos2d/audio/CCAudio.js +++ b/cocos2d/audio/CCAudio.js @@ -26,114 +26,6 @@ var JS = require('../core/platform/js'); -/** - * Audio support in the browser - * - * MULTI_CHANNEL : Multiple audio while playing - If it doesn't, you can only play background music - * WEB_AUDIO : Support for WebAudio - Support W3C WebAudio standards, all of the audio can be played - * AUTOPLAY : Supports auto-play audio - if Don‘t support it, On a touch detecting background music canvas, and then replay - * REPLAY_AFTER_TOUCH : The first music will fail, must be replay after touchstart - * USE_EMPTIED_EVENT : Whether to use the emptied event to replace load callback - * DELAY_CREATE_CTX : delay created the context object - only webAudio - * NEED_MANUAL_LOOP : WebAudio loop attribute failure, need to manually perform loop - * - * May be modifications for a few browser version - */ -var __audioSupport; -(function(){ - - var DEBUG = false; - - var sys = cc.sys; - var version = sys.browserVersion; - - var supportTable = { - "common" : {MULTI_CHANNEL: true , WEB_AUDIO: supportWebAudio , AUTOPLAY: true } - }; - - // check if browser supports Web Audio - // check Web Audio's context - var supportWebAudio = !!(window.AudioContext || window.webkitAudioContext || window.mozAudioContext); - - supportTable[sys.BROWSER_TYPE_IE] = {MULTI_CHANNEL: true , WEB_AUDIO: supportWebAudio , AUTOPLAY: true, USE_EMPTIED_EVENT: true}; - // ANDROID // - supportTable[sys.BROWSER_TYPE_ANDROID] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false}; - supportTable[sys.BROWSER_TYPE_CHROME] = {MULTI_CHANNEL: true , WEB_AUDIO: true , AUTOPLAY: false}; - supportTable[sys.BROWSER_TYPE_FIREFOX] = {MULTI_CHANNEL: true , WEB_AUDIO: true , AUTOPLAY: true , DELAY_CREATE_CTX: true}; - supportTable[sys.BROWSER_TYPE_UC] = {MULTI_CHANNEL: true , WEB_AUDIO: false, AUTOPLAY: false}; - supportTable[sys.BROWSER_TYPE_QQ] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: true }; - supportTable[sys.BROWSER_TYPE_OUPENG] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - supportTable[sys.BROWSER_TYPE_WECHAT] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - supportTable[sys.BROWSER_TYPE_360] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: true }; - supportTable[sys.BROWSER_TYPE_MIUI] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: true }; - supportTable[sys.BROWSER_TYPE_LIEBAO] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - supportTable[sys.BROWSER_TYPE_SOUGOU] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - //"Baidu" browser can automatically play - //But because it may be play failed, so need to replay and auto - supportTable[sys.BROWSER_TYPE_BAIDU] = {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - supportTable[sys.BROWSER_TYPE_BAIDU_APP]= {MULTI_CHANNEL: false, WEB_AUDIO: false, AUTOPLAY: false, REPLAY_AFTER_TOUCH: true , USE_EMPTIED_EVENT: true }; - - // APPLE // - supportTable[sys.BROWSER_TYPE_SAFARI] = {MULTI_CHANNEL: true , WEB_AUDIO: true , AUTOPLAY: false, webAudioCallback: function(realUrl){ - document.createElement("audio").src = realUrl; - }}; - - if(cc.sys.isMobile){ - if(cc.sys.os !== cc.sys.OS_IOS) - __audioSupport = supportTable[sys.browserType] || supportTable["common"]; - else - __audioSupport = supportTable[sys.BROWSER_TYPE_SAFARI]; - }else{ - switch(sys.browserType){ - case sys.BROWSER_TYPE_IE: - __audioSupport = supportTable[sys.BROWSER_TYPE_IE]; - break; - case sys.BROWSER_TYPE_FIREFOX: - __audioSupport = supportTable[sys.BROWSER_TYPE_FIREFOX]; - break; - default: - __audioSupport = supportTable["common"]; - } - } - - /////////////////////////// - // Browser compatibility// - /////////////////////////// - if(version){ - switch(sys.browserType){ - case sys.BROWSER_TYPE_CHROME: - version = parseInt(version); - if(version < 30){ - __audioSupport = {MULTI_CHANNEL: false , WEB_AUDIO: true , AUTOPLAY: false}; - }else if(version === 42){ - __audioSupport.NEED_MANUAL_LOOP = true; - } - break; - case sys.BROWSER_TYPE_MIUI: - if(cc.sys.isMobile){ - version = version.match(/\d+/g); - if(version[0] < 2 || (version[0] === 2 && version[1] === 0 && version[2] <= 1)){ - __audioSupport.AUTOPLAY = false; - } - } - break; - } - } - - if(DEBUG){ - setTimeout(function(){ - cc.log("browse type: " + sys.browserType); - cc.log("browse version: " + version); - cc.log("MULTI_CHANNEL: " + __audioSupport.MULTI_CHANNEL); - cc.log("WEB_AUDIO: " + __audioSupport.WEB_AUDIO); - cc.log("AUTOPLAY: " + __audioSupport.AUTOPLAY); - }, 0); - } - - window.__audioSupport = __audioSupport; - -})(); - /** * Encapsulate DOM and webAudio */ @@ -445,190 +337,6 @@ JS.mixin(cc.Audio.prototype, { SWB = polyfill.MULTI_CHANNEL, SWC = polyfill.AUTOPLAY; - var support = []; - - (function(){ - var audio = document.createElement("audio"); - if(audio.canPlayType) { - var ogg = audio.canPlayType('audio/ogg; codecs="vorbis"'); - if (ogg && ogg !== "") support.push(".ogg"); - var mp3 = audio.canPlayType("audio/mpeg"); - if (mp3 && mp3 !== "") support.push(".mp3"); - var wav = audio.canPlayType('audio/wav; codecs="1"'); - if (wav && wav !== "") support.push(".wav"); - var mp4 = audio.canPlayType("audio/mp4"); - if (mp4 && mp4 !== "") support.push(".mp4"); - var m4a = audio.canPlayType("audio/x-m4a"); - if (m4a && m4a !== "") support.push(".m4a"); - } - })(); - try{ - if(SWA){ - var context = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)(); - if(polyfill.DELAY_CREATE_CTX) - setTimeout(function(){ context = new (window.AudioContext || window.webkitAudioContext || window.mozAudioContext)(); }, 0); - } - }catch(error){ - SWA = false; - cc.log("browser don't support web audio"); - } - - var loader = { - - cache: {}, - - load: function(realUrl, url, res, cb){ - - if(support.length === 0) - return cb("can not support audio!"); - - var i; - - if(cc.loader.audioPath) - realUrl = cc.path.join(cc.loader.audioPath, realUrl); - - var extname = cc.path.extname(realUrl); - - var typeList = [extname]; - for(i=0; i this._maxAudioInstance){ cc.log("Error: %s greater than %d", url, this._maxAudioInstance); }else{ - var audio = loader.cache[url]; + var audio = cc.loader.getRes(url); if(!audio){ cc.loader.load(url); - audio = loader.cache[url]; + audio = cc.loader.getRes(url); } audio = audio.cloneNode(); audio.setVolume(this._effectVolume); @@ -988,7 +696,6 @@ JS.mixin(cc.Audio.prototype, { var pool = this._audioPool[url]; if(pool) pool.length = 0; delete this._audioPool[url]; - delete loader.cache[url]; }, /** @@ -1056,4 +763,4 @@ JS.mixin(cc.Audio.prototype, { }, 150); } -})(__audioSupport); +})(cc.sys.__audioSupport); diff --git a/cocos2d/core/CCGame.js b/cocos2d/core/CCGame.js index 36a623038d6..1bbc673c908 100644 --- a/cocos2d/core/CCGame.js +++ b/cocos2d/core/CCGame.js @@ -260,8 +260,8 @@ var game = /** @lends cc.game# */{ // Load game scripts var jsList = config[CONFIG_KEY.jsList]; if (jsList) { - cc.loader.loadJsWithImg(jsList, function (err) { - if (err) throw new Error(err); + cc.loader.load(jsList, function (err) { + if (err) throw new Error(JSON.stringify(err)); self._prepared = true; if (cb) cb(); }); diff --git a/cocos2d/core/label/CCSGLabel.js b/cocos2d/core/label/CCSGLabel.js index 731e9f6067b..6c5c793a70f 100644 --- a/cocos2d/core/label/CCSGLabel.js +++ b/cocos2d/core/label/CCSGLabel.js @@ -336,8 +336,6 @@ _ccsg.Label = _ccsg.Node.extend({ this.emit('load'); return; } - //add resource path - fontHandle = cc.path.join(cc.loader.resPath, fontHandle); this._isUseSystemFont = false; if (extName === ".ttf") { @@ -1100,7 +1098,7 @@ cc.BMFontHelper = { cc.log("_ccsg.Label._initBMFontWithString(): Impossible to create font. Please check file"); } - self._config = results[0]; + self._config = results.getContent(this._fontHandle); self._createFontChars(); texture = cc.textureCache.addImage(self._config.atlasName); var locIsLoaded = texture.isLoaded(); diff --git a/cocos2d/core/label/FNTLoader.js b/cocos2d/core/label/FNTLoader.js deleted file mode 100644 index eb73086bd24..00000000000 --- a/cocos2d/core/label/FNTLoader.js +++ /dev/null @@ -1,103 +0,0 @@ -cc._fntLoader = { - INFO_EXP: /info [^\n]*(\n|$)/gi, - COMMON_EXP: /common [^\n]*(\n|$)/gi, - PAGE_EXP: /page [^\n]*(\n|$)/gi, - CHAR_EXP: /char [^\n]*(\n|$)/gi, - KERNING_EXP: /kerning [^\n]*(\n|$)/gi, - ITEM_EXP: /\w+=[^ \r\n]+/gi, - INT_EXP: /^[\-]?\d+$/, - - _parseStrToObj: function (str) { - var arr = str.match(this.ITEM_EXP); - var obj = {}; - if (arr) { - for (var i = 0, li = arr.length; i < li; i++) { - var tempStr = arr[i]; - var index = tempStr.indexOf("="); - var key = tempStr.substring(0, index); - var value = tempStr.substring(index + 1); - if (value.match(this.INT_EXP)) value = parseInt(value); - else if (value[0] === '"') value = value.substring(1, value.length - 1); - obj[key] = value; - } - } - return obj; - }, - - /** - * Parse Fnt string. - * @param fntStr - * @param url - * @returns {{}} - */ - parseFnt: function (fntStr, url) { - var self = this, fnt = {}; - //padding - var infoObj = self._parseStrToObj(fntStr.match(self.INFO_EXP)[0]); - var paddingArr = infoObj["padding"].split(","); - var padding = { - left: parseInt(paddingArr[0]), - top: parseInt(paddingArr[1]), - right: parseInt(paddingArr[2]), - bottom: parseInt(paddingArr[3]) - }; - - //common - var commonObj = self._parseStrToObj(fntStr.match(self.COMMON_EXP)[0]); - fnt.commonHeight = commonObj["lineHeight"]; - //font size - fnt.fontSize = infoObj["size"]; - if (cc._renderType === cc.game.RENDER_TYPE_WEBGL) { - var texSize = cc.configuration.getMaxTextureSize(); - if (commonObj["scaleW"] > texSize.width || commonObj["scaleH"] > texSize.height) - cc.log("cc.LabelBMFont._parseCommonArguments(): page can't be larger than supported"); - } - if (commonObj["pages"] !== 1) cc.log("cc.LabelBMFont._parseCommonArguments(): only supports 1 page"); - - //page - var pageObj = self._parseStrToObj(fntStr.match(self.PAGE_EXP)[0]); - if (pageObj["id"] !== 0) cc.log("cc.LabelBMFont._parseImageFileName() : file could not be found"); - fnt.atlasName = cc.path.changeBasename(url, pageObj["file"]); - - //char - var charLines = fntStr.match(self.CHAR_EXP); - var fontDefDictionary = fnt.fontDefDictionary = {}; - for (var i = 0, li = charLines.length; i < li; i++) { - var charObj = self._parseStrToObj(charLines[i]); - var charId = charObj["id"]; - fontDefDictionary[charId] = { - rect: {x: charObj["x"], y: charObj["y"], width: charObj["width"], height: charObj["height"]}, - xOffset: charObj["xoffset"], - yOffset: charObj["yoffset"], - xAdvance: charObj["xadvance"] - }; - } - - //kerning - var kerningDict = fnt.kerningDict = {}; - var kerningLines = fntStr.match(self.KERNING_EXP); - if (kerningLines) { - for (var i = 0, li = kerningLines.length; i < li; i++) { - var kerningObj = self._parseStrToObj(kerningLines[i]); - kerningDict[(kerningObj["first"] << 16) | (kerningObj["second"] & 0xffff)] = kerningObj["amount"]; - } - } - return fnt; - }, - - /** - * load the fnt - * @param realUrl - * @param url - * @param res - * @param cb - */ - load: function (realUrl, url, res, cb) { - var self = this; - cc.loader.loadTxt(realUrl, function (err, txt) { - if (err) return cb(err); - cb(null, self.parseFnt(txt, url)); - }); - } -}; -cc.loader.register(["fnt"], cc._fntLoader); \ No newline at end of file diff --git a/cocos2d/core/load-pipeline/CCLoader.js b/cocos2d/core/load-pipeline/CCLoader.js index 9baf7d69519..779a8c91f15 100644 --- a/cocos2d/core/load-pipeline/CCLoader.js +++ b/cocos2d/core/load-pipeline/CCLoader.js @@ -35,13 +35,13 @@ var loader = new Loader(); * @class loader * @static */ -cc._loader = new Pipeline([ +cc.loader = new Pipeline([ downloader, loader ]); -JS.mixin(cc._loader, { +JS.mixin(cc.loader, { /** * Get XMLHttpRequest. * @returns {XMLHttpRequest} @@ -193,4 +193,4 @@ JS.mixin(cc._loader, { } }); -module.exports = cc._loader; \ No newline at end of file +module.exports = cc.loader; \ No newline at end of file diff --git a/cocos2d/core/platform/CCLoader.js b/cocos2d/core/platform/CCLoader.js deleted file mode 100644 index 7c5819525c5..00000000000 --- a/cocos2d/core/platform/CCLoader.js +++ /dev/null @@ -1,595 +0,0 @@ -var _noCacheRex = /\?/; -function urlAppendTimestamp (url) { - if (cc.game.config['noCache'] && typeof url === 'string') { - if(_noCacheRex.test(url)) - url += '&_t=' + (new Date() - 0); - else - url += '?_t=' + (new Date() - 0); - } - return url; -} - -/** - * Loader for resource loading process. It's a singleton object. - * @class loader - * @static - */ -cc.loader = cc.loader || (function () { - var _jsCache = {}, //cache for js - _register = {}, //register of loaders - _langPathCache = {}, //cache for lang path - _aliases = {}, //aliases for res url - _urlRegExp = new RegExp( - "^" + - // protocol identifier - "(?:(?:https?|ftp)://)" + - // user:pass authentication - "(?:\\S+(?::\\S*)?@)?" + - "(?:" + - // IP address dotted notation octets - // excludes loopback network 0.0.0.0 - // excludes reserved space >= 224.0.0.0 - // excludes network & broacast addresses - // (first & last IP address of each class) - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + - "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + - "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + - "|" + - // host name - "(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)" + - // domain name - "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + - // TLD identifier - "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + - "|" + - "(?:localhost)" + - ")" + - // port number - "(?::\\d{2,5})?" + - // resource path - "(?:/\\S*)?" + - "$", "i" - ); - - return /** @lends cc.loader# */{ - resPath: "",//root path of resource - audioPath: "",//root path of audio - cache: {},//cache for data loaded - - /** - * Get XMLHttpRequest. - * @returns {XMLHttpRequest} - */ - getXMLHttpRequest: function () { - return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP"); - }, - - //@MODE_BEGIN DEV - - _getArgs4Js: function (args) { - var a0 = args[0], a1 = args[1], a2 = args[2], results = ["", null, null]; - - if (args.length === 1) { - results[1] = a0 instanceof Array ? a0 : [a0]; - } else if (args.length === 2) { - if (typeof a1 === "function") { - results[1] = a0 instanceof Array ? a0 : [a0]; - results[2] = a1; - } else { - results[0] = a0 || ""; - results[1] = a1 instanceof Array ? a1 : [a1]; - } - } else if (args.length === 3) { - results[0] = a0 || ""; - results[1] = a1 instanceof Array ? a1 : [a1]; - results[2] = a2; - } else throw new Error("arguments error to load js!"); - return results; - }, - - /** - * Load js files. - * If the third parameter doesn't exist, then the baseDir turns to be "". - * - * @method loadJs - * @param {String} [baseDir] - The pre path for jsList or the list of js path. - * @param {Array} jsList - List of js path. - * @param {Function} [cb] - Callback function - * @returns {*} - */ - loadJs: function (baseDir, jsList, cb) { - var self = this, - args = self._getArgs4Js(arguments); - - var preDir = args[0], list = args[1], callback = args[2]; - if (navigator.userAgent.indexOf("Trident/5") > -1) { - self._loadJs4Dependency(preDir, list, 0, callback); - } else { - cc.async.map(list, function (item, index, cb1) { - var jsPath = cc.path.join(preDir, item); - if (_jsCache[jsPath]) return cb1(null); - self._createScript(jsPath, false, cb1); - }, callback); - } - }, - /** - * Load js width loading image. - * - * @method loadJsWithImg - * @param {String} [baseDir] - * @param {Array} jsList - * @param {Function} [cb] - */ - loadJsWithImg: function (baseDir, jsList, cb) { - var self = this, jsLoadingImg = self._loadJsImg(), - args = self._getArgs4Js(arguments); - this.loadJs(args[0], args[1], function (err) { - if (err) throw new Error(err); - jsLoadingImg.parentNode.removeChild(jsLoadingImg);//remove loading gif - if (args[2]) args[2](); - }); - }, - _createScript: function (jsPath, isAsync, cb) { - var d = document, self = this, s = document.createElement('script'); - s.async = isAsync; - _jsCache[jsPath] = true; - s.src = urlAppendTimestamp(jsPath); - s.addEventListener('load', function () { - s.parentNode.removeChild(s); - s.removeEventListener('load', arguments.callee, false); - cb(); - }, false); - s.addEventListener('error', function () { - s.parentNode.removeChild(s); - cb("Load " + jsPath + " failed!"); - }, false); - d.body.appendChild(s); - }, - _loadJs4Dependency: function (baseDir, jsList, index, cb) { - if (index >= jsList.length) { - if (cb) cb(); - return; - } - var self = this; - self._createScript(cc.path.join(baseDir, jsList[index]), false, function (err) { - if (err) return cb(err); - self._loadJs4Dependency(baseDir, jsList, index + 1, cb); - }); - }, - _loadJsImg: function () { - var d = document, jsLoadingImg = d.getElementById("cocos2d_loadJsImg"); - if (!jsLoadingImg) { - jsLoadingImg = document.createElement('img'); - - if (cc._loadingImage) - jsLoadingImg.src = cc._loadingImage; - - var canvasNode = d.getElementById(cc.game.config["id"]); - canvasNode.style.backgroundColor = "transparent"; - canvasNode.parentNode.appendChild(jsLoadingImg); - - var canvasStyle = getComputedStyle ? getComputedStyle(canvasNode) : canvasNode.currentStyle; - if (!canvasStyle) - canvasStyle = {width: canvasNode.width, height: canvasNode.height}; - jsLoadingImg.style.left = canvasNode.offsetLeft + (parseFloat(canvasStyle.width) - jsLoadingImg.width) / 2 + "px"; - jsLoadingImg.style.top = canvasNode.offsetTop + (parseFloat(canvasStyle.height) - jsLoadingImg.height) / 2 + "px"; - jsLoadingImg.style.position = "absolute"; - } - return jsLoadingImg; - }, - //@MODE_END DEV - - /** - * Load a single resource as txt. - * - * @method loadTxt - * @param {String} url - * @param {Function} [cb] - arguments are : err, txt - */ - loadTxt: function (url, cb) { - var xhr = this.getXMLHttpRequest(), - errInfo = "load " + url + " failed!"; - - url = urlAppendTimestamp(url); - - xhr.open("GET", url, true); - if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) { - // IE-specific logic here - xhr.setRequestHeader("Accept-Charset", "utf-8"); - xhr.onreadystatechange = function () { - if(xhr.readyState === 4) - (xhr.status === 200 || xhr.status === 0) ? cb(null, xhr.responseText) : cb({status:xhr.status, errorMessage:errInfo}, null); - }; - } else { - if (xhr.overrideMimeType) xhr.overrideMimeType("text\/plain; charset=utf-8"); - xhr.onload = function () { - if(xhr.readyState === 4) { - (xhr.status === 200 || xhr.status === 0) ? cb(null, xhr.responseText) : cb({status:xhr.status, errorMessage:errInfo}, null); - } - }; - xhr.onerror = function(){ - cb({status:xhr.status, errorMessage:errInfo}, null); - }; - } - xhr.send(null); - }, - _loadTxtSync: function (url) { - var xhr = this.getXMLHttpRequest(); - xhr.open("GET", url, false); - if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) { - // IE-specific logic here - xhr.setRequestHeader("Accept-Charset", "utf-8"); - } else { - if (xhr.overrideMimeType) xhr.overrideMimeType("text\/plain; charset=utf-8"); - } - xhr.send(null); - if (!xhr.readyState === 4 || !(xhr.status === 200 || xhr.status === 0)) { - return null; - } - return xhr.responseText; - }, - - loadCsb: function(url, cb){ - var xhr = new XMLHttpRequest(), - errInfo = "load " + url + " failed!"; - - url = urlAppendTimestamp(url); - - xhr.open("GET", url, true); - xhr.responseType = "arraybuffer"; - - xhr.onload = function () { - var arrayBuffer = xhr.response; // Note: not oReq.responseText - if (arrayBuffer) { - window.msg = arrayBuffer; - } - if(xhr.readyState === 4) - xhr.status === 200 ? cb(null, xhr.response) : cb({status:xhr.status, errorMessage:errInfo}, null); - }; - xhr.onerror = function(){ - cb({status:xhr.status, errorMessage:errInfo}, null); - }; - xhr.send(null); - }, - - /** - * Load a single resource as json. - * - * @method loadJson - * @param {String} url - * @param {Function} [cb] - arguments are : err, json - */ - loadJson: function (url, cb) { - this.loadTxt(url, function (err, txt) { - if (err) { - cb(err); - } - else { - try { - var result = JSON.parse(txt); - } - catch (e) { - throw new Error("parse json [" + url + "] failed : " + e); - return; - } - cb(null, result); - } - }); - }, - - _checkIsImageURL: function (url) { - var ext = /(\.png)|(\.jpg)|(\.bmp)|(\.jpeg)|(\.gif)/.exec(url); - return (ext != null); - }, - /** - * Load a single image. - * - * @method loadImg - * @param {String} url - * @param {Object} [option] - * @param {Function} callback - * @returns {Image} - */ - loadImg: function (url, option, callback) { - var opt = { - isCrossOrigin: true - }; - if (callback !== undefined) - opt.isCrossOrigin = option.isCrossOrigin === null ? opt.isCrossOrigin : option.isCrossOrigin; - else if (option !== undefined) - callback = option; - - url = urlAppendTimestamp(url); - var isNew = false; - var img = this.getRes(url); - if (!img) { - img = new Image(); - isNew = true; - if (opt.isCrossOrigin && location.origin !== "file://") - img.crossOrigin = "Anonymous"; - } - - if (!isNew && img.complete && img.naturalWidth > 0) { - callback && callback(null, img); - } - else { - function loadCallback () { - img.removeEventListener('load', loadCallback); - img.removeEventListener('error', errorCallback); - - if (callback) - callback(null, img); - } - - var self = this; - function errorCallback () { - img.removeEventListener('load', loadCallback); - img.removeEventListener('error', errorCallback); - - if (img.crossOrigin && img.crossOrigin.toLowerCase() === "anonymous") { - opt.isCrossOrigin = false; - self.release(url); - cc.loader.loadImg(url, opt, callback); - } - else { - typeof callback === "function" && callback("load image failed"); - } - } - - img.addEventListener("load", loadCallback); - img.addEventListener("error", errorCallback); - } - - if (isNew) { - img.src = url; - } - return img; - }, - - /** - * Iterator function to load res. - * - * @method _loadResIterator - * @param {Object} item - * @param {Number} index - * @param {Function} [cb] - * @returns {*} - * @private - */ - _loadResIterator: function (item, index, cb) { - var self = this, url = null; - var type = item.type; - if (type) { - type = "." + type.toLowerCase(); - url = item.src ? item.src : item.name + type; - } else { - url = item; - type = cc.path.extname(url); - } - - var obj = self.getRes(url); - if (obj) - return cb(null, obj); - var loader = null; - if (type) { - loader = _register[type.toLowerCase()]; - } - if (!loader) { - cc.error("loader for [" + type + "] not exists!"); - return cb(); - } - var realUrl = url; - if (!_urlRegExp.test(url)) - { - var basePath = loader.getBasePath ? loader.getBasePath() : self.resPath; - realUrl = self.getUrl(basePath, url); - } - - loader.load(realUrl, url, item, function (err, data) { - if (err) { - cc.log(err); - self.cache[url] = null; - delete self.cache[url]; - cb({status:520, errorMessage:err}, null); - } else { - self.cache[url] = data; - cb(null, data); - } - }); - }, - - /** - * Get url with basePath. - * - * @method getUrl - * @param {String} basePath - * @param {String} [url] - * @returns {*} - */ - getUrl: function (basePath, url) { - var self = this, path = cc.path; - if (basePath !== undefined && url === undefined) { - url = basePath; - var type = path.extname(url); - type = type ? type.toLowerCase() : ""; - var loader = _register[type]; - if (!loader) - basePath = self.resPath; - else - basePath = loader.getBasePath ? loader.getBasePath() : self.resPath; - } - url = cc.path.join(basePath || "", url); - if (url.match(/[\/(\\\\)]lang[\/(\\\\)]/i)) { - if (_langPathCache[url]) - return _langPathCache[url]; - var extname = path.extname(url) || ""; - url = _langPathCache[url] = url.substring(0, url.length - extname.length) + "_" + cc.sys.language + extname; - } - return url; - }, - - /** - * Load resources then call the callback. - * - * @method load - * @param {String} resources - * @param {Function} [option] - callback or trigger - * @param {Function|Object} [loadCallback] - * @return {AsyncPool} - */ - load: function(resources, option, loadCallback){ - 'use strict'; - - var self = this; - var len = arguments.length; - if(len === 0) - throw new Error("arguments error!"); - - if(len === 3){ - if(typeof option === "function"){ - if(typeof loadCallback === "function") - option = {trigger : option, cb : loadCallback }; - else - option = { cb : option, cbTarget : loadCallback}; - } - }else if(len === 2){ - if(typeof option === "function") - option = {cb : option}; - }else if(len === 1){ - option = {}; - } - - if(!(resources instanceof Array)) - resources = [resources]; - var asyncPool = new cc.AsyncPool( - resources, 0, - function (value, index, AsyncPoolCallback, aPool) { - self._loadResIterator(value, index, function (err, res) { - if (option.trigger) - option.trigger.call(option.triggerTarget, res, aPool.size, aPool.finishedSize); //call trigger - AsyncPoolCallback(err, res); - }); - }, - option.cb, option.cbTarget); - asyncPool.flow(); - return asyncPool; - }, - - _handleAliases: function (fileNames, cb) { - var self = this; - var resList = []; - for (var key in fileNames) { - var value = fileNames[key]; - _aliases[key] = value; - resList.push(value); - } - this.load(resList, cb); - }, - - /** - *

- * Loads alias map from the contents of a filename.
- *
- * @note The plist file name should follow the format below:
- *
- *
- *
- *
- * filenames
- *
- * sounds/click.wav
- * sounds/click.caf
- * sounds/endgame.wav
- * sounds/endgame.caf
- * sounds/gem-0.wav
- * sounds/gem-0.caf
- *

- * metadata
- *
- * version
- * 1
- *

- *

- *

- *

- * - * @method loadAliases - * @param {String} url - The plist file name. - * @param {Function} [callback] - */ - loadAliases: function (url, callback) { - var self = this, dict = self.getRes(url); - if (!dict) { - self.load(url, function (err, results) { - self._handleAliases(results[0]["filenames"], callback); - }); - } else - self._handleAliases(dict["filenames"], callback); - }, - - /** - * Register a resource loader into loader. - * - * @method register - * @param {String} extNames - * @param {Function} loader - */ - register: function (extNames, loader) { - if (!extNames || !loader) return; - var self = this; - if (typeof extNames === "string") - return _register[extNames.trim().toLowerCase()] = loader; - for (var i = 0, li = extNames.length; i < li; i++) { - _register["." + extNames[i].trim().toLowerCase()] = loader; - } - }, - - /** - * Get resource data by url. - * - * @method getRes - * @param {String} url - * @returns {*} - */ - getRes: function (url) { - return this.cache[url] || this.cache[_aliases[url]]; - }, - - /** - * Get aliase by url. - * - * @method getAliase - * @param {String} url - * @returns {*} - */ - getAliase: function (url) { - return _aliases[url]; - }, - - /** - * Release the cache of resource by url. - * - * @method release - * @param {String} url - */ - release: function (url) { - var cache = this.cache; - delete cache[url]; - delete cache[_aliases[url]]; - delete _aliases[url]; - }, - - /** - * Resource cache of all resources. - * - * @method releaseAll - */ - releaseAll: function () { - var locCache = this.cache; - for (var key in locCache) - delete locCache[key]; - for (var key in _aliases) - delete _aliases[key]; - } - }; -})(); \ No newline at end of file diff --git a/cocos2d/core/platform/CCLoaders.js b/cocos2d/core/platform/CCLoaders.js deleted file mode 100644 index 73ed0714375..00000000000 --- a/cocos2d/core/platform/CCLoaders.js +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** - Copyright (c) 2011-2012 cocos2d-x.org - Copyright (c) 2013-2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -cc._txtLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.loadTxt(realUrl, cb); - } -}; -cc.loader.register(["txt", "xml", "vsh", "fsh", "atlas"], cc._txtLoader); - -cc._jsonLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.loadJson(realUrl, cb); - } -}; -cc.loader.register(["json", "ExportJson"], cc._jsonLoader); - -cc._jsLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.loadJs(realUrl, cb); - } -}; -cc.loader.register(["js"], cc._jsLoader); - -cc._imgLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.cache[url] = cc.loader.loadImg(realUrl, function(err, img){ - if(err) - return cb(err); - cc.textureCache.handleLoadedTexture(url); - cb(null, img); - }); - } -}; -cc.loader.register(["png", "jpg", "bmp","jpeg","gif", "ico", "tiff", "webp"], cc._imgLoader); -cc._serverImgLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.cache[url] = cc.loader.loadImg(res.src, function(err, img){ - if(err) - return cb(err); - cc.textureCache.handleLoadedTexture(url); - cb(null, img); - }); - } -}; -cc.loader.register(["serverImg"], cc._serverImgLoader); - -cc._plistLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.loadTxt(realUrl, function(err, txt){ - if(err) - return cb(err); - cb(null, cc.plistParser.parse(txt)); - }); - } -}; -cc.loader.register(["plist"], cc._plistLoader); - -cc._fontLoader = { - TYPE : { - ".eot" : "embedded-opentype", - ".ttf" : "truetype", - ".ttc" : "truetype", - ".woff" : "woff", - ".svg" : "svg" - }, - _loadFont : function(name, srcs, type){ - var doc = document, path = cc.path, TYPE = this.TYPE, fontStyle = document.createElement("style"); - fontStyle.type = "text/css"; - doc.body.appendChild(fontStyle); - - var fontStr = ""; - if(isNaN(name - 0)) - fontStr += "@font-face { font-family:" + name + "; src:"; - else - fontStr += "@font-face { font-family:'" + name + "'; src:"; - if(srcs instanceof Array){ - for(var i = 0, li = srcs.length; i < li; i++){ - var src = srcs[i]; - type = path.extname(src).toLowerCase(); - fontStr += "url('" + srcs[i] + "') format('" + TYPE[type] + "')"; - fontStr += (i === li - 1) ? ";" : ","; - } - }else{ - type = type.toLowerCase(); - fontStr += "url('" + srcs + "') format('" + TYPE[type] + "');"; - } - fontStyle.textContent += fontStr + "}"; - - //
.
- var preloadDiv = document.createElement("div"); - var _divStyle = preloadDiv.style; - _divStyle.fontFamily = name; - preloadDiv.innerHTML = "."; - _divStyle.position = "absolute"; - _divStyle.left = "-100px"; - _divStyle.top = "-100px"; - doc.body.appendChild(preloadDiv); - }, - load : function(realUrl, url, res, cb){ - var self = this; - var type = res.type, name = res.name, srcs = res.srcs; - if(cc.js.isString(res)){ - type = cc.path.extname(res); - name = cc.path.basename(res, type); - self._loadFont(name, res, type); - }else{ - self._loadFont(name, srcs); - } - if(document.fonts){ - document.fonts.load("1em " + name).then(function(){ - cb(null, true); - }, function(err){ - cb(err); - }); - }else{ - cb(null, true); - } - } -}; -cc.loader.register(["font", "eot", "ttf", "woff", "svg", "ttc"], cc._fontLoader); - -cc._binaryLoader = { - load : function(realUrl, url, res, cb){ - cc.loader.loadBinary(realUrl, cb); - } -}; - -cc._csbLoader = { - load: function(realUrl, url, res, cb){ - cc.loader.loadCsb(realUrl, cb); - } -}; -cc.loader.register(["csb"], cc._csbLoader); diff --git a/cocos2d/core/platform/index.js b/cocos2d/core/platform/index.js index e6fdceef938..1604b7f8bc8 100644 --- a/cocos2d/core/platform/index.js +++ b/cocos2d/core/platform/index.js @@ -34,7 +34,6 @@ require('./instantiate'); require('./prefab-info'); require('./requiring-frame'); require('./CCSys'); -require('./CCLoader'); require('./CCMacro'); if (cc.sys.isBrowser || cc.sys.isNative) { diff --git a/cocos2d/core/scenes/CCLoaderScene.js b/cocos2d/core/scenes/CCLoaderScene.js index bd26a1514e9..1d7a02f3de1 100644 --- a/cocos2d/core/scenes/CCLoaderScene.js +++ b/cocos2d/core/scenes/CCLoaderScene.js @@ -56,11 +56,12 @@ cc.LoaderScene = _ccsg.Scene.extend({ var fontSize = 24, lblHeight = -logoHeight / 2 + 100; if(cc._loaderImage){ //loading logo - cc.loader.loadImg(cc._loaderImage, {isCrossOrigin : false }, function(err, img){ - logoWidth = img.width; - logoHeight = img.height; - self._initStage(img, cc.visibleRect.center); - }); + var img = new Image(); + img.src = cc._loaderImage; + logoWidth = img.width; + logoHeight = img.height; + self._initStage(img, cc.visibleRect.center); + fontSize = 14; lblHeight = -logoHeight / 2 - 10; } @@ -123,13 +124,13 @@ cc.LoaderScene = _ccsg.Scene.extend({ self.unschedule(self._startLoading); var res = self.resources; cc.loader.load(res, - function (result, count, loadedCount) { + function (loadedCount, count) { var percent = (loadedCount / count * 100) | 0; percent = Math.min(percent, 100); self._label.setString("Loading... " + percent + "%"); - }, function () { + }, function (error, items) { if (self.cb) - self.cb.call(self.target); + self.cb.call(self.target, error, items); }); }, diff --git a/cocos2d/core/sprites/CCSpriteFrame.js b/cocos2d/core/sprites/CCSpriteFrame.js index 09fff3cfb56..8d5d5e49afe 100644 --- a/cocos2d/core/sprites/CCSpriteFrame.js +++ b/cocos2d/core/sprites/CCSpriteFrame.js @@ -305,7 +305,7 @@ cc.SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{ * @return {SpriteFrame} */ clone: function () { - return new cc.SpriteFrame(this._textureFilename, this._rect, this._rotated, this._offset, this._originalSize); + return new cc.SpriteFrame(this._texture || this._textureFilename, this._rect, this._rotated, this._offset, this._originalSize); }, /** diff --git a/cocos2d/core/textures/CCTextureCache.js b/cocos2d/core/textures/CCTextureCache.js index 9a4717d17da..d44e77e355a 100644 --- a/cocos2d/core/textures/CCTextureCache.js +++ b/cocos2d/core/textures/CCTextureCache.js @@ -83,7 +83,7 @@ var textureCache = /** @lends cc.textureCache# */{ * @example {@link utils/api/engine/docs/cocos2d/core/textures/getTextureForKey.js} */ getTextureForKey: function(textureKeyName){ - return this._textures[textureKeyName] || this._textures[cc.loader.getAliase(textureKeyName)]; + return this._textures[textureKeyName]; }, /** @@ -301,7 +301,7 @@ game.once(game.EVENT_RENDERER_INITED, function () { var locTexs = this._textures; //remove judge - var tex = locTexs[url] || locTexs[cc.loader.getAliase(url)]; + var tex = locTexs[url]; if (tex) { if(tex.isLoaded()) { cb && cb.call(target, tex); @@ -318,11 +318,11 @@ game.once(game.EVENT_RENDERER_INITED, function () { tex = locTexs[url] = new Texture2D(); tex.url = url; - cc.loader.loadImg(url, function (err, img) { - if (err) - return cb && cb.call(target, err); + cc.loader.load(url, function (err, items) { + if (err) { + return cb && cb.call(target, items.getError(url) || new Error('Unknown error')); + } - tex.initWithElement(img); textureCache.handleLoadedTexture(url); cb && cb.call(target, tex); @@ -359,7 +359,7 @@ game.once(game.EVENT_RENDERER_INITED, function () { if (!cc.game._rendererInitialized) { locTexs = this._loadedTexturesBefore; } - var tex = locTexs[url] || locTexs[cc.loader.getAliase(url)]; + var tex = locTexs[url]; if (tex) { if(tex.isLoaded()) { cb && cb.call(target, tex); @@ -376,11 +376,11 @@ game.once(game.EVENT_RENDERER_INITED, function () { tex = locTexs[url] = new Texture2D(); tex.url = url; - cc.loader.loadImg(url, function (err, img) { - if (err) - return cb && cb.call(target, err); + cc.loader.load(url, function (err, items) { + if (err) { + return cb && cb.call(target, items.getError(url) || new Error('Unknown error')); + } - tex.initWithElement(img); textureCache.handleLoadedTexture(url); cb && cb.call(target, tex); diff --git a/cocos2d/core/utils/BinaryLoader.js b/cocos2d/core/utils/BinaryLoader.js index 440a94aee00..ec1a5940466 100644 --- a/cocos2d/core/utils/BinaryLoader.js +++ b/cocos2d/core/utils/BinaryLoader.js @@ -24,8 +24,6 @@ THE SOFTWARE. ****************************************************************************/ -require('../platform/CCLoader'); - /** * @module cc * @class loader diff --git a/cocos2d/labels/CCLabelBMFont.js b/cocos2d/labels/CCLabelBMFont.js index a83faf33aaa..9bf02f5226f 100644 --- a/cocos2d/labels/CCLabelBMFont.js +++ b/cocos2d/labels/CCLabelBMFont.js @@ -866,107 +866,3 @@ cc.LabelBMFont = cc.SpriteBatchNode.extend(/** @lends cc.LabelBMFont# */{ cc.LabelBMFont.create = function (str, fntFile, width, alignment, imageOffset) { return new cc.LabelBMFont(str, fntFile, width, alignment, imageOffset); }; - -cc._fntLoader = { - INFO_EXP: /info [^\n]*(\n|$)/gi, - COMMON_EXP: /common [^\n]*(\n|$)/gi, - PAGE_EXP: /page [^\n]*(\n|$)/gi, - CHAR_EXP: /char [^\n]*(\n|$)/gi, - KERNING_EXP: /kerning [^\n]*(\n|$)/gi, - ITEM_EXP: /\w+=[^ \r\n]+/gi, - INT_EXP: /^[\-]?\d+$/, - - _parseStrToObj: function (str) { - var arr = str.match(this.ITEM_EXP); - var obj = {}; - if (arr) { - for (var i = 0, li = arr.length; i < li; i++) { - var tempStr = arr[i]; - var index = tempStr.indexOf("="); - var key = tempStr.substring(0, index); - var value = tempStr.substring(index + 1); - if (value.match(this.INT_EXP)) value = parseInt(value); - else if (value[0] === '"') value = value.substring(1, value.length - 1); - obj[key] = value; - } - } - return obj; - }, - - /** - * Parse Fnt string. - * @param fntStr - * @param url - * @returns {{}} - */ - parseFnt: function (fntStr, url) { - var self = this, fnt = {}; - //padding - var infoObj = self._parseStrToObj(fntStr.match(self.INFO_EXP)[0]); - var paddingArr = infoObj["padding"].split(","); - var padding = { - left: parseInt(paddingArr[0]), - top: parseInt(paddingArr[1]), - right: parseInt(paddingArr[2]), - bottom: parseInt(paddingArr[3]) - }; - - //common - var commonObj = self._parseStrToObj(fntStr.match(self.COMMON_EXP)[0]); - fnt.commonHeight = commonObj["lineHeight"]; - //font size - fnt.fontSize = infoObj["size"]; - if (cc._renderType === cc.game.RENDER_TYPE_WEBGL) { - var texSize = cc.configuration.getMaxTextureSize(); - if (commonObj["scaleW"] > texSize.width || commonObj["scaleH"] > texSize.height) - cc.log("cc.LabelBMFont._parseCommonArguments(): page can't be larger than supported"); - } - if (commonObj["pages"] !== 1) cc.log("cc.LabelBMFont._parseCommonArguments(): only supports 1 page"); - - //page - var pageObj = self._parseStrToObj(fntStr.match(self.PAGE_EXP)[0]); - if (pageObj["id"] !== 0) cc.log("cc.LabelBMFont._parseImageFileName() : file could not be found"); - fnt.atlasName = cc.path.changeBasename(url, pageObj["file"]); - - //char - var charLines = fntStr.match(self.CHAR_EXP); - var fontDefDictionary = fnt.fontDefDictionary = {}; - for (var i = 0, li = charLines.length; i < li; i++) { - var charObj = self._parseStrToObj(charLines[i]); - var charId = charObj["id"]; - fontDefDictionary[charId] = { - rect: {x: charObj["x"], y: charObj["y"], width: charObj["width"], height: charObj["height"]}, - xOffset: charObj["xoffset"], - yOffset: charObj["yoffset"], - xAdvance: charObj["xadvance"] - }; - } - - //kerning - var kerningDict = fnt.kerningDict = {}; - var kerningLines = fntStr.match(self.KERNING_EXP); - if (kerningLines) { - for (var i = 0, li = kerningLines.length; i < li; i++) { - var kerningObj = self._parseStrToObj(kerningLines[i]); - kerningDict[(kerningObj["first"] << 16) | (kerningObj["second"] & 0xffff)] = kerningObj["amount"]; - } - } - return fnt; - }, - - /** - * load the fnt - * @param realUrl - * @param url - * @param res - * @param cb - */ - load: function (realUrl, url, res, cb) { - var self = this; - cc.loader.loadTxt(realUrl, function (err, txt) { - if (err) return cb(err); - cb(null, self.parseFnt(txt, url)); - }); - } -}; -cc.loader.register(["fnt"], cc._fntLoader); diff --git a/cocos2d/particle/CCParticleSystem.js b/cocos2d/particle/CCParticleSystem.js index 69e9b784a2c..f3e3f6dd4fd 100644 --- a/cocos2d/particle/CCParticleSystem.js +++ b/cocos2d/particle/CCParticleSystem.js @@ -724,7 +724,10 @@ var ParticleSystem = cc.Class({ if (file) { var self = this; cc.loader.load(file, function (err, results) { - if (err) throw err; + var content = results.getContent(file); + if (err || !content) { + throw results.getError(file) || new Error('Unkown error'); + } sgNode.particleCount = 0; @@ -733,15 +736,15 @@ var ParticleSystem = cc.Class({ // To avoid it export custom particle data textureImageData too large, // so use the texutreUuid instead of textureImageData - if (results[0].textureUuid) { - cc.AssetLibrary.queryAssetInfo(results[0].textureUuid, function (err, url, raw) { + if (content.textureUuid) { + cc.AssetLibrary.queryAssetInfo(content.textureUuid, function (err, url, raw) { self.texture = url; }); } // For custom data export - if (results[0].emissionRate) { - self.emissionRate = results[0].emissionRate; + if (content.emissionRate) { + self.emissionRate = content.emissionRate; } // recover sgNode properties diff --git a/cocos2d/tilemap/CCTMXXMLParser.js b/cocos2d/tilemap/CCTMXXMLParser.js index de9a70090b2..fe6fa5e2889 100644 --- a/cocos2d/tilemap/CCTMXXMLParser.js +++ b/cocos2d/tilemap/CCTMXXMLParser.js @@ -925,9 +925,6 @@ cc.TMXMapInfo.create = function (tmxFile, resourcePath) { }; -cc.loader.register(["tmx", "tsx"], cc._txtLoader); - - /** * @constant * @type Number diff --git a/cocos2d/tilemap/CCTiledMap.js b/cocos2d/tilemap/CCTiledMap.js index 621f6290a67..65dd0c990e8 100644 --- a/cocos2d/tilemap/CCTiledMap.js +++ b/cocos2d/tilemap/CCTiledMap.js @@ -298,9 +298,9 @@ var TiledMap = cc.Class({ }, _preloadTmx: function(file, cb) { - cc.loader.load(file, function (err) { + cc.loader.load(file, function (err, items) { if (err) { - if (cb) cb(err); + if (cb) cb(items.getError(file) || new Error('Unknown error')); return; } diff --git a/extensions/runtime/CCLoaderLayer.js b/extensions/runtime/CCLoaderLayer.js index 2093e134dd5..4fb2ccdafee 100644 --- a/extensions/runtime/CCLoaderLayer.js +++ b/extensions/runtime/CCLoaderLayer.js @@ -214,7 +214,7 @@ cc.LoaderLayer = cc.Layer.extend({ } var self = this; //var progressFunction = self.config.progressCallback ? self.config.progressCallback : null; - cc.loader.load(res, function (result, count, loadedCount) { + cc.loader.load(res, function (loadedCount, count) { var checkGroupName = function (loadedCount) { for (var i = 0; i < groupIndex.length; i++) { if (groupIndex[i] >= loadedCount) { @@ -451,7 +451,7 @@ cc.LoaderLayer.preload = function (groupname, callback, target) { cc.Dialog._finalConfig.cancelBtn.normalRes, cc.Dialog._finalConfig.cancelBtn.pressRes ], - function (result, count, loadedCount) { + function (loadedCount, count, result) { var percent = (loadedCount / count * 100) | 0; percent = Math.min(percent, 100); cc.log("Preloading engine resources... " + percent + "%"); diff --git a/gulp/tasks/build-cocos2d.js b/gulp/tasks/build-cocos2d.js index 044e10d6333..cfc958f156a 100644 --- a/gulp/tasks/build-cocos2d.js +++ b/gulp/tasks/build-cocos2d.js @@ -12,7 +12,6 @@ var srcs = [ './cocos2d/core/platform/CCCommon.js', './cocos2d/core/platform/CCSAXParser.js', - './cocos2d/core/platform/CCLoaders.js', './cocos2d/core/platform/CCConfig.js', './cocos2d/core/platform/miniFramework.js', './cocos2d/core/platform/CCEGLView.js', @@ -65,7 +64,6 @@ var srcs = [ './cocos2d/core/CCDrawingPrimitivesCanvas.js', './cocos2d/core/CCDrawingPrimitivesWebGL.js', - './cocos2d/core/label/FNTLoader.js', './cocos2d/core/label/CCSGLabel.js', './cocos2d/core/label/CCSGLabelCanvasRenderCmd.js', './cocos2d/core/label/CCSGLabelWebGLRenderCmd.js', diff --git a/gulpfile.js b/gulpfile.js index 7f8ea49f26d..737875382cf 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -20,8 +20,6 @@ paths = { '../../cocos2d/core/CCGame', '../../cocos2d/core/textures/CCTexture2D', '../../cocos2d/core/sprites/CCSpriteFrame', - '../../cocos2d/core/platform/CCLoader', - '../../cocos2d/core/platform/CCLoaders', '../../cocos2d/core/event/event', '../../extensions/spine/SGSkeleton', '../../extensions/spine/SGSkeletonAnimation', diff --git a/jsb/jsb-game.js b/jsb/jsb-game.js index 25e8ed4f050..93d9b2a5ac4 100644 --- a/jsb/jsb-game.js +++ b/jsb/jsb-game.js @@ -97,8 +97,8 @@ cc.js.mixin(cc.game, { // Load game scripts var jsList = config[CONFIG_KEY.jsList]; if (jsList) { - cc.loader.loadJs(jsList, function (err) { - if (err) throw new Error(err); + cc.loader.load(jsList, function (err) { + if (err) throw new Error(JSON.stringify(err)); self._prepared = true; if (cb) cb(); }); diff --git a/moduleConfig.json b/moduleConfig.json index 58a975f07e8..212d1378e28 100644 --- a/moduleConfig.json +++ b/moduleConfig.json @@ -45,7 +45,6 @@ "cocos2d/core/platform/CCClass.js", "cocos2d/core/platform/CCCommon.js", "cocos2d/core/platform/CCSAXParser.js", - "cocos2d/core/platform/CCLoaders.js", "cocos2d/core/platform/CCConfig.js", "cocos2d/core/platform/miniFramework.js", "cocos2d/core/platform/CCMacro.js", diff --git a/predefine.js b/predefine.js index 01ee24c25b0..c7580fe65ba 100644 --- a/predefine.js +++ b/predefine.js @@ -56,7 +56,6 @@ require('./cocos2d/core/platform/CCInputManager'); require('./cocos2d/core/platform/CCInputExtension'); require('./cocos2d/core/event'); require('./cocos2d/core/platform/CCSys'); -require('./cocos2d/core/platform/CCLoader'); require('./cocos2d/core/load-pipeline'); require('./cocos2d/core/CCDirector'); require('./cocos2d/core/CCDirectorWebGL'); diff --git a/test/qunit/unit/test-loader.js b/test/qunit/unit/test-loader.js index 5b399e53927..d4c7f868b25 100644 --- a/test/qunit/unit/test-loader.js +++ b/test/qunit/unit/test-loader.js @@ -1,6 +1,6 @@ largeModule('Loader'); -var loader = cc._loader; +var loader = cc.loader; asyncTest('Load', function () { var image1 = assetDir + '/button.png';