var cc = cc || {}; cc._tmp = cc._tmp || {}; cc._LogInfos = {}; _p = window; _p = Object.prototype; delete window._p; cc.newElement = function (a) { return document.createElement(a) }; cc._addEventListener = function (a, b, c, d) { a.addEventListener(b, c, d) }; cc._isNodeJs = "undefined" !== typeof require && require("fs"); cc.each = function (a, b, c) { if (a) if (a instanceof Array) for (var d = 0, e = a.length; d < e && !1 !== b.call(c, a[d], d) ; d++); else for (d in a) if (!1 === b.call(c, a[d], d)) break }; cc.extend = function (a) { var b = 2 <= arguments.length ? Array.prototype.slice.call(arguments, 1) : []; cc.each(b, function (b) { for (var d in b) b.hasOwnProperty(d) && (a[d] = b[d]) }); return a }; cc.isFunction = function (a) { return "function" == typeof a }; cc.isNumber = function (a) { return "number" == typeof a || "[object Number]" == Object.prototype.toString.call(a) }; cc.isString = function (a) { return "string" == typeof a || "[object String]" == Object.prototype.toString.call(a) }; cc.isArray = function (a) { return "[object Array]" == Object.prototype.toString.call(a) }; cc.isUndefined = function (a) { return "undefined" == typeof a }; cc.isObject = function (a) { var b = typeof a; return "function" == b || a && "object" == b }; cc.isCrossOrigin = function (a) { if (!a) return cc.log("invalid URL"), !1; var b = a.indexOf("://"); if (-1 == b) return !1; b = a.indexOf("/", b + 3); return (-1 == b ? a : a.substring(0, b)) != location.origin }; cc.AsyncPool = function (a, b, c, d, e) { var f = this; f._srcObj = a; f._limit = b; f._pool = []; f._iterator = c; f._iteratorTarget = e; f._onEnd = d; f._onEndTarget = e; f._results = a instanceof Array ? [] : {}; f._isErr = !1; cc.each(a, function (a, b) { f._pool.push({ index: b, value: a }) }); f.size = f._pool.length; f.finishedSize = 0; f._workingSize = 0; f._limit = f._limit || f.size; f.onIterator = function (a, b) { f._iterator = a; f._iteratorTarget = b }; f.onEnd = function (a, b) { f._onEnd = a; f._onEndTarget = b }; f._handleItem = function () { var a = this; if (0 != a._pool.length && !(a._workingSize >= a._limit)) { var b = a._pool.shift(), c = b.value, d = b.index; a._workingSize++; a._iterator.call(a._iteratorTarget, c, d, function (b) { if (!a._isErr) if (a.finishedSize++, a._workingSize--, b) a._isErr = !0, a._onEnd && a._onEnd.call(a._onEndTarget, b); else { var c = Array.prototype.slice.call(arguments, 1); a._results[this.index] = c[0]; a.finishedSize == a.size ? a._onEnd && a._onEnd.call(a._onEndTarget, null, a._results) : a._handleItem() } }.bind(b), a) } }; f.flow = function () { if (0 == this._pool.length) this._onEnd && this._onEnd.call(this._onEndTarget, null, []); else for (var a = 0; a < this._limit; a++) this._handleItem() } }; cc.async = { series: function (a, b, c) { a = new cc.AsyncPool(a, 1, function (a, b, f) { a.call(c, f) }, b, c); a.flow(); return a }, parallel: function (a, b, c) { a = new cc.AsyncPool(a, 0, function (a, b, f) { a.call(c, f) }, b, c); a.flow(); return a }, waterfall: function (a, b, c) { var d = []; a = new cc.AsyncPool(a, 1, function (a, b, g) { d.push(function (a) { d = Array.prototype.slice.call(arguments, 1); g.apply(null, arguments) }); a.apply(c, d) }, function (a, d) { if (b) { if (a) return b.call(c, a); b.call(c, null, d[d.length - 1]) } }); a.flow(); return a }, map: function (a, b, c, d) { var e = b; "object" == typeof b && (c = b.cb, d = b.iteratorTarget, e = b.iterator); a = new cc.AsyncPool(a, 0, e, c, d); a.flow(); return a }, mapLimit: function (a, b, c, d, e) { a = new cc.AsyncPool(a, b, c, d, e); a.flow(); return a } }; cc.path = { join: function () { for (var a = arguments.length, b = "", c = 0; c < a; c++) b = (b + ("" == b ? "" : "/") + arguments[c]).replace(/(\/|\\\\)$/, ""); return b }, extname: function (a) { return (a = /(\.[^\.\/\?\\]*)(\?.*)?$/.exec(a)) ? a[1] : null }, mainFileName: function (a) { if (a) { var b = a.lastIndexOf("."); if (-1 !== b) return a.substring(0, b) } return a }, basename: function (a, b) { var c = a.indexOf("?"); 0 < c && (a = a.substring(0, c)); c = /(\/|\\\\)([^(\/|\\\\)]+)$/g.exec(a.replace(/(\/|\\\\)$/, "")); if (!c) return null; c = c[2]; return b && a.substring(a.length - b.length).toLowerCase() == b.toLowerCase() ? c.substring(0, c.length - b.length) : c }, dirname: function (a) { return a.replace(/((.*)(\/|\\|\\\\))?(.*?\..*$)?/, "$2") }, changeExtname: function (a, b) { b = b || ""; var c = a.indexOf("?"), d = ""; 0 < c && (d = a.substring(c), a = a.substring(0, c)); c = a.lastIndexOf("."); return 0 > c ? a + b + d : a.substring(0, c) + b + d }, changeBasename: function (a, b, c) { if (0 == b.indexOf(".")) return this.changeExtname(a, b); var d = a.indexOf("?"), e = ""; c = c ? this.extname(a) : ""; 0 < d && (e = a.substring(d), a = a.substring(0, d)); d = a.lastIndexOf("/"); return a.substring(0, 0 >= d ? 0 : d + 1) + b + c + e } }; cc.loader = { _jsCache: {}, _register: {}, _langPathCache: {}, _aliases: {}, resPath: "", audioPath: "", cache: {}, getXMLHttpRequest: function () { return window.XMLHttpRequest ? new window.XMLHttpRequest : new ActiveXObject("MSXML2.XMLHTTP") }, _getArgs4Js: function (a) { var b = a[0], c = a[1], d = a[2], e = ["", null, null]; if (1 === a.length) e[1] = b instanceof Array ? b : [b]; else if (2 === a.length) "function" == typeof c ? (e[1] = b instanceof Array ? b : [b], e[2] = c) : (e[0] = b || "", e[1] = c instanceof Array ? c : [c]); else if (3 === a.length) e[0] = b || "", e[1] = c instanceof Array ? c : [c], e[2] = d; else throw "arguments error to load js!"; return e }, loadJs: function (a, b, c) { var d = this, e = d._jsCache, f = d._getArgs4Js(arguments), g = f[0], h = f[1], f = f[2]; -1 < navigator.userAgent.indexOf("Trident/5") ? d._loadJs4Dependency(g, h, 0, f) : cc.async.map(h, function (a, b, c) { a = cc.path.join(g, a); if (e[a]) return c(null); d._createScript(a, !1, c) }, f) }, loadJsWithImg: function (a, b, c) { var d = this._loadJsImg(), e = this._getArgs4Js(arguments); this.loadJs(e[0], e[1], function (a) { if (a) throw a; d.parentNode.removeChild(d); if (e[2]) e[2]() }) }, _createScript: function (a, b, c) { var d = document, e = cc.newElement("script"); e.async = b; e.src = a; this._jsCache[a] = !0; cc._addEventListener(e, "load", function () { e.parentNode.removeChild(e); this.removeEventListener("load", arguments.callee, !1); c() }, !1); cc._addEventListener(e, "error", function () { e.parentNode.removeChild(e); c("Load " + a + " failed!") }, !1); d.body.appendChild(e) }, _loadJs4Dependency: function (a, b, c, d) { if (c >= b.length) d && d(); else { var e = this; e._createScript(cc.path.join(a, b[c]), !1, function (f) { if (f) return d(f); e._loadJs4Dependency(a, b, c + 1, d) }) } }, _loadJsImg: function () { var a = document, b = a.getElementById("cocos2d_loadJsImg"); if (!b) { b = cc.newElement("img"); cc._loadingImage && (b.src = cc._loadingImage); a = a.getElementById(cc.game.config.id); a.style.backgroundColor = "black"; a.parentNode.appendChild(b); var c = getComputedStyle ? getComputedStyle(a) : a.currentStyle; c || (c = { width: a.width, height: a.height }); b.style.left = a.offsetLeft + (parseFloat(c.width) - b.width) / 2 + "px"; b.style.top = a.offsetTop + (parseFloat(c.height) - b.height) / 2 + "px"; b.style.position = "absolute" } return b }, loadTxt: function (a, b) { if (cc._isNodeJs) require("fs").readFile(a, function (a, c) { a ? b(a) : b(null, c.toString()) }); else { var c = this.getXMLHttpRequest(), d = "load " + a + " failed!"; c.open("GET", a, !0); /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? (c.setRequestHeader("Accept-Charset", "utf-8"), c.onreadystatechange = function () { 4 == c.readyState && (200 == c.status ? b(null, c.responseText) : b(d)) }) : (c.overrideMimeType && c.overrideMimeType("text/plain; charset\x3dutf-8"), c.onload = function () { 4 == c.readyState && (200 == c.status ? b(null, c.responseText) : b(d)) }); c.send(null) } }, _loadTxtSync: function (a) { if (cc._isNodeJs) return require("fs").readFileSync(a).toString(); var b = this.getXMLHttpRequest(); b.open("GET", a, !1); /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? b.setRequestHeader("Accept-Charset", "utf-8") : b.overrideMimeType && b.overrideMimeType("text/plain; charset\x3dutf-8"); b.send(null); return 4 == !b.readyState || 200 != b.status ? null : b.responseText }, loadJson: function (a, b) { this.loadTxt(a, function (c, d) { try { c ? b(c) : b(null, JSON.parse(d)) } catch (e) { throw "load json [" + a + "] failed : " + e; } }) }, _checkIsImageURL: function (a) { return null != /(\.png)|(\.jpg)|(\.bmp)|(\.jpeg)|(\.gif)/.exec(a) }, loadImg: function (a, b, c) { var d = { isCrossOrigin: !0 }; void 0 !== c ? d.isCrossOrigin = null == b.isCrossOrigin ? d.isCrossOrigin : b.isCrossOrigin : void 0 !== b && (c = b); var e = new Image; d.isCrossOrigin && "file://" != location.origin && (e.crossOrigin = "Anonymous"); var f = function () { this.removeEventListener("load", f, !1); this.removeEventListener("error", g, !1); c && c(null, e) }, g = function () { this.removeEventListener("error", g, !1); "anonymous" == e.crossOrigin.toLowerCase() ? (d.isCrossOrigin = !1, cc.loader.loadImg(a, d, c)) : "function" == typeof c && c("load image failed") }; cc._addEventListener(e, "load", f); cc._addEventListener(e, "error", g); e.src = a; return e }, _loadResIterator: function (a, b, c) { var d = this, e = null, f = a.type; f ? (f = "." + f.toLowerCase(), e = a.src ? a.src : a.name + f) : (e = a, f = cc.path.extname(e)); if (b = d.cache[e]) return c(null, b); b = d._register[f.toLowerCase()]; if (!b) return cc.error("loader for [" + f + "] not exists!"), c(); f = b.getBasePath ? b.getBasePath() : d.resPath; f = d.getUrl(f, e); b.load(f, e, a, function (a, b) { a ? (cc.log(a), d.cache[e] = null, delete d.cache[e], c()) : (d.cache[e] = b, c(null, b)) }) }, getUrl: function (a, b) { var c = this._langPathCache, d = cc.path; if (void 0 !== a && void 0 === b) { b = a; var e = d.extname(b), e = e ? e.toLowerCase() : ""; a = (e = this._register[e]) ? e.getBasePath ? e.getBasePath() : this.resPath : this.resPath } b = cc.path.join(a || "", b); if (b.match(/[\/(\\\\)]lang[\/(\\\\)]/i)) { if (c[b]) return c[b]; d = d.extname(b) || ""; b = c[b] = b.substring(0, b.length - d.length) + "_" + cc.sys.language + d } return b }, load: function (a, b, c) { var d = this, e = arguments.length; if (0 == e) throw "arguments error!"; 3 == e ? "function" == typeof b && (b = "function" == typeof c ? { trigger: b, cb: c } : { cb: b, cbTarget: c }) : 2 == e ? "function" == typeof b && (b = { cb: b }) : 1 == e && (b = {}); a instanceof Array || (a = [a]); e = new cc.AsyncPool(a, 0, function (a, c, e, k) { d._loadResIterator(a, c, function (a) { if (a) return e(a); var c = Array.prototype.slice.call(arguments, 1); b.trigger && b.trigger.call(b.triggerTarget, c[0], k.size, k.finishedSize); e(null, c[0]) }) }, b.cb, b.cbTarget); e.flow(); return e }, _handleAliases: function (a, b) { var c = this._aliases, d = [], e; for (e in a) { var f = a[e]; c[e] = f; d.push(f) } this.load(d, b) }, loadAliases: function (a, b) { var c = this, d = c.getRes(a); d ? c._handleAliases(d.filenames, b) : c.load(a, function (a, d) { c._handleAliases(d[0].filenames, b) }) }, register: function (a, b) { if (a && b) { if ("string" == typeof a) return this._register[a.trim().toLowerCase()] = b; for (var c = 0, d = a.length; c < d; c++) this._register["." + a[c].trim().toLowerCase()] = b } }, getRes: function (a) { return this.cache[a] || this.cache[this._aliases[a]] }, release: function (a) { var b = this.cache, c = this._aliases; delete b[a]; delete b[c[a]]; delete c[a] }, releaseAll: function () { var a = this.cache, b = this._aliases, c; for (c in a) delete a[c]; for (c in b) delete b[c] } }; cc.formatStr = function () { var a = arguments, b = a.length; if (1 > b) return ""; var c = a[0], d = !0; "object" == typeof c && (d = !1); for (var e = 1; e < b; ++e) { var f = a[e]; if (d) for (; ;) { var g = null; if ("number" == typeof f && (g = c.match(/(%d)|(%s)/))) { c = c.replace(/(%d)|(%s)/, f); break } c = (g = c.match(/%s/)) ? c.replace(/%s/, f) : c + (" " + f); break } else c += " " + f } return c }; (function () { var a = window, b, c; cc.isUndefined(document.hidden) ? cc.isUndefined(document.mozHidden) ? cc.isUndefined(document.msHidden) ? cc.isUndefined(document.webkitHidden) || (b = "webkitHidden", c = "webkitvisibilitychange") : (b = "msHidden", c = "msvisibilitychange") : (b = "mozHidden", c = "mozvisibilitychange") : (b = "hidden", c = "visibilitychange"); var d = function () { cc.eventManager && cc.game._eventHide && cc.eventManager.dispatchEvent(cc.game._eventHide) }, e = function () { cc.eventManager && cc.game._eventShow && cc.eventManager.dispatchEvent(cc.game._eventShow); cc.game._intervalId && (window.cancelAnimationFrame(cc.game._intervalId), cc.game._runMainLoop()) }; b ? cc._addEventListener(document, c, function () { document[b] ? d() : e() }, !1) : (cc._addEventListener(a, "blur", d, !1), cc._addEventListener(a, "focus", e, !1)); -1 < navigator.userAgent.indexOf("MicroMessenger") && (a.onfocus = function () { e() }); "onpageshow" in window && "onpagehide" in window && (cc._addEventListener(a, "pagehide", d, !1), cc._addEventListener(a, "pageshow", e, !1)); c = a = null })(); cc.log = cc.warn = cc.error = cc.assert = function () { }; cc.create3DContext = function (a, b) { for (var c = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"], d = null, e = 0; e < c.length; ++e) { try { d = a.getContext(c[e], b) } catch (f) { } if (d) break } return d }; cc._initSys = function (a, b) { cc._RENDER_TYPE_CANVAS = 0; cc._RENDER_TYPE_WEBGL = 1; cc.sys = {}; var c = cc.sys; c.LANGUAGE_ENGLISH = "en"; c.LANGUAGE_CHINESE = "zh"; c.LANGUAGE_FRENCH = "fr"; c.LANGUAGE_ITALIAN = "it"; c.LANGUAGE_GERMAN = "de"; c.LANGUAGE_SPANISH = "es"; c.LANGUAGE_DUTCH = "du"; c.LANGUAGE_RUSSIAN = "ru"; c.LANGUAGE_KOREAN = "ko"; c.LANGUAGE_JAPANESE = "ja"; c.LANGUAGE_HUNGARIAN = "hu"; c.LANGUAGE_PORTUGUESE = "pt"; c.LANGUAGE_ARABIC = "ar"; c.LANGUAGE_NORWEGIAN = "no"; c.LANGUAGE_POLISH = "pl"; c.OS_WINDOWS = "Windows"; c.OS_IOS = "iOS"; c.OS_OSX = "OS X"; c.OS_UNIX = "UNIX"; c.OS_LINUX = "Linux"; c.OS_ANDROID = "Android"; c.OS_UNKNOWN = "Unknown"; c.WINDOWS = 0; c.LINUX = 1; c.MACOS = 2; c.ANDROID = 3; c.IPHONE = 4; c.IPAD = 5; c.BLACKBERRY = 6; c.NACL = 7; c.EMSCRIPTEN = 8; c.TIZEN = 9; c.WINRT = 10; c.WP8 = 11; c.MOBILE_BROWSER = 100; c.DESKTOP_BROWSER = 101; c.BROWSER_TYPE_WECHAT = "wechat"; c.BROWSER_TYPE_ANDROID = "androidbrowser"; c.BROWSER_TYPE_IE = "ie"; c.BROWSER_TYPE_QQ = "qqbrowser"; c.BROWSER_TYPE_MOBILE_QQ = "mqqbrowser"; c.BROWSER_TYPE_UC = "ucbrowser"; c.BROWSER_TYPE_360 = "360browser"; c.BROWSER_TYPE_BAIDU_APP = "baiduboxapp"; c.BROWSER_TYPE_BAIDU = "baidubrowser"; c.BROWSER_TYPE_MAXTHON = "maxthon"; c.BROWSER_TYPE_OPERA = "opera"; c.BROWSER_TYPE_OUPENG = "oupeng"; c.BROWSER_TYPE_MIUI = "miuibrowser"; c.BROWSER_TYPE_FIREFOX = "firefox"; c.BROWSER_TYPE_SAFARI = "safari"; c.BROWSER_TYPE_CHROME = "chrome"; c.BROWSER_TYPE_UNKNOWN = "unknown"; c.isNative = !1; var d = [c.BROWSER_TYPE_BAIDU, c.BROWSER_TYPE_OPERA, c.BROWSER_TYPE_FIREFOX, c.BROWSER_TYPE_CHROME, c.BROWSER_TYPE_SAFARI], e = [c.BROWSER_TYPE_BAIDU, c.BROWSER_TYPE_OPERA, c.BROWSER_TYPE_FIREFOX, c.BROWSER_TYPE_CHROME, c.BROWSER_TYPE_BAIDU_APP, c.BROWSER_TYPE_SAFARI, c.BROWSER_TYPE_UC, c.BROWSER_TYPE_QQ, c.BROWSER_TYPE_MOBILE_QQ, c.BROWSER_TYPE_IE], f = window, g = f.navigator, h = document.documentElement, k = g.userAgent.toLowerCase(); c.isMobile = -1 != k.indexOf("mobile") || -1 != k.indexOf("android"); c.platform = c.isMobile ? c.MOBILE_BROWSER : c.DESKTOP_BROWSER; var m = g.language, m = (m = m ? m : g.browserLanguage) ? m.split("-")[0] : c.LANGUAGE_ENGLISH; c.language = m; var m = c.BROWSER_TYPE_UNKNOWN, n = k.match(/micromessenger|qqbrowser|mqqbrowser|ucbrowser|360browser|baiduboxapp|baidubrowser|maxthon|trident|oupeng|opera|miuibrowser|firefox/i) || k.match(/chrome|safari/i); n && 0 < n.length && (m = n[0].toLowerCase(), "micromessenger" == m ? m = c.BROWSER_TYPE_WECHAT : "safari" === m && k.match(/android.*applewebkit/) ? m = c.BROWSER_TYPE_ANDROID : "trident" == m && (m = c.BROWSER_TYPE_IE)); c.browserType = m; c._supportMultipleAudio = -1 < e.indexOf(c.browserType); e = parseInt(a[b.renderMode]); m = cc._RENDER_TYPE_WEBGL; n = cc.newElement("Canvas"); cc._supportRender = !0; d = -1 == d.indexOf(c.browserType); if (1 === e || 0 === e && (c.isMobile || d) || "file://" == location.origin) m = cc._RENDER_TYPE_CANVAS; c._canUseCanvasNewBlendModes = function () { var a = document.createElement("canvas"); a.width = 1; a.height = 1; a = a.getContext("2d"); a.fillStyle = "#000"; a.fillRect(0, 0, 1, 1); a.globalCompositeOperation = "multiply"; var b = document.createElement("canvas"); b.width = 1; b.height = 1; var c = b.getContext("2d"); c.fillStyle = "#fff"; c.fillRect(0, 0, 1, 1); a.drawImage(b, 0, 0, 1, 1); return 0 === a.getImageData(0, 0, 1, 1).data[0] }; c._supportCanvasNewBlendModes = c._canUseCanvasNewBlendModes(); m != cc._RENDER_TYPE_WEBGL || f.WebGLRenderingContext && cc.create3DContext(n, { stencil: !0, preserveDrawingBuffer: !0 }) || (0 == e ? m = cc._RENDER_TYPE_CANVAS : cc._supportRender = !1); if (m == cc._RENDER_TYPE_CANVAS) try { n.getContext("2d") } catch (q) { cc._supportRender = !1 } cc._renderType = m; try { c._supportWebAudio = !!new (f.AudioContext || f.webkitAudioContext || f.mozAudioContext) } catch (r) { c._supportWebAudio = !1 } try { var s = c.localStorage = f.localStorage; s.setItem("storage", ""); s.removeItem("storage"); s = null } catch (t) { "SECURITY_ERR" !== t.name && "QuotaExceededError" !== t.name || cc.warn("Warning: localStorage isn't enabled. Please confirm browser cookie or privacy option"), c.localStorage = function () { } } s = c.capabilities = { canvas: !0 }; cc._renderType == cc._RENDER_TYPE_WEBGL && (s.opengl = !0); if (void 0 !== h.ontouchstart || g.msPointerEnabled) s.touches = !0; void 0 !== h.onmouseup && (s.mouse = !0); void 0 !== h.onkeyup && (s.keyboard = !0); if (f.DeviceMotionEvent || f.DeviceOrientationEvent) s.accelerometer = !0; f = k.match(/(iPad|iPhone|iPod)/i) ? !0 : !1; k = k.match(/android/i) || g.platform.match(/android/i) ? !0 : !1; h = c.OS_UNKNOWN; -1 != g.appVersion.indexOf("Win") ? h = c.OS_WINDOWS : f ? h = c.OS_IOS : -1 != g.appVersion.indexOf("Mac") ? h = c.OS_OSX : -1 != g.appVersion.indexOf("X11") ? h = c.OS_UNIX : k ? h = c.OS_ANDROID : -1 != g.appVersion.indexOf("Linux") && (h = c.OS_LINUX); c.os = h; c.garbageCollect = function () { }; c.dumpRoot = function () { }; c.restartVM = function () { }; c.dump = function () { var a; a = "" + ("isMobile : " + this.isMobile + "\r\n"); a += "language : " + this.language + "\r\n"; a += "browserType : " + this.browserType + "\r\n"; a += "capabilities : " + JSON.stringify(this.capabilities) + "\r\n"; a += "os : " + this.os + "\r\n"; a += "platform : " + this.platform + "\r\n"; cc.log(a) } }; cc.ORIENTATION_PORTRAIT = 0; cc.ORIENTATION_PORTRAIT_UPSIDE_DOWN = 1; cc.ORIENTATION_LANDSCAPE_LEFT = 2; cc.ORIENTATION_LANDSCAPE_RIGHT = 3; cc._drawingUtil = null; cc._renderContext = null; cc._canvas = null; cc._gameDiv = null; cc._rendererInitialized = !1; cc._setupCalled = !1; cc._setup = function (a, b, c) { if (!cc._setupCalled) { cc._setupCalled = !0; var d = window, e = new Date, f = 1E3 / cc.game.config[cc.game.CONFIG_KEY.frameRate], g = function (a) { var b = (new Date).getTime(), c = Math.max(0, f - (b - e)), d = window.setTimeout(function () { a() }, c); e = b + c; return d }, h = function (a) { clearTimeout(a) }; cc.sys.os === cc.sys.OS_IOS && cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT ? (d.requestAnimFrame = g, d.cancelAnimationFrame = h) : 60 != cc.game.config[cc.game.CONFIG_KEY.frameRate] ? (d.requestAnimFrame = g, d.cancelAnimationFrame = h) : (d.requestAnimFrame = d.requestAnimationFrame || d.webkitRequestAnimationFrame || d.mozRequestAnimationFrame || d.oRequestAnimationFrame || d.msRequestAnimationFrame || g, d.cancelAnimationFrame = window.cancelAnimationFrame || window.cancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.webkitCancelRequestAnimationFrame || window.msCancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.oCancelAnimationFrame || h); h = cc.$(a) || cc.$("#" + a); "CANVAS" == h.tagName ? (b = b || h.width, c = c || h.height, g = cc.container = cc.newElement("DIV"), a = cc._canvas = h, a.parentNode.insertBefore(g, a), a.appendTo(g), g.setAttribute("id", "Cocos2dGameContainer")) : ("DIV" != h.tagName && cc.log("Warning: target element is not a DIV or CANVAS"), b = b || h.clientWidth, c = c || h.clientHeight, g = cc.container = h, a = cc._canvas = cc.$(cc.newElement("CANVAS")), h.appendChild(a)); a.addClass("gameCanvas"); a.setAttribute("width", b || 480); a.setAttribute("height", c || 320); a.setAttribute("tabindex", 99); a.style.outline = "none"; h = g.style; h.width = (b || 480) + "px"; h.height = (c || 320) + "px"; h.margin = "0 auto"; h.position = "relative"; h.overflow = "hidden"; g.top = "100%"; cc._renderType == cc._RENDER_TYPE_WEBGL && (cc._renderContext = cc.webglContext = cc.create3DContext(a, { stencil: !0, preserveDrawingBuffer: !0, antialias: !cc.sys.isMobile, alpha: !1 })); cc._renderContext ? (d.gl = cc._renderContext, cc._drawingUtil = new cc.DrawingPrimitiveWebGL(cc._renderContext), cc._rendererInitialized = !0, cc.textureCache._initializingRenderer(), cc.shaderCache._init()) : (cc._renderContext = a.getContext("2d"), cc._mainRenderContextBackup = cc._renderContext, cc._renderContext.translate(0, a.height), cc._drawingUtil = cc.DrawingPrimitiveCanvas ? new cc.DrawingPrimitiveCanvas(cc._renderContext) : null); cc._gameDiv = g; cc.log(cc.ENGINE_VERSION); cc._setContextMenuEnable(!1); cc.sys.isMobile && (b = cc.newElement("style"), b.type = "text/css", document.body.appendChild(b), b.textContent = "body,canvas,div{ -moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;-khtml-user-select: none;-webkit-tap-highlight-color:rgba(0,0,0,0);}"); cc.view = cc.EGLView._getInstance(); cc.inputManager.registerSystemEvent(cc._canvas); cc.director = cc.Director._getInstance(); cc.director.setOpenGLView && cc.director.setOpenGLView(cc.view); cc.winSize = cc.director.getWinSize(); cc.saxParser = new cc.SAXParser; cc.plistParser = new cc.PlistParser } }; cc._checkWebGLRenderMode = function () { if (cc._renderType !== cc._RENDER_TYPE_WEBGL) throw "This feature supports WebGL render mode only."; }; cc._isContextMenuEnable = !1; cc._setContextMenuEnable = function (a) { cc._isContextMenuEnable = a; cc._canvas.oncontextmenu = function () { if (!cc._isContextMenuEnable) return !1 } }; cc.game = { DEBUG_MODE_NONE: 0, DEBUG_MODE_INFO: 1, DEBUG_MODE_WARN: 2, DEBUG_MODE_ERROR: 3, DEBUG_MODE_INFO_FOR_WEB_PAGE: 4, DEBUG_MODE_WARN_FOR_WEB_PAGE: 5, DEBUG_MODE_ERROR_FOR_WEB_PAGE: 6, EVENT_HIDE: "game_on_hide", EVENT_SHOW: "game_on_show", _eventHide: null, _eventShow: null, _onBeforeStartArr: [], CONFIG_KEY: { engineDir: "engineDir", dependencies: "dependencies", debugMode: "debugMode", showFPS: "showFPS", frameRate: "frameRate", id: "id", renderMode: "renderMode", jsList: "jsList", classReleaseMode: "classReleaseMode" }, _prepareCalled: !1, _prepared: !1, _paused: !0, _intervalId: null, config: null, onStart: null, onStop: null, setFrameRate: function (a) { this.config[this.CONFIG_KEY.frameRate] = a; this._intervalId && window.cancelAnimationFrame(this._intervalId); this._paused = !0; this._runMainLoop() }, _runMainLoop: function () { var a = this, b, c = cc.director; c.setDisplayStats(a.config[a.CONFIG_KEY.showFPS]); b = function () { a._paused || (c.mainLoop(), a._intervalId = window.requestAnimFrame(b)) }; window.requestAnimFrame(b); a._paused = !1 }, run: function (a) { var b = this, c = function () { a && (b.config[b.CONFIG_KEY.id] = a); b._prepareCalled || b.prepare(function () { b._prepared = !0 }); cc._supportRender && (b._checkPrepare = setInterval(function () { b._prepared && (cc._setup(b.config[b.CONFIG_KEY.id]), b._runMainLoop(), b._eventHide = b._eventHide || new cc.EventCustom(b.EVENT_HIDE), b._eventHide.setUserData(b), b._eventShow = b._eventShow || new cc.EventCustom(b.EVENT_SHOW), b._eventShow.setUserData(b), b.onStart(), clearInterval(b._checkPrepare)) }, 10)) }; document.body ? c() : cc._addEventListener(window, "load", function () { this.removeEventListener("load", arguments.callee, !1); c() }, !1) }, _initConfig: function () { var a = this.CONFIG_KEY, b = function (b) { b[a.engineDir] = b[a.engineDir] || "frameworks/cocos2d-html5"; null == b[a.debugMode] && (b[a.debugMode] = 0); b[a.frameRate] = b[a.frameRate] || 60; null == b[a.renderMode] && (b[a.renderMode] = 1); return b }; if (document.ccConfig) this.config = b(document.ccConfig); else try { for (var c = document.getElementsByTagName("script"), d = 0; d < c.length; d++) { var e = c[d].getAttribute("cocos"); if ("" == e || e) break } var f, g, h; if (d < c.length) { if (f = c[d].src) h = /(.*)\//.exec(f)[0], cc.loader.resPath = h, f = cc.path.join(h, "project.json"); g = cc.loader._loadTxtSync(f) } g || (g = cc.loader._loadTxtSync("project.json")); var k = JSON.parse(g); this.config = b(k || {}) } catch (m) { cc.log("Failed to read or parse project.json"), this.config = b({}) } cc._initSys(this.config, a) }, _jsAddedCache: {}, _getJsListOfModule: function (a, b, c) { var d = this._jsAddedCache; if (d[b]) return null; c = c || ""; var e = [], f = a[b]; if (!f) throw "can not find module [" + b + "]"; b = cc.path; for (var g = 0, h = f.length; g < h; g++) { var k = f[g]; if (!d[k]) { var m = b.extname(k); m ? ".js" == m.toLowerCase() && e.push(b.join(c, k)) : (m = this._getJsListOfModule(a, k, c)) && (e = e.concat(m)); d[k] = 1 } } return e }, prepare: function (a) { var b = this, c = b.config, d = b.CONFIG_KEY, e = c[d.engineDir], f = cc.loader; if (!cc._supportRender) throw "The renderer doesn't support the renderMode " + c[d.renderMode]; b._prepareCalled = !0; var g = c[d.jsList] || []; cc.Class ? f.loadJsWithImg("", g, function (c) { if (c) throw c; b._prepared = !0; a && a() }) : (d = cc.path.join(e, "moduleConfig.json"), f.loadJson(d, function (d, f) { if (d) throw d; var m = c.modules || [], n = f.module, q = []; cc._renderType == cc._RENDER_TYPE_WEBGL ? m.splice(0, 0, "shaders") : 0 > m.indexOf("core") && m.splice(0, 0, "core"); for (var r = 0, s = m.length; r < s; r++) { var t = b._getJsListOfModule(n, m[r], e); t && (q = q.concat(t)) } q = q.concat(g); cc.loader.loadJsWithImg(q, function (c) { if (c) throw c; b._prepared = !0; a && a() }) })) } }; cc.game._initConfig(); Function.prototype.bind = Function.prototype.bind || function (a) { if (!cc.isFunction(this)) throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); var b = Array.prototype.slice.call(arguments, 1), c = this, d = function () { }, e = function () { return c.apply(this instanceof d && a ? this : a, b.concat(Array.prototype.slice.call(arguments))) }; d.prototype = this.prototype; e.prototype = new d; return e }; cc._LogInfos = { ActionManager_addAction: "cc.ActionManager.addAction(): action must be non-null", ActionManager_removeAction: "cocos2d: removeAction: Target not found", ActionManager_removeActionByTag: "cc.ActionManager.removeActionByTag(): an invalid tag", ActionManager_removeActionByTag_2: "cc.ActionManager.removeActionByTag(): target must be non-null", ActionManager_getActionByTag: "cc.ActionManager.getActionByTag(): an invalid tag", ActionManager_getActionByTag_2: "cocos2d : getActionByTag(tag \x3d %s): Action not found", configuration_dumpInfo: "cocos2d: **** WARNING **** CC_ENABLE_PROFILERS is defined. Disable it when you finish profiling (from ccConfig.js)", configuration_loadConfigFile: "Expected 'data' dict, but not found. Config file: %s", configuration_loadConfigFile_2: "Please load the resource first : %s", Director_resume: "cocos2d: Director: Error in gettimeofday", Director_setProjection: "cocos2d: Director: unrecognized projection", Director_popToSceneStackLevel: "cocos2d: Director: unrecognized projection", Director_popToSceneStackLevel_2: "cocos2d: Director: Error in gettimeofday", Director_popScene: "running scene should not null", Director_pushScene: "the scene should not null", arrayVerifyType: "element type is wrong!", Scheduler_scheduleCallbackForTarget: "CCSheduler#scheduleCallback. Callback already scheduled. Updating interval from:%s to %s", Scheduler_scheduleCallbackForTarget_2: "cc.scheduler.scheduleCallbackForTarget(): callback_fn should be non-null.", Scheduler_scheduleCallbackForTarget_3: "cc.scheduler.scheduleCallbackForTarget(): target should be non-null.", Scheduler_pauseTarget: "cc.Scheduler.pauseTarget():target should be non-null", Scheduler_resumeTarget: "cc.Scheduler.resumeTarget():target should be non-null", Scheduler_isTargetPaused: "cc.Scheduler.isTargetPaused():target should be non-null", Node_getZOrder: "getZOrder is deprecated. Please use getLocalZOrder instead.", Node_setZOrder: "setZOrder is deprecated. Please use setLocalZOrder instead.", Node_getRotation: "RotationX !\x3d RotationY. Don't know which one to return", Node_getScale: "ScaleX !\x3d ScaleY. Don't know which one to return", Node_addChild: "An Node can't be added as a child of itself.", Node_addChild_2: "child already added. It can't be added again", Node_addChild_3: "child must be non-null", Node_removeFromParentAndCleanup: "removeFromParentAndCleanup is deprecated. Use removeFromParent instead", Node_boundingBox: "boundingBox is deprecated. Use getBoundingBox instead", Node_removeChildByTag: "argument tag is an invalid tag", Node_removeChildByTag_2: "cocos2d: removeChildByTag(tag \x3d %s): child not found!", Node_removeAllChildrenWithCleanup: "removeAllChildrenWithCleanup is deprecated. Use removeAllChildren instead", Node_stopActionByTag: "cc.Node.stopActionBy(): argument tag an invalid tag", Node_getActionByTag: "cc.Node.getActionByTag(): argument tag is an invalid tag", Node_resumeSchedulerAndActions: "resumeSchedulerAndActions is deprecated, please use resume instead.", Node_pauseSchedulerAndActions: "pauseSchedulerAndActions is deprecated, please use pause instead.", Node__arrayMakeObjectsPerformSelector: "Unknown callback function", Node_reorderChild: "child must be non-null", Node_runAction: "cc.Node.runAction(): action must be non-null", Node_schedule: "callback function must be non-null", Node_schedule_2: "interval must be positive", Node_initWithTexture: "cocos2d: Could not initialize cc.AtlasNode. Invalid Texture.", AtlasNode_updateAtlasValues: "cc.AtlasNode.updateAtlasValues(): Shall be overridden in subclasses", AtlasNode_initWithTileFile: "", AtlasNode__initWithTexture: "cocos2d: Could not initialize cc.AtlasNode. Invalid Texture.", _EventListenerKeyboard_checkAvailable: "cc._EventListenerKeyboard.checkAvailable(): Invalid EventListenerKeyboard!", _EventListenerTouchOneByOne_checkAvailable: "cc._EventListenerTouchOneByOne.checkAvailable(): Invalid EventListenerTouchOneByOne!", _EventListenerTouchAllAtOnce_checkAvailable: "cc._EventListenerTouchAllAtOnce.checkAvailable(): Invalid EventListenerTouchAllAtOnce!", _EventListenerAcceleration_checkAvailable: "cc._EventListenerAcceleration.checkAvailable(): _onAccelerationEvent must be non-nil", EventListener_create: "Invalid parameter.", __getListenerID: "Don't call this method if the event is for touch.", eventManager__forceAddEventListener: "Invalid scene graph priority!", eventManager_addListener: "0 priority is forbidden for fixed priority since it's used for scene graph based priority.", eventManager_removeListeners: "Invalid listener type!", eventManager_setPriority: "Can't set fixed priority with scene graph based listener.", eventManager_addListener_2: "Invalid parameters.", eventManager_addListener_3: "listener must be a cc.EventListener object when adding a fixed priority listener", eventManager_addListener_4: "The listener has been registered, please don't register it again.", LayerMultiplex_initWithLayers: "parameters should not be ending with null in Javascript", LayerMultiplex_switchTo: "Invalid index in MultiplexLayer switchTo message", LayerMultiplex_switchToAndReleaseMe: "Invalid index in MultiplexLayer switchTo message", LayerMultiplex_addLayer: "cc.Layer.addLayer(): layer should be non-null", EGLView_setDesignResolutionSize: "Resolution not valid", EGLView_setDesignResolutionSize_2: "should set resolutionPolicy", inputManager_handleTouchesBegin: "The touches is more than MAX_TOUCHES, nUnusedIndex \x3d %s", swap: "cc.swap is being modified from original macro, please check usage", checkGLErrorDebug: "WebGL error %s", animationCache__addAnimationsWithDictionary: "cocos2d: cc.AnimationCache: No animations were found in provided dictionary.", animationCache__addAnimationsWithDictionary_2: "cc.AnimationCache. Invalid animation format", animationCache_addAnimations: "cc.AnimationCache.addAnimations(): File could not be found", animationCache__parseVersion1: "cocos2d: cc.AnimationCache: Animation '%s' found in dictionary without any frames - cannot add to animation cache.", animationCache__parseVersion1_2: "cocos2d: cc.AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the cc.SpriteFrameCache. This frame will not be added to the animation.", animationCache__parseVersion1_3: "cocos2d: cc.AnimationCache: None of the frames for animation '%s' were found in the cc.SpriteFrameCache. Animation is not being added to the Animation Cache.", animationCache__parseVersion1_4: "cocos2d: cc.AnimationCache: An animation in your dictionary refers to a frame which is not in the cc.SpriteFrameCache. Some or all of the frames for the animation '%s' may be missing.", animationCache__parseVersion2: "cocos2d: CCAnimationCache: Animation '%s' found in dictionary without any frames - cannot add to animation cache.", animationCache__parseVersion2_2: "cocos2d: cc.AnimationCache: Animation '%s' refers to frame '%s' which is not currently in the cc.SpriteFrameCache. This frame will not be added to the animation.", animationCache_addAnimations_2: "cc.AnimationCache.addAnimations(): Invalid texture file name", Sprite_reorderChild: "cc.Sprite.reorderChild(): this child is not in children list", Sprite_ignoreAnchorPointForPosition: "cc.Sprite.ignoreAnchorPointForPosition(): it is invalid in cc.Sprite when using SpriteBatchNode", Sprite_setDisplayFrameWithAnimationName: "cc.Sprite.setDisplayFrameWithAnimationName(): Frame not found", Sprite_setDisplayFrameWithAnimationName_2: "cc.Sprite.setDisplayFrameWithAnimationName(): Invalid frame index", Sprite_setDisplayFrame: "setDisplayFrame is deprecated, please use setSpriteFrame instead.", Sprite__updateBlendFunc: "cc.Sprite._updateBlendFunc(): _updateBlendFunc doesn't work when the sprite is rendered using a cc.CCSpriteBatchNode", Sprite_initWithSpriteFrame: "cc.Sprite.initWithSpriteFrame(): spriteFrame should be non-null", Sprite_initWithSpriteFrameName: "cc.Sprite.initWithSpriteFrameName(): spriteFrameName should be non-null", Sprite_initWithSpriteFrameName1: " is null, please check.", Sprite_initWithFile: "cc.Sprite.initWithFile(): filename should be non-null", Sprite_setDisplayFrameWithAnimationName_3: "cc.Sprite.setDisplayFrameWithAnimationName(): animationName must be non-null", Sprite_reorderChild_2: "cc.Sprite.reorderChild(): child should be non-null", Sprite_addChild: "cc.Sprite.addChild(): cc.Sprite only supports cc.Sprites as children when using cc.SpriteBatchNode", Sprite_addChild_2: "cc.Sprite.addChild(): cc.Sprite only supports a sprite using same texture as children when using cc.SpriteBatchNode", Sprite_addChild_3: "cc.Sprite.addChild(): child should be non-null", Sprite_setTexture: "cc.Sprite.texture setter: Batched sprites should use the same texture as the batchnode", Sprite_updateQuadFromSprite: "cc.SpriteBatchNode.updateQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", Sprite_insertQuadFromSprite: "cc.SpriteBatchNode.insertQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", Sprite_addChild_4: "cc.SpriteBatchNode.addChild(): cc.SpriteBatchNode only supports cc.Sprites as children", Sprite_addChild_5: "cc.SpriteBatchNode.addChild(): cc.Sprite is not using the same texture", Sprite_initWithTexture: "Sprite.initWithTexture(): Argument must be non-nil ", Sprite_setSpriteFrame: "Invalid spriteFrameName", Sprite_setTexture_2: "Invalid argument: cc.Sprite.texture setter expects a CCTexture2D.", Sprite_updateQuadFromSprite_2: "cc.SpriteBatchNode.updateQuadFromSprite(): sprite should be non-null", Sprite_insertQuadFromSprite_2: "cc.SpriteBatchNode.insertQuadFromSprite(): sprite should be non-null", Sprite_addChild_6: "cc.SpriteBatchNode.addChild(): child should be non-null", SpriteBatchNode_addSpriteWithoutQuad: "cc.SpriteBatchNode.addQuadFromSprite(): SpriteBatchNode only supports cc.Sprites as children", SpriteBatchNode_increaseAtlasCapacity: "cocos2d: CCSpriteBatchNode: resizing TextureAtlas capacity from %s to %s.", SpriteBatchNode_increaseAtlasCapacity_2: "cocos2d: WARNING: Not enough memory to resize the atlas", SpriteBatchNode_reorderChild: "cc.SpriteBatchNode.addChild(): Child doesn't belong to Sprite", SpriteBatchNode_removeChild: "cc.SpriteBatchNode.addChild(): sprite batch node should contain the child", SpriteBatchNode_addSpriteWithoutQuad_2: "cc.SpriteBatchNode.addQuadFromSprite(): child should be non-null", SpriteBatchNode_reorderChild_2: "cc.SpriteBatchNode.addChild():child should be non-null", spriteFrameCache__getFrameConfig: "cocos2d: WARNING: originalWidth/Height not found on the cc.SpriteFrame. AnchorPoint won't work as expected. Regenrate the .plist", spriteFrameCache_addSpriteFrames: "cocos2d: WARNING: an alias with name %s already exists", spriteFrameCache__checkConflict: "cocos2d: WARNING: Sprite frame: %s has already been added by another source, please fix name conflit", spriteFrameCache_getSpriteFrame: "cocos2d: cc.SpriteFrameCahce: Frame %s not found", spriteFrameCache__getFrameConfig_2: "Please load the resource first : %s", spriteFrameCache_addSpriteFrames_2: "cc.SpriteFrameCache.addSpriteFrames(): plist should be non-null", spriteFrameCache_addSpriteFrames_3: "Argument must be non-nil", CCSpriteBatchNode_updateQuadFromSprite: "cc.SpriteBatchNode.updateQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", CCSpriteBatchNode_insertQuadFromSprite: "cc.SpriteBatchNode.insertQuadFromSprite(): cc.SpriteBatchNode only supports cc.Sprites as children", CCSpriteBatchNode_addChild: "cc.SpriteBatchNode.addChild(): cc.SpriteBatchNode only supports cc.Sprites as children", CCSpriteBatchNode_initWithTexture: "Sprite.initWithTexture(): Argument must be non-nil ", CCSpriteBatchNode_addChild_2: "cc.Sprite.addChild(): child should be non-null", CCSpriteBatchNode_setSpriteFrame: "Invalid spriteFrameName", CCSpriteBatchNode_setTexture: "Invalid argument: cc.Sprite texture setter expects a CCTexture2D.", CCSpriteBatchNode_updateQuadFromSprite_2: "cc.SpriteBatchNode.updateQuadFromSprite(): sprite should be non-null", CCSpriteBatchNode_insertQuadFromSprite_2: "cc.SpriteBatchNode.insertQuadFromSprite(): sprite should be non-null", CCSpriteBatchNode_addChild_3: "cc.SpriteBatchNode.addChild(): child should be non-null", TextureAtlas_initWithFile: "cocos2d: Could not open file: %s", TextureAtlas_insertQuad: "cc.TextureAtlas.insertQuad(): invalid totalQuads", TextureAtlas_initWithTexture: "cc.TextureAtlas.initWithTexture():texture should be non-null", TextureAtlas_updateQuad: "cc.TextureAtlas.updateQuad(): quad should be non-null", TextureAtlas_updateQuad_2: "cc.TextureAtlas.updateQuad(): Invalid index", TextureAtlas_insertQuad_2: "cc.TextureAtlas.insertQuad(): Invalid index", TextureAtlas_insertQuads: "cc.TextureAtlas.insertQuad(): Invalid index + amount", TextureAtlas_insertQuadFromIndex: "cc.TextureAtlas.insertQuadFromIndex(): Invalid newIndex", TextureAtlas_insertQuadFromIndex_2: "cc.TextureAtlas.insertQuadFromIndex(): Invalid fromIndex", TextureAtlas_removeQuadAtIndex: "cc.TextureAtlas.removeQuadAtIndex(): Invalid index", TextureAtlas_removeQuadsAtIndex: "cc.TextureAtlas.removeQuadsAtIndex(): index + amount out of bounds", TextureAtlas_moveQuadsFromIndex: "cc.TextureAtlas.moveQuadsFromIndex(): move is out of bounds", TextureAtlas_moveQuadsFromIndex_2: "cc.TextureAtlas.moveQuadsFromIndex(): Invalid newIndex", TextureAtlas_moveQuadsFromIndex_3: "cc.TextureAtlas.moveQuadsFromIndex(): Invalid oldIndex", textureCache_addPVRTCImage: "TextureCache:addPVRTCImage does not support on HTML5", textureCache_addETCImage: "TextureCache:addPVRTCImage does not support on HTML5", textureCache_textureForKey: "textureForKey is deprecated. Please use getTextureForKey instead.", textureCache_addPVRImage: "addPVRImage does not support on HTML5", textureCache_addUIImage: "cocos2d: Couldn't add UIImage in TextureCache", textureCache_dumpCachedTextureInfo: "cocos2d: '%s' id\x3d%s %s x %s", textureCache_dumpCachedTextureInfo_2: "cocos2d: '%s' id\x3d HTMLCanvasElement %s x %s", textureCache_dumpCachedTextureInfo_3: "cocos2d: TextureCache dumpDebugInfo: %s textures, HTMLCanvasElement for %s KB (%s MB)", textureCache_addUIImage_2: "cc.Texture.addUIImage(): image should be non-null", Texture2D_initWithETCFile: "initWithETCFile does not support on HTML5", Texture2D_initWithPVRFile: "initWithPVRFile does not support on HTML5", Texture2D_initWithPVRTCData: "initWithPVRTCData does not support on HTML5", Texture2D_addImage: "cc.Texture.addImage(): path should be non-null", Texture2D_initWithImage: "cocos2d: cc.Texture2D. Can't create Texture. UIImage is nil", Texture2D_initWithImage_2: "cocos2d: WARNING: Image (%s x %s) is bigger than the supported %s x %s", Texture2D_initWithString: "initWithString isn't supported on cocos2d-html5", Texture2D_initWithETCFile_2: "initWithETCFile does not support on HTML5", Texture2D_initWithPVRFile_2: "initWithPVRFile does not support on HTML5", Texture2D_initWithPVRTCData_2: "initWithPVRTCData does not support on HTML5", Texture2D_bitsPerPixelForFormat: "bitsPerPixelForFormat: %s, cannot give useful result, it's a illegal pixel format", Texture2D__initPremultipliedATextureWithImage: "cocos2d: cc.Texture2D: Using RGB565 texture since image has no alpha", Texture2D_addImage_2: "cc.Texture.addImage(): path should be non-null", Texture2D_initWithData: "NSInternalInconsistencyException", MissingFile: "Missing file: %s", radiansToDegress: "cc.radiansToDegress() should be called cc.radiansToDegrees()", RectWidth: "Rect width exceeds maximum margin: %s", RectHeight: "Rect height exceeds maximum margin: %s", EventManager__updateListeners: "If program goes here, there should be event in dispatch.", EventManager__updateListeners_2: "_inDispatch should be 1 here." }; cc._logToWebPage = function (a) { if (cc._canvas) { var b = cc._logList, c = document; if (!b) { var d = c.createElement("Div"), b = d.style; d.setAttribute("id", "logInfoDiv"); cc._canvas.parentNode.appendChild(d); d.setAttribute("width", "200"); d.setAttribute("height", cc._canvas.height); b.zIndex = "99999"; b.position = "absolute"; b.top = "0"; b.left = "0"; b = cc._logList = c.createElement("textarea"); c = b.style; b.setAttribute("rows", "20"); b.setAttribute("cols", "30"); b.setAttribute("disabled", !0); d.appendChild(b); c.backgroundColor = "transparent"; c.borderBottom = "1px solid #cccccc"; c.borderRightWidth = "0px"; c.borderLeftWidth = "0px"; c.borderTopWidth = "0px"; c.borderTopStyle = "none"; c.borderRightStyle = "none"; c.borderLeftStyle = "none"; c.padding = "0px"; c.margin = 0 } b.value = b.value + a + "\r\n"; b.scrollTop = b.scrollHeight } }; cc._formatString = function (a) { if (cc.isObject(a)) try { return JSON.stringify(a) } catch (b) { return "" } else return a }; cc._initDebugSetting = function (a) { var b = cc.game; if (a != b.DEBUG_MODE_NONE) { var c; a > b.DEBUG_MODE_ERROR ? (c = cc._logToWebPage.bind(cc), cc.error = function () { c("ERROR : " + cc.formatStr.apply(cc, arguments)) }, cc.assert = function (a, b) { if (!a && b) { for (var f = 2; f < arguments.length; f++) b = b.replace(/(%s)|(%d)/, cc._formatString(arguments[f])); c("Assert: " + b) } }, a != b.DEBUG_MODE_ERROR_FOR_WEB_PAGE && (cc.warn = function () { c("WARN : " + cc.formatStr.apply(cc, arguments)) }), a == b.DEBUG_MODE_INFO_FOR_WEB_PAGE && (cc.log = function () { c(cc.formatStr.apply(cc, arguments)) })) : console && (cc.error = function () { return console.error.apply(console, arguments) }, cc.assert = function (a, b) { if (!a && b) { for (var c = 2; c < arguments.length; c++) b = b.replace(/(%s)|(%d)/, cc._formatString(arguments[c])); throw b; } }, a != b.DEBUG_MODE_ERROR && (cc.warn = function () { return console.warn.apply(console, arguments) }), a == b.DEBUG_MODE_INFO && (cc.log = function () { return console.log.apply(console, arguments) })) } }; cc._initDebugSetting(cc.game.config[cc.game.CONFIG_KEY.debugMode]); cc.loader.loadBinary = function (a, b) { var c = this, d = this.getXMLHttpRequest(), e = "load " + a + " failed!"; d.open("GET", a, !0); /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ? (d.setRequestHeader("Accept-Charset", "x-user-defined"), d.onreadystatechange = function () { if (4 == d.readyState && 200 == d.status) { var a = cc._convertResponseBodyToText(d.responseBody); b(null, c._str2Uint8Array(a)) } else b(e) }) : (d.overrideMimeType && d.overrideMimeType("text/plain; charset\x3dx-user-defined"), d.onload = function () { 4 == d.readyState && 200 == d.status ? b(null, c._str2Uint8Array(d.responseText)) : b(e) }); d.send(null) }; cc.loader._str2Uint8Array = function (a) { if (!a) return null; for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) b[c] = a.charCodeAt(c) & 255; return b }; cc.loader.loadBinarySync = function (a) { var b = this.getXMLHttpRequest(), c = "load " + a + " failed!"; b.open("GET", a, !1); a = null; if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) { b.setRequestHeader("Accept-Charset", "x-user-defined"); b.send(null); if (200 != b.status) return cc.log(c), null; (b = cc._convertResponseBodyToText(b.responseBody)) && (a = this._str2Uint8Array(b)) } else { b.overrideMimeType && b.overrideMimeType("text/plain; charset\x3dx-user-defined"); b.send(null); if (200 != b.status) return cc.log(c), null; a = this._str2Uint8Array(b.responseText) } return a }; var Uint8Array = Uint8Array || Array; if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) { var IEBinaryToArray_ByteStr_Script = '\x3c!-- IEBinaryToArray_ByteStr --\x3e\r\nFunction IEBinaryToArray_ByteStr(Binary)\r\n IEBinaryToArray_ByteStr \x3d CStr(Binary)\r\nEnd Function\r\nFunction IEBinaryToArray_ByteStr_Last(Binary)\r\n Dim lastIndex\r\n lastIndex \x3d LenB(Binary)\r\n if lastIndex mod 2 Then\r\n IEBinaryToArray_ByteStr_Last \x3d Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n Else\r\n IEBinaryToArray_ByteStr_Last \x3d ""\r\n End If\r\nEnd Function\r\n', myVBScript = cc.newElement("script"); myVBScript.type = "text/vbscript"; myVBScript.textContent = IEBinaryToArray_ByteStr_Script; document.body.appendChild(myVBScript); cc._convertResponseBodyToText = function (a) { for (var b = {}, c = 0; 256 > c; c++) for (var d = 0; 256 > d; d++) b[String.fromCharCode(c + 256 * d)] = String.fromCharCode(c) + String.fromCharCode(d); c = IEBinaryToArray_ByteStr(a); a = IEBinaryToArray_ByteStr_Last(a); return c.replace(/[\s\S]/g, function (a) { return b[a] }) + a } }; cc = cc || {}; cc._loadingImage = "data:image/gif;base64,R0lGODlhEAAQALMNAD8/P7+/vyoqKlVVVX9/fxUVFUBAQGBgYMDAwC8vL5CQkP///wAAAP///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAANACwAAAAAEAAQAAAEO5DJSau9OOvNex0IMnDIsiCkiW6g6BmKYlBFkhSUEgQKlQCARG6nEBwOgl+QApMdCIRD7YZ5RjlGpCUCACH5BAUAAA0ALAAAAgAOAA4AAAQ6kLGB0JA4M7QW0hrngRllkYyhKAYqKUGguAws0ypLS8JxCLQDgXAIDg+FRKIA6v0SAECCBpXSkstMBAAh+QQFAAANACwAAAAACgAQAAAEOJDJORAac6K1kDSKYmydpASBUl0mqmRfaGTCcQgwcxDEke+9XO2WkxQSiUIuAQAkls0n7JgsWq8RACH5BAUAAA0ALAAAAAAOAA4AAAQ6kMlplDIzTxWC0oxwHALnDQgySAdBHNWFLAvCukc215JIZihVIZEogDIJACBxnCSXTcmwGK1ar1hrBAAh+QQFAAANACwAAAAAEAAKAAAEN5DJKc4RM+tDyNFTkSQF5xmKYmQJACTVpQSBwrpJNteZSGYoFWjIGCAQA2IGsVgglBOmEyoxIiMAIfkEBQAADQAsAgAAAA4ADgAABDmQSVZSKjPPBEDSGucJxyGA1XUQxAFma/tOpDlnhqIYN6MEAUXvF+zldrMBAjHoIRYLhBMqvSmZkggAIfkEBQAADQAsBgAAAAoAEAAABDeQyUmrnSWlYhMASfeFVbZdjHAcgnUQxOHCcqWylKEohqUEAYVkgEAMfkEJYrFA6HhKJsJCNFoiACH5BAUAAA0ALAIAAgAOAA4AAAQ3kMlJq704611SKloCAEk4lln3DQgyUMJxCBKyLAh1EMRR3wiDQmHY9SQslyIQUMRmlmVTIyRaIgA7"; cc._fpsImage = "data:image/png;base64,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\x3d"; cc._loaderImage = "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAlAAD/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjM4MDBEMDY2QTU1MjExRTFBQTAzQjEzMUNFNzMxRkQwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjM4MDBEMDY1QTU1MjExRTFBQTAzQjEzMUNFNzMxRkQwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU2RTk0OEM4OERCNDExRTE5NEUyRkE3M0M3QkE1NTlEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU2RTk0OEM5OERCNDExRTE5NEUyRkE3M0M3QkE1NTlEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQADQkJCQoJDQoKDRMMCwwTFhENDREW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\x3d"; var cc = cc || {}, ClassManager = { id: 0 | 998 * Math.random(), instanceId: 0 | 998 * Math.random(), compileSuper: function (a, b, c) { a = a.toString(); var d = a.indexOf("("), e = a.indexOf(")"), d = a.substring(d + 1, e), d = d.trim(), e = a.indexOf("{"), f = a.lastIndexOf("}"); for (a = a.substring(e + 1, f) ; -1 != a.indexOf("this._super") ;) { var e = a.indexOf("this._super"), f = a.indexOf("(", e), g = a.indexOf(")", f), g = a.substring(f + 1, g), g = (g = g.trim()) ? "," : ""; a = a.substring(0, e) + "ClassManager[" + c + "]." + b + ".call(this" + g + a.substring(f + 1) } return Function(d, a) }, getNewID: function () { return this.id++ }, getNewInstanceId: function () { return this.instanceId++ } }; ClassManager.compileSuper.ClassManager = ClassManager; (function () { var a = /\b_super\b/, b = cc.game.config[cc.game.CONFIG_KEY.classReleaseMode]; b && console.log("release Mode"); cc.Class = function () { }; cc.Class.extend = function (c) { function d() { this.__instanceId = ClassManager.getNewInstanceId(); this.ctor && this.ctor.apply(this, arguments) } var e = this.prototype, f = Object.create(e), g = ClassManager.getNewID(); ClassManager[g] = e; var h = { writable: !0, enumerable: !1, configurable: !0 }; f.__instanceId = null; d.id = g; h.value = g; Object.defineProperty(f, "__pid", h); d.prototype = f; h.value = d; Object.defineProperty(d.prototype, "constructor", h); this.__getters__ && (d.__getters__ = cc.clone(this.__getters__)); this.__setters__ && (d.__setters__ = cc.clone(this.__setters__)); for (var k = 0, m = arguments.length; k < m; ++k) { var n = arguments[k], q; for (q in n) { var r = "function" === typeof n[q], s = "function" === typeof e[q], t = a.test(n[q]); b && r && s && t ? (h.value = ClassManager.compileSuper(n[q], q, g), Object.defineProperty(f, q, h)) : r && s && t ? (h.value = function (a, b) { return function () { var c = this._super; this._super = e[a]; var d = b.apply(this, arguments); this._super = c; return d } }(q, n[q]), Object.defineProperty(f, q, h)) : r ? (h.value = n[q], Object.defineProperty(f, q, h)) : f[q] = n[q]; if (r) { var u, v; if (this.__getters__ && this.__getters__[q]) { var r = this.__getters__[q], w; for (w in this.__setters__) if (this.__setters__[w] == r) { v = w; break } cc.defineGetterSetter(f, r, n[q], n[v] ? n[v] : f[v], q, v) } if (this.__setters__ && this.__setters__[q]) { r = this.__setters__[q]; for (w in this.__getters__) if (this.__getters__[w] == r) { u = w; break } cc.defineGetterSetter(f, r, n[u] ? n[u] : f[u], n[q], u, q) } } } } d.extend = cc.Class.extend; d.implement = function (a) { for (var b in a) f[b] = a[b] }; return d } })(); cc.defineGetterSetter = function (a, b, c, d, e, f) { if (a.__defineGetter__) c && a.__defineGetter__(b, c), d && a.__defineSetter__(b, d); else if (Object.defineProperty) { var g = { enumerable: !1, configurable: !0 }; c && (g.get = c); d && (g.set = d); Object.defineProperty(a, b, g) } else throw Error("browser does not support getters"); if (!e && !f) for (var g = null != c, h = void 0 != d, k = Object.getOwnPropertyNames(a), m = 0; m < k.length; m++) { var n = k[m]; if ((a.__lookupGetter__ ? !a.__lookupGetter__(n) : !Object.getOwnPropertyDescriptor(a, n)) && "function" === typeof a[n]) { var q = a[n]; if (g && q === c && (e = n, !h || f)) break; if (h && q === d && (f = n, !g || e)) break } } a = a.constructor; e && (a.__getters__ || (a.__getters__ = {}), a.__getters__[e] = b); f && (a.__setters__ || (a.__setters__ = {}), a.__setters__[f] = b) }; cc.clone = function (a) { var b = a.constructor ? new a.constructor : {}, c; for (c in a) { var d = a[c]; b[c] = "object" != typeof d || !d || d instanceof cc.Node || d instanceof HTMLElement ? d : cc.clone(d) } return b }; cc = cc || {}; cc._tmp = cc._tmp || {}; cc.associateWithNative = function (a, b) { }; cc.KEY = { backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, pause: 19, capslock: 20, escape: 27, pageup: 33, pagedown: 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40, insert: 45, Delete: 46, 0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57, a: 65, b: 66, c: 67, d: 68, e: 69, f: 70, g: 71, h: 72, i: 73, j: 74, k: 75, l: 76, m: 77, n: 78, o: 79, p: 80, q: 81, r: 82, s: 83, t: 84, u: 85, v: 86, w: 87, x: 88, y: 89, z: 90, num0: 96, num1: 97, num2: 98, num3: 99, num4: 100, num5: 101, num6: 102, num7: 103, num8: 104, num9: 105, "*": 106, "+": 107, "-": 109, numdel: 110, "/": 111, f1: 112, f2: 113, f3: 114, f4: 115, f5: 116, f6: 117, f7: 118, f8: 119, f9: 120, f10: 121, f11: 122, f12: 123, numlock: 144, scrolllock: 145, semicolon: 186, ",": 186, equal: 187, "\x3d": 187, ";": 188, comma: 188, dash: 189, ".": 190, period: 190, forwardslash: 191, grave: 192, "[": 219, openbracket: 219, "]": 221, closebracket: 221, backslash: 220, quote: 222, space: 32 }; cc.FMT_JPG = 0; cc.FMT_PNG = 1; cc.FMT_TIFF = 2; cc.FMT_RAWDATA = 3; cc.FMT_WEBP = 4; cc.FMT_UNKNOWN = 5; cc.getImageFormatByData = function (a) { return 8 < a.length && 137 == a[0] && 80 == a[1] && 78 == a[2] && 71 == a[3] && 13 == a[4] && 10 == a[5] && 26 == a[6] && 10 == a[7] ? cc.FMT_PNG : 2 < a.length && (73 == a[0] && 73 == a[1] || 77 == a[0] && 77 == a[1] || 255 == a[0] && 216 == a[1]) ? cc.FMT_TIFF : cc.FMT_UNKNOWN }; cc.inherits = function (a, b) { function c() { } c.prototype = b.prototype; a.superClass_ = b.prototype; a.prototype = new c; a.prototype.constructor = a }; cc.base = function (a, b, c) { var d = arguments.callee.caller; if (d.superClass_) return ret = d.superClass_.constructor.apply(a, Array.prototype.slice.call(arguments, 1)); for (var e = Array.prototype.slice.call(arguments, 2), f = !1, g = a.constructor; g; g = g.superClass_ && g.superClass_.constructor) if (g.prototype[b] === d) f = !0; else if (f) return g.prototype[b].apply(a, e); if (a[b] === d) return a.constructor.prototype[b].apply(a, e); throw Error("cc.base called from a method of one name to a method of a different name"); }; cc.Point = function (a, b) { this.x = a || 0; this.y = b || 0 }; cc.p = function (a, b) { return void 0 == a ? { x: 0, y: 0 } : void 0 == b ? { x: a.x, y: a.y } : { x: a, y: b } }; cc.pointEqualToPoint = function (a, b) { return a && b && a.x === b.x && a.y === b.y }; cc.Size = function (a, b) { this.width = a || 0; this.height = b || 0 }; cc.size = function (a, b) { return void 0 === a ? { width: 0, height: 0 } : void 0 === b ? { width: a.width, height: a.height } : { width: a, height: b } }; cc.sizeEqualToSize = function (a, b) { return a && b && a.width == b.width && a.height == b.height }; cc.Rect = function (a, b, c, d) { this.x = a || 0; this.y = b || 0; this.width = c || 0; this.height = d || 0 }; cc.rect = function (a, b, c, d) { return void 0 === a ? { x: 0, y: 0, width: 0, height: 0 } : void 0 === b ? { x: a.x, y: a.y, width: a.width, height: a.height } : { x: a, y: b, width: c, height: d } }; cc.rectEqualToRect = function (a, b) { return a && b && a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height }; cc._rectEqualToZero = function (a) { return a && 0 === a.x && 0 === a.y && 0 === a.width && 0 === a.height }; cc.rectContainsRect = function (a, b) { return a && b ? !(a.x >= b.x || a.y >= b.y || a.x + a.width <= b.x + b.width || a.y + a.height <= b.y + b.height) : !1 }; cc.rectGetMaxX = function (a) { return a.x + a.width }; cc.rectGetMidX = function (a) { return a.x + a.width / 2 }; cc.rectGetMinX = function (a) { return a.x }; cc.rectGetMaxY = function (a) { return a.y + a.height }; cc.rectGetMidY = function (a) { return a.y + a.height / 2 }; cc.rectGetMinY = function (a) { return a.y }; cc.rectContainsPoint = function (a, b) { return b.x >= cc.rectGetMinX(a) && b.x <= cc.rectGetMaxX(a) && b.y >= cc.rectGetMinY(a) && b.y <= cc.rectGetMaxY(a) }; cc.rectIntersectsRect = function (a, b) { var c = a.y + a.height, d = b.x + b.width, e = b.y + b.height; return !(a.x + a.width < b.x || d < a.x || c < b.y || e < a.y) }; cc.rectOverlapsRect = function (a, b) { return !(a.x + a.width < b.x || b.x + b.width < a.x || a.y + a.height < b.y || b.y + b.height < a.y) }; cc.rectUnion = function (a, b) { var c = cc.rect(0, 0, 0, 0); c.x = Math.min(a.x, b.x); c.y = Math.min(a.y, b.y); c.width = Math.max(a.x + a.width, b.x + b.width) - c.x; c.height = Math.max(a.y + a.height, b.y + b.height) - c.y; return c }; cc.rectIntersection = function (a, b) { var c = cc.rect(Math.max(cc.rectGetMinX(a), cc.rectGetMinX(b)), Math.max(cc.rectGetMinY(a), cc.rectGetMinY(b)), 0, 0); c.width = Math.min(cc.rectGetMaxX(a), cc.rectGetMaxX(b)) - cc.rectGetMinX(c); c.height = Math.min(cc.rectGetMaxY(a), cc.rectGetMaxY(b)) - cc.rectGetMinY(c); return c }; cc.SAXParser = cc.Class.extend({ _parser: null, _isSupportDOMParser: null, ctor: function () { window.DOMParser ? (this._isSupportDOMParser = !0, this._parser = new DOMParser) : this._isSupportDOMParser = !1 }, parse: function (a) { return this._parseXML(a) }, _parseXML: function (a) { var b; this._isSupportDOMParser ? b = this._parser.parseFromString(a, "text/xml") : (b = new ActiveXObject("Microsoft.XMLDOM"), b.async = "false", b.loadXML(a)); return b } }); cc.PlistParser = cc.SAXParser.extend({ parse: function (a) { a = this._parseXML(a).documentElement; if ("plist" != a.tagName) throw "Not a plist file!"; for (var b = null, c = 0, d = a.childNodes.length; c < d && (b = a.childNodes[c], 1 != b.nodeType) ; c++); return this._parseNode(b) }, _parseNode: function (a) { var b = null, c = a.tagName; if ("dict" == c) b = this._parseDict(a); else if ("array" == c) b = this._parseArray(a); else if ("string" == c) if (1 == a.childNodes.length) b = a.firstChild.nodeValue; else for (b = "", c = 0; c < a.childNodes.length; c++) b += a.childNodes[c].nodeValue; else "false" == c ? b = !1 : "true" == c ? b = !0 : "real" == c ? b = parseFloat(a.firstChild.nodeValue) : "integer" == c && (b = parseInt(a.firstChild.nodeValue, 10)); return b }, _parseArray: function (a) { for (var b = [], c = 0, d = a.childNodes.length; c < d; c++) { var e = a.childNodes[c]; 1 == e.nodeType && b.push(this._parseNode(e)) } return b }, _parseDict: function (a) { for (var b = {}, c = null, d = 0, e = a.childNodes.length; d < e; d++) { var f = a.childNodes[d]; 1 == f.nodeType && ("key" == f.tagName ? c = f.firstChild.nodeValue : b[c] = this._parseNode(f)) } return b } }); cc._txtLoader = { load: function (a, b, c, d) { cc.loader.loadTxt(a, d) } }; cc.loader.register(["txt", "xml", "vsh", "fsh", "atlas"], cc._txtLoader); cc._jsonLoader = { load: function (a, b, c, d) { cc.loader.loadJson(a, d) } }; cc.loader.register(["json", "ExportJson"], cc._jsonLoader); cc._imgLoader = { load: function (a, b, c, d) { cc.loader.cache[b] = cc.loader.loadImg(a, function (a, c) { if (a) return d(a); cc.textureCache.handleLoadedTexture(b); d(null, c) }) } }; cc.loader.register("png jpg bmp jpeg gif ico".split(" "), cc._imgLoader); cc._serverImgLoader = { load: function (a, b, c, d) { cc.loader.cache[b] = cc.loader.loadImg(c.src, function (a, c) { if (a) return d(a); cc.textureCache.handleLoadedTexture(b); d(null, c) }) } }; cc.loader.register(["serverImg"], cc._serverImgLoader); cc._plistLoader = { load: function (a, b, c, d) { cc.loader.loadTxt(a, function (a, b) { if (a) return d(a); d(null, cc.plistParser.parse(b)) }) } }; cc.loader.register(["plist"], cc._plistLoader); cc._fontLoader = { TYPE: { ".eot": "embedded-opentype", ".ttf": "truetype", ".woff": "woff", ".svg": "svg" }, _loadFont: function (a, b, c) { var d = document, e = cc.path, f = this.TYPE, g = cc.newElement("style"); g.type = "text/css"; d.body.appendChild(g); var h = "@font-face { font-family:" + a + "; src:"; if (b instanceof Array) for (var k = 0, m = b.length; k < m; k++) c = e.extname(b[k]).toLowerCase(), h += "url('" + b[k] + "') format('" + f[c] + "')", h += k == m - 1 ? ";" : ","; else h += "url('" + b + "') format('" + f[c] + "');"; g.textContent += h + "};"; b = cc.newElement("div"); c = b.style; c.fontFamily = a; b.innerHTML = "."; c.position = "absolute"; c.left = "-100px"; c.top = "-100px"; d.body.appendChild(b) }, load: function (a, b, c, d) { b = c.type; a = c.name; b = c.srcs; cc.isString(c) ? (b = cc.path.extname(c), a = cc.path.basename(c, b), this._loadFont(a, c, b)) : this._loadFont(a, b); d(null, !0) } }; cc.loader.register(["font", "eot", "ttf", "woff", "svg"], cc._fontLoader); cc._binaryLoader = { load: function (a, b, c, d) { cc.loader.loadBinary(a, d) } }; window.CocosEngine = cc.ENGINE_VERSION = "Cocos2d-JS v3.0 Final"; cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL = 0; cc.DIRECTOR_STATS_POSITION = cc.p(0, 0); cc.DIRECTOR_FPS_INTERVAL = 0.5; cc.COCOSNODE_RENDER_SUBPIXEL = 1; cc.SPRITEBATCHNODE_RENDER_SUBPIXEL = 1; cc.OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA = 0; cc.TEXTURE_ATLAS_USE_TRIANGLE_STRIP = 0; cc.TEXTURE_ATLAS_USE_VAO = 0; cc.TEXTURE_NPOT_SUPPORT = 0; cc.RETINA_DISPLAY_SUPPORT = 1; cc.RETINA_DISPLAY_FILENAME_SUFFIX = "-hd"; cc.USE_LA88_LABELS = 1; cc.SPRITE_DEBUG_DRAW = 0; cc.SPRITEBATCHNODE_DEBUG_DRAW = 0; cc.LABELBMFONT_DEBUG_DRAW = 0; cc.LABELATLAS_DEBUG_DRAW = 0; cc.IS_RETINA_DISPLAY_SUPPORTED = 1; cc.DEFAULT_ENGINE = cc.ENGINE_VERSION + "-canvas"; cc.ENABLE_STACKABLE_ACTIONS = 1; cc.ENABLE_GL_STATE_CACHE = 1; cc.$ = function (a) { var b = this == cc ? document : this; if (a = a instanceof HTMLElement ? a : b.querySelector(a)) a.find = a.find || cc.$, a.hasClass = a.hasClass || function (a) { return this.className.match(RegExp("(\\s|^)" + a + "(\\s|$)")) }, a.addClass = a.addClass || function (a) { this.hasClass(a) || (this.className && (this.className += " "), this.className += a); return this }, a.removeClass = a.removeClass || function (a) { this.hasClass(a) && (this.className = this.className.replace(a, "")); return this }, a.remove = a.remove || function () { this.parentNode && this.parentNode.removeChild(this); return this }, a.appendTo = a.appendTo || function (a) { a.appendChild(this); return this }, a.prependTo = a.prependTo || function (a) { a.childNodes[0] ? a.insertBefore(this, a.childNodes[0]) : a.appendChild(this); return this }, a.transforms = a.transforms || function () { this.style[cc.$.trans] = cc.$.translate(this.position) + cc.$.rotate(this.rotation) + cc.$.scale(this.scale) + cc.$.skew(this.skew); return this }, a.position = a.position || { x: 0, y: 0 }, a.rotation = a.rotation || 0, a.scale = a.scale || { x: 1, y: 1 }, a.skew = a.skew || { x: 0, y: 0 }, a.translates = function (a, b) { this.position.x = a; this.position.y = b; this.transforms(); return this }, a.rotate = function (a) { this.rotation = a; this.transforms(); return this }, a.resize = function (a, b) { this.scale.x = a; this.scale.y = b; this.transforms(); return this }, a.setSkew = function (a, b) { this.skew.x = a; this.skew.y = b; this.transforms(); return this }; return a }; switch (cc.sys.browserType) { case cc.sys.BROWSER_TYPE_FIREFOX: cc.$.pfx = "Moz"; cc.$.hd = !0; break; case cc.sys.BROWSER_TYPE_CHROME: case cc.sys.BROWSER_TYPE_SAFARI: cc.$.pfx = "webkit"; cc.$.hd = !0; break; case cc.sys.BROWSER_TYPE_OPERA: cc.$.pfx = "O"; cc.$.hd = !1; break; case cc.sys.BROWSER_TYPE_IE: cc.$.pfx = "ms"; cc.$.hd = !1; break; default: cc.$.pfx = "webkit", cc.$.hd = !0 } cc.$.trans = cc.$.pfx + "Transform"; cc.$.translate = cc.$.hd ? function (a) { return "translate3d(" + a.x + "px, " + a.y + "px, 0) " } : function (a) { return "translate(" + a.x + "px, " + a.y + "px) " }; cc.$.rotate = cc.$.hd ? function (a) { return "rotateZ(" + a + "deg) " } : function (a) { return "rotate(" + a + "deg) " }; cc.$.scale = function (a) { return "scale(" + a.x + ", " + a.y + ") " }; cc.$.skew = function (a) { return "skewX(" + -a.x + "deg) skewY(" + a.y + "deg)" }; cc.$new = function (a) { return cc.$(document.createElement(a)) }; cc.$.findpos = function (a) { var b = 0, c = 0; do b += a.offsetLeft, c += a.offsetTop; while (a = a.offsetParent); return { x: b, y: c } }; cc.INVALID_INDEX = -1; cc.PI = Math.PI; cc.FLT_MAX = parseFloat("3.402823466e+38F"); cc.FLT_MIN = parseFloat("1.175494351e-38F"); cc.RAD = cc.PI / 180; cc.DEG = 180 / cc.PI; cc.UINT_MAX = 4294967295; cc.swap = function (a, b, c) { if (!cc.isObject(c) || cc.isUndefined(c.x) || cc.isUndefined(c.y)) cc.log(cc._LogInfos.swap); else { var d = c[a]; c[a] = c[b]; c[b] = d } }; cc.lerp = function (a, b, c) { return a + (b - a) * c }; cc.rand = function () { return 16777215 * Math.random() }; cc.randomMinus1To1 = function () { return 2 * (Math.random() - 0.5) }; cc.random0To1 = Math.random; cc.degreesToRadians = function (a) { return a * cc.RAD }; cc.radiansToDegrees = function (a) { return a * cc.DEG }; cc.radiansToDegress = function (a) { cc.log(cc._LogInfos.radiansToDegress); return a * cc.DEG }; cc.REPEAT_FOREVER = Number.MAX_VALUE - 1; cc.BLEND_SRC = cc.OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA ? 1 : 770; cc.BLEND_DST = 771; cc.nodeDrawSetup = function (a) { a._shaderProgram && (a._shaderProgram.use(), a._shaderProgram.setUniformForModelViewAndProjectionMatrixWithMat4()) }; cc.enableDefaultGLStates = function () { }; cc.disableDefaultGLStates = function () { }; cc.incrementGLDraws = function (a) { cc.g_NumberOfDraws += a }; cc.FLT_EPSILON = 1.192092896E-7; cc.contentScaleFactor = cc.IS_RETINA_DISPLAY_SUPPORTED ? function () { return cc.director.getContentScaleFactor() } : function () { return 1 }; cc.pointPointsToPixels = function (a) { var b = cc.contentScaleFactor(); return cc.p(a.x * b, a.y * b) }; cc.pointPixelsToPoints = function (a) { var b = cc.contentScaleFactor(); return cc.p(a.x / b, a.y / b) }; cc._pointPixelsToPointsOut = function (a, b) { var c = cc.contentScaleFactor(); b.x = a.x / c; b.y = a.y / c }; cc.sizePointsToPixels = function (a) { var b = cc.contentScaleFactor(); return cc.size(a.width * b, a.height * b) }; cc.sizePixelsToPoints = function (a) { var b = cc.contentScaleFactor(); return cc.size(a.width / b, a.height / b) }; cc._sizePixelsToPointsOut = function (a, b) { var c = cc.contentScaleFactor(); b.width = a.width / c; b.height = a.height / c }; cc.rectPixelsToPoints = cc.IS_RETINA_DISPLAY_SUPPORTED ? function (a) { var b = cc.contentScaleFactor(); return cc.rect(a.x / b, a.y / b, a.width / b, a.height / b) } : function (a) { return a }; cc.rectPointsToPixels = cc.IS_RETINA_DISPLAY_SUPPORTED ? function (a) { var b = cc.contentScaleFactor(); return cc.rect(a.x * b, a.y * b, a.width * b, a.height * b) } : function (a) { return a }; cc.ONE = 1; cc.ZERO = 0; cc.SRC_ALPHA = 770; cc.SRC_ALPHA_SATURATE = 776; cc.SRC_COLOR = 768; cc.DST_ALPHA = 772; cc.DST_COLOR = 774; cc.ONE_MINUS_SRC_ALPHA = 771; cc.ONE_MINUS_SRC_COLOR = 769; cc.ONE_MINUS_DST_ALPHA = 773; cc.ONE_MINUS_DST_COLOR = 775; cc.ONE_MINUS_CONSTANT_ALPHA = 32772; cc.ONE_MINUS_CONSTANT_COLOR = 32770; cc.checkGLErrorDebug = function () { if (cc.renderMode == cc._RENDER_TYPE_WEBGL) { var a = cc._renderContext.getError(); a && cc.log(cc._LogInfos.checkGLErrorDebug, a) } }; cc.DEVICE_ORIENTATION_PORTRAIT = 0; cc.DEVICE_ORIENTATION_LANDSCAPE_LEFT = 1; cc.DEVICE_ORIENTATION_PORTRAIT_UPSIDE_DOWN = 2; cc.DEVICE_ORIENTATION_LANDSCAPE_RIGHT = 3; cc.DEVICE_MAX_ORIENTATIONS = 2; cc.VERTEX_ATTRIB_FLAG_NONE = 0; cc.VERTEX_ATTRIB_FLAG_POSITION = 1; cc.VERTEX_ATTRIB_FLAG_COLOR = 2; cc.VERTEX_ATTRIB_FLAG_TEX_COORDS = 4; cc.VERTEX_ATTRIB_FLAG_POS_COLOR_TEX = cc.VERTEX_ATTRIB_FLAG_POSITION | cc.VERTEX_ATTRIB_FLAG_COLOR | cc.VERTEX_ATTRIB_FLAG_TEX_COORDS; cc.GL_ALL = 0; cc.VERTEX_ATTRIB_POSITION = 0; cc.VERTEX_ATTRIB_COLOR = 1; cc.VERTEX_ATTRIB_TEX_COORDS = 2; cc.VERTEX_ATTRIB_MAX = 3; cc.UNIFORM_PMATRIX = 0; cc.UNIFORM_MVMATRIX = 1; cc.UNIFORM_MVPMATRIX = 2; cc.UNIFORM_TIME = 3; cc.UNIFORM_SINTIME = 4; cc.UNIFORM_COSTIME = 5; cc.UNIFORM_RANDOM01 = 6; cc.UNIFORM_SAMPLER = 7; cc.UNIFORM_MAX = 8; cc.SHADER_POSITION_TEXTURECOLOR = "ShaderPositionTextureColor"; cc.SHADER_POSITION_TEXTURECOLORALPHATEST = "ShaderPositionTextureColorAlphaTest"; cc.SHADER_POSITION_COLOR = "ShaderPositionColor"; cc.SHADER_POSITION_TEXTURE = "ShaderPositionTexture"; cc.SHADER_POSITION_TEXTURE_UCOLOR = "ShaderPositionTexture_uColor"; cc.SHADER_POSITION_TEXTUREA8COLOR = "ShaderPositionTextureA8Color"; cc.SHADER_POSITION_UCOLOR = "ShaderPosition_uColor"; cc.SHADER_POSITION_LENGTHTEXTURECOLOR = "ShaderPositionLengthTextureColor"; cc.UNIFORM_PMATRIX_S = "CC_PMatrix"; cc.UNIFORM_MVMATRIX_S = "CC_MVMatrix"; cc.UNIFORM_MVPMATRIX_S = "CC_MVPMatrix"; cc.UNIFORM_TIME_S = "CC_Time"; cc.UNIFORM_SINTIME_S = "CC_SinTime"; cc.UNIFORM_COSTIME_S = "CC_CosTime"; cc.UNIFORM_RANDOM01_S = "CC_Random01"; cc.UNIFORM_SAMPLER_S = "CC_Texture0"; cc.UNIFORM_ALPHA_TEST_VALUE_S = "CC_alpha_value"; cc.ATTRIBUTE_NAME_COLOR = "a_color"; cc.ATTRIBUTE_NAME_POSITION = "a_position"; cc.ATTRIBUTE_NAME_TEX_COORD = "a_texCoord"; cc.ITEM_SIZE = 32; cc.CURRENT_ITEM = 3233828865; cc.ZOOM_ACTION_TAG = 3233828866; cc.NORMAL_TAG = 8801; cc.SELECTED_TAG = 8802; cc.DISABLE_TAG = 8803; cc.arrayVerifyType = function (a, b) { if (a && 0 < a.length) for (var c = 0; c < a.length; c++) if (!(a[c] instanceof b)) return cc.log("element type is wrong!"), !1; return !0 }; cc.arrayRemoveObject = function (a, b) { for (var c = 0, d = a.length; c < d; c++) if (a[c] == b) { a.splice(c, 1); break } }; cc.arrayRemoveArray = function (a, b) { for (var c = 0, d = b.length; c < d; c++) cc.arrayRemoveObject(a, b[c]) }; cc.arrayAppendObjectsToIndex = function (a, b, c) { a.splice.apply(a, [c, 0].concat(b)); return a }; cc.copyArray = function (a) { var b, c = a.length, d = Array(c); for (b = 0; b < c; b += 1) d[b] = a[b]; return d }; cc = cc || {}; cc._tmp = cc._tmp || {}; cc._tmp.WebGLColor = function () { cc.color = function (a, c, d, e, f, g) { return void 0 === a ? new cc.Color(0, 0, 0, 255, f, g) : cc.isString(a) ? (a = cc.hexToColor(a), new cc.Color(a.r, a.g, a.b, a.a)) : cc.isObject(a) ? new cc.Color(a.r, a.g, a.b, a.a, a.arrayBuffer, a.offset) : new cc.Color(a, c, d, e, f, g) }; cc.Color = function (a, c, d, e, f, g) { this._arrayBuffer = f || new ArrayBuffer(cc.Color.BYTES_PER_ELEMENT); this._offset = g || 0; f = this._arrayBuffer; g = this._offset; var h = Uint8Array.BYTES_PER_ELEMENT; this._rU8 = new Uint8Array(f, g, 1); this._gU8 = new Uint8Array(f, g + h, 1); this._bU8 = new Uint8Array(f, g + 2 * h, 1); this._aU8 = new Uint8Array(f, g + 3 * h, 1); this._rU8[0] = a || 0; this._gU8[0] = c || 0; this._bU8[0] = d || 0; this._aU8[0] = null == e ? 255 : e; void 0 === e && (this.a_undefined = !0) }; cc.Color.BYTES_PER_ELEMENT = 4; var a = cc.Color.prototype; a._getR = function () { return this._rU8[0] }; a._setR = function (a) { this._rU8[0] = 0 > a ? 0 : a }; a._getG = function () { return this._gU8[0] }; a._setG = function (a) { this._gU8[0] = 0 > a ? 0 : a }; a._getB = function () { return this._bU8[0] }; a._setB = function (a) { this._bU8[0] = 0 > a ? 0 : a }; a._getA = function () { return this._aU8[0] }; a._setA = function (a) { this._aU8[0] = 0 > a ? 0 : a }; cc.defineGetterSetter(a, "r", a._getR, a._setR); cc.defineGetterSetter(a, "g", a._getG, a._setG); cc.defineGetterSetter(a, "b", a._getB, a._setB); cc.defineGetterSetter(a, "a", a._getA, a._setA); cc.Vertex2F = function (a, c, d, e) { this._arrayBuffer = d || new ArrayBuffer(cc.Vertex2F.BYTES_PER_ELEMENT); this._offset = e || 0; this._xF32 = new Float32Array(this._arrayBuffer, this._offset, 1); this._yF32 = new Float32Array(this._arrayBuffer, this._offset + 4, 1); this._xF32[0] = a || 0; this._yF32[0] = c || 0 }; cc.Vertex2F.BYTES_PER_ELEMENT = 8; Object.defineProperties(cc.Vertex2F.prototype, { x: { get: function () { return this._xF32[0] }, set: function (a) { this._xF32[0] = a }, enumerable: !0 }, y: { get: function () { return this._yF32[0] }, set: function (a) { this._yF32[0] = a }, enumerable: !0 } }); cc.Vertex3F = function (a, c, d, e, f) { this._arrayBuffer = e || new ArrayBuffer(cc.Vertex3F.BYTES_PER_ELEMENT); this._offset = f || 0; e = this._arrayBuffer; f = this._offset; this._xF32 = new Float32Array(e, f, 1); this._xF32[0] = a || 0; this._yF32 = new Float32Array(e, f + Float32Array.BYTES_PER_ELEMENT, 1); this._yF32[0] = c || 0; this._zF32 = new Float32Array(e, f + 2 * Float32Array.BYTES_PER_ELEMENT, 1); this._zF32[0] = d || 0 }; cc.Vertex3F.BYTES_PER_ELEMENT = 12; Object.defineProperties(cc.Vertex3F.prototype, { x: { get: function () { return this._xF32[0] }, set: function (a) { this._xF32[0] = a }, enumerable: !0 }, y: { get: function () { return this._yF32[0] }, set: function (a) { this._yF32[0] = a }, enumerable: !0 }, z: { get: function () { return this._zF32[0] }, set: function (a) { this._zF32[0] = a }, enumerable: !0 } }); cc.Tex2F = function (a, c, d, e) { this._arrayBuffer = d || new ArrayBuffer(cc.Tex2F.BYTES_PER_ELEMENT); this._offset = e || 0; this._uF32 = new Float32Array(this._arrayBuffer, this._offset, 1); this._vF32 = new Float32Array(this._arrayBuffer, this._offset + 4, 1); this._uF32[0] = a || 0; this._vF32[0] = c || 0 }; cc.Tex2F.BYTES_PER_ELEMENT = 8; Object.defineProperties(cc.Tex2F.prototype, { u: { get: function () { return this._uF32[0] }, set: function (a) { this._uF32[0] = a }, enumerable: !0 }, v: { get: function () { return this._vF32[0] }, set: function (a) { this._vF32[0] = a }, enumerable: !0 } }); cc.Quad2 = function (a, c, d, e, f, g) { this._arrayBuffer = f || new ArrayBuffer(cc.Quad2.BYTES_PER_ELEMENT); this._offset = g || 0; f = this._arrayBuffer; g = cc.Vertex2F.BYTES_PER_ELEMENT; this._tl = a ? new cc.Vertex2F(a.x, a.y, f, 0) : new cc.Vertex2F(0, 0, f, 0); this._tr = c ? new cc.Vertex2F(c.x, c.y, f, g) : new cc.Vertex2F(0, 0, f, g); this._bl = d ? new cc.Vertex2F(d.x, d.y, f, 2 * g) : new cc.Vertex2F(0, 0, f, 2 * g); this._br = e ? new cc.Vertex2F(e.x, e.y, f, 3 * g) : new cc.Vertex2F(0, 0, f, 3 * g) }; cc.Quad2.BYTES_PER_ELEMENT = 32; cc.Quad3 = function (a, c, d, e) { this.bl = a || new cc.Vertex3F(0, 0, 0); this.br = c || new cc.Vertex3F(0, 0, 0); this.tl = d || new cc.Vertex3F(0, 0, 0); this.tr = e || new cc.Vertex3F(0, 0, 0) }; Object.defineProperties(cc.Quad2.prototype, { tl: { get: function () { return this._tl }, set: function (a) { this._tl.x = a.x; this._tl.y = a.y }, enumerable: !0 }, tr: { get: function () { return this._tr }, set: function (a) { this._tr.x = a.x; this._tr.y = a.y }, enumerable: !0 }, bl: { get: function () { return this._bl }, set: function (a) { this._bl.x = a.x; this._bl.y = a.y }, enumerable: !0 }, br: { get: function () { return this._br }, set: function (a) { this._br.x = a.x; this._br.y = a.y }, enumerable: !0 } }); cc.V3F_C4B_T2F = function (a, c, d, e, f) { this._arrayBuffer = e || new ArrayBuffer(cc.V3F_C4B_T2F.BYTES_PER_ELEMENT); this._offset = f || 0; e = this._arrayBuffer; f = this._offset; var g = cc.Vertex3F.BYTES_PER_ELEMENT; this._vertices = a ? new cc.Vertex3F(a.x, a.y, a.z, e, f) : new cc.Vertex3F(0, 0, 0, e, f); this._colors = c ? cc.color(c.r, c.g, c.b, c.a, e, f + g) : cc.color(0, 0, 0, 0, e, f + g); this._texCoords = d ? new cc.Tex2F(d.u, d.v, e, f + g + cc.Color.BYTES_PER_ELEMENT) : new cc.Tex2F(0, 0, e, f + g + cc.Color.BYTES_PER_ELEMENT) }; cc.V3F_C4B_T2F.BYTES_PER_ELEMENT = 24; Object.defineProperties(cc.V3F_C4B_T2F.prototype, { vertices: { get: function () { return this._vertices }, set: function (a) { var c = this._vertices; c.x = a.x; c.y = a.y; c.z = a.z }, enumerable: !0 }, colors: { get: function () { return this._colors }, set: function (a) { var c = this._colors; c.r = a.r; c.g = a.g; c.b = a.b; c.a = a.a }, enumerable: !0 }, texCoords: { get: function () { return this._texCoords }, set: function (a) { this._texCoords.u = a.u; this._texCoords.v = a.v }, enumerable: !0 } }); cc.V3F_C4B_T2F_Quad = function (a, c, d, e, f, g) { this._arrayBuffer = f || new ArrayBuffer(cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT); this._offset = g || 0; f = this._arrayBuffer; g = this._offset; var h = cc.V3F_C4B_T2F.BYTES_PER_ELEMENT; this._tl = a ? new cc.V3F_C4B_T2F(a.vertices, a.colors, a.texCoords, f, g) : new cc.V3F_C4B_T2F(null, null, null, f, g); this._bl = c ? new cc.V3F_C4B_T2F(c.vertices, c.colors, c.texCoords, f, g + h) : new cc.V3F_C4B_T2F(null, null, null, f, g + h); this._tr = d ? new cc.V3F_C4B_T2F(d.vertices, d.colors, d.texCoords, f, g + 2 * h) : new cc.V3F_C4B_T2F(null, null, null, f, g + 2 * h); this._br = e ? new cc.V3F_C4B_T2F(e.vertices, e.colors, e.texCoords, f, g + 3 * h) : new cc.V3F_C4B_T2F(null, null, null, f, g + 3 * h) }; cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT = 96; Object.defineProperties(cc.V3F_C4B_T2F_Quad.prototype, { tl: { get: function () { return this._tl }, set: function (a) { var c = this._tl; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, bl: { get: function () { return this._bl }, set: function (a) { var c = this._bl; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, tr: { get: function () { return this._tr }, set: function (a) { var c = this._tr; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, br: { get: function () { return this._br }, set: function (a) { var c = this._br; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, arrayBuffer: { get: function () { return this._arrayBuffer }, enumerable: !0 } }); cc.V3F_C4B_T2F_QuadZero = function () { return new cc.V3F_C4B_T2F_Quad }; cc.V3F_C4B_T2F_QuadCopy = function (a) { if (!a) return cc.V3F_C4B_T2F_QuadZero(); var c = a.tl, d = a.bl, e = a.tr; a = a.br; return { tl: { vertices: { x: c.vertices.x, y: c.vertices.y, z: c.vertices.z }, colors: { r: c.colors.r, g: c.colors.g, b: c.colors.b, a: c.colors.a }, texCoords: { u: c.texCoords.u, v: c.texCoords.v } }, bl: { vertices: { x: d.vertices.x, y: d.vertices.y, z: d.vertices.z }, colors: { r: d.colors.r, g: d.colors.g, b: d.colors.b, a: d.colors.a }, texCoords: { u: d.texCoords.u, v: d.texCoords.v } }, tr: { vertices: { x: e.vertices.x, y: e.vertices.y, z: e.vertices.z }, colors: { r: e.colors.r, g: e.colors.g, b: e.colors.b, a: e.colors.a }, texCoords: { u: e.texCoords.u, v: e.texCoords.v } }, br: { vertices: { x: a.vertices.x, y: a.vertices.y, z: a.vertices.z }, colors: { r: a.colors.r, g: a.colors.g, b: a.colors.b, a: a.colors.a }, texCoords: { u: a.texCoords.u, v: a.texCoords.v } } } }; cc.V3F_C4B_T2F_QuadsCopy = function (a) { if (!a) return []; for (var c = [], d = 0; d < a.length; d++) c.push(cc.V3F_C4B_T2F_QuadCopy(a[d])); return c }; cc.V2F_C4B_T2F = function (a, c, d, e, f) { this._arrayBuffer = e || new ArrayBuffer(cc.V2F_C4B_T2F.BYTES_PER_ELEMENT); this._offset = f || 0; e = this._arrayBuffer; f = this._offset; var g = cc.Vertex2F.BYTES_PER_ELEMENT; this._vertices = a ? new cc.Vertex2F(a.x, a.y, e, f) : new cc.Vertex2F(0, 0, e, f); this._colors = c ? cc.color(c.r, c.g, c.b, c.a, e, f + g) : cc.color(0, 0, 0, 0, e, f + g); this._texCoords = d ? new cc.Tex2F(d.u, d.v, e, f + g + cc.Color.BYTES_PER_ELEMENT) : new cc.Tex2F(0, 0, e, f + g + cc.Color.BYTES_PER_ELEMENT) }; cc.V2F_C4B_T2F.BYTES_PER_ELEMENT = 20; Object.defineProperties(cc.V2F_C4B_T2F.prototype, { vertices: { get: function () { return this._vertices }, set: function (a) { this._vertices.x = a.x; this._vertices.y = a.y }, enumerable: !0 }, colors: { get: function () { return this._colors }, set: function (a) { var c = this._colors; c.r = a.r; c.g = a.g; c.b = a.b; c.a = a.a }, enumerable: !0 }, texCoords: { get: function () { return this._texCoords }, set: function (a) { this._texCoords.u = a.u; this._texCoords.v = a.v }, enumerable: !0 } }); cc.V2F_C4B_T2F_Triangle = function (a, c, d, e, f) { this._arrayBuffer = e || new ArrayBuffer(cc.V2F_C4B_T2F_Triangle.BYTES_PER_ELEMENT); this._offset = f || 0; e = this._arrayBuffer; f = this._offset; var g = cc.V2F_C4B_T2F.BYTES_PER_ELEMENT; this._a = a ? new cc.V2F_C4B_T2F(a.vertices, a.colors, a.texCoords, e, f) : new cc.V2F_C4B_T2F(null, null, null, e, f); this._b = c ? new cc.V2F_C4B_T2F(c.vertices, c.colors, c.texCoords, e, f + g) : new cc.V2F_C4B_T2F(null, null, null, e, f + g); this._c = d ? new cc.V2F_C4B_T2F(d.vertices, d.colors, d.texCoords, e, f + 2 * g) : new cc.V2F_C4B_T2F(null, null, null, e, f + 2 * g) }; cc.V2F_C4B_T2F_Triangle.BYTES_PER_ELEMENT = 60; Object.defineProperties(cc.V2F_C4B_T2F_Triangle.prototype, { a: { get: function () { return this._a }, set: function (a) { var c = this._a; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, b: { get: function () { return this._b }, set: function (a) { var c = this._b; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 }, c: { get: function () { return this._c }, set: function (a) { var c = this._c; c.vertices = a.vertices; c.colors = a.colors; c.texCoords = a.texCoords }, enumerable: !0 } }) }; cc._tmp.PrototypeColor = function () { var a = cc.color; a._getWhite = function () { return a(255, 255, 255) }; a._getYellow = function () { return a(255, 255, 0) }; a._getBlue = function () { return a(0, 0, 255) }; a._getGreen = function () { return a(0, 255, 0) }; a._getRed = function () { return a(255, 0, 0) }; a._getMagenta = function () { return a(255, 0, 255) }; a._getBlack = function () { return a(0, 0, 0) }; a._getOrange = function () { return a(255, 127, 0) }; a._getGray = function () { return a(166, 166, 166) }; cc.defineGetterSetter(a, "WHITE", a._getWhite); cc.defineGetterSetter(a, "YELLOW", a._getYellow); cc.defineGetterSetter(a, "BLUE", a._getBlue); cc.defineGetterSetter(a, "GREEN", a._getGreen); cc.defineGetterSetter(a, "RED", a._getRed); cc.defineGetterSetter(a, "MAGENTA", a._getMagenta); cc.defineGetterSetter(a, "BLACK", a._getBlack); cc.defineGetterSetter(a, "ORANGE", a._getOrange); cc.defineGetterSetter(a, "GRAY", a._getGray); cc.BlendFunc._disable = function () { return new cc.BlendFunc(cc.ONE, cc.ZERO) }; cc.BlendFunc._alphaPremultiplied = function () { return new cc.BlendFunc(cc.ONE, cc.ONE_MINUS_SRC_ALPHA) }; cc.BlendFunc._alphaNonPremultiplied = function () { return new cc.BlendFunc(cc.SRC_ALPHA, cc.ONE_MINUS_SRC_ALPHA) }; cc.BlendFunc._additive = function () { return new cc.BlendFunc(cc.SRC_ALPHA, cc.ONE) }; cc.defineGetterSetter(cc.BlendFunc, "DISABLE", cc.BlendFunc._disable); cc.defineGetterSetter(cc.BlendFunc, "ALPHA_PREMULTIPLIED", cc.BlendFunc._alphaPremultiplied); cc.defineGetterSetter(cc.BlendFunc, "ALPHA_NON_PREMULTIPLIED", cc.BlendFunc._alphaNonPremultiplied); cc.defineGetterSetter(cc.BlendFunc, "ADDITIVE", cc.BlendFunc._additive) }; cc.Color = function (a, b, c, d) { this.r = a || 0; this.g = b || 0; this.b = c || 0; this.a = null == d ? 255 : d }; cc.color = function (a, b, c, d) { return void 0 === a ? { r: 0, g: 0, b: 0, a: 255 } : cc.isString(a) ? cc.hexToColor(a) : cc.isObject(a) ? { r: a.r, g: a.g, b: a.b, a: null == a.a ? 255 : a.a } : { r: a, g: b, b: c, a: null == d ? 255 : d } }; cc.colorEqual = function (a, b) { return a.r === b.r && a.g === b.g && a.b === b.b }; cc.Acceleration = function (a, b, c, d) { this.x = a || 0; this.y = b || 0; this.z = c || 0; this.timestamp = d || 0 }; cc.Vertex2F = function (a, b) { this.x = a || 0; this.y = b || 0 }; cc.vertex2 = function (a, b) { return new cc.Vertex2F(a, b) }; cc.Vertex3F = function (a, b, c) { this.x = a || 0; this.y = b || 0; this.z = c || 0 }; cc.vertex3 = function (a, b, c) { return new cc.Vertex3F(a, b, c) }; cc.Tex2F = function (a, b) { this.u = a || 0; this.v = b || 0 }; cc.tex2 = function (a, b) { return new cc.Tex2F(a, b) }; cc.BlendFunc = function (a, b) { this.src = a; this.dst = b }; cc.blendFuncDisable = function () { return new cc.BlendFunc(cc.ONE, cc.ZERO) }; cc.hexToColor = function (a) { a = a.replace(/^#?/, "0x"); a = parseInt(a); return cc.color(a >> 16, (a >> 8) % 256, a % 256) }; cc.colorToHex = function (a) { var b = a.r.toString(16), c = a.g.toString(16), d = a.b.toString(16); return "#" + (16 > a.r ? "0" + b : b) + (16 > a.g ? "0" + c : c) + (16 > a.b ? "0" + d : d) }; cc.TEXT_ALIGNMENT_LEFT = 0; cc.TEXT_ALIGNMENT_CENTER = 1; cc.TEXT_ALIGNMENT_RIGHT = 2; cc.VERTICAL_TEXT_ALIGNMENT_TOP = 0; cc.VERTICAL_TEXT_ALIGNMENT_CENTER = 1; cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM = 2; cc._Dictionary = cc.Class.extend({ _keyMapTb: null, _valueMapTb: null, __currId: 0, ctor: function () { this._keyMapTb = {}; this._valueMapTb = {}; this.__currId = 2 << (0 | 10 * Math.random()) }, __getKey: function () { this.__currId++; return "key_" + this.__currId }, setObject: function (a, b) { if (null != b) { var c = this.__getKey(); this._keyMapTb[c] = b; this._valueMapTb[c] = a } }, objectForKey: function (a) { if (null == a) return null; var b = this._keyMapTb, c; for (c in b) if (b[c] === a) return this._valueMapTb[c]; return null }, valueForKey: function (a) { return this.objectForKey(a) }, removeObjectForKey: function (a) { if (null != a) { var b = this._keyMapTb, c; for (c in b) if (b[c] === a) { delete this._valueMapTb[c]; delete b[c]; break } } }, removeObjectsForKeys: function (a) { if (null != a) for (var b = 0; b < a.length; b++) this.removeObjectForKey(a[b]) }, allKeys: function () { var a = [], b = this._keyMapTb, c; for (c in b) a.push(b[c]); return a }, removeAllObjects: function () { this._keyMapTb = {}; this._valueMapTb = {} }, count: function () { return this.allKeys().length } }); cc.FontDefinition = function () { this.fontName = "Arial"; this.fontSize = 12; this.textAlign = cc.TEXT_ALIGNMENT_CENTER; this.verticalAlign = cc.VERTICAL_TEXT_ALIGNMENT_TOP; this.fillStyle = cc.color(255, 255, 255, 255); this.boundingHeight = this.boundingWidth = 0; this.strokeEnabled = !1; this.strokeStyle = cc.color(255, 255, 255, 255); this.lineWidth = 1; this.shadowEnabled = !1; this.shadowBlur = this.shadowOffsetY = this.shadowOffsetX = 0; this.shadowOpacity = 1 }; cc._renderType === cc._RENDER_TYPE_WEBGL && (cc.assert(cc.isFunction(cc._tmp.WebGLColor), cc._LogInfos.MissingFile, "CCTypesWebGL.js"), cc._tmp.WebGLColor(), delete cc._tmp.WebGLColor); cc.assert(cc.isFunction(cc._tmp.PrototypeColor), cc._LogInfos.MissingFile, "CCTypesPropertyDefine.js"); cc._tmp.PrototypeColor(); delete cc._tmp.PrototypeColor; cc.Touches = []; cc.TouchesIntergerDict = {}; cc.DENSITYDPI_DEVICE = "device-dpi"; cc.DENSITYDPI_HIGH = "high-dpi"; cc.DENSITYDPI_MEDIUM = "medium-dpi"; cc.DENSITYDPI_LOW = "low-dpi"; cc.EGLView = cc.Class.extend({ _delegate: null, _frameSize: null, _designResolutionSize: null, _originalDesignResolutionSize: null, _viewPortRect: null, _visibleRect: null, _retinaEnabled: !1, _autoFullScreen: !0, _devicePixelRatio: 1, _viewName: "", _resizeCallback: null, _scaleX: 1, _originalScaleX: 1, _scaleY: 1, _originalScaleY: 1, _indexBitsUsed: 0, _maxTouches: 5, _resolutionPolicy: null, _rpExactFit: null, _rpShowAll: null, _rpNoBorder: null, _rpFixedHeight: null, _rpFixedWidth: null, _initialized: !1, _captured: !1, _wnd: null, _hDC: null, _hRC: null, _supportTouch: !1, _contentTranslateLeftTop: null, _frame: null, _frameZoomFactor: 1, __resizeWithBrowserSize: !1, _isAdjustViewPort: !0, _targetDensityDPI: null, ctor: function () { var a = document, b = cc.ContainerStrategy, c = cc.ContentStrategy; this._frame = cc.container.parentNode === a.body ? a.documentElement : cc.container.parentNode; this._frameSize = cc.size(0, 0); this._initFrameSize(); var a = cc._canvas.width, d = cc._canvas.height; this._designResolutionSize = cc.size(a, d); this._originalDesignResolutionSize = cc.size(a, d); this._viewPortRect = cc.rect(0, 0, a, d); this._visibleRect = cc.rect(0, 0, a, d); this._contentTranslateLeftTop = { left: 0, top: 0 }; this._viewName = "Cocos2dHTML5"; a = cc.sys; this.enableRetina(a.os == a.OS_IOS || a.os == a.OS_OSX); cc.visibleRect && cc.visibleRect.init(this._visibleRect); this._rpExactFit = new cc.ResolutionPolicy(b.EQUAL_TO_FRAME, c.EXACT_FIT); this._rpShowAll = new cc.ResolutionPolicy(b.PROPORTION_TO_FRAME, c.SHOW_ALL); this._rpNoBorder = new cc.ResolutionPolicy(b.EQUAL_TO_FRAME, c.NO_BORDER); this._rpFixedHeight = new cc.ResolutionPolicy(b.EQUAL_TO_FRAME, c.FIXED_HEIGHT); this._rpFixedWidth = new cc.ResolutionPolicy(b.EQUAL_TO_FRAME, c.FIXED_WIDTH); this._hDC = cc._canvas; this._hRC = cc._renderContext; this._targetDensityDPI = cc.DENSITYDPI_HIGH }, _resizeEvent: function () { var a = this._originalDesignResolutionSize.width, b = this._originalDesignResolutionSize.height; this._resizeCallback && (this._initFrameSize(), this._resizeCallback.call()); 0 < a && this.setDesignResolutionSize(a, b, this._resolutionPolicy) }, setTargetDensityDPI: function (a) { this._targetDensityDPI = a; this._setViewPortMeta() }, getTargetDensityDPI: function () { return this._targetDensityDPI }, resizeWithBrowserSize: function (a) { a ? this.__resizeWithBrowserSize || (this.__resizeWithBrowserSize = !0, a = this._resizeEvent.bind(this), cc._addEventListener(window, "resize", a, !1)) : this.__resizeWithBrowserSize && (this.__resizeWithBrowserSize = !0, a = this._resizeEvent.bind(this), window.removeEventListener("resize", a, !1)) }, setResizeCallback: function (a) { if (cc.isFunction(a) || null == a) this._resizeCallback = a }, _initFrameSize: function () { var a = this._frameSize, b = Math.min(window.screen.availWidth, window.screen.width) * window.devicePixelRatio, c = Math.min(window.screen.availHeight, window.screen.height) * window.devicePixelRatio; a.width = cc.sys.isMobile && this._frame.clientWidth >= 0.8 * b ? b / window.devicePixelRatio : this._frame.clientWidth; a.height = cc.sys.isMobile && this._frame.clientWidth >= 0.8 * c ? c / window.devicePixelRatio : this._frame.clientHeight }, _adjustSizeKeepCanvasSize: function () { var a = this._originalDesignResolutionSize.width, b = this._originalDesignResolutionSize.height; 0 < a && this.setDesignResolutionSize(a, b, this._resolutionPolicy) }, _setViewPortMeta: function (a, b) { if (this._isAdjustViewPort) { var c = document.getElementById("cocosMetaElement"); c && document.head.removeChild(c); var d, e = document.getElementsByName("viewport"), f, c = cc.newElement("meta"); c.id = "cocosMetaElement"; c.name = "viewport"; c.content = ""; d = cc.sys.isMobile && cc.sys.browserType == cc.sys.BROWSER_TYPE_FIREFOX ? { width: "device-width", "initial-scale": "1.0" } : { width: "device-width", "user-scalable": "no", "maximum-scale": "1.0", "initial-scale": "1.0" }; cc.sys.isMobile && (d["target-densitydpi"] = this._targetDensityDPI); f = e && 0 < e.length ? e[0].content : ""; for (var g in d) RegExp(g).test(f) || (f += "," + g + "\x3d" + d[g]); e || "" == f || (f = f.substr(1)); c.content = f; document.head.appendChild(c) } }, _setScaleXYForRenderTexture: function () { var a = cc.contentScaleFactor(); this._scaleY = this._scaleX = a }, _resetScale: function () { this._scaleX = this._originalScaleX; this._scaleY = this._originalScaleY }, _adjustSizeToBrowser: function () { }, initialize: function () { this._initialized = !0 }, adjustViewPort: function (a) { this._isAdjustViewPort = a }, enableRetina: function (a) { this._retinaEnabled = a ? !0 : !1 }, isRetinaEnabled: function () { return this._retinaEnabled }, enableAutoFullScreen: function (a) { this._autoFullScreen = a ? !0 : !1 }, isAutoFullScreenEnabled: function () { return this._autoFullScreen }, end: function () { }, isOpenGLReady: function () { return null != this._hDC && null != this._hRC }, setFrameZoomFactor: function (a) { this._frameZoomFactor = a; this.centerWindow(); cc.director.setProjection(cc.director.getProjection()) }, swapBuffers: function () { }, setIMEKeyboardState: function (a) { }, setContentTranslateLeftTop: function (a, b) { this._contentTranslateLeftTop = { left: a, top: b } }, getContentTranslateLeftTop: function () { return this._contentTranslateLeftTop }, getFrameSize: function () { return cc.size(this._frameSize.width, this._frameSize.height) }, setFrameSize: function (a, b) { this._frameSize.width = a; this._frameSize.height = b; this._frame.style.width = a + "px"; this._frame.style.height = b + "px"; this._resizeEvent(); cc.director.setProjection(cc.director.getProjection()) }, centerWindow: function () { }, getVisibleSize: function () { return cc.size(this._visibleRect.width, this._visibleRect.height) }, getVisibleOrigin: function () { return cc.p(this._visibleRect.x, this._visibleRect.y) }, canSetContentScaleFactor: function () { return !0 }, getResolutionPolicy: function () { return this._resolutionPolicy }, setResolutionPolicy: function (a) { if (a instanceof cc.ResolutionPolicy) this._resolutionPolicy = a; else { var b = cc.ResolutionPolicy; a === b.EXACT_FIT && (this._resolutionPolicy = this._rpExactFit); a === b.SHOW_ALL && (this._resolutionPolicy = this._rpShowAll); a === b.NO_BORDER && (this._resolutionPolicy = this._rpNoBorder); a === b.FIXED_HEIGHT && (this._resolutionPolicy = this._rpFixedHeight); a === b.FIXED_WIDTH && (this._resolutionPolicy = this._rpFixedWidth) } }, setDesignResolutionSize: function (a, b, c) { if (isNaN(a) || 0 == a || isNaN(b) || 0 == b) cc.log(cc._LogInfos.EGLView_setDesignResolutionSize); else { var d = this._resolutionPolicy; this.setResolutionPolicy(c); if (c = this._resolutionPolicy) { c.preApply(this); var e = this._frameSize.width, f = this._frameSize.height; cc.sys.isMobile && this._setViewPortMeta(this._frameSize.width, this._frameSize.height); this._initFrameSize(); if (d != this._resolutionPolicy || a != this._originalDesignResolutionSize.width || b != this._originalDesignResolutionSize.height || e != this._frameSize.width || f != this._frameSize.height) this._designResolutionSize = cc.size(a, b), this._originalDesignResolutionSize = cc.size(a, b), a = c.apply(this, this._designResolutionSize), a.scale && 2 == a.scale.length && (this._scaleX = a.scale[0], this._scaleY = a.scale[1]), a.viewport && (a = this._viewPortRect = a.viewport, b = this._visibleRect, b.width = cc._canvas.width / this._scaleX, b.height = cc._canvas.height / this._scaleY, b.x = -a.x / this._scaleX, b.y = -a.y / this._scaleY), a = cc.director, a._winSizeInPoints.width = this._designResolutionSize.width, a._winSizeInPoints.height = this._designResolutionSize.height, cc.winSize.width = a._winSizeInPoints.width, cc.winSize.height = a._winSizeInPoints.height, c.postApply(this), cc._renderType == cc._RENDER_TYPE_WEBGL && (a._createStatsLabel(), a.setGLDefaultValues()), this._originalScaleX = this._scaleX, this._originalScaleY = this._scaleY, cc.DOM && cc.DOM._resetEGLViewDiv(), cc.visibleRect && cc.visibleRect.init(this._visibleRect) } else cc.log(cc._LogInfos.EGLView_setDesignResolutionSize_2) } }, getDesignResolutionSize: function () { return cc.size(this._designResolutionSize.width, this._designResolutionSize.height) }, setViewPortInPoints: function (a, b, c, d) { var e = this._frameZoomFactor, f = this._scaleX, g = this._scaleY; cc._renderContext.viewport(a * f * e + this._viewPortRect.x * e, b * g * e + this._viewPortRect.y * e, c * f * e, d * g * e) }, setScissorInPoints: function (a, b, c, d) { var e = this._frameZoomFactor, f = this._scaleX, g = this._scaleY; cc._renderContext.scissor(a * f * e + this._viewPortRect.x * e, b * g * e + this._viewPortRect.y * e, c * f * e, d * g * e) }, isScissorEnabled: function () { var a = cc._renderContext; return a.isEnabled(a.SCISSOR_TEST) }, getScissorRect: function () { var a = cc._renderContext, b = this._scaleX, c = this._scaleY, a = a.getParameter(a.SCISSOR_BOX); return cc.rect((a[0] - this._viewPortRect.x) / b, (a[1] - this._viewPortRect.y) / c, a[2] / b, a[3] / c) }, setViewName: function (a) { null != a && 0 < a.length && (this._viewName = a) }, getViewName: function () { return this._viewName }, getViewPortRect: function () { return this._viewPortRect }, getScaleX: function () { return this._scaleX }, getScaleY: function () { return this._scaleY }, getDevicePixelRatio: function () { return this._devicePixelRatio }, convertToLocationInView: function (a, b, c) { return { x: this._devicePixelRatio * (a - c.left), y: this._devicePixelRatio * (c.top + c.height - b) } }, _convertMouseToLocationInView: function (a, b) { var c = this._viewPortRect; a.x = (this._devicePixelRatio * (a.x - b.left) - c.x) / this._scaleX; a.y = (this._devicePixelRatio * (b.top + b.height - a.y) - c.y) / this._scaleY }, _convertTouchesWithScale: function (a) { for (var b = this._viewPortRect, c = this._scaleX, d = this._scaleY, e, f, g, h = 0; h < a.length; h++) e = a[h], f = e._point, g = e._prevPoint, e._setPoint((f.x - b.x) / c, (f.y - b.y) / d), e._setPrevPoint((g.x - b.x) / c, (g.y - b.y) / d) } }); cc.EGLView._getInstance = function () { this._instance || (this._instance = this._instance || new cc.EGLView, this._instance.initialize()); return this._instance }; cc.ContainerStrategy = cc.Class.extend({ preApply: function (a) { }, apply: function (a, b) { }, postApply: function (a) { }, _setupContainer: function (a, b, c) { var d = a._frame; cc.view._autoFullScreen && cc.sys.isMobile && d == document.documentElement && cc.screen.autoFullScreen(d); var d = cc._canvas, e = cc.container; e.style.width = d.style.width = b + "px"; e.style.height = d.style.height = c + "px"; e = a._devicePixelRatio = 1; a.isRetinaEnabled() && (e = a._devicePixelRatio = window.devicePixelRatio || 1); d.width = b * e; d.height = c * e; a = document.body; var f; a && (f = a.style) && (f.paddingTop = f.paddingTop || "0px", f.paddingRight = f.paddingRight || "0px", f.paddingBottom = f.paddingBottom || "0px", f.paddingLeft = f.paddingLeft || "0px", f.borderTop = f.borderTop || "0px", f.borderRight = f.borderRight || "0px", f.borderBottom = f.borderBottom || "0px", f.borderLeft = f.borderLeft || "0px", f.marginTop = f.marginTop || "0px", f.marginRight = f.marginRight || "0px", f.marginBottom = f.marginBottom || "0px", f.marginLeft = f.marginLeft || "0px") }, _fixContainer: function () { document.body.insertBefore(cc.container, document.body.firstChild); var a = document.body.style; a.width = window.innerWidth + "px"; a.height = window.innerHeight + "px"; a.overflow = "hidden"; a = cc.container.style; a.position = "fixed"; a.left = a.top = "0px"; document.body.scrollTop = 0 } }); cc.ContentStrategy = cc.Class.extend({ _result: { scale: [1, 1], viewport: null }, _buildResult: function (a, b, c, d, e, f) { 2 > Math.abs(a - c) && (c = a); 2 > Math.abs(b - d) && (d = b); a = cc.rect(Math.round((a - c) / 2), Math.round((b - d) / 2), c, d); cc._renderType == cc._RENDER_TYPE_CANVAS && cc._renderContext.translate(a.x, a.y + d); this._result.scale = [e, f]; this._result.viewport = a; return this._result }, preApply: function (a) { }, apply: function (a, b) { return { scale: [1, 1] } }, postApply: function (a) { } }); (function () { var a = cc.ContainerStrategy.extend({ apply: function (a) { this._setupContainer(a, a._frameSize.width, a._frameSize.height) } }), b = cc.ContainerStrategy.extend({ apply: function (a, b) { var c = a._frameSize.width, d = a._frameSize.height, e = cc.container.style, n = b.width, q = b.height, r = c / n, s = d / q, t, u; r < s ? (t = c, u = q * r) : (t = n * s, u = d); n = Math.round((c - t) / 2); u = Math.round((d - u) / 2); this._setupContainer(a, c - 2 * n, d - 2 * u); e.marginLeft = n + "px"; e.marginRight = n + "px"; e.marginTop = u + "px"; e.marginBottom = u + "px" } }); a.extend({ preApply: function (a) { this._super(a); a._frame = document.documentElement }, apply: function (a) { this._super(a); this._fixContainer() } }); b.extend({ preApply: function (a) { this._super(a); a._frame = document.documentElement }, apply: function (a, b) { this._super(a, b); this._fixContainer() } }); var c = cc.ContainerStrategy.extend({ apply: function (a) { this._setupContainer(a, cc._canvas.width, cc._canvas.height) } }); cc.ContainerStrategy.EQUAL_TO_FRAME = new a; cc.ContainerStrategy.PROPORTION_TO_FRAME = new b; cc.ContainerStrategy.ORIGINAL_CONTAINER = new c; var a = cc.ContentStrategy.extend({ apply: function (a, b) { var c = cc._canvas.width, d = cc._canvas.height; return this._buildResult(c, d, c, d, c / b.width, d / b.height) } }), b = cc.ContentStrategy.extend({ apply: function (a, b) { var c = cc._canvas.width, d = cc._canvas.height, e = b.width, n = b.height, q = c / e, r = d / n, s = 0, t, u; q < r ? (s = q, t = c, u = n * s) : (s = r, t = e * s, u = d); return this._buildResult(c, d, t, u, s, s) } }), c = cc.ContentStrategy.extend({ apply: function (a, b) { var c = cc._canvas.width, d = cc._canvas.height, e = c / b.width, n = d / b.height, q; e < n ? q = n : q = e; return this._buildResult(c, d, c, d, q, q) } }), d = cc.ContentStrategy.extend({ apply: function (a, b) { var c = cc._canvas.width, d = cc._canvas.height, e = d / b.height; return this._buildResult(c, d, c, d, e, e) }, postApply: function (a) { cc.director._winSizeInPoints = a.getVisibleSize() } }), e = cc.ContentStrategy.extend({ apply: function (a, b) { var c = cc._canvas.width, d = cc._canvas.height, e = c / b.width; return this._buildResult(c, d, c, d, e, e) }, postApply: function (a) { cc.director._winSizeInPoints = a.getVisibleSize() } }); cc.ContentStrategy.EXACT_FIT = new a; cc.ContentStrategy.SHOW_ALL = new b; cc.ContentStrategy.NO_BORDER = new c; cc.ContentStrategy.FIXED_HEIGHT = new d; cc.ContentStrategy.FIXED_WIDTH = new e })(); cc.ResolutionPolicy = cc.Class.extend({ _containerStrategy: null, _contentStrategy: null, ctor: function (a, b) { this.setContainerStrategy(a); this.setContentStrategy(b) }, preApply: function (a) { this._containerStrategy.preApply(a); this._contentStrategy.preApply(a) }, apply: function (a, b) { this._containerStrategy.apply(a, b); return this._contentStrategy.apply(a, b) }, postApply: function (a) { this._containerStrategy.postApply(a); this._contentStrategy.postApply(a) }, setContainerStrategy: function (a) { a instanceof cc.ContainerStrategy && (this._containerStrategy = a) }, setContentStrategy: function (a) { a instanceof cc.ContentStrategy && (this._contentStrategy = a) } }); cc.ResolutionPolicy.EXACT_FIT = 0; cc.ResolutionPolicy.NO_BORDER = 1; cc.ResolutionPolicy.SHOW_ALL = 2; cc.ResolutionPolicy.FIXED_HEIGHT = 3; cc.ResolutionPolicy.FIXED_WIDTH = 4; cc.ResolutionPolicy.UNKNOWN = 5; cc.screen = { _supportsFullScreen: !1, _preOnFullScreenChange: null, _touchEvent: "", _fn: null, _fnMap: [["requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenEnabled", "fullscreenElement"], ["requestFullScreen", "exitFullScreen", "fullScreenchange", "fullScreenEnabled", "fullScreenElement"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitIsFullScreen", "webkitCurrentFullScreenElement"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozfullscreenchange", "mozFullScreen", "mozFullScreenElement"], ["msRequestFullscreen", "msExitFullscreen", "MSFullscreenChange", "msFullscreenEnabled", "msFullscreenElement"]], init: function () { this._fn = {}; var a, b, c = this._fnMap, d; a = 0; for (l = c.length; a < l; a++) if ((b = c[a]) && b[1] in document) { a = 0; for (d = b.length; a < d; a++) this._fn[c[0][a]] = b[a]; break } this._supportsFullScreen = void 0 != this._fn.requestFullscreen; this._touchEvent = "ontouchstart" in window ? "touchstart" : "mousedown" }, fullScreen: function () { return this._supportsFullScreen && document[this._fn.fullscreenEnabled] }, requestFullScreen: function (a, b) { if (this._supportsFullScreen) { a = a || document.documentElement; a[this._fn.requestFullscreen](); if (b) { var c = this._fn.fullscreenchange; this._preOnFullScreenChange && document.removeEventListener(c, this._preOnFullScreenChange); this._preOnFullScreenChange = b; cc._addEventListener(document, c, b, !1) } return a[this._fn.requestFullscreen]() } }, exitFullScreen: function () { return this._supportsFullScreen ? document[this._fn.exitFullscreen]() : !0 }, autoFullScreen: function (a, b) { function c() { e.requestFullScreen(a, b); d.removeEventListener(e._touchEvent, c) } a = a || document.body; var d = cc._canvas || a, e = this; this.requestFullScreen(a, b); cc._addEventListener(d, this._touchEvent, c) } }; cc.screen.init(); cc.visibleRect = { topLeft: cc.p(0, 0), topRight: cc.p(0, 0), top: cc.p(0, 0), bottomLeft: cc.p(0, 0), bottomRight: cc.p(0, 0), bottom: cc.p(0, 0), center: cc.p(0, 0), left: cc.p(0, 0), right: cc.p(0, 0), width: 0, height: 0, init: function (a) { var b = this.width = a.width, c = this.height = a.height, d = a.x; a = a.y; var e = a + c, f = d + b; this.topLeft.x = d; this.topLeft.y = e; this.topRight.x = f; this.topRight.y = e; this.top.x = d + b / 2; this.top.y = e; this.bottomLeft.x = d; this.bottomLeft.y = a; this.bottomRight.x = f; this.bottomRight.y = a; this.bottom.x = d + b / 2; this.bottom.y = a; this.center.x = d + b / 2; this.center.y = a + c / 2; this.left.x = d; this.left.y = a + c / 2; this.right.x = f; this.right.y = a + c / 2 } }; cc.UIInterfaceOrientationLandscapeLeft = -90; cc.UIInterfaceOrientationLandscapeRight = 90; cc.UIInterfaceOrientationPortraitUpsideDown = 180; cc.UIInterfaceOrientationPortrait = 0; cc.inputManager = { _mousePressed: !1, _isRegisterEvent: !1, _preTouchPoint: cc.p(0, 0), _prevMousePoint: cc.p(0, 0), _preTouchPool: [], _preTouchPoolPointer: 0, _touches: [], _touchesIntegerDict: {}, _indexBitsUsed: 0, _maxTouches: 5, _accelEnabled: !1, _accelInterval: 1 / 30, _accelMinus: 1, _accelCurTime: 0, _acceleration: null, _accelDeviceEvent: null, _getUnUsedIndex: function () { for (var a = this._indexBitsUsed, b = 0; b < this._maxTouches; b++) { if (!(a & 1)) return this._indexBitsUsed |= 1 << b, b; a >>= 1 } return -1 }, _removeUsedIndexBit: function (a) { 0 > a || a >= this._maxTouches || (a = ~(1 << a), this._indexBitsUsed &= a) }, _glView: null, handleTouchesBegin: function (a) { for (var b, c, d, e = [], f = this._touchesIntegerDict, g = 0, h = a.length; g < h; g++) if (b = a[g], d = b.getID(), c = f[d], null == c) { var k = this._getUnUsedIndex(); -1 == k ? cc.log(cc._LogInfos.inputManager_handleTouchesBegin, k) : (c = this._touches[k] = new cc.Touch(b._point.x, b._point.y, b.getID()), c._setPrevPoint(b._prevPoint), f[d] = k, e.push(c)) } 0 < e.length && (this._glView._convertTouchesWithScale(e), a = new cc.EventTouch(e), a._eventCode = cc.EventTouch.EventCode.BEGAN, cc.eventManager.dispatchEvent(a)) }, handleTouchesMove: function (a) { for (var b, c, d = [], e = this._touches, f = 0, g = a.length; f < g; f++) b = a[f], c = b.getID(), c = this._touchesIntegerDict[c], null != c && e[c] && (e[c]._setPoint(b._point), e[c]._setPrevPoint(b._prevPoint), d.push(e[c])); 0 < d.length && (this._glView._convertTouchesWithScale(d), a = new cc.EventTouch(d), a._eventCode = cc.EventTouch.EventCode.MOVED, cc.eventManager.dispatchEvent(a)) }, handleTouchesEnd: function (a) { a = this.getSetOfTouchesEndOrCancel(a); 0 < a.length && (this._glView._convertTouchesWithScale(a), a = new cc.EventTouch(a), a._eventCode = cc.EventTouch.EventCode.ENDED, cc.eventManager.dispatchEvent(a)) }, handleTouchesCancel: function (a) { a = this.getSetOfTouchesEndOrCancel(a); 0 < a.length && (this._glView._convertTouchesWithScale(a), a = new cc.EventTouch(a), a._eventCode = cc.EventTouch.EventCode.CANCELLED, cc.eventManager.dispatchEvent(a)) }, getSetOfTouchesEndOrCancel: function (a) { for (var b, c, d, e = [], f = this._touches, g = this._touchesIntegerDict, h = 0, k = a.length; h < k; h++) b = a[h], d = b.getID(), c = g[d], null != c && f[c] && (f[c]._setPoint(b._point), f[c]._setPrevPoint(b._prevPoint), e.push(f[c]), this._removeUsedIndexBit(c), delete g[d]); return e }, getHTMLElementPosition: function (a) { var b = document.documentElement, c = window, d = null, d = cc.isFunction(a.getBoundingClientRect) ? a.getBoundingClientRect() : a instanceof HTMLCanvasElement ? { left: 0, top: 0, width: a.width, height: a.height } : { left: 0, top: 0, width: parseInt(a.style.width), height: parseInt(a.style.height) }; return { left: d.left + c.pageXOffset - b.clientLeft, top: d.top + c.pageYOffset - b.clientTop, width: d.width, height: d.height } }, getPreTouch: function (a) { for (var b = null, c = this._preTouchPool, d = a.getID(), e = c.length - 1; 0 <= e; e--) if (c[e].getID() == d) { b = c[e]; break } b || (b = a); return b }, setPreTouch: function (a) { for (var b = !1, c = this._preTouchPool, d = a.getID(), e = c.length - 1; 0 <= e; e--) if (c[e].getID() == d) { c[e] = a; b = !0; break } b || (50 >= c.length ? c.push(a) : (c[this._preTouchPoolPointer] = a, this._preTouchPoolPointer = (this._preTouchPoolPointer + 1) % 50)) }, getTouchByXY: function (a, b, c) { var d = this._preTouchPoint; a = this._glView.convertToLocationInView(a, b, c); b = new cc.Touch(a.x, a.y); b._setPrevPoint(d.x, d.y); d.x = a.x; d.y = a.y; return b }, getMouseEvent: function (a, b, c) { var d = this._prevMousePoint; this._glView._convertMouseToLocationInView(a, b); b = new cc.EventMouse(c); b.setLocation(a.x, a.y); b._setPrevCursor(d.x, d.y); d.x = a.x; d.y = a.y; return b }, getPointByEvent: function (a, b) { if (null != a.pageX) return { x: a.pageX, y: a.pageY }; b.left -= document.body.scrollLeft; b.top -= document.body.scrollTop; return { x: a.clientX, y: a.clientY } }, getTouchesByEvent: function (a, b) { for (var c = [], d = this._glView, e, f, g = this._preTouchPoint, h = a.changedTouches.length, k = 0; k < h; k++) if (e = a.changedTouches[k]) { var m; m = cc.sys.BROWSER_TYPE_FIREFOX === cc.sys.browserType ? d.convertToLocationInView(e.pageX, e.pageY, b) : d.convertToLocationInView(e.clientX, e.clientY, b); null != e.identifier ? (e = new cc.Touch(m.x, m.y, e.identifier), f = this.getPreTouch(e).getLocation(), e._setPrevPoint(f.x, f.y), this.setPreTouch(e)) : (e = new cc.Touch(m.x, m.y), e._setPrevPoint(g.x, g.y)); g.x = m.x; g.y = m.y; c.push(e) } return c }, registerSystemEvent: function (a) { if (!this._isRegisterEvent) { var b = this._glView = cc.view, c = this, d = "touches" in cc.sys.capabilities; "mouse" in cc.sys.capabilities && (cc._addEventListener(window, "mousedown", function () { c._mousePressed = !0 }, !1), cc._addEventListener(window, "mouseup", function (b) { var e = c._mousePressed; c._mousePressed = !1; if (e) { var e = c.getHTMLElementPosition(a), f = c.getPointByEvent(b, e); cc.rectContainsPoint(new cc.Rect(e.left, e.top, e.width, e.height), f) || (d || c.handleTouchesEnd([c.getTouchByXY(f.x, f.y, e)]), e = c.getMouseEvent(f, e, cc.EventMouse.UP), e.setButton(b.button), cc.eventManager.dispatchEvent(e)) } }, !1), cc._addEventListener(a, "mousedown", function (b) { c._mousePressed = !0; var e = c.getHTMLElementPosition(a), f = c.getPointByEvent(b, e); d || c.handleTouchesBegin([c.getTouchByXY(f.x, f.y, e)]); e = c.getMouseEvent(f, e, cc.EventMouse.DOWN); e.setButton(b.button); cc.eventManager.dispatchEvent(e); b.stopPropagation(); b.preventDefault(); a.focus() }, !1), cc._addEventListener(a, "mouseup", function (b) { c._mousePressed = !1; var e = c.getHTMLElementPosition(a), f = c.getPointByEvent(b, e); d || c.handleTouchesEnd([c.getTouchByXY(f.x, f.y, e)]); e = c.getMouseEvent(f, e, cc.EventMouse.UP); e.setButton(b.button); cc.eventManager.dispatchEvent(e); b.stopPropagation(); b.preventDefault() }, !1), cc._addEventListener(a, "mousemove", function (b) { var e = c.getHTMLElementPosition(a), f = c.getPointByEvent(b, e); d || c.handleTouchesMove([c.getTouchByXY(f.x, f.y, e)]); e = c.getMouseEvent(f, e, cc.EventMouse.MOVE); c._mousePressed ? e.setButton(b.button) : e.setButton(null); cc.eventManager.dispatchEvent(e); b.stopPropagation(); b.preventDefault() }, !1), cc._addEventListener(a, "mousewheel", function (b) { var d = c.getHTMLElementPosition(a), e = c.getPointByEvent(b, d), d = c.getMouseEvent(e, d, cc.EventMouse.SCROLL); d.setButton(b.button); d.setScrollData(0, b.wheelDelta); cc.eventManager.dispatchEvent(d); b.stopPropagation(); b.preventDefault() }, !1), cc._addEventListener(a, "DOMMouseScroll", function (b) { var d = c.getHTMLElementPosition(a), e = c.getPointByEvent(b, d), d = c.getMouseEvent(e, d, cc.EventMouse.SCROLL); d.setButton(b.button); d.setScrollData(0, -120 * b.detail); cc.eventManager.dispatchEvent(d); b.stopPropagation(); b.preventDefault() }, !1)); if (window.navigator.msPointerEnabled) { var e = { MSPointerDown: c.handleTouchesBegin, MSPointerMove: c.handleTouchesMove, MSPointerUp: c.handleTouchesEnd, MSPointerCancel: c.handleTouchesCancel }, f; for (f in e) (function (b, d) { cc._addEventListener(a, b, function (b) { var e = c.getHTMLElementPosition(a); e.left -= document.documentElement.scrollLeft; e.top -= document.documentElement.scrollTop; d.call(c, [c.getTouchByXY(b.clientX, b.clientY, e)]); b.stopPropagation() }, !1) })(f, e[f]) } d && (cc._addEventListener(a, "touchstart", function (b) { if (b.changedTouches) { var d = c.getHTMLElementPosition(a); d.left -= document.body.scrollLeft; d.top -= document.body.scrollTop; c.handleTouchesBegin(c.getTouchesByEvent(b, d)); b.stopPropagation(); b.preventDefault(); a.focus() } }, !1), cc._addEventListener(a, "touchmove", function (b) { if (b.changedTouches) { var d = c.getHTMLElementPosition(a); d.left -= document.body.scrollLeft; d.top -= document.body.scrollTop; c.handleTouchesMove(c.getTouchesByEvent(b, d)); b.stopPropagation(); b.preventDefault() } }, !1), cc._addEventListener(a, "touchend", function (b) { if (b.changedTouches) { var d = c.getHTMLElementPosition(a); d.left -= document.body.scrollLeft; d.top -= document.body.scrollTop; c.handleTouchesEnd(c.getTouchesByEvent(b, d)); b.stopPropagation(); b.preventDefault() } }, !1), cc._addEventListener(a, "touchcancel", function (d) { if (d.changedTouches) { var e = c.getHTMLElementPosition(a); e.left -= document.body.scrollLeft; e.top -= document.body.scrollTop; b.handleTouchesCancel(c.getTouchesByEvent(d, e)); d.stopPropagation(); d.preventDefault() } }, !1)); this._registerKeyboardEvent(); this._registerAccelerometerEvent(); this._isRegisterEvent = !0 } }, _registerKeyboardEvent: function () { }, _registerAccelerometerEvent: function () { }, update: function (a) { this._accelCurTime > this._accelInterval && (this._accelCurTime -= this._accelInterval, cc.eventManager.dispatchEvent(new cc.EventAcceleration(this._acceleration))); this._accelCurTime += a } }; var _p = cc.inputManager; _p.setAccelerometerEnabled = function (a) { this._accelEnabled !== a && (this._accelEnabled = a, a = cc.director.getScheduler(), this._accelEnabled ? (this._accelCurTime = 0, a.scheduleUpdateForTarget(this)) : (this._accelCurTime = 0, a.unscheduleUpdateForTarget(this))) }; _p.setAccelerometerInterval = function (a) { this._accelInterval !== a && (this._accelInterval = a) }; _p._registerKeyboardEvent = function () { cc._addEventListener(cc._canvas, "keydown", function (a) { cc.eventManager.dispatchEvent(new cc.EventKeyboard(a.keyCode, !0)); a.stopPropagation(); a.preventDefault() }, !1); cc._addEventListener(cc._canvas, "keyup", function (a) { cc.eventManager.dispatchEvent(new cc.EventKeyboard(a.keyCode, !1)); a.stopPropagation(); a.preventDefault() }, !1) }; _p._registerAccelerometerEvent = function () { var a = window; this._acceleration = new cc.Acceleration; this._accelDeviceEvent = a.DeviceMotionEvent || a.DeviceOrientationEvent; cc.sys.browserType == cc.sys.BROWSER_TYPE_MOBILE_QQ && (this._accelDeviceEvent = window.DeviceOrientationEvent); var b = this._accelDeviceEvent == a.DeviceMotionEvent ? "devicemotion" : "deviceorientation", c = navigator.userAgent; if (/Android/.test(c) || /Adr/.test(c) && cc.sys.browserType == cc.BROWSER_TYPE_UC) this._minus = -1; cc._addEventListener(a, b, this.didAccelerate.bind(this), !1) }; _p.didAccelerate = function (a) { var b = window; if (this._accelEnabled) { var c = this._acceleration, d, e, f; this._accelDeviceEvent == window.DeviceMotionEvent ? (f = a.accelerationIncludingGravity, d = this._accelMinus * f.x * 0.1, e = this._accelMinus * f.y * 0.1, f = 0.1 * f.z) : (d = a.gamma / 90 * 0.981, e = 0.981 * -(a.beta / 90), f = a.alpha / 90 * 0.981); cc.sys.os === cc.sys.OS_ANDROID ? (c.x = -d, c.y = -e) : (c.x = d, c.y = e); c.z = f; c.timestamp = a.timeStamp || Date.now(); a = c.x; b.orientation === cc.UIInterfaceOrientationLandscapeRight ? (c.x = -c.y, c.y = a) : b.orientation === cc.UIInterfaceOrientationLandscapeLeft ? (c.x = c.y, c.y = -a) : b.orientation === cc.UIInterfaceOrientationPortraitUpsideDown && (c.x = -c.x, c.y = -c.y) } }; delete _p; cc.AffineTransform = function (a, b, c, d, e, f) { this.a = a; this.b = b; this.c = c; this.d = d; this.tx = e; this.ty = f }; cc.affineTransformMake = function (a, b, c, d, e, f) { return { a: a, b: b, c: c, d: d, tx: e, ty: f } }; cc.pointApplyAffineTransform = function (a, b) { return { x: b.a * a.x + b.c * a.y + b.tx, y: b.b * a.x + b.d * a.y + b.ty } }; cc._pointApplyAffineTransform = function (a, b, c) { return { x: c.a * a + c.c * b + c.tx, y: c.b * a + c.d * b + c.ty } }; cc.sizeApplyAffineTransform = function (a, b) { return { width: b.a * a.width + b.c * a.height, height: b.b * a.width + b.d * a.height } }; cc.affineTransformMakeIdentity = function () { return { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 } }; cc.affineTransformIdentity = function () { return { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 } }; cc.rectApplyAffineTransform = function (a, b) { var c = cc.rectGetMinY(a), d = cc.rectGetMinX(a), e = cc.rectGetMaxX(a), f = cc.rectGetMaxY(a), g = cc._pointApplyAffineTransform(d, c, b), c = cc._pointApplyAffineTransform(e, c, b), d = cc._pointApplyAffineTransform(d, f, b), h = cc._pointApplyAffineTransform(e, f, b), e = Math.min(g.x, c.x, d.x, h.x), f = Math.max(g.x, c.x, d.x, h.x), k = Math.min(g.y, c.y, d.y, h.y), g = Math.max(g.y, c.y, d.y, h.y); return cc.rect(e, k, f - e, g - k) }; cc._rectApplyAffineTransformIn = function (a, b) { var c = cc.rectGetMinY(a), d = cc.rectGetMinX(a), e = cc.rectGetMaxX(a), f = cc.rectGetMaxY(a), g = cc._pointApplyAffineTransform(d, c, b), c = cc._pointApplyAffineTransform(e, c, b), d = cc._pointApplyAffineTransform(d, f, b), h = cc._pointApplyAffineTransform(e, f, b), e = Math.min(g.x, c.x, d.x, h.x), f = Math.max(g.x, c.x, d.x, h.x), k = Math.min(g.y, c.y, d.y, h.y), g = Math.max(g.y, c.y, d.y, h.y); a.x = e; a.y = k; a.width = f - e; a.height = g - k; return a }; cc.affineTransformTranslate = function (a, b, c) { return { a: a.a, b: a.b, c: a.c, d: a.d, tx: a.tx + a.a * b + a.c * c, ty: a.ty + a.b * b + a.d * c } }; cc.affineTransformScale = function (a, b, c) { return { a: a.a * b, b: a.b * b, c: a.c * c, d: a.d * c, tx: a.tx, ty: a.ty } }; cc.affineTransformRotate = function (a, b) { var c = Math.sin(b), d = Math.cos(b); return { a: a.a * d + a.c * c, b: a.b * d + a.d * c, c: a.c * d - a.a * c, d: a.d * d - a.b * c, tx: a.tx, ty: a.ty } }; cc.affineTransformConcat = function (a, b) { return { a: a.a * b.a + a.b * b.c, b: a.a * b.b + a.b * b.d, c: a.c * b.a + a.d * b.c, d: a.c * b.b + a.d * b.d, tx: a.tx * b.a + a.ty * b.c + b.tx, ty: a.tx * b.b + a.ty * b.d + b.ty } }; cc.affineTransformEqualToTransform = function (a, b) { return a.a === b.a && a.b === b.b && a.c === b.c && a.d === b.d && a.tx === b.tx && a.ty === b.ty }; cc.affineTransformInvert = function (a) { var b = 1 / (a.a * a.d - a.b * a.c); return { a: b * a.d, b: -b * a.b, c: -b * a.c, d: b * a.a, tx: b * (a.c * a.ty - a.d * a.tx), ty: b * (a.b * a.tx - a.a * a.ty) } }; cc.POINT_EPSILON = parseFloat("1.192092896e-07F"); cc.pNeg = function (a) { return cc.p(-a.x, -a.y) }; cc.pAdd = function (a, b) { return cc.p(a.x + b.x, a.y + b.y) }; cc.pSub = function (a, b) { return cc.p(a.x - b.x, a.y - b.y) }; cc.pMult = function (a, b) { return cc.p(a.x * b, a.y * b) }; cc.pMidpoint = function (a, b) { return cc.pMult(cc.pAdd(a, b), 0.5) }; cc.pDot = function (a, b) { return a.x * b.x + a.y * b.y }; cc.pCross = function (a, b) { return a.x * b.y - a.y * b.x }; cc.pPerp = function (a) { return cc.p(-a.y, a.x) }; cc.pRPerp = function (a) { return cc.p(a.y, -a.x) }; cc.pProject = function (a, b) { return cc.pMult(b, cc.pDot(a, b) / cc.pDot(b, b)) }; cc.pRotate = function (a, b) { return cc.p(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x) }; cc.pUnrotate = function (a, b) { return cc.p(a.x * b.x + a.y * b.y, a.y * b.x - a.x * b.y) }; cc.pLengthSQ = function (a) { return cc.pDot(a, a) }; cc.pDistanceSQ = function (a, b) { return cc.pLengthSQ(cc.pSub(a, b)) }; cc.pLength = function (a) { return Math.sqrt(cc.pLengthSQ(a)) }; cc.pDistance = function (a, b) { return cc.pLength(cc.pSub(a, b)) }; cc.pNormalize = function (a) { return cc.pMult(a, 1 / cc.pLength(a)) }; cc.pForAngle = function (a) { return cc.p(Math.cos(a), Math.sin(a)) }; cc.pToAngle = function (a) { return Math.atan2(a.y, a.x) }; cc.clampf = function (a, b, c) { if (b > c) { var d = b; b = c; c = d } return a < b ? b : a < c ? a : c }; cc.pClamp = function (a, b, c) { return cc.p(cc.clampf(a.x, b.x, c.x), cc.clampf(a.y, b.y, c.y)) }; cc.pFromSize = function (a) { return cc.p(a.width, a.height) }; cc.pCompOp = function (a, b) { return cc.p(b(a.x), b(a.y)) }; cc.pLerp = function (a, b, c) { return cc.pAdd(cc.pMult(a, 1 - c), cc.pMult(b, c)) }; cc.pFuzzyEqual = function (a, b, c) { return a.x - c <= b.x && b.x <= a.x + c && a.y - c <= b.y && b.y <= a.y + c ? !0 : !1 }; cc.pCompMult = function (a, b) { return cc.p(a.x * b.x, a.y * b.y) }; cc.pAngleSigned = function (a, b) { var c = cc.pNormalize(a), d = cc.pNormalize(b), c = Math.atan2(c.x * d.y - c.y * d.x, cc.pDot(c, d)); return Math.abs(c) < cc.POINT_EPSILON ? 0 : c }; cc.pAngle = function (a, b) { var c = Math.acos(cc.pDot(cc.pNormalize(a), cc.pNormalize(b))); return Math.abs(c) < cc.POINT_EPSILON ? 0 : c }; cc.pRotateByAngle = function (a, b, c) { a = cc.pSub(a, b); var d = Math.cos(c); c = Math.sin(c); var e = a.x; a.x = e * d - a.y * c + b.x; a.y = e * c + a.y * d + b.y; return a }; cc.pLineIntersect = function (a, b, c, d, e) { if (a.x == b.x && a.y == b.y || c.x == d.x && c.y == d.y) return !1; var f = b.x - a.x; b = b.y - a.y; var g = d.x - c.x; d = d.y - c.y; var h = a.x - c.x; a = a.y - c.y; c = d * f - g * b; e.x = g * a - d * h; e.y = f * a - b * h; if (0 == c) return 0 == e.x || 0 == e.y ? !0 : !1; e.x /= c; e.y /= c; return !0 }; cc.pSegmentIntersect = function (a, b, c, d) { var e = cc.p(0, 0); return cc.pLineIntersect(a, b, c, d, e) && 0 <= e.x && 1 >= e.x && 0 <= e.y && 1 >= e.y ? !0 : !1 }; cc.pIntersectPoint = function (a, b, c, d) { var e = cc.p(0, 0); return cc.pLineIntersect(a, b, c, d, e) ? (c = cc.p(0, 0), c.x = a.x + e.x * (b.x - a.x), c.y = a.y + e.x * (b.y - a.y), c) : cc.p(0, 0) }; cc.pSameAs = function (a, b) { return null != a && null != b ? a.x == b.x && a.y == b.y : !1 }; cc.pZeroIn = function (a) { a.x = 0; a.y = 0 }; cc.pIn = function (a, b) { a.x = b.x; a.y = b.y }; cc.pMultIn = function (a, b) { a.x *= b; a.y *= b }; cc.pSubIn = function (a, b) { a.x -= b.x; a.y -= b.y }; cc.pAddIn = function (a, b) { a.x += b.x; a.y += b.y }; cc.pNormalizeIn = function (a) { cc.pMultIn(a, 1 / Math.sqrt(a.x * a.x + a.y * a.y)) }; cc.vertexLineToPolygon = function (a, b, c, d, e) { e += d; if (!(1 >= e)) { b *= 0.5; for (var f, g = e - 1, h = d; h < e; h++) { f = 2 * h; var k = cc.p(a[2 * h], a[2 * h + 1]), m; if (0 === h) m = cc.pPerp(cc.pNormalize(cc.pSub(k, cc.p(a[2 * (h + 1)], a[2 * (h + 1) + 1])))); else if (h === g) m = cc.pPerp(cc.pNormalize(cc.pSub(cc.p(a[2 * (h - 1)], a[2 * (h - 1) + 1]), k))); else { m = cc.p(a[2 * (h - 1)], a[2 * (h - 1) + 1]); var n = cc.p(a[2 * (h + 1)], a[2 * (h + 1) + 1]), q = cc.pNormalize(cc.pSub(n, k)), r = cc.pNormalize(cc.pSub(m, k)), s = Math.acos(cc.pDot(q, r)); m = s < cc.degreesToRadians(70) ? cc.pPerp(cc.pNormalize(cc.pMidpoint(q, r))) : s < cc.degreesToRadians(170) ? cc.pNormalize(cc.pMidpoint(q, r)) : cc.pPerp(cc.pNormalize(cc.pSub(n, m))) } m = cc.pMult(m, b); c[2 * f] = k.x + m.x; c[2 * f + 1] = k.y + m.y; c[2 * (f + 1)] = k.x - m.x; c[2 * (f + 1) + 1] = k.y - m.y } for (h = 0 == d ? 0 : d - 1; h < g; h++) f = 2 * h, a = f + 2, b = cc.vertex2(c[2 * f], c[2 * f + 1]), e = cc.vertex2(c[2 * (f + 1)], c[2 * (f + 1) + 1]), f = cc.vertex2(c[2 * a], c[2 * a]), d = cc.vertex2(c[2 * (a + 1)], c[2 * (a + 1) + 1]), b = !cc.vertexLineIntersect(b.x, b.y, d.x, d.y, e.x, e.y, f.x, f.y), !b.isSuccess && (0 > b.value || 1 < b.value) && (b.isSuccess = !0), b.isSuccess && (c[2 * a] = d.x, c[2 * a + 1] = d.y, c[2 * (a + 1)] = f.x, c[2 * (a + 1) + 1] = f.y) } }; cc.vertexLineIntersect = function (a, b, c, d, e, f, g, h) { if (a == c && b == d || e == g && f == h) return { isSuccess: !1, value: 0 }; c -= a; d -= b; e -= a; f -= b; g -= a; h -= b; a = Math.sqrt(c * c + d * d); c /= a; d /= a; b = e * c + f * d; f = f * c - e * d; e = b; b = g * c + h * d; h = h * c - g * d; g = b; return f == h ? { isSuccess: !1, value: 0 } : { isSuccess: !0, value: (g + (e - g) * h / (h - f)) / a } }; cc.vertexListIsClockwise = function (a) { for (var b = 0, c = a.length; b < c; b++) { var d = a[(b + 1) % c], e = a[(b + 2) % c]; if (0 < cc.pCross(cc.pSub(d, a[b]), cc.pSub(e, d))) return !1 } return !0 }; cc.CGAffineToGL = function (a, b) { b[2] = b[3] = b[6] = b[7] = b[8] = b[9] = b[11] = b[14] = 0; b[10] = b[15] = 1; b[0] = a.a; b[4] = a.c; b[12] = a.tx; b[1] = a.b; b[5] = a.d; b[13] = a.ty }; cc.GLToCGAffine = function (a, b) { b.a = a[0]; b.c = a[4]; b.tx = a[12]; b.b = a[1]; b.d = a[5]; b.ty = a[13] }; cc.Touch = cc.Class.extend({ _point: null, _prevPoint: null, _id: 0, _startPointCaptured: !1, _startPoint: null, ctor: function (a, b, c) { this._point = cc.p(a || 0, b || 0); this._id = c || 0 }, getLocation: function () { return { x: this._point.x, y: this._point.y } }, getLocationX: function () { return this._point.x }, getLocationY: function () { return this._point.y }, getPreviousLocation: function () { return { x: this._prevPoint.x, y: this._prevPoint.y } }, getStartLocation: function () { return { x: this._startPoint.x, y: this._startPoint.y } }, getDelta: function () { return cc.pSub(this._point, this._prevPoint) }, getLocationInView: function () { return { x: this._point.x, y: this._point.y } }, getPreviousLocationInView: function () { return { x: this._prevPoint.x, y: this._prevPoint.y } }, getStartLocationInView: function () { return { x: this._startPoint.x, y: this._startPoint.y } }, getID: function () { return this._id }, getId: function () { cc.log("getId is deprecated. Please use getID instead."); return this._id }, setTouchInfo: function (a, b, c) { this._prevPoint = this._point; this._point = cc.p(b || 0, c || 0); this._id = a; this._startPointCaptured || (this._startPoint = cc.p(this._point), this._startPointCaptured = !0) }, _setPoint: function (a, b) { void 0 === b ? (this._point.x = a.x, this._point.y = a.y) : (this._point.x = a, this._point.y = b) }, _setPrevPoint: function (a, b) { this._prevPoint = void 0 === b ? cc.p(a.x, a.y) : cc.p(a || 0, b || 0) } }); cc.Event = cc.Class.extend({ _type: 0, _isStopped: !1, _currentTarget: null, _setCurrentTarget: function (a) { this._currentTarget = a }, ctor: function (a) { this._type = a }, getType: function () { return this._type }, stopPropagation: function () { this._isStopped = !0 }, isStopped: function () { return this._isStopped }, getCurrentTarget: function () { return this._currentTarget } }); cc.Event.TOUCH = 0; cc.Event.KEYBOARD = 1; cc.Event.ACCELERATION = 2; cc.Event.MOUSE = 3; cc.Event.CUSTOM = 4; cc.EventCustom = cc.Event.extend({ _eventName: null, _userData: null, ctor: function (a) { cc.Event.prototype.ctor.call(this, cc.Event.CUSTOM); this._eventName = a }, setUserData: function (a) { this._userData = a }, getUserData: function () { return this._userData }, getEventName: function () { return this._eventName } }); cc.EventMouse = cc.Event.extend({ _eventType: 0, _button: 0, _x: 0, _y: 0, _prevX: 0, _prevY: 0, _scrollX: 0, _scrollY: 0, ctor: function (a) { cc.Event.prototype.ctor.call(this, cc.Event.MOUSE); this._eventType = a }, setScrollData: function (a, b) { this._scrollX = a; this._scrollY = b }, getScrollX: function () { return this._scrollX }, getScrollY: function () { return this._scrollY }, setLocation: function (a, b) { this._x = a; this._y = b }, getLocation: function () { return { x: this._x, y: this._y } }, getLocationInView: function () { return { x: this._x, y: cc.view._designResolutionSize.height - this._y } }, _setPrevCursor: function (a, b) { this._prevX = a; this._prevY = b }, getDelta: function () { return { x: this._x - this._prevX, y: this._y - this._prevY } }, getDeltaX: function () { return this._x - this._prevX }, getDeltaY: function () { return this._y - this._prevY }, setButton: function (a) { this._button = a }, getButton: function () { return this._button }, getLocationX: function () { return this._x }, getLocationY: function () { return this._y } }); cc.EventMouse.NONE = 0; cc.EventMouse.DOWN = 1; cc.EventMouse.UP = 2; cc.EventMouse.MOVE = 3; cc.EventMouse.SCROLL = 4; cc.EventMouse.BUTTON_LEFT = 0; cc.EventMouse.BUTTON_RIGHT = 2; cc.EventMouse.BUTTON_MIDDLE = 1; cc.EventMouse.BUTTON_4 = 3; cc.EventMouse.BUTTON_5 = 4; cc.EventMouse.BUTTON_6 = 5; cc.EventMouse.BUTTON_7 = 6; cc.EventMouse.BUTTON_8 = 7; cc.EventTouch = cc.Event.extend({ _eventCode: 0, _touches: null, ctor: function (a) { cc.Event.prototype.ctor.call(this, cc.Event.TOUCH); this._touches = a || [] }, getEventCode: function () { return this._eventCode }, getTouches: function () { return this._touches }, _setEventCode: function (a) { this._eventCode = a }, _setTouches: function (a) { this._touches = a } }); cc.EventTouch.MAX_TOUCHES = 5; cc.EventTouch.EventCode = { BEGAN: 0, MOVED: 1, ENDED: 2, CANCELLED: 3 }; cc.EventListener = cc.Class.extend({ _onEvent: null, _type: 0, _listenerID: null, _registered: !1, _fixedPriority: 0, _node: null, _paused: !1, _isEnabled: !0, ctor: function (a, b, c) { this._onEvent = c; this._type = a || 0; this._listenerID = b || "" }, _setPaused: function (a) { this._paused = a }, _isPaused: function () { return this._paused }, _setRegistered: function (a) { this._registered = a }, _isRegistered: function () { return this._registered }, _getType: function () { return this._type }, _getListenerID: function () { return this._listenerID }, _setFixedPriority: function (a) { this._fixedPriority = a }, _getFixedPriority: function () { return this._fixedPriority }, _setSceneGraphPriority: function (a) { this._node = a }, _getSceneGraphPriority: function () { return this._node }, checkAvailable: function () { return null != this._onEvent }, clone: function () { return null }, setEnabled: function (a) { this._isEnabled = a }, isEnabled: function () { return this._isEnabled }, retain: function () { }, release: function () { } }); cc.EventListener.UNKNOWN = 0; cc.EventListener.TOUCH_ONE_BY_ONE = 1; cc.EventListener.TOUCH_ALL_AT_ONCE = 2; cc.EventListener.KEYBOARD = 3; cc.EventListener.MOUSE = 4; cc.EventListener.ACCELERATION = 5; cc.EventListener.CUSTOM = 6; cc._EventListenerCustom = cc.EventListener.extend({ _onCustomEvent: null, ctor: function (a, b) { this._onCustomEvent = b; var c = this; cc.EventListener.prototype.ctor.call(this, cc.EventListener.CUSTOM, a, function (a) { null != c._onCustomEvent && c._onCustomEvent(a) }) }, checkAvailable: function () { return cc.EventListener.prototype.checkAvailable.call(this) && null != this._onCustomEvent }, clone: function () { return new cc._EventListenerCustom(this._listenerID, this._onCustomEvent) } }); cc._EventListenerCustom.create = function (a, b) { return new cc._EventListenerCustom(a, b) }; cc._EventListenerMouse = cc.EventListener.extend({ onMouseDown: null, onMouseUp: null, onMouseMove: null, onMouseScroll: null, ctor: function () { var a = this; cc.EventListener.prototype.ctor.call(this, cc.EventListener.MOUSE, cc._EventListenerMouse.LISTENER_ID, function (b) { var c = cc.EventMouse; switch (b._eventType) { case c.DOWN: if (a.onMouseDown) a.onMouseDown(b); break; case c.UP: if (a.onMouseUp) a.onMouseUp(b); break; case c.MOVE: if (a.onMouseMove) a.onMouseMove(b); break; case c.SCROLL: if (a.onMouseScroll) a.onMouseScroll(b) } }) }, clone: function () { var a = new cc._EventListenerMouse; a.onMouseDown = this.onMouseDown; a.onMouseUp = this.onMouseUp; a.onMouseMove = this.onMouseMove; a.onMouseScroll = this.onMouseScroll; return a }, checkAvailable: function () { return !0 } }); cc._EventListenerMouse.LISTENER_ID = "__cc_mouse"; cc._EventListenerMouse.create = function () { return new cc._EventListenerMouse }; cc._EventListenerTouchOneByOne = cc.EventListener.extend({ _claimedTouches: null, swallowTouches: !1, onTouchBegan: null, onTouchMoved: null, onTouchEnded: null, onTouchCancelled: null, ctor: function () { cc.EventListener.prototype.ctor.call(this, cc.EventListener.TOUCH_ONE_BY_ONE, cc._EventListenerTouchOneByOne.LISTENER_ID, null); this._claimedTouches = [] }, setSwallowTouches: function (a) { this.swallowTouches = a }, clone: function () { var a = new cc._EventListenerTouchOneByOne; a.onTouchBegan = this.onTouchBegan; a.onTouchMoved = this.onTouchMoved; a.onTouchEnded = this.onTouchEnded; a.onTouchCancelled = this.onTouchCancelled; a.swallowTouches = this.swallowTouches; return a }, checkAvailable: function () { return this.onTouchBegan ? !0 : (cc.log(cc._LogInfos._EventListenerTouchOneByOne_checkAvailable), !1) } }); cc._EventListenerTouchOneByOne.LISTENER_ID = "__cc_touch_one_by_one"; cc._EventListenerTouchOneByOne.create = function () { return new cc._EventListenerTouchOneByOne }; cc._EventListenerTouchAllAtOnce = cc.EventListener.extend({ onTouchesBegan: null, onTouchesMoved: null, onTouchesEnded: null, onTouchesCancelled: null, ctor: function () { cc.EventListener.prototype.ctor.call(this, cc.EventListener.TOUCH_ALL_AT_ONCE, cc._EventListenerTouchAllAtOnce.LISTENER_ID, null) }, clone: function () { var a = new cc._EventListenerTouchAllAtOnce; a.onTouchesBegan = this.onTouchesBegan; a.onTouchesMoved = this.onTouchesMoved; a.onTouchesEnded = this.onTouchesEnded; a.onTouchesCancelled = this.onTouchesCancelled; return a }, checkAvailable: function () { return null == this.onTouchesBegan && null == this.onTouchesMoved && null == this.onTouchesEnded && null == this.onTouchesCancelled ? (cc.log(cc._LogInfos._EventListenerTouchAllAtOnce_checkAvailable), !1) : !0 } }); cc._EventListenerTouchAllAtOnce.LISTENER_ID = "__cc_touch_all_at_once"; cc._EventListenerTouchAllAtOnce.create = function () { return new cc._EventListenerTouchAllAtOnce }; cc.EventListener.create = function (a) { cc.assert(a && a.event, cc._LogInfos.EventListener_create); var b = a.event; delete a.event; var c = null; b === cc.EventListener.TOUCH_ONE_BY_ONE ? c = new cc._EventListenerTouchOneByOne : b === cc.EventListener.TOUCH_ALL_AT_ONCE ? c = new cc._EventListenerTouchAllAtOnce : b === cc.EventListener.MOUSE ? c = new cc._EventListenerMouse : b === cc.EventListener.CUSTOM ? (c = new cc._EventListenerCustom(a.eventName, a.callback), delete a.eventName, delete a.callback) : b === cc.EventListener.KEYBOARD ? c = new cc._EventListenerKeyboard : b === cc.EventListener.ACCELERATION && (c = new cc._EventListenerAcceleration(a.callback), delete a.callback); for (var d in a) c[d] = a[d]; return c }; cc._EventListenerVector = cc.Class.extend({ _fixedListeners: null, _sceneGraphListeners: null, gt0Index: 0, ctor: function () { this._fixedListeners = []; this._sceneGraphListeners = [] }, size: function () { return this._fixedListeners.length + this._sceneGraphListeners.length }, empty: function () { return 0 === this._fixedListeners.length && 0 === this._sceneGraphListeners.length }, push: function (a) { 0 == a._getFixedPriority() ? this._sceneGraphListeners.push(a) : this._fixedListeners.push(a) }, clearSceneGraphListeners: function () { this._sceneGraphListeners.length = 0 }, clearFixedListeners: function () { this._fixedListeners.length = 0 }, clear: function () { this._sceneGraphListeners.length = 0; this._fixedListeners.length = 0 }, getFixedPriorityListeners: function () { return this._fixedListeners }, getSceneGraphPriorityListeners: function () { return this._sceneGraphListeners } }); cc.__getListenerID = function (a) { var b = cc.Event, c = a.getType(); if (c === b.ACCELERATION) return cc._EventListenerAcceleration.LISTENER_ID; if (c === b.CUSTOM) return a.getEventName(); if (c === b.KEYBOARD) return cc._EventListenerKeyboard.LISTENER_ID; if (c === b.MOUSE) return cc._EventListenerMouse.LISTENER_ID; c === b.TOUCH && cc.log(cc._LogInfos.__getListenerID); return "" }; cc.eventManager = { DIRTY_NONE: 0, DIRTY_FIXED_PRIORITY: 1, DIRTY_SCENE_GRAPH_PRIORITY: 2, DIRTY_ALL: 3, _listenersMap: {}, _priorityDirtyFlagMap: {}, _nodeListenersMap: {}, _nodePriorityMap: {}, _globalZOrderNodeMap: {}, _toAddedListeners: [], _dirtyNodes: [], _inDispatch: 0, _isEnabled: !1, _nodePriorityIndex: 0, _internalCustomListenerIDs: [cc.game.EVENT_HIDE, cc.game.EVENT_SHOW], _setDirtyForNode: function (a) { null != this._nodeListenersMap[a.__instanceId] && this._dirtyNodes.push(a); a = a.getChildren(); for (var b = 0, c = a.length; b < c; b++) this._setDirtyForNode(a[b]) }, pauseTarget: function (a, b) { var c = this._nodeListenersMap[a.__instanceId], d, e; if (c) for (d = 0, e = c.length; d < e; d++) c[d]._setPaused(!0); if (!0 === b) for (c = a.getChildren(), d = 0, e = c.length; d < e; d++) this.pauseTarget(c[d], !0) }, resumeTarget: function (a, b) { var c = this._nodeListenersMap[a.__instanceId], d, e; if (c) for (d = 0, e = c.length; d < e; d++) c[d]._setPaused(!1); this._setDirtyForNode(a); if (!0 === b) for (c = a.getChildren(), d = 0, e = c.length; d < e; d++) this.resumeTarget(c[d], !0) }, _addListener: function (a) { 0 === this._inDispatch ? this._forceAddEventListener(a) : this._toAddedListeners.push(a) }, _forceAddEventListener: function (a) { var b = a._getListenerID(), c = this._listenersMap[b]; c || (c = new cc._EventListenerVector, this._listenersMap[b] = c); c.push(a); 0 == a._getFixedPriority() ? (this._setDirty(b, this.DIRTY_SCENE_GRAPH_PRIORITY), b = a._getSceneGraphPriority(), null == b && cc.log(cc._LogInfos.eventManager__forceAddEventListener), this._associateNodeAndEventListener(b, a), b.isRunning() && this.resumeTarget(b)) : this._setDirty(b, this.DIRTY_FIXED_PRIORITY) }, _getListeners: function (a) { return this._listenersMap[a] }, _updateDirtyFlagForSceneGraph: function () { if (0 != this._dirtyNodes.length) { for (var a = this._dirtyNodes, b, c, d = this._nodeListenersMap, e = 0, f = a.length; e < f; e++) if (b = d[a[e].__instanceId]) for (var g = 0, h = b.length; g < h; g++) (c = b[g]) && this._setDirty(c._getListenerID(), this.DIRTY_SCENE_GRAPH_PRIORITY); this._dirtyNodes.length = 0 } }, _removeAllListenersInVector: function (a) { if (a) for (var b, c = 0; c < a.length;) b = a[c], b._setRegistered(!1), null != b._getSceneGraphPriority() && (this._dissociateNodeAndEventListener(b._getSceneGraphPriority(), b), b._setSceneGraphPriority(null)), 0 === this._inDispatch ? cc.arrayRemoveObject(a, b) : ++c }, _removeListenersForListenerID: function (a) { var b = this._listenersMap[a]; if (b) { var c = b.getFixedPriorityListeners(), d = b.getSceneGraphPriorityListeners(); this._removeAllListenersInVector(d); this._removeAllListenersInVector(c); delete this._priorityDirtyFlagMap[a]; this._inDispatch || (b.clear(), delete this._listenersMap[a]) } c = this._toAddedListeners; for (b = 0; b < c.length;) (d = c[b]) && d._getListenerID() == a ? cc.arrayRemoveObject(c, d) : ++b }, _sortEventListeners: function (a) { var b = this.DIRTY_NONE, c = this._priorityDirtyFlagMap; c[a] && (b = c[a]); b != this.DIRTY_NONE && (c[a] = this.DIRTY_NONE, b & this.DIRTY_FIXED_PRIORITY && this._sortListenersOfFixedPriority(a), b & this.DIRTY_SCENE_GRAPH_PRIORITY && ((b = cc.director.getRunningScene()) ? this._sortListenersOfSceneGraphPriority(a, b) : c[a] = this.DIRTY_SCENE_GRAPH_PRIORITY)) }, _sortListenersOfSceneGraphPriority: function (a, b) { var c = this._getListeners(a); if (c) { var d = c.getSceneGraphPriorityListeners(); d && 0 !== d.length && (this._nodePriorityIndex = 0, this._nodePriorityMap = {}, this._visitTarget(b, !0), c.getSceneGraphPriorityListeners().sort(this._sortEventListenersOfSceneGraphPriorityDes)) } }, _sortEventListenersOfSceneGraphPriorityDes: function (a, b) { var c = cc.eventManager._nodePriorityMap; return a && b && a._getSceneGraphPriority() && b._getSceneGraphPriority() ? c[b._getSceneGraphPriority().__instanceId] - c[a._getSceneGraphPriority().__instanceId] : -1 }, _sortListenersOfFixedPriority: function (a) { if (a = this._listenersMap[a]) { var b = a.getFixedPriorityListeners(); if (b && 0 !== b.length) { b.sort(this._sortListenersOfFixedPriorityAsc); for (var c = 0, d = b.length; c < d && !(0 <= b[c]._getFixedPriority()) ;)++c; a.gt0Index = c } } }, _sortListenersOfFixedPriorityAsc: function (a, b) { return a._getFixedPriority() - b._getFixedPriority() }, _onUpdateListeners: function (a) { if (a = this._listenersMap[a]) { var b = a.getFixedPriorityListeners(), c = a.getSceneGraphPriorityListeners(), d, e; if (c) for (d = 0; d < c.length;) e = c[d], e._isRegistered() ? ++d : cc.arrayRemoveObject(c, e); if (b) for (d = 0; d < b.length;) e = b[d], e._isRegistered() ? ++d : cc.arrayRemoveObject(b, e); c && 0 === c.length && a.clearSceneGraphListeners(); b && 0 === b.length && a.clearFixedListeners() } }, _updateListeners: function (a) { var b = this._inDispatch; cc.assert(0 < b, cc._LogInfos.EventManager__updateListeners); a.getType() == cc.Event.TOUCH ? (this._onUpdateListeners(cc._EventListenerTouchOneByOne.LISTENER_ID), this._onUpdateListeners(cc._EventListenerTouchAllAtOnce.LISTENER_ID)) : this._onUpdateListeners(cc.__getListenerID(a)); if (!(1 < b)) { cc.assert(1 == b, cc._LogInfos.EventManager__updateListeners_2); a = this._listenersMap; var b = this._priorityDirtyFlagMap, c; for (c in a) a[c].empty() && (delete b[c], delete a[c]); c = this._toAddedListeners; if (0 !== c.length) { a = 0; for (b = c.length; a < b; a++) this._forceAddEventListener(c[a]); this._toAddedListeners.length = 0 } } }, _onTouchEventCallback: function (a, b) { if (!a._isRegistered) return !1; var c = b.event, d = b.selTouch; c._setCurrentTarget(a._node); var e = !1, f, g = c.getEventCode(), h = cc.EventTouch.EventCode; if (g == h.BEGAN) a.onTouchBegan && (e = a.onTouchBegan(d, c)) && a._registered && a._claimedTouches.push(d); else if (0 < a._claimedTouches.length && -1 != (f = a._claimedTouches.indexOf(d))) if (e = !0, g === h.MOVED && a.onTouchMoved) a.onTouchMoved(d, c); else if (g === h.ENDED) { if (a.onTouchEnded) a.onTouchEnded(d, c); a._registered && a._claimedTouches.splice(f, 1) } else if (g === h.CANCELLED) { if (a.onTouchCancelled) a.onTouchCancelled(d, c); a._registered && a._claimedTouches.splice(f, 1) } return c.isStopped() ? (cc.eventManager._updateListeners(c), !0) : e && a._registered && a.swallowTouches ? (b.needsMutableSet && b.touches.splice(d, 1), !0) : !1 }, _dispatchTouchEvent: function (a) { this._sortEventListeners(cc._EventListenerTouchOneByOne.LISTENER_ID); this._sortEventListeners(cc._EventListenerTouchAllAtOnce.LISTENER_ID); var b = this._getListeners(cc._EventListenerTouchOneByOne.LISTENER_ID), c = this._getListeners(cc._EventListenerTouchAllAtOnce.LISTENER_ID); if (null != b || null != c) { var d = a.getTouches(), e = cc.copyArray(d), f = { event: a, needsMutableSet: b && c, touches: e, selTouch: null }; if (b) for (var g = 0; g < d.length; g++) if (f.selTouch = d[g], this._dispatchEventToListeners(b, this._onTouchEventCallback, f), a.isStopped()) return; if (c && 0 < e.length && (this._dispatchEventToListeners(c, this._onTouchesEventCallback, { event: a, touches: e }), a.isStopped())) return; this._updateListeners(a) } }, _onTouchesEventCallback: function (a, b) { if (!a._registered) return !1; var c = cc.EventTouch.EventCode, d = b.event, e = b.touches, f = d.getEventCode(); d._setCurrentTarget(a._node); if (f == c.BEGAN && a.onTouchesBegan) a.onTouchesBegan(e, d); else if (f == c.MOVED && a.onTouchesMoved) a.onTouchesMoved(e, d); else if (f == c.ENDED && a.onTouchesEnded) a.onTouchesEnded(e, d); else if (f == c.CANCELLED && a.onTouchesCancelled) a.onTouchesCancelled(e, d); return d.isStopped() ? (cc.eventManager._updateListeners(d), !0) : !1 }, _associateNodeAndEventListener: function (a, b) { var c = this._nodeListenersMap[a.__instanceId]; c || (c = [], this._nodeListenersMap[a.__instanceId] = c); c.push(b) }, _dissociateNodeAndEventListener: function (a, b) { var c = this._nodeListenersMap[a.__instanceId]; c && (cc.arrayRemoveObject(c, b), 0 === c.length && delete this._nodeListenersMap[a.__instanceId]) }, _dispatchEventToListeners: function (a, b, c) { var d = !1, e = a.getFixedPriorityListeners(), f = a.getSceneGraphPriorityListeners(), g = 0, h; if (e && 0 !== e.length) for (; g < a.gt0Index; ++g) if (h = e[g], h.isEnabled() && !h._isPaused() && h._isRegistered() && b(h, c)) { d = !0; break } if (f && !d) for (a = 0; a < f.length; a++) if (h = f[a], h.isEnabled() && !h._isPaused() && h._isRegistered() && b(h, c)) { d = !0; break } if (e && !d) for (; g < e.length && (h = e[g], !h.isEnabled() || h._isPaused() || !h._isRegistered() || !b(h, c)) ; ++g); }, _setDirty: function (a, b) { var c = this._priorityDirtyFlagMap; c[a] = null == c[a] ? b : b | c[a] }, _visitTarget: function (a, b) { var c = a.getChildren(), d = 0, e = c.length, f = this._globalZOrderNodeMap, g = this._nodeListenersMap; if (0 < e) { for (var h; d < e; d++) if ((h = c[d]) && 0 > h.getLocalZOrder()) this._visitTarget(h, !1); else break; null != g[a.__instanceId] && (f[a.getGlobalZOrder()] || (f[a.getGlobalZOrder()] = []), f[a.getGlobalZOrder()].push(a.__instanceId)); for (; d < e; d++) (h = c[d]) && this._visitTarget(h, !1) } else null != g[a.__instanceId] && (f[a.getGlobalZOrder()] || (f[a.getGlobalZOrder()] = []), f[a.getGlobalZOrder()].push(a.__instanceId)); if (b) { var c = [], k; for (k in f) c.push(k); c.sort(this._sortNumberAsc); k = c.length; h = this._nodePriorityMap; for (d = 0; d < k; d++) for (e = f[c[d]], g = 0; g < e.length; g++) h[e[g]] = ++this._nodePriorityIndex; this._globalZOrderNodeMap = {} } }, _sortNumberAsc: function (a, b) { return a - b }, addListener: function (a, b) { cc.assert(a && b, cc._LogInfos.eventManager_addListener_2); if (!(a instanceof cc.EventListener)) cc.assert(!cc.isNumber(b), cc._LogInfos.eventManager_addListener_3), a = cc.EventListener.create(a); else if (a._isRegistered()) { cc.log(cc._LogInfos.eventManager_addListener_4); return } a.checkAvailable() && (cc.isNumber(b) ? 0 == b ? cc.log(cc._LogInfos.eventManager_addListener) : (a._setSceneGraphPriority(null), a._setFixedPriority(b), a._setRegistered(!0), a._setPaused(!1), this._addListener(a)) : (a._setSceneGraphPriority(b), a._setFixedPriority(0), a._setRegistered(!0), this._addListener(a))) }, addCustomListener: function (a, b) { var c = cc._EventListenerCustom.create(a, b); this.addListener(c, 1); return c }, removeListener: function (a) { if (null != a) { var b, c = this._listenersMap, d; for (d in c) { var e = c[d], f = e.getFixedPriorityListeners(); b = e.getSceneGraphPriorityListeners(); (b = this._removeListenerInVector(b, a)) ? this._setDirty(a._getListenerID(), this.DIRTY_SCENE_GRAPH_PRIORITY) : (b = this._removeListenerInVector(f, a)) && this._setDirty(a._getListenerID(), this.DIRTY_FIXED_PRIORITY); e.empty() && (delete this._priorityDirtyFlagMap[a._getListenerID()], delete c[d]); if (b) break } if (!b) for (c = this._toAddedListeners, d = 0, e = c.length; d < e; d++) if (f = c[d], f == a) { cc.arrayRemoveObject(c, f); break } } }, _removeListenerInVector: function (a, b) { if (null == a) return !1; for (var c = 0, d = a.length; c < d; c++) { var e = a[c]; if (e == b) return e._setRegistered(!1), null != e._getSceneGraphPriority() && (this._dissociateNodeAndEventListener(e._getSceneGraphPriority(), e), e._setSceneGraphPriority(null)), 0 == this._inDispatch && cc.arrayRemoveObject(a, e), !0 } return !1 }, removeListeners: function (a, b) { if (a instanceof cc.Node) { delete this._nodePriorityMap[a.__instanceId]; cc.arrayRemoveObject(this._dirtyNodes, a); var c = this._nodeListenersMap[a.__instanceId]; if (c) { for (var d = cc.copyArray(c), c = 0; c < d.length; c++) this.removeListener(d[c]); d.length = 0 } d = this._toAddedListeners; for (c = 0; c < d.length;) { var e = d[c]; e._getSceneGraphPriority() == a ? (e._setSceneGraphPriority(null), e._setRegistered(!1), d.splice(c, 1)) : ++c } if (!0 === b) for (d = a.getChildren(), c = 0, e = d.length; c < e; c++) this.removeListeners(d[c], !0) } else a == cc.EventListener.TOUCH_ONE_BY_ONE ? this._removeListenersForListenerID(cc._EventListenerTouchOneByOne.LISTENER_ID) : a == cc.EventListener.TOUCH_ALL_AT_ONCE ? this._removeListenersForListenerID(cc._EventListenerTouchAllAtOnce.LISTENER_ID) : a == cc.EventListener.MOUSE ? this._removeListenersForListenerID(cc._EventListenerMouse.LISTENER_ID) : a == cc.EventListener.ACCELERATION ? this._removeListenersForListenerID(cc._EventListenerAcceleration.LISTENER_ID) : a == cc.EventListener.KEYBOARD ? this._removeListenersForListenerID(cc._EventListenerKeyboard.LISTENER_ID) : cc.log(cc._LogInfos.eventManager_removeListeners) }, removeCustomListeners: function (a) { this._removeListenersForListenerID(a) }, removeAllListeners: function () { var a = this._listenersMap, b = this._internalCustomListenerIDs, c; for (c in a) -1 === b.indexOf(c) && this._removeListenersForListenerID(c) }, setPriority: function (a, b) { if (null != a) { var c = this._listenersMap, d; for (d in c) { var e = c[d].getFixedPriorityListeners(); if (e && -1 != e.indexOf(a)) { null != a._getSceneGraphPriority() && cc.log(cc._LogInfos.eventManager_setPriority); a._getFixedPriority() !== b && (a._setFixedPriority(b), this._setDirty(a._getListenerID(), this.DIRTY_FIXED_PRIORITY)); break } } } }, setEnabled: function (a) { this._isEnabled = a }, isEnabled: function () { return this._isEnabled }, dispatchEvent: function (a) { if (this._isEnabled) { this._updateDirtyFlagForSceneGraph(); this._inDispatch++; if (!a || !a.getType) throw "event is undefined"; if (a.getType() == cc.Event.TOUCH) this._dispatchTouchEvent(a); else { var b = cc.__getListenerID(a); this._sortEventListeners(b); b = this._listenersMap[b]; null != b && this._dispatchEventToListeners(b, this._onListenerCallback, a); this._updateListeners(a) } this._inDispatch-- } }, _onListenerCallback: function (a, b) { b._setCurrentTarget(a._getSceneGraphPriority()); a._onEvent(b); return b.isStopped() }, dispatchCustomEvent: function (a, b) { var c = new cc.EventCustom(a); c.setUserData(b); this.dispatchEvent(c) } }; cc.EventAcceleration = cc.Event.extend({ _acc: null, ctor: function (a) { cc.Event.prototype.ctor.call(this, cc.Event.ACCELERATION); this._acc = a } }); cc.EventKeyboard = cc.Event.extend({ _keyCode: 0, _isPressed: !1, ctor: function (a, b) { cc.Event.prototype.ctor.call(this, cc.Event.KEYBOARD); this._keyCode = a; this._isPressed = b } }); cc._EventListenerAcceleration = cc.EventListener.extend({ _onAccelerationEvent: null, ctor: function (a) { this._onAccelerationEvent = a; var b = this; cc.EventListener.prototype.ctor.call(this, cc.EventListener.ACCELERATION, cc._EventListenerAcceleration.LISTENER_ID, function (a) { b._onAccelerationEvent(a._acc, a) }) }, checkAvailable: function () { cc.assert(this._onAccelerationEvent, cc._LogInfos._EventListenerAcceleration_checkAvailable); return !0 }, clone: function () { return new cc._EventListenerAcceleration(this._onAccelerationEvent) } }); cc._EventListenerAcceleration.LISTENER_ID = "__cc_acceleration"; cc._EventListenerAcceleration.create = function (a) { return new cc._EventListenerAcceleration(a) }; cc._EventListenerKeyboard = cc.EventListener.extend({ onKeyPressed: null, onKeyReleased: null, ctor: function () { var a = this; cc.EventListener.prototype.ctor.call(this, cc.EventListener.KEYBOARD, cc._EventListenerKeyboard.LISTENER_ID, function (b) { if (b._isPressed) { if (a.onKeyPressed) a.onKeyPressed(b._keyCode, b) } else if (a.onKeyReleased) a.onKeyReleased(b._keyCode, b) }) }, clone: function () { var a = new cc._EventListenerKeyboard; a.onKeyPressed = this.onKeyPressed; a.onKeyReleased = this.onKeyReleased; return a }, checkAvailable: function () { return null == this.onKeyPressed && null == this.onKeyReleased ? (cc.log(cc._LogInfos._EventListenerKeyboard_checkAvailable), !1) : !0 } }); cc._EventListenerKeyboard.LISTENER_ID = "__cc_keyboard"; cc._EventListenerKeyboard.create = function () { return new cc._EventListenerKeyboard }; cc._tmp.WebGLCCNode = function () { var a = cc.Node.prototype; a._transform4x4 = null; a._stackMatrix = null; a._glServerState = null; a._camera = null; a.ctor = function () { this._initNode(); var a = new cc.kmMat4; a.mat[2] = a.mat[3] = a.mat[6] = a.mat[7] = a.mat[8] = a.mat[9] = a.mat[11] = a.mat[14] = 0; a.mat[10] = a.mat[15] = 1; this._transform4x4 = a; this._glServerState = 0; this._stackMatrix = new cc.kmMat4 }; a.setNodeDirty = function () { !1 === this._transformDirty && (this._transformDirty = this._inverseDirty = !0) }; a.visit = function () { if (this._visible) { var a = cc._renderContext, c, d = cc.current_stack; d.stack.push(d.top); cc.kmMat4Assign(this._stackMatrix, d.top); d.top = this._stackMatrix; var e = this.grid; e && e._active && e.beforeDraw(); this.transform(); var f = this._children; if (f && 0 < f.length) { var g = f.length; this.sortAllChildren(); for (c = 0; c < g; c++) if (f[c] && 0 > f[c]._localZOrder) f[c].visit(); else break; for (this.draw(a) ; c < g; c++) f[c] && f[c].visit() } else this.draw(a); this.arrivalOrder = 0; e && e._active && e.afterDraw(this); d.top = d.stack.pop() } }; a.transform = function () { var a = this._transform4x4, c = cc.current_stack.top, d = this.nodeToParentTransform(), e = a.mat; e[0] = d.a; e[4] = d.c; e[12] = d.tx; e[1] = d.b; e[5] = d.d; e[13] = d.ty; e[14] = this._vertexZ; cc.kmMat4Multiply(c, c, a); null == this._camera || null != this.grid && this.grid.isActive() || (a = this._anchorPointInPoints.x, c = this._anchorPointInPoints.y, 0 !== a || 0 !== c ? (cc.SPRITEBATCHNODE_RENDER_SUBPIXEL || (a |= 0, c |= 0), cc.kmGLTranslatef(a, c, 0), this._camera.locate(), cc.kmGLTranslatef(-a, -c, 0)) : this._camera.locate()) }; a.getNodeToParentTransform = a._getNodeToParentTransformForWebGL }; cc._tmp.PrototypeCCNode = function () { var a = cc.Node.prototype; cc.defineGetterSetter(a, "x", a.getPositionX, a.setPositionX); cc.defineGetterSetter(a, "y", a.getPositionY, a.setPositionY); cc.defineGetterSetter(a, "width", a._getWidth, a._setWidth); cc.defineGetterSetter(a, "height", a._getHeight, a._setHeight); cc.defineGetterSetter(a, "anchorX", a._getAnchorX, a._setAnchorX); cc.defineGetterSetter(a, "anchorY", a._getAnchorY, a._setAnchorY); cc.defineGetterSetter(a, "skewX", a.getSkewX, a.setSkewX); cc.defineGetterSetter(a, "skewY", a.getSkewY, a.setSkewY); cc.defineGetterSetter(a, "zIndex", a.getLocalZOrder, a.setLocalZOrder); cc.defineGetterSetter(a, "vertexZ", a.getVertexZ, a.setVertexZ); cc.defineGetterSetter(a, "rotation", a.getRotation, a.setRotation); cc.defineGetterSetter(a, "rotationX", a.getRotationX, a.setRotationX); cc.defineGetterSetter(a, "rotationY", a.getRotationY, a.setRotationY); cc.defineGetterSetter(a, "scale", a.getScale, a.setScale); cc.defineGetterSetter(a, "scaleX", a.getScaleX, a.setScaleX); cc.defineGetterSetter(a, "scaleY", a.getScaleY, a.setScaleY); cc.defineGetterSetter(a, "children", a.getChildren); cc.defineGetterSetter(a, "childrenCount", a.getChildrenCount); cc.defineGetterSetter(a, "parent", a.getParent, a.setParent); cc.defineGetterSetter(a, "visible", a.isVisible, a.setVisible); cc.defineGetterSetter(a, "running", a.isRunning); cc.defineGetterSetter(a, "ignoreAnchor", a.isIgnoreAnchorPointForPosition, a.ignoreAnchorPointForPosition); cc.defineGetterSetter(a, "actionManager", a.getActionManager, a.setActionManager); cc.defineGetterSetter(a, "scheduler", a.getScheduler, a.setScheduler); cc.defineGetterSetter(a, "shaderProgram", a.getShaderProgram, a.setShaderProgram); cc.defineGetterSetter(a, "opacity", a.getOpacity, a.setOpacity); cc.defineGetterSetter(a, "opacityModifyRGB", a.isOpacityModifyRGB); cc.defineGetterSetter(a, "cascadeOpacity", a.isCascadeOpacityEnabled, a.setCascadeOpacityEnabled); cc.defineGetterSetter(a, "color", a.getColor, a.setColor); cc.defineGetterSetter(a, "cascadeColor", a.isCascadeColorEnabled, a.setCascadeColorEnabled) }; cc.NODE_TAG_INVALID = -1; cc.s_globalOrderOfArrival = 1; cc.Node = cc.Class.extend({ _localZOrder: 0, _globalZOrder: 0, _vertexZ: 0, _rotationX: 0, _rotationY: 0, _scaleX: 1, _scaleY: 1, _position: null, _skewX: 0, _skewY: 0, _children: null, _visible: !0, _anchorPoint: null, _anchorPointInPoints: null, _contentSize: null, _running: !1, _parent: null, _ignoreAnchorPointForPosition: !1, tag: cc.NODE_TAG_INVALID, userData: null, userObject: null, _transformDirty: !0, _inverseDirty: !0, _cacheDirty: !0, _cachedParent: null, _transformGLDirty: null, _transform: null, _inverse: null, _reorderChildDirty: !1, _shaderProgram: null, arrivalOrder: 0, _actionManager: null, _scheduler: null, _eventDispatcher: null, _initializedNode: !1, _additionalTransformDirty: !1, _additionalTransform: null, _componentContainer: null, _isTransitionFinished: !1, _rotationRadiansX: 0, _rotationRadiansY: 0, _className: "Node", _showNode: !1, _name: "", _displayedOpacity: 255, _realOpacity: 255, _displayedColor: null, _realColor: null, _cascadeColorEnabled: !1, _cascadeOpacityEnabled: !1, _usingNormalizedPosition: !1, _hashOfName: 0, _initNode: function () { this._anchorPoint = cc.p(0, 0); this._anchorPointInPoints = cc.p(0, 0); this._contentSize = cc.size(0, 0); this._position = cc.p(0, 0); this._children = []; this._transform = { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 }; var a = cc.director; this._actionManager = a.getActionManager(); this._scheduler = a.getScheduler(); this._initializedNode = !0; this._additionalTransform = cc.affineTransformMakeIdentity(); cc.ComponentContainer && (this._componentContainer = new cc.ComponentContainer(this)); this._realOpacity = this._displayedOpacity = 255; this._displayedColor = cc.color(255, 255, 255, 255); this._realColor = cc.color(255, 255, 255, 255); this._cascadeOpacityEnabled = this._cascadeColorEnabled = !1 }, init: function () { !1 === this._initializedNode && this._initNode(); return !0 }, _arrayMakeObjectsPerformSelector: function (a, b) { if (a && 0 !== a.length) { var c, d = a.length, e; c = cc.Node._StateCallbackType; switch (b) { case c.onEnter: for (c = 0; c < d; c++) if (e = a[c]) e.onEnter(); break; case c.onExit: for (c = 0; c < d; c++) if (e = a[c]) e.onExit(); break; case c.onEnterTransitionDidFinish: for (c = 0; c < d; c++) if (e = a[c]) e.onEnterTransitionDidFinish(); break; case c.cleanup: for (c = 0; c < d; c++) (e = a[c]) && e.cleanup(); break; case c.updateTransform: for (c = 0; c < d; c++) (e = a[c]) && e.updateTransform(); break; case c.onExitTransitionDidStart: for (c = 0; c < d; c++) if (e = a[c]) e.onExitTransitionDidStart(); break; case c.sortAllChildren: for (c = 0; c < d; c++) (e = a[c]) && e.sortAllChildren(); break; default: cc.assert(0, cc._LogInfos.Node__arrayMakeObjectsPerformSelector) } } }, setNodeDirty: null, attr: function (a) { for (var b in a) this[b] = a[b] }, getSkewX: function () { return this._skewX }, setSkewX: function (a) { this._skewX = a; this.setNodeDirty() }, getSkewY: function () { return this._skewY }, setSkewY: function (a) { this._skewY = a; this.setNodeDirty() }, setLocalZOrder: function (a) { this._localZOrder = a; this._parent && this._parent.reorderChild(this, a); cc.eventManager._setDirtyForNode(this) }, _setLocalZOrder: function (a) { this._localZOrder = a }, getLocalZOrder: function () { return this._localZOrder }, getZOrder: function () { cc.log(cc._LogInfos.Node_getZOrder); return this.getLocalZOrder() }, setZOrder: function (a) { cc.log(cc._LogInfos.Node_setZOrder); this.setLocalZOrder(a) }, setGlobalZOrder: function (a) { this._globalZOrder != a && (this._globalZOrder = a, cc.eventManager._setDirtyForNode(this)) }, getGlobalZOrder: function () { return this._globalZOrder }, getVertexZ: function () { return this._vertexZ }, setVertexZ: function (a) { this._vertexZ = a }, getRotation: function () { this._rotationX !== this._rotationY && cc.log(cc._LogInfos.Node_getRotation); return this._rotationX }, setRotation: function (a) { this._rotationX = this._rotationY = a; this._rotationRadiansX = 0.017453292519943295 * this._rotationX; this._rotationRadiansY = 0.017453292519943295 * this._rotationY; this.setNodeDirty() }, getRotationX: function () { return this._rotationX }, setRotationX: function (a) { this._rotationX = a; this._rotationRadiansX = 0.017453292519943295 * this._rotationX; this.setNodeDirty() }, getRotationY: function () { return this._rotationY }, setRotationY: function (a) { this._rotationY = a; this._rotationRadiansY = 0.017453292519943295 * this._rotationY; this.setNodeDirty() }, getScale: function () { this._scaleX !== this._scaleY && cc.log(cc._LogInfos.Node_getScale); return this._scaleX }, setScale: function (a, b) { this._scaleX = a; this._scaleY = b || 0 === b ? b : a; this.setNodeDirty() }, getScaleX: function () { return this._scaleX }, setScaleX: function (a) { this._scaleX = a; this.setNodeDirty() }, getScaleY: function () { return this._scaleY }, setScaleY: function (a) { this._scaleY = a; this.setNodeDirty() }, setPosition: function (a, b) { var c = this._position; void 0 === b ? (c.x = a.x, c.y = a.y) : (c.x = a, c.y = b); this.setNodeDirty() }, getPosition: function () { return cc.p(this._position) }, getPositionX: function () { return this._position.x }, setPositionX: function (a) { this._position.x = a; this.setNodeDirty() }, getPositionY: function () { return this._position.y }, setPositionY: function (a) { this._position.y = a; this.setNodeDirty() }, getChildrenCount: function () { return this._children.length }, getChildren: function () { return this._children }, isVisible: function () { return this._visible }, setVisible: function (a) { this._visible != a && (this._visible = a) && this.setNodeDirty() }, getAnchorPoint: function () { return cc.p(this._anchorPoint) }, setAnchorPoint: function (a, b) { var c = this._anchorPoint; if (void 0 === b) { if (a.x === c.x && a.y === c.y) return; c.x = a.x; c.y = a.y } else { if (a === c.x && b === c.y) return; c.x = a; c.y = b } var d = this._anchorPointInPoints, e = this._contentSize; d.x = e.width * c.x; d.y = e.height * c.y; this.setNodeDirty() }, _getAnchor: function () { return this._anchorPoint }, _setAnchor: function (a) { var b = a.x; a = a.y; this._anchorPoint.x !== b && (this._anchorPoint.x = b, this._anchorPointInPoints.x = this._contentSize.width * b); this._anchorPoint.y !== a && (this._anchorPoint.y = a, this._anchorPointInPoints.y = this._contentSize.height * a); this.setNodeDirty() }, _getAnchorX: function () { return this._anchorPoint.x }, _setAnchorX: function (a) { this._anchorPoint.x !== a && (this._anchorPoint.x = a, this._anchorPointInPoints.x = this._contentSize.width * a, this.setNodeDirty()) }, _getAnchorY: function () { return this._anchorPoint.y }, _setAnchorY: function (a) { this._anchorPoint.y !== a && (this._anchorPoint.y = a, this._anchorPointInPoints.y = this._contentSize.height * a, this.setNodeDirty()) }, getAnchorPointInPoints: function () { return cc.p(this._anchorPointInPoints) }, _getWidth: function () { return this._contentSize.width }, _setWidth: function (a) { this._contentSize.width = a; this._anchorPointInPoints.x = a * this._anchorPoint.x; this.setNodeDirty() }, _getHeight: function () { return this._contentSize.height }, _setHeight: function (a) { this._contentSize.height = a; this._anchorPointInPoints.y = a * this._anchorPoint.y; this.setNodeDirty() }, getContentSize: function () { return cc.size(this._contentSize) }, setContentSize: function (a, b) { var c = this._contentSize; if (void 0 === b) { if (a.width === c.width && a.height === c.height) return; c.width = a.width; c.height = a.height } else { if (a === c.width && b === c.height) return; c.width = a; c.height = b } var d = this._anchorPointInPoints, e = this._anchorPoint; d.x = c.width * e.x; d.y = c.height * e.y; this.setNodeDirty() }, isRunning: function () { return this._running }, getParent: function () { return this._parent }, setParent: function (a) { this._parent = a }, isIgnoreAnchorPointForPosition: function () { return this._ignoreAnchorPointForPosition }, ignoreAnchorPointForPosition: function (a) { a != this._ignoreAnchorPointForPosition && (this._ignoreAnchorPointForPosition = a, this.setNodeDirty()) }, getTag: function () { return this.tag }, setTag: function (a) { this.tag = a }, setName: function (a) { this._name = a }, getName: function () { return this._name }, getUserData: function () { return this.userData }, setUserData: function (a) { this.userData = a }, getUserObject: function () { return this.userObject }, setUserObject: function (a) { this.userObject != a && (this.userObject = a) }, getOrderOfArrival: function () { return this.arrivalOrder }, setOrderOfArrival: function (a) { this.arrivalOrder = a }, getActionManager: function () { this._actionManager || (this._actionManager = cc.director.getActionManager()); return this._actionManager }, setActionManager: function (a) { this._actionManager != a && (this.stopAllActions(), this._actionManager = a) }, getScheduler: function () { this._scheduler || (this._scheduler = cc.director.getScheduler()); return this._scheduler }, setScheduler: function (a) { this._scheduler != a && (this.unscheduleAllCallbacks(), this._scheduler = a) }, boundingBox: function () { cc.log(cc._LogInfos.Node_boundingBox); return this.getBoundingBox() }, getBoundingBox: function () { var a = cc.rect(0, 0, this._contentSize.width, this._contentSize.height); return cc._rectApplyAffineTransformIn(a, this.getNodeToParentTransform()) }, cleanup: function () { this.stopAllActions(); this.unscheduleAllCallbacks(); cc.eventManager.removeListeners(this); this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.cleanup) }, getChildByTag: function (a) { var b = this._children; if (null != b) for (var c = 0; c < b.length; c++) { var d = b[c]; if (d && d.tag == a) return d } return null }, getChildByName: function (a) { if (!a) return cc.log("Invalid name"), null; for (var b = this._children, c = 0, d = b.length; c < d; c++) if (b[c]._name == a) return b[c]; return null }, addChild: function (a, b, c) { b = void 0 === b ? a._localZOrder : b; var d, e = !1; cc.isUndefined(c) ? (c = void 0, d = a._name) : cc.isString(c) ? (d = c, c = void 0) : cc.isNumber(c) && (e = !0, d = ""); cc.assert(a, cc._LogInfos.Node_addChild_3); cc.assert(null === a._parent, "child already added. It can't be added again"); this._addChildHelper(a, b, c, d, e) }, _addChildHelper: function (a, b, c, d, e) { this._children || (this._children = []); this._insertChild(a, b); e ? a.setTag(c) : a.setName(d); a.setParent(this); a.setOrderOfArrival(cc.s_globalOrderOfArrival++); if (this._running && (a.onEnter(), this._isTransitionFinished)) a.onEnterTransitionDidFinish(); this._cascadeColorEnabled && this._enableCascadeColor(); this._cascadeOpacityEnabled && this._enableCascadeOpacity() }, removeFromParent: function (a) { this._parent && (null == a && (a = !0), this._parent.removeChild(this, a)) }, removeFromParentAndCleanup: function (a) { cc.log(cc._LogInfos.Node_removeFromParentAndCleanup); this.removeFromParent(a) }, removeChild: function (a, b) { 0 !== this._children.length && (null == b && (b = !0), -1 < this._children.indexOf(a) && this._detachChild(a, b), this.setNodeDirty()) }, removeChildByTag: function (a, b) { a === cc.NODE_TAG_INVALID && cc.log(cc._LogInfos.Node_removeChildByTag); var c = this.getChildByTag(a); null == c ? cc.log(cc._LogInfos.Node_removeChildByTag_2, a) : this.removeChild(c, b) }, removeAllChildrenWithCleanup: function (a) { this.removeAllChildren(a) }, removeAllChildren: function (a) { var b = this._children; if (null != b) { null == a && (a = !0); for (var c = 0; c < b.length; c++) { var d = b[c]; d && (this._running && (d.onExitTransitionDidStart(), d.onExit()), a && d.cleanup(), d.parent = null) } this._children.length = 0 } }, _detachChild: function (a, b) { this._running && (a.onExitTransitionDidStart(), a.onExit()); b && a.cleanup(); a.parent = null; cc.arrayRemoveObject(this._children, a) }, _insertChild: function (a, b) { this._reorderChildDirty = !0; this._children.push(a); a._setLocalZOrder(b) }, reorderChild: function (a, b) { cc.assert(a, cc._LogInfos.Node_reorderChild); this._reorderChildDirty = !0; a.arrivalOrder = cc.s_globalOrderOfArrival; cc.s_globalOrderOfArrival++; a._setLocalZOrder(b); this.setNodeDirty() }, sortAllChildren: function () { if (this._reorderChildDirty) { var a = this._children, b = a.length, c, d, e; for (c = 1; c < b; c++) { e = a[c]; for (d = c - 1; 0 <= d;) { if (e._localZOrder < a[d]._localZOrder) a[d + 1] = a[d]; else if (e._localZOrder === a[d]._localZOrder && e.arrivalOrder < a[d].arrivalOrder) a[d + 1] = a[d]; else break; d-- } a[d + 1] = e } this._reorderChildDirty = !1 } }, draw: function (a) { }, transformAncestors: function () { null != this._parent && (this._parent.transformAncestors(), this._parent.transform()) }, onEnter: function () { this._isTransitionFinished = !1; this._running = !0; this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.onEnter); this.resume() }, onEnterTransitionDidFinish: function () { this._isTransitionFinished = !0; this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.onEnterTransitionDidFinish) }, onExitTransitionDidStart: function () { this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.onExitTransitionDidStart) }, onExit: function () { this._running = !1; this.pause(); this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.onExit); this.removeAllComponents() }, runAction: function (a) { cc.assert(a, cc._LogInfos.Node_runAction); this.actionManager.addAction(a, this, !this._running); return a }, stopAllActions: function () { this.actionManager && this.actionManager.removeAllActionsFromTarget(this) }, stopAction: function (a) { this.actionManager.removeAction(a) }, stopActionByTag: function (a) { a === cc.ACTION_TAG_INVALID ? cc.log(cc._LogInfos.Node_stopActionByTag) : this.actionManager.removeActionByTag(a, this) }, getActionByTag: function (a) { return a === cc.ACTION_TAG_INVALID ? (cc.log(cc._LogInfos.Node_getActionByTag), null) : this.actionManager.getActionByTag(a, this) }, getNumberOfRunningActions: function () { return this.actionManager.numberOfRunningActionsInTarget(this) }, scheduleUpdate: function () { this.scheduleUpdateWithPriority(0) }, scheduleUpdateWithPriority: function (a) { this.scheduler.scheduleUpdateForTarget(this, a, !this._running) }, unscheduleUpdate: function () { this.scheduler.unscheduleUpdateForTarget(this) }, schedule: function (a, b, c, d) { b = b || 0; cc.assert(a, cc._LogInfos.Node_schedule); cc.assert(0 <= b, cc._LogInfos.Node_schedule_2); c = null == c ? cc.REPEAT_FOREVER : c; this.scheduler.scheduleCallbackForTarget(this, a, b, c, d || 0, !this._running) }, scheduleOnce: function (a, b) { this.schedule(a, 0, 0, b) }, unschedule: function (a) { a && this.scheduler.unscheduleCallbackForTarget(this, a) }, unscheduleAllCallbacks: function () { this.scheduler.unscheduleAllCallbacksForTarget(this) }, resumeSchedulerAndActions: function () { cc.log(cc._LogInfos.Node_resumeSchedulerAndActions); this.resume() }, resume: function () { this.scheduler.resumeTarget(this); this.actionManager && this.actionManager.resumeTarget(this); cc.eventManager.resumeTarget(this) }, pauseSchedulerAndActions: function () { cc.log(cc._LogInfos.Node_pauseSchedulerAndActions); this.pause() }, pause: function () { this.scheduler.pauseTarget(this); this.actionManager && this.actionManager.pauseTarget(this); cc.eventManager.pauseTarget(this) }, setAdditionalTransform: function (a) { this._additionalTransform = a; this._additionalTransformDirty = this._transformDirty = !0 }, getParentToNodeTransform: function () { this._inverseDirty && (this._inverse = cc.affineTransformInvert(this.getNodeToParentTransform()), this._inverseDirty = !1); return this._inverse }, parentToNodeTransform: function () { return this.getParentToNodeTransform() }, getNodeToWorldTransform: function () { for (var a = this.getNodeToParentTransform(), b = this._parent; null != b; b = b.parent) a = cc.affineTransformConcat(a, b.getNodeToParentTransform()); return a }, nodeToWorldTransform: function () { return this.getNodeToWorldTransform() }, getWorldToNodeTransform: function () { return cc.affineTransformInvert(this.getNodeToWorldTransform()) }, worldToNodeTransform: function () { return this.getWorldToNodeTransform() }, convertToNodeSpace: function (a) { return cc.pointApplyAffineTransform(a, this.getWorldToNodeTransform()) }, convertToWorldSpace: function (a) { a = a || cc.p(0, 0); return cc.pointApplyAffineTransform(a, this.getNodeToWorldTransform()) }, convertToNodeSpaceAR: function (a) { return cc.pSub(this.convertToNodeSpace(a), this._anchorPointInPoints) }, convertToWorldSpaceAR: function (a) { a = a || cc.p(0, 0); a = cc.pAdd(a, this._anchorPointInPoints); return this.convertToWorldSpace(a) }, _convertToWindowSpace: function (a) { a = this.convertToWorldSpace(a); return cc.director.convertToUI(a) }, convertTouchToNodeSpace: function (a) { a = a.getLocation(); return this.convertToNodeSpace(a) }, convertTouchToNodeSpaceAR: function (a) { a = a.getLocation(); a = cc.director.convertToGL(a); return this.convertToNodeSpaceAR(a) }, update: function (a) { this._componentContainer && !this._componentContainer.isEmpty() && this._componentContainer.visit(a) }, updateTransform: function () { this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.updateTransform) }, retain: function () { }, release: function () { }, getComponent: function (a) { return this._componentContainer ? this._componentContainer.getComponent(a) : null }, addComponent: function (a) { this._componentContainer && this._componentContainer.add(a) }, removeComponent: function (a) { return this._componentContainer ? this._componentContainer.remove(a) : !1 }, removeAllComponents: function () { this._componentContainer && this._componentContainer.removeAll() }, grid: null, ctor: null, visit: null, transform: null, nodeToParentTransform: function () { return this.getNodeToParentTransform() }, getNodeToParentTransform: null, _setNodeDirtyForCache: function () { if (!1 === this._cacheDirty) { this._cacheDirty = !0; var a = this._cachedParent; a && a != this && a._setNodeDirtyForCache() } }, _setCachedParent: function (a) { if (this._cachedParent != a) { this._cachedParent = a; for (var b = this._children, c = 0, d = b.length; c < d; c++) b[c]._setCachedParent(a) } }, getCamera: function () { this._camera || (this._camera = new cc.Camera); return this._camera }, getGrid: function () { return this.grid }, setGrid: function (a) { this.grid = a }, getShaderProgram: function () { return this._shaderProgram }, setShaderProgram: function (a) { this._shaderProgram = a }, getGLServerState: function () { return this._glServerState }, setGLServerState: function (a) { this._glServerState = a }, getBoundingBoxToWorld: function () { var a = cc.rect(0, 0, this._contentSize.width, this._contentSize.height), b = this.getNodeToWorldTransform(), a = cc.rectApplyAffineTransform(a, this.getNodeToWorldTransform()); if (!this._children) return a; for (var c = this._children, d = 0; d < c.length; d++) { var e = c[d]; e && e._visible && (e = e._getBoundingBoxToCurrentNode(b)) && (a = cc.rectUnion(a, e)) } return a }, _getBoundingBoxToCurrentNode: function (a) { var b = cc.rect(0, 0, this._contentSize.width, this._contentSize.height); a = null == a ? this.getNodeToParentTransform() : cc.affineTransformConcat(this.getNodeToParentTransform(), a); b = cc.rectApplyAffineTransform(b, a); if (!this._children) return b; for (var c = this._children, d = 0; d < c.length; d++) { var e = c[d]; e && e._visible && (e = e._getBoundingBoxToCurrentNode(a)) && (b = cc.rectUnion(b, e)) } return b }, _getNodeToParentTransformForWebGL: function () { if (this._transformDirty) { var a = this._position.x, b = this._position.y, c = this._anchorPointInPoints.x, d = -c, e = this._anchorPointInPoints.y, f = -e, g = this._scaleX, h = this._scaleY; this._ignoreAnchorPointForPosition && (a += c, b += e); var k = 1, m = 0, n = 1, q = 0; if (0 !== this._rotationX || 0 !== this._rotationY) k = Math.cos(-this._rotationRadiansX), m = Math.sin(-this._rotationRadiansX), n = Math.cos(-this._rotationRadiansY), q = Math.sin(-this._rotationRadiansY); var r = this._skewX || this._skewY; r || 0 === c && 0 === e || (a += n * d * g + -m * f * h, b += q * d * g + k * f * h); var s = this._transform; s.a = n * g; s.b = q * g; s.c = -m * h; s.d = k * h; s.tx = a; s.ty = b; r && (s = cc.affineTransformConcat({ a: 1, b: Math.tan(cc.degreesToRadians(this._skewY)), c: Math.tan(cc.degreesToRadians(this._skewX)), d: 1, tx: 0, ty: 0 }, s), 0 !== c || 0 !== e) && (s = cc.affineTransformTranslate(s, d, f)); this._additionalTransformDirty && (s = cc.affineTransformConcat(s, this._additionalTransform), this._additionalTransformDirty = !1); this._transform = s; this._transformDirty = !1 } return this._transform }, _updateColor: function () { }, getOpacity: function () { return this._realOpacity }, getDisplayedOpacity: function () { return this._displayedOpacity }, setOpacity: function (a) { this._displayedOpacity = this._realOpacity = a; var b = 255, c = this._parent; c && c.cascadeOpacity && (b = c.getDisplayedOpacity()); this.updateDisplayedOpacity(b); this._displayedColor.a = this._realColor.a = a }, updateDisplayedOpacity: function (a) { this._displayedOpacity = this._realOpacity * a / 255; if (this._cascadeOpacityEnabled) { a = this._children; for (var b = 0; b < a.length; b++) { var c = a[b]; c && c.updateDisplayedOpacity(this._displayedOpacity) } } }, isCascadeOpacityEnabled: function () { return this._cascadeOpacityEnabled }, setCascadeOpacityEnabled: function (a) { this._cascadeOpacityEnabled !== a && ((this._cascadeOpacityEnabled = a) ? this._enableCascadeOpacity() : this._disableCascadeOpacity()) }, _enableCascadeOpacity: function () { var a = 255, b = this._parent; b && b.cascadeOpacity && (a = b.getDisplayedOpacity()); this.updateDisplayedOpacity(a) }, _disableCascadeOpacity: function () { this._displayedOpacity = this._realOpacity; for (var a = this._children, b = 0; b < a.length; b++) { var c = a[b]; c && c.updateDisplayedOpacity(255) } }, getColor: function () { var a = this._realColor; return cc.color(a.r, a.g, a.b, a.a) }, getDisplayedColor: function () { var a = this._displayedColor; return cc.color(a.r, a.g, a.b, a.a) }, setColor: function (a) { var b = this._displayedColor, c = this._realColor; b.r = c.r = a.r; b.g = c.g = a.g; b.b = c.b = a.b; a = (a = this._parent) && a.cascadeColor ? a.getDisplayedColor() : cc.color.WHITE; this.updateDisplayedColor(a) }, updateDisplayedColor: function (a) { var b = this._displayedColor, c = this._realColor; b.r = 0 | c.r * a.r / 255; b.g = 0 | c.g * a.g / 255; b.b = 0 | c.b * a.b / 255; if (this._cascadeColorEnabled) for (a = this._children, c = 0; c < a.length; c++) { var d = a[c]; d && d.updateDisplayedColor(b) } }, isCascadeColorEnabled: function () { return this._cascadeColorEnabled }, setCascadeColorEnabled: function (a) { this._cascadeColorEnabled !== a && ((this._cascadeColorEnabled = a) ? this._enableCascadeColor() : this._disableCascadeColor()) }, _enableCascadeColor: function () { var a; a = (a = this._parent) && a.cascadeColor ? a.getDisplayedColor() : cc.color.WHITE; this.updateDisplayedColor(a) }, _disableCascadeColor: function () { var a = this._displayedColor, b = this._realColor; a.r = b.r; a.g = b.g; a.b = b.b; for (var a = this._children, b = cc.color.WHITE, c = 0; c < a.length; c++) { var d = a[c]; d && d.updateDisplayedColor(b) } }, setOpacityModifyRGB: function (a) { }, isOpacityModifyRGB: function () { return !1 } }); cc.Node.create = function () { return new cc.Node }; cc.Node._StateCallbackType = { onEnter: 1, onExit: 2, cleanup: 3, onEnterTransitionDidFinish: 4, updateTransform: 5, onExitTransitionDidStart: 6, sortAllChildren: 7 }; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.Node.prototype, _p.ctor = function () { this._initNode() }, _p.setNodeDirty = function () { this._setNodeDirtyForCache(); !1 === this._transformDirty && (this._transformDirty = this._inverseDirty = !0) }, _p.visit = function (a) { if (this._visible) { a = a || cc._renderContext; var b, c = this._children, d; a.save(); this.transform(a); var e = c.length; if (0 < e) { this.sortAllChildren(); for (b = 0; b < e; b++) if (d = c[b], 0 > d._localZOrder) d.visit(a); else break; for (this.draw(a) ; b < e; b++) c[b].visit(a) } else this.draw(a); this._cacheDirty = !1; this.arrivalOrder = 0; a.restore() } }, _p.transform = function (a) { a = a || cc._renderContext; var b = cc.view, c = this.getNodeToParentTransform(); a.transform(c.a, c.c, c.b, c.d, c.tx * b.getScaleX(), -c.ty * b.getScaleY()) }, _p.getNodeToParentTransform = function () { if (this._transformDirty) { var a = this._transform; a.tx = this._position.x; a.ty = this._position.y; var b = 1, c = 0; this._rotationX && (b = Math.cos(this._rotationRadiansX), c = Math.sin(this._rotationRadiansX)); a.a = a.d = b; a.b = -c; a.c = c; var d = this._scaleX, e = this._scaleY, f = this._anchorPointInPoints.x, g = this._anchorPointInPoints.y, h = 1E-6 > d && -1E-6 < d ? 1E-6 : d, k = 1E-6 > e && -1E-6 < e ? 1E-6 : e; if (this._skewX || this._skewY) { var m = Math.tan(-this._skewX * Math.PI / 180), n = Math.tan(-this._skewY * Math.PI / 180); Infinity === m && (m = 99999999); Infinity === n && (n = 99999999); var q = g * m * h, r = f * n * k; a.a = b + -c * n; a.b = b * m + -c; a.c = c + b * n; a.d = c * m + b; a.tx += b * q + -c * r; a.ty += c * q + b * r } if (1 !== d || 1 !== e) a.a *= h, a.c *= h, a.b *= k, a.d *= k; a.tx += b * -f * h + -c * g * k; a.ty -= c * -f * h + b * g * k; this._ignoreAnchorPointForPosition && (a.tx += f, a.ty += g); this._additionalTransformDirty && (this._transform = cc.affineTransformConcat(a, this._additionalTransform), this._additionalTransformDirty = !1); this._transformDirty = !1 } return this._transform }, _p = null) : (cc.assert(cc.isFunction(cc._tmp.WebGLCCNode), cc._LogInfos.MissingFile, "BaseNodesWebGL.js"), cc._tmp.WebGLCCNode(), delete cc._tmp.WebGLCCNode); cc.assert(cc.isFunction(cc._tmp.PrototypeCCNode), cc._LogInfos.MissingFile, "BaseNodesPropertyDefine.js"); cc._tmp.PrototypeCCNode(); delete cc._tmp.PrototypeCCNode; cc.AtlasNode = cc.Node.extend({ textureAtlas: null, quadsToDraw: 0, _itemsPerRow: 0, _itemsPerColumn: 0, _itemWidth: 0, _itemHeight: 0, _colorUnmodified: null, _opacityModifyRGB: !1, _blendFunc: null, _ignoreContentScaleFactor: !1, _className: "AtlasNode", ctor: function (a, b, c, d) { cc.Node.prototype.ctor.call(this); this._colorUnmodified = cc.color.WHITE; this._blendFunc = { src: cc.BLEND_SRC, dst: cc.BLEND_DST }; this._ignoreContentScaleFactor = !1; void 0 !== d && this.initWithTileFile(a, b, c, d) }, updateAtlasValues: function () { cc.log(cc._LogInfos.AtlasNode_updateAtlasValues) }, getColor: function () { return this._opacityModifyRGB ? this._colorUnmodified : cc.Node.prototype.getColor.call(this) }, setOpacityModifyRGB: function (a) { var b = this.color; this._opacityModifyRGB = a; this.color = b }, isOpacityModifyRGB: function () { return this._opacityModifyRGB }, getBlendFunc: function () { return this._blendFunc }, setBlendFunc: function (a, b) { this._blendFunc = void 0 === b ? a : { src: a, dst: b } }, setTextureAtlas: function (a) { this.textureAtlas = a }, getTextureAtlas: function () { return this.textureAtlas }, getQuadsToDraw: function () { return this.quadsToDraw }, setQuadsToDraw: function (a) { this.quadsToDraw = a }, _textureForCanvas: null, _originalTexture: null, _uniformColor: null, _colorF32Array: null, initWithTileFile: function (a, b, c, d) { if (!a) throw "cc.AtlasNode.initWithTileFile(): title should not be null"; a = cc.textureCache.addImage(a); return this.initWithTexture(a, b, c, d) }, initWithTexture: null, _initWithTextureForCanvas: function (a, b, c, d) { this._itemWidth = b; this._itemHeight = c; this._opacityModifyRGB = !0; this._originalTexture = a; if (!this._originalTexture) return cc.log(cc._LogInfos.AtlasNode__initWithTexture), !1; this._textureForCanvas = this._originalTexture; this._calculateMaxItems(); this.quadsToDraw = d; return !0 }, _initWithTextureForWebGL: function (a, b, c, d) { this._itemWidth = b; this._itemHeight = c; this._colorUnmodified = cc.color.WHITE; this._opacityModifyRGB = !0; this._blendFunc.src = cc.BLEND_SRC; this._blendFunc.dst = cc.BLEND_DST; b = this._realColor; this._colorF32Array = new Float32Array([b.r / 255, b.g / 255, b.b / 255, this._realOpacity / 255]); this.textureAtlas = new cc.TextureAtlas; this.textureAtlas.initWithTexture(a, d); if (!this.textureAtlas) return cc.log(cc._LogInfos.AtlasNode__initWithTexture), !1; this._updateBlendFunc(); this._updateOpacityModifyRGB(); this._calculateMaxItems(); this.quadsToDraw = d; this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURE_UCOLOR); this._uniformColor = cc._renderContext.getUniformLocation(this.shaderProgram.getProgram(), "u_color"); return !0 }, draw: null, _drawForWebGL: function (a) { a = a || cc._renderContext; cc.nodeDrawSetup(this); cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst); this._uniformColor && this._colorF32Array && (a.uniform4fv(this._uniformColor, this._colorF32Array), this.textureAtlas.drawNumberOfQuads(this.quadsToDraw, 0)) }, setColor: null, _setColorForCanvas: function (a) { var b = this._realColor; if (b.r != a.r || b.g != a.g || b.b != a.b) { b = cc.color(a.r, a.g, a.b); this._colorUnmodified = a; if (this._opacityModifyRGB) { var c = this._displayedOpacity; b.r = b.r * c / 255; b.g = b.g * c / 255; b.b = b.b * c / 255 } cc.Node.prototype.setColor.call(this, a); this._changeTextureColor() } }, _changeTextureColor: function () { var a = this.getTexture(); if (a && this._originalTexture) { var b = this._originalTexture.getHtmlElementObj(); if (b) { var c = a.getHtmlElementObj(), a = cc.rect(0, 0, b.width, b.height); c instanceof HTMLCanvasElement ? cc.generateTintImageWithMultiply(b, this._displayedColor, a, c) : (c = cc.generateTintImageWithMultiply(b, this._displayedColor, a), a = new cc.Texture2D, a.initWithElement(c), a.handleLoadedTexture(), this.setTexture(a)) } } }, _setColorForWebGL: function (a) { var b = cc.color(a.r, a.g, a.b); this._colorUnmodified = a; var c = this._displayedOpacity; this._opacityModifyRGB && (b.r = b.r * c / 255, b.g = b.g * c / 255, b.b = b.b * c / 255); cc.Node.prototype.setColor.call(this, a); a = this._displayedColor; this._colorF32Array = new Float32Array([a.r / 255, a.g / 255, a.b / 255, c / 255]) }, setOpacity: function (a) { }, _setOpacityForCanvas: function (a) { cc.Node.prototype.setOpacity.call(this, a); this._opacityModifyRGB && (this.color = this._colorUnmodified) }, _setOpacityForWebGL: function (a) { cc.Node.prototype.setOpacity.call(this, a); this._opacityModifyRGB ? this.color = this._colorUnmodified : (a = this._displayedColor, this._colorF32Array = new Float32Array([a.r / 255, a.g / 255, a.b / 255, this._displayedOpacity / 255])) }, getTexture: null, _getTextureForCanvas: function () { return this._textureForCanvas }, _getTextureForWebGL: function () { return this.textureAtlas.texture }, setTexture: null, _setTextureForCanvas: function (a) { this._textureForCanvas = a }, _setTextureForWebGL: function (a) { this.textureAtlas.texture = a; this._updateBlendFunc(); this._updateOpacityModifyRGB() }, _calculateMaxItems: null, _calculateMaxItemsForCanvas: function () { var a = this.texture.getContentSize(); this._itemsPerColumn = 0 | a.height / this._itemHeight; this._itemsPerRow = 0 | a.width / this._itemWidth }, _calculateMaxItemsForWebGL: function () { var a = this.texture, b = a.getContentSize(); this._ignoreContentScaleFactor && (b = a.getContentSizeInPixels()); this._itemsPerColumn = 0 | b.height / this._itemHeight; this._itemsPerRow = 0 | b.width / this._itemWidth }, _updateBlendFunc: function () { this.textureAtlas.texture.hasPremultipliedAlpha() || (this._blendFunc.src = cc.SRC_ALPHA, this._blendFunc.dst = cc.ONE_MINUS_SRC_ALPHA) }, _updateOpacityModifyRGB: function () { this._opacityModifyRGB = this.textureAtlas.texture.hasPremultipliedAlpha() }, _setIgnoreContentScaleFactor: function (a) { this._ignoreContentScaleFactor = a } }); _p = cc.AtlasNode.prototype; cc._renderType === cc._RENDER_TYPE_WEBGL ? (_p.initWithTexture = _p._initWithTextureForWebGL, _p.draw = _p._drawForWebGL, _p.setColor = _p._setColorForWebGL, _p.setOpacity = _p._setOpacityForWebGL, _p.getTexture = _p._getTextureForWebGL, _p.setTexture = _p._setTextureForWebGL, _p._calculateMaxItems = _p._calculateMaxItemsForWebGL) : (_p.initWithTexture = _p._initWithTextureForCanvas, _p.draw = cc.Node.prototype.draw, _p.setColor = _p._setColorForCanvas, _p.setOpacity = _p._setOpacityForCanvas, _p.getTexture = _p._getTextureForCanvas, _p.setTexture = _p._setTextureForCanvas, _p._calculateMaxItems = _p._calculateMaxItemsForCanvas, cc.sys._supportCanvasNewBlendModes || (_p._changeTextureColor = function () { var a, b = this.getTexture(); if (b && this._originalTexture && (a = b.getHtmlElementObj())) { var c = this._originalTexture.getHtmlElementObj(); if (b = cc.textureCache.getTextureColors(c)) c = cc.rect(0, 0, c.width, c.height), a instanceof HTMLCanvasElement ? cc.generateTintImage(a, b, this._displayedColor, c, a) : (a = cc.generateTintImage(a, b, this._displayedColor, c), b = new cc.Texture2D, b.initWithElement(a), b.handleLoadedTexture(), this.setTexture(b)) } })); cc.defineGetterSetter(_p, "opacity", _p.getOpacity, _p.setOpacity); cc.defineGetterSetter(_p, "color", _p.getColor, _p.setColor); cc.defineGetterSetter(_p, "texture", _p.getTexture, _p.setTexture); cc.AtlasNode.create = function (a, b, c, d) { return new cc.AtlasNode(a, b, c, d) }; cc._tmp.WebGLTexture2D = function () { cc.Texture2D = cc.Class.extend({ _pVRHaveAlphaPremultiplied: !0, _pixelFormat: null, _pixelsWide: 0, _pixelsHigh: 0, _name: "", _contentSize: null, maxS: 0, maxT: 0, _hasPremultipliedAlpha: !1, _hasMipmaps: !1, shaderProgram: null, _isLoaded: !1, _htmlElementObj: null, _webTextureObj: null, url: null, _loadedEventListeners: null, ctor: function () { this._contentSize = cc.size(0, 0); this._pixelFormat = cc.Texture2D.defaultPixelFormat }, releaseTexture: function () { this._webTextureObj && cc._renderContext.deleteTexture(this._webTextureObj); cc.loader.release(this.url) }, getPixelFormat: function () { return this._pixelFormat }, getPixelsWide: function () { return this._pixelsWide }, getPixelsHigh: function () { return this._pixelsHigh }, getName: function () { return this._webTextureObj }, getContentSize: function () { return cc.size(this._contentSize.width / cc.contentScaleFactor(), this._contentSize.height / cc.contentScaleFactor()) }, _getWidth: function () { return this._contentSize.width / cc.contentScaleFactor() }, _getHeight: function () { return this._contentSize.height / cc.contentScaleFactor() }, getContentSizeInPixels: function () { return this._contentSize }, getMaxS: function () { return this.maxS }, setMaxS: function (a) { this.maxS = a }, getMaxT: function () { return this.maxT }, setMaxT: function (a) { this.maxT = a }, getShaderProgram: function () { return this.shaderProgram }, setShaderProgram: function (a) { this.shaderProgram = a }, hasPremultipliedAlpha: function () { return this._hasPremultipliedAlpha }, hasMipmaps: function () { return this._hasMipmaps }, description: function () { return "\x3ccc.Texture2D | Name \x3d " + this._name + " | Dimensions \x3d " + this._pixelsWide + " x " + this._pixelsHigh + " | Coordinates \x3d (" + this.maxS + ", " + this.maxT + ")\x3e" }, releaseData: function (a) { }, keepData: function (a, b) { return a }, initWithData: function (a, b, c, d, e) { var f = cc.Texture2D, g = cc._renderContext, h = g.RGBA, k = g.UNSIGNED_BYTE, m = c * cc.Texture2D._B[b] / 8; 0 === m % 8 ? g.pixelStorei(g.UNPACK_ALIGNMENT, 8) : 0 === m % 4 ? g.pixelStorei(g.UNPACK_ALIGNMENT, 4) : 0 === m % 2 ? g.pixelStorei(g.UNPACK_ALIGNMENT, 2) : g.pixelStorei(g.UNPACK_ALIGNMENT, 1); this._webTextureObj = g.createTexture(); cc.glBindTexture2D(this); g.texParameteri(g.TEXTURE_2D, g.TEXTURE_MIN_FILTER, g.LINEAR); g.texParameteri(g.TEXTURE_2D, g.TEXTURE_MAG_FILTER, g.LINEAR); g.texParameteri(g.TEXTURE_2D, g.TEXTURE_WRAP_S, g.CLAMP_TO_EDGE); g.texParameteri(g.TEXTURE_2D, g.TEXTURE_WRAP_T, g.CLAMP_TO_EDGE); switch (b) { case f.PIXEL_FORMAT_RGBA8888: h = g.RGBA; break; case f.PIXEL_FORMAT_RGB888: h = g.RGB; break; case f.PIXEL_FORMAT_RGBA4444: k = g.UNSIGNED_SHORT_4_4_4_4; break; case f.PIXEL_FORMAT_RGB5A1: k = g.UNSIGNED_SHORT_5_5_5_1; break; case f.PIXEL_FORMAT_RGB565: k = g.UNSIGNED_SHORT_5_6_5; break; case f.PIXEL_FORMAT_AI88: h = g.LUMINANCE_ALPHA; break; case f.PIXEL_FORMAT_A8: h = g.ALPHA; break; case f.PIXEL_FORMAT_I8: h = g.LUMINANCE; break; default: cc.assert(0, cc._LogInfos.Texture2D_initWithData) } g.texImage2D(g.TEXTURE_2D, 0, h, c, d, 0, h, k, a); this._contentSize.width = e.width; this._contentSize.height = e.height; this._pixelsWide = c; this._pixelsHigh = d; this._pixelFormat = b; this.maxS = e.width / c; this.maxT = e.height / d; this._hasMipmaps = this._hasPremultipliedAlpha = !1; this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURE); return this._isLoaded = !0 }, drawAtPoint: function (a) { var b = [0, this.maxT, this.maxS, this.maxT, 0, 0, this.maxS, 0], c = this._pixelsWide * this.maxS, d = this._pixelsHigh * this.maxT; a = [a.x, a.y, 0, c + a.x, a.y, 0, a.x, d + a.y, 0, c + a.x, d + a.y, 0]; cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION | cc.VERTEX_ATTRIB_FLAG_TEX_COORDS); this._shaderProgram.use(); this._shaderProgram.setUniformsForBuiltins(); cc.glBindTexture2D(this); c = cc._renderContext; c.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, c.FLOAT, !1, 0, a); c.vertexAttribPointer(cc.VERTEX_ATTRIB_TEX_COORDS, 2, c.FLOAT, !1, 0, b); c.drawArrays(c.TRIANGLE_STRIP, 0, 4) }, drawInRect: function (a) { var b = [0, this.maxT, this.maxS, this.maxT, 0, 0, this.maxS, 0]; a = [a.x, a.y, a.x + a.width, a.y, a.x, a.y + a.height, a.x + a.width, a.y + a.height]; cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION | cc.VERTEX_ATTRIB_FLAG_TEX_COORDS); this._shaderProgram.use(); this._shaderProgram.setUniformsForBuiltins(); cc.glBindTexture2D(this); var c = cc._renderContext; c.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, c.FLOAT, !1, 0, a); c.vertexAttribPointer(cc.VERTEX_ATTRIB_TEX_COORDS, 2, c.FLOAT, !1, 0, b); c.drawArrays(c.TRIANGLE_STRIP, 0, 4) }, initWithImage: function (a) { if (null == a) return cc.log(cc._LogInfos.Texture2D_initWithImage), !1; var b = a.getWidth(), c = a.getHeight(), d = cc.configuration.getMaxTextureSize(); if (b > d || c > d) return cc.log(cc._LogInfos.Texture2D_initWithImage_2, b, c, d, d), !1; this._isLoaded = !0; return this._initPremultipliedATextureWithImage(a, b, c) }, initWithElement: function (a) { a && (this._webTextureObj = cc._renderContext.createTexture(), this._htmlElementObj = a) }, getHtmlElementObj: function () { return this._htmlElementObj }, isLoaded: function () { return this._isLoaded }, handleLoadedTexture: function () { if (cc._rendererInitialized) { if (!this._htmlElementObj) { var a = cc.loader.getRes(this.url); if (!a) return; this.initWithElement(a) } this._htmlElementObj.width && this._htmlElementObj.height && (this._isLoaded = !0, a = cc._renderContext, cc.glBindTexture2D(this), a.pixelStorei(a.UNPACK_ALIGNMENT, 4), a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, a.RGBA, a.UNSIGNED_BYTE, this._htmlElementObj), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.LINEAR), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_S, a.CLAMP_TO_EDGE), a.texParameteri(a.TEXTURE_2D, a.TEXTURE_WRAP_T, a.CLAMP_TO_EDGE), this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURE), cc.glBindTexture2D(null), a = this._htmlElementObj.height, this._pixelsWide = this._contentSize.width = this._htmlElementObj.width, this._pixelsHigh = this._contentSize.height = a, this._pixelFormat = cc.Texture2D.PIXEL_FORMAT_RGBA8888, this.maxT = this.maxS = 1, this._hasMipmaps = this._hasPremultipliedAlpha = !1, this._callLoadedEventCallbacks()) } }, initWithString: function (a, b, c, d, e, f) { cc.log(cc._LogInfos.Texture2D_initWithString); return null }, initWithETCFile: function (a) { cc.log(cc._LogInfos.Texture2D_initWithETCFile_2); return !1 }, initWithPVRFile: function (a) { cc.log(cc._LogInfos.Texture2D_initWithPVRFile_2); return !1 }, initWithPVRTCData: function (a, b, c, d, e, f) { cc.log(cc._LogInfos.Texture2D_initWithPVRTCData_2); return !1 }, setTexParameters: function (a, b, c, d) { var e = cc._renderContext; void 0 !== b && (a = { minFilter: a, magFilter: b, wrapS: c, wrapT: d }); cc.assert(this._pixelsWide == cc.NextPOT(this._pixelsWide) && this._pixelsHigh == cc.NextPOT(this._pixelsHigh) || a.wrapS == e.CLAMP_TO_EDGE && a.wrapT == e.CLAMP_TO_EDGE, "WebGLRenderingContext.CLAMP_TO_EDGE should be used in NPOT textures"); cc.glBindTexture2D(this); e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, a.minFilter); e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, a.magFilter); e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, a.wrapS); e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, a.wrapT) }, setAntiAliasTexParameters: function () { var a = cc._renderContext; cc.glBindTexture2D(this); this._hasMipmaps ? a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR_MIPMAP_NEAREST) : a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.LINEAR); a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST) }, setAliasTexParameters: function () { var a = cc._renderContext; cc.glBindTexture2D(this); this._hasMipmaps ? a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST_MIPMAP_NEAREST) : a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MIN_FILTER, a.NEAREST); a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER, a.NEAREST) }, generateMipmap: function () { cc.assert(this._pixelsWide == cc.NextPOT(this._pixelsWide) && this._pixelsHigh == cc.NextPOT(this._pixelsHigh), "Mimpap texture only works in POT textures"); cc.glBindTexture2D(this); cc._renderContext.generateMipmap(cc._renderContext.TEXTURE_2D); this._hasMipmaps = !0 }, stringForFormat: function () { return cc.Texture2D._M[this._pixelFormat] }, bitsPerPixelForFormat: function (a) { a = a || this._pixelFormat; var b = cc.Texture2D._B[a]; if (null != b) return b; cc.log(cc._LogInfos.Texture2D_bitsPerPixelForFormat, a); return -1 }, _initPremultipliedATextureWithImage: function (a, b, c) { var d = cc.Texture2D, e = a.getData(), f = null, f = null, g = a.hasAlpha(), h = cc.size(a.getWidth(), a.getHeight()), k = d.defaultPixelFormat, m = a.getBitsPerComponent(); g || (8 <= m ? k = d.PIXEL_FORMAT_RGB888 : (cc.log(cc._LogInfos.Texture2D__initPremultipliedATextureWithImage), k = d.PIXEL_FORMAT_RGB565)); var n = b * c; if (k == d.PIXEL_FORMAT_RGB565) if (g) for (e = new Uint16Array(b * c), f = a.getData(), m = 0; m < n; ++m) e[m] = (f[m] >> 0 & 255) >> 3 << 11 | (f[m] >> 8 & 255) >> 2 << 5 | (f[m] >> 16 & 255) >> 3 << 0; else for (e = new Uint16Array(b * c), f = a.getData(), m = 0; m < n; ++m) e[m] = (f[m] & 255) >> 3 << 11 | (f[m] & 255) >> 2 << 5 | (f[m] & 255) >> 3 << 0; else if (k == d.PIXEL_FORMAT_RGBA4444) for (e = new Uint16Array(b * c), f = a.getData(), m = 0; m < n; ++m) e[m] = (f[m] >> 0 & 255) >> 4 << 12 | (f[m] >> 8 & 255) >> 4 << 8 | (f[m] >> 16 & 255) >> 4 << 4 | (f[m] >> 24 & 255) >> 4 << 0; else if (k == d.PIXEL_FORMAT_RGB5A1) for (e = new Uint16Array(b * c), f = a.getData(), m = 0; m < n; ++m) e[m] = (f[m] >> 0 & 255) >> 3 << 11 | (f[m] >> 8 & 255) >> 3 << 6 | (f[m] >> 16 & 255) >> 3 << 1 | (f[m] >> 24 & 255) >> 7 << 0; else if (k == d.PIXEL_FORMAT_A8) for (e = new Uint8Array(b * c), f = a.getData(), m = 0; m < n; ++m) e[m] = f >> 24 & 255; if (g && k == d.PIXEL_FORMAT_RGB888) for (f = a.getData(), e = new Uint8Array(b * c * 3), m = 0; m < n; ++m) e[3 * m] = f >> 0 & 255, e[3 * m + 1] = f >> 8 & 255, e[3 * m + 2] = f >> 16 & 255; this.initWithData(e, k, b, c, h); a.getData(); this._hasPremultipliedAlpha = a.isPremultipliedAlpha(); return !0 }, addLoadedEventListener: function (a, b) { this._loadedEventListeners || (this._loadedEventListeners = []); this._loadedEventListeners.push({ eventCallback: a, eventTarget: b }) }, removeLoadedEventListener: function (a) { if (this._loadedEventListeners) for (var b = this._loadedEventListeners, c = 0; c < b.length; c++) b[c].eventTarget == a && b.splice(c, 1) }, _callLoadedEventCallbacks: function () { if (this._loadedEventListeners) { for (var a = this._loadedEventListeners, b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } } }) }; cc._tmp.WebGLTextureAtlas = function () { var a = cc.TextureAtlas.prototype; a._setupVBO = function () { var a = cc._renderContext; this._buffersVBO[0] = a.createBuffer(); this._buffersVBO[1] = a.createBuffer(); this._quadsWebBuffer = a.createBuffer(); this._mapBuffers() }; a._mapBuffers = function () { var a = cc._renderContext; a.bindBuffer(a.ARRAY_BUFFER, this._quadsWebBuffer); a.bufferData(a.ARRAY_BUFFER, this._quadsArrayBuffer, a.DYNAMIC_DRAW); a.bindBuffer(a.ELEMENT_ARRAY_BUFFER, this._buffersVBO[1]); a.bufferData(a.ELEMENT_ARRAY_BUFFER, this._indices, a.STATIC_DRAW) }; a.drawNumberOfQuads = function (a, c) { c = c || 0; if (0 !== a && this.texture && this.texture.isLoaded()) { var d = cc._renderContext; cc.glBindTexture2D(this.texture); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POS_COLOR_TEX); d.bindBuffer(d.ARRAY_BUFFER, this._quadsWebBuffer); this.dirty && d.bufferData(d.ARRAY_BUFFER, this._quadsArrayBuffer, d.DYNAMIC_DRAW); d.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 3, d.FLOAT, !1, 24, 0); d.vertexAttribPointer(cc.VERTEX_ATTRIB_COLOR, 4, d.UNSIGNED_BYTE, !0, 24, 12); d.vertexAttribPointer(cc.VERTEX_ATTRIB_TEX_COORDS, 2, d.FLOAT, !1, 24, 16); this.dirty && (this.dirty = !1); d.bindBuffer(d.ELEMENT_ARRAY_BUFFER, this._buffersVBO[1]); cc.TEXTURE_ATLAS_USE_TRIANGLE_STRIP ? d.drawElements(d.TRIANGLE_STRIP, 6 * a, d.UNSIGNED_SHORT, 6 * c * this._indices.BYTES_PER_ELEMENT) : d.drawElements(d.TRIANGLES, 6 * a, d.UNSIGNED_SHORT, 6 * c * this._indices.BYTES_PER_ELEMENT); cc.g_NumberOfDraws++ } } }; cc._tmp.WebGLTextureCache = function () { var a = cc.textureCache; a.handleLoadedTexture = function (a) { var c = this._textures; cc._rendererInitialized || (c = this._loadedTexturesBefore); var d = c[a]; d || (d = c[a] = new cc.Texture2D, d.url = a); d.handleLoadedTexture() }; a.addImage = function (a, c, d) { cc.assert(a, cc._LogInfos.Texture2D_addImage_2); var e = this._textures; cc._rendererInitialized || (e = this._loadedTexturesBefore); var f = e[a] || e[cc.loader._aliases[a]]; if (f) return c && c.call(d, f), f; cc.loader.getRes(a) || (cc.loader._checkIsImageURL(a) ? cc.loader.load(a, function (a) { c && c.call(d) }) : cc.loader.loadImg(a, function (e, h) { if (e) return c ? c(e) : e; cc.loader.cache[a] = h; cc.textureCache.handleLoadedTexture(a); c && c.call(d, f) })); f = e[a] = new cc.Texture2D; f.url = a; return f }; delete a }; cc._tmp.PrototypeTexture2D = function () { var a = cc.Texture2D; a.PVRImagesHavePremultipliedAlpha = function (a) { cc.PVRHaveAlphaPremultiplied_ = a }; a.PIXEL_FORMAT_RGBA8888 = 2; a.PIXEL_FORMAT_RGB888 = 3; a.PIXEL_FORMAT_RGB565 = 4; a.PIXEL_FORMAT_A8 = 5; a.PIXEL_FORMAT_I8 = 6; a.PIXEL_FORMAT_AI88 = 7; a.PIXEL_FORMAT_RGBA4444 = 8; a.PIXEL_FORMAT_RGB5A1 = 7; a.PIXEL_FORMAT_PVRTC4 = 9; a.PIXEL_FORMAT_PVRTC2 = 10; a.PIXEL_FORMAT_DEFAULT = a.PIXEL_FORMAT_RGBA8888; var b = cc.Texture2D._M = {}; b[a.PIXEL_FORMAT_RGBA8888] = "RGBA8888"; b[a.PIXEL_FORMAT_RGB888] = "RGB888"; b[a.PIXEL_FORMAT_RGB565] = "RGB565"; b[a.PIXEL_FORMAT_A8] = "A8"; b[a.PIXEL_FORMAT_I8] = "I8"; b[a.PIXEL_FORMAT_AI88] = "AI88"; b[a.PIXEL_FORMAT_RGBA4444] = "RGBA4444"; b[a.PIXEL_FORMAT_RGB5A1] = "RGB5A1"; b[a.PIXEL_FORMAT_PVRTC4] = "PVRTC4"; b[a.PIXEL_FORMAT_PVRTC2] = "PVRTC2"; b = cc.Texture2D._B = {}; b[a.PIXEL_FORMAT_RGBA8888] = 32; b[a.PIXEL_FORMAT_RGB888] = 24; b[a.PIXEL_FORMAT_RGB565] = 16; b[a.PIXEL_FORMAT_A8] = 8; b[a.PIXEL_FORMAT_I8] = 8; b[a.PIXEL_FORMAT_AI88] = 16; b[a.PIXEL_FORMAT_RGBA4444] = 16; b[a.PIXEL_FORMAT_RGB5A1] = 16; b[a.PIXEL_FORMAT_PVRTC4] = 4; b[a.PIXEL_FORMAT_PVRTC2] = 3; b = cc.Texture2D.prototype; cc.defineGetterSetter(b, "name", b.getName); cc.defineGetterSetter(b, "pixelFormat", b.getPixelFormat); cc.defineGetterSetter(b, "pixelsWidth", b.getPixelsWide); cc.defineGetterSetter(b, "pixelsHeight", b.getPixelsHigh); cc.defineGetterSetter(b, "width", b._getWidth); cc.defineGetterSetter(b, "height", b._getHeight); a.defaultPixelFormat = a.PIXEL_FORMAT_DEFAULT }; cc._tmp.PrototypeTextureAtlas = function () { var a = cc.TextureAtlas.prototype; cc.defineGetterSetter(a, "totalQuads", a.getTotalQuads); cc.defineGetterSetter(a, "capacity", a.getCapacity); cc.defineGetterSetter(a, "quads", a.getQuads, a.setQuads) }; cc.ALIGN_CENTER = 51; cc.ALIGN_TOP = 19; cc.ALIGN_TOP_RIGHT = 18; cc.ALIGN_RIGHT = 50; cc.ALIGN_BOTTOM_RIGHT = 34; cc.ALIGN_BOTTOM = 35; cc.ALIGN_BOTTOM_LEFT = 33; cc.ALIGN_LEFT = 49; cc.ALIGN_TOP_LEFT = 17; cc.PVRHaveAlphaPremultiplied_ = !1; cc._renderType === cc._RENDER_TYPE_CANVAS ? cc.Texture2D = cc.Class.extend({ _contentSize: null, _isLoaded: !1, _htmlElementObj: null, _loadedEventListeners: null, url: null, ctor: function () { this._contentSize = cc.size(0, 0); this._isLoaded = !1; this._htmlElementObj = null }, getPixelsWide: function () { return this._contentSize.width }, getPixelsHigh: function () { return this._contentSize.height }, getContentSize: function () { var a = cc.contentScaleFactor(); return cc.size(this._contentSize.width / a, this._contentSize.height / a) }, _getWidth: function () { return this._contentSize.width / cc.contentScaleFactor() }, _getHeight: function () { return this._contentSize.height / cc.contentScaleFactor() }, getContentSizeInPixels: function () { return this._contentSize }, initWithElement: function (a) { a && (this._htmlElementObj = a) }, getHtmlElementObj: function () { return this._htmlElementObj }, isLoaded: function () { return this._isLoaded }, handleLoadedTexture: function () { if (!this._isLoaded) { if (!this._htmlElementObj) { var a = cc.loader.getRes(this.url); if (!a) return; this.initWithElement(a) } this._isLoaded = !0; a = this._htmlElementObj; this._contentSize.width = a.width; this._contentSize.height = a.height; this._callLoadedEventCallbacks() } }, description: function () { return "\x3ccc.Texture2D | width \x3d " + this._contentSize.width + " height " + this._contentSize.height + "\x3e" }, initWithData: function (a, b, c, d, e) { return !1 }, initWithImage: function (a) { return !1 }, initWithString: function (a, b, c, d, e, f) { return !1 }, releaseTexture: function () { }, getName: function () { return null }, getMaxS: function () { return 1 }, setMaxS: function (a) { }, getMaxT: function () { return 1 }, setMaxT: function (a) { }, getPixelFormat: function () { return null }, getShaderProgram: function () { return null }, setShaderProgram: function (a) { }, hasPremultipliedAlpha: function () { return !1 }, hasMipmaps: function () { return !1 }, releaseData: function (a) { }, keepData: function (a, b) { return a }, drawAtPoint: function (a) { }, drawInRect: function (a) { }, initWithETCFile: function (a) { cc.log(cc._LogInfos.Texture2D_initWithETCFile); return !1 }, initWithPVRFile: function (a) { cc.log(cc._LogInfos.Texture2D_initWithPVRFile); return !1 }, initWithPVRTCData: function (a, b, c, d, e, f) { cc.log(cc._LogInfos.Texture2D_initWithPVRTCData); return !1 }, setTexParameters: function (a) { }, setAntiAliasTexParameters: function () { }, setAliasTexParameters: function () { }, generateMipmap: function () { }, stringForFormat: function () { return "" }, bitsPerPixelForFormat: function (a) { return -1 }, addLoadedEventListener: function (a, b) { this._loadedEventListeners || (this._loadedEventListeners = []); this._loadedEventListeners.push({ eventCallback: a, eventTarget: b }) }, removeLoadedEventListener: function (a) { if (this._loadedEventListeners) for (var b = this._loadedEventListeners, c = 0; c < b.length; c++) b[c].eventTarget == a && b.splice(c, 1) }, _callLoadedEventCallbacks: function () { if (this._loadedEventListeners) { for (var a = this._loadedEventListeners, b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } } }) : (cc.assert(cc.isFunction(cc._tmp.WebGLTexture2D), cc._LogInfos.MissingFile, "TexturesWebGL.js"), cc._tmp.WebGLTexture2D(), delete cc._tmp.WebGLTexture2D); cc.assert(cc.isFunction(cc._tmp.PrototypeTexture2D), cc._LogInfos.MissingFile, "TexturesPropertyDefine.js"); cc._tmp.PrototypeTexture2D(); delete cc._tmp.PrototypeTexture2D; cc.textureCache = { _textures: {}, _textureColorsCache: {}, _textureKeySeq: 0 | 1E3 * Math.random(), _loadedTexturesBefore: {}, _initializingRenderer: function () { var a, b = this._loadedTexturesBefore, c = this._textures; for (a in b) { var d = b[a]; d.handleLoadedTexture(); c[a] = d } this._loadedTexturesBefore = {} }, addPVRTCImage: function (a) { cc.log(cc._LogInfos.textureCache_addPVRTCImage) }, addETCImage: function (a) { cc.log(cc._LogInfos.textureCache_addETCImage) }, description: function () { return "\x3cTextureCache | Number of textures \x3d " + this._textures.length + "\x3e" }, textureForKey: function (a) { cc.log(cc._LogInfos.textureCache_textureForKey); return this.getTextureForKey(a) }, getTextureForKey: function (a) { return this._textures[a] || this._textures[cc.loader._aliases[a]] }, getKeyByTexture: function (a) { for (var b in this._textures) if (this._textures[b] == a) return b; return null }, _generalTextureKey: function () { this._textureKeySeq++; return "_textureKey_" + this._textureKeySeq }, getTextureColors: function (a) { var b = this.getKeyByTexture(a); b || (b = a instanceof HTMLImageElement ? a.src : this._generalTextureKey()); this._textureColorsCache[b] || (this._textureColorsCache[b] = cc.generateTextureCacheForColor(a)); return this._textureColorsCache[b] }, addPVRImage: function (a) { cc.log(cc._LogInfos.textureCache_addPVRImage) }, removeAllTextures: function () { var a = this._textures, b; for (b in a) a[b] && a[b].releaseTexture(); this._textures = {} }, removeTexture: function (a) { if (a) { var b = this._textures, c; for (c in b) b[c] == a && (b[c].releaseTexture(), delete b[c]) } }, removeTextureForKey: function (a) { null != a && this._textures[a] && delete this._textures[a] }, cacheImage: function (a, b) { if (b instanceof cc.Texture2D) this._textures[a] = b; else { var c = new cc.Texture2D; c.initWithElement(b); c.handleLoadedTexture(); this._textures[a] = c } }, addUIImage: function (a, b) { cc.assert(a, cc._LogInfos.textureCache_addUIImage_2); if (b && this._textures[b]) return this._textures[b]; var c = new cc.Texture2D; c.initWithImage(a); null != b && null != c ? this._textures[b] = c : cc.log(cc._LogInfos.textureCache_addUIImage); return c }, dumpCachedTextureInfo: function () { var a = 0, b = 0, c = this._textures, d; for (d in c) { var e = c[d]; a++; e.getHtmlElementObj() instanceof HTMLImageElement ? cc.log(cc._LogInfos.textureCache_dumpCachedTextureInfo, d, e.getHtmlElementObj().src, e.pixelsWidth, e.pixelsHeight) : cc.log(cc._LogInfos.textureCache_dumpCachedTextureInfo_2, d, e.pixelsWidth, e.pixelsHeight); b += e.pixelsWidth * e.pixelsHeight * 4 } c = this._textureColorsCache; for (d in c) { var e = c[d], f; for (f in e) { var g = e[f]; a++; cc.log(cc._LogInfos.textureCache_dumpCachedTextureInfo_2, d, g.width, g.height); b += g.width * g.height * 4 } } cc.log(cc._LogInfos.textureCache_dumpCachedTextureInfo_3, a, b / 1024, (b / 1048576).toFixed(2)) }, _clear: function () { this._textures = {}; this._textureColorsCache = {}; this._textureKeySeq = 0 | 1E3 * Math.random(); this._loadedTexturesBefore = {} } }; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.textureCache, _p.handleLoadedTexture = function (a) { var b = this._textures, c = b[a]; c || (c = b[a] = new cc.Texture2D, c.url = a); c.handleLoadedTexture() }, _p.addImage = function (a, b, c) { cc.assert(a, cc._LogInfos.Texture2D_addImage); var d = this._textures, e = d[a] || d[cc.loader._aliases[a]]; if (e) return b && b.call(c, e), e; e = d[a] = new cc.Texture2D; e.url = a; cc.loader.getRes(a) ? e.handleLoadedTexture() : cc.loader._checkIsImageURL(a) ? cc.loader.load(a, function (a) { b && b.call(c) }) : cc.loader.loadImg(a, function (d, g) { if (d) return b ? b(d) : d; cc.loader.cache[a] = g; cc.textureCache.handleLoadedTexture(a); b && b.call(c, e) }); return e }, _p = null) : (cc.assert(cc.isFunction(cc._tmp.WebGLTextureCache), cc._LogInfos.MissingFile, "TexturesWebGL.js"), cc._tmp.WebGLTextureCache(), delete cc._tmp.WebGLTextureCache); cc.TextureAtlas = cc.Class.extend({ dirty: !1, texture: null, _indices: null, _buffersVBO: null, _capacity: 0, _quads: null, _quadsArrayBuffer: null, _quadsWebBuffer: null, _quadsReader: null, ctor: function (a, b) { this._buffersVBO = []; cc.isString(a) ? this.initWithFile(a, b) : a instanceof cc.Texture2D && this.initWithTexture(a, b) }, getTotalQuads: function () { return this._totalQuads }, getCapacity: function () { return this._capacity }, getTexture: function () { return this.texture }, setTexture: function (a) { this.texture = a }, setDirty: function (a) { this.dirty = a }, isDirty: function () { return this.dirty }, getQuads: function () { return this._quads }, setQuads: function (a) { this._quads = a }, _copyQuadsToTextureAtlas: function (a, b) { if (a) for (var c = 0; c < a.length; c++) this._setQuadToArray(a[c], b + c) }, _setQuadToArray: function (a, b) { var c = this._quads; c[b] ? (c[b].bl = a.bl, c[b].br = a.br, c[b].tl = a.tl, c[b].tr = a.tr) : c[b] = new cc.V3F_C4B_T2F_Quad(a.tl, a.bl, a.tr, a.br, this._quadsArrayBuffer, b * cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT) }, description: function () { return "\x3ccc.TextureAtlas | totalQuads \x3d" + this._totalQuads + "\x3e" }, _setupIndices: function () { if (0 !== this._capacity) for (var a = this._indices, b = this._capacity, c = 0; c < b; c++) cc.TEXTURE_ATLAS_USE_TRIANGLE_STRIP ? (a[6 * c + 0] = 4 * c + 0, a[6 * c + 1] = 4 * c + 0, a[6 * c + 2] = 4 * c + 2, a[6 * c + 3] = 4 * c + 1, a[6 * c + 4] = 4 * c + 3, a[6 * c + 5] = 4 * c + 3) : (a[6 * c + 0] = 4 * c + 0, a[6 * c + 1] = 4 * c + 1, a[6 * c + 2] = 4 * c + 2, a[6 * c + 3] = 4 * c + 3, a[6 * c + 4] = 4 * c + 2, a[6 * c + 5] = 4 * c + 1) }, _setupVBO: function () { var a = cc._renderContext; this._buffersVBO[0] = a.createBuffer(); this._buffersVBO[1] = a.createBuffer(); this._quadsWebBuffer = a.createBuffer(); this._mapBuffers() }, _mapBuffers: function () { var a = cc._renderContext; a.bindBuffer(a.ARRAY_BUFFER, this._quadsWebBuffer); a.bufferData(a.ARRAY_BUFFER, this._quadsArrayBuffer, a.DYNAMIC_DRAW); a.bindBuffer(a.ELEMENT_ARRAY_BUFFER, this._buffersVBO[1]); a.bufferData(a.ELEMENT_ARRAY_BUFFER, this._indices, a.STATIC_DRAW) }, initWithFile: function (a, b) { var c = cc.textureCache.addImage(a); if (c) return this.initWithTexture(c, b); cc.log(cc._LogInfos.TextureAtlas_initWithFile, a); return !1 }, initWithTexture: function (a, b) { cc.assert(a, cc._LogInfos.TextureAtlas_initWithTexture); this._capacity = b |= 0; this._totalQuads = 0; this.texture = a; this._quads = []; this._indices = new Uint16Array(6 * b); var c = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT; this._quadsArrayBuffer = new ArrayBuffer(c * b); this._quadsReader = new Uint8Array(this._quadsArrayBuffer); if ((!this._quads || !this._indices) && 0 < b) return !1; for (var d = this._quads, e = 0; e < b; e++) d[e] = new cc.V3F_C4B_T2F_Quad(null, null, null, null, this._quadsArrayBuffer, e * c); this._setupIndices(); this._setupVBO(); return this.dirty = !0 }, updateQuad: function (a, b) { cc.assert(a, cc._LogInfos.TextureAtlas_updateQuad); cc.assert(0 <= b && b < this._capacity, cc._LogInfos.TextureAtlas_updateQuad_2); this._totalQuads = Math.max(b + 1, this._totalQuads); this._setQuadToArray(a, b); this.dirty = !0 }, insertQuad: function (a, b) { cc.assert(b < this._capacity, cc._LogInfos.TextureAtlas_insertQuad_2); this._totalQuads++; if (this._totalQuads > this._capacity) cc.log(cc._LogInfos.TextureAtlas_insertQuad); else { var c = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, d = b * c, e = (this._totalQuads - 1 - b) * c; this._quads[this._totalQuads - 1] = new cc.V3F_C4B_T2F_Quad(null, null, null, null, this._quadsArrayBuffer, (this._totalQuads - 1) * c); this._quadsReader.set(this._quadsReader.subarray(d, d + e), d + c); this._setQuadToArray(a, b); this.dirty = !0 } }, insertQuads: function (a, b, c) { c = c || a.length; cc.assert(b + c <= this._capacity, cc._LogInfos.TextureAtlas_insertQuads); var d = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT; this._totalQuads += c; if (this._totalQuads > this._capacity) cc.log(cc._LogInfos.TextureAtlas_insertQuad); else { var e = b * d, f = (this._totalQuads - 1 - b - c) * d, g = this._totalQuads - 1 - c, h; for (h = 0; h < c; h++) this._quads[g + h] = new cc.V3F_C4B_T2F_Quad(null, null, null, null, this._quadsArrayBuffer, (this._totalQuads - 1) * d); this._quadsReader.set(this._quadsReader.subarray(e, e + f), e + d * c); for (h = 0; h < c; h++) this._setQuadToArray(a[h], b + h); this.dirty = !0 } }, insertQuadFromIndex: function (a, b) { if (a !== b) { cc.assert(0 <= b || b < this._totalQuads, cc._LogInfos.TextureAtlas_insertQuadFromIndex); cc.assert(0 <= a || a < this._totalQuads, cc._LogInfos.TextureAtlas_insertQuadFromIndex_2); var c = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, d = this._quadsReader, e = d.subarray(a * c, c), f; a > b ? (f = b * c, d.set(d.subarray(f, f + (a - b) * c), f + c), d.set(e, f)) : (f = (a + 1) * c, d.set(d.subarray(f, f + (b - a) * c), f - c), d.set(e, b * c)); this.dirty = !0 } }, removeQuadAtIndex: function (a) { cc.assert(a < this._totalQuads, cc._LogInfos.TextureAtlas_removeQuadAtIndex); var b = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT; this._totalQuads--; this._quads.length = this._totalQuads; if (a !== this._totalQuads) { var c = (a + 1) * b; this._quadsReader.set(this._quadsReader.subarray(c, c + (this._totalQuads - a) * b), c - b) } this.dirty = !0 }, removeQuadsAtIndex: function (a, b) { cc.assert(a + b <= this._totalQuads, cc._LogInfos.TextureAtlas_removeQuadsAtIndex); this._totalQuads -= b; if (a !== this._totalQuads) { var c = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, d = (a + b) * c, e = a * c; this._quadsReader.set(this._quadsReader.subarray(d, d + (this._totalQuads - a) * c), e) } this.dirty = !0 }, removeAllQuads: function () { this._totalQuads = this._quads.length = 0 }, _setDirty: function (a) { this.dirty = a }, resizeCapacity: function (a) { if (a == this._capacity) return !0; var b = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, c = this._capacity; this._totalQuads = Math.min(this._totalQuads, a); var d = this._capacity = 0 | a, e = this._totalQuads; if (null == this._quads) for (this._quads = [], this._quadsArrayBuffer = new ArrayBuffer(b * d), this._quadsReader = new Uint8Array(this._quadsArrayBuffer), a = 0; a < d; a++) this._quads = new cc.V3F_C4B_T2F_Quad(null, null, null, null, this._quadsArrayBuffer, a * b); else { var f, g, h = this._quads; if (d > c) { f = []; g = new ArrayBuffer(b * d); for (a = 0; a < e; a++) f[a] = new cc.V3F_C4B_T2F_Quad(h[a].tl, h[a].bl, h[a].tr, h[a].br, g, a * b); for (; a < d; a++) f[a] = new cc.V3F_C4B_T2F_Quad(null, null, null, null, g, a * b) } else for (e = Math.max(e, d), f = [], g = new ArrayBuffer(b * d), a = 0; a < e; a++) f[a] = new cc.V3F_C4B_T2F_Quad(h[a].tl, h[a].bl, h[a].tr, h[a].br, g, a * b); this._quadsReader = new Uint8Array(g); this._quads = f; this._quadsArrayBuffer = g } null == this._indices ? this._indices = new Uint16Array(6 * d) : d > c ? (b = new Uint16Array(6 * d), b.set(this._indices, 0), this._indices = b) : this._indices = this._indices.subarray(0, 6 * d); this._setupIndices(); this._mapBuffers(); return this.dirty = !0 }, increaseTotalQuadsWith: function (a) { this._totalQuads += a }, moveQuadsFromIndex: function (a, b, c) { if (void 0 === c) { if (c = b, b = this._totalQuads - a, cc.assert(c + (this._totalQuads - a) <= this._capacity, cc._LogInfos.TextureAtlas_moveQuadsFromIndex), 0 === b) return } else if (cc.assert(c + b <= this._totalQuads, cc._LogInfos.TextureAtlas_moveQuadsFromIndex_2), cc.assert(a < this._totalQuads, cc._LogInfos.TextureAtlas_moveQuadsFromIndex_3), a == c) return; var d = cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, e = a * d, f = b * d, g = this._quadsReader, h = g.subarray(e, e + f), k = c * d; c < a ? (b = c * d, g.set(g.subarray(b, b + (a - c) * d), b + f)) : (b = (a + b) * d, g.set(g.subarray(b, b + (c - a) * d), e)); g.set(h, k); this.dirty = !0 }, fillWithEmptyQuadsFromIndex: function (a, b) { for (var c = b * cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, d = new Uint8Array(this._quadsArrayBuffer, a * cc.V3F_C4B_T2F_Quad.BYTES_PER_ELEMENT, c), e = 0; e < c; e++) d[e] = 0 }, drawQuads: function () { this.drawNumberOfQuads(this._totalQuads, 0) }, _releaseBuffer: function () { var a = cc._renderContext; this._buffersVBO && (this._buffersVBO[0] && a.deleteBuffer(this._buffersVBO[0]), this._buffersVBO[1] && a.deleteBuffer(this._buffersVBO[1])); this._quadsWebBuffer && a.deleteBuffer(this._quadsWebBuffer) } }); _p = cc.TextureAtlas.prototype; cc.defineGetterSetter(_p, "totalQuads", _p.getTotalQuads); cc.defineGetterSetter(_p, "capacity", _p.getCapacity); cc.defineGetterSetter(_p, "quads", _p.getQuads, _p.setQuads); cc.TextureAtlas.create = function (a, b) { return new cc.TextureAtlas(a, b) }; cc.TextureAtlas.createWithTexture = cc.TextureAtlas.create; cc._renderType === cc._RENDER_TYPE_WEBGL && (cc.assert(cc.isFunction(cc._tmp.WebGLTextureAtlas), cc._LogInfos.MissingFile, "TexturesWebGL.js"), cc._tmp.WebGLTextureAtlas(), delete cc._tmp.WebGLTextureAtlas); cc.assert(cc.isFunction(cc._tmp.PrototypeTextureAtlas), cc._LogInfos.MissingFile, "TexturesPropertyDefine.js"); cc._tmp.PrototypeTextureAtlas(); delete cc._tmp.PrototypeTextureAtlas; cc.Scene = cc.Node.extend({ _className: "Scene", ctor: function () { cc.Node.prototype.ctor.call(this); this._ignoreAnchorPointForPosition = !0; this.setAnchorPoint(0.5, 0.5); this.setContentSize(cc.director.getWinSize()) } }); cc.Scene.create = function () { return new cc.Scene }; cc.LoaderScene = cc.Scene.extend({ _interval: null, _label: null, _className: "LoaderScene", init: function () { var a = this, b = 200, c = a._bgLayer = new cc.LayerColor(cc.color(32, 32, 32, 255)); c.setPosition(cc.visibleRect.bottomLeft); a.addChild(c, 0); var d = 24, e = -b / 2 + 100; cc._loaderImage && (cc.loader.loadImg(cc._loaderImage, { isCrossOrigin: !1 }, function (c, d) { b = d.height; a._initStage(d, cc.visibleRect.center) }), d = 14, e = -b / 2 - 10); d = a._label = cc.LabelTTF.create("Loading... 0%", "Arial", d); d.setPosition(cc.pAdd(cc.visibleRect.center, cc.p(0, e))); d.setColor(cc.color(180, 180, 180)); c.addChild(this._label, 10); return !0 }, _initStage: function (a, b) { var c = this._texture2d = new cc.Texture2D; c.initWithElement(a); c.handleLoadedTexture(); c = this._logo = cc.Sprite.create(c); c.setScale(cc.contentScaleFactor()); c.x = b.x; c.y = b.y; this._bgLayer.addChild(c, 10) }, onEnter: function () { cc.Node.prototype.onEnter.call(this); this.schedule(this._startLoading, 0.3) }, onExit: function () { cc.Node.prototype.onExit.call(this); this._label.setString("Loading... 0%") }, initWithResources: function (a, b) { cc.isString(a) && (a = [a]); this.resources = a || []; this.cb = b }, _startLoading: function () { var a = this; a.unschedule(a._startLoading); cc.loader.load(a.resources, function (b, c, d) { b = Math.min(d / c * 100 | 0, 100); a._label.setString("Loading... " + b + "%") }, function () { a.cb && a.cb() }) } }); cc.LoaderScene.preload = function (a, b) { var c = cc; c.loaderScene || (c.loaderScene = new cc.LoaderScene, c.loaderScene.init()); c.loaderScene.initWithResources(a, b); cc.director.runScene(c.loaderScene); return c.loaderScene }; cc._tmp.LayerDefineForWebGL = function () { var a = cc.Layer.prototype; a.bake = function () { }; a.unbake = function () { }; a.visit = cc.Node.prototype.visit }; cc._tmp.WebGLLayerColor = function () { var a = cc.LayerColor.prototype; a._squareVertices = null; a._squareColors = null; a._verticesFloat32Buffer = null; a._colorsUint8Buffer = null; a._squareVerticesAB = null; a._squareColorsAB = null; a.ctor = function (a, c, d) { this._squareVerticesAB = new ArrayBuffer(32); this._squareColorsAB = new ArrayBuffer(16); var e = this._squareVerticesAB, f = this._squareColorsAB, g = cc.Vertex2F.BYTES_PER_ELEMENT, h = cc.Color.BYTES_PER_ELEMENT; this._squareVertices = [new cc.Vertex2F(0, 0, e, 0), new cc.Vertex2F(0, 0, e, g), new cc.Vertex2F(0, 0, e, 2 * g), new cc.Vertex2F(0, 0, e, 3 * g)]; this._squareColors = [cc.color(0, 0, 0, 255, f, 0), cc.color(0, 0, 0, 255, f, h), cc.color(0, 0, 0, 255, f, 2 * h), cc.color(0, 0, 0, 255, f, 3 * h)]; this._verticesFloat32Buffer = cc._renderContext.createBuffer(); this._colorsUint8Buffer = cc._renderContext.createBuffer(); cc.Layer.prototype.ctor.call(this); this._blendFunc = new cc.BlendFunc(cc.BLEND_SRC, cc.BLEND_DST); cc.LayerColor.prototype.init.call(this, a, c, d) }; a.setContentSize = function (a, c) { var d = this._squareVertices; void 0 === c ? (d[1].x = a.width, d[2].y = a.height, d[3].x = a.width, d[3].y = a.height) : (d[1].x = a, d[2].y = c, d[3].x = a, d[3].y = c); this._bindLayerVerticesBufferData(); cc.Layer.prototype.setContentSize.call(this, a, c) }; a._setWidth = function (a) { var c = this._squareVertices; c[1].x = a; c[3].x = a; this._bindLayerVerticesBufferData(); cc.Layer.prototype._setWidth.call(this, a) }; a._setHeight = function (a) { var c = this._squareVertices; c[2].y = a; c[3].y = a; this._bindLayerVerticesBufferData(); cc.Layer.prototype._setHeight.call(this, a) }; a._updateColor = function () { for (var a = this._displayedColor, c = this._displayedOpacity, d = this._squareColors, e = 0; 4 > e; e++) d[e].r = a.r, d[e].g = a.g, d[e].b = a.b, d[e].a = c; this._bindLayerColorsBufferData() }; a.draw = function (a) { a = a || cc._renderContext; cc.nodeDrawSetup(this); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION | cc.VERTEX_ATTRIB_FLAG_COLOR); a.bindBuffer(a.ARRAY_BUFFER, this._verticesFloat32Buffer); a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, 0, 0); a.bindBuffer(a.ARRAY_BUFFER, this._colorsUint8Buffer); a.vertexAttribPointer(cc.VERTEX_ATTRIB_COLOR, 4, a.UNSIGNED_BYTE, !0, 0, 0); cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst); a.drawArrays(a.TRIANGLE_STRIP, 0, 4) }; a._bindLayerVerticesBufferData = function () { var a = cc._renderContext; a.bindBuffer(a.ARRAY_BUFFER, this._verticesFloat32Buffer); a.bufferData(a.ARRAY_BUFFER, this._squareVerticesAB, a.STATIC_DRAW) }; a._bindLayerColorsBufferData = function () { var a = cc._renderContext; a.bindBuffer(a.ARRAY_BUFFER, this._colorsUint8Buffer); a.bufferData(a.ARRAY_BUFFER, this._squareColorsAB, a.STATIC_DRAW) } }; cc._tmp.WebGLLayerGradient = function () { var a = cc.LayerGradient.prototype; a.draw = cc.LayerColor.prototype.draw; a._updateColor = function () { var a = this._alongVector, c = cc.pLength(a); if (0 !== c) { var d = Math.sqrt(2), a = cc.p(a.x / c, a.y / c); this._compressedInterpolation && (c = 1 / (Math.abs(a.x) + Math.abs(a.y)), a = cc.pMult(a, c * d)); var e = this._displayedOpacity / 255, c = this._displayedColor, f = this._endColor, c = { r: c.r, g: c.g, b: c.b, a: this._startOpacity * e }, e = { r: f.r, g: f.g, b: f.b, a: this._endOpacity * e }, g = this._squareColors, f = g[0], h = g[1], k = g[2], g = g[3]; f.r = e.r + (d + a.x + a.y) / (2 * d) * (c.r - e.r); f.g = e.g + (d + a.x + a.y) / (2 * d) * (c.g - e.g); f.b = e.b + (d + a.x + a.y) / (2 * d) * (c.b - e.b); f.a = e.a + (d + a.x + a.y) / (2 * d) * (c.a - e.a); h.r = e.r + (d - a.x + a.y) / (2 * d) * (c.r - e.r); h.g = e.g + (d - a.x + a.y) / (2 * d) * (c.g - e.g); h.b = e.b + (d - a.x + a.y) / (2 * d) * (c.b - e.b); h.a = e.a + (d - a.x + a.y) / (2 * d) * (c.a - e.a); k.r = e.r + (d + a.x - a.y) / (2 * d) * (c.r - e.r); k.g = e.g + (d + a.x - a.y) / (2 * d) * (c.g - e.g); k.b = e.b + (d + a.x - a.y) / (2 * d) * (c.b - e.b); k.a = e.a + (d + a.x - a.y) / (2 * d) * (c.a - e.a); g.r = e.r + (d - a.x - a.y) / (2 * d) * (c.r - e.r); g.g = e.g + (d - a.x - a.y) / (2 * d) * (c.g - e.g); g.b = e.b + (d - a.x - a.y) / (2 * d) * (c.b - e.b); g.a = e.a + (d - a.x - a.y) / (2 * d) * (c.a - e.a); this._bindLayerColorsBufferData() } } }; cc._tmp.PrototypeLayerColor = function () { var a = cc.LayerColor.prototype; cc.defineGetterSetter(a, "width", a._getWidth, a._setWidth); cc.defineGetterSetter(a, "height", a._getHeight, a._setHeight) }; cc._tmp.PrototypeLayerGradient = function () { var a = cc.LayerGradient.prototype; cc.defineGetterSetter(a, "startColor", a.getStartColor, a.setStartColor); cc.defineGetterSetter(a, "endColor", a.getEndColor, a.setEndColor); cc.defineGetterSetter(a, "startOpacity", a.getStartOpacity, a.setStartOpacity); cc.defineGetterSetter(a, "endOpacity", a.getEndOpacity, a.setEndOpacity); cc.defineGetterSetter(a, "vector", a.getVector, a.setVector) }; cc.Layer = cc.Node.extend({ _isBaked: !1, _bakeSprite: null, _className: "Layer", ctor: function () { var a = cc.Node.prototype; a.ctor.call(this); this._ignoreAnchorPointForPosition = !0; a.setAnchorPoint.call(this, 0.5, 0.5); a.setContentSize.call(this, cc.winSize) }, init: function () { this._ignoreAnchorPointForPosition = !0; this.setAnchorPoint(0.5, 0.5); this.setContentSize(cc.winSize); this.cascadeColor = this.cascadeOpacity = !1; return !0 }, bake: null, unbake: null, isBaked: function () { return this._isBaked }, visit: null }); cc.Layer.create = function () { return new cc.Layer }; if (cc._renderType === cc._RENDER_TYPE_CANVAS) { var p = cc.Layer.prototype; p.bake = function () { if (!this._isBaked) { this._isBaked = this._cacheDirty = !0; this._cachedParent = this; for (var a = this._children, b = 0, c = a.length; b < c; b++) a[b]._setCachedParent(this); this._bakeSprite || (this._bakeSprite = new cc.BakeSprite) } }; p.unbake = function () { if (this._isBaked) { this._isBaked = !1; this._cacheDirty = !0; this._cachedParent = null; for (var a = this._children, b = 0, c = a.length; b < c; b++) a[b]._setCachedParent(null) } }; p.addChild = function (a, b, c) { cc.Node.prototype.addChild.call(this, a, b, c); a._parent == this && this._isBaked && a._setCachedParent(this) }; p.visit = function (a) { if (this._isBaked) { a = a || cc._renderContext; var b, c = this._children, d = c.length; if (this._visible && 0 !== d) { var e = this._bakeSprite; a.save(); this.transform(a); if (this._cacheDirty) { b = this._getBoundingBoxForBake(); b.width |= 0; b.height |= 0; var f = e.getCacheContext(); e.resetCanvasSize(b.width, b.height); f.translate(0 - b.x, b.height + b.y); var g = e.getAnchorPointInPoints(); e.setPosition(g.x + b.x, g.y + b.y); this.sortAllChildren(); cc.view._setScaleXYForRenderTexture(); for (b = 0; b < d; b++) c[b].visit(f); cc.view._resetScale(); this._cacheDirty = !1 } e.visit(a); this.arrivalOrder = 0; a.restore() } } else cc.Node.prototype.visit.call(this, a) }; p._getBoundingBoxForBake = function () { var a = null; if (!this._children || 0 === this._children.length) return cc.rect(0, 0, 10, 10); for (var b = this._children, c = 0; c < b.length; c++) { var d = b[c]; d && d._visible && (a ? (d = d._getBoundingBoxToCurrentNode()) && (a = cc.rectUnion(a, d)) : a = d._getBoundingBoxToCurrentNode()) } return a }; p = null } else cc.assert(cc.isFunction(cc._tmp.LayerDefineForWebGL), cc._LogInfos.MissingFile, "CCLayerWebGL.js"), cc._tmp.LayerDefineForWebGL(), delete cc._tmp.LayerDefineForWebGL; cc.LayerColor = cc.Layer.extend({ _blendFunc: null, _className: "LayerColor", getBlendFunc: function () { return this._blendFunc }, changeWidthAndHeight: function (a, b) { this.width = a; this.height = b }, changeWidth: function (a) { this.width = a }, changeHeight: function (a) { this.height = a }, setOpacityModifyRGB: function (a) { }, isOpacityModifyRGB: function () { return !1 }, setColor: function (a) { cc.Layer.prototype.setColor.call(this, a); this._updateColor() }, setOpacity: function (a) { cc.Layer.prototype.setOpacity.call(this, a); this._updateColor() }, _blendFuncStr: "source", ctor: null, init: function (a, b, c) { cc._renderType !== cc._RENDER_TYPE_CANVAS && (this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_COLOR)); var d = cc.director.getWinSize(); a = a || cc.color(0, 0, 0, 255); b = void 0 === b ? d.width : b; c = void 0 === c ? d.height : c; d = this._displayedColor; d.r = a.r; d.g = a.g; d.b = a.b; d = this._realColor; d.r = a.r; d.g = a.g; d.b = a.b; this._realOpacity = this._displayedOpacity = a.a; a = cc.LayerColor.prototype; a.setContentSize.call(this, b, c); a._updateColor.call(this); return !0 }, setBlendFunc: function (a, b) { var c = this._blendFunc; void 0 === b ? (c.src = a.src, c.dst = a.dst) : (c.src = a, c.dst = b); cc._renderType === cc._RENDER_TYPE_CANVAS && (this._blendFuncStr = cc._getCompositeOperationByBlendFunc(c)) }, _setWidth: null, _setHeight: null, _updateColor: null, updateDisplayedColor: function (a) { cc.Layer.prototype.updateDisplayedColor.call(this, a); this._updateColor() }, updateDisplayedOpacity: function (a) { cc.Layer.prototype.updateDisplayedOpacity.call(this, a); this._updateColor() }, draw: null }); cc.LayerColor.create = function (a, b, c) { return new cc.LayerColor(a, b, c) }; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.LayerColor.prototype, _p.ctor = function (a, b, c) { cc.Layer.prototype.ctor.call(this); this._blendFunc = new cc.BlendFunc(cc.BLEND_SRC, cc.BLEND_DST); cc.LayerColor.prototype.init.call(this, a, b, c) }, _p._setWidth = cc.Layer.prototype._setWidth, _p._setHeight = cc.Layer.prototype._setHeight, _p._updateColor = function () { }, _p.draw = function (a) { a = a || cc._renderContext; var b = cc.view, c = this._displayedColor; a.fillStyle = "rgba(" + (0 | c.r) + "," + (0 | c.g) + "," + (0 | c.b) + "," + this._displayedOpacity / 255 + ")"; a.fillRect(0, 0, this.width * b.getScaleX(), -this.height * b.getScaleY()); cc.g_NumberOfDraws++ }, _p.visit = function (a) { if (this._isBaked) { a = a || cc._renderContext; var b, c = this._children, d = c.length; if (this._visible) { var e = this._bakeSprite; a.save(); this.transform(a); if (this._cacheDirty) { b = this._getBoundingBoxForBake(); b.width |= 0; b.height |= 0; var f = e.getCacheContext(); e.resetCanvasSize(b.width, b.height); var g = e.getAnchorPointInPoints(), h = this._position; if (this._ignoreAnchorPointForPosition) f.translate(0 - b.x + h.x, b.height + b.y - h.y), e.setPosition(g.x + b.x - h.x, g.y + b.y - h.y); else { var k = this.getAnchorPointInPoints(), m = h.x - k.x, h = h.y - k.y; f.translate(0 - b.x + m, b.height + b.y - h); e.setPosition(g.x + b.x - m, g.y + b.y - h) } cc.view._setScaleXYForRenderTexture(); if (0 < d) { this.sortAllChildren(); for (b = 0; b < d; b++) if (g = c[b], 0 > g._localZOrder) g.visit(f); else break; for (this.draw(f) ; b < d; b++) c[b].visit(f) } else this.draw(f); cc.view._resetScale(); this._cacheDirty = !1 } e.visit(a); this.arrivalOrder = 0; a.restore() } } else cc.Node.prototype.visit.call(this, a) }, _p._getBoundingBoxForBake = function () { var a = cc.rect(0, 0, this._contentSize.width, this._contentSize.height), b = this.nodeToWorldTransform(), a = cc.rectApplyAffineTransform(a, this.nodeToWorldTransform()); if (!this._children || 0 === this._children.length) return a; for (var c = this._children, d = 0; d < c.length; d++) { var e = c[d]; e && e._visible && (e = e._getBoundingBoxToCurrentNode(b), a = cc.rectUnion(a, e)) } return a }, _p = null) : (cc.assert(cc.isFunction(cc._tmp.WebGLLayerColor), cc._LogInfos.MissingFile, "CCLayerWebGL.js"), cc._tmp.WebGLLayerColor(), delete cc._tmp.WebGLLayerColor); cc.assert(cc.isFunction(cc._tmp.PrototypeLayerColor), cc._LogInfos.MissingFile, "CCLayerPropertyDefine.js"); cc._tmp.PrototypeLayerColor(); delete cc._tmp.PrototypeLayerColor; cc.LayerGradient = cc.LayerColor.extend({ _startColor: null, _endColor: null, _startOpacity: 255, _endOpacity: 255, _alongVector: null, _compressedInterpolation: !1, _gradientStartPoint: null, _gradientEndPoint: null, _className: "LayerGradient", ctor: function (a, b, c) { cc.LayerColor.prototype.ctor.call(this); this._startColor = cc.color(0, 0, 0, 255); this._endColor = cc.color(0, 0, 0, 255); this._alongVector = cc.p(0, -1); this._endOpacity = this._startOpacity = 255; this._gradientStartPoint = cc.p(0, 0); this._gradientEndPoint = cc.p(0, 0); cc.LayerGradient.prototype.init.call(this, a, b, c) }, init: function (a, b, c) { a = a || cc.color(0, 0, 0, 255); b = b || cc.color(0, 0, 0, 255); c = c || cc.p(0, -1); var d = this._startColor, e = this._endColor; d.r = a.r; d.g = a.g; d.b = a.b; this._startOpacity = a.a; e.r = b.r; e.g = b.g; e.b = b.b; this._endOpacity = b.a; this._alongVector = c; this._compressedInterpolation = !0; this._gradientStartPoint = cc.p(0, 0); this._gradientEndPoint = cc.p(0, 0); cc.LayerColor.prototype.init.call(this, cc.color(a.r, a.g, a.b, 255)); cc.LayerGradient.prototype._updateColor.call(this); return !0 }, setContentSize: function (a, b) { cc.LayerColor.prototype.setContentSize.call(this, a, b); this._updateColor() }, _setWidth: function (a) { cc.LayerColor.prototype._setWidth.call(this, a); this._updateColor() }, _setHeight: function (a) { cc.LayerColor.prototype._setHeight.call(this, a); this._updateColor() }, getStartColor: function () { return this._realColor }, setStartColor: function (a) { this.color = a }, setEndColor: function (a) { this._endColor = a; this._updateColor() }, getEndColor: function () { return this._endColor }, setStartOpacity: function (a) { this._startOpacity = a; this._updateColor() }, getStartOpacity: function () { return this._startOpacity }, setEndOpacity: function (a) { this._endOpacity = a; this._updateColor() }, getEndOpacity: function () { return this._endOpacity }, setVector: function (a) { this._alongVector.x = a.x; this._alongVector.y = a.y; this._updateColor() }, getVector: function () { return cc.p(this._alongVector.x, this._alongVector.y) }, isCompressedInterpolation: function () { return this._compressedInterpolation }, setCompressedInterpolation: function (a) { this._compressedInterpolation = a; this._updateColor() }, _draw: null, _updateColor: null }); cc.LayerGradient.create = function (a, b, c) { return new cc.LayerGradient(a, b, c) }; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.LayerGradient.prototype, _p.draw = function (a) { a = a || cc._renderContext; "source" != this._blendFuncStr && (a.globalCompositeOperation = this._blendFuncStr); a.save(); var b = this._displayedOpacity / 255, c = cc.view.getScaleX(), d = cc.view.getScaleY(), e = this.width * c, f = this.height * d, c = a.createLinearGradient(this._gradientStartPoint.x * c, this._gradientStartPoint.y * d, this._gradientEndPoint.x * c, this._gradientEndPoint.y * d), d = this._displayedColor, g = this._endColor; c.addColorStop(0, "rgba(" + Math.round(d.r) + "," + Math.round(d.g) + "," + Math.round(d.b) + "," + (this._startOpacity / 255 * b).toFixed(4) + ")"); c.addColorStop(1, "rgba(" + Math.round(g.r) + "," + Math.round(g.g) + "," + Math.round(g.b) + "," + (this._endOpacity / 255 * b).toFixed(4) + ")"); a.fillStyle = c; a.fillRect(0, 0, e, -f); 0 != this._rotation && a.rotate(this._rotationRadians); a.restore(); cc.g_NumberOfDraws++ }, _p._updateColor = function () { var a = this._alongVector, b = 0.5 * this.width, c = 0.5 * this.height; this._gradientStartPoint.x = b * -a.x + b; this._gradientStartPoint.y = c * a.y - c; this._gradientEndPoint.x = b * a.x + b; this._gradientEndPoint.y = c * -a.y - c }, _p = null) : (cc.assert(cc.isFunction(cc._tmp.WebGLLayerGradient), cc._LogInfos.MissingFile, "CCLayerWebGL.js"), cc._tmp.WebGLLayerGradient(), delete cc._tmp.WebGLLayerGradient); cc.assert(cc.isFunction(cc._tmp.PrototypeLayerGradient), cc._LogInfos.MissingFile, "CCLayerPropertyDefine.js"); cc._tmp.PrototypeLayerGradient(); delete cc._tmp.PrototypeLayerGradient; cc.LayerMultiplex = cc.Layer.extend({ _enabledLayer: 0, _layers: null, _className: "LayerMultiplex", ctor: function (a) { cc.Layer.prototype.ctor.call(this); a instanceof Array ? cc.LayerMultiplex.prototype.initWithLayers.call(this, a) : cc.LayerMultiplex.prototype.initWithLayers.call(this, Array.prototype.slice.call(arguments)) }, initWithLayers: function (a) { 0 < a.length && null == a[a.length - 1] && cc.log(cc._LogInfos.LayerMultiplex_initWithLayers); this._layers = a; this._enabledLayer = 0; this.addChild(this._layers[this._enabledLayer]); return !0 }, switchTo: function (a) { a >= this._layers.length ? cc.log(cc._LogInfos.LayerMultiplex_switchTo) : (this.removeChild(this._layers[this._enabledLayer], !0), this._enabledLayer = a, this.addChild(this._layers[a])) }, switchToAndReleaseMe: function (a) { a >= this._layers.length ? cc.log(cc._LogInfos.LayerMultiplex_switchToAndReleaseMe) : (this.removeChild(this._layers[this._enabledLayer], !0), this._layers[this._enabledLayer] = null, this._enabledLayer = a, this.addChild(this._layers[a])) }, addLayer: function (a) { a ? this._layers.push(a) : cc.log(cc._LogInfos.LayerMultiplex_addLayer) } }); cc.LayerMultiplex.create = function () { return new cc.LayerMultiplex(Array.prototype.slice.call(arguments)) }; cc._tmp.WebGLSprite = function () { var a = cc.Sprite.prototype; a._spriteFrameLoadedCallback = function (a) { this.setNodeDirty(!0); this.setTextureRect(a.getRect(), a.isRotated(), a.getOriginalSize()); this._callLoadedEventCallbacks() }; a.setOpacityModifyRGB = function (a) { this._opacityModifyRGB !== a && (this._opacityModifyRGB = a, this.updateColor()) }; a.updateDisplayedOpacity = function (a) { cc.Node.prototype.updateDisplayedOpacity.call(this, a); this.updateColor() }; a.ctor = function (a, c, d) { cc.Node.prototype.ctor.call(this); this._shouldBeHidden = !1; this._offsetPosition = cc.p(0, 0); this._unflippedOffsetPositionFromCenter = cc.p(0, 0); this._blendFunc = { src: cc.BLEND_SRC, dst: cc.BLEND_DST }; this._rect = cc.rect(0, 0, 0, 0); this._quad = new cc.V3F_C4B_T2F_Quad; this._quadWebBuffer = cc._renderContext.createBuffer(); this._textureLoaded = this._quadDirty = !0; this._softInit(a, c, d) }; a.setBlendFunc = function (a, c) { var d = this._blendFunc; void 0 === c ? (d.src = a.src, d.dst = a.dst) : (d.src = a, d.dst = c) }; a.init = function () { if (0 < arguments.length) return this.initWithFile(arguments[0], arguments[1]); cc.Node.prototype.init.call(this); this.dirty = this._recursiveDirty = !1; this._opacityModifyRGB = !0; this._blendFunc.src = cc.BLEND_SRC; this._blendFunc.dst = cc.BLEND_DST; this.texture = null; this._textureLoaded = !0; this._flippedX = this._flippedY = !1; this.anchorY = this.anchorX = 0.5; this._offsetPosition.x = 0; this._offsetPosition.y = 0; this._hasChildren = !1; var a = { r: 255, g: 255, b: 255, a: 255 }; this._quad.bl.colors = a; this._quad.br.colors = a; this._quad.tl.colors = a; this._quad.tr.colors = a; this._quadDirty = !0; this.setTextureRect(cc.rect(0, 0, 0, 0), !1, cc.size(0, 0)); return !0 }; a.initWithTexture = function (a, c, d) { cc.assert(0 != arguments.length, cc._LogInfos.Sprite_initWithTexture); d = d || !1; if (!cc.Node.prototype.init.call(this)) return !1; this._batchNode = null; this.dirty = this._recursiveDirty = !1; this._opacityModifyRGB = !0; this._blendFunc.src = cc.BLEND_SRC; this._blendFunc.dst = cc.BLEND_DST; this._flippedX = this._flippedY = !1; this.anchorY = this.anchorX = 0.5; this._offsetPosition.x = 0; this._offsetPosition.y = 0; this._hasChildren = !1; var e = cc.color(255, 255, 255, 255), f = this._quad; f.bl.colors = e; f.br.colors = e; f.tl.colors = e; f.tr.colors = e; this._textureLoaded = e = a.isLoaded(); if (!e) return this._rectRotated = d || !1, c && (e = this._rect, e.x = c.x, e.y = c.y, e.width = c.width, e.height = c.height), a.addLoadedEventListener(this._textureLoadedCallback, this), !0; c || (c = cc.rect(0, 0, a.width, a.height)); a && a.url && (d ? (e = c.x + c.height, f = c.y + c.width) : (e = c.x + c.width, f = c.y + c.height), e > a.width && cc.error(cc._LogInfos.RectWidth, a.url), f > a.height && cc.error(cc._LogInfos.RectHeight, a.url)); this.texture = a; this.setTextureRect(c, d); this.batchNode = null; return this._quadDirty = !0 }; a._textureLoadedCallback = function (a) { if (!this._textureLoaded) { this._textureLoaded = !0; var c = this._rect; c ? cc._rectEqualToZero(c) && (c.width = a.width, c.height = a.height) : c = cc.rect(0, 0, a.width, a.height); this.texture = a; this.setTextureRect(c, this._rectRotated); this.batchNode = this._batchNode; this._quadDirty = !0; this._callLoadedEventCallbacks() } }; a.setTextureRect = function (a, c, d) { this._rectRotated = c || !1; this.setContentSize(d || a); this.setVertexRect(a); this._setTextureCoords(a); a = this._unflippedOffsetPositionFromCenter; this._flippedX && (a.x = -a.x); this._flippedY && (a.y = -a.y); var e = this._rect; this._offsetPosition.x = a.x + (this._contentSize.width - e.width) / 2; this._offsetPosition.y = a.y + (this._contentSize.height - e.height) / 2; if (this._batchNode) this.dirty = !0; else { a = 0 + this._offsetPosition.x; c = 0 + this._offsetPosition.y; d = a + e.width; var e = c + e.height, f = this._quad; f.bl.vertices = { x: a, y: c, z: 0 }; f.br.vertices = { x: d, y: c, z: 0 }; f.tl.vertices = { x: a, y: e, z: 0 }; f.tr.vertices = { x: d, y: e, z: 0 }; this._quadDirty = !0 } }; a.updateTransform = function () { if (this.dirty) { var a = this._quad, c = this._parent; if (!this._visible || c && c != this._batchNode && c._shouldBeHidden) a.br.vertices = a.tl.vertices = a.tr.vertices = a.bl.vertices = { x: 0, y: 0, z: 0 }, this._shouldBeHidden = !0; else { this._shouldBeHidden = !1; var d = this._transformToBatch = c && c != this._batchNode ? cc.affineTransformConcat(this.nodeToParentTransform(), c._transformToBatch) : this.nodeToParentTransform(), e = this._rect, c = this._offsetPosition.x, f = this._offsetPosition.y, g = c + e.width, h = f + e.height, k = d.tx, m = d.ty, n = d.a, q = d.b, r = d.d, s = -d.c, d = c * n - f * s + k, e = c * q + f * r + m, t = g * n - f * s + k, f = g * q + f * r + m, u = g * n - h * s + k, g = g * q + h * r + m, k = c * n - h * s + k, c = c * q + h * r + m, h = this._vertexZ; cc.SPRITEBATCHNODE_RENDER_SUBPIXEL || (d |= 0, e |= 0, t |= 0, f |= 0, u |= 0, g |= 0, k |= 0, c |= 0); a.bl.vertices = { x: d, y: e, z: h }; a.br.vertices = { x: t, y: f, z: h }; a.tl.vertices = { x: k, y: c, z: h }; a.tr.vertices = { x: u, y: g, z: h } } this.textureAtlas.updateQuad(a, this.atlasIndex); this.dirty = this._recursiveDirty = !1 } this._hasChildren && this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.updateTransform); cc.SPRITE_DEBUG_DRAW && (a = [cc.p(this._quad.bl.vertices.x, this._quad.bl.vertices.y), cc.p(this._quad.br.vertices.x, this._quad.br.vertices.y), cc.p(this._quad.tr.vertices.x, this._quad.tr.vertices.y), cc.p(this._quad.tl.vertices.x, this._quad.tl.vertices.y)], cc._drawingUtil.drawPoly(a, 4, !0)) }; a.addChild = function (a, c, d) { cc.assert(a, cc._LogInfos.Sprite_addChild_3); null == c && (c = a._localZOrder); null == d && (d = a.tag); if (this._batchNode) { if (!(a instanceof cc.Sprite)) { cc.log(cc._LogInfos.Sprite_addChild); return } a.texture._webTextureObj !== this.textureAtlas.texture._webTextureObj && cc.log(cc._LogInfos.Sprite_addChild_2); this._batchNode.appendChild(a); this._reorderChildDirty || this._setReorderChildDirtyRecursively() } cc.Node.prototype.addChild.call(this, a, c, d); this._hasChildren = !0 }; a.setOpacity = function (a) { cc.Node.prototype.setOpacity.call(this, a); this.updateColor() }; a.setColor = function (a) { cc.Node.prototype.setColor.call(this, a); this.updateColor() }; a.updateDisplayedColor = function (a) { cc.Node.prototype.updateDisplayedColor.call(this, a); this.updateColor() }; a.setSpriteFrame = function (a) { var c = this; cc.isString(a) && (a = cc.spriteFrameCache.getSpriteFrame(a), cc.assert(a, cc._LogInfos.Sprite_setSpriteFrame)); c.setNodeDirty(!0); var d = a.getOffset(); c._unflippedOffsetPositionFromCenter.x = d.x; c._unflippedOffsetPositionFromCenter.y = d.y; d = a.getTexture(); a.textureLoaded() || (c._textureLoaded = !1, a.addLoadedEventListener(function (a) { c._textureLoaded = !0; var b = a.getTexture(); b != c._texture && (c.texture = b); c.setTextureRect(a.getRect(), a.isRotated(), a.getOriginalSize()); c._callLoadedEventCallbacks() }, c)); d != c._texture && (c.texture = d); c._rectRotated = a.isRotated(); c.setTextureRect(a.getRect(), c._rectRotated, a.getOriginalSize()) }; a.isFrameDisplayed = function (a) { return cc.rectEqualToRect(a.getRect(), this._rect) && a.getTexture().getName() == this._texture.getName() && cc.pointEqualToPoint(a.getOffset(), this._unflippedOffsetPositionFromCenter) }; a.setBatchNode = function (a) { if (this._batchNode = a) this._transformToBatch = cc.affineTransformIdentity(), this.textureAtlas = this._batchNode.textureAtlas; else { this.atlasIndex = cc.Sprite.INDEX_NOT_INITIALIZED; this.textureAtlas = null; this.dirty = this._recursiveDirty = !1; a = this._offsetPosition.x; var c = this._offsetPosition.y, d = a + this._rect.width, e = c + this._rect.height, f = this._quad; f.bl.vertices = { x: a, y: c, z: 0 }; f.br.vertices = { x: d, y: c, z: 0 }; f.tl.vertices = { x: a, y: e, z: 0 }; f.tr.vertices = { x: d, y: e, z: 0 }; this._quadDirty = !0 } }; a.setTexture = function (a) { a && cc.isString(a) ? (a = cc.textureCache.addImage(a), this.setTexture(a), a = a.getContentSize(), this.setTextureRect(cc.rect(0, 0, a.width, a.height))) : (cc.assert(!a || a instanceof cc.Texture2D, cc._LogInfos.Sprite_setTexture_2), this._batchNode && this._batchNode.texture != a ? cc.log(cc._LogInfos.Sprite_setTexture) : (this.shaderProgram = a ? cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURECOLOR) : cc.shaderCache.programForKey(cc.SHADER_POSITION_COLOR), this._batchNode || this._texture == a || (this._texture = a, this._updateBlendFunc()))) }; a.draw = function () { if (this._textureLoaded) { var a = cc._renderContext, c = this._texture; c ? c._isLoaded && (this._shaderProgram.use(), this._shaderProgram.setUniformForModelViewAndProjectionMatrixWithMat4(), cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst), cc.glBindTexture2DN(0, c), cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POS_COLOR_TEX), a.bindBuffer(a.ARRAY_BUFFER, this._quadWebBuffer), this._quadDirty && (a.bufferData(a.ARRAY_BUFFER, this._quad.arrayBuffer, a.DYNAMIC_DRAW), this._quadDirty = !1), a.vertexAttribPointer(0, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(1, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.vertexAttribPointer(2, 2, a.FLOAT, !1, 24, 16), a.drawArrays(a.TRIANGLE_STRIP, 0, 4)) : (this._shaderProgram.use(), this._shaderProgram.setUniformForModelViewAndProjectionMatrixWithMat4(), cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst), cc.glBindTexture2D(null), cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION | cc.VERTEX_ATTRIB_FLAG_COLOR), a.bindBuffer(a.ARRAY_BUFFER, this._quadWebBuffer), this._quadDirty && (cc._renderContext.bufferData(cc._renderContext.ARRAY_BUFFER, this._quad.arrayBuffer, cc._renderContext.STATIC_DRAW), this._quadDirty = !1), a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(cc.VERTEX_ATTRIB_COLOR, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.drawArrays(a.TRIANGLE_STRIP, 0, 4)); cc.g_NumberOfDraws++; if (0 !== cc.SPRITE_DEBUG_DRAW || this._showNode) 1 === cc.SPRITE_DEBUG_DRAW || this._showNode ? (a = this._quad, a = [cc.p(a.tl.vertices.x, a.tl.vertices.y), cc.p(a.bl.vertices.x, a.bl.vertices.y), cc.p(a.br.vertices.x, a.br.vertices.y), cc.p(a.tr.vertices.x, a.tr.vertices.y)], cc._drawingUtil.drawPoly(a, 4, !0)) : 2 === cc.SPRITE_DEBUG_DRAW && (a = this.getTextureRect(), c = this.getOffsetPosition(), a = [cc.p(c.x, c.y), cc.p(c.x + a.width, c.y), cc.p(c.x + a.width, c.y + a.height), cc.p(c.x, c.y + a.height)], cc._drawingUtil.drawPoly(a, 4, !0)) } }; delete a }; cc._tmp.PrototypeSprite = function () { var a = cc.Sprite.prototype; cc.defineGetterSetter(a, "opacityModifyRGB", a.isOpacityModifyRGB, a.setOpacityModifyRGB); cc.defineGetterSetter(a, "opacity", a.getOpacity, a.setOpacity); cc.defineGetterSetter(a, "color", a.getColor, a.setColor); cc.defineGetterSetter(a, "flippedX", a.isFlippedX, a.setFlippedX); cc.defineGetterSetter(a, "flippedY", a.isFlippedY, a.setFlippedY); cc.defineGetterSetter(a, "offsetX", a._getOffsetX); cc.defineGetterSetter(a, "offsetY", a._getOffsetY); cc.defineGetterSetter(a, "texture", a.getTexture, a.setTexture); cc.defineGetterSetter(a, "textureRectRotated", a.isTextureRectRotated); cc.defineGetterSetter(a, "batchNode", a.getBatchNode, a.setBatchNode); cc.defineGetterSetter(a, "quad", a.getQuad) }; cc.generateTintImageWithMultiply = function (a, b, c, d) { d = d || cc.newElement("canvas"); c = c || cc.rect(0, 0, a.width, a.height); var e = d.getContext("2d"); d.width != c.width || d.height != c.height ? (d.width = c.width, d.height = c.height) : e.globalCompositeOperation = "source-over"; e.fillStyle = "rgb(" + (0 | b.r) + "," + (0 | b.g) + "," + (0 | b.b) + ")"; e.fillRect(0, 0, c.width, c.height); e.globalCompositeOperation = "multiply"; e.drawImage(a, c.x, c.y, c.width, c.height, 0, 0, c.width, c.height); e.globalCompositeOperation = "destination-atop"; e.drawImage(a, c.x, c.y, c.width, c.height, 0, 0, c.width, c.height); return d }; cc.generateTintImage = function (a, b, c, d, e) { d || (d = cc.rect(0, 0, a.width, a.height)); a = c.r / 255; var f = c.g / 255; c = c.b / 255; var g = Math.min(d.width, b[0].width), h = Math.min(d.height, b[0].height), k; e ? (k = e.getContext("2d"), k.clearRect(0, 0, g, h)) : (e = cc.newElement("canvas"), e.width = g, e.height = h, k = e.getContext("2d")); k.save(); k.globalCompositeOperation = "lighter"; var m = k.globalAlpha; 0 < a && (k.globalAlpha = a * m, k.drawImage(b[0], d.x, d.y, g, h, 0, 0, g, h)); 0 < f && (k.globalAlpha = f * m, k.drawImage(b[1], d.x, d.y, g, h, 0, 0, g, h)); 0 < c && (k.globalAlpha = c * m, k.drawImage(b[2], d.x, d.y, g, h, 0, 0, g, h)); 1 > a + f + c && (k.globalAlpha = m, k.drawImage(b[3], d.x, d.y, g, h, 0, 0, g, h)); k.restore(); return e }; cc.generateTextureCacheForColor = function (a) { function b() { var b = cc.generateTextureCacheForColor, d = a.width, g = a.height; c[0].width = d; c[0].height = g; c[1].width = d; c[1].height = g; c[2].width = d; c[2].height = g; c[3].width = d; c[3].height = g; b.canvas.width = d; b.canvas.height = g; var h = b.canvas.getContext("2d"); h.drawImage(a, 0, 0); b.tempCanvas.width = d; b.tempCanvas.height = g; for (var h = h.getImageData(0, 0, d, g).data, k = 0; 4 > k; k++) { var m = c[k].getContext("2d"); m.getImageData(0, 0, d, g).data; b.tempCtx.drawImage(a, 0, 0); for (var n = b.tempCtx.getImageData(0, 0, d, g), q = n.data, r = 0; r < h.length; r += 4) q[r] = 0 === k ? h[r] : 0, q[r + 1] = 1 === k ? h[r + 1] : 0, q[r + 2] = 2 === k ? h[r + 2] : 0, q[r + 3] = h[r + 3]; m.putImageData(n, 0, 0) } a.onload = null } if (a.channelCache) return a.channelCache; var c = [cc.newElement("canvas"), cc.newElement("canvas"), cc.newElement("canvas"), cc.newElement("canvas")]; try { b() } catch (d) { a.onload = b } return a.channelCache = c }; cc.generateTextureCacheForColor.canvas = cc.newElement("canvas"); cc.generateTextureCacheForColor.tempCanvas = cc.newElement("canvas"); cc.generateTextureCacheForColor.tempCtx = cc.generateTextureCacheForColor.tempCanvas.getContext("2d"); cc.cutRotateImageToCanvas = function (a, b) { if (!a) return null; if (!b) return a; var c = cc.newElement("canvas"); c.width = b.width; c.height = b.height; var d = c.getContext("2d"); d.translate(c.width / 2, c.height / 2); d.rotate(-1.5707963267948966); d.drawImage(a, b.x, b.y, b.height, b.width, -b.height / 2, -b.width / 2, b.height, b.width); return c }; cc._getCompositeOperationByBlendFunc = function (a) { return a ? a.src == cc.SRC_ALPHA && a.dst == cc.ONE || a.src == cc.ONE && a.dst == cc.ONE ? "lighter" : a.src == cc.ZERO && a.dst == cc.SRC_ALPHA ? "destination-in" : a.src == cc.ZERO && a.dst == cc.ONE_MINUS_SRC_ALPHA ? "destination-out" : "source" : "source" }; cc.Sprite = cc.Node.extend({ dirty: !1, atlasIndex: 0, textureAtlas: null, _batchNode: null, _recursiveDirty: null, _hasChildren: null, _shouldBeHidden: !1, _transformToBatch: null, _blendFunc: null, _texture: null, _rect: null, _rectRotated: !1, _offsetPosition: null, _unflippedOffsetPositionFromCenter: null, _opacityModifyRGB: !1, _flippedX: !1, _flippedY: !1, _textureLoaded: !1, _loadedEventListeners: null, _newTextureWhenChangeColor: null, _className: "Sprite", _oldDisplayColor: cc.color.WHITE, textureLoaded: function () { return this._textureLoaded }, addLoadedEventListener: function (a, b) { this._loadedEventListeners || (this._loadedEventListeners = []); this._loadedEventListeners.push({ eventCallback: a, eventTarget: b }) }, _callLoadedEventCallbacks: function () { if (this._loadedEventListeners) { for (var a = this._loadedEventListeners, b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } }, isDirty: function () { return this.dirty }, setDirty: function (a) { this.dirty = a }, isTextureRectRotated: function () { return this._rectRotated }, getAtlasIndex: function () { return this.atlasIndex }, setAtlasIndex: function (a) { this.atlasIndex = a }, getTextureRect: function () { return cc.rect(this._rect.x, this._rect.y, this._rect.width, this._rect.height) }, getTextureAtlas: function () { return this.textureAtlas }, setTextureAtlas: function (a) { this.textureAtlas = a }, getOffsetPosition: function () { return cc.p(this._offsetPosition) }, _getOffsetX: function () { return this._offsetPosition.x }, _getOffsetY: function () { return this._offsetPosition.y }, getBlendFunc: function () { return this._blendFunc }, initWithSpriteFrame: function (a) { cc.assert(a, cc._LogInfos.Sprite_initWithSpriteFrame); a.textureLoaded() || (this._textureLoaded = !1, a.addLoadedEventListener(this._spriteFrameLoadedCallback, this)); var b = cc._renderType === cc._RENDER_TYPE_CANVAS ? !1 : a._rotated, b = this.initWithTexture(a.getTexture(), a.getRect(), b); this.setSpriteFrame(a); return b }, _spriteFrameLoadedCallback: null, initWithSpriteFrameName: function (a) { cc.assert(a, cc._LogInfos.Sprite_initWithSpriteFrameName); var b = cc.spriteFrameCache.getSpriteFrame(a); cc.assert(b, a + cc._LogInfos.Sprite_initWithSpriteFrameName1); return this.initWithSpriteFrame(b) }, useBatchNode: function (a) { this.textureAtlas = a.textureAtlas; this._batchNode = a }, setVertexRect: function (a) { this._rect.x = a.x; this._rect.y = a.y; this._rect.width = a.width; this._rect.height = a.height }, sortAllChildren: function () { if (this._reorderChildDirty) { var a = this._children, b = a.length, c, d, e; for (c = 1; c < b; c++) { e = a[c]; for (d = c - 1; 0 <= d;) { if (e._localZOrder < a[d]._localZOrder) a[d + 1] = a[d]; else if (e._localZOrder === a[d]._localZOrder && e.arrivalOrder < a[d].arrivalOrder) a[d + 1] = a[d]; else break; d-- } a[d + 1] = e } this._batchNode && this._arrayMakeObjectsPerformSelector(a, cc.Node._StateCallbackType.sortAllChildren); this._reorderChildDirty = !1 } }, reorderChild: function (a, b) { cc.assert(a, cc._LogInfos.Sprite_reorderChild_2); -1 === this._children.indexOf(a) ? cc.log(cc._LogInfos.Sprite_reorderChild) : b !== a.zIndex && (this._batchNode && !this._reorderChildDirty && (this._setReorderChildDirtyRecursively(), this._batchNode.reorderBatch(!0)), cc.Node.prototype.reorderChild.call(this, a, b)) }, removeChild: function (a, b) { this._batchNode && this._batchNode.removeSpriteFromAtlas(a); cc.Node.prototype.removeChild.call(this, a, b) }, setVisible: function (a) { cc.Node.prototype.setVisible.call(this, a); this.setDirtyRecursively(!0) }, removeAllChildren: function (a) { var b = this._children, c = this._batchNode; if (c && null != b) for (var d = 0, e = b.length; d < e; d++) c.removeSpriteFromAtlas(b[d]); cc.Node.prototype.removeAllChildren.call(this, a); this._hasChildren = !1 }, setDirtyRecursively: function (a) { this.dirty = this._recursiveDirty = a; a = this._children; for (var b, c = a ? a.length : 0, d = 0; d < c; d++) b = a[d], b instanceof cc.Sprite && b.setDirtyRecursively(!0) }, setNodeDirty: function (a) { cc.Node.prototype.setNodeDirty.call(this); a || !this._batchNode || this._recursiveDirty || (this._hasChildren ? this.setDirtyRecursively(!0) : this.dirty = this._recursiveDirty = !0) }, ignoreAnchorPointForPosition: function (a) { this._batchNode ? cc.log(cc._LogInfos.Sprite_ignoreAnchorPointForPosition) : cc.Node.prototype.ignoreAnchorPointForPosition.call(this, a) }, setFlippedX: function (a) { this._flippedX != a && (this._flippedX = a, this.setTextureRect(this._rect, this._rectRotated, this._contentSize), this.setNodeDirty(!0)) }, setFlippedY: function (a) { this._flippedY != a && (this._flippedY = a, this.setTextureRect(this._rect, this._rectRotated, this._contentSize), this.setNodeDirty(!0)) }, isFlippedX: function () { return this._flippedX }, isFlippedY: function () { return this._flippedY }, setOpacityModifyRGB: null, isOpacityModifyRGB: function () { return this._opacityModifyRGB }, updateDisplayedOpacity: null, setDisplayFrameWithAnimationName: function (a, b) { cc.assert(a, cc._LogInfos.Sprite_setDisplayFrameWithAnimationName_3); var c = cc.animationCache.getAnimation(a); c ? (c = c.getFrames()[b]) ? this.setSpriteFrame(c.getSpriteFrame()) : cc.log(cc._LogInfos.Sprite_setDisplayFrameWithAnimationName_2) : cc.log(cc._LogInfos.Sprite_setDisplayFrameWithAnimationName) }, getBatchNode: function () { return this._batchNode }, _setReorderChildDirtyRecursively: function () { if (!this._reorderChildDirty) { this._reorderChildDirty = !0; for (var a = this._parent; a && a != this._batchNode;) a._setReorderChildDirtyRecursively(), a = a.parent } }, getTexture: function () { return this._texture }, _quad: null, _quadWebBuffer: null, _quadDirty: !1, _colorized: !1, _blendFuncStr: "source", _originalTexture: null, _textureRect_Canvas: null, _drawSize_Canvas: null, ctor: null, _softInit: function (a, b, c) { if (void 0 === a) cc.Sprite.prototype.init.call(this); else if (cc.isString(a)) "#" === a[0] ? (a = a.substr(1, a.length - 1), a = cc.spriteFrameCache.getSpriteFrame(a), this.initWithSpriteFrame(a)) : cc.Sprite.prototype.init.call(this, a, b); else if (cc.isObject(a)) if (a instanceof cc.Texture2D) this.initWithTexture(a, b, c); else if (a instanceof cc.SpriteFrame) this.initWithSpriteFrame(a); else if (a instanceof HTMLImageElement || a instanceof HTMLCanvasElement) b = new cc.Texture2D, b.initWithElement(a), b.handleLoadedTexture(), this.initWithTexture(b) }, getQuad: function () { return this._quad }, setBlendFunc: null, init: null, initWithFile: function (a, b) { cc.assert(a, cc._LogInfos.Sprite_initWithFile); var c = cc.textureCache.getTextureForKey(a); if (c) { if (!b) { var d = c.getContentSize(); b = cc.rect(0, 0, d.width, d.height) } return this.initWithTexture(c, b) } c = cc.textureCache.addImage(a); return this.initWithTexture(c, b || cc.rect(0, 0, c._contentSize.width, c._contentSize.height)) }, initWithTexture: null, _textureLoadedCallback: null, setTextureRect: null, updateTransform: null, addChild: null, updateColor: function () { var a = this._displayedColor, b = this._displayedOpacity, a = { r: a.r, g: a.g, b: a.b, a: b }; this._opacityModifyRGB && (a.r *= b / 255, a.g *= b / 255, a.b *= b / 255); b = this._quad; b.bl.colors = a; b.br.colors = a; b.tl.colors = a; b.tr.colors = a; this._batchNode && (this.atlasIndex != cc.Sprite.INDEX_NOT_INITIALIZED ? this.textureAtlas.updateQuad(b, this.atlasIndex) : this.dirty = !0); this._quadDirty = !0 }, setOpacity: null, setColor: null, updateDisplayedColor: null, setSpriteFrame: null, setDisplayFrame: function (a) { cc.log(cc._LogInfos.Sprite_setDisplayFrame); this.setSpriteFrame(a) }, isFrameDisplayed: null, displayFrame: function () { return cc.SpriteFrame.create(this._texture, cc.rectPointsToPixels(this._rect), this._rectRotated, cc.pointPointsToPixels(this._unflippedOffsetPositionFromCenter), cc.sizePointsToPixels(this._contentSize)) }, setBatchNode: null, setTexture: null, _updateBlendFunc: function () { this._batchNode ? cc.log(cc._LogInfos.Sprite__updateBlendFunc) : this._texture && this._texture.hasPremultipliedAlpha() ? (this._blendFunc.src = cc.BLEND_SRC, this._blendFunc.dst = cc.BLEND_DST, this.opacityModifyRGB = !0) : (this._blendFunc.src = cc.SRC_ALPHA, this._blendFunc.dst = cc.ONE_MINUS_SRC_ALPHA, this.opacityModifyRGB = !1) }, _changeTextureColor: function () { var a, b = this._texture, c = this._textureRect_Canvas; b && c.validRect && this._originalTexture && (a = b.getHtmlElementObj()) && (this._colorized = !0, a instanceof HTMLCanvasElement && !this._rectRotated && !this._newTextureWhenChangeColor && this._originalTexture._htmlElementObj != a ? cc.generateTintImageWithMultiply(this._originalTexture._htmlElementObj, this._displayedColor, c, a) : (a = cc.generateTintImageWithMultiply(this._originalTexture._htmlElementObj, this._displayedColor, c), b = new cc.Texture2D, b.initWithElement(a), b.handleLoadedTexture(), this.texture = b)) }, _setTextureCoords: function (a) { a = cc.rectPointsToPixels(a); var b = this._batchNode ? this.textureAtlas.texture : this._texture; if (b) { var c = b.pixelsWidth, d = b.pixelsHeight, e, f = this._quad; this._rectRotated ? (cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL ? (b = (2 * a.x + 1) / (2 * c), c = b + (2 * a.height - 2) / (2 * c), e = (2 * a.y + 1) / (2 * d), a = e + (2 * a.width - 2) / (2 * d)) : (b = a.x / c, c = (a.x + a.height) / c, e = a.y / d, a = (a.y + a.width) / d), this._flippedX && (d = e, e = a, a = d), this._flippedY && (d = b, b = c, c = d), f.bl.texCoords.u = b, f.bl.texCoords.v = e, f.br.texCoords.u = b, f.br.texCoords.v = a, f.tl.texCoords.u = c, f.tl.texCoords.v = e, f.tr.texCoords.u = c, f.tr.texCoords.v = a) : (cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL ? (b = (2 * a.x + 1) / (2 * c), c = b + (2 * a.width - 2) / (2 * c), e = (2 * a.y + 1) / (2 * d), a = e + (2 * a.height - 2) / (2 * d)) : (b = a.x / c, c = (a.x + a.width) / c, e = a.y / d, a = (a.y + a.height) / d), this._flippedX && (d = b, b = c, c = d), this._flippedY && (d = e, e = a, a = d), f.bl.texCoords.u = b, f.bl.texCoords.v = a, f.br.texCoords.u = c, f.br.texCoords.v = a, f.tl.texCoords.u = b, f.tl.texCoords.v = e, f.tr.texCoords.u = c, f.tr.texCoords.v = e); this._quadDirty = !0 } }, draw: null }); cc.Sprite.create = function (a, b, c) { return new cc.Sprite(a, b, c) }; cc.Sprite.createWithTexture = cc.Sprite.create; cc.Sprite.createWithSpriteFrameName = cc.Sprite.create; cc.Sprite.createWithSpriteFrame = cc.Sprite.create; cc.Sprite.INDEX_NOT_INITIALIZED = -1; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.Sprite.prototype, _p._spriteFrameLoadedCallback = function (a) { this.setNodeDirty(!0); this.setTextureRect(a.getRect(), a.isRotated(), a.getOriginalSize()); a = this.color; 255 === a.r && 255 === a.g && 255 === a.b || this._changeTextureColor(); this._callLoadedEventCallbacks() }, _p.setOpacityModifyRGB = function (a) { this._opacityModifyRGB !== a && (this._opacityModifyRGB = a, this.setNodeDirty(!0)) }, _p.updateDisplayedOpacity = function (a) { cc.Node.prototype.updateDisplayedOpacity.call(this, a); this._setNodeDirtyForCache() }, _p.ctor = function (a, b, c) { cc.Node.prototype.ctor.call(this); this._shouldBeHidden = !1; this._offsetPosition = cc.p(0, 0); this._unflippedOffsetPositionFromCenter = cc.p(0, 0); this._blendFunc = { src: cc.BLEND_SRC, dst: cc.BLEND_DST }; this._rect = cc.rect(0, 0, 0, 0); this._newTextureWhenChangeColor = !1; this._textureLoaded = !0; this._textureRect_Canvas = { x: 0, y: 0, width: 0, height: 0, validRect: !1 }; this._drawSize_Canvas = cc.size(0, 0); this._softInit(a, b, c) }, _p.setBlendFunc = function (a, b) { var c = this._blendFunc; void 0 === b ? (c.src = a.src, c.dst = a.dst) : (c.src = a, c.dst = b); cc._renderType === cc._RENDER_TYPE_CANVAS && (this._blendFuncStr = cc._getCompositeOperationByBlendFunc(c)) }, _p.init = function () { if (0 < arguments.length) return this.initWithFile(arguments[0], arguments[1]); cc.Node.prototype.init.call(this); this.dirty = this._recursiveDirty = !1; this._opacityModifyRGB = !0; this._blendFunc.src = cc.BLEND_SRC; this._blendFunc.dst = cc.BLEND_DST; this.texture = null; this._textureLoaded = !0; this._flippedX = this._flippedY = !1; this.anchorY = this.anchorX = 0.5; this._offsetPosition.x = 0; this._offsetPosition.y = 0; this._hasChildren = !1; this.setTextureRect(cc.rect(0, 0, 0, 0), !1, cc.size(0, 0)); return !0 }, _p.initWithTexture = function (a, b, c) { cc.assert(0 != arguments.length, cc._LogInfos.CCSpriteBatchNode_initWithTexture); if ((c = c || !1) && a.isLoaded()) { var d = a.getHtmlElementObj(), d = cc.cutRotateImageToCanvas(d, b), e = new cc.Texture2D; e.initWithElement(d); e.handleLoadedTexture(); a = e; this._rect = cc.rect(0, 0, b.width, b.height) } if (!cc.Node.prototype.init.call(this)) return !1; this._batchNode = null; this.dirty = this._recursiveDirty = !1; this._opacityModifyRGB = !0; this._blendFunc.src = cc.BLEND_SRC; this._blendFunc.dst = cc.BLEND_DST; this._flippedX = this._flippedY = !1; this.anchorY = this.anchorX = 0.5; this._offsetPosition.x = 0; this._offsetPosition.y = 0; this._hasChildren = !1; this._textureLoaded = d = a.isLoaded(); if (!d) return this._rectRotated = c, b && (this._rect.x = b.x, this._rect.y = b.y, this._rect.width = b.width, this._rect.height = b.height), this.texture && this.texture.removeLoadedEventListener(this), a.addLoadedEventListener(this._textureLoadedCallback, this), this.texture = a, !0; b || (b = cc.rect(0, 0, a.width, a.height)); a && a.url && (d = b.y + b.height, b.x + b.width > a.width && cc.error(cc._LogInfos.RectWidth, a.url), d > a.height && cc.error(cc._LogInfos.RectHeight, a.url)); this.texture = this._originalTexture = a; this.setTextureRect(b, c); this.batchNode = null; return !0 }, _p._textureLoadedCallback = function (a) { if (!this._textureLoaded) { this._textureLoaded = !0; var b = this._rect; b ? cc._rectEqualToZero(b) && (b.width = a.width, b.height = a.height) : b = cc.rect(0, 0, a.width, a.height); this.texture = this._originalTexture = a; this.setTextureRect(b, this._rectRotated); a = this._displayedColor; 255 == a.r && 255 == a.g && 255 == a.b || this._changeTextureColor(); this.batchNode = this._batchNode; this._callLoadedEventCallbacks() } }, _p.setTextureRect = function (a, b, c) { this._rectRotated = b || !1; this.setContentSize(c || a); this.setVertexRect(a); b = this._textureRect_Canvas; c = cc.contentScaleFactor(); b.x = 0 | a.x * c; b.y = 0 | a.y * c; b.width = 0 | a.width * c; b.height = 0 | a.height * c; b.validRect = !(0 === b.width || 0 === b.height || 0 > b.x || 0 > b.y); a = this._unflippedOffsetPositionFromCenter; this._flippedX && (a.x = -a.x); this._flippedY && (a.y = -a.y); this._offsetPosition.x = a.x + (this._contentSize.width - this._rect.width) / 2; this._offsetPosition.y = a.y + (this._contentSize.height - this._rect.height) / 2; this._batchNode && (this.dirty = !0) }, _p.updateTransform = function () { if (this.dirty) { var a = this._parent; !this._visible || a && a != this._batchNode && a._shouldBeHidden ? this._shouldBeHidden = !0 : (this._shouldBeHidden = !1, this._transformToBatch = a && a != this._batchNode ? cc.affineTransformConcat(this.nodeToParentTransform(), a._transformToBatch) : this.nodeToParentTransform()); this.dirty = this._recursiveDirty = !1 } this._hasChildren && this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.updateTransform) }, _p.addChild = function (a, b, c) { cc.assert(a, cc._LogInfos.CCSpriteBatchNode_addChild_2); null == b && (b = a._localZOrder); null == c && (c = a.tag); cc.Node.prototype.addChild.call(this, a, b, c); this._hasChildren = !0 }, _p.setOpacity = function (a) { cc.Node.prototype.setOpacity.call(this, a); this._setNodeDirtyForCache() }, _p.setColor = function (a) { var b = this.color; this._oldDisplayColor = b; b.r === a.r && b.g === a.g && b.b === a.b || cc.Node.prototype.setColor.call(this, a) }, _p.updateDisplayedColor = function (a) { cc.Node.prototype.updateDisplayedColor.call(this, a); a = this._oldDisplayColor; var b = this._displayedColor; if (a.r !== b.r || a.g !== b.g || a.b !== b.b) this._changeTextureColor(), this._setNodeDirtyForCache() }, _p.setSpriteFrame = function (a) { var b = this; cc.isString(a) && (a = cc.spriteFrameCache.getSpriteFrame(a), cc.assert(a, cc._LogInfos.CCSpriteBatchNode_setSpriteFrame)); b.setNodeDirty(!0); var c = a.getOffset(); b._unflippedOffsetPositionFromCenter.x = c.x; b._unflippedOffsetPositionFromCenter.y = c.y; b._rectRotated = a.isRotated(); var c = a.getTexture(), d = a.textureLoaded(); d || (b._textureLoaded = !1, a.addLoadedEventListener(function (a) { b._textureLoaded = !0; var c = a.getTexture(); c != b._texture && (b.texture = c); b.setTextureRect(a.getRect(), a.isRotated(), a.getOriginalSize()); b._callLoadedEventCallbacks() }, b)); c != b._texture && (b.texture = c); b._rectRotated && (b._originalTexture = c); b.setTextureRect(a.getRect(), b._rectRotated, a.getOriginalSize()); b._colorized = !1; d && (a = b.color, 255 === a.r && 255 === a.g && 255 === a.b || b._changeTextureColor()) }, _p.isFrameDisplayed = function (a) { return a.getTexture() != this._texture ? !1 : cc.rectEqualToRect(a.getRect(), this._rect) }, _p.setBatchNode = function (a) { (this._batchNode = a) ? (this._transformToBatch = cc.affineTransformIdentity(), this.textureAtlas = this._batchNode.textureAtlas) : (this.atlasIndex = cc.Sprite.INDEX_NOT_INITIALIZED, this.textureAtlas = null, this.dirty = this._recursiveDirty = !1) }, _p.setTexture = function (a) { a && cc.isString(a) ? (a = cc.textureCache.addImage(a), this.setTexture(a), a = a.getContentSize(), this.setTextureRect(cc.rect(0, 0, a.width, a.height))) : (cc.assert(!a || a instanceof cc.Texture2D, cc._LogInfos.CCSpriteBatchNode_setTexture), this._texture != a && (a && a.getHtmlElementObj() instanceof HTMLImageElement && (this._originalTexture = a), this._texture = a)) }, _p.draw = function (a) { if (this._textureLoaded) { a = a || cc._renderContext; "source" != this._blendFuncStr && (a.globalCompositeOperation = this._blendFuncStr); var b = cc.view.getScaleX(), c = cc.view.getScaleY(); a.globalAlpha = this._displayedOpacity / 255; var d = this._rect, e = this._contentSize, f = this._offsetPosition, g = this._drawSize_Canvas, h = 0 | f.x, k = -f.y - d.height, m = this._textureRect_Canvas; g.width = d.width * b; g.height = d.height * c; if (this._flippedX || this._flippedY) a.save(), this._flippedX && (h = -f.x - d.width, a.scale(-1, 1)), this._flippedY && (k = f.y, a.scale(1, -1)); h *= b; k *= c; this._texture && m.validRect ? (e = this._texture.getHtmlElementObj(), this._colorized ? a.drawImage(e, 0, 0, m.width, m.height, h, k, g.width, g.height) : a.drawImage(e, m.x, m.y, m.width, m.height, h, k, g.width, g.height)) : !this._texture && m.validRect && (g = this.color, a.fillStyle = "rgba(" + g.r + "," + g.g + "," + g.b + ",1)", a.fillRect(h, k, e.width * b, e.height * c)); 1 === cc.SPRITE_DEBUG_DRAW || this._showNode ? (a.strokeStyle = "rgba(0,255,0,1)", h /= b, k = -(k / c), h = [cc.p(h, k), cc.p(h + d.width, k), cc.p(h + d.width, k - d.height), cc.p(h, k - d.height)], cc._drawingUtil.drawPoly(h, 4, !0)) : 2 === cc.SPRITE_DEBUG_DRAW && (a.strokeStyle = "rgba(0,255,0,1)", b = this._rect, k = -k, h = [cc.p(h, k), cc.p(h + b.width, k), cc.p(h + b.width, k - b.height), cc.p(h, k - b.height)], cc._drawingUtil.drawPoly(h, 4, !0)); (this._flippedX || this._flippedY) && a.restore(); cc.g_NumberOfDraws++ } }, cc.sys._supportCanvasNewBlendModes || (_p._changeTextureColor = function () { var a, b = this._texture, c = this._textureRect_Canvas; b && c.validRect && this._originalTexture && (a = b.getHtmlElementObj()) && (b = cc.textureCache.getTextureColors(this._originalTexture.getHtmlElementObj())) && (this._colorized = !0, a instanceof HTMLCanvasElement && !this._rectRotated && !this._newTextureWhenChangeColor ? cc.generateTintImage(a, b, this._displayedColor, c, a) : (a = cc.generateTintImage(a, b, this._displayedColor, c), b = new cc.Texture2D, b.initWithElement(a), b.handleLoadedTexture(), this.texture = b)) }), delete _p) : (cc.assert(cc.isFunction(cc._tmp.WebGLSprite), cc._LogInfos.MissingFile, "SpritesWebGL.js"), cc._tmp.WebGLSprite(), delete cc._tmp.WebGLSprite); cc.assert(cc.isFunction(cc._tmp.PrototypeSprite), cc._LogInfos.MissingFile, "SpritesPropertyDefine.js"); cc._tmp.PrototypeSprite(); delete cc._tmp.PrototypeSprite; cc.DEFAULT_SPRITE_BATCH_CAPACITY = 29; cc.SpriteBatchNode = cc.Node.extend({ textureAtlas: null, _blendFunc: null, _descendants: null, _className: "SpriteBatchNode", addSpriteWithoutQuad: function (a, b, c) { cc.assert(a, cc._LogInfos.SpriteBatchNode_addSpriteWithoutQuad_2); if (!(a instanceof cc.Sprite)) return cc.log(cc._LogInfos.SpriteBatchNode_addSpriteWithoutQuad), null; a.atlasIndex = b; var d = 0, e = this._descendants; if (e && 0 < e.length) for (var f = 0; f < e.length; f++) { var g = e[f]; g && g.atlasIndex >= b && ++d } e.splice(d, 0, a); cc.Node.prototype.addChild.call(this, a, b, c); this.reorderBatch(!1); return this }, getTextureAtlas: function () { return this.textureAtlas }, setTextureAtlas: function (a) { a != this.textureAtlas && (this.textureAtlas = a) }, getDescendants: function () { return this._descendants }, initWithFile: function (a, b) { var c = cc.textureCache.getTextureForKey(a); c || (c = cc.textureCache.addImage(a)); return this.initWithTexture(c, b) }, _setNodeDirtyForCache: function () { this._cacheDirty = !0 }, init: function (a, b) { var c = cc.textureCache.getTextureForKey(a); c || (c = cc.textureCache.addImage(a)); return this.initWithTexture(c, b) }, increaseAtlasCapacity: function () { var a = this.textureAtlas.capacity, b = Math.floor(4 * (a + 1) / 3); cc.log(cc._LogInfos.SpriteBatchNode_increaseAtlasCapacity, a, b); this.textureAtlas.resizeCapacity(b) || cc.log(cc._LogInfos.SpriteBatchNode_increaseAtlasCapacity_2) }, removeChildAtIndex: function (a, b) { this.removeChild(this._children[a], b) }, rebuildIndexInOrder: function (a, b) { var c = a.children; if (c && 0 < c.length) for (var d = 0; d < c.length; d++) { var e = c[d]; e && 0 > e.zIndex && (b = this.rebuildIndexInOrder(e, b)) } !a == this && (a.atlasIndex = b, b++); if (c && 0 < c.length) for (d = 0; d < c.length; d++) (e = c[d]) && 0 <= e.zIndex && (b = this.rebuildIndexInOrder(e, b)); return b }, highestAtlasIndexInChild: function (a) { var b = a.children; return b && 0 != b.length ? this.highestAtlasIndexInChild(b[b.length - 1]) : a.atlasIndex }, lowestAtlasIndexInChild: function (a) { var b = a.children; return b && 0 != b.length ? this.lowestAtlasIndexInChild(b[b.length - 1]) : a.atlasIndex }, atlasIndexForChild: function (a, b) { var c = a.parent, d = c.children, e = d.indexOf(a), f = null; 0 < e && e < cc.UINT_MAX && (f = d[e - 1]); return c == this ? 0 == e ? 0 : this.highestAtlasIndexInChild(f) + 1 : 0 == e ? 0 > b ? c.atlasIndex : c.atlasIndex + 1 : 0 > f.zIndex && 0 > b || 0 <= f.zIndex && 0 <= b ? this.highestAtlasIndexInChild(f) + 1 : c.atlasIndex + 1 }, reorderBatch: function (a) { this._reorderChildDirty = a }, setBlendFunc: function (a, b) { this._blendFunc = void 0 === b ? a : { src: a, dst: b } }, getBlendFunc: function () { return this._blendFunc }, reorderChild: function (a, b) { cc.assert(a, cc._LogInfos.SpriteBatchNode_reorderChild_2); -1 === this._children.indexOf(a) ? cc.log(cc._LogInfos.SpriteBatchNode_reorderChild) : b !== a.zIndex && (cc.Node.prototype.reorderChild.call(this, a, b), this.setNodeDirty()) }, removeChild: function (a, b) { null != a && (-1 === this._children.indexOf(a) ? cc.log(cc._LogInfos.SpriteBatchNode_removeChild) : (this.removeSpriteFromAtlas(a), cc.Node.prototype.removeChild.call(this, a, b))) }, _mvpMatrix: null, _textureForCanvas: null, _useCache: !1, _originalTexture: null, ctor: null, _ctorForCanvas: function (a, b) { cc.Node.prototype.ctor.call(this); var c; b = b || cc.DEFAULT_SPRITE_BATCH_CAPACITY; cc.isString(a) ? (c = cc.textureCache.getTextureForKey(a)) || (c = cc.textureCache.addImage(a)) : a instanceof cc.Texture2D && (c = a); c && this.initWithTexture(c, b) }, _ctorForWebGL: function (a, b) { cc.Node.prototype.ctor.call(this); this._mvpMatrix = new cc.kmMat4; var c; b = b || cc.DEFAULT_SPRITE_BATCH_CAPACITY; cc.isString(a) ? (c = cc.textureCache.getTextureForKey(a)) || (c = cc.textureCache.addImage(a)) : a instanceof cc.Texture2D && (c = a); c && this.initWithTexture(c, b) }, updateQuadFromSprite: null, _updateQuadFromSpriteForCanvas: function (a, b) { cc.assert(a, cc._LogInfos.CCSpriteBatchNode_updateQuadFromSprite_2); a instanceof cc.Sprite ? (a.batchNode = this, a.atlasIndex = b, a.dirty = !0, a.updateTransform()) : cc.log(cc._LogInfos.CCSpriteBatchNode_updateQuadFromSprite) }, _updateQuadFromSpriteForWebGL: function (a, b) { cc.assert(a, cc._LogInfos.CCSpriteBatchNode_updateQuadFromSprite); if (a instanceof cc.Sprite) { for (var c = this.textureAtlas.capacity; b >= c || c == this.textureAtlas.totalQuads;) this.increaseAtlasCapacity(); a.batchNode = this; a.atlasIndex = b; a.dirty = !0; a.updateTransform() } else cc.log(cc._LogInfos.CCSpriteBatchNode_updateQuadFromSprite) }, _swap: function (a, b) { var c = this._descendants, d = this.textureAtlas, e = d.quads, f = c[a], g = cc.V3F_C4B_T2F_QuadCopy(e[a]); c[b].atlasIndex = a; c[a] = c[b]; d.updateQuad(e[b], a); c[b] = f; d.updateQuad(g, b) }, insertQuadFromSprite: null, _insertQuadFromSpriteForCanvas: function (a, b) { cc.assert(a, cc._LogInfos.CCSpriteBatchNode_insertQuadFromSprite_2); a instanceof cc.Sprite ? (a.batchNode = this, a.atlasIndex = b, a.dirty = !0, a.updateTransform(), a._setCachedParent(this), this._children.splice(b, 0, a)) : cc.log(cc._LogInfos.CCSpriteBatchNode_insertQuadFromSprite) }, _insertQuadFromSpriteForWebGL: function (a, b) { cc.assert(a, cc._LogInfos.Sprite_insertQuadFromSprite_2); if (a instanceof cc.Sprite) { for (var c = this.textureAtlas; b >= c.capacity || c.capacity === c.totalQuads;) this.increaseAtlasCapacity(); a.batchNode = this; a.atlasIndex = b; c.insertQuad(a.quad, b); a.dirty = !0; a.updateTransform() } else cc.log(cc._LogInfos.Sprite_insertQuadFromSprite) }, _updateAtlasIndex: function (a, b) { var c = 0, d = a.children; d && (c = d.length); var e = 0; if (0 === c) e = a.atlasIndex, a.atlasIndex = b, a.arrivalOrder = 0, e != b && this._swap(e, b), b++; else { e = !0; 0 <= d[0].zIndex && (e = a.atlasIndex, a.atlasIndex = b, a.arrivalOrder = 0, e != b && this._swap(e, b), b++, e = !1); for (c = 0; c < d.length; c++) { var f = d[c]; e && 0 <= f.zIndex && (e = a.atlasIndex, a.atlasIndex = b, a.arrivalOrder = 0, e != b && this._swap(e, b), b++, e = !1); b = this._updateAtlasIndex(f, b) } e && (e = a.atlasIndex, a.atlasIndex = b, a.arrivalOrder = 0, e != b && this._swap(e, b), b++) } return b }, _updateBlendFunc: function () { this.textureAtlas.texture.hasPremultipliedAlpha() || (this._blendFunc.src = cc.SRC_ALPHA, this._blendFunc.dst = cc.ONE_MINUS_SRC_ALPHA) }, initWithTexture: null, _initWithTextureForCanvas: function (a, b) { this._children = []; this._descendants = []; this._blendFunc = new cc.BlendFunc(cc.BLEND_SRC, cc.BLEND_DST); this._textureForCanvas = this._originalTexture = a; return !0 }, _initWithTextureForWebGL: function (a, b) { this._children = []; this._descendants = []; this._blendFunc = new cc.BlendFunc(cc.BLEND_SRC, cc.BLEND_DST); b = b || cc.DEFAULT_SPRITE_BATCH_CAPACITY; this.textureAtlas = new cc.TextureAtlas; this.textureAtlas.initWithTexture(a, b); this._updateBlendFunc(); this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURECOLOR); return !0 }, insertChild: function (a, b) { a.batchNode = this; a.atlasIndex = b; a.dirty = !0; var c = this.textureAtlas; c.totalQuads >= c.capacity && this.increaseAtlasCapacity(); c.insertQuad(a.quad, b); this._descendants.splice(b, 0, a); var c = b + 1, d = this._descendants; if (d && 0 < d.length) for (; c < d.length; c++) d[c].atlasIndex++; var d = a.children, e; if (d) for (c = 0, l = d.length || 0; c < l; c++) if (e = d[c]) { var f = this.atlasIndexForChild(e, e.zIndex); this.insertChild(e, f) } }, appendChild: null, _appendChildForCanvas: function (a) { this._reorderChildDirty = !0; a.batchNode = this; a.dirty = !0; this._descendants.push(a); a.atlasIndex = this._descendants.length - 1; a = a.children; for (var b = 0, c = a.length || 0; b < c; b++) this.appendChild(a[b]) }, _appendChildForWebGL: function (a) { this._reorderChildDirty = !0; a.batchNode = this; a.dirty = !0; this._descendants.push(a); var b = this._descendants.length - 1; a.atlasIndex = b; var c = this.textureAtlas; c.totalQuads == c.capacity && this.increaseAtlasCapacity(); c.insertQuad(a.quad, b); a = a.children; b = 0; for (c = a.length || 0; b < c; b++) this.appendChild(a[b]) }, removeSpriteFromAtlas: null, _removeSpriteFromAtlasForCanvas: function (a) { a.batchNode = null; var b = this._descendants, c = b.indexOf(a); if (-1 != c) { b.splice(c, 1); for (var d = b.length; c < d; ++c) b[c].atlasIndex-- } if (a = a.children) for (b = 0, c = a.length || 0; b < c; b++) a[b] && this.removeSpriteFromAtlas(a[b]) }, _removeSpriteFromAtlasForWebGL: function (a) { this.textureAtlas.removeQuadAtIndex(a.atlasIndex); a.batchNode = null; var b = this._descendants, c = b.indexOf(a); if (-1 != c) { b.splice(c, 1); for (var d = b.length; c < d; ++c) b[c].atlasIndex-- } if (a = a.children) for (b = 0, c = a.length || 0; b < c; b++) a[b] && this.removeSpriteFromAtlas(a[b]) }, getTexture: null, _getTextureForCanvas: function () { return this._textureForCanvas }, _getTextureForWebGL: function () { return this.textureAtlas.texture }, setTexture: null, _setTextureForCanvas: function (a) { this._textureForCanvas = a; for (var b = this._children, c = 0; c < b.length; c++) b[c].texture = a }, _setTextureForWebGL: function (a) { this.textureAtlas.texture = a; this._updateBlendFunc() }, visit: null, _visitForCanvas: function (a) { var b = a || cc._renderContext; if (this._visible) { b.save(); this.transform(a); var c = this._children; if (c) for (this.sortAllChildren(), a = 0; a < c.length; a++) c[a] && c[a].visit(b); b.restore() } }, _visitForWebGL: function (a) { a = a || cc._renderContext; if (this._visible) { cc.kmGLPushMatrix(); var b = this.grid; b && b.isActive() && (b.beforeDraw(), this.transformAncestors()); this.sortAllChildren(); this.transform(a); this.draw(a); b && b.isActive() && b.afterDraw(this); cc.kmGLPopMatrix(); this.arrivalOrder = 0 } }, addChild: null, _addChildForCanvas: function (a, b, c) { cc.assert(null != a, cc._LogInfos.CCSpriteBatchNode_addChild_3); a instanceof cc.Sprite ? (b = null == b ? a.zIndex : b, c = null == c ? a.tag : c, cc.Node.prototype.addChild.call(this, a, b, c), this.appendChild(a), this.setNodeDirty()) : cc.log(cc._LogInfos.CCSpriteBatchNode_addChild) }, _addChildForWebGL: function (a, b, c) { cc.assert(null != a, cc._LogInfos.Sprite_addChild_6); a instanceof cc.Sprite ? a.texture != this.textureAtlas.texture ? cc.log(cc._LogInfos.Sprite_addChild_5) : (b = null == b ? a.zIndex : b, c = null == c ? a.tag : c, cc.Node.prototype.addChild.call(this, a, b, c), this.appendChild(a), this.setNodeDirty()) : cc.log(cc._LogInfos.Sprite_addChild_4) }, removeAllChildren: null, _removeAllChildrenForCanvas: function (a) { var b = this._descendants; if (b && 0 < b.length) for (var c = 0, d = b.length; c < d; c++) b[c] && (b[c].batchNode = null); cc.Node.prototype.removeAllChildren.call(this, a); this._descendants.length = 0 }, _removeAllChildrenForWebGL: function (a) { var b = this._descendants; if (b && 0 < b.length) for (var c = 0, d = b.length; c < d; c++) b[c] && (b[c].batchNode = null); cc.Node.prototype.removeAllChildren.call(this, a); this._descendants.length = 0; this.textureAtlas.removeAllQuads() }, sortAllChildren: null, _sortAllChildrenForCanvas: function () { if (this._reorderChildDirty) { var a, b = 0, c = this._children, d = c.length, e; for (a = 1; a < d; a++) { var f = c[a], b = a - 1; for (e = c[b]; 0 <= b && (f._localZOrder < e._localZOrder || f._localZOrder == e._localZOrder && f.arrivalOrder < e.arrivalOrder) ;) c[b + 1] = e, b -= 1, e = c[b]; c[b + 1] = f } 0 < c.length && this._arrayMakeObjectsPerformSelector(c, cc.Node._StateCallbackType.sortAllChildren); this._reorderChildDirty = !1 } }, _sortAllChildrenForWebGL: function () { if (this._reorderChildDirty) { var a = this._children, b, c = 0, d = a.length, e; for (b = 1; b < d; b++) { var f = a[b], c = b - 1; for (e = a[c]; 0 <= c && (f._localZOrder < e._localZOrder || f._localZOrder == e._localZOrder && f.arrivalOrder < e.arrivalOrder) ;) a[c + 1] = e, c -= 1, e = a[c]; a[c + 1] = f } if (0 < a.length) for (this._arrayMakeObjectsPerformSelector(a, cc.Node._StateCallbackType.sortAllChildren), b = c = 0; b < a.length; b++) c = this._updateAtlasIndex(a[b], c); this._reorderChildDirty = !1 } }, draw: null, _drawForWebGL: function () { 0 !== this.textureAtlas.totalQuads && (this._shaderProgram.use(), this._shaderProgram.setUniformForModelViewAndProjectionMatrixWithMat4(), this._arrayMakeObjectsPerformSelector(this._children, cc.Node._StateCallbackType.updateTransform), cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst), this.textureAtlas.drawQuads()) } }); _p = cc.SpriteBatchNode.prototype; cc._renderType === cc._RENDER_TYPE_WEBGL ? (_p.ctor = _p._ctorForWebGL, _p.updateQuadFromSprite = _p._updateQuadFromSpriteForWebGL, _p.insertQuadFromSprite = _p._insertQuadFromSpriteForWebGL, _p.initWithTexture = _p._initWithTextureForWebGL, _p.appendChild = _p._appendChildForWebGL, _p.removeSpriteFromAtlas = _p._removeSpriteFromAtlasForWebGL, _p.getTexture = _p._getTextureForWebGL, _p.setTexture = _p._setTextureForWebGL, _p.visit = _p._visitForWebGL, _p.addChild = _p._addChildForWebGL, _p.removeAllChildren = _p._removeAllChildrenForWebGL, _p.sortAllChildren = _p._sortAllChildrenForWebGL, _p.draw = _p._drawForWebGL) : (_p.ctor = _p._ctorForCanvas, _p.updateQuadFromSprite = _p._updateQuadFromSpriteForCanvas, _p.insertQuadFromSprite = _p._insertQuadFromSpriteForCanvas, _p.initWithTexture = _p._initWithTextureForCanvas, _p.appendChild = _p._appendChildForCanvas, _p.removeSpriteFromAtlas = _p._removeSpriteFromAtlasForCanvas, _p.getTexture = _p._getTextureForCanvas, _p.setTexture = _p._setTextureForCanvas, _p.visit = _p._visitForCanvas, _p.removeAllChildren = _p._removeAllChildrenForCanvas, _p.addChild = _p._addChildForCanvas, _p.sortAllChildren = _p._sortAllChildrenForCanvas, _p.draw = cc.Node.prototype.draw); cc.defineGetterSetter(_p, "texture", _p.getTexture, _p.setTexture); cc.defineGetterSetter(_p, "descendants", _p.getDescendants); cc.SpriteBatchNode.create = function (a, b) { return new cc.SpriteBatchNode(a, b) }; cc.SpriteBatchNode.createWithTexture = cc.SpriteBatchNode.create; cc.BakeSprite = cc.Sprite.extend({ _cacheCanvas: null, _cacheContext: null, ctor: function () { cc.Sprite.prototype.ctor.call(this); var a = document.createElement("canvas"); a.width = a.height = 10; this._cacheCanvas = a; this._cacheContext = a.getContext("2d"); var b = new cc.Texture2D; b.initWithElement(a); b.handleLoadedTexture(); this.setTexture(b) }, getCacheContext: function () { return this._cacheContext }, getCacheCanvas: function () { return this._cacheCanvas }, resetCanvasSize: function (a, b) { void 0 === b && (b = a.height, a = a.width); var c = this._cacheCanvas; c.width = a; c.height = b; this.getTexture().handleLoadedTexture(); this.setTextureRect(cc.rect(0, 0, a, b), !1) } }); cc.AnimationFrame = cc.Class.extend({ _spriteFrame: null, _delayPerUnit: 0, _userInfo: null, ctor: function (a, b, c) { this._spriteFrame = a || null; this._delayPerUnit = b || 0; this._userInfo = c || null }, clone: function () { var a = new cc.AnimationFrame; a.initWithSpriteFrame(this._spriteFrame.clone(), this._delayPerUnit, this._userInfo); return a }, copyWithZone: function (a) { return cc.clone(this) }, copy: function (a) { a = new cc.AnimationFrame; a.initWithSpriteFrame(this._spriteFrame.clone(), this._delayPerUnit, this._userInfo); return a }, initWithSpriteFrame: function (a, b, c) { this._spriteFrame = a; this._delayPerUnit = b; this._userInfo = c; return !0 }, getSpriteFrame: function () { return this._spriteFrame }, setSpriteFrame: function (a) { this._spriteFrame = a }, getDelayUnits: function () { return this._delayPerUnit }, setDelayUnits: function (a) { this._delayPerUnit = a }, getUserInfo: function () { return this._userInfo }, setUserInfo: function (a) { this._userInfo = a } }); cc.AnimationFrame.create = function (a, b, c) { return new cc.AnimationFrame(a, b, c) }; cc.Animation = cc.Class.extend({ _frames: null, _loops: 0, _restoreOriginalFrame: !1, _duration: 0, _delayPerUnit: 0, _totalDelayUnits: 0, ctor: function (a, b, c) { this._frames = []; if (void 0 === a) this.initWithSpriteFrames(null, 0); else { var d = a[0]; d && (d instanceof cc.SpriteFrame ? this.initWithSpriteFrames(a, b, c) : d instanceof cc.AnimationFrame && this.initWithAnimationFrames(a, b, c)) } }, getFrames: function () { return this._frames }, setFrames: function (a) { this._frames = a }, addSpriteFrame: function (a) { var b = new cc.AnimationFrame; b.initWithSpriteFrame(a, 1, null); this._frames.push(b); this._totalDelayUnits++ }, addSpriteFrameWithFile: function (a) { a = cc.textureCache.addImage(a); var b = cc.rect(0, 0, 0, 0); b.width = a.width; b.height = a.height; a = cc.SpriteFrame.create(a, b); this.addSpriteFrame(a) }, addSpriteFrameWithTexture: function (a, b) { var c = cc.SpriteFrame.create(a, b); this.addSpriteFrame(c) }, initWithAnimationFrames: function (a, b, c) { cc.arrayVerifyType(a, cc.AnimationFrame); this._delayPerUnit = b; this._loops = void 0 === c ? 1 : c; this._totalDelayUnits = 0; b = this._frames; for (c = b.length = 0; c < a.length; c++) { var d = a[c]; b.push(d); this._totalDelayUnits += d.getDelayUnits() } return !0 }, clone: function () { var a = new cc.Animation; a.initWithAnimationFrames(this._copyFrames(), this._delayPerUnit, this._loops); a.setRestoreOriginalFrame(this._restoreOriginalFrame); return a }, copyWithZone: function (a) { a = new cc.Animation; a.initWithAnimationFrames(this._copyFrames(), this._delayPerUnit, this._loops); a.setRestoreOriginalFrame(this._restoreOriginalFrame); return a }, _copyFrames: function () { for (var a = [], b = 0; b < this._frames.length; b++) a.push(this._frames[b].clone()); return a }, copy: function (a) { return this.copyWithZone(null) }, getLoops: function () { return this._loops }, setLoops: function (a) { this._loops = a }, setRestoreOriginalFrame: function (a) { this._restoreOriginalFrame = a }, getRestoreOriginalFrame: function () { return this._restoreOriginalFrame }, getDuration: function () { return this._totalDelayUnits * this._delayPerUnit }, getDelayPerUnit: function () { return this._delayPerUnit }, setDelayPerUnit: function (a) { this._delayPerUnit = a }, getTotalDelayUnits: function () { return this._totalDelayUnits }, initWithSpriteFrames: function (a, b, c) { cc.arrayVerifyType(a, cc.SpriteFrame); this._loops = void 0 === c ? 1 : c; this._delayPerUnit = b || 0; this._totalDelayUnits = 0; b = this._frames; b.length = 0; if (a) { for (c = 0; c < a.length; c++) { var d = a[c], e = new cc.AnimationFrame; e.initWithSpriteFrame(d, 1, null); b.push(e) } this._totalDelayUnits += a.length } return !0 }, retain: function () { }, release: function () { } }); cc.Animation.create = function (a, b, c) { return new cc.Animation(a, b, c) }; cc.Animation.createWithAnimationFrames = cc.Animation.create; cc.animationCache = { _animations: {}, addAnimation: function (a, b) { this._animations[b] = a }, removeAnimation: function (a) { a && this._animations[a] && delete this._animations[a] }, getAnimation: function (a) { return this._animations[a] ? this._animations[a] : null }, _addAnimationsWithDictionary: function (a, b) { var c = a.animations; if (c) { var d = 1, e = a.properties; if (e) for (var d = null != e.format ? parseInt(e.format) : d, e = e.spritesheets, f = cc.spriteFrameCache, g = cc.path, h = 0; h < e.length; h++) f.addSpriteFrames(g.changeBasename(b, e[h])); switch (d) { case 1: this._parseVersion1(c); break; case 2: this._parseVersion2(c); break; default: cc.log(cc._LogInfos.animationCache__addAnimationsWithDictionary_2) } } else cc.log(cc._LogInfos.animationCache__addAnimationsWithDictionary) }, addAnimations: function (a) { cc.assert(a, cc._LogInfos.animationCache_addAnimations_2); var b = cc.loader.getRes(a); b ? this._addAnimationsWithDictionary(b, a) : cc.log(cc._LogInfos.animationCache_addAnimations) }, _parseVersion1: function (a) { var b = cc.spriteFrameCache, c; for (c in a) { var d = a[c], e = d.frames, d = parseFloat(d.delay) || 0, f = null; if (e) { for (var f = [], g = 0; g < e.length; g++) { var h = b.getSpriteFrame(e[g]); if (h) { var k = new cc.AnimationFrame; k.initWithSpriteFrame(h, 1, null); f.push(k) } else cc.log(cc._LogInfos.animationCache__parseVersion1_2, c, e[g]) } 0 === f.length ? cc.log(cc._LogInfos.animationCache__parseVersion1_3, c) : (f.length != e.length && cc.log(cc._LogInfos.animationCache__parseVersion1_4, c), f = cc.Animation.create(f, d, 1), cc.animationCache.addAnimation(f, c)) } else cc.log(cc._LogInfos.animationCache__parseVersion1, c) } }, _parseVersion2: function (a) { var b = cc.spriteFrameCache, c; for (c in a) { var d = a[c], e = d.loop, f = parseInt(d.loops), e = e ? cc.REPEAT_FOREVER : isNaN(f) ? 1 : f, f = d.restoreOriginalFrame && !0 == d.restoreOriginalFrame ? !0 : !1, g = d.frames; if (g) { for (var h = [], k = 0; k < g.length; k++) { var m = g[k], n = m.spriteframe, q = b.getSpriteFrame(n); if (q) { var n = parseFloat(m.delayUnits) || 0, m = m.notification, r = new cc.AnimationFrame; r.initWithSpriteFrame(q, n, m); h.push(r) } else cc.log(cc._LogInfos.animationCache__parseVersion2_2, c, n) } d = parseFloat(d.delayPerUnit) || 0; g = new cc.Animation; g.initWithAnimationFrames(h, d, e); g.setRestoreOriginalFrame(f); cc.animationCache.addAnimation(g, c) } else cc.log(cc._LogInfos.animationCache__parseVersion2, c) } }, _clear: function () { this._animations = {} } }; cc.SpriteFrame = cc.Class.extend({ _offset: null, _originalSize: null, _rectInPixels: null, _rotated: !1, _rect: null, _offsetInPixels: null, _originalSizeInPixels: null, _texture: null, _textureFilename: "", _textureLoaded: !1, _eventListeners: null, ctor: function (a, b, c, d, e) { this._offset = cc.p(0, 0); this._offsetInPixels = cc.p(0, 0); this._originalSize = cc.size(0, 0); this._rotated = !1; this._originalSizeInPixels = cc.size(0, 0); this._textureFilename = ""; this._texture = null; this._textureLoaded = !1; void 0 !== a && void 0 !== b && (void 0 === c || void 0 === d || void 0 === e ? this.initWithTexture(a, b) : this.initWithTexture(a, b, c, d, e)) }, textureLoaded: function () { return this._textureLoaded }, addLoadedEventListener: function (a, b) { null == this._eventListeners && (this._eventListeners = []); this._eventListeners.push({ eventCallback: a, eventTarget: b }) }, _callLoadedEventCallbacks: function () { var a = this._eventListeners; if (a) { for (var b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } }, getRectInPixels: function () { var a = this._rectInPixels; return cc.rect(a.x, a.y, a.width, a.height) }, setRectInPixels: function (a) { this._rectInPixels || (this._rectInPixels = cc.rect(0, 0, 0, 0)); this._rectInPixels.x = a.x; this._rectInPixels.y = a.y; this._rectInPixels.width = a.width; this._rectInPixels.height = a.height; this._rect = cc.rectPixelsToPoints(a) }, isRotated: function () { return this._rotated }, setRotated: function (a) { this._rotated = a }, getRect: function () { var a = this._rect; return cc.rect(a.x, a.y, a.width, a.height) }, setRect: function (a) { this._rect || (this._rect = cc.rect(0, 0, 0, 0)); this._rect.x = a.x; this._rect.y = a.y; this._rect.width = a.width; this._rect.height = a.height; this._rectInPixels = cc.rectPointsToPixels(this._rect) }, getOffsetInPixels: function () { return cc.p(this._offsetInPixels) }, setOffsetInPixels: function (a) { this._offsetInPixels.x = a.x; this._offsetInPixels.y = a.y; cc._pointPixelsToPointsOut(this._offsetInPixels, this._offset) }, getOriginalSizeInPixels: function () { return cc.size(this._originalSizeInPixels) }, setOriginalSizeInPixels: function (a) { this._originalSizeInPixels.width = a.width; this._originalSizeInPixels.height = a.height }, getOriginalSize: function () { return cc.size(this._originalSize) }, setOriginalSize: function (a) { this._originalSize.width = a.width; this._originalSize.height = a.height }, getTexture: function () { if (this._texture) return this._texture; if ("" !== this._textureFilename) { var a = cc.textureCache.addImage(this._textureFilename); a && (this._textureLoaded = a.isLoaded()); return a } return null }, setTexture: function (a) { if (this._texture != a) { var b = a.isLoaded(); this._textureLoaded = b; this._texture = a; b || a.addLoadedEventListener(function (a) { this._textureLoaded = !0; if (this._rotated && cc._renderType === cc._RENDER_TYPE_CANVAS) { var b = a.getHtmlElementObj(), b = cc.cutRotateImageToCanvas(b, this.getRect()), e = new cc.Texture2D; e.initWithElement(b); e.handleLoadedTexture(); this.setTexture(e); b = this.getRect(); this.setRect(cc.rect(0, 0, b.width, b.height)) } b = this._rect; 0 === b.width && 0 === b.height && (b = a.width, a = a.height, this._rect.width = b, this._rect.height = a, this._rectInPixels = cc.rectPointsToPixels(this._rect), this._originalSizeInPixels.width = this._rectInPixels.width, this._originalSizeInPixels.height = this._rectInPixels.height, this._originalSize.width = b, this._originalSize.height = a); this._callLoadedEventCallbacks() }, this) } }, getOffset: function () { return cc.p(this._offset) }, setOffset: function (a) { this._offset.x = a.x; this._offset.y = a.y }, clone: function () { var a = new cc.SpriteFrame; a.initWithTexture(this._textureFilename, this._rectInPixels, this._rotated, this._offsetInPixels, this._originalSizeInPixels); a.setTexture(this._texture); return a }, copyWithZone: function () { var a = new cc.SpriteFrame; a.initWithTexture(this._textureFilename, this._rectInPixels, this._rotated, this._offsetInPixels, this._originalSizeInPixels); a.setTexture(this._texture); return a }, copy: function () { return this.copyWithZone() }, initWithTexture: function (a, b, c, d, e) { 2 === arguments.length && (b = cc.rectPointsToPixels(b)); d = d || cc.p(0, 0); e = e || b; c = c || !1; cc.isString(a) ? (this._texture = null, this._textureFilename = a) : a instanceof cc.Texture2D && this.setTexture(a); a = this.getTexture(); this._rectInPixels = b; b = this._rect = cc.rectPixelsToPoints(b); if (a && a.url && a.isLoaded()) { var f, g; c ? (f = b.x + b.height, g = b.y + b.width) : (f = b.x + b.width, g = b.y + b.height); f > a.getPixelsWide() && cc.error(cc._LogInfos.RectWidth, a.url); g > a.getPixelsHigh() && cc.error(cc._LogInfos.RectHeight, a.url) } this._offsetInPixels.x = d.x; this._offsetInPixels.y = d.y; cc._pointPixelsToPointsOut(d, this._offset); this._originalSizeInPixels.width = e.width; this._originalSizeInPixels.height = e.height; cc._sizePixelsToPointsOut(e, this._originalSize); this._rotated = c; return !0 } }); cc.SpriteFrame.create = function (a, b, c, d, e) { return new cc.SpriteFrame(a, b, c, d, e) }; cc.SpriteFrame.createWithTexture = cc.SpriteFrame.create; cc.SpriteFrame._frameWithTextureForCanvas = function (a, b, c, d, e) { var f = new cc.SpriteFrame; f._texture = a; f._rectInPixels = b; f._rect = cc.rectPixelsToPoints(b); f._offsetInPixels.x = d.x; f._offsetInPixels.y = d.y; cc._pointPixelsToPointsOut(f._offsetInPixels, f._offset); f._originalSizeInPixels.width = e.width; f._originalSizeInPixels.height = e.height; cc._sizePixelsToPointsOut(f._originalSizeInPixels, f._originalSize); f._rotated = c; return f }; cc.spriteFrameCache = { _CCNS_REG1: /^\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*$/, _CCNS_REG2: /^\s*\{\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*,\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*\}\s*$/, _spriteFrames: {}, _spriteFramesAliases: {}, _frameConfigCache: {}, _rectFromString: function (a) { return (a = this._CCNS_REG2.exec(a)) ? cc.rect(parseFloat(a[1]), parseFloat(a[2]), parseFloat(a[3]), parseFloat(a[4])) : cc.rect(0, 0, 0, 0) }, _pointFromString: function (a) { return (a = this._CCNS_REG1.exec(a)) ? cc.p(parseFloat(a[1]), parseFloat(a[2])) : cc.p(0, 0) }, _sizeFromString: function (a) { return (a = this._CCNS_REG1.exec(a)) ? cc.size(parseFloat(a[1]), parseFloat(a[2])) : cc.size(0, 0) }, _getFrameConfig: function (a) { var b = cc.loader.getRes(a); cc.assert(b, cc._LogInfos.spriteFrameCache__getFrameConfig_2, a); cc.loader.release(a); if (b._inited) return this._frameConfigCache[a] = b; var c = b.frames, d = b.metadata || b.meta, b = {}, e = {}, f = 0; d && (f = d.format, f = 1 >= f.length ? parseInt(f) : f, e.image = d.textureFileName || d.textureFileName || d.image); for (var g in c) { var h = c[g]; if (h) { d = {}; if (0 == f) { d.rect = cc.rect(h.x, h.y, h.width, h.height); d.rotated = !1; d.offset = cc.p(h.offsetX, h.offsetY); var k = h.originalWidth, h = h.originalHeight; k && h || cc.log(cc._LogInfos.spriteFrameCache__getFrameConfig); k = Math.abs(k); h = Math.abs(h); d.size = cc.size(k, h) } else if (1 == f || 2 == f) d.rect = this._rectFromString(h.frame), d.rotated = h.rotated || !1, d.offset = this._pointFromString(h.offset), d.size = this._sizeFromString(h.sourceSize); else if (3 == f) { var k = this._sizeFromString(h.spriteSize), m = this._rectFromString(h.textureRect); k && (m = cc.rect(m.x, m.y, k.width, k.height)); d.rect = m; d.rotated = h.textureRotated || !1; d.offset = this._pointFromString(h.spriteOffset); d.size = this._sizeFromString(h.spriteSourceSize); d.aliases = h.aliases } else k = h.frame, m = h.sourceSize, g = h.filename || g, d.rect = cc.rect(k.x, k.y, k.w, k.h), d.rotated = h.rotated || !1, d.offset = cc.p(0, 0), d.size = cc.size(m.w, m.h); b[g] = d } } return this._frameConfigCache[a] = { _inited: !0, frames: b, meta: e } }, addSpriteFrames: function (a, b) { cc.assert(a, cc._LogInfos.spriteFrameCache_addSpriteFrames_2); var c = this._frameConfigCache[a] || cc.loader.getRes(a); if (c && c.frames) { var d = this._frameConfigCache[a] || this._getFrameConfig(a), c = d.frames, d = d.meta; b ? b instanceof cc.Texture2D || (cc.isString(b) ? b = cc.textureCache.addImage(b) : cc.assert(0, cc._LogInfos.spriteFrameCache_addSpriteFrames_3)) : (d = cc.path.changeBasename(a, d.image || ".png"), b = cc.textureCache.addImage(d)); var d = this._spriteFramesAliases, e = this._spriteFrames, f; for (f in c) { var g = c[f], h = e[f]; if (!h) { h = cc.SpriteFrame.create(b, g.rect, g.rotated, g.offset, g.size); if (g = g.aliases) for (var k = 0, m = g.length; k < m; k++) { var n = g[k]; d[n] && cc.log(cc._LogInfos.spriteFrameCache_addSpriteFrames, n); d[n] = f } cc._renderType === cc._RENDER_TYPE_CANVAS && h.isRotated() && h.getTexture().isLoaded() && (g = h.getTexture().getHtmlElementObj(), g = cc.cutRotateImageToCanvas(g, h.getRectInPixels()), k = new cc.Texture2D, k.initWithElement(g), k.handleLoadedTexture(), h.setTexture(k), g = h._rect, h.setRect(cc.rect(0, 0, g.width, g.height))); e[f] = h } } } }, _checkConflict: function (a) { a = a.frames; for (var b in a) this._spriteFrames[b] && cc.log(cc._LogInfos.spriteFrameCache__checkConflict, b) }, addSpriteFrame: function (a, b) { this._spriteFrames[b] = a }, removeSpriteFrames: function () { this._spriteFrames = {}; this._spriteFramesAliases = {} }, removeSpriteFrameByName: function (a) { a && (this._spriteFramesAliases[a] && delete this._spriteFramesAliases[a], this._spriteFrames[a] && delete this._spriteFrames[a]) }, removeSpriteFramesFromFile: function (a) { var b = this._spriteFrames, c = this._spriteFramesAliases; if (a = this._frameConfigCache[a]) { a = a.frames; for (var d in a) if (b[d]) { delete b[d]; for (var e in c) c[e] == d && delete c[e] } } }, removeSpriteFramesFromTexture: function (a) { var b = this._spriteFrames, c = this._spriteFramesAliases, d; for (d in b) { var e = b[d]; if (e && e.getTexture() == a) { delete b[d]; for (var f in c) c[f] == d && delete c[f] } } }, getSpriteFrame: function (a) { var b = this._spriteFrames[a]; if (!b) { var c = this._spriteFramesAliases[a]; c && ((b = this._spriteFrames[c.toString()]) || delete this._spriteFramesAliases[a]) } b || cc.log(cc._LogInfos.spriteFrameCache_getSpriteFrame, a); return b }, _clear: function () { this._spriteFrames = {}; this._spriteFramesAliases = {}; this._frameConfigCache = {} } }; cc.configuration = { ERROR: 0, STRING: 1, INT: 2, DOUBLE: 3, BOOLEAN: 4, _maxTextureSize: 0, _maxModelviewStackDepth: 0, _supportsPVRTC: !1, _supportsNPOT: !1, _supportsBGRA8888: !1, _supportsDiscardFramebuffer: !1, _supportsShareableVAO: !1, _maxSamplesAllowed: 0, _maxTextureUnits: 0, _GlExtensions: "", _valueDict: {}, _inited: !1, _init: function () { var a = this._valueDict; a["cocos2d.x.version"] = cc.ENGINE_VERSION; a["cocos2d.x.compiled_with_profiler"] = !1; a["cocos2d.x.compiled_with_gl_state_cache"] = cc.ENABLE_GL_STATE_CACHE; this._inited = !0 }, getMaxTextureSize: function () { return this._maxTextureSize }, getMaxModelviewStackDepth: function () { return this._maxModelviewStackDepth }, getMaxTextureUnits: function () { return this._maxTextureUnits }, supportsNPOT: function () { return this._supportsNPOT }, supportsPVRTC: function () { return this._supportsPVRTC }, supportsETC: function () { return !1 }, supportsS3TC: function () { return !1 }, supportsATITC: function () { return !1 }, supportsBGRA8888: function () { return this._supportsBGRA8888 }, supportsDiscardFramebuffer: function () { return this._supportsDiscardFramebuffer }, supportsShareableVAO: function () { return this._supportsShareableVAO }, checkForGLExtension: function (a) { return -1 < this._GlExtensions.indexOf(a) }, getValue: function (a, b) { this._inited || this._init(); var c = this._valueDict; return c[a] ? c[a] : b }, setValue: function (a, b) { this._valueDict[a] = b }, dumpInfo: function () { 0 === cc.ENABLE_GL_STATE_CACHE && (cc.log(""), cc.log(cc._LogInfos.configuration_dumpInfo), cc.log("")) }, gatherGPUInfo: function () { if (cc._renderType !== cc._RENDER_TYPE_CANVAS) { this._inited || this._init(); var a = cc._renderContext, b = this._valueDict; b["gl.vendor"] = a.getParameter(a.VENDOR); b["gl.renderer"] = a.getParameter(a.RENDERER); b["gl.version"] = a.getParameter(a.VERSION); this._GlExtensions = ""; for (var c = a.getSupportedExtensions(), d = 0; d < c.length; d++) this._GlExtensions += c[d] + " "; this._maxTextureSize = a.getParameter(a.MAX_TEXTURE_SIZE); b["gl.max_texture_size"] = this._maxTextureSize; this._maxTextureUnits = a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS); b["gl.max_texture_units"] = this._maxTextureUnits; this._supportsPVRTC = this.checkForGLExtension("GL_IMG_texture_compression_pvrtc"); b["gl.supports_PVRTC"] = this._supportsPVRTC; this._supportsNPOT = !1; b["gl.supports_NPOT"] = this._supportsNPOT; this._supportsBGRA8888 = this.checkForGLExtension("GL_IMG_texture_format_BGRA888"); b["gl.supports_BGRA8888"] = this._supportsBGRA8888; this._supportsDiscardFramebuffer = this.checkForGLExtension("GL_EXT_discard_framebuffer"); b["gl.supports_discard_framebuffer"] = this._supportsDiscardFramebuffer; this._supportsShareableVAO = this.checkForGLExtension("vertex_array_object"); b["gl.supports_vertex_array_object"] = this._supportsShareableVAO; cc.checkGLErrorDebug() } }, loadConfigFile: function (a) { this._inited || this._init(); var b = cc.loader.getRes(a); if (!b) throw "Please load the resource first : " + a; cc.assert(b, cc._LogInfos.configuration_loadConfigFile_2, a); if (b = b.data) for (var c in b) this._valueDict[c] = b[c]; else cc.log(cc._LogInfos.configuration_loadConfigFile, a) } }; cc._tmp.DirectorWebGL = function () { cc.DirectorDelegate = cc.Class.extend({ updateProjection: function () { } }); var a = cc.Director.prototype; a.setProjection = function (a) { var c = this._winSizeInPoints; this.setViewport(); var d = this._openGLView, e = d._viewPortRect.x / d._scaleX, f = d._viewPortRect.y / d._scaleY; switch (a) { case cc.Director.PROJECTION_2D: cc.kmGLMatrixMode(cc.KM_GL_PROJECTION); cc.kmGLLoadIdentity(); d = new cc.kmMat4; cc.kmMat4OrthographicProjection(d, 0, c.width, 0, c.height, -1024, 1024); cc.kmGLMultMatrix(d); cc.kmGLMatrixMode(cc.KM_GL_MODELVIEW); cc.kmGLLoadIdentity(); break; case cc.Director.PROJECTION_3D: var g = this.getZEye(), h = new cc.kmMat4, d = new cc.kmMat4; cc.kmGLMatrixMode(cc.KM_GL_PROJECTION); cc.kmGLLoadIdentity(); cc.kmMat4PerspectiveProjection(h, 60, c.width / c.height, 0.1, 2 * g); cc.kmGLMultMatrix(h); cc.kmGLMatrixMode(cc.KM_GL_MODELVIEW); cc.kmGLLoadIdentity(); g = cc.kmVec3Fill(null, -e + c.width / 2, -f + c.height / 2, g); c = cc.kmVec3Fill(null, -e + c.width / 2, -f + c.height / 2, 0); e = cc.kmVec3Fill(null, 0, 1, 0); cc.kmMat4LookAt(d, g, c, e); cc.kmGLMultMatrix(d); break; case cc.Director.PROJECTION_CUSTOM: this._projectionDelegate && this._projectionDelegate.updateProjection(); break; default: cc.log(cc._LogInfos.Director_setProjection) } this._projection = a; cc.eventManager.dispatchEvent(this._eventProjectionChanged); cc.setProjectionMatrixDirty() }; a.setDepthTest = function (a) { var c = cc._renderContext; a ? (c.clearDepth(1), c.enable(c.DEPTH_TEST), c.depthFunc(c.LEQUAL)) : c.disable(c.DEPTH_TEST) }; a.setOpenGLView = function (a) { this._winSizeInPoints.width = cc._canvas.width; this._winSizeInPoints.height = cc._canvas.height; this._openGLView = a || cc.view; a = cc.configuration; a.gatherGPUInfo(); a.dumpInfo(); this._createStatsLabel(); this.setGLDefaultValues(); cc.eventManager && cc.eventManager.setEnabled(!0) }; a._clear = function () { var a = cc._renderContext; a.clear(a.COLOR_BUFFER_BIT | a.DEPTH_BUFFER_BIT) }; a._beforeVisitScene = function () { cc.kmGLPushMatrix() }; a._afterVisitScene = function () { cc.kmGLPopMatrix() }; a._createStatsLabel = function () { if (!cc.LabelAtlas) this._createStatsLabelForCanvas(); else if (null != cc.Director._fpsImageLoaded && !1 != cc.Director._fpsImageLoaded) { var a = new cc.Texture2D; a.initWithElement(cc.Director._fpsImage); a.handleLoadedTexture(); var c = cc.view.getDesignResolutionSize().height / 320; 0 === c && (c = this._winSizeInPoints.height / 320); var d = new cc.LabelAtlas; d._setIgnoreContentScaleFactor(!0); d.initWithString("00.0", a, 12, 32, "."); d.scale = c; this._FPSLabel = d; d = new cc.LabelAtlas; d._setIgnoreContentScaleFactor(!0); d.initWithString("0.000", a, 12, 32, "."); d.scale = c; this._SPFLabel = d; d = new cc.LabelAtlas; d._setIgnoreContentScaleFactor(!0); d.initWithString("000", a, 12, 32, "."); d.scale = c; this._drawsLabel = d; a = cc.DIRECTOR_STATS_POSITION; this._drawsLabel.setPosition(a.x, 34 * c + a.y); this._SPFLabel.setPosition(a.x, 17 * c + a.y); this._FPSLabel.setPosition(a) } }; a._createStatsLabelForCanvas = function () { var a = 0, a = this._winSizeInPoints.width > this._winSizeInPoints.height ? 0 | this._winSizeInPoints.height / 320 * 24 : 0 | this._winSizeInPoints.width / 320 * 24; this._FPSLabel = cc.LabelTTF.create("000.0", "Arial", a); this._SPFLabel = cc.LabelTTF.create("0.000", "Arial", a); this._drawsLabel = cc.LabelTTF.create("0000", "Arial", a); a = cc.DIRECTOR_STATS_POSITION; this._drawsLabel.setPosition(this._drawsLabel.width / 2 + a.x, 5 * this._drawsLabel.height / 2 + a.y); this._SPFLabel.setPosition(this._SPFLabel.width / 2 + a.x, 3 * this._SPFLabel.height / 2 + a.y); this._FPSLabel.setPosition(this._FPSLabel.width / 2 + a.x, this._FPSLabel.height / 2 + a.y) }; a.convertToGL = function (a) { var c = new cc.kmMat4; cc.GLToClipTransform(c); var d = new cc.kmMat4; cc.kmMat4Inverse(d, c); var c = c.mat[14] / c.mat[15], e = this._openGLView.getDesignResolutionSize(); a = new cc.kmVec3(2 * a.x / e.width - 1, 1 - 2 * a.y / e.height, c); c = new cc.kmVec3; cc.kmVec3TransformCoord(c, a, d); return cc.p(c.x, c.y) }; a.convertToUI = function (a) { var c = new cc.kmMat4; cc.GLToClipTransform(c); var d = new cc.kmVec3; a = new cc.kmVec3(a.x, a.y, 0); cc.kmVec3TransformCoord(d, a, c); c = this._openGLView.getDesignResolutionSize(); return cc.p(c.width * (0.5 * d.x + 0.5), c.height * (0.5 * -d.y + 0.5)) }; a.getVisibleSize = function () { return this._openGLView.getVisibleSize() }; a.getVisibleOrigin = function () { return this._openGLView.getVisibleOrigin() }; a.getZEye = function () { return this._winSizeInPoints.height / 1.1566 }; a.setViewport = function () { var a = this._openGLView; if (a) { var c = this._winSizeInPoints; a.setViewPortInPoints(-a._viewPortRect.x / a._scaleX, -a._viewPortRect.y / a._scaleY, c.width, c.height) } }; a.getOpenGLView = function () { return this._openGLView }; a.getProjection = function () { return this._projection }; a.setAlphaBlending = function (a) { a ? cc.glBlendFunc(cc.BLEND_SRC, cc.BLEND_DST) : cc.glBlendFunc(cc._renderContext.ONE, cc._renderContext.ZERO) }; a.setGLDefaultValues = function () { this.setAlphaBlending(!0); this.setDepthTest(!1); this.setProjection(this._projection); cc._renderContext.clearColor(0, 0, 0, 1) } }; cc.g_NumberOfDraws = 0; cc.GLToClipTransform = function (a) { var b = new cc.kmMat4; cc.kmGLGetMatrix(cc.KM_GL_PROJECTION, b); var c = new cc.kmMat4; cc.kmGLGetMatrix(cc.KM_GL_MODELVIEW, c); cc.kmMat4Multiply(a, b, c) }; cc.Director = cc.Class.extend({ _landscape: !1, _nextDeltaTimeZero: !1, _paused: !1, _purgeDirectorInNextLoop: !1, _sendCleanupToScene: !1, _animationInterval: 0, _oldAnimationInterval: 0, _projection: 0, _accumDt: 0, _contentScaleFactor: 1, _displayStats: !1, _deltaTime: 0, _frameRate: 0, _FPSLabel: null, _SPFLabel: null, _drawsLabel: null, _winSizeInPoints: null, _lastUpdate: null, _nextScene: null, _notificationNode: null, _openGLView: null, _scenesStack: null, _projectionDelegate: null, _runningScene: null, _frames: 0, _totalFrames: 0, _secondsPerFrame: 0, _dirtyRegion: null, _scheduler: null, _actionManager: null, _eventProjectionChanged: null, _eventAfterDraw: null, _eventAfterVisit: null, _eventAfterUpdate: null, ctor: function () { var a = this; a._lastUpdate = Date.now(); cc.eventManager.addCustomListener(cc.game.EVENT_SHOW, function () { a._lastUpdate = Date.now() }) }, init: function () { this._oldAnimationInterval = this._animationInterval = 1 / cc.defaultFPS; this._scenesStack = []; this._projection = cc.Director.PROJECTION_DEFAULT; this._projectionDelegate = null; this._frameRate = this._accumDt = 0; this._displayStats = !1; this._totalFrames = this._frames = 0; this._lastUpdate = Date.now(); this._purgeDirectorInNextLoop = this._paused = !1; this._winSizeInPoints = cc.size(0, 0); this._openGLView = null; this._contentScaleFactor = 1; this._scheduler = new cc.Scheduler; this._actionManager = cc.ActionManager ? new cc.ActionManager : null; this._scheduler.scheduleUpdateForTarget(this._actionManager, cc.Scheduler.PRIORITY_SYSTEM, !1); this._eventAfterDraw = new cc.EventCustom(cc.Director.EVENT_AFTER_DRAW); this._eventAfterDraw.setUserData(this); this._eventAfterVisit = new cc.EventCustom(cc.Director.EVENT_AFTER_VISIT); this._eventAfterVisit.setUserData(this); this._eventAfterUpdate = new cc.EventCustom(cc.Director.EVENT_AFTER_UPDATE); this._eventAfterUpdate.setUserData(this); this._eventProjectionChanged = new cc.EventCustom(cc.Director.EVENT_PROJECTION_CHANGED); this._eventProjectionChanged.setUserData(this); return !0 }, calculateDeltaTime: function () { var a = Date.now(); this._nextDeltaTimeZero ? (this._deltaTime = 0, this._nextDeltaTimeZero = !1) : this._deltaTime = (a - this._lastUpdate) / 1E3; 0 < cc.game.config[cc.game.CONFIG_KEY.debugMode] && 0.2 < this._deltaTime && (this._deltaTime = 1 / 60); this._lastUpdate = a }, convertToGL: null, convertToUI: null, drawScene: function () { this.calculateDeltaTime(); this._paused || (this._scheduler.update(this._deltaTime), cc.eventManager.dispatchEvent(this._eventAfterUpdate)); this._clear(); this._nextScene && this.setNextScene(); this._beforeVisitScene && this._beforeVisitScene(); this._runningScene && (this._runningScene.visit(), cc.eventManager.dispatchEvent(this._eventAfterVisit)); this._notificationNode && this._notificationNode.visit(); this._displayStats && this._showStats(); this._afterVisitScene && this._afterVisitScene(); cc.eventManager.dispatchEvent(this._eventAfterDraw); this._totalFrames++; this._displayStats && this._calculateMPF() }, _beforeVisitScene: null, _afterVisitScene: null, end: function () { this._purgeDirectorInNextLoop = !0 }, getContentScaleFactor: function () { return this._contentScaleFactor }, getNotificationNode: function () { return this._notificationNode }, getWinSize: function () { return cc.size(this._winSizeInPoints) }, getWinSizeInPixels: function () { return cc.size(this._winSizeInPoints.width * this._contentScaleFactor, this._winSizeInPoints.height * this._contentScaleFactor) }, getVisibleSize: null, getVisibleOrigin: null, getZEye: null, pause: function () { this._paused || (this._oldAnimationInterval = this._animationInterval, this.setAnimationInterval(0.25), this._paused = !0) }, popScene: function () { cc.assert(this._runningScene, cc._LogInfos.Director_popScene); this._scenesStack.pop(); var a = this._scenesStack.length; 0 == a ? this.end() : (this._sendCleanupToScene = !0, this._nextScene = this._scenesStack[a - 1]) }, purgeCachedData: function () { cc.animationCache._clear(); cc.spriteFrameCache._clear(); cc.textureCache._clear() }, purgeDirector: function () { this.getScheduler().unscheduleAllCallbacks(); cc.eventManager && cc.eventManager.setEnabled(!1); this._runningScene && (this._runningScene.onExitTransitionDidStart(), this._runningScene.onExit(), this._runningScene.cleanup()); this._nextScene = this._runningScene = null; this._scenesStack.length = 0; this.stopAnimation(); this.purgeCachedData(); cc.checkGLErrorDebug() }, pushScene: function (a) { cc.assert(a, cc._LogInfos.Director_pushScene); this._sendCleanupToScene = !1; this._scenesStack.push(a); this._nextScene = a }, runScene: function (a) { cc.assert(a, cc._LogInfos.Director_pushScene); if (this._runningScene) { var b = this._scenesStack.length; 0 === b ? (this._sendCleanupToScene = !0, this._scenesStack[b] = a) : (this._sendCleanupToScene = !0, this._scenesStack[b - 1] = a); this._nextScene = a } else this.pushScene(a), this.startAnimation() }, resume: function () { this._paused && (this.setAnimationInterval(this._oldAnimationInterval), (this._lastUpdate = Date.now()) || cc.log(cc._LogInfos.Director_resume), this._paused = !1, this._deltaTime = 0) }, setContentScaleFactor: function (a) { a != this._contentScaleFactor && (this._contentScaleFactor = a, this._createStatsLabel()) }, setDepthTest: null, setDefaultValues: function () { }, setNextDeltaTimeZero: function (a) { this._nextDeltaTimeZero = a }, setNextScene: function () { var a = !1, b = !1; cc.TransitionScene && (a = this._runningScene ? this._runningScene instanceof cc.TransitionScene : !1, b = this._nextScene ? this._nextScene instanceof cc.TransitionScene : !1); if (!b) { if (b = this._runningScene) b.onExitTransitionDidStart(), b.onExit(); this._sendCleanupToScene && b && b.cleanup() } this._runningScene = this._nextScene; this._nextScene = null; a || null == this._runningScene || (this._runningScene.onEnter(), this._runningScene.onEnterTransitionDidFinish()) }, setNotificationNode: function (a) { this._notificationNode = a }, getDelegate: function () { return this._projectionDelegate }, setDelegate: function (a) { this._projectionDelegate = a }, setOpenGLView: null, setProjection: null, setViewport: null, getOpenGLView: null, getProjection: null, setAlphaBlending: null, _showStats: function () { this._frames++; this._accumDt += this._deltaTime; this._FPSLabel && this._SPFLabel && this._drawsLabel ? (this._accumDt > cc.DIRECTOR_FPS_INTERVAL && (this._SPFLabel.string = this._secondsPerFrame.toFixed(3), this._frameRate = this._frames / this._accumDt, this._accumDt = this._frames = 0, this._FPSLabel.string = this._frameRate.toFixed(1), this._drawsLabel.string = (0 | cc.g_NumberOfDraws).toString()), this._FPSLabel.visit(), this._SPFLabel.visit(), this._drawsLabel.visit()) : this._createStatsLabel(); cc.g_NumberOfDraws = 0 }, isSendCleanupToScene: function () { return this._sendCleanupToScene }, getRunningScene: function () { return this._runningScene }, getAnimationInterval: function () { return this._animationInterval }, isDisplayStats: function () { return this._displayStats }, setDisplayStats: function (a) { this._displayStats = a }, getSecondsPerFrame: function () { return this._secondsPerFrame }, isNextDeltaTimeZero: function () { return this._nextDeltaTimeZero }, isPaused: function () { return this._paused }, getTotalFrames: function () { return this._totalFrames }, popToRootScene: function () { this.popToSceneStackLevel(1) }, popToSceneStackLevel: function (a) { cc.assert(this._runningScene, cc._LogInfos.Director_popToSceneStackLevel_2); var b = this._scenesStack, c = b.length; if (0 == c) this.end(); else if (!(a > c)) { for (; c > a;) { var d = b.pop(); d.running && (d.onExitTransitionDidStart(), d.onExit()); d.cleanup(); c-- } this._nextScene = b[b.length - 1]; this._sendCleanupToScene = !1 } }, getScheduler: function () { return this._scheduler }, setScheduler: function (a) { this._scheduler != a && (this._scheduler = a) }, getActionManager: function () { return this._actionManager }, setActionManager: function (a) { this._actionManager != a && (this._actionManager = a) }, getDeltaTime: function () { return this._deltaTime }, _createStatsLabel: null, _calculateMPF: function () { this._secondsPerFrame = (Date.now() - this._lastUpdate) / 1E3 } }); cc.Director.EVENT_PROJECTION_CHANGED = "director_projection_changed"; cc.Director.EVENT_AFTER_DRAW = "director_after_draw"; cc.Director.EVENT_AFTER_VISIT = "director_after_visit"; cc.Director.EVENT_AFTER_UPDATE = "director_after_update"; cc.DisplayLinkDirector = cc.Director.extend({ invalid: !1, startAnimation: function () { this._nextDeltaTimeZero = !0; this.invalid = !1 }, mainLoop: function () { this._purgeDirectorInNextLoop ? (this._purgeDirectorInNextLoop = !1, this.purgeDirector()) : this.invalid || this.drawScene() }, stopAnimation: function () { this.invalid = !0 }, setAnimationInterval: function (a) { this._animationInterval = a; this.invalid || (this.stopAnimation(), this.startAnimation()) } }); cc.Director.sharedDirector = null; cc.Director.firstUseDirector = !0; cc.Director._getInstance = function () { cc.Director.firstUseDirector && (cc.Director.firstUseDirector = !1, cc.Director.sharedDirector = new cc.DisplayLinkDirector, cc.Director.sharedDirector.init()); return cc.Director.sharedDirector }; cc.defaultFPS = 60; cc.Director.PROJECTION_2D = 0; cc.Director.PROJECTION_3D = 1; cc.Director.PROJECTION_CUSTOM = 3; cc.Director.PROJECTION_DEFAULT = cc.Director.PROJECTION_3D; cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.Director.prototype, _p.setProjection = function (a) { this._projection = a; cc.eventManager.dispatchEvent(this._eventProjectionChanged) }, _p.setDepthTest = function () { }, _p.setOpenGLView = function (a) { this._winSizeInPoints.width = cc._canvas.width; this._winSizeInPoints.height = cc._canvas.height; this._openGLView = a || cc.view; cc.eventManager && cc.eventManager.setEnabled(!0) }, _p._clear = function () { var a = this._openGLView.getViewPortRect(); cc._renderContext.clearRect(-a.x, a.y, a.width, -a.height) }, _p._createStatsLabel = function () { var a = 0, a = this._winSizeInPoints.width > this._winSizeInPoints.height ? 0 | this._winSizeInPoints.height / 320 * 24 : 0 | this._winSizeInPoints.width / 320 * 24; this._FPSLabel = cc.LabelTTF.create("000.0", "Arial", a); this._SPFLabel = cc.LabelTTF.create("0.000", "Arial", a); this._drawsLabel = cc.LabelTTF.create("0000", "Arial", a); a = cc.DIRECTOR_STATS_POSITION; this._drawsLabel.setPosition(this._drawsLabel.width / 2 + a.x, 5 * this._drawsLabel.height / 2 + a.y); this._SPFLabel.setPosition(this._SPFLabel.width / 2 + a.x, 3 * this._SPFLabel.height / 2 + a.y); this._FPSLabel.setPosition(this._FPSLabel.width / 2 + a.x, this._FPSLabel.height / 2 + a.y) }, _p.getVisibleSize = function () { return this.getWinSize() }, _p.getVisibleOrigin = function () { return cc.p(0, 0) }) : (cc.Director._fpsImage = new Image, cc._addEventListener(cc.Director._fpsImage, "load", function () { cc.Director._fpsImageLoaded = !0 }), cc._fpsImage && (cc.Director._fpsImage.src = cc._fpsImage), cc.assert(cc.isFunction(cc._tmp.DirectorWebGL), cc._LogInfos.MissingFile, "CCDirectorWebGL.js"), cc._tmp.DirectorWebGL(), delete cc._tmp.DirectorWebGL); cc.Camera = cc.Class.extend({ _eyeX: null, _eyeY: null, _eyeZ: null, _centerX: null, _centerY: null, _centerZ: null, _upX: null, _upY: null, _upZ: null, _dirty: null, _lookupMatrix: null, ctor: function () { this._lookupMatrix = new cc.kmMat4; this.restore() }, description: function () { return "\x3cCCCamera | center \x3d(" + this._centerX + "," + this._centerY + "," + this._centerZ + ")\x3e" }, setDirty: function (a) { this._dirty = a }, isDirty: function () { return this._dirty }, restore: function () { this._eyeX = this._eyeY = 0; this._eyeZ = cc.Camera.getZEye(); this._upX = this._centerX = this._centerY = this._centerZ = 0; this._upY = 1; this._upZ = 0; cc.kmMat4Identity(this._lookupMatrix); this._dirty = !1 }, locate: function () { if (this._dirty) { var a = new cc.kmVec3, b = new cc.kmVec3, c = new cc.kmVec3; cc.kmVec3Fill(a, this._eyeX, this._eyeY, this._eyeZ); cc.kmVec3Fill(b, this._centerX, this._centerY, this._centerZ); cc.kmVec3Fill(c, this._upX, this._upY, this._upZ); cc.kmMat4LookAt(this._lookupMatrix, a, b, c); this._dirty = !1 } cc.kmGLMultMatrix(this._lookupMatrix) }, setEyeXYZ: function (a, b, c) { this.setEye(a, b, c) }, setEye: function (a, b, c) { this._eyeX = a; this._eyeY = b; this._eyeZ = c; this._dirty = !0 }, setCenterXYZ: function (a, b, c) { this.setCenter(a, b, c) }, setCenter: function (a, b, c) { this._centerX = a; this._centerY = b; this._centerZ = c; this._dirty = !0 }, setUpXYZ: function (a, b, c) { this.setUp(a, b, c) }, setUp: function (a, b, c) { this._upX = a; this._upY = b; this._upZ = c; this._dirty = !0 }, getEyeXYZ: function (a, b, c) { return { x: this._eyeX, y: this._eyeY, z: this._eyeZ } }, getEye: function () { return { x: this._eyeX, y: this._eyeY, z: this._eyeZ } }, getCenterXYZ: function (a, b, c) { return { x: this._centerX, y: this._centerY, z: this._centerZ } }, getCenter: function () { return { x: this._centerX, y: this._centerY, z: this._centerZ } }, getUpXYZ: function (a, b, c) { return { x: this._upX, y: this._upY, z: this._upZ } }, getUp: function () { return { x: this._upX, y: this._upY, z: this._upZ } }, _DISALLOW_COPY_AND_ASSIGN: function (a) { } }); cc.Camera.getZEye = function () { return cc.FLT_EPSILON }; cc.PRIORITY_NON_SYSTEM = cc.PRIORITY_SYSTEM + 1; cc.ListEntry = function (a, b, c, d, e, f) { this.prev = a; this.next = b; this.target = c; this.priority = d; this.paused = e; this.markedForDeletion = f }; cc.HashUpdateEntry = function (a, b, c, d) { this.list = a; this.entry = b; this.target = c; this.hh = d }; cc.HashTimerEntry = function (a, b, c, d, e, f, g) { this.timers = a; this.target = b; this.timerIndex = c; this.currentTimer = d; this.currentTimerSalvaged = e; this.paused = f; this.hh = g }; cc.Timer = cc.Class.extend({ _interval: 0, _callback: null, _target: null, _elapsed: 0, _runForever: !1, _useDelay: !1, _timesExecuted: 0, _repeat: 0, _delay: 0, getInterval: function () { return this._interval }, setInterval: function (a) { this._interval = a }, getCallback: function () { return this._callback }, ctor: function (a, b, c, d, e) { this._target = a; this._callback = b; this._elapsed = -1; this._interval = c || 0; this._delay = e || 0; this._useDelay = 0 < this._delay; this._repeat = null == d ? cc.REPEAT_FOREVER : d; this._runForever = this._repeat == cc.REPEAT_FOREVER }, _doCallback: function () { if (cc.isString(this._callback)) this._target[this._callback](this._elapsed); else this._callback.call(this._target, this._elapsed) }, update: function (a) { if (-1 == this._elapsed) this._timesExecuted = this._elapsed = 0; else { var b = this._target, c = this._callback; this._elapsed += a; this._runForever && !this._useDelay ? this._elapsed >= this._interval && (b && c && this._doCallback(), this._elapsed = 0) : (this._useDelay ? this._elapsed >= this._delay && (b && c && this._doCallback(), this._elapsed -= this._delay, this._timesExecuted += 1, this._useDelay = !1) : this._elapsed >= this._interval && (b && c && this._doCallback(), this._elapsed = 0, this._timesExecuted += 1), this._timesExecuted > this._repeat && cc.director.getScheduler().unscheduleCallbackForTarget(b, c)) } } }); cc.Scheduler = cc.Class.extend({ _timeScale: 1, _updates: null, _hashForUpdates: null, _arrayForUpdates: null, _hashForTimers: null, _arrayForTimes: null, _currentTarget: null, _currentTargetSalvaged: !1, _updateHashLocked: !1, ctor: function () { this._timeScale = 1; this._updates = [[], [], []]; this._hashForUpdates = {}; this._arrayForUpdates = []; this._hashForTimers = {}; this._arrayForTimers = []; this._currentTarget = null; this._updateHashLocked = this._currentTargetSalvaged = !1 }, _removeHashElement: function (a) { delete this._hashForTimers[a.target.__instanceId]; cc.arrayRemoveObject(this._arrayForTimers, a); a.Timer = null; a.target = null }, _removeUpdateFromHash: function (a) { if (a = this._hashForUpdates[a.target.__instanceId]) cc.arrayRemoveObject(a.list, a.entry), delete this._hashForUpdates[a.target.__instanceId], cc.arrayRemoveObject(this._arrayForUpdates, a), a.entry = null, a.target = null }, _priorityIn: function (a, b, c, d) { d = new cc.ListEntry(null, null, b, c, d, !1); if (a) { for (var e = a.length - 1, f = 0; f <= e && !(c < a[f].priority) ; f++); a.splice(f, 0, d) } else a = [], a.push(d); c = new cc.HashUpdateEntry(a, d, b, null); this._arrayForUpdates.push(c); this._hashForUpdates[b.__instanceId] = c; return a }, _appendIn: function (a, b, c) { c = new cc.ListEntry(null, null, b, 0, c, !1); a.push(c); a = new cc.HashUpdateEntry(a, c, b, null); this._arrayForUpdates.push(a); this._hashForUpdates[b.__instanceId] = a }, setTimeScale: function (a) { this._timeScale = a }, getTimeScale: function () { return this._timeScale }, update: function (a) { var b = this._updates, c = this._arrayForTimers, d, e, f; this._updateHashLocked = !0; 1 != this._timeScale && (a *= this._timeScale); e = 0; for (f = b.length; e < f && 0 <= e; e++) for (var g = this._updates[e], h = 0, k = g.length; h < k; h++) d = g[h], d.paused || d.markedForDeletion || d.target.update(a); e = 0; for (f = c.length; e < f; e++) { d = c[e]; if (!d) break; this._currentTarget = d; this._currentTargetSalvaged = !1; if (!d.paused) for (d.timerIndex = 0; d.timerIndex < d.timers.length; d.timerIndex++) d.currentTimer = d.timers[d.timerIndex], d.currentTimerSalvaged = !1, d.currentTimer.update(a), d.currentTimer = null; this._currentTargetSalvaged && 0 == d.timers.length && (this._removeHashElement(d), e--) } e = 0; for (f = b.length; e < f; e++) for (g = this._updates[e], h = 0, k = g.length; h < k;) { d = g[h]; if (!d) break; d.markedForDeletion ? this._removeUpdateFromHash(d) : h++ } this._updateHashLocked = !1; this._currentTarget = null }, scheduleCallbackForTarget: function (a, b, c, d, e, f) { cc.assert(b, cc._LogInfos.Scheduler_scheduleCallbackForTarget_2); cc.assert(a, cc._LogInfos.Scheduler_scheduleCallbackForTarget_3); c = c || 0; d = null == d ? cc.REPEAT_FOREVER : d; e = e || 0; f = f || !1; var g = this._hashForTimers[a.__instanceId]; g || (g = new cc.HashTimerEntry(null, a, 0, null, null, f, null), this._arrayForTimers.push(g), this._hashForTimers[a.__instanceId] = g); if (null == g.timers) g.timers = []; else for (var h = 0; h < g.timers.length; h++) if (f = g.timers[h], b == f._callback) { cc.log(cc._LogInfos.Scheduler_scheduleCallbackForTarget, f.getInterval().toFixed(4), c.toFixed(4)); f._interval = c; return } f = new cc.Timer(a, b, c, d, e); g.timers.push(f) }, scheduleUpdateForTarget: function (a, b, c) { if (null !== a) { var d = this._updates, e = this._hashForUpdates[a.__instanceId]; e ? e.entry.markedForDeletion = !1 : 0 == b ? this._appendIn(d[1], a, c) : 0 > b ? d[0] = this._priorityIn(d[0], a, b, c) : d[2] = this._priorityIn(d[2], a, b, c) } }, unscheduleCallbackForTarget: function (a, b) { if (null != a && null != b) { var c = this._hashForTimers[a.__instanceId]; if (c) for (var d = c.timers, e = 0, f = d.length; e < f; e++) { var g = d[e]; if (b == g._callback) { g != c.currentTimer || c.currentTimerSalvaged || (c.currentTimerSalvaged = !0); d.splice(e, 1); c.timerIndex >= e && c.timerIndex--; 0 == d.length && (this._currentTarget == c ? this._currentTargetSalvaged = !0 : this._removeHashElement(c)); break } } } }, unscheduleUpdateForTarget: function (a) { null != a && (a = this._hashForUpdates[a.__instanceId], null != a && (this._updateHashLocked ? a.entry.markedForDeletion = !0 : this._removeUpdateFromHash(a.entry))) }, unscheduleAllCallbacksForTarget: function (a) { if (null != a) { var b = this._hashForTimers[a.__instanceId]; if (b) { var c = b.timers; !b.currentTimerSalvaged && 0 <= c.indexOf(b.currentTimer) && (b.currentTimerSalvaged = !0); c.length = 0; this._currentTarget == b ? this._currentTargetSalvaged = !0 : this._removeHashElement(b) } this.unscheduleUpdateForTarget(a) } }, unscheduleAllCallbacks: function () { this.unscheduleAllCallbacksWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM) }, unscheduleAllCallbacksWithMinPriority: function (a) { for (var b = this._arrayForTimers, c = this._updates, d = 0, e = b.length; d < e; d++) this.unscheduleAllCallbacksForTarget(b[d].target); for (d = 2; 0 <= d; d--) if (!(1 == d && 0 < a || 0 == d && 0 <= a)) for (var b = c[d], e = 0, f = b.length; e < f; e++) this.unscheduleUpdateForTarget(b[e].target) }, pauseAllTargets: function () { return this.pauseAllTargetsWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM) }, pauseAllTargetsWithMinPriority: function (a) { a = []; for (var b, c = this._arrayForTimers, d = this._updates, e = 0, f = c.length; e < f; e++) if (b = c[e]) b.paused = !0, a.push(b.target); e = 0; for (f = d.length; e < f; e++) for (var c = d[e], g = 0, h = c.length; g < h; g++) if (b = c[g]) b.paused = !0, a.push(b.target); return a }, resumeTargets: function (a) { if (a) for (var b = 0; b < a.length; b++) this.resumeTarget(a[b]) }, pauseTarget: function (a) { cc.assert(a, cc._LogInfos.Scheduler_pauseTarget); var b = this._hashForTimers[a.__instanceId]; b && (b.paused = !0); if (a = this._hashForUpdates[a.__instanceId]) a.entry.paused = !0 }, resumeTarget: function (a) { cc.assert(a, cc._LogInfos.Scheduler_resumeTarget); var b = this._hashForTimers[a.__instanceId]; b && (b.paused = !1); if (a = this._hashForUpdates[a.__instanceId]) a.entry.paused = !1 }, isTargetPaused: function (a) { cc.assert(a, cc._LogInfos.Scheduler_isTargetPaused); return (a = this._hashForTimers[a.__instanceId]) ? a.paused : !1 } }); cc.Scheduler.PRIORITY_SYSTEM = -2147483648; cc.PI2 = 2 * Math.PI; cc.DrawingPrimitiveCanvas = cc.Class.extend({ _cacheArray: [], _renderContext: null, ctor: function (a) { this._renderContext = a }, drawPoint: function (a, b) { b || (b = 1); var c = cc.view.getScaleX(), d = cc.view.getScaleY(), d = cc.p(a.x * c, a.y * d); this._renderContext.beginPath(); this._renderContext.arc(d.x, -d.y, b * c, 0, 2 * Math.PI, !1); this._renderContext.closePath(); this._renderContext.fill() }, drawPoints: function (a, b, c) { if (null != a) { c || (c = 1); b = this._renderContext; var d = cc.view.getScaleX(), e = cc.view.getScaleY(); b.beginPath(); for (var f = 0, g = a.length; f < g; f++) b.arc(a[f].x * d, -a[f].y * e, c * d, 0, 2 * Math.PI, !1); b.closePath(); b.fill() } }, drawLine: function (a, b) { var c = this._renderContext, d = cc.view.getScaleX(), e = cc.view.getScaleY(); c.beginPath(); c.moveTo(a.x * d, -a.y * e); c.lineTo(b.x * d, -b.y * e); c.closePath(); c.stroke() }, drawRect: function (a, b) { this.drawLine(cc.p(a.x, a.y), cc.p(b.x, a.y)); this.drawLine(cc.p(b.x, a.y), cc.p(b.x, b.y)); this.drawLine(cc.p(b.x, b.y), cc.p(a.x, b.y)); this.drawLine(cc.p(a.x, b.y), cc.p(a.x, a.y)) }, drawSolidRect: function (a, b, c) { a = [a, cc.p(b.x, a.y), b, cc.p(a.x, b.y)]; this.drawSolidPoly(a, 4, c) }, drawPoly: function (a, b, c, d) { d = d || !1; if (null != a) { if (3 > a.length) throw Error("Polygon's point must greater than 2"); var e = a[0]; b = this._renderContext; var f = cc.view.getScaleX(), g = cc.view.getScaleY(); b.beginPath(); b.moveTo(e.x * f, -e.y * g); for (var e = 1, h = a.length; e < h; e++) b.lineTo(a[e].x * f, -a[e].y * g); c && b.closePath(); d ? b.fill() : b.stroke() } }, drawSolidPoly: function (a, b, c) { this.setDrawColor(c.r, c.g, c.b, c.a); this.drawPoly(a, b, !0, !0) }, drawCircle: function (a, b, c, d, e) { e = e || !1; d = this._renderContext; var f = cc.view.getScaleX(), g = cc.view.getScaleY(); d.beginPath(); d.arc(0 | a.x * f, 0 | -(a.y * g), b * f, -c, -(c - 2 * Math.PI), !1); e && d.lineTo(0 | a.x * f, 0 | -(a.y * g)); d.stroke() }, drawQuadBezier: function (a, b, c, d) { for (var e = this._cacheArray, f = e.length = 0, g = 0; g < d; g++) { var h = Math.pow(1 - f, 2) * a.x + 2 * (1 - f) * f * b.x + f * f * c.x, k = Math.pow(1 - f, 2) * a.y + 2 * (1 - f) * f * b.y + f * f * c.y; e.push(cc.p(h, k)); f += 1 / d } e.push(cc.p(c.x, c.y)); this.drawPoly(e, d + 1, !1, !1) }, drawCubicBezier: function (a, b, c, d, e) { for (var f = this._cacheArray, g = f.length = 0, h = 0; h < e; h++) { var k = Math.pow(1 - g, 3) * a.x + 3 * Math.pow(1 - g, 2) * g * b.x + 3 * (1 - g) * g * g * c.x + g * g * g * d.x, m = Math.pow(1 - g, 3) * a.y + 3 * Math.pow(1 - g, 2) * g * b.y + 3 * (1 - g) * g * g * c.y + g * g * g * d.y; f.push(cc.p(k, m)); g += 1 / e } f.push(cc.p(d.x, d.y)); this.drawPoly(f, e + 1, !1, !1) }, drawCatmullRom: function (a, b) { this.drawCardinalSpline(a, 0.5, b) }, drawCardinalSpline: function (a, b, c) { cc._renderContext.strokeStyle = "rgba(255,255,255,1)"; var d = this._cacheArray; d.length = 0; for (var e, f, g = 1 / a.length, h = 0; h < c + 1; h++) f = h / c, 1 == f ? (e = a.length - 1, f = 1) : (e = 0 | f / g, f = (f - g * e) / g), e = cc.CardinalSplineAt(cc.getControlPointAt(a, e - 1), cc.getControlPointAt(a, e - 0), cc.getControlPointAt(a, e + 1), cc.getControlPointAt(a, e + 2), b, f), d.push(e); this.drawPoly(d, c + 1, !1, !1) }, drawImage: function (a, b, c, d, e) { switch (arguments.length) { case 2: this._renderContext.drawImage(a, b.x, -(b.y + a.height)); break; case 3: this._renderContext.drawImage(a, b.x, -(b.y + c.height), c.width, c.height); break; case 5: this._renderContext.drawImage(a, b.x, b.y, c.width, c.height, d.x, -(d.y + e.height), e.width, e.height); break; default: throw Error("Argument must be non-nil"); } }, drawStar: function (a, b, c) { a = a || this._renderContext; b *= cc.view.getScaleX(); c = "rgba(" + (0 | c.r) + "," + (0 | c.g) + "," + (0 | c.b); a.fillStyle = c + ",1)"; var d = b / 10; a.beginPath(); a.moveTo(-b, b); a.lineTo(0, d); a.lineTo(b, b); a.lineTo(d, 0); a.lineTo(b, -b); a.lineTo(0, -d); a.lineTo(-b, -b); a.lineTo(-d, 0); a.lineTo(-b, b); a.closePath(); a.fill(); var e = a.createRadialGradient(0, 0, d, 0, 0, b); e.addColorStop(0, c + ", 1)"); e.addColorStop(0.3, c + ", 0.8)"); e.addColorStop(1, c + ", 0.0)"); a.fillStyle = e; a.beginPath(); a.arc(0, 0, b - d, 0, cc.PI2, !1); a.closePath(); a.fill() }, drawColorBall: function (a, b, c) { a = a || this._renderContext; b *= cc.view.getScaleX(); c = "rgba(" + (0 | c.r) + "," + (0 | c.g) + "," + (0 | c.b); var d = a.createRadialGradient(0, 0, b / 10, 0, 0, b); d.addColorStop(0, c + ", 1)"); d.addColorStop(0.3, c + ", 0.8)"); d.addColorStop(0.6, c + ", 0.4)"); d.addColorStop(1, c + ", 0.0)"); a.fillStyle = d; a.beginPath(); a.arc(0, 0, b, 0, cc.PI2, !1); a.closePath(); a.fill() }, fillText: function (a, b, c) { this._renderContext.fillText(a, b, -c) }, setDrawColor: function (a, b, c, d) { this._renderContext.fillStyle = "rgba(" + a + "," + b + "," + c + "," + d / 255 + ")"; this._renderContext.strokeStyle = "rgba(" + a + "," + b + "," + c + "," + d / 255 + ")" }, setPointSize: function (a) { }, setLineWidth: function (a) { this._renderContext.lineWidth = a * cc.view.getScaleX() } }); cc.DrawingPrimitiveWebGL = cc.Class.extend({ _renderContext: null, _initialized: !1, _shader: null, _colorLocation: -1, _colorArray: null, _pointSizeLocation: -1, _pointSize: -1, ctor: function (a) { null == a && (a = cc._renderContext); if (!a instanceof WebGLRenderingContext) throw "Can't initialise DrawingPrimitiveWebGL. context need is WebGLRenderingContext"; this._renderContext = a; this._colorArray = new Float32Array([1, 1, 1, 1]) }, lazy_init: function () { this._initialized || (this._shader = cc.shaderCache.programForKey(cc.SHADER_POSITION_UCOLOR), this._colorLocation = this._renderContext.getUniformLocation(this._shader.getProgram(), "u_color"), this._pointSizeLocation = this._renderContext.getUniformLocation(this._shader.getProgram(), "u_pointSize"), this._initialized = !0) }, drawInit: function () { this._initialized = !1 }, drawPoint: function (a) { this.lazy_init(); var b = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); b.uniform4fv(this._colorLocation, this._colorArray); this._shader.setUniformLocationWith1f(this._pointSizeLocation, this._pointSize); var c = b.createBuffer(); b.bindBuffer(b.ARRAY_BUFFER, c); b.bufferData(b.ARRAY_BUFFER, new Float32Array([a.x, a.y]), b.STATIC_DRAW); b.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, b.FLOAT, !1, 0, 0); b.drawArrays(b.POINTS, 0, 1); b.deleteBuffer(c); cc.incrementGLDraws(1) }, drawPoints: function (a, b) { if (a && 0 != a.length) { this.lazy_init(); var c = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); c.uniform4fv(this._colorLocation, this._colorArray); this._shader.setUniformLocationWith1f(this._pointSizeLocation, this._pointSize); var d = c.createBuffer(); c.bindBuffer(c.ARRAY_BUFFER, d); c.bufferData(c.ARRAY_BUFFER, this._pointsToTypeArray(a), c.STATIC_DRAW); c.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, c.FLOAT, !1, 0, 0); c.drawArrays(c.POINTS, 0, a.length); c.deleteBuffer(d); cc.incrementGLDraws(1) } }, _pointsToTypeArray: function (a) { for (var b = new Float32Array(2 * a.length), c = 0; c < a.length; c++) b[2 * c] = a[c].x, b[2 * c + 1] = a[c].y; return b }, drawLine: function (a, b) { this.lazy_init(); var c = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); c.uniform4fv(this._colorLocation, this._colorArray); var d = c.createBuffer(); c.bindBuffer(c.ARRAY_BUFFER, d); c.bufferData(c.ARRAY_BUFFER, this._pointsToTypeArray([a, b]), c.STATIC_DRAW); c.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, c.FLOAT, !1, 0, 0); c.drawArrays(c.LINES, 0, 2); c.deleteBuffer(d); cc.incrementGLDraws(1) }, drawRect: function (a, b) { this.drawLine(cc.p(a.x, a.y), cc.p(b.x, a.y)); this.drawLine(cc.p(b.x, a.y), cc.p(b.x, b.y)); this.drawLine(cc.p(b.x, b.y), cc.p(a.x, b.y)); this.drawLine(cc.p(a.x, b.y), cc.p(a.x, a.y)) }, drawSolidRect: function (a, b, c) { a = [a, cc.p(b.x, a.y), b, cc.p(a.x, b.y)]; this.drawSolidPoly(a, 4, c) }, drawPoly: function (a, b, c) { this.lazy_init(); b = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); b.uniform4fv(this._colorLocation, this._colorArray); var d = b.createBuffer(); b.bindBuffer(b.ARRAY_BUFFER, d); b.bufferData(b.ARRAY_BUFFER, this._pointsToTypeArray(a), b.STATIC_DRAW); b.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, b.FLOAT, !1, 0, 0); c ? b.drawArrays(b.LINE_LOOP, 0, a.length) : b.drawArrays(b.LINE_STRIP, 0, a.length); b.deleteBuffer(d); cc.incrementGLDraws(1) }, drawSolidPoly: function (a, b, c) { this.lazy_init(); c && this.setDrawColor(c.r, c.g, c.b, c.a); b = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); b.uniform4fv(this._colorLocation, this._colorArray); c = b.createBuffer(); b.bindBuffer(b.ARRAY_BUFFER, c); b.bufferData(b.ARRAY_BUFFER, this._pointsToTypeArray(a), b.STATIC_DRAW); b.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, b.FLOAT, !1, 0, 0); b.drawArrays(b.TRIANGLE_FAN, 0, a.length); b.deleteBuffer(c); cc.incrementGLDraws(1) }, drawCircle: function (a, b, c, d, e) { this.lazy_init(); var f = 1; e && f++; var g = 2 * Math.PI / d; if (e = new Float32Array(2 * (d + 2))) { for (var h = 0; h <= d; h++) { var k = h * g, m = b * Math.cos(k + c) + a.x, k = b * Math.sin(k + c) + a.y; e[2 * h] = m; e[2 * h + 1] = k } e[2 * (d + 1)] = a.x; e[2 * (d + 1) + 1] = a.y; a = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); a.uniform4fv(this._colorLocation, this._colorArray); b = a.createBuffer(); a.bindBuffer(a.ARRAY_BUFFER, b); a.bufferData(a.ARRAY_BUFFER, e, a.STATIC_DRAW); a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, 0, 0); a.drawArrays(a.LINE_STRIP, 0, d + f); a.deleteBuffer(b); cc.incrementGLDraws(1) } }, drawQuadBezier: function (a, b, c, d) { this.lazy_init(); for (var e = new Float32Array(2 * (d + 1)), f = 0, g = 0; g < d; g++) e[2 * g] = Math.pow(1 - f, 2) * a.x + 2 * (1 - f) * f * b.x + f * f * c.x, e[2 * g + 1] = Math.pow(1 - f, 2) * a.y + 2 * (1 - f) * f * b.y + f * f * c.y, f += 1 / d; e[2 * d] = c.x; e[2 * d + 1] = c.y; a = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); a.uniform4fv(this._colorLocation, this._colorArray); b = a.createBuffer(); a.bindBuffer(a.ARRAY_BUFFER, b); a.bufferData(a.ARRAY_BUFFER, e, a.STATIC_DRAW); a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, 0, 0); a.drawArrays(a.LINE_STRIP, 0, d + 1); a.deleteBuffer(b); cc.incrementGLDraws(1) }, drawCubicBezier: function (a, b, c, d, e) { this.lazy_init(); for (var f = new Float32Array(2 * (e + 1)), g = 0, h = 0; h < e; h++) f[2 * h] = Math.pow(1 - g, 3) * a.x + 3 * Math.pow(1 - g, 2) * g * b.x + 3 * (1 - g) * g * g * c.x + g * g * g * d.x, f[2 * h + 1] = Math.pow(1 - g, 3) * a.y + 3 * Math.pow(1 - g, 2) * g * b.y + 3 * (1 - g) * g * g * c.y + g * g * g * d.y, g += 1 / e; f[2 * e] = d.x; f[2 * e + 1] = d.y; a = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); a.uniform4fv(this._colorLocation, this._colorArray); b = a.createBuffer(); a.bindBuffer(a.ARRAY_BUFFER, b); a.bufferData(a.ARRAY_BUFFER, f, a.STATIC_DRAW); a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, 0, 0); a.drawArrays(a.LINE_STRIP, 0, e + 1); a.deleteBuffer(b); cc.incrementGLDraws(1) }, drawCatmullRom: function (a, b) { this.drawCardinalSpline(a, 0.5, b) }, drawCardinalSpline: function (a, b, c) { this.lazy_init(); for (var d = new Float32Array(2 * (c + 1)), e, f, g = 1 / a.length, h = 0; h < c + 1; h++) f = h / c, 1 == f ? (e = a.length - 1, f = 1) : (e = 0 | f / g, f = (f - g * e) / g), e = cc.CardinalSplineAt(cc.getControlPointAt(a, e - 1), cc.getControlPointAt(a, e), cc.getControlPointAt(a, e + 1), cc.getControlPointAt(a, e + 2), b, f), d[2 * h] = e.x, d[2 * h + 1] = e.y; a = this._renderContext; this._shader.use(); this._shader.setUniformForModelViewAndProjectionMatrixWithMat4(); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POSITION); a.uniform4fv(this._colorLocation, this._colorArray); b = a.createBuffer(); a.bindBuffer(a.ARRAY_BUFFER, b); a.bufferData(a.ARRAY_BUFFER, d, a.STATIC_DRAW); a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, 0, 0); a.drawArrays(a.LINE_STRIP, 0, c + 1); a.deleteBuffer(b); cc.incrementGLDraws(1) }, setDrawColor: function (a, b, c, d) { this._colorArray[0] = a / 255; this._colorArray[1] = b / 255; this._colorArray[2] = c / 255; this._colorArray[3] = d / 255 }, setPointSize: function (a) { this._pointSize = a * cc.contentScaleFactor() }, setLineWidth: function (a) { this._renderContext.lineWidth && this._renderContext.lineWidth(a) } }); cc._tmp.WebGLLabelTTF = function () { var a = cc.LabelTTF.prototype; a.setColor = cc.Sprite.prototype.setColor; a._setColorsString = function () { this._needUpdateTexture = !0; var a = this._strokeColor, c = this._textFillColor; this._shadowColorStr = "rgba(128,128,128," + this._shadowOpacity + ")"; this._fillColorStr = "rgba(" + (0 | c.r) + "," + (0 | c.g) + "," + (0 | c.b) + ", 1)"; this._strokeColorStr = "rgba(" + (0 | a.r) + "," + (0 | a.g) + "," + (0 | a.b) + ", 1)" }; a.updateDisplayedColor = cc.Sprite.prototype.updateDisplayedColor; a.setOpacity = cc.Sprite.prototype.setOpacity; a.updateDisplayedOpacity = cc.Sprite.prototype.updateDisplayedOpacity; a.initWithStringAndTextDefinition = function (a, c) { if (!cc.Sprite.prototype.init.call(this)) return !1; this.shaderProgram = cc.shaderCache.programForKey(cc.LabelTTF._SHADER_PROGRAM); this._updateWithTextDefinition(c, !1); this.string = a; return !0 }; a.setFontFillColor = function (a) { var c = this._textFillColor; if (c.r != a.r || c.g != a.g || c.b != a.b) c.r = a.r, c.g = a.g, c.b = a.b, this._setColorsString(), this._needUpdateTexture = !0 }; a.draw = function (a) { if (this._string && "" != this._string) { a = a || cc._renderContext; var c = this._texture; c && c._isLoaded && (this._shaderProgram.use(), this._shaderProgram.setUniformForModelViewAndProjectionMatrixWithMat4(), cc.glBlendFunc(this._blendFunc.src, this._blendFunc.dst), cc.glBindTexture2D(c), cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POS_COLOR_TEX), a.bindBuffer(a.ARRAY_BUFFER, this._quadWebBuffer), this._quadDirty && (a.bufferData(a.ARRAY_BUFFER, this._quad.arrayBuffer, a.STATIC_DRAW), this._quadDirty = !1), a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 3, a.FLOAT, !1, 24, 0), a.vertexAttribPointer(cc.VERTEX_ATTRIB_TEX_COORDS, 2, a.FLOAT, !1, 24, 16), a.vertexAttribPointer(cc.VERTEX_ATTRIB_COLOR, 4, a.UNSIGNED_BYTE, !0, 24, 12), a.drawArrays(a.TRIANGLE_STRIP, 0, 4)); if (1 === cc.SPRITE_DEBUG_DRAW) a = this._quad, a = [cc.p(a.tl.vertices.x, a.tl.vertices.y), cc.p(a.bl.vertices.x, a.bl.vertices.y), cc.p(a.br.vertices.x, a.br.vertices.y), cc.p(a.tr.vertices.x, a.tr.vertices.y)], cc._drawingUtil.drawPoly(a, 4, !0); else if (2 === cc.SPRITE_DEBUG_DRAW) { a = this.getTextureRect(); var c = this.offsetX, d = this.offsetY; a = [cc.p(c, d), cc.p(c + a.width, d), cc.p(c + a.width, d + a.height), cc.p(c, d + a.height)]; cc._drawingUtil.drawPoly(a, 4, !0) } cc.g_NumberOfDraws++ } }; a.setTextureRect = cc.Sprite.prototype.setTextureRect }; cc._tmp.PrototypeLabelTTF = function () { var a = cc.LabelTTF.prototype; cc.defineGetterSetter(a, "color", a.getColor, a.setColor); cc.defineGetterSetter(a, "opacity", a.getOpacity, a.setOpacity); cc.defineGetterSetter(a, "string", a.getString, a.setString); cc.defineGetterSetter(a, "textAlign", a.getHorizontalAlignment, a.setHorizontalAlignment); cc.defineGetterSetter(a, "verticalAlign", a.getVerticalAlignment, a.setVerticalAlignment); cc.defineGetterSetter(a, "fontSize", a.getFontSize, a.setFontSize); cc.defineGetterSetter(a, "fontName", a.getFontName, a.setFontName); cc.defineGetterSetter(a, "font", a._getFont, a._setFont); cc.defineGetterSetter(a, "boundingWidth", a._getBoundingWidth, a._setBoundingWidth); cc.defineGetterSetter(a, "boundingHeight", a._getBoundingHeight, a._setBoundingHeight); cc.defineGetterSetter(a, "fillStyle", a._getFillStyle, a.setFontFillColor); cc.defineGetterSetter(a, "strokeStyle", a._getStrokeStyle, a._setStrokeStyle); cc.defineGetterSetter(a, "lineWidth", a._getLineWidth, a._setLineWidth); cc.defineGetterSetter(a, "shadowOffsetX", a._getShadowOffsetX, a._setShadowOffsetX); cc.defineGetterSetter(a, "shadowOffsetY", a._getShadowOffsetY, a._setShadowOffsetY); cc.defineGetterSetter(a, "shadowOpacity", a._getShadowOpacity, a._setShadowOpacity); cc.defineGetterSetter(a, "shadowBlur", a._getShadowBlur, a._setShadowBlur) }; cc.LabelTTF = cc.Sprite.extend({ _dimensions: null, _hAlignment: cc.TEXT_ALIGNMENT_CENTER, _vAlignment: cc.VERTICAL_TEXT_ALIGNMENT_TOP, _fontName: null, _fontSize: 0, _string: "", _originalText: null, _isMultiLine: !1, _fontStyleStr: null, _shadowEnabled: !1, _shadowOffset: null, _shadowOpacity: 0, _shadowBlur: 0, _shadowColorStr: null, _strokeEnabled: !1, _strokeColor: null, _strokeSize: 0, _strokeColorStr: null, _textFillColor: null, _fillColorStr: null, _strokeShadowOffsetX: 0, _strokeShadowOffsetY: 0, _needUpdateTexture: !1, _labelCanvas: null, _labelContext: null, _lineWidths: null, _className: "LabelTTF", initWithString: function (a, b, c, d, e, f) { a = a ? a + "" : ""; c = c || 16; d = d || cc.size(0, 0); e = e || cc.TEXT_ALIGNMENT_LEFT; f = f || cc.VERTICAL_TEXT_ALIGNMENT_TOP; this._opacityModifyRGB = !1; this._dimensions = cc.size(d.width, d.height); this._fontName = b || "Arial"; this._hAlignment = e; this._vAlignment = f; this._fontSize = c; this._fontStyleStr = this._fontSize + "px '" + b + "'"; this._fontClientHeight = cc.LabelTTF.__getFontHeightByDiv(b, this._fontSize); this.string = a; this._setColorsString(); this._updateTexture(); this._needUpdateTexture = !1; return !0 }, ctor: function (a, b, c, d, e, f) { cc.Sprite.prototype.ctor.call(this); this._dimensions = cc.size(0, 0); this._hAlignment = cc.TEXT_ALIGNMENT_LEFT; this._vAlignment = cc.VERTICAL_TEXT_ALIGNMENT_TOP; this._opacityModifyRGB = !1; this._fontStyleStr = ""; this._fontName = "Arial"; this._shadowEnabled = this._isMultiLine = !1; this._shadowOffset = cc.p(0, 0); this._shadowBlur = this._shadowOpacity = 0; this._shadowColorStr = "rgba(128, 128, 128, 0.5)"; this._strokeEnabled = !1; this._strokeColor = cc.color(255, 255, 255, 255); this._strokeSize = 0; this._strokeColorStr = ""; this._textFillColor = cc.color(255, 255, 255, 255); this._fillColorStr = "rgba(255,255,255,1)"; this._strokeShadowOffsetY = this._strokeShadowOffsetX = 0; this._needUpdateTexture = !1; this._lineWidths = []; this._setColorsString(); b && b instanceof cc.FontDefinition ? this.initWithStringAndTextDefinition(a, b) : cc.LabelTTF.prototype.initWithString.call(this, a, b, c, d, e, f) }, init: function () { return this.initWithString(" ", this._fontName, this._fontSize) }, _measureConfig: function () { this._getLabelContext().font = this._fontStyleStr }, _measure: function (a) { return this._getLabelContext().measureText(a).width }, description: function () { return "\x3ccc.LabelTTF | FontName \x3d" + this._fontName + " FontSize \x3d " + this._fontSize.toFixed(1) + "\x3e" }, setColor: null, _setColorsString: null, updateDisplayedColor: null, setOpacity: null, updateDisplayedOpacity: null, updateDisplayedOpacityForCanvas: function (a) { cc.Node.prototype.updateDisplayedOpacity.call(this, a); this._setColorsString() }, getString: function () { return this._string }, getHorizontalAlignment: function () { return this._hAlignment }, getVerticalAlignment: function () { return this._vAlignment }, getDimensions: function () { return cc.size(this._dimensions) }, getFontSize: function () { return this._fontSize }, getFontName: function () { return this._fontName }, initWithStringAndTextDefinition: null, setTextDefinition: function (a) { a && this._updateWithTextDefinition(a, !0) }, getTextDefinition: function () { return this._prepareTextDefinition(!1) }, enableShadow: function (a, b, c, d) { c = c || 0.5; !1 === this._shadowEnabled && (this._shadowEnabled = !0); var e = this._shadowOffset; if (e && e.x != a || e._y != b) e.x = a, e.y = b; this._shadowOpacity != c && (this._shadowOpacity = c); this._setColorsString(); this._shadowBlur != d && (this._shadowBlur = d); this._needUpdateTexture = !0 }, _getShadowOffsetX: function () { return this._shadowOffset.x }, _setShadowOffsetX: function (a) { !1 === this._shadowEnabled && (this._shadowEnabled = !0); this._shadowOffset.x != a && (this._shadowOffset.x = a, this._needUpdateTexture = !0) }, _getShadowOffsetY: function () { return this._shadowOffset._y }, _setShadowOffsetY: function (a) { !1 === this._shadowEnabled && (this._shadowEnabled = !0); this._shadowOffset._y != a && (this._shadowOffset._y = a, this._needUpdateTexture = !0) }, _getShadowOffset: function () { return cc.p(this._shadowOffset.x, this._shadowOffset.y) }, _setShadowOffset: function (a) { !1 === this._shadowEnabled && (this._shadowEnabled = !0); if (this._shadowOffset.x != a.x || this._shadowOffset.y != a.y) this._shadowOffset.x = a.x, this._shadowOffset.y = a.y, this._needUpdateTexture = !0 }, _getShadowOpacity: function () { return this._shadowOpacity }, _setShadowOpacity: function (a) { !1 === this._shadowEnabled && (this._shadowEnabled = !0); this._shadowOpacity != a && (this._shadowOpacity = a, this._setColorsString(), this._needUpdateTexture = !0) }, _getShadowBlur: function () { return this._shadowBlur }, _setShadowBlur: function (a) { !1 === this._shadowEnabled && (this._shadowEnabled = !0); this._shadowBlur != a && (this._shadowBlur = a, this._needUpdateTexture = !0) }, disableShadow: function () { this._shadowEnabled && (this._shadowEnabled = !1, this._needUpdateTexture = !0) }, enableStroke: function (a, b) { !1 === this._strokeEnabled && (this._strokeEnabled = !0); var c = this._strokeColor; if (c.r !== a.r || c.g !== a.g || c.b !== a.b) c.r = a.r, c.g = a.g, c.b = a.b, this._setColorsString(); this._strokeSize !== b && (this._strokeSize = b || 0); this._needUpdateTexture = !0 }, _getStrokeStyle: function () { return this._strokeColor }, _setStrokeStyle: function (a) { !1 === this._strokeEnabled && (this._strokeEnabled = !0); var b = this._strokeColor; if (b.r !== a.r || b.g !== a.g || b.b !== a.b) b.r = a.r, b.g = a.g, b.b = a.b, this._setColorsString(), this._needUpdateTexture = !0 }, _getLineWidth: function () { return this._strokeSize }, _setLineWidth: function (a) { !1 === this._strokeEnabled && (this._strokeEnabled = !0); this._strokeSize !== a && (this._strokeSize = a || 0, this._needUpdateTexture = !0) }, disableStroke: function () { this._strokeEnabled && (this._strokeEnabled = !1, this._needUpdateTexture = !0) }, setFontFillColor: null, _getFillStyle: function () { return this._textFillColor }, _updateWithTextDefinition: function (a, b) { a.fontDimensions ? (this._dimensions.width = a.boundingWidth, this._dimensions.height = a.boundingHeight) : (this._dimensions.width = 0, this._dimensions.height = 0); this._hAlignment = a.textAlign; this._vAlignment = a.verticalAlign; this._fontName = a.fontName; this._fontSize = a.fontSize || 12; this._fontStyleStr = this._fontSize + "px '" + this._fontName + "'"; this._fontClientHeight = cc.LabelTTF.__getFontHeightByDiv(this._fontName, this._fontSize); a.shadowEnabled && this.enableShadow(a.shadowOffsetX, a.shadowOffsetY, a.shadowOpacity, a.shadowBlur); a.strokeEnabled && this.enableStroke(a.strokeStyle, a.lineWidth); this.setFontFillColor(a.fillStyle); b && this._updateTexture() }, _prepareTextDefinition: function (a) { var b = new cc.FontDefinition; a ? (b.fontSize = this._fontSize, b.boundingWidth = cc.contentScaleFactor() * this._dimensions.width, b.boundingHeight = cc.contentScaleFactor() * this._dimensions.height) : (b.fontSize = this._fontSize, b.boundingWidth = this._dimensions.width, b.boundingHeight = this._dimensions.height); b.fontName = this._fontName; b.textAlign = this._hAlignment; b.verticalAlign = this._vAlignment; if (this._strokeEnabled) { b.strokeEnabled = !0; var c = this._strokeColor; b.strokeStyle = cc.color(c.r, c.g, c.b); b.lineWidth = this._strokeSize } else b.strokeEnabled = !1; this._shadowEnabled ? (b.shadowEnabled = !0, b.shadowBlur = this._shadowBlur, b.shadowOpacity = this._shadowOpacity, b.shadowOffsetX = (a ? cc.contentScaleFactor() : 1) * this._shadowOffset.x, b.shadowOffsetY = (a ? cc.contentScaleFactor() : 1) * this._shadowOffset.y) : b._shadowEnabled = !1; a = this._textFillColor; b.fillStyle = cc.color(a.r, a.g, a.b); return b }, _fontClientHeight: 18, setString: function (a) { a = String(a); this._originalText != a && (this._originalText = a + "", this._updateString(), this._needUpdateTexture = !0) }, _updateString: function () { this._string = this._originalText }, setHorizontalAlignment: function (a) { a !== this._hAlignment && (this._hAlignment = a, this._needUpdateTexture = !0) }, setVerticalAlignment: function (a) { a != this._vAlignment && (this._vAlignment = a, this._needUpdateTexture = !0) }, setDimensions: function (a, b) { var c; void 0 === b ? (c = a.width, b = a.height) : c = a; if (c != this._dimensions.width || b != this._dimensions.height) this._dimensions.width = c, this._dimensions.height = b, this._updateString(), this._needUpdateTexture = !0 }, _getBoundingWidth: function () { return this._dimensions.width }, _setBoundingWidth: function (a) { a != this._dimensions.width && (this._dimensions.width = a, this._updateString(), this._needUpdateTexture = !0) }, _getBoundingHeight: function () { return this._dimensions.height }, _setBoundingHeight: function (a) { a != this._dimensions.height && (this._dimensions.height = a, this._updateString(), this._needUpdateTexture = !0) }, setFontSize: function (a) { this._fontSize !== a && (this._fontSize = a, this._fontStyleStr = a + "px '" + this._fontName + "'", this._fontClientHeight = cc.LabelTTF.__getFontHeightByDiv(this._fontName, a), this._needUpdateTexture = !0) }, setFontName: function (a) { this._fontName && this._fontName != a && (this._fontName = a, this._fontStyleStr = this._fontSize + "px '" + a + "'", this._fontClientHeight = cc.LabelTTF.__getFontHeightByDiv(a, this._fontSize), this._needUpdateTexture = !0) }, _getFont: function () { return this._fontStyleStr }, _setFont: function (a) { var b = cc.LabelTTF._fontStyleRE.exec(a); b && (this._fontSize = parseInt(b[1]), this._fontName = b[2], this._fontStyleStr = a, this._fontClientHeight = cc.LabelTTF.__getFontHeightByDiv(this._fontName, this._fontSize), this._needUpdateTexture = !0) }, _drawTTFInCanvas: function (a) { if (a) { var b = this._strokeShadowOffsetX, c = this._strokeShadowOffsetY, d = this._contentSize.height - c, e = this._vAlignment, f = this._hAlignment, g = this._fontClientHeight, h = this._strokeSize; a.setTransform(1, 0, 0, 1, 0 + 0.5 * b, d + 0.5 * c); a.font != this._fontStyleStr && (a.font = this._fontStyleStr); a.fillStyle = this._fillColorStr; var k = c = 0, m = this._strokeEnabled; m && (a.lineWidth = 2 * h, a.strokeStyle = this._strokeColorStr); this._shadowEnabled && (h = this._shadowOffset, a.shadowColor = this._shadowColorStr, a.shadowOffsetX = h.x, a.shadowOffsetY = -h.y, a.shadowBlur = this._shadowBlur); a.textBaseline = cc.LabelTTF._textBaseline[e]; a.textAlign = cc.LabelTTF._textAlign[f]; b = this._contentSize.width - b; c = f === cc.TEXT_ALIGNMENT_RIGHT ? c + b : f === cc.TEXT_ALIGNMENT_CENTER ? c + b / 2 : c + 0; if (this._isMultiLine) for (f = this._strings.length, e === cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM ? k = g + d - g * f : e === cc.VERTICAL_TEXT_ALIGNMENT_CENTER && (k = g / 2 + (d - g * f) / 2), e = 0; e < f; e++) b = this._strings[e], h = -d + g * e + k, m && a.strokeText(b, c, h), a.fillText(b, c, h); else e !== cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM && (k = e === cc.VERTICAL_TEXT_ALIGNMENT_TOP ? k - d : k - 0.5 * d), m && a.strokeText(this._string, c, k), a.fillText(this._string, c, k) } }, _getLabelContext: function () { if (this._labelContext) return this._labelContext; if (!this._labelCanvas) { var a = cc.newElement("canvas"), b = new cc.Texture2D; b.initWithElement(a); this.texture = b; this._labelCanvas = a } return this._labelContext = this._labelCanvas.getContext("2d") }, _checkWarp: function (a, b, c) { var d = a[b], e = this._measure(d); if (e > c && 1 < d.length) { for (var f = c / e * d.length | 0, g = d.substr(f), h = e - this._measure(g), k, m = 0, n = 0; h > c && 100 > n++;) f *= c / h, f |= 0, g = d.substr(f), h = e - this._measure(g); for (n = 0; h < c && 100 > n++;) g && (m = (k = cc.LabelTTF._wordRex.exec(g)) ? k[0].length : 1, k = g), f += m, g = d.substr(f), h = e - this._measure(g); f -= m; c = d.substr(0, f); cc.LabelTTF.wrapInspection && cc.LabelTTF._symbolRex.test(k || g) && (e = cc.LabelTTF._lastWordRex.exec(c), f -= e ? e[0].length : 0, k = d.substr(f), c = d.substr(0, f)); cc.LabelTTF._firsrEnglish.test(k) && (e = cc.LabelTTF._lastEnglish.exec(c)) && c !== e[0] && (f -= e[0].length, k = d.substr(f), c = d.substr(0, f)); a[b] = k || g; a.splice(b, 0, c) } }, _updateTTF: function () { var a = this._dimensions.width, b, c, d = this._lineWidths; d.length = 0; this._isMultiLine = !1; this._measureConfig(); if (0 !== a) for (this._strings = this._string.split("\n"), b = 0; b < this._strings.length; b++) this._checkWarp(this._strings, b, a); else for (this._strings = this._string.split("\n"), b = 0, c = this._strings.length; b < c; b++) d.push(this._measure(this._strings[b])); 0 < this._strings.length && (this._isMultiLine = !0); c = b = 0; this._strokeEnabled && (b = c = 2 * this._strokeSize); if (this._shadowEnabled) { var e = this._shadowOffset; b += 2 * Math.abs(e.x); c += 2 * Math.abs(e.y) } a = 0 === a ? this._isMultiLine ? cc.size(0 | Math.max.apply(Math, d) + b, 0 | this._fontClientHeight * this._strings.length + c) : cc.size(0 | this._measure(this._string) + b, 0 | this._fontClientHeight + c) : 0 === this._dimensions.height ? this._isMultiLine ? cc.size(0 | a + b, 0 | this._fontClientHeight * this._strings.length + c) : cc.size(0 | a + b, 0 | this._fontClientHeight + c) : cc.size(0 | a + b, 0 | this._dimensions.height + c); this.setContentSize(a); this._strokeShadowOffsetX = b; this._strokeShadowOffsetY = c; d = this._anchorPoint; this._anchorPointInPoints.x = 0.5 * b + (a.width - b) * d.x; this._anchorPointInPoints.y = 0.5 * c + (a.height - c) * d.y }, getContentSize: function () { this._needUpdateTexture && this._updateTTF(); return cc.Sprite.prototype.getContentSize.call(this) }, _getWidth: function () { this._needUpdateTexture && this._updateTTF(); return cc.Sprite.prototype._getWidth.call(this) }, _getHeight: function () { this._needUpdateTexture && this._updateTTF(); return cc.Sprite.prototype._getHeight.call(this) }, _updateTexture: function () { var a = this._getLabelContext(), b = this._labelCanvas, c = this._contentSize; if (0 === this._string.length) return b.width = 1, b.height = c.height || 1, this._texture && this._texture.handleLoadedTexture(), this.setTextureRect(cc.rect(0, 0, 1, c.height)), !0; a.font = this._fontStyleStr; this._updateTTF(); var d = c.width, c = c.height, e = b.width == d && b.height == c; b.width = d; b.height = c; e && a.clearRect(0, 0, d, c); this._drawTTFInCanvas(a); this._texture && this._texture.handleLoadedTexture(); this.setTextureRect(cc.rect(0, 0, d, c)); return !0 }, visit: function (a) { this._string && "" != this._string && (this._needUpdateTexture && (this._needUpdateTexture = !1, this._updateTexture()), cc.Sprite.prototype.visit.call(this, a || cc._renderContext)) }, draw: null, _setTextureCoords: function (a) { var b = this._batchNode ? this.textureAtlas.texture : this._texture; if (b) { var c = b.pixelsWidth, d = b.pixelsHeight, e, f = this._quad; this._rectRotated ? (cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL ? (b = (2 * a.x + 1) / (2 * c), c = b + (2 * a.height - 2) / (2 * c), e = (2 * a.y + 1) / (2 * d), a = e + (2 * a.width - 2) / (2 * d)) : (b = a.x / c, c = (a.x + a.height) / c, e = a.y / d, a = (a.y + a.width) / d), this._flippedX && (d = e, e = a, a = d), this._flippedY && (d = b, b = c, c = d), f.bl.texCoords.u = b, f.bl.texCoords.v = e, f.br.texCoords.u = b, f.br.texCoords.v = a, f.tl.texCoords.u = c, f.tl.texCoords.v = e, f.tr.texCoords.u = c, f.tr.texCoords.v = a) : (cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL ? (b = (2 * a.x + 1) / (2 * c), c = b + (2 * a.width - 2) / (2 * c), e = (2 * a.y + 1) / (2 * d), a = e + (2 * a.height - 2) / (2 * d)) : (b = a.x / c, c = (a.x + a.width) / c, e = a.y / d, a = (a.y + a.height) / d), this._flippedX && (d = b, b = c, c = d), this._flippedY && (d = e, e = a, a = d), f.bl.texCoords.u = b, f.bl.texCoords.v = a, f.br.texCoords.u = c, f.br.texCoords.v = a, f.tl.texCoords.u = b, f.tl.texCoords.v = e, f.tr.texCoords.u = c, f.tr.texCoords.v = e); this._quadDirty = !0 } } }); cc._renderType === cc._RENDER_TYPE_CANVAS ? (_p = cc.LabelTTF.prototype, _p.setColor = function (a) { cc.Node.prototype.setColor.call(this, a); this._setColorsString() }, _p._setColorsString = function () { this._needUpdateTexture = !0; var a = this._displayedColor, b = this._displayedOpacity, c = this._strokeColor, d = this._textFillColor; this._shadowColorStr = "rgba(" + (0 | 0.5 * a.r) + "," + (0 | 0.5 * a.g) + "," + (0 | 0.5 * a.b) + "," + this._shadowOpacity + ")"; this._fillColorStr = "rgba(" + (0 | a.r / 255 * d.r) + "," + (0 | a.g / 255 * d.g) + "," + (0 | a.b / 255 * d.b) + ", " + b / 255 + ")"; this._strokeColorStr = "rgba(" + (0 | a.r / 255 * c.r) + "," + (0 | a.g / 255 * c.g) + "," + (0 | a.b / 255 * c.b) + ", " + b / 255 + ")" }, _p.updateDisplayedColor = function (a) { cc.Node.prototype.updateDisplayedColor.call(this, a); this._setColorsString() }, _p.setOpacity = function (a) { this._opacity !== a && (cc.Sprite.prototype.setOpacity.call(this, a), this._setColorsString(), this._needUpdateTexture = !0) }, _p.updateDisplayedOpacity = cc.Sprite.prototype.updateDisplayedOpacity, _p.initWithStringAndTextDefinition = function (a, b) { this._updateWithTextDefinition(b, !1); this.string = a; return !0 }, _p.setFontFillColor = function (a) { var b = this._textFillColor; if (b.r != a.r || b.g != a.g || b.b != a.b) b.r = a.r, b.g = a.g, b.b = a.b, this._setColorsString(), this._needUpdateTexture = !0 }, _p.draw = cc.Sprite.prototype.draw, _p.setTextureRect = function (a, b, c) { this._rectRotated = b || !1; this.setContentSize(c || a); this.setVertexRect(a); b = this._textureRect_Canvas; b.x = a.x; b.y = a.y; b.width = a.width; b.height = a.height; b.validRect = !(0 === b.width || 0 === b.height || 0 > b.x || 0 > b.y); a = this._unflippedOffsetPositionFromCenter; this._flippedX && (a.x = -a.x); this._flippedY && (a.y = -a.y); this._offsetPosition.x = a.x + (this._contentSize.width - this._rect.width) / 2; this._offsetPosition.y = a.y + (this._contentSize.height - this._rect.height) / 2; this._batchNode && (this.dirty = !0) }, _p = null) : (cc.assert(cc.isFunction(cc._tmp.WebGLLabelTTF), cc._LogInfos.MissingFile, "LabelTTFWebGL.js"), cc._tmp.WebGLLabelTTF(), delete cc._tmp.WebGLLabelTTF); cc.assert(cc.isFunction(cc._tmp.PrototypeLabelTTF), cc._LogInfos.MissingFile, "LabelTTFPropertyDefine.js"); cc._tmp.PrototypeLabelTTF(); delete cc._tmp.PrototypeLabelTTF; cc.LabelTTF._textAlign = ["left", "center", "right"]; cc.LabelTTF._textBaseline = ["top", "middle", "bottom"]; cc.LabelTTF.wrapInspection = !0; cc.LabelTTF._wordRex = /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôû]+|\S)/; cc.LabelTTF._symbolRex = /^[!,.:;}\]%\?>\u3001\u2018\u201c\u300b\uff1f\u3002\uff0c\uff01]/; cc.LabelTTF._lastWordRex = /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôû]+|\S)$/; cc.LabelTTF._lastEnglish = /[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôû]+$/; cc.LabelTTF._firsrEnglish = /^[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôû]/; cc.LabelTTF._fontStyleRE = /^(\d+)px\s+['"]?([\w\s\d]+)['"]?$/; cc.LabelTTF.create = function (a, b, c, d, e, f) { return new cc.LabelTTF(a, b, c, d, e, f) }; cc.LabelTTF.createWithFontDefinition = cc.LabelTTF.create; cc.LabelTTF._SHADER_PROGRAM = cc.USE_LA88_LABELS ? cc.SHADER_POSITION_TEXTURECOLOR : cc.SHADER_POSITION_TEXTUREA8COLOR; cc.LabelTTF.__labelHeightDiv = cc.newElement("div"); cc.LabelTTF.__labelHeightDiv.style.fontFamily = "Arial"; cc.LabelTTF.__labelHeightDiv.style.position = "absolute"; cc.LabelTTF.__labelHeightDiv.style.left = "-100px"; cc.LabelTTF.__labelHeightDiv.style.top = "-100px"; cc.LabelTTF.__labelHeightDiv.style.lineHeight = "normal"; document.body ? document.body.appendChild(cc.LabelTTF.__labelHeightDiv) : cc._addEventListener(window, "load", function () { this.removeEventListener("load", arguments.callee, !1); document.body.appendChild(cc.LabelTTF.__labelHeightDiv) }, !1); cc.LabelTTF.__getFontHeightByDiv = function (a, b) { var c = cc.LabelTTF.__fontHeightCache[a + "." + b]; if (0 < c) return c; var d = cc.LabelTTF.__labelHeightDiv; d.innerHTML = "ajghl~!"; d.style.fontFamily = a; d.style.fontSize = b + "px"; c = d.clientHeight; cc.LabelTTF.__fontHeightCache[a + "." + b] = c; d.innerHTML = ""; return c }; cc.LabelTTF.__fontHeightCache = {}; cc.HashElement = cc.Class.extend({ actions: null, target: null, actionIndex: 0, currentAction: null, currentActionSalvaged: !1, paused: !1, hh: null, ctor: function () { this.actions = []; this.target = null; this.actionIndex = 0; this.currentAction = null; this.paused = this.currentActionSalvaged = !1; this.hh = null } }); cc.ActionManager = cc.Class.extend({ _hashTargets: null, _arrayTargets: null, _currentTarget: null, _currentTargetSalvaged: !1, _searchElementByTarget: function (a, b) { for (var c = 0; c < a.length; c++) if (b == a[c].target) return a[c]; return null }, ctor: function () { this._hashTargets = {}; this._arrayTargets = []; this._currentTarget = null; this._currentTargetSalvaged = !1 }, addAction: function (a, b, c) { if (!a) throw "cc.ActionManager.addAction(): action must be non-null"; if (!b) throw "cc.ActionManager.addAction(): action must be non-null"; var d = this._hashTargets[b.__instanceId]; d || (d = new cc.HashElement, d.paused = c, d.target = b, this._hashTargets[b.__instanceId] = d, this._arrayTargets.push(d)); this._actionAllocWithHashElement(d); d.actions.push(a); a.startWithTarget(b) }, removeAllActions: function () { for (var a = this._arrayTargets, b = 0; b < a.length; b++) { var c = a[b]; c && this.removeAllActionsFromTarget(c.target, !0) } }, removeAllActionsFromTarget: function (a, b) { if (null != a) { var c = this._hashTargets[a.__instanceId]; c && (-1 === c.actions.indexOf(c.currentAction) || c.currentActionSalvaged || (c.currentActionSalvaged = !0), c.actions.length = 0, this._currentTarget != c || b ? this._deleteHashElement(c) : this._currentTargetSalvaged = !0) } }, removeAction: function (a) { if (null != a) { var b = a.getOriginalTarget(); if (b = this._hashTargets[b.__instanceId]) for (var c = 0; c < b.actions.length; c++) { if (b.actions[c] == a) { b.actions.splice(c, 1); break } } else cc.log(cc._LogInfos.ActionManager_removeAction) } }, removeActionByTag: function (a, b) { a == cc.ACTION_TAG_INVALID && cc.log(cc._LogInfos.ActionManager_addAction); cc.assert(b, cc._LogInfos.ActionManager_addAction); var c = this._hashTargets[b.__instanceId]; if (c) for (var d = c.actions.length, e = 0; e < d; ++e) { var f = c.actions[e]; if (f && f.getTag() === a && f.getOriginalTarget() == b) { this._removeActionAtIndex(e, c); break } } }, getActionByTag: function (a, b) { a == cc.ACTION_TAG_INVALID && cc.log(cc._LogInfos.ActionManager_getActionByTag); var c = this._hashTargets[b.__instanceId]; if (c) { if (null != c.actions) for (var d = 0; d < c.actions.length; ++d) { var e = c.actions[d]; if (e && e.getTag() === a) return e } cc.log(cc._LogInfos.ActionManager_getActionByTag_2, a) } return null }, numberOfRunningActionsInTarget: function (a) { return (a = this._hashTargets[a.__instanceId]) ? a.actions ? a.actions.length : 0 : 0 }, pauseTarget: function (a) { if (a = this._hashTargets[a.__instanceId]) a.paused = !0 }, resumeTarget: function (a) { if (a = this._hashTargets[a.__instanceId]) a.paused = !1 }, pauseAllRunningActions: function () { for (var a = [], b = this._arrayTargets, c = 0; c < b.length; c++) { var d = b[c]; d && !d.paused && (d.paused = !0, a.push(d.target)) } return a }, resumeTargets: function (a) { if (a) for (var b = 0; b < a.length; b++) a[b] && this.resumeTarget(a[b]) }, purgeSharedManager: function () { cc.director.getScheduler().unscheduleUpdateForTarget(this) }, _removeActionAtIndex: function (a, b) { b.actions[a] != b.currentAction || b.currentActionSalvaged || (b.currentActionSalvaged = !0); b.actions.splice(a, 1); b.actionIndex >= a && b.actionIndex--; 0 == b.actions.length && (this._currentTarget == b ? this._currentTargetSalvaged = !0 : this._deleteHashElement(b)) }, _deleteHashElement: function (a) { a && (delete this._hashTargets[a.target.__instanceId], cc.arrayRemoveObject(this._arrayTargets, a), a.actions = null, a.target = null) }, _actionAllocWithHashElement: function (a) { null == a.actions && (a.actions = []) }, update: function (a) { for (var b = this._arrayTargets, c, d = 0; d < b.length; d++) { c = this._currentTarget = b[d]; if (!c.paused) for (c.actionIndex = 0; c.actionIndex < c.actions.length; c.actionIndex++) if (c.currentAction = c.actions[c.actionIndex], c.currentAction) { c.currentActionSalvaged = !1; c.currentAction.step(a * (c.currentAction._speedMethod ? c.currentAction._speed : 1)); if (c.currentActionSalvaged) c.currentAction = null; else if (c.currentAction.isDone()) { c.currentAction.stop(); var e = c.currentAction; c.currentAction = null; this.removeAction(e) } c.currentAction = null } this._currentTargetSalvaged && 0 === c.actions.length && this._deleteHashElement(c) } } }); cc.kmScalar = Number; cc.kmBool = Number; cc.kmEnum = Number; cc.KM_FALSE = 0; cc.KM_TRUE = 1; cc.kmPI = 3.141592; cc.kmPIOver180 = 0.017453; cc.kmPIUnder180 = 57.295779; cc.kmEpsilon = 0.015625; cc.kmSQR = function (a) { return a * a }; cc.kmDegreesToRadians = function (a) { return a * cc.kmPIOver180 }; cc.kmRadiansToDegrees = function (a) { return a * cc.kmPIUnder180 }; cc.kmMin = function (a, b) { return a < b ? a : b }; cc.kmMax = function (a, b) { return a > b ? a : b }; cc.kmAlmostEqual = function (a, b) { return a + cc.kmEpsilon > b && a - cc.kmEpsilon < b }; cc.kmVec2 = function (a, b) { this.x = a || 0; this.y = b || 0 }; cc.kmVec2Fill = function (a, b, c) { a.x = b; a.y = c; return a }; cc.kmVec2Length = function (a) { return Math.sqrt(cc.kmSQR(a.x) + cc.kmSQR(a.y)) }; cc.kmVec2LengthSq = function (a) { return cc.kmSQR(a.x) + cc.kmSQR(a.y) }; cc.kmVec2Normalize = function (a, b) { var c = 1 / cc.kmVec2Length(b), d = new cc.kmVec2; d.x = b.x * c; d.y = b.y * c; a.x = d.x; a.y = d.y; return a }; cc.kmVec2Add = function (a, b, c) { a.x = b.x + c.x; a.y = b.y + c.y; return a }; cc.kmVec2Dot = function (a, b) { return a.x * b.x + a.y * b.y }; cc.kmVec2Subtract = function (a, b, c) { a.x = b.x - c.x; a.y = b.y - c.y; return a }; cc.kmVec2Transform = function (a, b, c) { var d = new cc.kmVec2; d.x = b.x * c.mat[0] + b.y * c.mat[3] + c.mat[6]; d.y = b.x * c.mat[1] + b.y * c.mat[4] + c.mat[7]; a.x = d.x; a.y = d.y; return a }; cc.kmVec2TransformCoord = function (a, b, c) { return null }; cc.kmVec2Scale = function (a, b, c) { a.x = b.x * c; a.y = b.y * c; return a }; cc.kmVec2AreEqual = function (a, b) { return a.x < b.x + cc.kmEpsilon && a.x > b.x - cc.kmEpsilon && a.y < b.y + cc.kmEpsilon && a.y > b.y - cc.kmEpsilon }; cc.kmVec3 = function (a, b, c) { this.x = a || 0; this.y = b || 0; this.z = c || 0 }; cc.kmVec3Fill = function (a, b, c, d) { if (!a) return new cc.kmVec3(b, c, d); a.x = b; a.y = c; a.z = d; return a }; cc.kmVec3Length = function (a) { return Math.sqrt(cc.kmSQR(a.x) + cc.kmSQR(a.y) + cc.kmSQR(a.z)) }; cc.kmVec3LengthSq = function (a) { return cc.kmSQR(a.x) + cc.kmSQR(a.y) + cc.kmSQR(a.z) }; cc.kmVec3Normalize = function (a, b) { var c = 1 / cc.kmVec3Length(b); a.x = b.x * c; a.y = b.y * c; a.z = b.z * c; return a }; cc.kmVec3Cross = function (a, b, c) { a.x = b.y * c.z - b.z * c.y; a.y = b.z * c.x - b.x * c.z; a.z = b.x * c.y - b.y * c.x; return a }; cc.kmVec3Dot = function (a, b) { return a.x * b.x + a.y * b.y + a.z * b.z }; cc.kmVec3Add = function (a, b, c) { a.x = b.x + c.x; a.y = b.y + c.y; a.z = b.z + c.z; return a }; cc.kmVec3Subtract = function (a, b, c) { a.x = b.x - c.x; a.y = b.y - c.y; a.z = b.z - c.z; return a }; cc.kmVec3Transform = function (a, b, c) { a.x = b.x * c.mat[0] + b.y * c.mat[4] + b.z * c.mat[8] + c.mat[12]; a.y = b.x * c.mat[1] + b.y * c.mat[5] + b.z * c.mat[9] + c.mat[13]; a.z = b.x * c.mat[2] + b.y * c.mat[6] + b.z * c.mat[10] + c.mat[14]; return a }; cc.kmVec3TransformNormal = function (a, b, c) { a.x = b.x * c.mat[0] + b.y * c.mat[4] + b.z * c.mat[8]; a.y = b.x * c.mat[1] + b.y * c.mat[5] + b.z * c.mat[9]; a.z = b.x * c.mat[2] + b.y * c.mat[6] + b.z * c.mat[10]; return a }; cc.kmVec3TransformCoord = function (a, b, c) { var d = new cc.kmVec4, e = new cc.kmVec4; cc.kmVec4Fill(e, b.x, b.y, b.z, 1); cc.kmVec4Transform(d, e, c); a.x = d.x / d.w; a.y = d.y / d.w; a.z = d.z / d.w; return a }; cc.kmVec3Scale = function (a, b, c) { a.x = b.x * c; a.y = b.y * c; a.z = b.z * c; return a }; cc.kmVec3AreEqual = function (a, b) { return a.x < b.x + cc.kmEpsilon && a.x > b.x - cc.kmEpsilon && a.y < b.y + cc.kmEpsilon && a.y > b.y - cc.kmEpsilon && a.z < b.z + cc.kmEpsilon && a.z > b.z - cc.kmEpsilon ? 1 : 0 }; cc.kmVec3InverseTransform = function (a, b, c) { b = new cc.kmVec3(b.x - c.mat[12], b.y - c.mat[13], b.z - c.mat[14]); a.x = b.x * c.mat[0] + b.y * c.mat[1] + b.z * c.mat[2]; a.y = b.x * c.mat[4] + b.y * c.mat[5] + b.z * c.mat[6]; a.z = b.x * c.mat[8] + b.y * c.mat[9] + b.z * c.mat[10]; return a }; cc.kmVec3InverseTransformNormal = function (a, b, c) { a.x = b.x * c.mat[0] + b.y * c.mat[1] + b.z * c.mat[2]; a.y = b.x * c.mat[4] + b.y * c.mat[5] + b.z * c.mat[6]; a.z = b.x * c.mat[8] + b.y * c.mat[9] + b.z * c.mat[10]; return a }; cc.kmVec3Assign = function (a, b) { if (a == b) return a; a.x = b.x; a.y = b.y; a.z = b.z; return a }; cc.kmVec3Zero = function (a) { a.x = 0; a.y = 0; a.z = 0; return a }; cc.kmVec3ToTypeArray = function (a) { if (!a) return null; var b = new Float32Array(3); b[0] = a.x; b[1] = a.y; b[2] = a.z; return b }; cc.kmVec4 = function (a, b, c, d) { this.x = a || 0; this.y = b || 0; this.z = c || 0; this.w = d || 0 }; cc.kmVec4Fill = function (a, b, c, d, e) { a.x = b; a.y = c; a.z = d; a.w = e; return a }; cc.kmVec4Add = function (a, b, c) { a.x = b.x + c.x; a.y = b.y + c.y; a.z = b.z + c.z; a.w = b.w + c.w; return a }; cc.kmVec4Dot = function (a, b) { return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w }; cc.kmVec4Length = function (a) { return Math.sqrt(cc.kmSQR(a.x) + cc.kmSQR(a.y) + cc.kmSQR(a.z) + cc.kmSQR(a.w)) }; cc.kmVec4LengthSq = function (a) { return cc.kmSQR(a.x) + cc.kmSQR(a.y) + cc.kmSQR(a.z) + cc.kmSQR(a.w) }; cc.kmVec4Lerp = function (a, b, c, d) { return a }; cc.kmVec4Normalize = function (a, b) { var c = 1 / cc.kmVec4Length(b); a.x *= c; a.y *= c; a.z *= c; a.w *= c; return a }; cc.kmVec4Scale = function (a, b, c) { cc.kmVec4Normalize(a, b); a.x *= c; a.y *= c; a.z *= c; a.w *= c; return a }; cc.kmVec4Subtract = function (a, b, c) { a.x = b.x - c.x; a.y = b.y - c.y; a.z = b.z - c.z; a.w = b.w - c.w; return a }; cc.kmVec4Transform = function (a, b, c) { a.x = b.x * c.mat[0] + b.y * c.mat[4] + b.z * c.mat[8] + b.w * c.mat[12]; a.y = b.x * c.mat[1] + b.y * c.mat[5] + b.z * c.mat[9] + b.w * c.mat[13]; a.z = b.x * c.mat[2] + b.y * c.mat[6] + b.z * c.mat[10] + b.w * c.mat[14]; a.w = b.x * c.mat[3] + b.y * c.mat[7] + b.z * c.mat[11] + b.w * c.mat[15]; return a }; cc.kmVec4TransformArray = function (a, b, c, d, e, f) { for (var g = 0; g < f;) cc.kmVec4Transform(a + g * b, c + g * d, e), ++g; return a }; cc.kmVec4AreEqual = function (a, b) { return a.x < b.x + cc.kmEpsilon && a.x > b.x - cc.kmEpsilon && a.y < b.y + cc.kmEpsilon && a.y > b.y - cc.kmEpsilon && a.z < b.z + cc.kmEpsilon && a.z > b.z - cc.kmEpsilon && a.w < b.w + cc.kmEpsilon && a.w > b.w - cc.kmEpsilon }; cc.kmVec4Assign = function (a, b) { if (a == b) return cc.log("destVec and srcVec are same object"), a; a.x = b.x; a.y = b.y; a.z = b.z; a.w = b.w; return a }; cc.kmVec4ToTypeArray = function (a) { if (!a) return null; var b = new Float32Array(4); b[0] = a.x; b[1] = a.y; b[2] = a.z; b[3] = a.w; return b }; cc.kmRay2 = function (a, b) { this.start = a || new cc.kmVec2; this.start = a || new cc.kmVec2 }; cc.kmRay2Fill = function (a, b, c, d, e) { a.start.x = b; a.start.y = c; a.dir.x = d; a.dir.y = e }; cc.kmRay2IntersectLineSegment = function (a, b, c, d) { var e = a.start.x, f = a.start.y, g = a.start.x + a.dir.x; a = a.start.y + a.dir.y; var h = b.x, k = b.y, m = c.x, n = c.y, q = (n - k) * (g - e) - (m - h) * (a - f); if (q > -cc.kmEpsilon && q < cc.kmEpsilon) return cc.KM_FALSE; k = ((m - h) * (f - k) - (n - k) * (e - h)) / q; h = e + k * (g - e); k = f + k * (a - f); if (h < cc.kmMin(b.x, c.x) - cc.kmEpsilon || h > cc.kmMax(b.x, c.x) + cc.kmEpsilon || k < cc.kmMin(b.y, c.y) - cc.kmEpsilon || k > cc.kmMax(b.y, c.y) + cc.kmEpsilon || h < cc.kmMin(e, g) - cc.kmEpsilon || h > cc.kmMax(e, g) + cc.kmEpsilon || k < cc.kmMin(f, a) - cc.kmEpsilon || k > cc.kmMax(f, a) + cc.kmEpsilon) return cc.KM_FALSE; d.x = h; d.y = k; return cc.KM_TRUE }; cc.calculate_line_normal = function (a, b, c) { var d = new cc.kmVec2; cc.kmVec2Subtract(d, b, a); c.x = -d.y; c.y = d.x; cc.kmVec2Normalize(c, c) }; cc.kmRay2IntersectTriangle = function (a, b, c, d, e, f) { var g = new cc.kmVec2, h = new cc.kmVec2, k = new cc.kmVec2, m = 1E4, n = cc.KM_FALSE, q; cc.kmRay2IntersectLineSegment(a, b, c, g) && (q = new cc.kmVec2, n = cc.KM_TRUE, q = cc.kmVec2Length(cc.kmVec2Subtract(q, g, a.start)), q < m && (h.x = g.x, h.y = g.y, m = q, cc.calculate_line_normal(b, c, k))); cc.kmRay2IntersectLineSegment(a, c, d, g) && (q = new cc.kmVec2, n = cc.KM_TRUE, q = cc.kmVec2Length(cc.kmVec2Subtract(q, g, a.start)), q < m && (h.x = g.x, h.y = g.y, m = q, cc.calculate_line_normal(c, d, k))); cc.kmRay2IntersectLineSegment(a, d, b, g) && (q = new cc.kmVec2, n = cc.KM_TRUE, q = cc.kmVec2Length(cc.kmVec2Subtract(q, g, a.start)), q < m && (h.x = g.x, h.y = g.y, cc.calculate_line_normal(d, b, k))); n && (e.x = h.x, e.y = h.y, f && (f.x = k.x, f.y = k.y)); return n }; cc.kmRay2IntersectCircle = function (a, b, c, d) { cc.log("cc.kmRay2IntersectCircle() has not been implemented.") }; var Float32Array = Float32Array || Array; cc.kmMat3 = function () { this.mat = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0]) }; cc.kmMat3Fill = function (a, b) { for (var c = 0; 9 > c; c++) a.mat[c] = b; return a }; cc.kmMat3Adjugate = function (a, b) { a.mat[0] = b.mat[4] * b.mat[8] - b.mat[5] * b.mat[7]; a.mat[1] = b.mat[2] * b.mat[7] - b.mat[1] * b.mat[8]; a.mat[2] = b.mat[1] * b.mat[5] - b.mat[2] * b.mat[4]; a.mat[3] = b.mat[5] * b.mat[6] - b.mat[3] * b.mat[8]; a.mat[4] = b.mat[0] * b.mat[8] - b.mat[2] * b.mat[6]; a.mat[5] = b.mat[2] * b.mat[3] - b.mat[0] * b.mat[5]; a.mat[6] = b.mat[3] * b.mat[7] - b.mat[4] * b.mat[6]; a.mat[8] = b.mat[0] * b.mat[4] - b.mat[1] * b.mat[3]; return a }; cc.kmMat3Identity = function (a) { a.mat[1] = a.mat[2] = a.mat[3] = a.mat[5] = a.mat[6] = a.mat[7] = 0; a.mat[0] = a.mat[4] = a.mat[8] = 1; return a }; cc.kmMat3Inverse = function (a, b, c) { var d = new cc.kmMat3; if (0 === b) return null; b = 1 / b; cc.kmMat3Adjugate(d, c); cc.kmMat3ScalarMultiply(a, d, b); return a }; cc.kmMat3._identity = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); cc.kmMat3IsIdentity = function (a) { for (var b = 0; 9 > b; b++) if (cc.kmMat3._identity[b] !== a.mat[b]) return !1; return !0 }; cc.kmMat3Transpose = function (a, b) { var c, d; for (c = 0; 3 > c; ++c) for (d = 0; 3 > d; ++d) a.mat[3 * c + d] = b.mat[3 * d + c]; return a }; cc.kmMat3Determinant = function (a) { var b; b = a.mat[0] * a.mat[4] * a.mat[8] + a.mat[1] * a.mat[5] * a.mat[6] + a.mat[2] * a.mat[3] * a.mat[7]; return b -= a.mat[2] * a.mat[4] * a.mat[6] + a.mat[0] * a.mat[5] * a.mat[7] + a.mat[1] * a.mat[3] * a.mat[8] }; cc.kmMat3Multiply = function (a, b, c) { b = b.mat; c = c.mat; a.mat[0] = b[0] * c[0] + b[3] * c[1] + b[6] * c[2]; a.mat[1] = b[1] * c[0] + b[4] * c[1] + b[7] * c[2]; a.mat[2] = b[2] * c[0] + b[5] * c[1] + b[8] * c[2]; a.mat[3] = b[0] * c[3] + b[3] * c[4] + b[6] * c[5]; a.mat[4] = b[1] * c[3] + b[4] * c[4] + b[7] * c[5]; a.mat[5] = b[2] * c[3] + b[5] * c[4] + b[8] * c[5]; a.mat[6] = b[0] * c[6] + b[3] * c[7] + b[6] * c[8]; a.mat[7] = b[1] * c[6] + b[4] * c[7] + b[7] * c[8]; a.mat[8] = b[2] * c[6] + b[5] * c[7] + b[8] * c[8]; return a }; cc.kmMat3ScalarMultiply = function (a, b, c) { for (var d = 0; 9 > d; d++) a.mat[d] = b.mat[d] * c; return a }; cc.kmMat3RotationAxisAngle = function (a, b, c) { var d = Math.cos(c); c = Math.sin(c); a.mat[0] = d + b.x * b.x * (1 - d); a.mat[1] = b.z * c + b.y * b.x * (1 - d); a.mat[2] = -b.y * c + b.z * b.x * (1 - d); a.mat[3] = -b.z * c + b.x * b.y * (1 - d); a.mat[4] = d + b.y * b.y * (1 - d); a.mat[5] = b.x * c + b.z * b.y * (1 - d); a.mat[6] = b.y * c + b.x * b.z * (1 - d); a.mat[7] = -b.x * c + b.y * b.z * (1 - d); a.mat[8] = d + b.z * b.z * (1 - d); return a }; cc.kmMat3Assign = function (a, b) { if (a == b) return cc.log("cc.kmMat3Assign(): pOut equals pIn"), a; for (var c = 0; 9 > c; c++) a.mat[c] = b.mat[c]; return a }; cc.kmMat3AreEqual = function (a, b) { if (a == b) return !0; for (var c = 0; 9 > c; ++c) if (!(a.mat[c] + cc.kmEpsilon > b.mat[c] && a.mat[c] - cc.kmEpsilon < b.mat[c])) return !1; return !0 }; cc.kmMat3RotationX = function (a, b) { a.mat[0] = 1; a.mat[1] = 0; a.mat[2] = 0; a.mat[3] = 0; a.mat[4] = Math.cos(b); a.mat[5] = Math.sin(b); a.mat[6] = 0; a.mat[7] = -Math.sin(b); a.mat[8] = Math.cos(b); return a }; cc.kmMat3RotationY = function (a, b) { a.mat[0] = Math.cos(b); a.mat[1] = 0; a.mat[2] = -Math.sin(b); a.mat[3] = 0; a.mat[4] = 1; a.mat[5] = 0; a.mat[6] = Math.sin(b); a.mat[7] = 0; a.mat[8] = Math.cos(b); return a }; cc.kmMat3RotationZ = function (a, b) { a.mat[0] = Math.cos(b); a.mat[1] = -Math.sin(b); a.mat[2] = 0; a.mat[3] = Math.sin(b); a.mat[4] = Math.cos(b); a.mat[5] = 0; a.mat[6] = 0; a.mat[7] = 0; a.mat[8] = 1; return a }; cc.kmMat3Rotation = function (a, b) { a.mat[0] = Math.cos(b); a.mat[1] = Math.sin(b); a.mat[2] = 0; a.mat[3] = -Math.sin(b); a.mat[4] = Math.cos(b); a.mat[5] = 0; a.mat[6] = 0; a.mat[7] = 0; a.mat[8] = 1; return a }; cc.kmMat3Scaling = function (a, b, c) { cc.kmMat3Identity(a); a.mat[0] = b; a.mat[4] = c; return a }; cc.kmMat3Translation = function (a, b, c) { cc.kmMat3Identity(a); a.mat[6] = b; a.mat[7] = c; return a }; cc.kmMat3RotationQuaternion = function (a, b) { if (!b || !a) return null; a.mat[0] = 1 - 2 * (b.y * b.y + b.z * b.z); a.mat[1] = 2 * (b.x * b.y - b.w * b.z); a.mat[2] = 2 * (b.x * b.z + b.w * b.y); a.mat[3] = 2 * (b.x * b.y + b.w * b.z); a.mat[4] = 1 - 2 * (b.x * b.x + b.z * b.z); a.mat[5] = 2 * (b.y * b.z - b.w * b.x); a.mat[6] = 2 * (b.x * b.z - b.w * b.y); a.mat[7] = 2 * (b.y * b.z + b.w * b.x); a.mat[8] = 1 - 2 * (b.x * b.x + b.y * b.y); return a }; cc.kmMat3RotationToAxisAngle = function (a, b, c) { cc.kmQuaternionRotationMatrix(void 0, c); cc.kmQuaternionToAxisAngle(void 0, a, b); return a }; cc.kmMat4 = function () { this.mat = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }; cc.kmMat4Fill = function (a, b) { a.mat[0] = a.mat[1] = a.mat[2] = a.mat[3] = a.mat[4] = a.mat[5] = a.mat[6] = a.mat[7] = a.mat[8] = a.mat[9] = a.mat[10] = a.mat[11] = a.mat[12] = a.mat[13] = a.mat[14] = a.mat[15] = b }; cc.kmMat4Identity = function (a) { a.mat[1] = a.mat[2] = a.mat[3] = a.mat[4] = a.mat[6] = a.mat[7] = a.mat[8] = a.mat[9] = a.mat[11] = a.mat[12] = a.mat[13] = a.mat[14] = 0; a.mat[0] = a.mat[5] = a.mat[10] = a.mat[15] = 1; return a }; cc.kmMat4._get = function (a, b, c) { return a.mat[b + 4 * c] }; cc.kmMat4._set = function (a, b, c, d) { a.mat[b + 4 * c] = d }; cc.kmMat4._swap = function (a, b, c, d, e) { var f = cc.kmMat4._get(a, b, c); cc.kmMat4._set(a, b, c, cc.kmMat4._get(a, d, e)); cc.kmMat4._set(a, d, e, f) }; cc.kmMat4._gaussj = function (a, b) { var c, d = 0, e = 0, f, g, h, k = [0, 0, 0, 0], m = [0, 0, 0, 0], n = [0, 0, 0, 0]; for (c = 0; 4 > c; c++) { for (f = h = 0; 4 > f; f++) if (1 != n[f]) for (g = 0; 4 > g; g++) 0 == n[g] && Math.abs(cc.kmMat4._get(a, f, g)) >= h && (h = Math.abs(cc.kmMat4._get(a, f, g)), e = f, d = g); ++n[d]; if (e != d) { for (f = 0; 4 > f; f++) cc.kmMat4._swap(a, e, f, d, f); for (f = 0; 4 > f; f++) cc.kmMat4._swap(b, e, f, d, f) } m[c] = e; k[c] = d; if (0 == cc.kmMat4._get(a, d, d)) return cc.KM_FALSE; g = 1 / cc.kmMat4._get(a, d, d); cc.kmMat4._set(a, d, d, 1); for (f = 0; 4 > f; f++) cc.kmMat4._set(a, d, f, cc.kmMat4._get(a, d, f) * g); for (f = 0; 4 > f; f++) cc.kmMat4._set(b, d, f, cc.kmMat4._get(b, d, f) * g); for (g = 0; 4 > g; g++) if (g != d) { h = cc.kmMat4._get(a, g, d); cc.kmMat4._set(a, g, d, 0); for (f = 0; 4 > f; f++) cc.kmMat4._set(a, g, f, cc.kmMat4._get(a, g, f) - cc.kmMat4._get(a, d, f) * h); for (f = 0; 4 > f; f++) cc.kmMat4._set(b, g, f, cc.kmMat4._get(a, g, f) - cc.kmMat4._get(b, d, f) * h) } } for (f = 3; 0 <= f; f--) if (m[f] != k[f]) for (g = 0; 4 > g; g++) cc.kmMat4._swap(a, g, m[f], g, k[f]); return cc.KM_TRUE }; cc.kmMat4._identity = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]); cc.kmMat4Inverse = function (a, b) { var c = new cc.kmMat4, d = new cc.kmMat4; cc.kmMat4Assign(c, b); cc.kmMat4Identity(d); if (cc.kmMat4._gaussj(c, d) == cc.KM_FALSE) return null; cc.kmMat4Assign(a, c); return a }; cc.kmMat4IsIdentity = function (a) { for (var b = 0; 16 > b; b++) if (cc.kmMat4._identity[b] != a.mat[b]) return !1; return !0 }; cc.kmMat4Transpose = function (a, b) { var c, d, e = a.mat, f = b.mat; for (d = 0; 4 > d; ++d) for (c = 0; 4 > c; ++c) e[4 * d + c] = f[4 * c + d]; return a }; cc.kmMat4Multiply = function (a, b, c) { var d = a.mat, e = b.mat[0], f = b.mat[1], g = b.mat[2], h = b.mat[3], k = b.mat[4], m = b.mat[5], n = b.mat[6], q = b.mat[7], r = b.mat[8], s = b.mat[9], t = b.mat[10], u = b.mat[11], v = b.mat[12], w = b.mat[13], x = b.mat[14]; b = b.mat[15]; var y = c.mat[0], z = c.mat[1], A = c.mat[2], B = c.mat[3], C = c.mat[4], D = c.mat[5], E = c.mat[6], F = c.mat[7], G = c.mat[8], H = c.mat[9], I = c.mat[10], J = c.mat[11], K = c.mat[12], L = c.mat[13], M = c.mat[14]; c = c.mat[15]; d[0] = y * e + z * k + A * r + B * v; d[1] = y * f + z * m + A * s + B * w; d[2] = y * g + z * n + A * t + B * x; d[3] = y * h + z * q + A * u + B * b; d[4] = C * e + D * k + E * r + F * v; d[5] = C * f + D * m + E * s + F * w; d[6] = C * g + D * n + E * t + F * x; d[7] = C * h + D * q + E * u + F * b; d[8] = G * e + H * k + I * r + J * v; d[9] = G * f + H * m + I * s + J * w; d[10] = G * g + H * n + I * t + J * x; d[11] = G * h + H * q + I * u + J * b; d[12] = K * e + L * k + M * r + c * v; d[13] = K * f + L * m + M * s + c * w; d[14] = K * g + L * n + M * t + c * x; d[15] = K * h + L * q + M * u + c * b; return a }; cc.getMat4MultiplyValue = function (a, b) { var c = a.mat, d = b.mat, e = new Float32Array(16); e[0] = c[0] * d[0] + c[4] * d[1] + c[8] * d[2] + c[12] * d[3]; e[1] = c[1] * d[0] + c[5] * d[1] + c[9] * d[2] + c[13] * d[3]; e[2] = c[2] * d[0] + c[6] * d[1] + c[10] * d[2] + c[14] * d[3]; e[3] = c[3] * d[0] + c[7] * d[1] + c[11] * d[2] + c[15] * d[3]; e[4] = c[0] * d[4] + c[4] * d[5] + c[8] * d[6] + c[12] * d[7]; e[5] = c[1] * d[4] + c[5] * d[5] + c[9] * d[6] + c[13] * d[7]; e[6] = c[2] * d[4] + c[6] * d[5] + c[10] * d[6] + c[14] * d[7]; e[7] = c[3] * d[4] + c[7] * d[5] + c[11] * d[6] + c[15] * d[7]; e[8] = c[0] * d[8] + c[4] * d[9] + c[8] * d[10] + c[12] * d[11]; e[9] = c[1] * d[8] + c[5] * d[9] + c[9] * d[10] + c[13] * d[11]; e[10] = c[2] * d[8] + c[6] * d[9] + c[10] * d[10] + c[14] * d[11]; e[11] = c[3] * d[8] + c[7] * d[9] + c[11] * d[10] + c[15] * d[11]; e[12] = c[0] * d[12] + c[4] * d[13] + c[8] * d[14] + c[12] * d[15]; e[13] = c[1] * d[12] + c[5] * d[13] + c[9] * d[14] + c[13] * d[15]; e[14] = c[2] * d[12] + c[6] * d[13] + c[10] * d[14] + c[14] * d[15]; e[15] = c[3] * d[12] + c[7] * d[13] + c[11] * d[14] + c[15] * d[15]; return e }; cc.getMat4MultiplyWithMat4 = function (a, b, c) { a = a.mat; b = b.mat; var d = c.mat; d[0] = a[0] * b[0] + a[4] * b[1] + a[8] * b[2] + a[12] * b[3]; d[1] = a[1] * b[0] + a[5] * b[1] + a[9] * b[2] + a[13] * b[3]; d[2] = a[2] * b[0] + a[6] * b[1] + a[10] * b[2] + a[14] * b[3]; d[3] = a[3] * b[0] + a[7] * b[1] + a[11] * b[2] + a[15] * b[3]; d[4] = a[0] * b[4] + a[4] * b[5] + a[8] * b[6] + a[12] * b[7]; d[5] = a[1] * b[4] + a[5] * b[5] + a[9] * b[6] + a[13] * b[7]; d[6] = a[2] * b[4] + a[6] * b[5] + a[10] * b[6] + a[14] * b[7]; d[7] = a[3] * b[4] + a[7] * b[5] + a[11] * b[6] + a[15] * b[7]; d[8] = a[0] * b[8] + a[4] * b[9] + a[8] * b[10] + a[12] * b[11]; d[9] = a[1] * b[8] + a[5] * b[9] + a[9] * b[10] + a[13] * b[11]; d[10] = a[2] * b[8] + a[6] * b[9] + a[10] * b[10] + a[14] * b[11]; d[11] = a[3] * b[8] + a[7] * b[9] + a[11] * b[10] + a[15] * b[11]; d[12] = a[0] * b[12] + a[4] * b[13] + a[8] * b[14] + a[12] * b[15]; d[13] = a[1] * b[12] + a[5] * b[13] + a[9] * b[14] + a[13] * b[15]; d[14] = a[2] * b[12] + a[6] * b[13] + a[10] * b[14] + a[14] * b[15]; d[15] = a[3] * b[12] + a[7] * b[13] + a[11] * b[14] + a[15] * b[15]; return c.mat }; cc.kmMat4Assign = function (a, b) { if (a == b) return cc.log("cc.kmMat4Assign(): pOut equals pIn"), a; var c = a.mat, d = b.mat; c[0] = d[0]; c[1] = d[1]; c[2] = d[2]; c[3] = d[3]; c[4] = d[4]; c[5] = d[5]; c[6] = d[6]; c[7] = d[7]; c[8] = d[8]; c[9] = d[9]; c[10] = d[10]; c[11] = d[11]; c[12] = d[12]; c[13] = d[13]; c[14] = d[14]; c[15] = d[15]; return a }; cc.kmMat4AreEqual = function (a, b) { if (a == b) return cc.log("cc.kmMat4AreEqual(): pMat1 and pMat2 are same object."), !0; for (var c = 0; 16 > c; c++) if (!(a.mat[c] + cc.kmEpsilon > b.mat[c] && a.mat[c] - cc.kmEpsilon < b.mat[c])) return !1; return !0 }; cc.kmMat4RotationX = function (a, b) { a.mat[0] = 1; a.mat[1] = 0; a.mat[2] = 0; a.mat[3] = 0; a.mat[4] = 0; a.mat[5] = Math.cos(b); a.mat[6] = Math.sin(b); a.mat[7] = 0; a.mat[8] = 0; a.mat[9] = -Math.sin(b); a.mat[10] = Math.cos(b); a.mat[11] = 0; a.mat[12] = 0; a.mat[13] = 0; a.mat[14] = 0; a.mat[15] = 1; return a }; cc.kmMat4RotationY = function (a, b) { a.mat[0] = Math.cos(b); a.mat[1] = 0; a.mat[2] = -Math.sin(b); a.mat[3] = 0; a.mat[4] = 0; a.mat[5] = 1; a.mat[6] = 0; a.mat[7] = 0; a.mat[8] = Math.sin(b); a.mat[9] = 0; a.mat[10] = Math.cos(b); a.mat[11] = 0; a.mat[12] = 0; a.mat[13] = 0; a.mat[14] = 0; a.mat[15] = 1; return a }; cc.kmMat4RotationZ = function (a, b) { a.mat[0] = Math.cos(b); a.mat[1] = Math.sin(b); a.mat[2] = 0; a.mat[3] = 0; a.mat[4] = -Math.sin(b); a.mat[5] = Math.cos(b); a.mat[6] = 0; a.mat[7] = 0; a.mat[8] = 0; a.mat[9] = 0; a.mat[10] = 1; a.mat[11] = 0; a.mat[12] = 0; a.mat[13] = 0; a.mat[14] = 0; a.mat[15] = 1; return a }; cc.kmMat4RotationPitchYawRoll = function (a, b, c, d) { var e = Math.cos(b); b = Math.sin(b); var f = Math.cos(c); c = Math.sin(c); var g = Math.cos(d); d = Math.sin(d); var h = b * c, k = e * c; a.mat[0] = f * g; a.mat[4] = f * d; a.mat[8] = -c; a.mat[1] = h * g - e * d; a.mat[5] = h * d + e * g; a.mat[9] = b * f; a.mat[2] = k * g + b * d; a.mat[6] = k * d - b * g; a.mat[10] = e * f; a.mat[3] = a.mat[7] = a.mat[11] = 0; a.mat[15] = 1; return a }; cc.kmMat4RotationQuaternion = function (a, b) { a.mat[0] = 1 - 2 * (b.y * b.y + b.z * b.z); a.mat[1] = 2 * (b.x * b.y + b.z * b.w); a.mat[2] = 2 * (b.x * b.z - b.y * b.w); a.mat[3] = 0; a.mat[4] = 2 * (b.x * b.y - b.z * b.w); a.mat[5] = 1 - 2 * (b.x * b.x + b.z * b.z); a.mat[6] = 2 * (b.z * b.y + b.x * b.w); a.mat[7] = 0; a.mat[8] = 2 * (b.x * b.z + b.y * b.w); a.mat[9] = 2 * (b.y * b.z - b.x * b.w); a.mat[10] = 1 - 2 * (b.x * b.x + b.y * b.y); a.mat[11] = 0; a.mat[12] = 0; a.mat[13] = 0; a.mat[14] = 0; a.mat[15] = 1; return a }; cc.kmMat4RotationTranslation = function (a, b, c) { a.mat[0] = b.mat[0]; a.mat[1] = b.mat[1]; a.mat[2] = b.mat[2]; a.mat[3] = 0; a.mat[4] = b.mat[3]; a.mat[5] = b.mat[4]; a.mat[6] = b.mat[5]; a.mat[7] = 0; a.mat[8] = b.mat[6]; a.mat[9] = b.mat[7]; a.mat[10] = b.mat[8]; a.mat[11] = 0; a.mat[12] = c.x; a.mat[13] = c.y; a.mat[14] = c.z; a.mat[15] = 1; return a }; cc.kmMat4Scaling = function (a, b, c, d) { a.mat[0] = b; a.mat[5] = c; a.mat[10] = d; a.mat[15] = 1; a.mat[1] = a.mat[2] = a.mat[3] = a.mat[4] = a.mat[6] = a.mat[7] = a.mat[8] = a.mat[9] = a.mat[11] = a.mat[12] = a.mat[13] = a.mat[14] = 0; return a }; cc.kmMat4Translation = function (a, b, c, d) { a.mat[0] = a.mat[5] = a.mat[10] = a.mat[15] = 1; a.mat[1] = a.mat[2] = a.mat[3] = a.mat[4] = a.mat[6] = a.mat[7] = a.mat[8] = a.mat[9] = a.mat[11] = 0; a.mat[12] = b; a.mat[13] = c; a.mat[14] = d; return a }; cc.kmMat4GetUpVec3 = function (a, b) { a.x = b.mat[4]; a.y = b.mat[5]; a.z = b.mat[6]; cc.kmVec3Normalize(a, a); return a }; cc.kmMat4GetRightVec3 = function (a, b) { a.x = b.mat[0]; a.y = b.mat[1]; a.z = b.mat[2]; cc.kmVec3Normalize(a, a); return a }; cc.kmMat4GetForwardVec3 = function (a, b) { a.x = b.mat[8]; a.y = b.mat[9]; a.z = b.mat[10]; cc.kmVec3Normalize(a, a); return a }; cc.kmMat4PerspectiveProjection = function (a, b, c, d, e) { var f = cc.kmDegreesToRadians(b / 2); b = e - d; var g = Math.sin(f); if (0 == b || 0 == g || 0 == c) return null; f = Math.cos(f) / g; cc.kmMat4Identity(a); a.mat[0] = f / c; a.mat[5] = f; a.mat[10] = -(e + d) / b; a.mat[11] = -1; a.mat[14] = -2 * d * e / b; a.mat[15] = 0; return a }; cc.kmMat4OrthographicProjection = function (a, b, c, d, e, f, g) { cc.kmMat4Identity(a); a.mat[0] = 2 / (c - b); a.mat[5] = 2 / (e - d); a.mat[10] = -2 / (g - f); a.mat[12] = -((c + b) / (c - b)); a.mat[13] = -((e + d) / (e - d)); a.mat[14] = -((g + f) / (g - f)); return a }; cc.kmMat4LookAt = function (a, b, c, d) { var e = new cc.kmVec3, f = new cc.kmVec3, g = new cc.kmVec3, h = new cc.kmVec3, k = new cc.kmMat4; cc.kmVec3Subtract(e, c, b); cc.kmVec3Normalize(e, e); cc.kmVec3Assign(f, d); cc.kmVec3Normalize(f, f); cc.kmVec3Cross(g, e, f); cc.kmVec3Normalize(g, g); cc.kmVec3Cross(h, g, e); cc.kmVec3Normalize(g, g); cc.kmMat4Identity(a); a.mat[0] = g.x; a.mat[4] = g.y; a.mat[8] = g.z; a.mat[1] = h.x; a.mat[5] = h.y; a.mat[9] = h.z; a.mat[2] = -e.x; a.mat[6] = -e.y; a.mat[10] = -e.z; cc.kmMat4Translation(k, -b.x, -b.y, -b.z); cc.kmMat4Multiply(a, a, k); return a }; cc.kmMat4RotationAxisAngle = function (a, b, c) { var d = Math.cos(c); c = Math.sin(c); var e = new cc.kmVec3; cc.kmVec3Normalize(e, b); a.mat[0] = d + e.x * e.x * (1 - d); a.mat[1] = e.z * c + e.y * e.x * (1 - d); a.mat[2] = -e.y * c + e.z * e.x * (1 - d); a.mat[3] = 0; a.mat[4] = -e.z * c + e.x * e.y * (1 - d); a.mat[5] = d + e.y * e.y * (1 - d); a.mat[6] = e.x * c + e.z * e.y * (1 - d); a.mat[7] = 0; a.mat[8] = e.y * c + e.x * e.z * (1 - d); a.mat[9] = -e.x * c + e.y * e.z * (1 - d); a.mat[10] = d + e.z * e.z * (1 - d); a.mat[11] = 0; a.mat[12] = 0; a.mat[13] = 0; a.mat[14] = 0; a.mat[15] = 1; return a }; cc.kmMat4ExtractRotation = function (a, b) { a.mat[0] = b.mat[0]; a.mat[1] = b.mat[1]; a.mat[2] = b.mat[2]; a.mat[3] = b.mat[4]; a.mat[4] = b.mat[5]; a.mat[5] = b.mat[6]; a.mat[6] = b.mat[8]; a.mat[7] = b.mat[9]; a.mat[8] = b.mat[10]; return a }; cc.kmMat4ExtractPlane = function (a, b, c) { switch (c) { case cc.KM_PLANE_RIGHT: a.a = b.mat[3] - b.mat[0]; a.b = b.mat[7] - b.mat[4]; a.c = b.mat[11] - b.mat[8]; a.d = b.mat[15] - b.mat[12]; break; case cc.KM_PLANE_LEFT: a.a = b.mat[3] + b.mat[0]; a.b = b.mat[7] + b.mat[4]; a.c = b.mat[11] + b.mat[8]; a.d = b.mat[15] + b.mat[12]; break; case cc.KM_PLANE_BOTTOM: a.a = b.mat[3] + b.mat[1]; a.b = b.mat[7] + b.mat[5]; a.c = b.mat[11] + b.mat[9]; a.d = b.mat[15] + b.mat[13]; break; case cc.KM_PLANE_TOP: a.a = b.mat[3] - b.mat[1]; a.b = b.mat[7] - b.mat[5]; a.c = b.mat[11] - b.mat[9]; a.d = b.mat[15] - b.mat[13]; break; case cc.KM_PLANE_FAR: a.a = b.mat[3] - b.mat[2]; a.b = b.mat[7] - b.mat[6]; a.c = b.mat[11] - b.mat[10]; a.d = b.mat[15] - b.mat[14]; break; case cc.KM_PLANE_NEAR: a.a = b.mat[3] + b.mat[2]; a.b = b.mat[7] + b.mat[6]; a.c = b.mat[11] + b.mat[10]; a.d = b.mat[15] + b.mat[14]; break; default: cc.log("cc.kmMat4ExtractPlane(): Invalid plane index") } b = Math.sqrt(a.a * a.a + a.b * a.b + a.c * a.c); a.a /= b; a.b /= b; a.c /= b; a.d /= b; return a }; cc.kmMat4RotationToAxisAngle = function (a, b, c) { var d = new cc.kmQuaternion, e = new cc.kmMat3; cc.kmMat4ExtractRotation(e, c); cc.kmQuaternionRotationMatrix(d, e); cc.kmQuaternionToAxisAngle(d, a, b); return a }; cc.KM_PLANE_LEFT = 0; cc.KM_PLANE_RIGHT = 1; cc.KM_PLANE_BOTTOM = 2; cc.KM_PLANE_TOP = 3; cc.KM_PLANE_NEAR = 4; cc.KM_PLANE_FAR = 5; cc.kmPlane = function (a, b, c, d) { this.a = a || 0; this.b = b || 0; this.c = c || 0; this.d = d || 0 }; cc.POINT_INFRONT_OF_PLANE = 0; cc.POINT_BEHIND_PLANE = 1; cc.POINT_ON_PLANE = 2; cc.kmPlaneDot = function (a, b) { return a.a * b.x + a.b * b.y + a.c * b.z + a.d * b.w }; cc.kmPlaneDotCoord = function (a, b) { return a.a * b.x + a.b * b.y + a.c * b.z + a.d }; cc.kmPlaneDotNormal = function (a, b) { return a.a * b.x + a.b * b.y + a.c * b.z }; cc.kmPlaneFromPointNormal = function (a, b, c) { a.a = c.x; a.b = c.y; a.c = c.z; a.d = -cc.kmVec3Dot(c, b); return a }; cc.kmPlaneFromPoints = function (a, b, c, d) { var e = new cc.kmVec3, f = new cc.kmVec3, g = new cc.kmVec3; cc.kmVec3Subtract(f, c, b); cc.kmVec3Subtract(g, d, b); cc.kmVec3Cross(e, f, g); cc.kmVec3Normalize(e, e); a.a = e.x; a.b = e.y; a.c = e.z; a.d = cc.kmVec3Dot(cc.kmVec3Scale(e, e, -1), b); return a }; cc.kmPlaneIntersectLine = function (a, b, c, d) { throw "cc.kmPlaneIntersectLine() hasn't been implemented."; }; cc.kmPlaneNormalize = function (a, b) { var c = new cc.kmVec3; c.x = b.a; c.y = b.b; c.z = b.c; var d = 1 / cc.kmVec3Length(c); cc.kmVec3Normalize(c, c); a.a = c.x; a.b = c.y; a.c = c.z; a.d = b.d * d; return a }; cc.kmPlaneScale = function (a, b, c) { cc.log("cc.kmPlaneScale() has not been implemented.") }; cc.kmPlaneClassifyPoint = function (a, b) { var c = a.a * b.x + a.b * b.y + a.c * b.z + a.d; return 0.001 < c ? cc.POINT_INFRONT_OF_PLANE : -0.001 > c ? cc.POINT_BEHIND_PLANE : cc.POINT_ON_PLANE }; cc.kmQuaternion = function (a, b, c, d) { this.x = a || 0; this.y = b || 0; this.z = c || 0; this.w = d || 0 }; cc.kmQuaternionConjugate = function (a, b) { a.x = -b.x; a.y = -b.y; a.z = -b.z; a.w = b.w; return a }; cc.kmQuaternionDot = function (a, b) { return a.w * b.w + a.x * b.x + a.y * b.y + a.z * b.z }; cc.kmQuaternionExp = function (a, b) { return a }; cc.kmQuaternionIdentity = function (a) { a.x = 0; a.y = 0; a.z = 0; a.w = 1; return a }; cc.kmQuaternionInverse = function (a, b) { var c = cc.kmQuaternionLength(b), d = new cc.kmQuaternion; if (Math.abs(c) > cc.kmEpsilon) return a.x = 0, a.y = 0, a.z = 0, a.w = 0, a; cc.kmQuaternionScale(a, cc.kmQuaternionConjugate(d, b), 1 / c); return a }; cc.kmQuaternionIsIdentity = function (a) { return 0 == a.x && 0 == a.y && 0 == a.z && 1 == a.w }; cc.kmQuaternionLength = function (a) { return Math.sqrt(cc.kmQuaternionLengthSq(a)) }; cc.kmQuaternionLengthSq = function (a) { return a.x * a.x + a.y * a.y + a.z * a.z + a.w * a.w }; cc.kmQuaternionLn = function (a, b) { return a }; cc.kmQuaternionMultiply = function (a, b, c) { a.w = b.w * c.w - b.x * c.x - b.y * c.y - b.z * c.z; a.x = b.w * c.x + b.x * c.w + b.y * c.z - b.z * c.y; a.y = b.w * c.y + b.y * c.w + b.z * c.x - b.x * c.z; a.z = b.w * c.z + b.z * c.w + b.x * c.y - b.y * c.x; return a }; cc.kmQuaternionNormalize = function (a, b) { var c = cc.kmQuaternionLength(b); if (Math.abs(c) <= cc.kmEpsilon) throw "cc.kmQuaternionNormalize(): pIn is an invalid value"; cc.kmQuaternionScale(a, b, 1 / c); return a }; cc.kmQuaternionRotationAxis = function (a, b, c) { c *= 0.5; var d = Math.sin(c); a.w = Math.cos(c); a.x = b.x * d; a.y = b.y * d; a.z = b.z * d; return a }; cc.kmQuaternionRotationMatrix = function (a, b) { var c, d, e, f; c = []; d = f = 0; if (!b) return null; c[0] = b.mat[0]; c[1] = b.mat[3]; c[2] = b.mat[6]; c[4] = b.mat[1]; c[5] = b.mat[4]; c[6] = b.mat[7]; c[8] = b.mat[2]; c[9] = b.mat[5]; c[10] = b.mat[8]; c[15] = 1; var g = c[0]; d = g[0] + g[5] + g[10] + 1; d > cc.kmEpsilon ? (f = 2 * Math.sqrt(d), c = (g[9] - g[6]) / f, d = (g[2] - g[8]) / f, e = (g[4] - g[1]) / f, f *= 0.25) : g[0] > g[5] && g[0] > g[10] ? (f = 2 * Math.sqrt(1 + g[0] - g[5] - g[10]), c = 0.25 * f, d = (g[4] + g[1]) / f, e = (g[2] + g[8]) / f, f = (g[9] - g[6]) / f) : g[5] > g[10] ? (f = 2 * Math.sqrt(1 + g[5] - g[0] - g[10]), c = (g[4] + g[1]) / f, d = 0.25 * f, e = (g[9] + g[6]) / f, f = (g[2] - g[8]) / f) : (f = 2 * Math.sqrt(1 + g[10] - g[0] - g[5]), c = (g[2] + g[8]) / f, d = (g[9] + g[6]) / f, e = 0.25 * f, f = (g[4] - g[1]) / f); a.x = c; a.y = d; a.z = e; a.w = f; return a }; cc.kmQuaternionRotationYawPitchRoll = function (a, b, c, d) { var e, f, g, h, k; e = cc.kmDegreesToRadians(c) / 2; f = cc.kmDegreesToRadians(b) / 2; g = cc.kmDegreesToRadians(d) / 2; d = Math.cos(e); b = Math.cos(f); c = Math.cos(g); e = Math.sin(e); f = Math.sin(f); g = Math.sin(g); h = b * c; k = f * g; a.w = d * h + e * k; a.x = e * h - d * k; a.y = d * f * c + e * b * g; a.z = d * b * g - e * f * c; cc.kmQuaternionNormalize(a, a); return a }; cc.kmQuaternionSlerp = function (a, b, c, d) { if (b.x == c.x && b.y == c.y && b.z == c.z && b.w == c.w) return a.x = b.x, a.y = b.y, a.z = b.z, a.w = b.w, a; var e = cc.kmQuaternionDot(b, c), f = Math.acos(e), g = Math.sqrt(1 - cc.kmSQR(e)), e = Math.sin(d * f) / g; d = Math.sin((1 - d) * f) / g; f = new cc.kmQuaternion; g = new cc.kmQuaternion; cc.kmQuaternionScale(f, b, d); cc.kmQuaternionScale(g, c, e); cc.kmQuaternionAdd(a, f, g); return a }; cc.kmQuaternionToAxisAngle = function (a, b, c) { Math.acos(a.w); c = Math.sqrt(cc.kmSQR(a.x) + cc.kmSQR(a.y) + cc.kmSQR(a.z)); c > -cc.kmEpsilon && c < cc.kmEpsilon || c < 2 * cc.kmPI + cc.kmEpsilon && c > 2 * cc.kmPI - cc.kmEpsilon ? (b.x = 0, b.y = 0, b.z = 1) : (b.x = a.x / c, b.y = a.y / c, b.z = a.z / c, cc.kmVec3Normalize(b, b)) }; cc.kmQuaternionScale = function (a, b, c) { a.x = b.x * c; a.y = b.y * c; a.z = b.z * c; a.w = b.w * c; return a }; cc.kmQuaternionAssign = function (a, b) { a.x = b.x; a.y = b.y; a.z = b.z; a.w = b.w; return a }; cc.kmQuaternionAdd = function (a, b, c) { a.x = b.x + c.x; a.y = b.y + c.y; a.z = b.z + c.z; a.w = b.w + c.w; return a }; cc.kmQuaternionRotationBetweenVec3 = function (a, b, c, d) { var e = new cc.kmVec3, f = new cc.kmVec3; cc.kmVec3Assign(e, b); cc.kmVec3Assign(f, c); cc.kmVec3Normalize(e, e); cc.kmVec3Normalize(f, f); c = cc.kmVec3Dot(e, f); if (1 <= c) return cc.kmQuaternionIdentity(a), a; -0.999999 > c ? Math.abs(cc.kmVec3LengthSq(d)) < cc.kmEpsilon ? cc.kmQuaternionRotationAxis(a, d, cc.kmPI) : (e = new cc.kmVec3, f = new cc.kmVec3, f.x = 1, f.y = 0, f.z = 0, cc.kmVec3Cross(e, f, b), Math.abs(cc.kmVec3LengthSq(e)) < cc.kmEpsilon && (f = new cc.kmVec3, f.x = 0, f.y = 1, f.z = 0, cc.kmVec3Cross(e, f, b)), cc.kmVec3Normalize(e, e), cc.kmQuaternionRotationAxis(a, e, cc.kmPI)) : (b = Math.sqrt(2 * (1 + c)), d = 1 / b, c = new cc.kmVec3, cc.kmVec3Cross(c, e, f), a.x = c.x * d, a.y = c.y * d, a.z = c.z * d, a.w = 0.5 * b, cc.kmQuaternionNormalize(a, a)); return a }; cc.kmQuaternionMultiplyVec3 = function (a, b, c) { var d = new cc.kmVec3, e = new cc.kmVec3, f = new cc.kmVec3; f.x = b.x; f.y = b.y; f.z = b.z; cc.kmVec3Cross(d, f, c); cc.kmVec3Cross(e, f, d); cc.kmVec3Scale(d, d, 2 * b.w); cc.kmVec3Scale(e, e, 2); cc.kmVec3Add(a, c, d); cc.kmVec3Add(a, a, e); return a }; cc.kmAABB = function (a, b) { this.min = a || new cc.kmVec3; this.max = b || new cc.kmVec3 }; cc.kmAABBContainsPoint = function (a, b) { return a.x >= b.min.x && a.x <= b.max.x && a.y >= b.min.y && a.y <= b.max.y && a.z >= b.min.z && a.z <= b.max.z ? cc.KM_TRUE : cc.KM_FALSE }; cc.kmAABBAssign = function (a, b) { cc.kmVec3Assign(a.min, b.min); cc.kmVec3Assign(a.max, b.max); return a }; cc.kmAABBScale = function (a, b, c) { cc.log("cc.kmAABBScale hasn't been supported.") }; cc.km_mat4_stack = function (a, b, c, d) { this.top = c; this.stack = d }; cc.km_mat4_stack.INITIAL_SIZE = 30; cc.km_mat4_stack_initialize = function (a) { a.stack = []; a.top = null }; cc.km_mat4_stack_push = function (a, b) { a.stack.push(a.top); a.top = new cc.kmMat4; cc.kmMat4Assign(a.top, b) }; cc.km_mat4_stack_pop = function (a, b) { a.top = a.stack.pop() }; cc.km_mat4_stack_release = function (a) { a.stack = null; a.top = null }; cc.KM_GL_MODELVIEW = 5888; cc.KM_GL_PROJECTION = 5889; cc.KM_GL_TEXTURE = 5890; cc.modelview_matrix_stack = new cc.km_mat4_stack; cc.projection_matrix_stack = new cc.km_mat4_stack; cc.texture_matrix_stack = new cc.km_mat4_stack; cc.current_stack = null; cc.initialized = !1; cc.lazyInitialize = function () { if (!cc.initialized) { var a = new cc.kmMat4; cc.km_mat4_stack_initialize(cc.modelview_matrix_stack); cc.km_mat4_stack_initialize(cc.projection_matrix_stack); cc.km_mat4_stack_initialize(cc.texture_matrix_stack); cc.current_stack = cc.modelview_matrix_stack; cc.initialized = !0; cc.kmMat4Identity(a); cc.km_mat4_stack_push(cc.modelview_matrix_stack, a); cc.km_mat4_stack_push(cc.projection_matrix_stack, a); cc.km_mat4_stack_push(cc.texture_matrix_stack, a) } }; cc.lazyInitialize(); cc.kmGLFreeAll = function () { cc.km_mat4_stack_release(cc.modelview_matrix_stack); cc.km_mat4_stack_release(cc.projection_matrix_stack); cc.km_mat4_stack_release(cc.texture_matrix_stack); cc.initialized = !1; cc.current_stack = null }; cc.kmGLPushMatrix = function () { cc.km_mat4_stack_push(cc.current_stack, cc.current_stack.top) }; cc.kmGLPushMatrixWitMat4 = function (a) { cc.current_stack.stack.push(cc.current_stack.top); cc.kmMat4Assign(a, cc.current_stack.top); cc.current_stack.top = a }; cc.kmGLPopMatrix = function () { cc.current_stack.top = cc.current_stack.stack.pop() }; cc.kmGLMatrixMode = function (a) { switch (a) { case cc.KM_GL_MODELVIEW: cc.current_stack = cc.modelview_matrix_stack; break; case cc.KM_GL_PROJECTION: cc.current_stack = cc.projection_matrix_stack; break; case cc.KM_GL_TEXTURE: cc.current_stack = cc.texture_matrix_stack; break; default: throw "Invalid matrix mode specified"; } }; cc.kmGLLoadIdentity = function () { cc.kmMat4Identity(cc.current_stack.top) }; cc.kmGLLoadMatrix = function (a) { cc.kmMat4Assign(cc.current_stack.top, a) }; cc.kmGLMultMatrix = function (a) { cc.kmMat4Multiply(cc.current_stack.top, cc.current_stack.top, a) }; cc.kmGLTranslatef = function (a, b, c) { var d = new cc.kmMat4; cc.kmMat4Translation(d, a, b, c); cc.kmMat4Multiply(cc.current_stack.top, cc.current_stack.top, d) }; cc.kmGLRotatef = function (a, b, c, d) { b = new cc.kmVec3(b, c, d); c = new cc.kmMat4; cc.kmMat4RotationAxisAngle(c, b, cc.kmDegreesToRadians(a)); cc.kmMat4Multiply(cc.current_stack.top, cc.current_stack.top, c) }; cc.kmGLScalef = function (a, b, c) { var d = new cc.kmMat4; cc.kmMat4Scaling(d, a, b, c); cc.kmMat4Multiply(cc.current_stack.top, cc.current_stack.top, d) }; cc.kmGLGetMatrix = function (a, b) { switch (a) { case cc.KM_GL_MODELVIEW: cc.kmMat4Assign(b, cc.modelview_matrix_stack.top); break; case cc.KM_GL_PROJECTION: cc.kmMat4Assign(b, cc.projection_matrix_stack.top); break; case cc.KM_GL_TEXTURE: cc.kmMat4Assign(b, cc.texture_matrix_stack.top); break; default: throw "Invalid matrix mode specified"; } }; cc.SHADER_POSITION_UCOLOR_FRAG = "precision lowp float;\nvarying vec4 v_fragmentColor;\nvoid main() \n{ \n gl_FragColor \x3d v_fragmentColor; \n}\n"; cc.SHADER_POSITION_UCOLOR_VERT = "attribute vec4 a_position;\nuniform vec4 u_color;\nuniform float u_pointSize;\nvarying lowp vec4 v_fragmentColor; \nvoid main(void) \n{\n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n gl_PointSize \x3d u_pointSize; \n v_fragmentColor \x3d u_color; \n}"; cc.SHADER_POSITION_COLOR_FRAG = "precision lowp float; \nvarying vec4 v_fragmentColor; \nvoid main() \n{ \n gl_FragColor \x3d v_fragmentColor; \n} "; cc.SHADER_POSITION_COLOR_VERT = "attribute vec4 a_position;\nattribute vec4 a_color;\nvarying lowp vec4 v_fragmentColor;\nvoid main()\n{\n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n v_fragmentColor \x3d a_color; \n}"; cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_FRAG = "// #extension GL_OES_standard_derivatives : enable\nvarying mediump vec4 v_color;\nvarying mediump vec2 v_texcoord;\nvoid main()\t\n{ \n// #if defined GL_OES_standard_derivatives\t\n// gl_FragColor \x3d v_color*smoothstep(0.0, length(fwidth(v_texcoord)), 1.0 - length(v_texcoord)); \n// #else\t\ngl_FragColor \x3d v_color * step(0.0, 1.0 - length(v_texcoord)); \n// #endif \n}"; cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_VERT = "attribute mediump vec4 a_position; \nattribute mediump vec2 a_texcoord; \nattribute mediump vec4 a_color;\t\nvarying mediump vec4 v_color; \nvarying mediump vec2 v_texcoord;\t\nvoid main() \n{ \n v_color \x3d a_color;//vec4(a_color.rgb * a_color.a, a_color.a); \n v_texcoord \x3d a_texcoord; \n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n}"; cc.SHADER_POSITION_TEXTURE_FRAG = "precision lowp float; \nvarying vec2 v_texCoord; \nuniform sampler2D CC_Texture0; \nvoid main() \n{ \n gl_FragColor \x3d texture2D(CC_Texture0, v_texCoord); \n}"; cc.SHADER_POSITION_TEXTURE_VERT = "attribute vec4 a_position; \nattribute vec2 a_texCoord; \nvarying mediump vec2 v_texCoord; \nvoid main() \n{ \n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n v_texCoord \x3d a_texCoord; \n}"; cc.SHADER_POSITION_TEXTURE_UCOLOR_FRAG = "precision lowp float; \nuniform vec4 u_color; \nvarying vec2 v_texCoord; \nuniform sampler2D CC_Texture0; \nvoid main() \n{ \n gl_FragColor \x3d texture2D(CC_Texture0, v_texCoord) * u_color; \n}"; cc.SHADER_POSITION_TEXTURE_UCOLOR_VERT = "attribute vec4 a_position;\nattribute vec2 a_texCoord; \nvarying mediump vec2 v_texCoord; \nvoid main() \n{ \n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n v_texCoord \x3d a_texCoord; \n}"; cc.SHADER_POSITION_TEXTURE_A8COLOR_FRAG = "precision lowp float; \nvarying vec4 v_fragmentColor; \nvarying vec2 v_texCoord; \nuniform sampler2D CC_Texture0; \nvoid main() \n{ \n gl_FragColor \x3d vec4( v_fragmentColor.rgb, \n v_fragmentColor.a * texture2D(CC_Texture0, v_texCoord).a \n ); \n}"; cc.SHADER_POSITION_TEXTURE_A8COLOR_VERT = "attribute vec4 a_position; \nattribute vec2 a_texCoord; \nattribute vec4 a_color; \nvarying lowp vec4 v_fragmentColor; \nvarying mediump vec2 v_texCoord; \nvoid main() \n{ \n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n v_fragmentColor \x3d a_color; \n v_texCoord \x3d a_texCoord; \n}"; cc.SHADER_POSITION_TEXTURE_COLOR_FRAG = "precision lowp float;\nvarying vec4 v_fragmentColor; \nvarying vec2 v_texCoord; \nuniform sampler2D CC_Texture0; \nvoid main() \n{ \n gl_FragColor \x3d v_fragmentColor * texture2D(CC_Texture0, v_texCoord); \n}"; cc.SHADER_POSITION_TEXTURE_COLOR_VERT = "attribute vec4 a_position; \nattribute vec2 a_texCoord; \nattribute vec4 a_color; \nvarying lowp vec4 v_fragmentColor; \nvarying mediump vec2 v_texCoord; \nvoid main() \n{ \n gl_Position \x3d (CC_PMatrix * CC_MVMatrix) * a_position; \n v_fragmentColor \x3d a_color; \n v_texCoord \x3d a_texCoord; \n}"; cc.SHADER_POSITION_TEXTURE_COLOR_ALPHATEST_FRAG = "precision lowp float; \nvarying vec4 v_fragmentColor; \nvarying vec2 v_texCoord; \nuniform sampler2D CC_Texture0; \nuniform float CC_alpha_value; \nvoid main() \n{ \n vec4 texColor \x3d texture2D(CC_Texture0, v_texCoord); \n if ( texColor.a \x3c\x3d CC_alpha_value ) \n discard; \n gl_FragColor \x3d texColor * v_fragmentColor; \n}"; cc.SHADEREX_SWITCHMASK_FRAG = "precision lowp float; \nvarying vec4 v_fragmentColor; \nvarying vec2 v_texCoord; \nuniform sampler2D u_texture; \nuniform sampler2D u_mask; \nvoid main() \n{ \n vec4 texColor \x3d texture2D(u_texture, v_texCoord); \n vec4 maskColor \x3d texture2D(u_mask, v_texCoord); \n vec4 finalColor \x3d vec4(texColor.r, texColor.g, texColor.b, maskColor.a * texColor.a); \n gl_FragColor \x3d v_fragmentColor * finalColor; \n}"; cc.shaderCache = { TYPE_POSITION_TEXTURECOLOR: 0, TYPE_POSITION_TEXTURECOLOR_ALPHATEST: 1, TYPE_POSITION_COLOR: 2, TYPE_POSITION_TEXTURE: 3, TYPE_POSITION_TEXTURE_UCOLOR: 4, TYPE_POSITION_TEXTURE_A8COLOR: 5, TYPE_POSITION_UCOLOR: 6, TYPE_POSITION_LENGTH_TEXTURECOLOR: 7, TYPE_MAX: 8, _programs: {}, _init: function () { this.loadDefaultShaders(); return !0 }, _loadDefaultShader: function (a, b) { switch (b) { case this.TYPE_POSITION_TEXTURECOLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); break; case this.TYPE_POSITION_TEXTURECOLOR_ALPHATEST: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_ALPHATEST_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); break; case this.TYPE_POSITION_COLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_COLOR_VERT, cc.SHADER_POSITION_COLOR_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR); break; case this.TYPE_POSITION_TEXTURE: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_VERT, cc.SHADER_POSITION_TEXTURE_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); break; case this.TYPE_POSITION_TEXTURE_UCOLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_UCOLOR_VERT, cc.SHADER_POSITION_TEXTURE_UCOLOR_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); break; case this.TYPE_POSITION_TEXTURE_A8COLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_A8COLOR_VERT, cc.SHADER_POSITION_TEXTURE_A8COLOR_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); break; case this.TYPE_POSITION_UCOLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_UCOLOR_VERT, cc.SHADER_POSITION_UCOLOR_FRAG); a.addAttribute("aVertex", cc.VERTEX_ATTRIB_POSITION); break; case this.TYPE_POSITION_LENGTH_TEXTURECOLOR: a.initWithVertexShaderByteArray(cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_VERT, cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_FRAG); a.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION); a.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS); a.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR); break; default: cc.log("cocos2d: cc.shaderCache._loadDefaultShader, error shader type"); return } a.link(); a.updateUniforms() }, loadDefaultShaders: function () { var a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURECOLOR); this._programs[cc.SHADER_POSITION_TEXTURECOLOR] = a; this._programs.ShaderPositionTextureColor = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURECOLOR_ALPHATEST); this._programs[cc.SHADER_POSITION_TEXTURECOLORALPHATEST] = a; this._programs.ShaderPositionTextureColorAlphaTest = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_COLOR); this._programs[cc.SHADER_POSITION_COLOR] = a; this._programs.ShaderPositionColor = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE); this._programs[cc.SHADER_POSITION_TEXTURE] = a; this._programs.ShaderPositionTexture = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE_UCOLOR); this._programs[cc.SHADER_POSITION_TEXTURE_UCOLOR] = a; this._programs.ShaderPositionTextureUColor = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE_A8COLOR); this._programs[cc.SHADER_POSITION_TEXTUREA8COLOR] = a; this._programs.ShaderPositionTextureA8Color = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_UCOLOR); this._programs[cc.SHADER_POSITION_UCOLOR] = a; this._programs.ShaderPositionUColor = a; a = new cc.GLProgram; this._loadDefaultShader(a, this.TYPE_POSITION_LENGTH_TEXTURECOLOR); this._programs[cc.SHADER_POSITION_LENGTHTEXTURECOLOR] = a; this._programs.ShaderPositionLengthTextureColor = a }, reloadDefaultShaders: function () { var a = this.programForKey(cc.SHADER_POSITION_TEXTURECOLOR); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURECOLOR); a = this.programForKey(cc.SHADER_POSITION_TEXTURECOLORALPHATEST); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURECOLOR_ALPHATEST); a = this.programForKey(cc.SHADER_POSITION_COLOR); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_COLOR); a = this.programForKey(cc.SHADER_POSITION_TEXTURE); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE); a = this.programForKey(cc.SHADER_POSITION_TEXTURE_UCOLOR); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE_UCOLOR); a = this.programForKey(cc.SHADER_POSITION_TEXTUREA8COLOR); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_TEXTURE_A8COLOR); a = this.programForKey(cc.SHADER_POSITION_UCOLOR); a.reset(); this._loadDefaultShader(a, this.TYPE_POSITION_UCOLOR) }, programForKey: function (a) { return this._programs[a] }, getProgram: function (a) { return this._programs[a] }, addProgram: function (a, b) { this._programs[b] = a } }; cc.HashUniformEntry = function (a, b, c) { this.value = a; this.location = b; this.hh = c || {} }; cc.GLProgram = cc.Class.extend({ _glContext: null, _programObj: null, _vertShader: null, _fragShader: null, _uniforms: null, _hashForUniforms: null, _usesTime: !1, _updateUniformLocation: function (a, b, c) { if (null == a) return !1; c = !0; for (var d = null, e = 0; e < this._hashForUniforms.length; e++) this._hashForUniforms[e].location == a && (d = this._hashForUniforms[e]); d ? d.value == b ? c = !1 : d.value = b : (d = new cc.HashUniformEntry, d.location = a, d.value = b, this._hashForUniforms.push(d)); return c }, _description: function () { return "\x3cCCGLProgram \x3d " + this.toString() + " | Program \x3d " + this._programObj.toString() + ", VertexShader \x3d " + this._vertShader.toString() + ", FragmentShader \x3d " + this._fragShader.toString() + "\x3e" }, _compileShader: function (a, b, c) { if (!c || !a) return !1; this._glContext.shaderSource(a, "precision highp float; \nuniform mat4 CC_PMatrix; \nuniform mat4 CC_MVMatrix; \nuniform mat4 CC_MVPMatrix; \nuniform vec4 CC_Time; \nuniform vec4 CC_SinTime; \nuniform vec4 CC_CosTime; \nuniform vec4 CC_Random01; \n//CC INCLUDES END \n" + c); this._glContext.compileShader(a); c = this._glContext.getShaderParameter(a, this._glContext.COMPILE_STATUS); c || (cc.log("cocos2d: ERROR: Failed to compile shader:\n" + this._glContext.getShaderSource(a)), b == this._glContext.VERTEX_SHADER ? cc.log("cocos2d: \n" + this.vertexShaderLog()) : cc.log("cocos2d: \n" + this.fragmentShaderLog())); return 1 == c }, ctor: function (a, b, c) { this._uniforms = []; this._hashForUniforms = []; this._glContext = c || cc._renderContext; a && b && this.init(a, b) }, destroyProgram: function () { this._hashForUniforms = this._uniforms = this._fragShader = this._vertShader = null; this._glContext.deleteProgram(this._programObj) }, initWithVertexShaderByteArray: function (a, b) { var c = this._glContext; this._programObj = c.createProgram(); this._fragShader = this._vertShader = null; a && (this._vertShader = c.createShader(c.VERTEX_SHADER), this._compileShader(this._vertShader, c.VERTEX_SHADER, a) || cc.log("cocos2d: ERROR: Failed to compile vertex shader")); b && (this._fragShader = c.createShader(c.FRAGMENT_SHADER), this._compileShader(this._fragShader, c.FRAGMENT_SHADER, b) || cc.log("cocos2d: ERROR: Failed to compile fragment shader")); this._vertShader && c.attachShader(this._programObj, this._vertShader); cc.checkGLErrorDebug(); this._fragShader && c.attachShader(this._programObj, this._fragShader); this._hashForUniforms.length = 0; cc.checkGLErrorDebug(); return !0 }, initWithString: function (a, b) { return this.initWithVertexShaderByteArray(a, b) }, initWithVertexShaderFilename: function (a, b) { var c = cc.loader.getRes(a); if (!c) throw "Please load the resource firset : " + a; var d = cc.loader.getRes(b); if (!d) throw "Please load the resource firset : " + b; return this.initWithVertexShaderByteArray(c, d) }, init: function (a, b) { return this.initWithVertexShaderFilename(a, b) }, addAttribute: function (a, b) { this._glContext.bindAttribLocation(this._programObj, b, a) }, link: function () { if (!this._programObj) return cc.log("cc.GLProgram.link(): Cannot link invalid program"), !1; this._glContext.linkProgram(this._programObj); this._vertShader && this._glContext.deleteShader(this._vertShader); this._fragShader && this._glContext.deleteShader(this._fragShader); this._fragShader = this._vertShader = null; return cc.game.config[cc.game.CONFIG_KEY.debugMode] && !this._glContext.getProgramParameter(this._programObj, this._glContext.LINK_STATUS) ? (cc.log("cocos2d: ERROR: Failed to link program: " + this._glContext.getProgramInfoLog(this._programObj)), cc.glDeleteProgram(this._programObj), this._programObj = null, !1) : !0 }, use: function () { cc.glUseProgram(this._programObj) }, updateUniforms: function () { this._uniforms[cc.UNIFORM_PMATRIX] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_PMATRIX_S); this._uniforms[cc.UNIFORM_MVMATRIX] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_MVMATRIX_S); this._uniforms[cc.UNIFORM_MVPMATRIX] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_MVPMATRIX_S); this._uniforms[cc.UNIFORM_TIME] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_TIME_S); this._uniforms[cc.UNIFORM_SINTIME] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_SINTIME_S); this._uniforms[cc.UNIFORM_COSTIME] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_COSTIME_S); this._usesTime = null != this._uniforms[cc.UNIFORM_TIME] || null != this._uniforms[cc.UNIFORM_SINTIME] || null != this._uniforms[cc.UNIFORM_COSTIME]; this._uniforms[cc.UNIFORM_RANDOM01] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_RANDOM01_S); this._uniforms[cc.UNIFORM_SAMPLER] = this._glContext.getUniformLocation(this._programObj, cc.UNIFORM_SAMPLER_S); this.use(); this.setUniformLocationWith1i(this._uniforms[cc.UNIFORM_SAMPLER], 0) }, getUniformLocationForName: function (a) { if (!a) throw "cc.GLProgram.getUniformLocationForName(): uniform name should be non-null"; if (!this._programObj) throw "cc.GLProgram.getUniformLocationForName(): Invalid operation. Cannot get uniform location when program is not initialized"; return this._glContext.getUniformLocation(this._programObj, a) }, getUniformMVPMatrix: function () { return this._uniforms[cc.UNIFORM_MVPMATRIX] }, getUniformSampler: function () { return this._uniforms[cc.UNIFORM_SAMPLER] }, setUniformLocationWith1i: function (a, b) { this._updateUniformLocation(a, b) && this._glContext.uniform1i(a, b) }, setUniformLocationWith2i: function (a, b, c) { this._updateUniformLocation(a, [b, c]) && this._glContext.uniform2i(a, b, c) }, setUniformLocationWith3i: function (a, b, c, d) { this._updateUniformLocation(a, [b, c, d]) && this._glContext.uniform3i(a, b, c, d) }, setUniformLocationWith4i: function (a, b, c, d, e) { this._updateUniformLocation(a, [b, c, d, e]) && this._glContext.uniform4i(a, b, c, d, e) }, setUniformLocationWith2iv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform2iv(a, b) }, setUniformLocationWith3iv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform3iv(a, b) }, setUniformLocationWith4iv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform4iv(a, b) }, setUniformLocationI32: function (a, b) { this.setUniformLocationWith1i(a, b) }, setUniformLocationWith1f: function (a, b) { this._updateUniformLocation(a, b) && this._glContext.uniform1f(a, b) }, setUniformLocationWith2f: function (a, b, c) { this._updateUniformLocation(a, [b, c]) && this._glContext.uniform2f(a, b, c) }, setUniformLocationWith3f: function (a, b, c, d) { this._updateUniformLocation(a, [b, c, d]) && this._glContext.uniform3f(a, b, c, d) }, setUniformLocationWith4f: function (a, b, c, d, e) { this._updateUniformLocation(a, [b, c, d, e]) && this._glContext.uniform4f(a, b, c, d, e) }, setUniformLocationWith2fv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform2fv(a, b) }, setUniformLocationWith3fv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform3fv(a, b) }, setUniformLocationWith4fv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniform4fv(a, b) }, setUniformLocationWithMatrix4fv: function (a, b, c) { this._updateUniformLocation(a, b) && this._glContext.uniformMatrix4fv(a, !1, b) }, setUniformLocationF32: function () { if (!(2 > arguments.length)) switch (arguments.length) { case 2: this.setUniformLocationWith1f(arguments[0], arguments[1]); break; case 3: this.setUniformLocationWith2f(arguments[0], arguments[1], arguments[2]); break; case 4: this.setUniformLocationWith3f(arguments[0], arguments[1], arguments[2], arguments[3]); break; case 5: this.setUniformLocationWith4f(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]) } }, setUniformsForBuiltins: function () { var a = new cc.kmMat4, b = new cc.kmMat4, c = new cc.kmMat4; cc.kmGLGetMatrix(cc.KM_GL_PROJECTION, a); cc.kmGLGetMatrix(cc.KM_GL_MODELVIEW, b); cc.kmMat4Multiply(c, a, b); this.setUniformLocationWithMatrix4fv(this._uniforms[cc.UNIFORM_PMATRIX], a.mat, 1); this.setUniformLocationWithMatrix4fv(this._uniforms[cc.UNIFORM_MVMATRIX], b.mat, 1); this.setUniformLocationWithMatrix4fv(this._uniforms[cc.UNIFORM_MVPMATRIX], c.mat, 1); this._usesTime && (a = cc.director, a = a.getTotalFrames() * a.getAnimationInterval(), this.setUniformLocationWith4f(this._uniforms[cc.UNIFORM_TIME], a / 10, a, 2 * a, 4 * a), this.setUniformLocationWith4f(this._uniforms[cc.UNIFORM_SINTIME], a / 8, a / 4, a / 2, Math.sin(a)), this.setUniformLocationWith4f(this._uniforms[cc.UNIFORM_COSTIME], a / 8, a / 4, a / 2, Math.cos(a))); -1 != this._uniforms[cc.UNIFORM_RANDOM01] && this.setUniformLocationWith4f(this._uniforms[cc.UNIFORM_RANDOM01], Math.random(), Math.random(), Math.random(), Math.random()) }, setUniformForModelViewProjectionMatrix: function () { this._glContext.uniformMatrix4fv(this._uniforms[cc.UNIFORM_MVPMATRIX], !1, cc.getMat4MultiplyValue(cc.projection_matrix_stack.top, cc.modelview_matrix_stack.top)) }, setUniformForModelViewProjectionMatrixWithMat4: function (a) { cc.kmMat4Multiply(a, cc.projection_matrix_stack.top, cc.modelview_matrix_stack.top); this._glContext.uniformMatrix4fv(this._uniforms[cc.UNIFORM_MVPMATRIX], !1, a.mat) }, setUniformForModelViewAndProjectionMatrixWithMat4: function () { this._glContext.uniformMatrix4fv(this._uniforms[cc.UNIFORM_MVMATRIX], !1, cc.modelview_matrix_stack.top.mat); this._glContext.uniformMatrix4fv(this._uniforms[cc.UNIFORM_PMATRIX], !1, cc.projection_matrix_stack.top.mat) }, vertexShaderLog: function () { return this._glContext.getShaderInfoLog(this._vertShader) }, getVertexShaderLog: function () { return this._glContext.getShaderInfoLog(this._vertShader) }, getFragmentShaderLog: function () { return this._glContext.getShaderInfoLog(this._vertShader) }, fragmentShaderLog: function () { return this._glContext.getShaderInfoLog(this._fragShader) }, programLog: function () { return this._glContext.getProgramInfoLog(this._programObj) }, getProgramLog: function () { return this._glContext.getProgramInfoLog(this._programObj) }, reset: function () { this._fragShader = this._vertShader = null; this._uniforms.length = 0; this._glContext.deleteProgram(this._programObj); this._programObj = null; for (var a = 0; a < this._hashForUniforms.length; a++) this._hashForUniforms[a].value = null, this._hashForUniforms[a] = null; this._hashForUniforms.length = 0 }, getProgram: function () { return this._programObj }, retain: function () { }, release: function () { } }); cc.GLProgram.create = function (a, b) { return new cc.GLProgram(a, b) }; cc._currentProjectionMatrix = -1; cc._vertexAttribPosition = !1; cc._vertexAttribColor = !1; cc._vertexAttribTexCoords = !1; cc.ENABLE_GL_STATE_CACHE && (cc.MAX_ACTIVETEXTURE = 16, cc._currentShaderProgram = -1, cc._currentBoundTexture = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], cc._blendingSource = -1, cc._blendingDest = -1, cc._GLServerState = 0, cc.TEXTURE_ATLAS_USE_VAO && (cc._uVAO = 0)); cc.glInvalidateStateCache = function () { cc.kmGLFreeAll(); cc._currentProjectionMatrix = -1; cc._vertexAttribPosition = !1; cc._vertexAttribColor = !1; cc._vertexAttribTexCoords = !1; if (cc.ENABLE_GL_STATE_CACHE) { cc._currentShaderProgram = -1; for (var a = 0; a < cc.MAX_ACTIVETEXTURE; a++) cc._currentBoundTexture[a] = -1; cc._blendingSource = -1; cc._blendingDest = -1; cc._GLServerState = 0 } }; cc.glUseProgram = function (a) { a !== cc._currentShaderProgram && (cc._currentShaderProgram = a, cc._renderContext.useProgram(a)) }; cc.ENABLE_GL_STATE_CACHE || (cc.glUseProgram = function (a) { cc._renderContext.useProgram(a) }); cc.glDeleteProgram = function (a) { cc.ENABLE_GL_STATE_CACHE && a === cc._currentShaderProgram && (cc._currentShaderProgram = -1); gl.deleteProgram(a) }; cc.glBlendFunc = function (a, b) { if (a !== cc._blendingSource || b !== cc._blendingDest) cc._blendingSource = a, cc._blendingDest = b, cc.setBlending(a, b) }; cc.setBlending = function (a, b) { var c = cc._renderContext; a === c.ONE && b === c.ZERO ? c.disable(c.BLEND) : (c.enable(c.BLEND), cc._renderContext.blendFunc(a, b)) }; cc.glBlendFuncForParticle = function (a, b) { if (a !== cc._blendingSource || b !== cc._blendingDest) { cc._blendingSource = a; cc._blendingDest = b; var c = cc._renderContext; a === c.ONE && b === c.ZERO ? c.disable(c.BLEND) : (c.enable(c.BLEND), c.blendFuncSeparate(c.SRC_ALPHA, b, a, b)) } }; cc.ENABLE_GL_STATE_CACHE || (cc.glBlendFunc = cc.setBlending); cc.glBlendResetToCache = function () { var a = cc._renderContext; a.blendEquation(a.FUNC_ADD); cc.ENABLE_GL_STATE_CACHE ? cc.setBlending(cc._blendingSource, cc._blendingDest) : cc.setBlending(a.BLEND_SRC, a.BLEND_DST) }; cc.setProjectionMatrixDirty = function () { cc._currentProjectionMatrix = -1 }; cc.glEnableVertexAttribs = function (a) { var b = cc._renderContext, c = a & cc.VERTEX_ATTRIB_FLAG_POSITION; c !== cc._vertexAttribPosition && (c ? b.enableVertexAttribArray(cc.VERTEX_ATTRIB_POSITION) : b.disableVertexAttribArray(cc.VERTEX_ATTRIB_POSITION), cc._vertexAttribPosition = c); c = a & cc.VERTEX_ATTRIB_FLAG_COLOR; c !== cc._vertexAttribColor && (c ? b.enableVertexAttribArray(cc.VERTEX_ATTRIB_COLOR) : b.disableVertexAttribArray(cc.VERTEX_ATTRIB_COLOR), cc._vertexAttribColor = c); a &= cc.VERTEX_ATTRIB_FLAG_TEX_COORDS; a !== cc._vertexAttribTexCoords && (a ? b.enableVertexAttribArray(cc.VERTEX_ATTRIB_TEX_COORDS) : b.disableVertexAttribArray(cc.VERTEX_ATTRIB_TEX_COORDS), cc._vertexAttribTexCoords = a) }; cc.glBindTexture2D = function (a) { cc.glBindTexture2DN(0, a) }; cc.glBindTexture2DN = function (a, b) { if (cc._currentBoundTexture[a] != b) { cc._currentBoundTexture[a] = b; var c = cc._renderContext; c.activeTexture(c.TEXTURE0 + a); b ? c.bindTexture(c.TEXTURE_2D, b._webTextureObj) : c.bindTexture(c.TEXTURE_2D, null) } }; cc.ENABLE_GL_STATE_CACHE || (cc.glBindTexture2DN = function (a, b) { var c = cc._renderContext; c.activeTexture(c.TEXTURE0 + a); b ? c.bindTexture(c.TEXTURE_2D, b._webTextureObj) : c.bindTexture(c.TEXTURE_2D, null) }); cc.glDeleteTexture = function (a) { cc.glDeleteTextureN(0, a) }; cc.glDeleteTextureN = function (a, b) { cc.ENABLE_GL_STATE_CACHE && b == cc._currentBoundTexture[a] && (cc._currentBoundTexture[a] = -1); cc._renderContext.deleteTexture(b) }; cc.glBindVAO = function (a) { cc.TEXTURE_ATLAS_USE_VAO && cc.ENABLE_GL_STATE_CACHE && cc._uVAO != a && (cc._uVAO = a) }; cc.glEnable = function (a) { }; cc.ACTION_TAG_INVALID = -1; cc.Action = cc.Class.extend({ originalTarget: null, target: null, tag: cc.ACTION_TAG_INVALID, ctor: function () { this.target = this.originalTarget = null; this.tag = cc.ACTION_TAG_INVALID }, copy: function () { cc.log("copy is deprecated. Please use clone instead."); return this.clone() }, clone: function () { var a = new cc.Action; a.originalTarget = null; a.target = null; a.tag = this.tag; return a }, isDone: function () { return !0 }, startWithTarget: function (a) { this.target = this.originalTarget = a }, stop: function () { this.target = null }, step: function (a) { cc.log("[Action step]. override me") }, update: function (a) { cc.log("[Action update]. override me") }, getTarget: function () { return this.target }, setTarget: function (a) { this.target = a }, getOriginalTarget: function () { return this.originalTarget }, setOriginalTarget: function (a) { this.originalTarget = a }, getTag: function () { return this.tag }, setTag: function (a) { this.tag = a }, retain: function () { }, release: function () { } }); cc.action = function () { return new cc.Action }; cc.Action.create = cc.action; cc.FiniteTimeAction = cc.Action.extend({ _duration: 0, ctor: function () { cc.Action.prototype.ctor.call(this); this._duration = 0 }, getDuration: function () { return this._duration * (this._times || 1) }, setDuration: function (a) { this._duration = a }, reverse: function () { cc.log("cocos2d: FiniteTimeAction#reverse: Implement me"); return null }, clone: function () { return new cc.FiniteTimeAction } }); cc.Speed = cc.Action.extend({ _speed: 0, _innerAction: null, ctor: function (a, b) { cc.Action.prototype.ctor.call(this); this._speed = 0; this._innerAction = null; a && this.initWithAction(a, b) }, getSpeed: function () { return this._speed }, setSpeed: function (a) { this._speed = a }, initWithAction: function (a, b) { if (!a) throw "cc.Speed.initWithAction(): action must be non nil"; this._innerAction = a; this._speed = b; return !0 }, clone: function () { var a = new cc.Speed; a.initWithAction(this._innerAction.clone(), this._speed); return a }, startWithTarget: function (a) { cc.Action.prototype.startWithTarget.call(this, a); this._innerAction.startWithTarget(a) }, stop: function () { this._innerAction.stop(); cc.Action.prototype.stop.call(this) }, step: function (a) { this._innerAction.step(a * this._speed) }, isDone: function () { return this._innerAction.isDone() }, reverse: function () { return new cc.Speed(this._innerAction.reverse(), this._speed) }, setInnerAction: function (a) { this._innerAction != a && (this._innerAction = a) }, getInnerAction: function () { return this._innerAction } }); cc.speed = function (a, b) { return new cc.Speed(a, b) }; cc.Speed.create = cc.speed; cc.Follow = cc.Action.extend({ _followedNode: null, _boundarySet: !1, _boundaryFullyCovered: !1, _halfScreenSize: null, _fullScreenSize: null, _worldRect: null, leftBoundary: 0, rightBoundary: 0, topBoundary: 0, bottomBoundary: 0, ctor: function (a, b) { cc.Action.prototype.ctor.call(this); this._followedNode = null; this._boundaryFullyCovered = this._boundarySet = !1; this._fullScreenSize = this._halfScreenSize = null; this.bottomBoundary = this.topBoundary = this.rightBoundary = this.leftBoundary = 0; this._worldRect = cc.rect(0, 0, 0, 0); a && (b ? this.initWithTarget(a, b) : this.initWithTarget(a)) }, clone: function () { var a = new cc.Follow, b = this._worldRect, b = new cc.Rect(b.x, b.y, b.width, b.height); a.initWithTarget(this._followedNode, b); return a }, isBoundarySet: function () { return this._boundarySet }, setBoudarySet: function (a) { this._boundarySet = a }, initWithTarget: function (a, b) { if (!a) throw "cc.Follow.initWithAction(): followedNode must be non nil"; b = b || cc.rect(0, 0, 0, 0); this._followedNode = a; this._worldRect = b; this._boundarySet = !cc._rectEqualToZero(b); this._boundaryFullyCovered = !1; var c = cc.director.getWinSize(); this._fullScreenSize = cc.p(c.width, c.height); this._halfScreenSize = cc.pMult(this._fullScreenSize, 0.5); this._boundarySet && (this.leftBoundary = -(b.x + b.width - this._fullScreenSize.x), this.rightBoundary = -b.x, this.topBoundary = -b.y, this.bottomBoundary = -(b.y + b.height - this._fullScreenSize.y), this.rightBoundary < this.leftBoundary && (this.rightBoundary = this.leftBoundary = (this.leftBoundary + this.rightBoundary) / 2), this.topBoundary < this.bottomBoundary && (this.topBoundary = this.bottomBoundary = (this.topBoundary + this.bottomBoundary) / 2), this.topBoundary == this.bottomBoundary && this.leftBoundary == this.rightBoundary && (this._boundaryFullyCovered = !0)); return !0 }, step: function (a) { a = this._followedNode.x; var b = this._followedNode.y; a = this._halfScreenSize.x - a; b = this._halfScreenSize.y - b; this._boundarySet ? this._boundaryFullyCovered || this.target.setPosition(cc.clampf(a, this.leftBoundary, this.rightBoundary), cc.clampf(b, this.bottomBoundary, this.topBoundary)) : this.target.setPosition(a, b) }, isDone: function () { return !this._followedNode.running }, stop: function () { this.target = null; cc.Action.prototype.stop.call(this) } }); cc.follow = function (a, b) { return new cc.Follow(a, b) }; cc.Follow.create = cc.follow; cc.ActionInterval = cc.FiniteTimeAction.extend({ _elapsed: 0, _firstTick: !1, _easeList: null, _times: 1, _repeatForever: !1, _repeatMethod: !1, _speed: 1, _speedMethod: !1, ctor: function (a) { this._times = this._speed = 1; this._repeatForever = !1; this.MAX_VALUE = 2; this._speedMethod = this._repeatMethod = !1; cc.FiniteTimeAction.prototype.ctor.call(this); void 0 !== a && this.initWithDuration(a) }, getElapsed: function () { return this._elapsed }, initWithDuration: function (a) { this._duration = 0 === a ? cc.FLT_EPSILON : a; this._elapsed = 0; return this._firstTick = !0 }, isDone: function () { return this._elapsed >= this._duration }, _cloneDecoration: function (a) { a._repeatForever = this._repeatForever; a._speed = this._speed; a._times = this._times; a._easeList = this._easeList; a._speedMethod = this._speedMethod; a._repeatMethod = this._repeatMethod }, _reverseEaseList: function (a) { if (this._easeList) { a._easeList = []; for (var b = 0; b < this._easeList.length; b++) a._easeList.push(this._easeList[b].reverse()) } }, clone: function () { var a = new cc.ActionInterval(this._duration); this._cloneDecoration(a); return a }, easing: function (a) { this._easeList ? this._easeList.length = 0 : this._easeList = []; for (var b = 0; b < arguments.length; b++) this._easeList.push(arguments[b]); return this }, _computeEaseTime: function (a) { var b = this._easeList; if (!b || 0 === b.length) return a; for (var c = 0, d = b.length; c < d; c++) a = b[c].easing(a); return a }, step: function (a) { this._firstTick ? (this._firstTick = !1, this._elapsed = 0) : this._elapsed += a; a = this._elapsed / (1.192092896E-7 < this._duration ? this._duration : 1.192092896E-7); a = 1 > a ? a : 1; this.update(0 < a ? a : 0); this._repeatMethod && 1 < this._times && this.isDone() && (this._repeatForever || this._times--, this.startWithTarget(this.target), this.step(this._elapsed - this._duration)) }, startWithTarget: function (a) { cc.Action.prototype.startWithTarget.call(this, a); this._elapsed = 0; this._firstTick = !0 }, reverse: function () { cc.log("cc.IntervalAction: reverse not implemented."); return null }, setAmplitudeRate: function (a) { cc.log("cc.ActionInterval.setAmplitudeRate(): it should be overridden in subclass.") }, getAmplitudeRate: function () { cc.log("cc.ActionInterval.getAmplitudeRate(): it should be overridden in subclass."); return 0 }, speed: function (a) { if (0 >= a) return cc.log("The speed parameter error"), this; this._speedMethod = !0; this._speed *= a; return this }, getSpeed: function () { return this._speed }, setSpeed: function (a) { this._speed = a; return this }, repeat: function (a) { a = Math.round(a); if (isNaN(a) || 1 > a) return cc.log("The repeat parameter error"), this; this._repeatMethod = !0; this._times *= a; return this }, repeatForever: function () { this._repeatMethod = !0; this._times = this.MAX_VALUE; this._repeatForever = !0; return this } }); cc.actionInterval = function (a) { return new cc.ActionInterval(a) }; cc.ActionInterval.create = cc.actionInterval; cc.Sequence = cc.ActionInterval.extend({ _actions: null, _split: null, _last: 0, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); this._actions = []; var b = a instanceof Array ? a : arguments, c = b.length - 1; 0 <= c && null == b[c] && cc.log("parameters should not be ending with null in Javascript"); if (0 <= c) { for (var d = b[0], e = 1; e < c; e++) b[e] && (d = cc.Sequence._actionOneTwo(d, b[e])); this.initWithTwoActions(d, b[c]) } }, initWithTwoActions: function (a, b) { if (!a || !b) throw "cc.Sequence.initWithTwoActions(): arguments must all be non nil"; this.initWithDuration(a._duration + b._duration); this._actions[0] = a; this._actions[1] = b; return !0 }, clone: function () { var a = new cc.Sequence; this._cloneDecoration(a); a.initWithTwoActions(this._actions[0].clone(), this._actions[1].clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._split = this._actions[0]._duration / this._duration; this._last = -1 }, stop: function () { -1 !== this._last && this._actions[this._last].stop(); cc.Action.prototype.stop.call(this) }, update: function (a) { a = this._computeEaseTime(a); var b = 0, c = this._split, d = this._actions, e = this._last; a < c ? (a = 0 !== c ? a / c : 1, 0 === b && 1 === e && (d[1].update(0), d[1].stop())) : (b = 1, a = 1 === c ? 1 : (a - c) / (1 - c), -1 === e && (d[0].startWithTarget(this.target), d[0].update(1), d[0].stop()), e || (d[0].update(1), d[0].stop())); e === b && d[b].isDone() || (e !== b && d[b].startWithTarget(this.target), d[b].update(a), this._last = b) }, reverse: function () { var a = cc.Sequence._actionOneTwo(this._actions[1].reverse(), this._actions[0].reverse()); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.sequence = function (a) { var b = a instanceof Array ? a : arguments; 0 < b.length && null == b[b.length - 1] && cc.log("parameters should not be ending with null in Javascript"); for (var c = b[0], d = 1; d < b.length; d++) b[d] && (c = cc.Sequence._actionOneTwo(c, b[d])); return c }; cc.Sequence.create = cc.sequence; cc.Sequence._actionOneTwo = function (a, b) { var c = new cc.Sequence; c.initWithTwoActions(a, b); return c }; cc.Repeat = cc.ActionInterval.extend({ _times: 0, _total: 0, _nextDt: 0, _actionInstant: !1, _innerAction: null, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithAction(a, b) }, initWithAction: function (a, b) { return this.initWithDuration(a._duration * b) ? (this._times = b, this._innerAction = a, a instanceof cc.ActionInstant && (this._actionInstant = !0, this._times -= 1), this._total = 0, !0) : !1 }, clone: function () { var a = new cc.Repeat; this._cloneDecoration(a); a.initWithAction(this._innerAction.clone(), this._times); return a }, startWithTarget: function (a) { this._total = 0; this._nextDt = this._innerAction._duration / this._duration; cc.ActionInterval.prototype.startWithTarget.call(this, a); this._innerAction.startWithTarget(a) }, stop: function () { this._innerAction.stop(); cc.Action.prototype.stop.call(this) }, update: function (a) { a = this._computeEaseTime(a); var b = this._innerAction, c = this._duration, d = this._times, e = this._nextDt; if (a >= e) { for (; a > e && this._total < d;) b.update(1), this._total++, b.stop(), b.startWithTarget(this.target), this._nextDt = e += b._duration / c; 1 <= a && this._total < d && this._total++; this._actionInstant || (this._total === d ? (b.update(1), b.stop()) : b.update(a - (e - b._duration / c))) } else b.update(a * d % 1) }, isDone: function () { return this._total == this._times }, reverse: function () { var a = new cc.Repeat(this._innerAction.reverse(), this._times); this._cloneDecoration(a); this._reverseEaseList(a); return a }, setInnerAction: function (a) { this._innerAction != a && (this._innerAction = a) }, getInnerAction: function () { return this._innerAction } }); cc.repeat = function (a, b) { return new cc.Repeat(a, b) }; cc.Repeat.create = cc.repeat; cc.RepeatForever = cc.ActionInterval.extend({ _innerAction: null, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); this._innerAction = null; a && this.initWithAction(a) }, initWithAction: function (a) { if (!a) throw "cc.RepeatForever.initWithAction(): action must be non null"; this._innerAction = a; return !0 }, clone: function () { var a = new cc.RepeatForever; this._cloneDecoration(a); a.initWithAction(this._innerAction.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._innerAction.startWithTarget(a) }, step: function (a) { var b = this._innerAction; b.step(a); b.isDone() && (b.startWithTarget(this.target), b.step(b.getElapsed() - b._duration)) }, isDone: function () { return !1 }, reverse: function () { var a = new cc.RepeatForever(this._innerAction.reverse()); this._cloneDecoration(a); this._reverseEaseList(a); return a }, setInnerAction: function (a) { this._innerAction != a && (this._innerAction = a) }, getInnerAction: function () { return this._innerAction } }); cc.repeatForever = function (a) { return new cc.RepeatForever(a) }; cc.RepeatForever.create = cc.repeatForever; cc.Spawn = cc.ActionInterval.extend({ _one: null, _two: null, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); this._two = this._one = null; var b = a instanceof Array ? a : arguments, c = b.length - 1; 0 <= c && null == b[c] && cc.log("parameters should not be ending with null in Javascript"); if (0 <= c) { for (var d = b[0], e = 1; e < c; e++) b[e] && (d = cc.Spawn._actionOneTwo(d, b[e])); this.initWithTwoActions(d, b[c]) } }, initWithTwoActions: function (a, b) { if (!a || !b) throw "cc.Spawn.initWithTwoActions(): arguments must all be non null"; var c = !1, d = a._duration, e = b._duration; this.initWithDuration(Math.max(d, e)) && (this._one = a, this._two = b, d > e ? this._two = cc.Sequence._actionOneTwo(b, cc.delayTime(d - e)) : d < e && (this._one = cc.Sequence._actionOneTwo(a, cc.delayTime(e - d))), c = !0); return c }, clone: function () { var a = new cc.Spawn; this._cloneDecoration(a); a.initWithTwoActions(this._one.clone(), this._two.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._one.startWithTarget(a); this._two.startWithTarget(a) }, stop: function () { this._one.stop(); this._two.stop(); cc.Action.prototype.stop.call(this) }, update: function (a) { a = this._computeEaseTime(a); this._one && this._one.update(a); this._two && this._two.update(a) }, reverse: function () { var a = cc.Spawn._actionOneTwo(this._one.reverse(), this._two.reverse()); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.spawn = function (a) { var b = a instanceof Array ? a : arguments; 0 < b.length && null == b[b.length - 1] && cc.log("parameters should not be ending with null in Javascript"); for (var c = b[0], d = 1; d < b.length; d++) null != b[d] && (c = cc.Spawn._actionOneTwo(c, b[d])); return c }; cc.Spawn.create = cc.spawn; cc.Spawn._actionOneTwo = function (a, b) { var c = new cc.Spawn; c.initWithTwoActions(a, b); return c }; cc.RotateTo = cc.ActionInterval.extend({ _dstAngleX: 0, _startAngleX: 0, _diffAngleX: 0, _dstAngleY: 0, _startAngleY: 0, _diffAngleY: 0, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._dstAngleX = b || 0, this._dstAngleY = c || this._dstAngleX, !0) : !1 }, clone: function () { var a = new cc.RotateTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._dstAngleX, this._dstAngleY); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); var b = a.rotationX % 360, c = this._dstAngleX - b; 180 < c && (c -= 360); -180 > c && (c += 360); this._startAngleX = b; this._diffAngleX = c; this._startAngleY = a.rotationY % 360; a = this._dstAngleY - this._startAngleY; 180 < a && (a -= 360); -180 > a && (a += 360); this._diffAngleY = a }, reverse: function () { cc.log("cc.RotateTo.reverse(): it should be overridden in subclass.") }, update: function (a) { a = this._computeEaseTime(a); this.target && (this.target.rotationX = this._startAngleX + this._diffAngleX * a, this.target.rotationY = this._startAngleY + this._diffAngleY * a) } }); cc.rotateTo = function (a, b, c) { return new cc.RotateTo(a, b, c) }; cc.RotateTo.create = cc.rotateTo; cc.RotateBy = cc.ActionInterval.extend({ _angleX: 0, _startAngleX: 0, _angleY: 0, _startAngleY: 0, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._angleX = b || 0, this._angleY = c || this._angleX, !0) : !1 }, clone: function () { var a = new cc.RotateBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._angleX, this._angleY); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._startAngleX = a.rotationX; this._startAngleY = a.rotationY }, update: function (a) { a = this._computeEaseTime(a); this.target && (this.target.rotationX = this._startAngleX + this._angleX * a, this.target.rotationY = this._startAngleY + this._angleY * a) }, reverse: function () { var a = new cc.RotateBy(this._duration, -this._angleX, -this._angleY); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.rotateBy = function (a, b, c) { return new cc.RotateBy(a, b, c) }; cc.RotateBy.create = cc.rotateBy; cc.MoveBy = cc.ActionInterval.extend({ _positionDelta: null, _startPosition: null, _previousPosition: null, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); this._positionDelta = cc.p(0, 0); this._startPosition = cc.p(0, 0); this._previousPosition = cc.p(0, 0); void 0 !== b && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (void 0 !== b.x && (c = b.y, b = b.x), this._positionDelta.x = b, this._positionDelta.y = c, !0) : !1 }, clone: function () { var a = new cc.MoveBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._positionDelta); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); var b = a.getPositionX(); a = a.getPositionY(); this._previousPosition.x = b; this._previousPosition.y = a; this._startPosition.x = b; this._startPosition.y = a }, update: function (a) { a = this._computeEaseTime(a); if (this.target) { var b = this._positionDelta.x * a; a *= this._positionDelta.y; var c = this._startPosition; if (cc.ENABLE_STACKABLE_ACTIONS) { var d = this.target.getPositionX(), e = this.target.getPositionY(), f = this._previousPosition; c.x = c.x + d - f.x; c.y = c.y + e - f.y; b += c.x; a += c.y; f.x = b; f.y = a; this.target.setPosition(b, a) } else this.target.setPosition(c.x + b, c.y + a) } }, reverse: function () { var a = new cc.MoveBy(this._duration, cc.p(-this._positionDelta.x, -this._positionDelta.y)); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.moveBy = function (a, b, c) { return new cc.MoveBy(a, b, c) }; cc.MoveBy.create = cc.moveBy; cc.MoveTo = cc.MoveBy.extend({ _endPosition: null, ctor: function (a, b, c) { cc.MoveBy.prototype.ctor.call(this); this._endPosition = cc.p(0, 0); void 0 !== b && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.MoveBy.prototype.initWithDuration.call(this, a, b, c) ? (void 0 !== b.x && (c = b.y, b = b.x), this._endPosition.x = b, this._endPosition.y = c, !0) : !1 }, clone: function () { var a = new cc.MoveTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._endPosition); return a }, startWithTarget: function (a) { cc.MoveBy.prototype.startWithTarget.call(this, a); this._positionDelta.x = this._endPosition.x - a.getPositionX(); this._positionDelta.y = this._endPosition.y - a.getPositionY() } }); cc.moveTo = function (a, b, c) { return new cc.MoveTo(a, b, c) }; cc.MoveTo.create = cc.moveTo; cc.SkewTo = cc.ActionInterval.extend({ _skewX: 0, _skewY: 0, _startSkewX: 0, _startSkewY: 0, _endSkewX: 0, _endSkewY: 0, _deltaX: 0, _deltaY: 0, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== c && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { var d = !1; cc.ActionInterval.prototype.initWithDuration.call(this, a) && (this._endSkewX = b, this._endSkewY = c, d = !0); return d }, clone: function () { var a = new cc.SkewTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._endSkewX, this._endSkewY); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._startSkewX = a.skewX % 180; this._deltaX = this._endSkewX - this._startSkewX; 180 < this._deltaX && (this._deltaX -= 360); -180 > this._deltaX && (this._deltaX += 360); this._startSkewY = a.skewY % 360; this._deltaY = this._endSkewY - this._startSkewY; 180 < this._deltaY && (this._deltaY -= 360); -180 > this._deltaY && (this._deltaY += 360) }, update: function (a) { a = this._computeEaseTime(a); this.target.skewX = this._startSkewX + this._deltaX * a; this.target.skewY = this._startSkewY + this._deltaY * a } }); cc.skewTo = function (a, b, c) { return new cc.SkewTo(a, b, c) }; cc.SkewTo.create = cc.skewTo; cc.SkewBy = cc.SkewTo.extend({ ctor: function (a, b, c) { cc.SkewTo.prototype.ctor.call(this); void 0 !== c && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { var d = !1; cc.SkewTo.prototype.initWithDuration.call(this, a, b, c) && (this._skewX = b, this._skewY = c, d = !0); return d }, clone: function () { var a = new cc.SkewBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._skewX, this._skewY); return a }, startWithTarget: function (a) { cc.SkewTo.prototype.startWithTarget.call(this, a); this._deltaX = this._skewX; this._deltaY = this._skewY; this._endSkewX = this._startSkewX + this._deltaX; this._endSkewY = this._startSkewY + this._deltaY }, reverse: function () { var a = new cc.SkewBy(this._duration, -this._skewX, -this._skewY); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.skewBy = function (a, b, c) { return new cc.SkewBy(a, b, c) }; cc.SkewBy.create = cc.skewBy; cc.JumpBy = cc.ActionInterval.extend({ _startPosition: null, _delta: null, _height: 0, _jumps: 0, _previousPosition: null, ctor: function (a, b, c, d, e) { cc.ActionInterval.prototype.ctor.call(this); this._startPosition = cc.p(0, 0); this._previousPosition = cc.p(0, 0); this._delta = cc.p(0, 0); void 0 !== d && this.initWithDuration(a, b, c, d, e) }, initWithDuration: function (a, b, c, d, e) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (void 0 === e && (e = d, d = c, c = b.y, b = b.x), this._delta.x = b, this._delta.y = c, this._height = d, this._jumps = e, !0) : !1 }, clone: function () { var a = new cc.JumpBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._delta, this._height, this._jumps); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); var b = a.getPositionX(); a = a.getPositionY(); this._previousPosition.x = b; this._previousPosition.y = a; this._startPosition.x = b; this._startPosition.y = a }, update: function (a) { a = this._computeEaseTime(a); if (this.target) { var b = a * this._jumps % 1, b = 4 * this._height * b * (1 - b), b = b + this._delta.y * a; a *= this._delta.x; var c = this._startPosition; if (cc.ENABLE_STACKABLE_ACTIONS) { var d = this.target.getPositionX(), e = this.target.getPositionY(), f = this._previousPosition; c.x = c.x + d - f.x; c.y = c.y + e - f.y; a += c.x; b += c.y; f.x = a; f.y = b; this.target.setPosition(a, b) } else this.target.setPosition(c.x + a, c.y + b) } }, reverse: function () { var a = new cc.JumpBy(this._duration, cc.p(-this._delta.x, -this._delta.y), this._height, this._jumps); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.jumpBy = function (a, b, c, d, e) { return new cc.JumpBy(a, b, c, d, e) }; cc.JumpBy.create = cc.jumpBy; cc.JumpTo = cc.JumpBy.extend({ _endPosition: null, ctor: function (a, b, c, d, e) { cc.JumpBy.prototype.ctor.call(this); this._endPosition = cc.p(0, 0); void 0 !== d && this.initWithDuration(a, b, c, d, e) }, initWithDuration: function (a, b, c, d, e) { return cc.JumpBy.prototype.initWithDuration.call(this, a, b, c, d, e) ? (void 0 === e && (c = b.y, b = b.x), this._endPosition.x = b, this._endPosition.y = c, !0) : !1 }, startWithTarget: function (a) { cc.JumpBy.prototype.startWithTarget.call(this, a); this._delta.x = this._endPosition.x - this._startPosition.x; this._delta.y = this._endPosition.y - this._startPosition.y }, clone: function () { var a = new cc.JumpTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._endPosition, this._height, this._jumps); return a } }); cc.jumpTo = function (a, b, c, d, e) { return new cc.JumpTo(a, b, c, d, e) }; cc.JumpTo.create = cc.jumpTo; cc.bezierAt = function (a, b, c, d, e) { return Math.pow(1 - e, 3) * a + 3 * e * Math.pow(1 - e, 2) * b + 3 * Math.pow(e, 2) * (1 - e) * c + Math.pow(e, 3) * d }; cc.BezierBy = cc.ActionInterval.extend({ _config: null, _startPosition: null, _previousPosition: null, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); this._config = []; this._startPosition = cc.p(0, 0); this._previousPosition = cc.p(0, 0); b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._config = b, !0) : !1 }, clone: function () { var a = new cc.BezierBy; this._cloneDecoration(a); for (var b = [], c = 0; c < this._config.length; c++) { var d = this._config[c]; b.push(cc.p(d.x, d.y)) } a.initWithDuration(this._duration, b); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); var b = a.getPositionX(); a = a.getPositionY(); this._previousPosition.x = b; this._previousPosition.y = a; this._startPosition.x = b; this._startPosition.y = a }, update: function (a) { a = this._computeEaseTime(a); if (this.target) { var b = this._config, c = b[0].y, d = b[1].y, e = b[2].y, b = cc.bezierAt(0, b[0].x, b[1].x, b[2].x, a); a = cc.bezierAt(0, c, d, e, a); c = this._startPosition; if (cc.ENABLE_STACKABLE_ACTIONS) { var d = this.target.getPositionX(), e = this.target.getPositionY(), f = this._previousPosition; c.x = c.x + d - f.x; c.y = c.y + e - f.y; b += c.x; a += c.y; f.x = b; f.y = a; this.target.setPosition(b, a) } else this.target.setPosition(c.x + b, c.y + a) } }, reverse: function () { var a = this._config, a = [cc.pAdd(a[1], cc.pNeg(a[2])), cc.pAdd(a[0], cc.pNeg(a[2])), cc.pNeg(a[2])], a = new cc.BezierBy(this._duration, a); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.bezierBy = function (a, b) { return new cc.BezierBy(a, b) }; cc.BezierBy.create = cc.bezierBy; cc.BezierTo = cc.BezierBy.extend({ _toConfig: null, ctor: function (a, b) { cc.BezierBy.prototype.ctor.call(this); this._toConfig = []; b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._toConfig = b, !0) : !1 }, clone: function () { var a = new cc.BezierTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._toConfig); return a }, startWithTarget: function (a) { cc.BezierBy.prototype.startWithTarget.call(this, a); a = this._startPosition; var b = this._toConfig, c = this._config; c[0] = cc.pSub(b[0], a); c[1] = cc.pSub(b[1], a); c[2] = cc.pSub(b[2], a) } }); cc.bezierTo = function (a, b) { return new cc.BezierTo(a, b) }; cc.BezierTo.create = cc.bezierTo; cc.ScaleTo = cc.ActionInterval.extend({ _scaleX: 1, _scaleY: 1, _startScaleX: 1, _startScaleY: 1, _endScaleX: 0, _endScaleY: 0, _deltaX: 0, _deltaY: 0, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._endScaleX = b, this._endScaleY = null != c ? c : b, !0) : !1 }, clone: function () { var a = new cc.ScaleTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._endScaleX, this._endScaleY); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._startScaleX = a.scaleX; this._startScaleY = a.scaleY; this._deltaX = this._endScaleX - this._startScaleX; this._deltaY = this._endScaleY - this._startScaleY }, update: function (a) { a = this._computeEaseTime(a); this.target && (this.target.scaleX = this._startScaleX + this._deltaX * a, this.target.scaleY = this._startScaleY + this._deltaY * a) } }); cc.scaleTo = function (a, b, c) { return new cc.ScaleTo(a, b, c) }; cc.ScaleTo.create = cc.scaleTo; cc.ScaleBy = cc.ScaleTo.extend({ startWithTarget: function (a) { cc.ScaleTo.prototype.startWithTarget.call(this, a); this._deltaX = this._startScaleX * this._endScaleX - this._startScaleX; this._deltaY = this._startScaleY * this._endScaleY - this._startScaleY }, reverse: function () { var a = new cc.ScaleBy(this._duration, 1 / this._endScaleX, 1 / this._endScaleY); this._cloneDecoration(a); this._reverseEaseList(a); return a }, clone: function () { var a = new cc.ScaleBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._endScaleX, this._endScaleY); return a } }); cc.scaleBy = function (a, b, c) { return new cc.ScaleBy(a, b, c) }; cc.ScaleBy.create = cc.scaleBy; cc.Blink = cc.ActionInterval.extend({ _times: 0, _originalState: !1, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._times = b, !0) : !1 }, clone: function () { var a = new cc.Blink; this._cloneDecoration(a); a.initWithDuration(this._duration, this._times); return a }, update: function (a) { a = this._computeEaseTime(a); if (this.target && !this.isDone()) { var b = 1 / this._times; this.target.visible = a % b > b / 2 } }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._originalState = a.visible }, stop: function () { this.target.visible = this._originalState; cc.ActionInterval.prototype.stop.call(this) }, reverse: function () { var a = new cc.Blink(this._duration, this._times); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.blink = function (a, b) { return new cc.Blink(a, b) }; cc.Blink.create = cc.blink; cc.FadeTo = cc.ActionInterval.extend({ _toOpacity: 0, _fromOpacity: 0, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._toOpacity = b, !0) : !1 }, clone: function () { var a = new cc.FadeTo; this._cloneDecoration(a); a.initWithDuration(this._duration, this._toOpacity); return a }, update: function (a) { a = this._computeEaseTime(a); var b = void 0 !== this._fromOpacity ? this._fromOpacity : 255; this.target.opacity = b + (this._toOpacity - b) * a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._fromOpacity = a.opacity } }); cc.fadeTo = function (a, b) { return new cc.FadeTo(a, b) }; cc.FadeTo.create = cc.fadeTo; cc.FadeIn = cc.FadeTo.extend({ _reverseAction: null, ctor: function (a) { cc.FadeTo.prototype.ctor.call(this); a && this.initWithDuration(a, 255) }, reverse: function () { var a = new cc.FadeOut; a.initWithDuration(this._duration, 0); this._cloneDecoration(a); this._reverseEaseList(a); return a }, clone: function () { var a = new cc.FadeIn; this._cloneDecoration(a); a.initWithDuration(this._duration, this._toOpacity); return a }, startWithTarget: function (a) { this._reverseAction && (this._toOpacity = this._reverseAction._fromOpacity); cc.FadeTo.prototype.startWithTarget.call(this, a) } }); cc.fadeIn = function (a) { return new cc.FadeIn(a) }; cc.FadeIn.create = cc.fadeIn; cc.FadeOut = cc.FadeTo.extend({ ctor: function (a) { cc.FadeTo.prototype.ctor.call(this); a && this.initWithDuration(a, 0) }, reverse: function () { var a = new cc.FadeIn; a._reverseAction = this; a.initWithDuration(this._duration, 255); this._cloneDecoration(a); this._reverseEaseList(a); return a }, clone: function () { var a = new cc.FadeOut; this._cloneDecoration(a); a.initWithDuration(this._duration, this._toOpacity); return a } }); cc.fadeOut = function (a) { return new cc.FadeOut(a) }; cc.FadeOut.create = cc.fadeOut; cc.TintTo = cc.ActionInterval.extend({ _to: null, _from: null, ctor: function (a, b, c, d) { cc.ActionInterval.prototype.ctor.call(this); this._to = cc.color(0, 0, 0); this._from = cc.color(0, 0, 0); void 0 !== d && this.initWithDuration(a, b, c, d) }, initWithDuration: function (a, b, c, d) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._to = cc.color(b, c, d), !0) : !1 }, clone: function () { var a = new cc.TintTo; this._cloneDecoration(a); var b = this._to; a.initWithDuration(this._duration, b.r, b.g, b.b); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._from = this.target.color }, update: function (a) { a = this._computeEaseTime(a); var b = this._from, c = this._to; b && (this.target.color = cc.color(b.r + (c.r - b.r) * a, b.g + (c.g - b.g) * a, b.b + (c.b - b.b) * a)) } }); cc.tintTo = function (a, b, c, d) { return new cc.TintTo(a, b, c, d) }; cc.TintTo.create = cc.tintTo; cc.TintBy = cc.ActionInterval.extend({ _deltaR: 0, _deltaG: 0, _deltaB: 0, _fromR: 0, _fromG: 0, _fromB: 0, ctor: function (a, b, c, d) { cc.ActionInterval.prototype.ctor.call(this); void 0 !== d && this.initWithDuration(a, b, c, d) }, initWithDuration: function (a, b, c, d) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._deltaR = b, this._deltaG = c, this._deltaB = d, !0) : !1 }, clone: function () { var a = new cc.TintBy; this._cloneDecoration(a); a.initWithDuration(this._duration, this._deltaR, this._deltaG, this._deltaB); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); a = a.color; this._fromR = a.r; this._fromG = a.g; this._fromB = a.b }, update: function (a) { a = this._computeEaseTime(a); this.target.color = cc.color(this._fromR + this._deltaR * a, this._fromG + this._deltaG * a, this._fromB + this._deltaB * a) }, reverse: function () { var a = new cc.TintBy(this._duration, -this._deltaR, -this._deltaG, -this._deltaB); this._cloneDecoration(a); this._reverseEaseList(a); return a } }); cc.tintBy = function (a, b, c, d) { return new cc.TintBy(a, b, c, d) }; cc.TintBy.create = cc.tintBy; cc.DelayTime = cc.ActionInterval.extend({ update: function (a) { }, reverse: function () { var a = new cc.DelayTime(this._duration); this._cloneDecoration(a); this._reverseEaseList(a); return a }, clone: function () { var a = new cc.DelayTime; this._cloneDecoration(a); a.initWithDuration(this._duration); return a } }); cc.delayTime = function (a) { return new cc.DelayTime(a) }; cc.DelayTime.create = cc.delayTime; cc.ReverseTime = cc.ActionInterval.extend({ _other: null, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); this._other = null; a && this.initWithAction(a) }, initWithAction: function (a) { if (!a) throw "cc.ReverseTime.initWithAction(): action must be non null"; if (a == this._other) throw "cc.ReverseTime.initWithAction(): the action was already passed in."; return cc.ActionInterval.prototype.initWithDuration.call(this, a._duration) ? (this._other = a, !0) : !1 }, clone: function () { var a = new cc.ReverseTime; this._cloneDecoration(a); a.initWithAction(this._other.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._other.startWithTarget(a) }, update: function (a) { a = this._computeEaseTime(a); this._other && this._other.update(1 - a) }, reverse: function () { return this._other.clone() }, stop: function () { this._other.stop(); cc.Action.prototype.stop.call(this) } }); cc.reverseTime = function (a) { return new cc.ReverseTime(a) }; cc.ReverseTime.create = cc.reverseTime; cc.Animate = cc.ActionInterval.extend({ _animation: null, _nextFrame: 0, _origFrame: null, _executedLoops: 0, _splitTimes: null, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); this._splitTimes = []; a && this.initWithAnimation(a) }, getAnimation: function () { return this._animation }, setAnimation: function (a) { this._animation = a }, initWithAnimation: function (a) { if (!a) throw "cc.Animate.initWithAnimation(): animation must be non-NULL"; var b = a.getDuration(); if (this.initWithDuration(b * a.getLoops())) { this._nextFrame = 0; this.setAnimation(a); this._origFrame = null; this._executedLoops = 0; var c = this._splitTimes, d = c.length = 0, e = b / a.getTotalDelayUnits(); a = a.getFrames(); cc.arrayVerifyType(a, cc.AnimationFrame); for (var f = 0; f < a.length; f++) { var g = d * e / b, d = d + a[f].getDelayUnits(); c.push(g) } return !0 } return !1 }, clone: function () { var a = new cc.Animate; this._cloneDecoration(a); a.initWithAnimation(this._animation.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._animation.getRestoreOriginalFrame() && (this._origFrame = a.displayFrame()); this._executedLoops = this._nextFrame = 0 }, update: function (a) { a = this._computeEaseTime(a); 1 > a && (a *= this._animation.getLoops(), (0 | a) > this._executedLoops && (this._nextFrame = 0, this._executedLoops++), a %= 1); for (var b = this._animation.getFrames(), c = b.length, d = this._splitTimes, e = this._nextFrame; e < c; e++) if (d[e] <= a) this.target.setSpriteFrame(b[e].getSpriteFrame()), this._nextFrame = e + 1; else break }, reverse: function () { var a = this._animation, b = a.getFrames(), c = []; cc.arrayVerifyType(b, cc.AnimationFrame); if (0 < b.length) for (var d = b.length - 1; 0 <= d; d--) { var e = b[d]; if (!e) break; c.push(e.clone()) } b = new cc.Animation(c, a.getDelayPerUnit(), a.getLoops()); b.setRestoreOriginalFrame(a.getRestoreOriginalFrame()); a = new cc.Animate(b); this._cloneDecoration(a); this._reverseEaseList(a); return a }, stop: function () { this._animation.getRestoreOriginalFrame() && this.target && this.target.setSpriteFrame(this._origFrame); cc.Action.prototype.stop.call(this) } }); cc.animate = function (a) { return new cc.Animate(a) }; cc.Animate.create = cc.animate; cc.TargetedAction = cc.ActionInterval.extend({ _action: null, _forcedTarget: null, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); b && this.initWithTarget(a, b) }, initWithTarget: function (a, b) { return this.initWithDuration(b._duration) ? (this._forcedTarget = a, this._action = b, !0) : !1 }, clone: function () { var a = new cc.TargetedAction; this._cloneDecoration(a); a.initWithTarget(this._forcedTarget, this._action.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._action.startWithTarget(this._forcedTarget) }, stop: function () { this._action.stop() }, update: function (a) { a = this._computeEaseTime(a); this._action.update(a) }, getForcedTarget: function () { return this._forcedTarget }, setForcedTarget: function (a) { this._forcedTarget != a && (this._forcedTarget = a) } }); cc.targetedAction = function (a, b) { return new cc.TargetedAction(a, b) }; cc.TargetedAction.create = cc.targetedAction; cc.ActionInstant = cc.FiniteTimeAction.extend({ isDone: function () { return !0 }, step: function (a) { this.update(1) }, update: function (a) { }, reverse: function () { return this.clone() }, clone: function () { return new cc.ActionInstant } }); cc.Show = cc.ActionInstant.extend({ update: function (a) { this.target.visible = !0 }, reverse: function () { return new cc.Hide }, clone: function () { return new cc.Show } }); cc.show = function () { return new cc.Show }; cc.Show.create = cc.show; cc.Hide = cc.ActionInstant.extend({ update: function (a) { this.target.visible = !1 }, reverse: function () { return new cc.Show }, clone: function () { return new cc.Hide } }); cc.hide = function () { return new cc.Hide }; cc.Hide.create = cc.hide; cc.ToggleVisibility = cc.ActionInstant.extend({ update: function (a) { this.target.visible = !this.target.visible }, reverse: function () { return new cc.ToggleVisibility }, clone: function () { return new cc.ToggleVisibility } }); cc.toggleVisibility = function () { return new cc.ToggleVisibility }; cc.ToggleVisibility.create = cc.toggleVisibility; cc.RemoveSelf = cc.ActionInstant.extend({ _isNeedCleanUp: !0, ctor: function (a) { cc.FiniteTimeAction.prototype.ctor.call(this); void 0 !== a && this.init(a) }, update: function (a) { this.target.removeFromParent(this._isNeedCleanUp) }, init: function (a) { this._isNeedCleanUp = a; return !0 }, reverse: function () { return new cc.RemoveSelf(this._isNeedCleanUp) }, clone: function () { return new cc.RemoveSelf(this._isNeedCleanUp) } }); cc.removeSelf = function (a) { return new cc.RemoveSelf(a) }; cc.RemoveSelf.create = cc.removeSelf; cc.FlipX = cc.ActionInstant.extend({ _flippedX: !1, ctor: function (a) { cc.FiniteTimeAction.prototype.ctor.call(this); this._flippedX = !1; void 0 !== a && this.initWithFlipX(a) }, initWithFlipX: function (a) { this._flippedX = a; return !0 }, update: function (a) { this.target.flippedX = this._flippedX }, reverse: function () { return new cc.FlipX(!this._flippedX) }, clone: function () { var a = new cc.FlipX; a.initWithFlipX(this._flippedX); return a } }); cc.flipX = function (a) { return new cc.FlipX(a) }; cc.FlipX.create = cc.flipX; cc.FlipY = cc.ActionInstant.extend({ _flippedY: !1, ctor: function (a) { cc.FiniteTimeAction.prototype.ctor.call(this); this._flippedY = !1; void 0 !== a && this.initWithFlipY(a) }, initWithFlipY: function (a) { this._flippedY = a; return !0 }, update: function (a) { this.target.flippedY = this._flippedY }, reverse: function () { return new cc.FlipY(!this._flippedY) }, clone: function () { var a = new cc.FlipY; a.initWithFlipY(this._flippedY); return a } }); cc.flipY = function (a) { return new cc.FlipY(a) }; cc.FlipY.create = cc.flipY; cc.Place = cc.ActionInstant.extend({ _x: 0, _y: 0, ctor: function (a, b) { cc.FiniteTimeAction.prototype.ctor.call(this); this._y = this._x = 0; void 0 !== a && (void 0 !== a.x && (b = a.y, a = a.x), this.initWithPosition(a, b)) }, initWithPosition: function (a, b) { this._x = a; this._y = b; return !0 }, update: function (a) { this.target.setPosition(this._x, this._y) }, clone: function () { var a = new cc.Place; a.initWithPosition(this._x, this._y); return a } }); cc.place = function (a, b) { return new cc.Place(a, b) }; cc.Place.create = cc.place; cc.CallFunc = cc.ActionInstant.extend({ _selectorTarget: null, _callFunc: null, _function: null, _data: null, ctor: function (a, b, c) { cc.FiniteTimeAction.prototype.ctor.call(this); void 0 !== a && (void 0 === b ? this.initWithFunction(a) : this.initWithFunction(a, b, c)) }, initWithFunction: function (a, b, c) { b ? (this._data = c, this._callFunc = a, this._selectorTarget = b) : a && (this._function = a); return !0 }, execute: function () { null != this._callFunc ? this._callFunc.call(this._selectorTarget, this.target, this._data) : this._function && this._function.call(null, this.target) }, update: function (a) { this.execute() }, getTargetCallback: function () { return this._selectorTarget }, setTargetCallback: function (a) { a != this._selectorTarget && (this._selectorTarget && (this._selectorTarget = null), this._selectorTarget = a) }, clone: function () { var a = new cc.CallFunc; this._selectorTarget ? a.initWithFunction(this._callFunc, this._selectorTarget, this._data) : this._function && a.initWithFunction(this._function); return a } }); cc.callFunc = function (a, b, c) { return new cc.CallFunc(a, b, c) }; cc.CallFunc.create = cc.callFunc; cc.ActionCamera = cc.ActionInterval.extend({ _centerXOrig: 0, _centerYOrig: 0, _centerZOrig: 0, _eyeXOrig: 0, _eyeYOrig: 0, _eyeZOrig: 0, _upXOrig: 0, _upYOrig: 0, _upZOrig: 0, ctor: function () { cc.ActionInterval.prototype.ctor.call(this); this._upZOrig = this._upYOrig = this._upXOrig = this._eyeZOrig = this._eyeYOrig = this._eyeXOrig = this._centerZOrig = this._centerYOrig = this._centerXOrig = 0 }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); a = a.getCamera(); var b = a.getCenter(); this._centerXOrig = b.x; this._centerYOrig = b.y; this._centerZOrig = b.z; b = a.getEye(); this._eyeXOrig = b.x; this._eyeYOrig = b.y; this._eyeZOrig = b.z; a = a.getUp(); this._upXOrig = a.x; this._upYOrig = a.y; this._upZOrig = a.z }, clone: function () { return new cc.ActionCamera }, reverse: function () { return new cc.ReverseTime(this) } }); cc.OrbitCamera = cc.ActionCamera.extend({ _radius: 0, _deltaRadius: 0, _angleZ: 0, _deltaAngleZ: 0, _angleX: 0, _deltaAngleX: 0, _radZ: 0, _radDeltaZ: 0, _radX: 0, _radDeltaX: 0, ctor: function (a, b, c, d, e, f, g) { cc.ActionCamera.prototype.ctor.call(this); void 0 !== g && this.initWithDuration(a, b, c, d, e, f, g) }, initWithDuration: function (a, b, c, d, e, f, g) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._radius = b, this._deltaRadius = c, this._angleZ = d, this._deltaAngleZ = e, this._angleX = f, this._deltaAngleX = g, this._radDeltaZ = cc.degreesToRadians(e), this._radDeltaX = cc.degreesToRadians(g), !0) : !1 }, sphericalRadius: function () { var a, b; b = this.target.getCamera(); var c = b.getEye(); a = b.getCenter(); b = c.x - a.x; var d = c.y - a.y; a = c.z - a.z; var c = Math.sqrt(Math.pow(b, 2) + Math.pow(d, 2) + Math.pow(a, 2)), e = Math.sqrt(Math.pow(b, 2) + Math.pow(d, 2)); 0 === e && (e = cc.FLT_EPSILON); 0 === c && (c = cc.FLT_EPSILON); a = Math.acos(a / c); b = 0 > b ? Math.PI - Math.asin(d / e) : Math.asin(d / e); return { newRadius: c / cc.Camera.getZEye(), zenith: a, azimuth: b } }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); a = this.sphericalRadius(); isNaN(this._radius) && (this._radius = a.newRadius); isNaN(this._angleZ) && (this._angleZ = cc.radiansToDegrees(a.zenith)); isNaN(this._angleX) && (this._angleX = cc.radiansToDegrees(a.azimuth)); this._radZ = cc.degreesToRadians(this._angleZ); this._radX = cc.degreesToRadians(this._angleX) }, clone: function () { var a = new cc.OrbitCamera; a.initWithDuration(this._duration, this._radius, this._deltaRadius, this._angleZ, this._deltaAngleZ, this._angleX, this._deltaAngleX); return a }, update: function (a) { a = this._computeEaseTime(a); var b = (this._radius + this._deltaRadius * a) * cc.Camera.getZEye(), c = this._radZ + this._radDeltaZ * a, d = this._radX + this._radDeltaX * a; a = Math.sin(c) * Math.cos(d) * b + this._centerXOrig; d = Math.sin(c) * Math.sin(d) * b + this._centerYOrig; b = Math.cos(c) * b + this._centerZOrig; this.target.getCamera().setEye(a, d, b) } }); cc.orbitCamera = function (a, b, c, d, e, f, g) { return new cc.OrbitCamera(a, b, c, d, e, f, g) }; cc.OrbitCamera.create = cc.orbitCamera; cc.ActionEase = cc.ActionInterval.extend({ _inner: null, ctor: function (a) { cc.ActionInterval.prototype.ctor.call(this); a && this.initWithAction(a) }, initWithAction: function (a) { if (!a) throw "cc.ActionEase.initWithAction(): action must be non nil"; return this.initWithDuration(a.getDuration()) ? (this._inner = a, !0) : !1 }, clone: function () { var a = new cc.ActionEase; a.initWithAction(this._inner.clone()); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._inner.startWithTarget(this.target) }, stop: function () { this._inner.stop(); cc.ActionInterval.prototype.stop.call(this) }, update: function (a) { this._inner.update(a) }, reverse: function () { return new cc.ActionEase(this._inner.reverse()) }, getInnerAction: function () { return this._inner } }); cc.actionEase = function (a) { return new cc.ActionEase(a) }; cc.ActionEase.create = cc.actionEase; cc.EaseRateAction = cc.ActionEase.extend({ _rate: 0, ctor: function (a, b) { cc.ActionEase.prototype.ctor.call(this); void 0 !== b && this.initWithAction(a, b) }, setRate: function (a) { this._rate = a }, getRate: function () { return this._rate }, initWithAction: function (a, b) { return cc.ActionEase.prototype.initWithAction.call(this, a) ? (this._rate = b, !0) : !1 }, clone: function () { var a = new cc.EaseRateAction; a.initWithAction(this._inner.clone(), this._rate); return a }, reverse: function () { return new cc.EaseRateAction(this._inner.reverse(), 1 / this._rate) } }); cc.easeRateAction = function (a, b) { return new cc.EaseRateAction(a, b) }; cc.EaseRateAction.create = cc.easeRateAction; cc.EaseIn = cc.EaseRateAction.extend({ update: function (a) { this._inner.update(Math.pow(a, this._rate)) }, reverse: function () { return new cc.EaseIn(this._inner.reverse(), 1 / this._rate) }, clone: function () { var a = new cc.EaseIn; a.initWithAction(this._inner.clone(), this._rate); return a } }); cc.EaseIn.create = function (a, b) { return new cc.EaseIn(a, b) }; cc.easeIn = function (a) { return { _rate: a, easing: function (a) { return Math.pow(a, this._rate) }, reverse: function () { return cc.easeIn(1 / this._rate) } } }; cc.EaseOut = cc.EaseRateAction.extend({ update: function (a) { this._inner.update(Math.pow(a, 1 / this._rate)) }, reverse: function () { return new cc.EaseOut(this._inner.reverse(), 1 / this._rate) }, clone: function () { var a = new cc.EaseOut; a.initWithAction(this._inner.clone(), this._rate); return a } }); cc.EaseOut.create = function (a, b) { return new cc.EaseOut(a, b) }; cc.easeOut = function (a) { return { _rate: a, easing: function (a) { return Math.pow(a, 1 / this._rate) }, reverse: function () { return cc.easeOut(1 / this._rate) } } }; cc.EaseInOut = cc.EaseRateAction.extend({ update: function (a) { a *= 2; 1 > a ? this._inner.update(0.5 * Math.pow(a, this._rate)) : this._inner.update(1 - 0.5 * Math.pow(2 - a, this._rate)) }, clone: function () { var a = new cc.EaseInOut; a.initWithAction(this._inner.clone(), this._rate); return a }, reverse: function () { return new cc.EaseInOut(this._inner.reverse(), this._rate) } }); cc.EaseInOut.create = function (a, b) { return new cc.EaseInOut(a, b) }; cc.easeInOut = function (a) { return { _rate: a, easing: function (a) { a *= 2; return 1 > a ? 0.5 * Math.pow(a, this._rate) : 1 - 0.5 * Math.pow(2 - a, this._rate) }, reverse: function () { return cc.easeInOut(this._rate) } } }; cc.EaseExponentialIn = cc.ActionEase.extend({ update: function (a) { this._inner.update(0 === a ? 0 : Math.pow(2, 10 * (a - 1))) }, reverse: function () { return new cc.EaseExponentialOut(this._inner.reverse()) }, clone: function () { var a = new cc.EaseExponentialIn; a.initWithAction(this._inner.clone()); return a } }); cc.EaseExponentialIn.create = function (a) { return new cc.EaseExponentialIn(a) }; cc._easeExponentialInObj = { easing: function (a) { return 0 === a ? 0 : Math.pow(2, 10 * (a - 1)) }, reverse: function () { return cc._easeExponentialOutObj } }; cc.easeExponentialIn = function () { return cc._easeExponentialInObj }; cc.EaseExponentialOut = cc.ActionEase.extend({ update: function (a) { this._inner.update(1 == a ? 1 : -Math.pow(2, -10 * a) + 1) }, reverse: function () { return new cc.EaseExponentialIn(this._inner.reverse()) }, clone: function () { var a = new cc.EaseExponentialOut; a.initWithAction(this._inner.clone()); return a } }); cc.EaseExponentialOut.create = function (a) { return new cc.EaseExponentialOut(a) }; cc._easeExponentialOutObj = { easing: function (a) { return 1 == a ? 1 : -Math.pow(2, -10 * a) + 1 }, reverse: function () { return cc._easeExponentialInObj } }; cc.easeExponentialOut = function () { return cc._easeExponentialOutObj }; cc.EaseExponentialInOut = cc.ActionEase.extend({ update: function (a) { 1 != a && 0 !== a && (a *= 2, a = 1 > a ? 0.5 * Math.pow(2, 10 * (a - 1)) : 0.5 * (-Math.pow(2, -10 * (a - 1)) + 2)); this._inner.update(a) }, reverse: function () { return new cc.EaseExponentialInOut(this._inner.reverse()) }, clone: function () { var a = new cc.EaseExponentialInOut; a.initWithAction(this._inner.clone()); return a } }); cc.EaseExponentialInOut.create = function (a) { return new cc.EaseExponentialInOut(a) }; cc._easeExponentialInOutObj = { easing: function (a) { return 1 !== a && 0 !== a ? (a *= 2, 1 > a ? 0.5 * Math.pow(2, 10 * (a - 1)) : 0.5 * (-Math.pow(2, -10 * (a - 1)) + 2)) : a }, reverse: function () { return cc._easeExponentialInOutObj } }; cc.easeExponentialInOut = function () { return cc._easeExponentialInOutObj }; cc.EaseSineIn = cc.ActionEase.extend({ update: function (a) { a = 0 === a || 1 === a ? a : -1 * Math.cos(a * Math.PI / 2) + 1; this._inner.update(a) }, reverse: function () { return new cc.EaseSineOut(this._inner.reverse()) }, clone: function () { var a = new cc.EaseSineIn; a.initWithAction(this._inner.clone()); return a } }); cc.EaseSineIn.create = function (a) { return new cc.EaseSineIn(a) }; cc._easeSineInObj = { easing: function (a) { return 0 === a || 1 === a ? a : -1 * Math.cos(a * Math.PI / 2) + 1 }, reverse: function () { return cc._easeSineOutObj } }; cc.easeSineIn = function () { return cc._easeSineInObj }; cc.EaseSineOut = cc.ActionEase.extend({ update: function (a) { a = 0 === a || 1 === a ? a : Math.sin(a * Math.PI / 2); this._inner.update(a) }, reverse: function () { return new cc.EaseSineIn(this._inner.reverse()) }, clone: function () { var a = new cc.EaseSineOut; a.initWithAction(this._inner.clone()); return a } }); cc.EaseSineOut.create = function (a) { return new cc.EaseSineOut(a) }; cc._easeSineOutObj = { easing: function (a) { return 0 === a || 1 == a ? a : Math.sin(a * Math.PI / 2) }, reverse: function () { return cc._easeSineInObj } }; cc.easeSineOut = function () { return cc._easeSineOutObj }; cc.EaseSineInOut = cc.ActionEase.extend({ update: function (a) { a = 0 === a || 1 === a ? a : -0.5 * (Math.cos(Math.PI * a) - 1); this._inner.update(a) }, clone: function () { var a = new cc.EaseSineInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseSineInOut(this._inner.reverse()) } }); cc.EaseSineInOut.create = function (a) { return new cc.EaseSineInOut(a) }; cc._easeSineInOutObj = { easing: function (a) { return 0 === a || 1 === a ? a : -0.5 * (Math.cos(Math.PI * a) - 1) }, reverse: function () { return cc._easeSineInOutObj } }; cc.easeSineInOut = function () { return cc._easeSineInOutObj }; cc.EaseElastic = cc.ActionEase.extend({ _period: 0.3, ctor: function (a, b) { cc.ActionEase.prototype.ctor.call(this); a && this.initWithAction(a, b) }, getPeriod: function () { return this._period }, setPeriod: function (a) { this._period = a }, initWithAction: function (a, b) { cc.ActionEase.prototype.initWithAction.call(this, a); this._period = null == b ? 0.3 : b; return !0 }, reverse: function () { cc.log("cc.EaseElastic.reverse(): it should be overridden in subclass."); return null }, clone: function () { var a = new cc.EaseElastic; a.initWithAction(this._inner.clone(), this._period); return a } }); cc.EaseElastic.create = function (a, b) { return new cc.EaseElastic(a, b) }; cc.EaseElasticIn = cc.EaseElastic.extend({ update: function (a) { var b = 0; 0 === a || 1 === a ? b = a : (b = this._period / 4, a -= 1, b = -Math.pow(2, 10 * a) * Math.sin((a - b) * Math.PI * 2 / this._period)); this._inner.update(b) }, reverse: function () { return new cc.EaseElasticOut(this._inner.reverse(), this._period) }, clone: function () { var a = new cc.EaseElasticIn; a.initWithAction(this._inner.clone(), this._period); return a } }); cc.EaseElasticIn.create = function (a, b) { return new cc.EaseElasticIn(a, b) }; cc._easeElasticInObj = { easing: function (a) { if (0 === a || 1 === a) return a; a -= 1; return -Math.pow(2, 10 * a) * Math.sin((a - 0.075) * Math.PI * 2 / 0.3) }, reverse: function () { return cc._easeElasticOutObj } }; cc.easeElasticIn = function (a) { return a && 0.3 !== a ? { _period: a, easing: function (a) { if (0 === a || 1 === a) return a; a -= 1; return -Math.pow(2, 10 * a) * Math.sin((a - this._period / 4) * Math.PI * 2 / this._period) }, reverse: function () { return cc.easeElasticOut(this._period) } } : cc._easeElasticInObj }; cc.EaseElasticOut = cc.EaseElastic.extend({ update: function (a) { var b = 0; 0 === a || 1 == a ? b = a : (b = this._period / 4, b = Math.pow(2, -10 * a) * Math.sin((a - b) * Math.PI * 2 / this._period) + 1); this._inner.update(b) }, reverse: function () { return new cc.EaseElasticIn(this._inner.reverse(), this._period) }, clone: function () { var a = new cc.EaseElasticOut; a.initWithAction(this._inner.clone(), this._period); return a } }); cc.EaseElasticOut.create = function (a, b) { return new cc.EaseElasticOut(a, b) }; cc._easeElasticOutObj = { easing: function (a) { return 0 === a || 1 === a ? a : Math.pow(2, -10 * a) * Math.sin((a - 0.075) * Math.PI * 2 / 0.3) + 1 }, reverse: function () { return cc._easeElasticInObj } }; cc.easeElasticOut = function (a) { return a && 0.3 !== a ? { _period: a, easing: function (a) { return 0 === a || 1 === a ? a : Math.pow(2, -10 * a) * Math.sin((a - this._period / 4) * Math.PI * 2 / this._period) + 1 }, reverse: function () { return cc.easeElasticIn(this._period) } } : cc._easeElasticOutObj }; cc.EaseElasticInOut = cc.EaseElastic.extend({ update: function (a) { var b = 0, b = this._period; if (0 === a || 1 == a) b = a; else { b || (b = this._period = 0.3 * 1.5); var c = b / 4; a = 2 * a - 1; b = 0 > a ? -0.5 * Math.pow(2, 10 * a) * Math.sin((a - c) * Math.PI * 2 / b) : Math.pow(2, -10 * a) * Math.sin((a - c) * Math.PI * 2 / b) * 0.5 + 1 } this._inner.update(b) }, reverse: function () { return new cc.EaseElasticInOut(this._inner.reverse(), this._period) }, clone: function () { var a = new cc.EaseElasticInOut; a.initWithAction(this._inner.clone(), this._period); return a } }); cc.EaseElasticInOut.create = function (a, b) { return new cc.EaseElasticInOut(a, b) }; cc.easeElasticInOut = function (a) { return { _period: a || 0.3, easing: function (a) { var c = 0, c = this._period; if (0 === a || 1 === a) c = a; else { c || (c = this._period = 0.3 * 1.5); var d = c / 4; a = 2 * a - 1; c = 0 > a ? -0.5 * Math.pow(2, 10 * a) * Math.sin((a - d) * Math.PI * 2 / c) : Math.pow(2, -10 * a) * Math.sin((a - d) * Math.PI * 2 / c) * 0.5 + 1 } return c }, reverse: function () { return cc.easeElasticInOut(this._period) } } }; cc.EaseBounce = cc.ActionEase.extend({ bounceTime: function (a) { if (a < 1 / 2.75) return 7.5625 * a * a; if (a < 2 / 2.75) return a -= 1.5 / 2.75, 7.5625 * a * a + 0.75; if (a < 2.5 / 2.75) return a -= 2.25 / 2.75, 7.5625 * a * a + 0.9375; a -= 2.625 / 2.75; return 7.5625 * a * a + 0.984375 }, clone: function () { var a = new cc.EaseBounce; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseBounce(this._inner.reverse()) } }); cc.EaseBounce.create = function (a) { return new cc.EaseBounce(a) }; cc.EaseBounceIn = cc.EaseBounce.extend({ update: function (a) { a = 1 - this.bounceTime(1 - a); this._inner.update(a) }, reverse: function () { return new cc.EaseBounceOut(this._inner.reverse()) }, clone: function () { var a = new cc.EaseBounceIn; a.initWithAction(this._inner.clone()); return a } }); cc.EaseBounceIn.create = function (a) { return new cc.EaseBounceIn(a) }; cc._bounceTime = function (a) { if (a < 1 / 2.75) return 7.5625 * a * a; if (a < 2 / 2.75) return a -= 1.5 / 2.75, 7.5625 * a * a + 0.75; if (a < 2.5 / 2.75) return a -= 2.25 / 2.75, 7.5625 * a * a + 0.9375; a -= 2.625 / 2.75; return 7.5625 * a * a + 0.984375 }; cc._easeBounceInObj = { easing: function (a) { return 1 - cc._bounceTime(1 - a) }, reverse: function () { return cc._easeBounceOutObj } }; cc.easeBounceIn = function () { return cc._easeBounceInObj }; cc.EaseBounceOut = cc.EaseBounce.extend({ update: function (a) { a = this.bounceTime(a); this._inner.update(a) }, reverse: function () { return new cc.EaseBounceIn(this._inner.reverse()) }, clone: function () { var a = new cc.EaseBounceOut; a.initWithAction(this._inner.clone()); return a } }); cc.EaseBounceOut.create = function (a) { return new cc.EaseBounceOut(a) }; cc._easeBounceOutObj = { easing: function (a) { return cc._bounceTime(a) }, reverse: function () { return cc._easeBounceInObj } }; cc.easeBounceOut = function () { return cc._easeBounceOutObj }; cc.EaseBounceInOut = cc.EaseBounce.extend({ update: function (a) { var b = 0, b = 0.5 > a ? 0.5 * (1 - this.bounceTime(1 - 2 * a)) : 0.5 * this.bounceTime(2 * a - 1) + 0.5; this._inner.update(b) }, clone: function () { var a = new cc.EaseBounceInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseBounceInOut(this._inner.reverse()) } }); cc.EaseBounceInOut.create = function (a) { return new cc.EaseBounceInOut(a) }; cc._easeBounceInOutObj = { easing: function (a) { return a = 0.5 > a ? 0.5 * (1 - cc._bounceTime(1 - 2 * a)) : 0.5 * cc._bounceTime(2 * a - 1) + 0.5 }, reverse: function () { return cc._easeBounceInOutObj } }; cc.easeBounceInOut = function () { return cc._easeBounceInOutObj }; cc.EaseBackIn = cc.ActionEase.extend({ update: function (a) { this._inner.update(0 === a || 1 == a ? a : a * a * (2.70158 * a - 1.70158)) }, reverse: function () { return new cc.EaseBackOut(this._inner.reverse()) }, clone: function () { var a = new cc.EaseBackIn; a.initWithAction(this._inner.clone()); return a } }); cc.EaseBackIn.create = function (a) { return new cc.EaseBackIn(a) }; cc._easeBackInObj = { easing: function (a) { return 0 === a || 1 === a ? a : a * a * (2.70158 * a - 1.70158) }, reverse: function () { return cc._easeBackOutObj } }; cc.easeBackIn = function () { return cc._easeBackInObj }; cc.EaseBackOut = cc.ActionEase.extend({ update: function (a) { a -= 1; this._inner.update(a * a * (2.70158 * a + 1.70158) + 1) }, reverse: function () { return new cc.EaseBackIn(this._inner.reverse()) }, clone: function () { var a = new cc.EaseBackOut; a.initWithAction(this._inner.clone()); return a } }); cc.EaseBackOut.create = function (a) { return new cc.EaseBackOut(a) }; cc._easeBackOutObj = { easing: function (a) { a -= 1; return a * a * (2.70158 * a + 1.70158) + 1 }, reverse: function () { return cc._easeBackInObj } }; cc.easeBackOut = function () { return cc._easeBackOutObj }; cc.EaseBackInOut = cc.ActionEase.extend({ update: function (a) { a *= 2; 1 > a ? this._inner.update(a * a * (3.5949095 * a - 2.5949095) / 2) : (a -= 2, this._inner.update(a * a * (3.5949095 * a + 2.5949095) / 2 + 1)) }, clone: function () { var a = new cc.EaseBackInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseBackInOut(this._inner.reverse()) } }); cc.EaseBackInOut.create = function (a) { return new cc.EaseBackInOut(a) }; cc._easeBackInOutObj = { easing: function (a) { a *= 2; if (1 > a) return a * a * (3.5949095 * a - 2.5949095) / 2; a -= 2; return a * a * (3.5949095 * a + 2.5949095) / 2 + 1 }, reverse: function () { return cc._easeBackInOutObj } }; cc.easeBackInOut = function () { return cc._easeBackInOutObj }; cc.EaseBezierAction = cc.ActionEase.extend({ _p0: null, _p1: null, _p2: null, _p3: null, ctor: function (a) { cc.ActionEase.prototype.ctor.call(this, a) }, _updateTime: function (a, b, c, d, e) { return Math.pow(1 - e, 3) * a + 3 * e * Math.pow(1 - e, 2) * b + 3 * Math.pow(e, 2) * (1 - e) * c + Math.pow(e, 3) * d }, update: function (a) { a = this._updateTime(this._p0, this._p1, this._p2, this._p3, a); this._inner.update(a) }, clone: function () { var a = new cc.EaseBezierAction; a.initWithAction(this._inner.clone()); a.setBezierParamer(this._p0, this._p1, this._p2, this._p3); return a }, reverse: function () { var a = new cc.EaseBezierAction(this._inner.reverse()); a.setBezierParamer(this._p3, this._p2, this._p1, this._p0); return a }, setBezierParamer: function (a, b, c, d) { this._p0 = a || 0; this._p1 = b || 0; this._p2 = c || 0; this._p3 = d || 0 } }); cc.EaseBezierAction.create = function (a) { return new cc.EaseBezierAction(a) }; cc.easeBezierAction = function (a, b, c, d) { return { easing: function (e) { return cc.EaseBezierAction.prototype._updateTime(a, b, c, d, e) }, reverse: function () { return cc.easeBezierAction(d, c, b, a) } } }; cc.EaseQuadraticActionIn = cc.ActionEase.extend({ _updateTime: function (a) { return Math.pow(a, 2) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuadraticActionIn; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuadraticActionIn(this._inner.reverse()) } }); cc.EaseQuadraticActionIn.create = function (a) { return new cc.EaseQuadraticActionIn(a) }; cc._easeQuadraticActionIn = { easing: cc.EaseQuadraticActionIn.prototype._updateTime, reverse: function () { return cc._easeQuadraticActionIn } }; cc.easeQuadraticActionIn = function () { return cc._easeQuadraticActionIn }; cc.EaseQuadraticActionOut = cc.ActionEase.extend({ _updateTime: function (a) { return -a * (a - 2) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuadraticActionOut; a.initWithAction(); return a }, reverse: function () { return new cc.EaseQuadraticActionOut(this._inner.reverse()) } }); cc.EaseQuadraticActionOut.create = function (a) { return new cc.EaseQuadraticActionOut(a) }; cc._easeQuadraticActionOut = { easing: cc.EaseQuadraticActionOut.prototype._updateTime, reverse: function () { return cc._easeQuadraticActionOut } }; cc.easeQuadraticActionOut = function () { return cc._easeQuadraticActionOut }; cc.EaseQuadraticActionInOut = cc.ActionEase.extend({ _updateTime: function (a) { var b = a; a *= 2; 1 > a ? b = a * a * 0.5 : (--a, b = -0.5 * (a * (a - 2) - 1)); return b }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuadraticActionInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuadraticActionInOut(this._inner.reverse()) } }); cc.EaseQuadraticActionInOut.create = function (a) { return new cc.EaseQuadraticActionInOut(a) }; cc._easeQuadraticActionInOut = { easing: cc.EaseQuadraticActionInOut.prototype._updateTime, reverse: function () { return cc._easeQuadraticActionInOut } }; cc.easeQuadraticActionInOut = function () { return cc._easeQuadraticActionInOut }; cc.EaseQuarticActionIn = cc.ActionEase.extend({ _updateTime: function (a) { return a * a * a * a }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuarticActionIn; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuarticActionIn(this._inner.reverse()) } }); cc.EaseQuarticActionIn.create = function (a) { return new cc.EaseQuarticActionIn(a) }; cc._easeQuarticActionIn = { easing: cc.EaseQuarticActionIn.prototype._updateTime, reverse: function () { return cc._easeQuarticActionIn } }; cc.easeQuarticActionIn = function () { return cc._easeQuarticActionIn }; cc.EaseQuarticActionOut = cc.ActionEase.extend({ _updateTime: function (a) { a -= 1; return -(a * a * a * a - 1) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuarticActionOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuarticActionOut(this._inner.reverse()) } }); cc.EaseQuarticActionOut.create = function (a) { return new cc.EaseQuarticActionOut(a) }; cc._easeQuarticActionOut = { easing: cc.EaseQuarticActionOut.prototype._updateTime, reverse: function () { return cc._easeQuarticActionOut } }; cc.easeQuarticActionOut = function () { return cc._easeQuarticActionOut }; cc.EaseQuarticActionInOut = cc.ActionEase.extend({ _updateTime: function (a) { a *= 2; if (1 > a) return 0.5 * a * a * a * a; a -= 2; return -0.5 * (a * a * a * a - 2) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuarticActionInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuarticActionInOut(this._inner.reverse()) } }); cc.EaseQuarticActionInOut.create = function (a) { return new cc.EaseQuarticActionInOut(a) }; cc._easeQuarticActionInOut = { easing: cc.EaseQuarticActionInOut.prototype._updateTime, reverse: function () { return cc._easeQuarticActionInOut } }; cc.easeQuarticActionInOut = function () { return cc._easeQuarticActionInOut }; cc.EaseQuinticActionIn = cc.ActionEase.extend({ _updateTime: function (a) { return a * a * a * a * a }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuinticActionIn; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuinticActionIn(this._inner.reverse()) } }); cc.EaseQuinticActionIn.create = function (a) { return new cc.EaseQuinticActionIn(a) }; cc._easeQuinticActionIn = { easing: cc.EaseQuinticActionIn.prototype._updateTime, reverse: function () { return cc._easeQuinticActionIn } }; cc.easeQuinticActionIn = function () { return cc._easeQuinticActionIn }; cc.EaseQuinticActionOut = cc.ActionEase.extend({ _updateTime: function (a) { a -= 1; return a * a * a * a * a + 1 }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuinticActionOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuinticActionOut(this._inner.reverse()) } }); cc.EaseQuinticActionOut.create = function (a) { return new cc.EaseQuinticActionOut(a) }; cc._easeQuinticActionOut = { easing: cc.EaseQuinticActionOut.prototype._updateTime, reverse: function () { return cc._easeQuinticActionOut } }; cc.easeQuinticActionOut = function () { return cc._easeQuinticActionOut }; cc.EaseQuinticActionInOut = cc.ActionEase.extend({ _updateTime: function (a) { a *= 2; if (1 > a) return 0.5 * a * a * a * a * a; a -= 2; return 0.5 * (a * a * a * a * a + 2) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseQuinticActionInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseQuinticActionInOut(this._inner.reverse()) } }); cc.EaseQuinticActionInOut.create = function (a) { return new cc.EaseQuinticActionInOut(a) }; cc._easeQuinticActionInOut = { easing: cc.EaseQuinticActionInOut.prototype._updateTime, reverse: function () { return cc._easeQuinticActionInOut } }; cc.easeQuinticActionInOut = function () { return cc._easeQuinticActionInOut }; cc.EaseCircleActionIn = cc.ActionEase.extend({ _updateTime: function (a) { return -1 * (Math.sqrt(1 - a * a) - 1) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCircleActionIn; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCircleActionIn(this._inner.reverse()) } }); cc.EaseCircleActionIn.create = function (a) { return new cc.EaseCircleActionIn(a) }; cc._easeCircleActionIn = { easing: cc.EaseCircleActionIn.prototype._updateTime, reverse: function () { return cc._easeCircleActionIn } }; cc.easeCircleActionIn = function () { return cc._easeCircleActionIn }; cc.EaseCircleActionOut = cc.ActionEase.extend({ _updateTime: function (a) { a -= 1; return Math.sqrt(1 - a * a) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCircleActionOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCircleActionOut(this._inner.reverse()) } }); cc.EaseCircleActionOut.create = function (a) { return new cc.EaseCircleActionOut(a) }; cc._easeCircleActionOut = { easing: cc.EaseCircleActionOut.prototype._updateTime, reverse: function () { return cc._easeCircleActionOut } }; cc.easeCircleActionOut = function () { return cc._easeCircleActionOut }; cc.EaseCircleActionInOut = cc.ActionEase.extend({ _updateTime: function (a) { a *= 2; if (1 > a) return -0.5 * (Math.sqrt(1 - a * a) - 1); a -= 2; return 0.5 * (Math.sqrt(1 - a * a) + 1) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCircleActionInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCircleActionInOut(this._inner.reverse()) } }); cc.EaseCircleActionInOut.create = function (a) { return new cc.EaseCircleActionInOut(a) }; cc._easeCircleActionInOut = { easing: cc.EaseCircleActionInOut.prototype._updateTime, reverse: function () { return cc._easeCircleActionInOut } }; cc.easeCircleActionInOut = function () { return cc._easeCircleActionInOut }; cc.EaseCubicActionIn = cc.ActionEase.extend({ _updateTime: function (a) { return a * a * a }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCubicActionIn; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCubicActionIn(this._inner.reverse()) } }); cc.EaseCubicActionIn.create = function (a) { return new cc.EaseCubicActionIn(a) }; cc._easeCubicActionIn = { easing: cc.EaseCubicActionIn.prototype._updateTime, reverse: function () { return cc._easeCubicActionIn } }; cc.easeCubicActionIn = function () { return cc._easeCubicActionIn }; cc.EaseCubicActionOut = cc.ActionEase.extend({ _updateTime: function (a) { a -= 1; return a * a * a + 1 }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCubicActionOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCubicActionOut(this._inner.reverse()) } }); cc.EaseCubicActionOut.create = function (a) { return new cc.EaseCubicActionOut(a) }; cc._easeCubicActionOut = { easing: cc.EaseCubicActionOut.prototype._updateTime, reverse: function () { return cc._easeCubicActionOut } }; cc.easeCubicActionOut = function () { return cc._easeCubicActionOut }; cc.EaseCubicActionInOut = cc.ActionEase.extend({ _updateTime: function (a) { a *= 2; if (1 > a) return 0.5 * a * a * a; a -= 2; return 0.5 * (a * a * a + 2) }, update: function (a) { this._inner.update(this._updateTime(a)) }, clone: function () { var a = new cc.EaseCubicActionInOut; a.initWithAction(this._inner.clone()); return a }, reverse: function () { return new cc.EaseCubicActionInOut(this._inner.reverse()) } }); cc.EaseCubicActionInOut.create = function (a) { return new cc.EaseCubicActionInOut(a) }; cc._easeCubicActionInOut = { easing: cc.EaseCubicActionInOut.prototype._updateTime, reverse: function () { return cc._easeCubicActionInOut } }; cc.easeCubicActionInOut = function () { return cc._easeCubicActionInOut }; cc.cardinalSplineAt = function (a, b, c, d, e, f) { var g = f * f, h = g * f, k = (1 - e) / 2; e = k * (-h + 2 * g - f); var m = k * (-h + g) + (2 * h - 3 * g + 1); f = k * (h - 2 * g + f) + (-2 * h + 3 * g); g = k * (h - g); return cc.p(a.x * e + b.x * m + c.x * f + d.x * g, a.y * e + b.y * m + c.y * f + d.y * g) }; cc.reverseControlPoints = function (a) { for (var b = [], c = a.length - 1; 0 <= c; c--) b.push(cc.p(a[c].x, a[c].y)); return b }; cc.cloneControlPoints = function (a) { for (var b = [], c = 0; c < a.length; c++) b.push(cc.p(a[c].x, a[c].y)); return b }; cc.copyControlPoints = cc.cloneControlPoints; cc.getControlPointAt = function (a, b) { var c = Math.min(a.length - 1, Math.max(b, 0)); return a[c] }; cc.reverseControlPointsInline = function (a) { for (var b = a.length, c = 0 | b / 2, d = 0; d < c; ++d) { var e = a[d]; a[d] = a[b - d - 1]; a[b - d - 1] = e } }; cc.CardinalSplineTo = cc.ActionInterval.extend({ _points: null, _deltaT: 0, _tension: 0, _previousPosition: null, _accumulatedDiff: null, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); this._points = []; void 0 !== c && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { if (!b || 0 == b.length) throw "Invalid configuration. It must at least have one control point"; return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this.setPoints(b), this._tension = c, !0) : !1 }, clone: function () { var a = new cc.CardinalSplineTo; a.initWithDuration(this._duration, cc.copyControlPoints(this._points), this._tension); return a }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._deltaT = 1 / (this._points.length - 1); this._previousPosition = cc.p(this.target.getPositionX(), this.target.getPositionY()); this._accumulatedDiff = cc.p(0, 0) }, update: function (a) { a = this._computeEaseTime(a); var b, c = this._points; if (1 == a) b = c.length - 1, a = 1; else { var d = this._deltaT; b = 0 | a / d; a = (a - d * b) / d } b = cc.cardinalSplineAt(cc.getControlPointAt(c, b - 1), cc.getControlPointAt(c, b - 0), cc.getControlPointAt(c, b + 1), cc.getControlPointAt(c, b + 2), this._tension, a); cc.ENABLE_STACKABLE_ACTIONS && (c = this.target.getPositionX() - this._previousPosition.x, a = this.target.getPositionY() - this._previousPosition.y, 0 != c || 0 != a) && (d = this._accumulatedDiff, c = d.x + c, a = d.y + a, d.x = c, d.y = a, b.x += c, b.y += a); this.updatePosition(b) }, reverse: function () { var a = cc.reverseControlPoints(this._points); return cc.cardinalSplineTo(this._duration, a, this._tension) }, updatePosition: function (a) { this.target.setPosition(a); this._previousPosition = a }, getPoints: function () { return this._points }, setPoints: function (a) { this._points = a } }); cc.cardinalSplineTo = function (a, b, c) { return new cc.CardinalSplineTo(a, b, c) }; cc.CardinalSplineTo.create = cc.cardinalSplineTo; cc.CardinalSplineBy = cc.CardinalSplineTo.extend({ _startPosition: null, ctor: function (a, b, c) { cc.CardinalSplineTo.prototype.ctor.call(this); this._startPosition = cc.p(0, 0); void 0 !== c && this.initWithDuration(a, b, c) }, startWithTarget: function (a) { cc.CardinalSplineTo.prototype.startWithTarget.call(this, a); this._startPosition.x = a.getPositionX(); this._startPosition.y = a.getPositionY() }, reverse: function () { for (var a = this._points.slice(), b, c = a[0], d = 1; d < a.length; ++d) b = a[d], a[d] = cc.pSub(b, c), c = b; a = cc.reverseControlPoints(a); c = a[a.length - 1]; a.pop(); c.x = -c.x; c.y = -c.y; a.unshift(c); for (d = 1; d < a.length; ++d) b = a[d], b.x = -b.x, b.y = -b.y, b.x += c.x, b.y += c.y, c = a[d] = b; return cc.cardinalSplineBy(this._duration, a, this._tension) }, updatePosition: function (a) { var b = this._startPosition, c = a.x + b.x; a = a.y + b.y; this._previousPosition.x = c; this._previousPosition.y = a; this.target.setPosition(c, a) }, clone: function () { var a = new cc.CardinalSplineBy; a.initWithDuration(this._duration, cc.copyControlPoints(this._points), this._tension); return a } }); cc.cardinalSplineBy = function (a, b, c) { return new cc.CardinalSplineBy(a, b, c) }; cc.CardinalSplineBy.create = cc.cardinalSplineBy; cc.CatmullRomTo = cc.CardinalSplineTo.extend({ ctor: function (a, b) { b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.CardinalSplineTo.prototype.initWithDuration.call(this, a, b, 0.5) }, clone: function () { var a = new cc.CatmullRomTo; a.initWithDuration(this._duration, cc.copyControlPoints(this._points)); return a } }); cc.catmullRomTo = function (a, b) { return new cc.CatmullRomTo(a, b) }; cc.CatmullRomTo.create = cc.catmullRomTo; cc.CatmullRomBy = cc.CardinalSplineBy.extend({ ctor: function (a, b) { cc.CardinalSplineBy.prototype.ctor.call(this); b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.CardinalSplineTo.prototype.initWithDuration.call(this, a, b, 0.5) }, clone: function () { var a = new cc.CatmullRomBy; a.initWithDuration(this._duration, cc.copyControlPoints(this._points)); return a } }); cc.catmullRomBy = function (a, b) { return new cc.CatmullRomBy(a, b) }; cc.CatmullRomBy.create = cc.catmullRomBy; cc.ActionTweenDelegate = cc.Class.extend({ updateTweenAction: function (a, b) { } }); cc.ActionTween = cc.ActionInterval.extend({ key: "", from: 0, to: 0, delta: 0, ctor: function (a, b, c, d) { cc.ActionInterval.prototype.ctor.call(this); this.key = ""; void 0 !== d && this.initWithDuration(a, b, c, d) }, initWithDuration: function (a, b, c, d) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this.key = b, this.to = d, this.from = c, !0) : !1 }, startWithTarget: function (a) { if (!a || !a.updateTweenAction) throw "cc.ActionTween.startWithTarget(): target must be non-null, and target must implement updateTweenAction function"; cc.ActionInterval.prototype.startWithTarget.call(this, a); this.delta = this.to - this.from }, update: function (a) { this.target.updateTweenAction(this.to - this.delta * (1 - a), this.key) }, reverse: function () { return new cc.ActionTween(this.duration, this.key, this.to, this.from) }, clone: function () { var a = new cc.ActionTween; a.initWithDuration(this._duration, this.key, this.from, this.to); return a } }); cc.actionTween = function (a, b, c, d) { return new cc.ActionTween(a, b, c, d) }; cc.ActionTween.create = cc.actionTween; cc._globalFontSize = cc.ITEM_SIZE; cc._globalFontName = "Arial"; cc._globalFontNameRelease = !1; cc.MenuItem = cc.Node.extend({ _enabled: !1, _target: null, _callback: null, _isSelected: !1, _className: "MenuItem", ctor: function (a, b) { var c = cc.Node.prototype; c.ctor.call(this); this._callback = this._target = null; this._enabled = this._isSelected = !1; c.setAnchorPoint.call(this, 0.5, 0.5); this._target = b || null; if (this._callback = a || null) this._enabled = !0 }, isSelected: function () { return this._isSelected }, setOpacityModifyRGB: function (a) { }, isOpacityModifyRGB: function () { return !1 }, setTarget: function (a, b) { this._target = b; this._callback = a }, isEnabled: function () { return this._enabled }, setEnabled: function (a) { this._enabled = a }, initWithCallback: function (a, b) { this.anchorY = this.anchorX = 0.5; this._target = b; this._callback = a; this._enabled = !0; this._isSelected = !1; return !0 }, rect: function () { var a = this._position, b = this._contentSize, c = this._anchorPoint; return cc.rect(a.x - b.width * c.x, a.y - b.height * c.y, b.width, b.height) }, selected: function () { this._isSelected = !0 }, unselected: function () { this._isSelected = !1 }, setCallback: function (a, b) { this._target = b; this._callback = a }, activate: function () { if (this._enabled) { var a = this._target, b = this._callback; if (b) if (a && cc.isString(b)) a[b](this); else a && cc.isFunction(b) ? b.call(a, this) : b(this) } } }); _p = cc.MenuItem.prototype; cc.defineGetterSetter(_p, "enabled", _p.isEnabled, _p.setEnabled); cc.MenuItem.create = function (a, b) { return new cc.MenuItem(a, b) }; cc.MenuItemLabel = cc.MenuItem.extend({ _disabledColor: null, _label: null, _orginalScale: 0, _colorBackup: null, ctor: function (a, b, c) { cc.MenuItem.prototype.ctor.call(this, b, c); this._label = this._disabledColor = null; this._orginalScale = 0; this._colorBackup = null; a && (this._originalScale = 1, this._colorBackup = cc.color.WHITE, this._disabledColor = cc.color(126, 126, 126), this.setLabel(a), this.cascadeOpacity = this.cascadeColor = !0) }, getDisabledColor: function () { return this._disabledColor }, setDisabledColor: function (a) { this._disabledColor = a }, getLabel: function () { return this._label }, setLabel: function (a) { a && (this.addChild(a), a.anchorX = 0, a.anchorY = 0, this.width = a.width, this.height = a.height); this._label && this.removeChild(this._label, !0); this._label = a }, setEnabled: function (a) { if (this._enabled != a) { var b = this._label; a ? b.color = this._colorBackup : (this._colorBackup = b.color, b.color = this._disabledColor) } cc.MenuItem.prototype.setEnabled.call(this, a) }, setOpacity: function (a) { this._label.opacity = a }, getOpacity: function () { return this._label.opacity }, setColor: function (a) { this._label.color = a }, getColor: function () { return this._label.color }, initWithLabel: function (a, b, c) { this.initWithCallback(b, c); this._originalScale = 1; this._colorBackup = cc.color.WHITE; this._disabledColor = cc.color(126, 126, 126); this.setLabel(a); return this.cascadeOpacity = this.cascadeColor = !0 }, setString: function (a) { this._label.string = a; this.width = this._label.width; this.height = this._label.height }, getString: function () { return this._label.string }, activate: function () { this._enabled && (this.stopAllActions(), this.scale = this._originalScale, cc.MenuItem.prototype.activate.call(this)) }, selected: function () { if (this._enabled) { cc.MenuItem.prototype.selected.call(this); var a = this.getActionByTag(cc.ZOOM_ACTION_TAG); a ? this.stopAction(a) : this._originalScale = this.scale; a = cc.ScaleTo.create(0.1, 1.2 * this._originalScale); a.setTag(cc.ZOOM_ACTION_TAG); this.runAction(a) } }, unselected: function () { if (this._enabled) { cc.MenuItem.prototype.unselected.call(this); this.stopActionByTag(cc.ZOOM_ACTION_TAG); var a = cc.ScaleTo.create(0.1, this._originalScale); a.setTag(cc.ZOOM_ACTION_TAG); this.runAction(a) } } }); _p = cc.MenuItemLabel.prototype; cc.defineGetterSetter(_p, "string", _p.getString, _p.setString); cc.defineGetterSetter(_p, "disabledColor", _p.getDisabledColor, _p.setDisabledColor); cc.defineGetterSetter(_p, "label", _p.getLabel, _p.setLabel); cc.MenuItemLabel.create = function (a, b, c) { return new cc.MenuItemLabel(a, b, c) }; cc.MenuItemAtlasFont = cc.MenuItemLabel.extend({ ctor: function (a, b, c, d, e, f, g) { var h; a && 0 < a.length && (h = cc.LabelAtlas.create(a, b, c, d, e)); cc.MenuItemLabel.prototype.ctor.call(this, h, f, g) }, initWithString: function (a, b, c, d, e, f, g) { if (!a || 0 == a.length) throw "cc.MenuItemAtlasFont.initWithString(): value should be non-null and its length should be greater than 0"; var h = new cc.LabelAtlas; h.initWithString(a, b, c, d, e); this.initWithLabel(h, f, g); return !0 } }); cc.MenuItemAtlasFont.create = function (a, b, c, d, e, f, g) { return new cc.MenuItemAtlasFont(a, b, c, d, e, f, g) }; cc.MenuItemFont = cc.MenuItemLabel.extend({ _fontSize: null, _fontName: null, ctor: function (a, b, c) { var d; a && 0 < a.length ? (this._fontName = cc._globalFontName, this._fontSize = cc._globalFontSize, d = cc.LabelTTF.create(a, this._fontName, this._fontSize)) : (this._fontSize = 0, this._fontName = ""); cc.MenuItemLabel.prototype.ctor.call(this, d, b, c) }, initWithString: function (a, b, c) { if (!a || 0 == a.length) throw "Value should be non-null and its length should be greater than 0"; this._fontName = cc._globalFontName; this._fontSize = cc._globalFontSize; a = cc.LabelTTF.create(a, this._fontName, this._fontSize); this.initWithLabel(a, b, c); return !0 }, setFontSize: function (a) { this._fontSize = a; this._recreateLabel() }, getFontSize: function () { return this._fontSize }, setFontName: function (a) { this._fontName = a; this._recreateLabel() }, getFontName: function () { return this._fontName }, _recreateLabel: function () { var a = cc.LabelTTF.create(this._label.string, this._fontName, this._fontSize); this.setLabel(a) } }); cc.MenuItemFont.setFontSize = function (a) { cc._globalFontSize = a }; cc.MenuItemFont.fontSize = function () { return cc._globalFontSize }; cc.MenuItemFont.setFontName = function (a) { cc._globalFontNameRelease && (cc._globalFontName = ""); cc._globalFontName = a; cc._globalFontNameRelease = !0 }; _p = cc.MenuItemFont.prototype; cc.defineGetterSetter(_p, "fontSize", _p.getFontSize, _p.setFontSize); cc.defineGetterSetter(_p, "fontName", _p.getFontName, _p.setFontName); cc.MenuItemFont.fontName = function () { return cc._globalFontName }; cc.MenuItemFont.create = function (a, b, c) { return new cc.MenuItemFont(a, b, c) }; cc.MenuItemSprite = cc.MenuItem.extend({ _normalImage: null, _selectedImage: null, _disabledImage: null, ctor: function (a, b, c, d, e) { cc.MenuItem.prototype.ctor.call(this); this._disabledImage = this._selectedImage = this._normalImage = null; if (void 0 !== b) { var f, g, h; void 0 !== e ? (f = c, h = d, g = e) : void 0 !== d && cc.isFunction(d) ? (f = c, h = d) : void 0 !== d && cc.isFunction(c) ? (g = d, h = c, f = cc.Sprite.create(b)) : void 0 === c && (f = cc.Sprite.create(b)); this.initWithNormalSprite(a, b, f, h, g) } }, getNormalImage: function () { return this._normalImage }, setNormalImage: function (a) { this._normalImage != a && (a && (this.addChild(a, 0, cc.NORMAL_TAG), a.anchorX = 0, a.anchorY = 0), this._normalImage && this.removeChild(this._normalImage, !0), this._normalImage = a, this.width = this._normalImage.width, this.height = this._normalImage.height, this._updateImagesVisibility(), a.textureLoaded && !a.textureLoaded() && a.addLoadedEventListener(function (a) { this.width = a.width; this.height = a.height }, this)) }, getSelectedImage: function () { return this._selectedImage }, setSelectedImage: function (a) { this._selectedImage != a && (a && (this.addChild(a, 0, cc.SELECTED_TAG), a.anchorX = 0, a.anchorY = 0), this._selectedImage && this.removeChild(this._selectedImage, !0), this._selectedImage = a, this._updateImagesVisibility()) }, getDisabledImage: function () { return this._disabledImage }, setDisabledImage: function (a) { this._disabledImage != a && (a && (this.addChild(a, 0, cc.DISABLE_TAG), a.anchorX = 0, a.anchorY = 0), this._disabledImage && this.removeChild(this._disabledImage, !0), this._disabledImage = a, this._updateImagesVisibility()) }, initWithNormalSprite: function (a, b, c, d, e) { this.initWithCallback(d, e); this.setNormalImage(a); this.setSelectedImage(b); this.setDisabledImage(c); if (a = this._normalImage) this.width = a.width, this.height = a.height, a.textureLoaded && !a.textureLoaded() && a.addLoadedEventListener(function (a) { this.width = a.width; this.height = a.height; this.cascadeOpacity = this.cascadeColor = !0 }, this); return this.cascadeOpacity = this.cascadeColor = !0 }, setColor: function (a) { this._normalImage.color = a; this._selectedImage && (this._selectedImage.color = a); this._disabledImage && (this._disabledImage.color = a) }, getColor: function () { return this._normalImage.color }, setOpacity: function (a) { this._normalImage.opacity = a; this._selectedImage && (this._selectedImage.opacity = a); this._disabledImage && (this._disabledImage.opacity = a) }, getOpacity: function () { return this._normalImage.opacity }, selected: function () { cc.MenuItem.prototype.selected.call(this); this._normalImage && (this._disabledImage && (this._disabledImage.visible = !1), this._selectedImage ? (this._normalImage.visible = !1, this._selectedImage.visible = !0) : this._normalImage.visible = !0) }, unselected: function () { cc.MenuItem.prototype.unselected.call(this); this._normalImage && (this._normalImage.visible = !0, this._selectedImage && (this._selectedImage.visible = !1), this._disabledImage && (this._disabledImage.visible = !1)) }, setEnabled: function (a) { this._enabled != a && (cc.MenuItem.prototype.setEnabled.call(this, a), this._updateImagesVisibility()) }, _updateImagesVisibility: function () { var a = this._normalImage, b = this._selectedImage, c = this._disabledImage; this._enabled ? (a && (a.visible = !0), b && (b.visible = !1), c && (c.visible = !1)) : c ? (a && (a.visible = !1), b && (b.visible = !1), c && (c.visible = !0)) : (a && (a.visible = !0), b && (b.visible = !1)) } }); _p = cc.MenuItemSprite.prototype; cc.defineGetterSetter(_p, "normalImage", _p.getNormalImage, _p.setNormalImage); cc.defineGetterSetter(_p, "selectedImage", _p.getSelectedImage, _p.setSelectedImage); cc.defineGetterSetter(_p, "disabledImage", _p.getDisabledImage, _p.setDisabledImage); cc.MenuItemSprite.create = function (a, b, c, d, e) { return new cc.MenuItemSprite(a, b, c, d, e || void 0) }; cc.MenuItemImage = cc.MenuItemSprite.extend({ ctor: function (a, b, c, d, e) { var f = null, g = null, h = null, k = null, m = null; void 0 === a ? cc.MenuItemSprite.prototype.ctor.call(this) : (f = cc.Sprite.create(a), b && (g = cc.Sprite.create(b)), void 0 === d ? k = c : void 0 === e ? (k = c, m = d) : e && (h = cc.Sprite.create(c), k = d, m = e), cc.MenuItemSprite.prototype.ctor.call(this, f, g, h, k, m)) }, setNormalSpriteFrame: function (a) { this.setNormalImage(cc.Sprite.create(a)) }, setSelectedSpriteFrame: function (a) { this.setSelectedImage(cc.Sprite.create(a)) }, setDisabledSpriteFrame: function (a) { this.setDisabledImage(cc.Sprite.create(a)) }, initWithNormalImage: function (a, b, c, d, e) { var f = null, g = null, h = null; a && (f = cc.Sprite.create(a)); b && (g = cc.Sprite.create(b)); c && (h = cc.Sprite.create(c)); return this.initWithNormalSprite(f, g, h, d, e) } }); cc.MenuItemImage.create = function (a, b, c, d, e) { return new cc.MenuItemImage(a, b, c, d, e) }; cc.MenuItemToggle = cc.MenuItem.extend({ subItems: null, _selectedIndex: 0, _opacity: null, _color: null, ctor: function () { cc.MenuItem.prototype.ctor.call(this); this._selectedIndex = 0; this.subItems = []; this._opacity = 0; this._color = cc.color.WHITE; 0 < arguments.length && this.initWithItems(Array.prototype.slice.apply(arguments)) }, getOpacity: function () { return this._opacity }, setOpacity: function (a) { this._opacity = a; if (this.subItems && 0 < this.subItems.length) for (var b = 0; b < this.subItems.length; b++) this.subItems[b].opacity = a; this._color.a = a }, getColor: function () { var a = this._color; return cc.color(a.r, a.g, a.b, a.a) }, setColor: function (a) { var b = this._color; b.r = a.r; b.g = a.g; b.b = a.b; if (this.subItems && 0 < this.subItems.length) for (b = 0; b < this.subItems.length; b++) this.subItems[b].setColor(a); void 0 === a.a || a.a_undefined || this.setOpacity(a.a) }, getSelectedIndex: function () { return this._selectedIndex }, setSelectedIndex: function (a) { if (a != this._selectedIndex) { this._selectedIndex = a; (a = this.getChildByTag(cc.CURRENT_ITEM)) && a.removeFromParent(!1); a = this.subItems[this._selectedIndex]; this.addChild(a, 0, cc.CURRENT_ITEM); var b = a.width, c = a.height; this.width = b; this.height = c; a.setPosition(b / 2, c / 2) } }, getSubItems: function () { return this.subItems }, setSubItems: function (a) { this.subItems = a }, initWithItems: function (a) { var b = a.length; cc.isFunction(a[a.length - 2]) ? (this.initWithCallback(a[a.length - 2], a[a.length - 1]), b -= 2) : cc.isFunction(a[a.length - 1]) ? (this.initWithCallback(a[a.length - 1], null), b -= 1) : this.initWithCallback(null, null); for (var c = this.subItems, d = c.length = 0; d < b; d++) a[d] && c.push(a[d]); this._selectedIndex = cc.UINT_MAX; this.setSelectedIndex(0); return this.cascadeOpacity = this.cascadeColor = !0 }, addSubItem: function (a) { this.subItems.push(a) }, activate: function () { this._enabled && this.setSelectedIndex((this._selectedIndex + 1) % this.subItems.length); cc.MenuItem.prototype.activate.call(this) }, selected: function () { cc.MenuItem.prototype.selected.call(this); this.subItems[this._selectedIndex].selected() }, unselected: function () { cc.MenuItem.prototype.unselected.call(this); this.subItems[this._selectedIndex].unselected() }, setEnabled: function (a) { if (this._enabled != a) { cc.MenuItem.prototype.setEnabled.call(this, a); var b = this.subItems; if (b && 0 < b.length) for (var c = 0; c < b.length; c++) b[c].enabled = a } }, selectedItem: function () { return this.subItems[this._selectedIndex] }, onEnter: function () { cc.Node.prototype.onEnter.call(this); this.setSelectedIndex(this._selectedIndex) } }); _p = cc.MenuItemToggle.prototype; cc.defineGetterSetter(_p, "selectedIndex", _p.getSelectedIndex, _p.setSelectedIndex); cc.MenuItemToggle.create = function () { 0 < arguments.length && null == arguments[arguments.length - 1] && cc.log("parameters should not be ending with null in Javascript"); var a = new cc.MenuItemToggle; a.initWithItems(Array.prototype.slice.apply(arguments)); return a }; cc.MENU_STATE_WAITING = 0; cc.MENU_STATE_TRACKING_TOUCH = 1; cc.MENU_HANDLER_PRIORITY = -128; cc.DEFAULT_PADDING = 5; cc.Menu = cc.Layer.extend({ enabled: !1, _selectedItem: null, _state: -1, _touchListener: null, _className: "Menu", ctor: function (a) { cc.Layer.prototype.ctor.call(this); this._color = cc.color.WHITE; this.enabled = !1; this._opacity = 255; this._selectedItem = null; this._state = -1; this._touchListener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: !0, onTouchBegan: this._onTouchBegan, onTouchMoved: this._onTouchMoved, onTouchEnded: this._onTouchEnded, onTouchCancelled: this._onTouchCancelled }); 0 < arguments.length && null == arguments[arguments.length - 1] && cc.log("parameters should not be ending with null in Javascript"); var b = arguments.length, c; if (0 == b) c = []; else if (1 == b) c = a instanceof Array ? a : [a]; else if (1 < b) { c = []; for (var d = 0; d < b; d++) arguments[d] && c.push(arguments[d]) } this.initWithArray(c) }, onEnter: function () { var a = this._touchListener; a._isRegistered() || cc.eventManager.addListener(a, this); cc.Node.prototype.onEnter.call(this) }, isEnabled: function () { return this.enabled }, setEnabled: function (a) { this.enabled = a }, initWithItems: function (a) { var b = []; if (a) for (var c = 0; c < a.length; c++) a[c] && b.push(a[c]); return this.initWithArray(b) }, initWithArray: function (a) { if (cc.Layer.prototype.init.call(this)) { this.enabled = !0; var b = cc.winSize; this.setPosition(b.width / 2, b.height / 2); this.setContentSize(b); this.setAnchorPoint(0.5, 0.5); this.ignoreAnchorPointForPosition(!0); if (a) for (b = 0; b < a.length; b++) this.addChild(a[b], b); this._selectedItem = null; this._state = cc.MENU_STATE_WAITING; return this.cascadeOpacity = this.cascadeColor = !0 } return !1 }, addChild: function (a, b, c) { if (!(a instanceof cc.MenuItem)) throw "cc.Menu.addChild() : Menu only supports MenuItem objects as children"; cc.Layer.prototype.addChild.call(this, a, b, c) }, alignItemsVertically: function () { this.alignItemsVerticallyWithPadding(cc.DEFAULT_PADDING) }, alignItemsVerticallyWithPadding: function (a) { var b = -a, c = this._children, d, e, f, g; if (c && 0 < c.length) { e = 0; for (d = c.length; e < d; e++) b += c[e].height * c[e].scaleY + a; var h = b / 2; e = 0; for (d = c.length; e < d; e++) g = c[e], f = g.height, b = g.scaleY, g.setPosition(0, h - f * b / 2), h -= f * b + a } }, alignItemsHorizontally: function () { this.alignItemsHorizontallyWithPadding(cc.DEFAULT_PADDING) }, alignItemsHorizontallyWithPadding: function (a) { var b = -a, c = this._children, d, e, f, g; if (c && 0 < c.length) { d = 0; for (e = c.length; d < e; d++) b += c[d].width * c[d].scaleX + a; var h = -b / 2; d = 0; for (e = c.length; d < e; d++) g = c[d], b = g.scaleX, f = c[d].width, g.setPosition(h + f * b / 2, 0), h += f * b + a } }, alignItemsInColumns: function () { 0 < arguments.length && null == arguments[arguments.length - 1] && cc.log("parameters should not be ending with null in Javascript"); for (var a = [], b = 0; b < arguments.length; b++) a.push(arguments[b]); var c = -5, d = 0, e = 0, f = 0, g, h, k, m = this._children; if (m && 0 < m.length) for (b = 0, k = m.length; b < k; b++) d >= a.length || !(g = a[d]) || (h = m[b].height, e = e >= h || isNaN(h) ? e : h, ++f, f >= g && (c += e + 5, e = f = 0, ++d)); var n = cc.director.getWinSize(), q = g = e = d = 0, r = 0, c = c / 2; if (m && 0 < m.length) for (b = 0, k = m.length; b < k; b++) { var s = m[b]; 0 == g && (g = a[d], r = q = n.width / (1 + g)); h = s._getHeight(); e = e >= h || isNaN(h) ? e : h; s.setPosition(r - n.width / 2, c - h / 2); r += q; ++f; f >= g && (c -= e + 5, e = g = f = 0, ++d) } }, alignItemsInRows: function () { 0 < arguments.length && null == arguments[arguments.length - 1] && cc.log("parameters should not be ending with null in Javascript"); var a = [], b; for (b = 0; b < arguments.length; b++) a.push(arguments[b]); var c = [], d = [], e = -10, f = -5, g = 0, h = 0, k = 0, m, n, q, r, s = this._children; if (s && 0 < s.length) for (b = 0, q = s.length; b < q; b++) (n = s[b], g >= a.length || !(m = a[g])) || (r = n.width, h = h >= r || isNaN(r) ? h : r, f += n.height + 5, ++k, k >= m && (c.push(h), d.push(f), e += h + 10, h = k = 0, f = -5, ++g)); f = cc.director.getWinSize(); m = h = g = 0; var e = -e / 2, t = 0; if (s && 0 < s.length) for (b = 0, q = s.length; b < q; b++) n = s[b], 0 == m && (m = a[g], t = d[g]), r = n._getWidth(), h = h >= r || isNaN(r) ? h : r, n.setPosition(e + c[g] / 2, t - f.height / 2), t -= n.height + 10, ++k, k >= m && (e += h + 5, h = m = k = 0, ++g) }, removeChild: function (a, b) { null != a && (a instanceof cc.MenuItem ? (this._selectedItem == a && (this._selectedItem = null), cc.Node.prototype.removeChild.call(this, a, b)) : cc.log("cc.Menu.removeChild():Menu only supports MenuItem objects as children")) }, _onTouchBegan: function (a, b) { var c = b.getCurrentTarget(); if (c._state != cc.MENU_STATE_WAITING || !c._visible || !c.enabled) return !1; for (var d = c.parent; null != d; d = d.parent) if (!d.isVisible()) return !1; c._selectedItem = c._itemForTouch(a); return c._selectedItem ? (c._state = cc.MENU_STATE_TRACKING_TOUCH, c._selectedItem.selected(), !0) : !1 }, _onTouchEnded: function (a, b) { var c = b.getCurrentTarget(); c._state !== cc.MENU_STATE_TRACKING_TOUCH ? cc.log("cc.Menu.onTouchEnded(): invalid state") : (c._selectedItem && (c._selectedItem.unselected(), c._selectedItem.activate()), c._state = cc.MENU_STATE_WAITING) }, _onTouchCancelled: function (a, b) { var c = b.getCurrentTarget(); c._state !== cc.MENU_STATE_TRACKING_TOUCH ? cc.log("cc.Menu.onTouchCancelled(): invalid state") : (this._selectedItem && c._selectedItem.unselected(), c._state = cc.MENU_STATE_WAITING) }, _onTouchMoved: function (a, b) { var c = b.getCurrentTarget(); if (c._state !== cc.MENU_STATE_TRACKING_TOUCH) cc.log("cc.Menu.onTouchMoved(): invalid state"); else { var d = c._itemForTouch(a); d != c._selectedItem && (c._selectedItem && c._selectedItem.unselected(), c._selectedItem = d, c._selectedItem && c._selectedItem.selected()) } }, onExit: function () { this._state == cc.MENU_STATE_TRACKING_TOUCH && (this._selectedItem && (this._selectedItem.unselected(), this._selectedItem = null), this._state = cc.MENU_STATE_WAITING); cc.Node.prototype.onExit.call(this) }, setOpacityModifyRGB: function (a) { }, isOpacityModifyRGB: function () { return !1 }, _itemForTouch: function (a) { a = a.getLocation(); var b = this._children, c; if (b && 0 < b.length) for (var d = b.length - 1; 0 <= d; d--) if (c = b[d], c.isVisible() && c.isEnabled()) { var e = c.convertToNodeSpace(a), f = c.rect(); f.x = 0; f.y = 0; if (cc.rectContainsPoint(f, e)) return c } return null } }); _p = cc.Menu.prototype; cc.Menu.create = function (a) { var b = arguments.length; 0 < b && null == arguments[b - 1] && cc.log("parameters should not be ending with null in Javascript"); return 0 == b ? new cc.Menu : 1 == b ? new cc.Menu(a) : new cc.Menu(Array.prototype.slice.call(arguments, 0)) }; cc.ProgressTimer = cc.Node.extend({ _type: null, _percentage: 0, _sprite: null, _midPoint: null, _barChangeRate: null, _reverseDirection: !1, _className: "ProgressTimer", getMidpoint: function () { return cc.p(this._midPoint.x, this._midPoint.y) }, setMidpoint: function (a) { this._midPoint = cc.pClamp(a, cc.p(0, 0), cc.p(1, 1)) }, getBarChangeRate: function () { return cc.p(this._barChangeRate.x, this._barChangeRate.y) }, setBarChangeRate: function (a) { this._barChangeRate = cc.pClamp(a, cc.p(0, 0), cc.p(1, 1)) }, getType: function () { return this._type }, getPercentage: function () { return this._percentage }, getSprite: function () { return this._sprite }, setPercentage: function (a) { this._percentage != a && (this._percentage = cc.clampf(a, 0, 100), this._updateProgress()) }, setOpacityModifyRGB: function (a) { }, isOpacityModifyRGB: function () { return !1 }, isReverseDirection: function () { return this._reverseDirection }, _boundaryTexCoord: function (a) { if (a < cc.ProgressTimer.TEXTURE_COORDS_COUNT) { var b = cc.ProgressTimer.TEXTURE_COORDS; return this._reverseDirection ? cc.p(b >> 7 - (a << 1) & 1, b >> 7 - ((a << 1) + 1) & 1) : cc.p(b >> (a << 1) + 1 & 1, b >> (a << 1) & 1) } return cc.p(0, 0) }, _origin: null, _startAngle: 270, _endAngle: 270, _radius: 0, _counterClockWise: !1, _barRect: null, _vertexDataCount: 0, _vertexData: null, _vertexArrayBuffer: null, _vertexWebGLBuffer: null, _vertexDataDirty: !1, ctor: null, _ctorForCanvas: function (a) { cc.Node.prototype.ctor.call(this); this._type = cc.ProgressTimer.TYPE_RADIAL; this._percentage = 0; this._midPoint = cc.p(0, 0); this._barChangeRate = cc.p(0, 0); this._reverseDirection = !1; this._sprite = null; this._origin = cc.p(0, 0); this._endAngle = this._startAngle = 270; this._radius = 0; this._counterClockWise = !1; this._barRect = cc.rect(0, 0, 0, 0); a && this._initWithSpriteForCanvas(a) }, _ctorForWebGL: function (a) { cc.Node.prototype.ctor.call(this); this._type = cc.ProgressTimer.TYPE_RADIAL; this._percentage = 0; this._midPoint = cc.p(0, 0); this._barChangeRate = cc.p(0, 0); this._reverseDirection = !1; this._sprite = null; this._vertexWebGLBuffer = cc._renderContext.createBuffer(); this._vertexDataCount = 0; this._vertexArrayBuffer = this._vertexData = null; this._vertexDataDirty = !1; a && this._initWithSpriteForWebGL(a) }, setColor: function (a) { this._sprite.color = a; this._updateColor() }, setOpacity: function (a) { this._sprite.opacity = a; this._updateColor() }, getColor: function () { return this._sprite.color }, getOpacity: function () { return this._sprite.opacity }, setReverseProgress: null, _setReverseProgressForCanvas: function (a) { this._reverseDirection !== a && (this._reverseDirection = a) }, _setReverseProgressForWebGL: function (a) { this._reverseDirection !== a && (this._reverseDirection = a, this._vertexArrayBuffer = this._vertexData = null, this._vertexDataCount = 0) }, setSprite: null, _setSpriteForCanvas: function (a) { this._sprite != a && (this._sprite = a, this.width = this._sprite.width, this.height = this._sprite.height) }, _setSpriteForWebGL: function (a) { a && this._sprite != a && (this._sprite = a, this.width = a.width, this.height = a.height, this._vertexData && (this._vertexArrayBuffer = this._vertexData = null, this._vertexDataCount = 0)) }, setType: null, _setTypeForCanvas: function (a) { a !== this._type && (this._type = a) }, _setTypeForWebGL: function (a) { a !== this._type && (this._vertexData && (this._vertexArrayBuffer = this._vertexData = null, this._vertexDataCount = 0), this._type = a) }, setReverseDirection: null, _setReverseDirectionForCanvas: function (a) { this._reverseDirection !== a && (this._reverseDirection = a) }, _setReverseDirectionForWebGL: function (a) { this._reverseDirection !== a && (this._reverseDirection = a, this._vertexArrayBuffer = this._vertexData = null, this._vertexDataCount = 0) }, _textureCoordFromAlphaPoint: function (a) { var b = this._sprite; if (!b) return { u: 0, v: 0 }; var c = b.quad, d = cc.p(c.bl.texCoords.u, c.bl.texCoords.v), c = cc.p(c.tr.texCoords.u, c.tr.texCoords.v); b.textureRectRotated && (b = a.x, a.x = a.y, a.y = b); return { u: d.x * (1 - a.x) + c.x * a.x, v: d.y * (1 - a.y) + c.y * a.y } }, _vertexFromAlphaPoint: function (a) { if (!this._sprite) return { x: 0, y: 0 }; var b = this._sprite.quad, c = cc.p(b.bl.vertices.x, b.bl.vertices.y), b = cc.p(b.tr.vertices.x, b.tr.vertices.y); return { x: c.x * (1 - a.x) + b.x * a.x, y: c.y * (1 - a.y) + b.y * a.y } }, initWithSprite: null, _initWithSpriteForCanvas: function (a) { this.percentage = 0; this.anchorY = this.anchorX = 0.5; this._type = cc.ProgressTimer.TYPE_RADIAL; this._reverseDirection = !1; this.midPoint = cc.p(0.5, 0.5); this.barChangeRate = cc.p(1, 1); this.sprite = a; return !0 }, _initWithSpriteForWebGL: function (a) { this.percentage = 0; this._vertexArrayBuffer = this._vertexData = null; this._vertexDataCount = 0; this.anchorY = this.anchorX = 0.5; this._type = cc.ProgressTimer.TYPE_RADIAL; this._reverseDirection = !1; this.midPoint = cc.p(0.5, 0.5); this.barChangeRate = cc.p(1, 1); this.sprite = a; this.shaderProgram = cc.shaderCache.programForKey(cc.SHADER_POSITION_TEXTURECOLOR); return !0 }, draw: null, _drawForCanvas: function (a) { a = a || cc._renderContext; var b = this._sprite; "source" != b._blendFuncStr && (a.globalCompositeOperation = b._blendFuncStr); var c = cc.view.getScaleX(), d = cc.view.getScaleY(); a.globalAlpha = b._displayedOpacity / 255; var e = b._rect, f = b._contentSize, g = b._offsetPosition, h = b._drawSize_Canvas, k = 0 | g.x, m = -g.y - e.height, n = b._textureRect_Canvas; h.width = e.width * c; h.height = e.height * d; a.save(); b._flippedX && (k = -g.x - e.width, a.scale(-1, 1)); b._flippedY && (m = g.y, a.scale(1, -1)); k *= c; m *= d; this._type == cc.ProgressTimer.TYPE_BAR ? (e = this._barRect, a.beginPath(), a.rect(e.x * c, e.y * d, e.width * c, e.height * d), a.clip(), a.closePath()) : this._type == cc.ProgressTimer.TYPE_RADIAL && (e = this._origin.x * c, g = this._origin.y * d, a.beginPath(), a.arc(e, g, this._radius * d, Math.PI / 180 * this._startAngle, Math.PI / 180 * this._endAngle, this._counterClockWise), a.lineTo(e, g), a.clip(), a.closePath()); b._texture && n.validRect ? (c = b._texture.getHtmlElementObj(), b._colorized ? a.drawImage(c, 0, 0, n.width, n.height, k, m, h.width, h.height) : a.drawImage(c, n.x, n.y, n.width, n.height, k, m, h.width, h.height)) : 0 !== f.width && (b = this.color, a.fillStyle = "rgba(" + b.r + "," + b.g + "," + b.b + ",1)", a.fillRect(k, m, f.width * c, f.height * d)); a.restore(); cc.incrementGLDraws(1) }, _drawForWebGL: function (a) { a = a || cc._renderContext; if (this._vertexData && this._sprite) { cc.nodeDrawSetup(this); var b = this._sprite.getBlendFunc(); cc.glBlendFunc(b.src, b.dst); cc.glEnableVertexAttribs(cc.VERTEX_ATTRIB_FLAG_POS_COLOR_TEX); cc.glBindTexture2D(this._sprite.texture); a.bindBuffer(a.ARRAY_BUFFER, this._vertexWebGLBuffer); this._vertexDataDirty && (a.bufferData(a.ARRAY_BUFFER, this._vertexArrayBuffer, a.DYNAMIC_DRAW), this._vertexDataDirty = !1); b = cc.V2F_C4B_T2F.BYTES_PER_ELEMENT; a.vertexAttribPointer(cc.VERTEX_ATTRIB_POSITION, 2, a.FLOAT, !1, b, 0); a.vertexAttribPointer(cc.VERTEX_ATTRIB_COLOR, 4, a.UNSIGNED_BYTE, !0, b, 8); a.vertexAttribPointer(cc.VERTEX_ATTRIB_TEX_COORDS, 2, a.FLOAT, !1, b, 12); this._type === cc.ProgressTimer.TYPE_RADIAL ? a.drawArrays(a.TRIANGLE_FAN, 0, this._vertexDataCount) : this._type == cc.ProgressTimer.TYPE_BAR && (this._reverseDirection ? (a.drawArrays(a.TRIANGLE_STRIP, 0, this._vertexDataCount / 2), a.drawArrays(a.TRIANGLE_STRIP, 4, this._vertexDataCount / 2), cc.g_NumberOfDraws++) : a.drawArrays(a.TRIANGLE_STRIP, 0, this._vertexDataCount)); cc.g_NumberOfDraws++ } }, _updateRadial: function () { if (this._sprite) { var a, b = this._midPoint; a = this._percentage / 100; var c = 2 * cc.PI * (this._reverseDirection ? a : 1 - a), d = cc.p(b.x, 1), e = cc.pRotateByAngle(d, b, c), c = 0; if (0 == a) e = d, c = 0; else if (1 == a) e = d, c = 4; else { var f = cc.FLT_MAX, g = cc.ProgressTimer.TEXTURE_COORDS_COUNT; for (a = 0; a <= g; ++a) { var h = (a + (g - 1)) % g, k = this._boundaryTexCoord(a % g), h = this._boundaryTexCoord(h); 0 == a ? h = cc.pLerp(k, h, 1 - b.x) : 4 == a && (k = cc.pLerp(k, h, 1 - b.x)); var m = cc.p(0, 0); cc.pLineIntersect(k, h, b, e, m) && (0 != a && 4 != a || 0 <= m.x && 1 >= m.x) && 0 <= m.y && m.y < f && (f = m.y, c = a) } e = cc.pAdd(b, cc.pMult(cc.pSub(e, b), f)) } f = !0; this._vertexDataCount != c + 3 && (f = !1, this._vertexArrayBuffer = this._vertexData = null, this._vertexDataCount = 0); if (!this._vertexData) { g = this._vertexDataCount = c + 3; k = cc.V2F_C4B_T2F.BYTES_PER_ELEMENT; this._vertexArrayBuffer = new ArrayBuffer(g * k); h = []; for (a = 0; a < g; a++) h[a] = new cc.V2F_C4B_T2F(null, null, null, this._vertexArrayBuffer, a * k); this._vertexData = h; if (!this._vertexData) { cc.log("cc.ProgressTimer._updateRadial() : Not enough memory"); return } } this._updateColor(); g = this._vertexData; if (!f) for (g[0].texCoords = this._textureCoordFromAlphaPoint(b), g[0].vertices = this._vertexFromAlphaPoint(b), g[1].texCoords = this._textureCoordFromAlphaPoint(d), g[1].vertices = this._vertexFromAlphaPoint(d), a = 0; a < c; a++) b = this._boundaryTexCoord(a), g[a + 2].texCoords = this._textureCoordFromAlphaPoint(b), g[a + 2].vertices = this._vertexFromAlphaPoint(b); g[this._vertexDataCount - 1].texCoords = this._textureCoordFromAlphaPoint(e); g[this._vertexDataCount - 1].vertices = this._vertexFromAlphaPoint(e) } }, _updateBar: function () { if (this._sprite) { var a, b = this._percentage / 100, c = this._barChangeRate, c = cc.pMult(cc.p(1 - c.x + b * c.x, 1 - c.y + b * c.y), 0.5), b = cc.pSub(this._midPoint, c), c = cc.pAdd(this._midPoint, c); 0 > b.x && (c.x += -b.x, b.x = 0); 1 < c.x && (b.x -= c.x - 1, c.x = 1); 0 > b.y && (c.y += -b.y, b.y = 0); 1 < c.y && (b.y -= c.y - 1, c.y = 1); if (this._reverseDirection) { if (!this._vertexData) { this._vertexDataCount = 8; var d = cc.V2F_C4B_T2F.BYTES_PER_ELEMENT; this._vertexArrayBuffer = new ArrayBuffer(8 * d); var e = []; for (a = 0; 8 > a; a++) e[a] = new cc.V2F_C4B_T2F(null, null, null, this._vertexArrayBuffer, a * d); e[0].texCoords = this._textureCoordFromAlphaPoint(cc.p(0, 1)); e[0].vertices = this._vertexFromAlphaPoint(cc.p(0, 1)); e[1].texCoords = this._textureCoordFromAlphaPoint(cc.p(0, 0)); e[1].vertices = this._vertexFromAlphaPoint(cc.p(0, 0)); e[6].texCoords = this._textureCoordFromAlphaPoint(cc.p(1, 1)); e[6].vertices = this._vertexFromAlphaPoint(cc.p(1, 1)); e[7].texCoords = this._textureCoordFromAlphaPoint(cc.p(1, 0)); e[7].vertices = this._vertexFromAlphaPoint(cc.p(1, 0)); this._vertexData = e } a = this._vertexData; a[2].texCoords = this._textureCoordFromAlphaPoint(cc.p(b.x, c.y)); a[2].vertices = this._vertexFromAlphaPoint(cc.p(b.x, c.y)); a[3].texCoords = this._textureCoordFromAlphaPoint(cc.p(b.x, b.y)); a[3].vertices = this._vertexFromAlphaPoint(cc.p(b.x, b.y)); a[4].texCoords = this._textureCoordFromAlphaPoint(cc.p(c.x, c.y)); a[4].vertices = this._vertexFromAlphaPoint(cc.p(c.x, c.y)); a[5].texCoords = this._textureCoordFromAlphaPoint(cc.p(c.x, b.y)); a[5].vertices = this._vertexFromAlphaPoint(cc.p(c.x, b.y)) } else { if (!this._vertexData) for (this._vertexDataCount = 4, d = cc.V2F_C4B_T2F.BYTES_PER_ELEMENT, this._vertexArrayBuffer = new ArrayBuffer(4 * d), this._vertexData = [], a = 0; 4 > a; a++) this._vertexData[a] = new cc.V2F_C4B_T2F(null, null, null, this._vertexArrayBuffer, a * d); a = this._vertexData; a[0].texCoords = this._textureCoordFromAlphaPoint(cc.p(b.x, c.y)); a[0].vertices = this._vertexFromAlphaPoint(cc.p(b.x, c.y)); a[1].texCoords = this._textureCoordFromAlphaPoint(cc.p(b.x, b.y)); a[1].vertices = this._vertexFromAlphaPoint(cc.p(b.x, b.y)); a[2].texCoords = this._textureCoordFromAlphaPoint(cc.p(c.x, c.y)); a[2].vertices = this._vertexFromAlphaPoint(cc.p(c.x, c.y)); a[3].texCoords = this._textureCoordFromAlphaPoint(cc.p(c.x, b.y)); a[3].vertices = this._vertexFromAlphaPoint(cc.p(c.x, b.y)) } this._updateColor() } }, _updateColor: function () { if (this._sprite && this._vertexData) { for (var a = this._sprite.quad.tl.colors, b = this._vertexData, c = 0, d = this._vertexDataCount; c < d; ++c) b[c].colors = a; this._vertexDataDirty = !0 } }, _updateProgress: null, _updateProgressForCanvas: function () { var a = this._sprite, b = a.width, c = a.height, d = this._midPoint; if (this._type == cc.ProgressTimer.TYPE_RADIAL) { this._radius = Math.round(Math.sqrt(b * b + c * c)); var e, f = !1, g = this._origin; g.x = b * d.x; g.y = -c * d.y; this._reverseDirection ? (e = 270, d = 270 - 3.6 * this._percentage) : (d = -90, e = -90 + 3.6 * this._percentage); a._flippedX && (g.x -= 2 * b * this._midPoint.x, d = -d - 180, e = -e - 180, f = !f); a._flippedY && (g.y += 2 * c * this._midPoint.y, f = !f, d = -d, e = -e); this._startAngle = d; this._endAngle = e; this._counterClockWise = f } else { e = this._barChangeRate; g = this._percentage / 100; f = this._barRect; e = cc.size(b * (1 - e.x), c * (1 - e.y)); var g = cc.size((b - e.width) * g, (c - e.height) * g), g = cc.size(e.width + g.width, e.height + g.height), h = cc.p(b * d.x, c * d.y); e = h.x - g.width / 2; 0.5 < d.x && g.width / 2 >= b - h.x && (e = b - g.width); b = h.y - g.height / 2; 0.5 < d.y && g.height / 2 >= c - h.y && (b = c - g.height); f.x = 0; c = 1; a._flippedX && (f.x -= g.width, c = -1); 0 < e && (f.x += e * c); f.y = 0; c = 1; a._flippedY && (f.y += g.height, c = -1); 0 < b && (f.y -= b * c); f.width = g.width; f.height = -g.height } }, _updateProgressForWebGL: function () { var a = this._type; a === cc.ProgressTimer.TYPE_RADIAL ? this._updateRadial() : a === cc.ProgressTimer.TYPE_BAR && this._updateBar(); this._vertexDataDirty = !0 } }); _p = cc.ProgressTimer.prototype; cc._renderType == cc._RENDER_TYPE_WEBGL ? (_p.ctor = _p._ctorForWebGL, _p.setReverseProgress = _p._setReverseProgressForWebGL, _p.setSprite = _p._setSpriteForWebGL, _p.setType = _p._setTypeForWebGL, _p.setReverseDirection = _p._setReverseDirectionForWebGL, _p.initWithSprite = _p._initWithSpriteForWebGL, _p.draw = _p._drawForWebGL, _p._updateProgress = _p._updateProgressForWebGL) : (_p.ctor = _p._ctorForCanvas, _p.setReverseProgress = _p._setReverseProgressForCanvas, _p.setSprite = _p._setSpriteForCanvas, _p.setType = _p._setTypeForCanvas, _p.setReverseDirection = _p._setReverseDirectionForCanvas, _p.initWithSprite = _p._initWithSpriteForCanvas, _p.draw = _p._drawForCanvas, _p._updateProgress = cc.ProgressTimer.prototype._updateProgressForCanvas); cc.defineGetterSetter(_p, "midPoint", _p.getMidpoint, _p.setMidpoint); cc.defineGetterSetter(_p, "barChangeRate", _p.getBarChangeRate, _p.setBarChangeRate); cc.defineGetterSetter(_p, "type", _p.getType, _p.setType); cc.defineGetterSetter(_p, "percentage", _p.getPercentage, _p.setPercentage); cc.defineGetterSetter(_p, "sprite", _p.getSprite, _p.setSprite); cc.defineGetterSetter(_p, "reverseDir", _p.isReverseDirection, _p.setReverseDirection); cc.ProgressTimer.create = function (a) { return new cc.ProgressTimer(a) }; cc.ProgressTimer.TEXTURE_COORDS_COUNT = 4; cc.ProgressTimer.TEXTURE_COORDS = 75; cc.ProgressTimer.TYPE_RADIAL = 0; cc.ProgressTimer.TYPE_BAR = 1; cc.ProgressTo = cc.ActionInterval.extend({ _to: 0, _from: 0, ctor: function (a, b) { cc.ActionInterval.prototype.ctor.call(this); this._from = this._to = 0; void 0 !== b && this.initWithDuration(a, b) }, initWithDuration: function (a, b) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._to = b, !0) : !1 }, clone: function () { var a = new cc.ProgressTo; a.initWithDuration(this._duration, this._to); return a }, reverse: function () { cc.log("cc.ProgressTo.reverse(): reverse hasn't been supported."); return null }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a); this._from = a.percentage; 100 == this._from && (this._from = 0) }, update: function (a) { this.target instanceof cc.ProgressTimer && (this.target.percentage = this._from + (this._to - this._from) * a) } }); cc.progressTo = function (a, b) { return new cc.ProgressTo(a, b) }; cc.ProgressTo.create = cc.progressTo; cc.ProgressFromTo = cc.ActionInterval.extend({ _to: 0, _from: 0, ctor: function (a, b, c) { cc.ActionInterval.prototype.ctor.call(this); this._from = this._to = 0; void 0 !== c && this.initWithDuration(a, b, c) }, initWithDuration: function (a, b, c) { return cc.ActionInterval.prototype.initWithDuration.call(this, a) ? (this._to = c, this._from = b, !0) : !1 }, clone: function () { var a = new cc.ProgressFromTo; a.initWithDuration(this._duration, this._from, this._to); return a }, reverse: function () { return cc.progressFromTo(this._duration, this._to, this._from) }, startWithTarget: function (a) { cc.ActionInterval.prototype.startWithTarget.call(this, a) }, update: function (a) { this.target instanceof cc.ProgressTimer && (this.target.percentage = this._from + (this._to - this._from) * a) } }); cc.progressFromTo = function (a, b, c) { return new cc.ProgressFromTo(a, b, c) }; cc.ProgressFromTo.create = cc.progressFromTo; cc.LabelAtlas = cc.AtlasNode.extend({ _string: null, _mapStartChar: null, _textureLoaded: !1, _loadedEventListeners: null, _className: "LabelAtlas", ctor: function (a, b, c, d, e) { cc.AtlasNode.prototype.ctor.call(this); b && cc.LabelAtlas.prototype.initWithString.call(this, a, b, c, d, e) }, textureLoaded: function () { return this._textureLoaded }, addLoadedEventListener: function (a, b) { this._loadedEventListeners || (this._loadedEventListeners = []); this._loadedEventListeners.push({ eventCallback: a, eventTarget: b }) }, _callLoadedEventCallbacks: function () { if (this._loadedEventListeners) { this._textureLoaded = !0; for (var a = this._loadedEventListeners, b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } }, initWithString: function (a, b, c, d, e) { var f = a + "", g, h; if (void 0 === c) { c = cc.loader.getRes(b); if (1 !== parseInt(c.version, 10)) return cc.log("cc.LabelAtlas.initWithString(): Unsupported version. Upgrade cocos2d version"), !1; b = cc.path.changeBasename(b, c.textureFilename); d = cc.contentScaleFactor(); g = parseInt(c.itemWidth, 10) / d; h = parseInt(c.itemHeight, 10) / d; c = String.fromCharCode(parseInt(c.firstChar, 10)) } else g = c || 0, h = d || 0, c = e || " "; var k = null, k = b instanceof cc.Texture2D ? b : cc.textureCache.addImage(b); (this._textureLoaded = b = k.isLoaded()) || k.addLoadedEventListener(function (a) { this.initWithTexture(k, g, h, f.length); this.string = f; this._callLoadedEventCallbacks() }, this); return this.initWithTexture(k, g, h, f.length) ? (this._mapStartChar = c, this.string = f, !0) : !1 }, setColor: function (a) { cc.AtlasNode.prototype.setColor.call(this, a); this.updateAtlasValues() }, getString: function () { return this._string }, draw: function (a) { cc.AtlasNode.prototype.draw.call(this, a); cc.LABELATLAS_DEBUG_DRAW && (a = this.size, a = [cc.p(0, 0), cc.p(a.width, 0), cc.p(a.width, a.height), cc.p(0, a.height)], cc._drawingUtil.drawPoly(a, 4, !0)) }, _addChildForCanvas: function (a, b, c) { a._lateChild = !0; cc.Node.prototype.addChild.call(this, a, b, c) }, updateAtlasValues: null, _updateAtlasValuesForCanvas: function () { for (var a = this._string || "", b = a.length, c = this.texture, d = this._itemWidth, e = this._itemHeight, f = 0; f < b; f++) { var g = a.charCodeAt(f) - this._mapStartChar.charCodeAt(0), h = parseInt(g % this._itemsPerRow, 10), g = parseInt(g / this._itemsPerRow, 10), h = cc.rect(h * d, g * e, d, e), g = a.charCodeAt(f), k = this.getChildByTag(f); k ? 32 == g ? (k.init(), k.setTextureRect(cc.rect(0, 0, 10, 10), !1, cc.size(0, 0))) : (k.initWithTexture(c, h), k.visible = !0, k.opacity = this._displayedOpacity) : (k = new cc.Sprite, 32 == g ? (k.init(), k.setTextureRect(cc.rect(0, 0, 10, 10), !1, cc.size(0, 0))) : k.initWithTexture(c, h), cc.Node.prototype.addChild.call(this, k, 0, f)); k.setPosition(f * d + d / 2, e / 2) } }, _updateAtlasValuesForWebGL: function () { var a = this._string, b = a.length, c = this.textureAtlas, d = c.texture, e = d.pixelsWidth, d = d.pixelsHeight, f = this._itemWidth, g = this._itemHeight; this._ignoreContentScaleFactor || (f = this._itemWidth * cc.contentScaleFactor(), g = this._itemHeight * cc.contentScaleFactor()); b > c.getCapacity() && cc.log("cc.LabelAtlas._updateAtlasValues(): Invalid String length"); for (var h = c.quads, k = this._displayedColor, k = { r: k.r, g: k.g, b: k.b, a: this._displayedOpacity }, m = this._itemWidth, n = 0; n < b; n++) { var q = a.charCodeAt(n) - this._mapStartChar.charCodeAt(0), r = q % this._itemsPerRow, s = 0 | q / this._itemsPerRow, t; cc.FIX_ARTIFACTS_BY_STRECHING_TEXEL ? (r = (2 * r * f + 1) / (2 * e), q = r + (2 * f - 2) / (2 * e), s = (2 * s * g + 1) / (2 * d), t = s + (2 * g - 2) / (2 * d)) : (r = r * f / e, q = r + f / e, s = s * g / d, t = s + g / d); var u = h[n], v = u.tl, w = u.tr, x = u.bl, u = u.br; v.texCoords.u = r; v.texCoords.v = s; w.texCoords.u = q; w.texCoords.v = s; x.texCoords.u = r; x.texCoords.v = t; u.texCoords.u = q; u.texCoords.v = t; x.vertices.x = n * m; x.vertices.y = 0; x.vertices.z = 0; u.vertices.x = n * m + m; u.vertices.y = 0; u.vertices.z = 0; v.vertices.x = n * m; v.vertices.y = this._itemHeight; v.vertices.z = 0; w.vertices.x = n * m + m; w.vertices.y = this._itemHeight; w.vertices.z = 0; v.colors = k; w.colors = k; x.colors = k; u.colors = k } 0 < b && (c.dirty = !0, a = c.totalQuads, b > a && c.increaseTotalQuadsWith(b - a)) }, setString: null, _setStringForCanvas: function (a) { a = String(a); var b = a.length; this._string = a; this.width = b * this._itemWidth; this.height = this._itemHeight; if (this._children) { a = this._children; for (var b = a.length, c = 0; c < b; c++) { var d = a[c]; d && !d._lateChild && (d.visible = !1) } } this.updateAtlasValues(); this.quadsToDraw = b }, _setStringForWebGL: function (a) { a = String(a); var b = a.length; b > this.textureAtlas.totalQuads && this.textureAtlas.resizeCapacity(b); this._string = a; this.width = b * this._itemWidth; this.height = this._itemHeight; this.updateAtlasValues(); this.quadsToDraw = b }, setOpacity: null, _setOpacityForCanvas: function (a) { if (this._displayedOpacity !== a) { cc.AtlasNode.prototype.setOpacity.call(this, a); for (var b = this._children, c = 0, d = b.length; c < d; c++) b[c] && (b[c].opacity = a) } }, _setOpacityForWebGL: function (a) { this._opacity !== a && cc.AtlasNode.prototype.setOpacity.call(this, a) } }); _p = cc.LabelAtlas.prototype; cc._renderType === cc._RENDER_TYPE_WEBGL ? (_p.updateAtlasValues = _p._updateAtlasValuesForWebGL, _p.setString = _p._setStringForWebGL, _p.setOpacity = _p._setOpacityForWebGL) : (_p.updateAtlasValues = _p._updateAtlasValuesForCanvas, _p.setString = _p._setStringForCanvas, _p.setOpacity = _p._setOpacityForCanvas, _p.addChild = _p._addChildForCanvas); cc.defineGetterSetter(_p, "opacity", _p.getOpacity, _p.setOpacity); cc.defineGetterSetter(_p, "string", _p.getString, _p.setString); cc.LabelAtlas.create = function (a, b, c, d, e) { return new cc.LabelAtlas(a, b, c, d, e) }; cc.LABEL_AUTOMATIC_WIDTH = -1; cc.LabelBMFont = cc.SpriteBatchNode.extend({ _opacityModifyRGB: !1, _string: "", _config: null, _fntFile: "", _initialString: "", _alignment: cc.TEXT_ALIGNMENT_CENTER, _width: -1, _lineBreakWithoutSpaces: !1, _imageOffset: null, _reusedChar: null, _displayedOpacity: 255, _realOpacity: 255, _displayedColor: null, _realColor: null, _cascadeColorEnabled: !0, _cascadeOpacityEnabled: !0, _textureLoaded: !1, _loadedEventListeners: null, _className: "LabelBMFont", _setString: function (a, b) { b ? this._initialString = a : this._string = a; var c = this._children; if (c) for (var d = 0; d < c.length; d++) { var e = c[d]; e && e.setVisible(!1) } this._textureLoaded && (this.createFontChars(), b && this.updateLabel()) }, ctor: function (a, b, c, d, e) { cc.SpriteBatchNode.prototype.ctor.call(this); this._imageOffset = cc.p(0, 0); this._displayedColor = cc.color(255, 255, 255, 255); this._realColor = cc.color(255, 255, 255, 255); this._reusedChar = []; this.initWithString(a, b, c, d, e) }, textureLoaded: function () { return this._textureLoaded }, addLoadedEventListener: function (a, b) { this._loadedEventListeners || (this._loadedEventListeners = []); this._loadedEventListeners.push({ eventCallback: a, eventTarget: b }) }, _callLoadedEventCallbacks: function () { if (this._loadedEventListeners) { for (var a = this._loadedEventListeners, b = 0, c = a.length; b < c; b++) { var d = a[b]; d.eventCallback.call(d.eventTarget, this) } a.length = 0 } }, draw: function (a) { cc.SpriteBatchNode.prototype.draw.call(this, a); if (cc.LABELBMFONT_DEBUG_DRAW) { a = this.getContentSize(); var b = cc.p(0 | -this._anchorPointInPoints.x, 0 | -this._anchorPointInPoints.y); a = [cc.p(b.x, b.y), cc.p(b.x + a.width, b.y), cc.p(b.x + a.width, b.y + a.height), cc.p(b.x, b.y + a.height)]; cc._drawingUtil.setDrawColor(0, 255, 0, 255); cc._drawingUtil.drawPoly(a, 4, !0) } }, setColor: function (a) { var b = this._displayedColor, c = this._realColor; if (c.r != a.r || c.g != a.g || c.b != a.b || c.a != a.a) b.r = c.r = a.r, b.g = c.g = a.g, b.b = c.b = a.b, this._textureLoaded && this._cascadeColorEnabled && (a = cc.color.WHITE, (b = this._parent) && b.cascadeColor && (a = b.getDisplayedColor()), this.updateDisplayedColor(a)) }, isOpacityModifyRGB: function () { return this._opacityModifyRGB }, setOpacityModifyRGB: function (a) { this._opacityModifyRGB = a; if (a = this._children) for (var b = 0; b < a.length; b++) { var c = a[b]; c && (c.opacityModifyRGB = this._opacityModifyRGB) } }, getOpacity: function () { return this._realOpacity }, getDisplayedOpacity: function () { return this._displayedOpacity }, setOpacity: function (a) { this._displayedOpacity = this._realOpacity = a; if (this._cascadeOpacityEnabled) { var b = 255, c = this._parent; c && c.cascadeOpacity && (b = c.getDisplayedOpacity()); this.updateDisplayedOpacity(b) } this._displayedColor.a = this._realColor.a = a }, updateDisplayedOpacity: function (a) { this._displayedOpacity = this._realOpacity * a / 255; a = this._children; for (var b = 0; b < a.length; b++) { var c = a[b]; cc._renderType == cc._RENDER_TYPE_WEBGL ? c.updateDisplayedOpacity(this._displayedOpacity) : (cc.Node.prototype.updateDisplayedOpacity.call(c, this._displayedOpacity), c.setNodeDirty()) } this._changeTextureColor() }, isCascadeOpacityEnabled: function () { return !1 }, setCascadeOpacityEnabled: function (a) { this._cascadeOpacityEnabled = a }, getColor: function () { var a = this._realColor; return cc.color(a.r, a.g, a.b, a.a) }, getDisplayedColor: function () { var a = this._displayedColor; return cc.color(a.r, a.g, a.b, a.a) }, updateDisplayedColor: function (a) { var b = this._displayedColor, c = this._realColor; b.r = c.r * a.r / 255; b.g = c.g * a.g / 255; b.b = c.b * a.b / 255; a = this._children; for (b = 0; b < a.length; b++) c = a[b], cc._renderType == cc._RENDER_TYPE_WEBGL ? c.updateDisplayedColor(this._displayedColor) : (cc.Node.prototype.updateDisplayedColor.call(c, this._displayedColor), c.setNodeDirty()); this._changeTextureColor() }, _changeTextureColor: function () { if (cc._renderType != cc._RENDER_TYPE_WEBGL) { var a = this.getTexture(); if (a && 0 < a.getContentSize().width) { var b = this._originalTexture.getHtmlElementObj(); if (b) { var c = a.getHtmlElementObj(), d = cc.rect(0, 0, b.width, b.height); c instanceof HTMLCanvasElement && !this._rectRotated ? cc.generateTintImageWithMultiply(b, this._displayedColor, d, c) : (c = cc.generateTintImageWithMultiply(b, this._displayedColor, d), a = new cc.Texture2D, a.initWithElement(c), a.handleLoadedTexture()); this.setTexture(a) } } } }, isCascadeColorEnabled: function () { return !1 }, setCascadeColorEnabled: function (a) { this._cascadeColorEnabled = a }, init: function () { return this.initWithString(null, null, null, null, null) }, initWithString: function (a, b, c, d, e) { a = a || ""; this._config && cc.log("cc.LabelBMFont.initWithString(): re-init is no longer supported"); if (b) { var f = cc.loader.getRes(b); if (!f) return cc.log("cc.LabelBMFont.initWithString(): Impossible to create font. Please check file"), !1; this._config = f; this._fntFile = b; b = cc.textureCache.addImage(f.atlasName); (this._textureLoaded = f = b.isLoaded()) || b.addLoadedEventListener(function (a) { this._textureLoaded = !0; this.initWithTexture(a, this._initialString.length); this.setString(this._initialString, !0); this._callLoadedEventCallbacks() }, this) } else b = new cc.Texture2D, f = new Image, b.initWithElement(f), this._textureLoaded = !1; return this.initWithTexture(b, a.length) ? (this._alignment = d || cc.TEXT_ALIGNMENT_LEFT, this._imageOffset = e || cc.p(0, 0), this._width = null == c ? -1 : c, this._displayedOpacity = this._realOpacity = 255, this._displayedColor = cc.color(255, 255, 255, 255), this._realColor = cc.color(255, 255, 255, 255), this._cascadeColorEnabled = this._cascadeOpacityEnabled = !0, this._contentSize.width = 0, this._contentSize.height = 0, this.setAnchorPoint(0.5, 0.5), cc._renderType === cc._RENDER_TYPE_WEBGL && (c = this.textureAtlas.texture, this._opacityModifyRGB = c.hasPremultipliedAlpha(), d = this._reusedChar = new cc.Sprite, d.initWithTexture(c, cc.rect(0, 0, 0, 0), !1), d.batchNode = this), this.setString(a, !0), !0) : !1 }, createFontChars: function () { var a = cc._renderType, b = a === cc._RENDER_TYPE_CANVAS ? this.texture : this.textureAtlas.texture, c = 0, d = cc.size(0, 0), e = 0, f = 1, g = this._string, h = g ? g.length : 0; if (0 !== h) { var k, m = this._config, n = m.kerningDict, q = m.commonHeight, r = m.fontDefDictionary; for (k = 0; k < h - 1; k++) 10 == g.charCodeAt(k) && f++; var s = q * f, f = -(q - q * f), t = -1; for (k = 0; k < h; k++) if (q = g.charCodeAt(k), 0 != q) if (10 === q) c = 0, f -= m.commonHeight; else { var u = n[t << 16 | q & 65535] || 0, v = r[q]; if (v) { var w = cc.rect(v.rect.x, v.rect.y, v.rect.width, v.rect.height), w = cc.rectPixelsToPoints(w); w.x += this._imageOffset.x; w.y += this._imageOffset.y; (t = this.getChildByTag(k)) ? 32 === q && a === cc._RENDER_TYPE_CANVAS ? t.setTextureRect(w, !1, cc.size(0, 0)) : (t.setTextureRect(w, !1), t.visible = !0) : (t = new cc.Sprite, 32 === q && a === cc._RENDER_TYPE_CANVAS && (w = cc.rect(0, 0, 0, 0)), t.initWithTexture(b, w, !1), t._newTextureWhenChangeColor = !0, this.addChild(t, 0, k)); t.opacityModifyRGB = this._opacityModifyRGB; cc._renderType == cc._RENDER_TYPE_WEBGL ? (t.updateDisplayedColor(this._displayedColor), t.updateDisplayedOpacity(this._displayedOpacity)) : (cc.Node.prototype.updateDisplayedColor.call(t, this._displayedColor), cc.Node.prototype.updateDisplayedOpacity.call(t, this._displayedOpacity), t.setNodeDirty()); w = cc.p(c + v.xOffset + 0.5 * v.rect.width + u, f + (m.commonHeight - v.yOffset) - 0.5 * w.height * cc.contentScaleFactor()); t.setPosition(cc.pointPixelsToPoints(w)); c += v.xAdvance + u; t = q; e < c && (e = c) } else cc.log("cocos2d: LabelBMFont: character not found " + g[k]) } d.width = v && v.xAdvance < v.rect.width ? e - v.xAdvance + v.rect.width : e; d.height = s; this.setContentSize(cc.sizePixelsToPoints(d)) } }, updateString: function (a) { var b = this._children; if (b) for (var c = 0, d = b.length; c < d; c++) { var e = b[c]; e && (e.visible = !1) } this._config && this.createFontChars(); a || this.updateLabel() }, getString: function () { return this._initialString }, setString: function (a, b) { a = String(a); null == b && (b = !0); null != a && cc.isString(a) || (a += ""); this._initialString = a; this._setString(a, b) }, _setStringForSetter: function (a) { this.setString(a, !1) }, setCString: function (a) { this.setString(a, !0) }, updateLabel: function () { this.string = this._initialString; if (0 < this._width) { for (var a = this._string.length, b = [], c = [], d = 1, e = 0, f = !1, g = !1, h = -1, k = -1, m = 0, n, q = 0, r = this._children.length; q < r; q++) { for (var s = 0; !(n = this.getChildByTag(q + m + s)) ;) s++; m += s; if (e >= a) break; var t = this._string[e]; g || (k = this._getLetterPosXLeft(n), g = !0); f || (h = k, f = !0); if (10 == t.charCodeAt(0)) { c.push("\n"); b = b.concat(c); c.length = 0; f = g = !1; h = k = -1; q--; m -= s; d++; if (e >= a) break; k || (k = this._getLetterPosXLeft(n), g = !0); h || (h = k, f = !0); e++ } else if (this._isspace_unicode(t)) c.push(t), b = b.concat(c), c.length = 0, g = !1, k = -1, e++; else if (this._getLetterPosXRight(n) - h > this._width) if (this._lineBreakWithoutSpaces) { this._utf8_trim_ws(c); c.push("\n"); b = b.concat(c); c.length = 0; f = g = !1; h = k = -1; d++; if (e >= a) break; k || (k = this._getLetterPosXLeft(n), g = !0); h || (h = k, f = !0); q-- } else c.push(t), -1 != b.lastIndexOf(" ") ? this._utf8_trim_ws(b) : b = [], 0 < b.length && b.push("\n"), d++, f = !1, h = -1, e++; else c.push(t), e++ } b = b.concat(c); q = b.length; n = ""; for (e = 0; e < q; ++e) n += b[e]; n += String.fromCharCode(0); this._setString(n, !1) } if (this._alignment != cc.TEXT_ALIGNMENT_LEFT) for (b = e = 0, a = this._string.length, c = [], d = 0; d < a; d++) if (10 == this._string[d].charCodeAt(0) || 0 == this._string[d].charCodeAt(0)) if (q = 0, f = c.length, 0 == f) b++; else { if (n = e + f - 1 + b, !(0 > n) && (q = this.getChildByTag(n), null != q)) { q = q.getPositionX() + q._getWidth() / 2; g = 0; switch (this._alignment) { case cc.TEXT_ALIGNMENT_CENTER: g = this.width / 2 - q / 2; break; case cc.TEXT_ALIGNMENT_RIGHT: g = this.width - q } if (0 != g) for (q = 0; q < f; q++) (n = e + q + b, 0 > n || !(n = this.getChildByTag(n))) || (n.x += g); e += f; b++; c.length = 0 } } else c.push(this._string[e]) }, setAlignment: function (a) { this._alignment = a; this.updateLabel() }, _getAlignment: function () { return this._alignment }, setBoundingWidth: function (a) { this._width = a; this.updateLabel() }, _getBoundingWidth: function () { return this._width }, setLineBreakWithoutSpace: function (a) { this._lineBreakWithoutSpaces = a; this.updateLabel() }, setScale: function (a, b) { cc.Node.prototype.setScale.call(this, a, b); this.updateLabel() }, setScaleX: function (a) { cc.Node.prototype.setScaleX.call(this, a); this.updateLabel() }, setScaleY: function (a) { cc.Node.prototype.setScaleY.call(this, a); this.updateLabel() }, setFntFile: function (a) { if (null != a && a != this._fntFile) { var b = cc.loader.getRes(a); b ? (this._fntFile = a, this._config = b, a = cc.textureCache.addImage(b.atlasName), this._textureLoaded = b = a.isLoaded(), this.texture = a, cc._renderType === cc._RENDER_TYPE_CANVAS && (this._originalTexture = this.texture), b ? this.createFontChars() : a.addLoadedEventListener(function (a) { this._textureLoaded = !0; this.texture = a; this.createFontChars(); this._changeTextureColor(); this.updateLabel(); this._callLoadedEventCallbacks() }, this)) : cc.log("cc.LabelBMFont.setFntFile() : Impossible to create font. Please check file") } }, getFntFile: function () { return this._fntFile }, setAnchorPoint: function (a, b) { cc.Node.prototype.setAnchorPoint.call(this, a, b); this.updateLabel() }, _setAnchor: function (a) { cc.Node.prototype._setAnchor.call(this, a); this.updateLabel() }, _setAnchorX: function (a) { cc.Node.prototype._setAnchorX.call(this, a); this.updateLabel() }, _setAnchorY: function (a) { cc.Node.prototype._setAnchorY.call(this, a); this.updateLabel() }, _atlasNameFromFntFile: function (a) { }, _kerningAmountForFirst: function (a, b) { var c = 0; if (this._configuration.kerningDictionary) { var d = this._configuration.kerningDictionary[(a << 16 | b & 65535).toString()]; d && (c = d.amount) } return c }, _getLetterPosXLeft: function (a) { return a.getPositionX() * this._scaleX - a._getWidth() * this._scaleX * a._getAnchorX() }, _getLetterPosXRight: function (a) { return a.getPositionX() * this._scaleX + a._getWidth() * this._scaleX * a._getAnchorX() }, _isspace_unicode: function (a) { a = a.charCodeAt(0); return 9 <= a && 13 >= a || 32 == a || 133 == a || 160 == a || 5760 == a || 8192 <= a && 8202 >= a || 8232 == a || 8233 == a || 8239 == a || 8287 == a || 12288 == a }, _utf8_trim_ws: function (a) { var b = a.length; if (!(0 >= b) && (b -= 1, this._isspace_unicode(a[b]))) { for (var c = b - 1; 0 <= c; --c) if (this._isspace_unicode(a[c])) b = c; else break; this._utf8_trim_from(a, b) } }, _utf8_trim_from: function (a, b) { var c = a.length; b >= c || 0 > b || a.splice(b, c) } }); _p = cc.LabelBMFont.prototype; cc._renderType === cc._RENDER_TYPE_CANVAS && (cc.sys._supportCanvasNewBlendModes || (_p._changeTextureColor = function () { if (cc._renderType != cc._RENDER_TYPE_WEBGL) { var a, b = this.getTexture(); if (b && 0 < b.getContentSize().width && (a = b.getHtmlElementObj())) { var c = cc.textureCache.getTextureColors(this._originalTexture.getHtmlElementObj()); c && (a instanceof HTMLCanvasElement && !this._rectRotated ? cc.generateTintImage(a, c, this._displayedColor, null, a) : (a = cc.generateTintImage(a, c, this._displayedColor), b = new cc.Texture2D, b.initWithElement(a), b.handleLoadedTexture()), this.setTexture(b)) } } }), _p.setTexture = function (a) { for (var b = this._children, c = this._displayedColor, d = 0; d < b.length; d++) { var e = b[d], f = e._displayedColor; if (this._textureForCanvas == e._texture || f.r === c.r && f.g === c.g && f.b === c.b) e.texture = a } this._textureForCanvas = a }); cc.defineGetterSetter(_p, "string", _p.getString, _p._setStringForSetter); cc.defineGetterSetter(_p, "boundingWidth", _p._getBoundingWidth, _p.setBoundingWidth); cc.defineGetterSetter(_p, "textAlign", _p._getAlignment, _p.setAlignment); cc.LabelBMFont.create = function (a, b, c, d, e) { return new cc.LabelBMFont(a, b, c, d, e) }; 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 (a) { a = a.match(this.ITEM_EXP); var b = {}; if (a) for (var c = 0, d = a.length; c < d; c++) { var e = a[c], f = e.indexOf("\x3d"), g = e.substring(0, f), e = e.substring(f + 1); e.match(this.INT_EXP) ? e = parseInt(e) : '"' == e[0] && (e = e.substring(1, e.length - 1)); b[g] = e } return b }, parseFnt: function (a, b) { var c = {}, d = this._parseStrToObj(a.match(this.INFO_EXP)[0]).padding.split(","); parseInt(d[0]); parseInt(d[1]); parseInt(d[2]); parseInt(d[3]); d = this._parseStrToObj(a.match(this.COMMON_EXP)[0]); c.commonHeight = d.lineHeight; if (cc._renderType === cc._RENDER_TYPE_WEBGL) { var e = cc.configuration.getMaxTextureSize(); (d.scaleW > e.width || d.scaleH > e.height) && cc.log("cc.LabelBMFont._parseCommonArguments(): page can't be larger than supported") } 1 !== d.pages && cc.log("cc.LabelBMFont._parseCommonArguments(): only supports 1 page"); d = this._parseStrToObj(a.match(this.PAGE_EXP)[0]); 0 !== d.id && cc.log("cc.LabelBMFont._parseImageFileName() : file could not be found"); c.atlasName = cc.path.changeBasename(b, d.file); for (var f = a.match(this.CHAR_EXP), g = c.fontDefDictionary = {}, d = 0, e = f.length; d < e; d++) { var h = this._parseStrToObj(f[d]); g[h.id] = { rect: { x: h.x, y: h.y, width: h.width, height: h.height }, xOffset: h.xoffset, yOffset: h.yoffset, xAdvance: h.xadvance } } f = c.kerningDict = {}; if (g = a.match(this.KERNING_EXP)) for (d = 0, e = g.length; d < e; d++) h = this._parseStrToObj(g[d]), f[h.first << 16 | h.second & 65535] = h.amount; return c }, load: function (a, b, c, d) { var e = this; cc.loader.loadTxt(a, function (a, c) { if (a) return d(a); d(null, e.parseFnt(c, b)) }) } }; cc.loader.register(["fnt"], cc._fntLoader); var res_img = { WelcomeBG_jpg: "Scenes/WelcomeBG.jpg", GoBtn_png: "Functions/Go.png", GoBtnS_png: "Functions/GoSel.png", RefreshBtnN_png: "Functions/RefreshN.png", RefreshBtnS_png: "Functions/RefreshS.png", ShareBtnN_png: "Functions/ShareN.png", ShareBtnS_png: "Functions/ShareS.png", TimeBar_png: "Functions/TimeBar.png", TimeBarBtm_png: "Functions/TimeBarBtm.png", GameBG_jpg: "Scenes/GameBG.jpg", PauseBG_jpg: "Scenes/PauseBG.jpg", Grid_png: "Scenes/Grid.png", Superb_png: "Objects/Superb.png", NumBack_png: "Objects/NumBack.png", NumBackSel_png: "Objects/NumBackSel.png", ScoreCycle_png: "Objects/ScoreCycle.png", Brain_0_png: "Objects/Brain_0.png", Brain_1_png: "Objects/Brain_1.png", Brain_2_png: "Objects/Brain_2.png", Brain_3_png: "Objects/Brain_3.png", Brain_4_png: "Objects/Brain_4.png", Brain_5_png: "Objects/Brain_5.png", Brain_6_png: "Objects/Brain_6.png", Brain_7_png: "Objects/Dog.png" }, res_sound = {}, res_obj = { Object_png: "Objects/Objects.png", Object_plist: "Objects/Objects.plist" }, res_ani = {}, res_font = { NumFont: "Objects/NumFont.fnt", NumFont_png: "Objects/NumFont.png" }, g_resources = [res_img.WelcomeBG_jpg, res_img.GoBtn_png, res_img.GoBtnS_png, res_img.RefreshBtnN_png, res_img.RefreshBtnS_png, res_img.ShareBtnN_png, res_img.ShareBtnS_png, res_img.TimeBar_png, res_img.TimeBarBtm_png, res_img.GameBG_jpg, res_img.PauseBG_jpg, res_img.Grid_png, res_img.Superb_png, res_img.NumBack_png, res_img.NumBackSel_png, res_img.ScoreCycle_png, res_img.Brain_0_png, res_img.Brain_1_png, res_img.Brain_2_png, res_img.Brain_3_png, res_img.Brain_4_png, res_img.Brain_5_png, res_img.Brain_6_png, res_img.Brain_7_png, res_obj.Object_plist, res_obj.Object_png, res_font.NumFont, res_font.NumFont_png]; var WelcomeLayer = cc.Layer.extend({ sprite: null, ctor: function () { this._super() }, init: function () { this._super(); var a = cc.director.getWinSize(); cc.p(a.width / 2, a.height / 2); this.sprite = cc.Sprite.create(res_img.WelcomeBG_jpg); this.sprite.setAnchorPoint(0.5, 0.5); this.sprite.setPosition(a.width / 2, a.height / 2); this.sprite.setScale(a.height / this.sprite.getContentSize().height); this.addChild(this.sprite, 0); this_layer = this; cc.eventManager.addListener({ prevTouchId: -1, event: cc.EventListener.TOUCH_ALL_AT_ONCE, swallowTouches: !0, onTouchesBegan: function (a, c) { }, onTouchesMoved: function (a, c) { }, onTouchesEnded: function (a, c) { this_layer.onStart() } }, this) }, onStart: function () { var a = new GameScene; cc.director.runScene(a) }, onHelp: function () { cc.log("Help") } }), WelcomeScene = cc.Scene.extend({ onEnter: function () { this._super(); var a = new WelcomeLayer; this.addChild(a); a.init() } }); var GameScene = cc.Scene.extend({ onEnter: function () { this._super(); var a = new GameLayer; this.addChild(a) } }), GameLayer = cc.Layer.extend({ countTotal: 0, stepTime: 0, timeBar: null, numGrid: null, gameBGSp: null, scoreCycle: null, targetNum: 10, winSize: null, refresh: 1, lastTag: 0, specialTimeTotal: 0, specialScoreTotal: 0, scoreCurrent: 0, tmpScore: 0, fontSize: 0, tmp: 0, batchNode: null, selNumAccumulated: 0, selectedNum: 0, selectedNumArray: null, dropNumArray: null, numMatrix: null, array: null, hintArray: null, drawLineLayer: null, scoreLabel: null, lastTouchLocation: null, currentTouchLocation: null, ctor: function (a) { this._super(); this.tmp = a; var b = this; cc.eventManager.addCustomListener("NumSelected", function (a) { a = a._userData; if (a.Status) b.selectedNumArray.push({ Num: a.Num, Tag: a.Tag }); else { var d = 0, e; for (e in b.selectedNumArray) { if (b.selectedNumArray[e].Tag == a.Tag) { b.selectedNumArray.splice(d, 1); break } d++ } } }); this.init() }, init: function () { this._super(); this.numMatrix = []; this.selectedNumArray = []; this.dropNumArray = []; this.hintArray = []; for (var a = 0; a <= NJ.Matrix; a++) { this.numMatrix[a] = []; for (var b = 0; b <= NJ.Matrix; b++) this.numMatrix[a][b] = 0 } this.winSize = cc.director.getWinSize(); cc.spriteFrameCache.addSpriteFrames(res_obj.Object_plist); cc.textureCache.addImage(res_img.NumBack_png); cc.textureCache.addImage(res_img.NumBackSel_png); this.gameBGSp = cc.Sprite.create(res_img.GameBG_jpg); this.gameBGSp.setAnchorPoint(0.5, 0.5); this.gameBGSp.setPosition(this.winSize.width / 2, this.winSize.height / 2); this.gameBGSp.setScale(this.winSize.height / this.gameBGSp.getContentSize().height); this.addChild(this.gameBGSp, 0); this.numGrid = new cc.Sprite(res_img.Grid_png); this.numGrid.setPosition(this.winSize.width / 2, this.winSize.height / 2); this.addChild(this.numGrid, 1, NJ.Tags.GridTag); this.targetNum = parseInt(Math.random() * NJ.Difficulty + 5); this.scoreCycle = new cc.Sprite("#ScoreCycle.png"); a = this.scoreCycle.getTextureRect(); this.scoreCycle.setPosition(a.width / 2 * 1.2, this.winSize.height - a.height / 2 * 1.2); this.addChild(this.scoreCycle, 10); b = cc.repeatForever(cc.rotateBy(1, 60)); this.scoreCycle.runAction(b); this.fontSize = parseInt(25 * a.width / 130); a = this.scoreCycle.getPosition(); this.scoreLabel = new cc.LabelTTF("0", "Helvetica", this.fontSize); this.scoreLabel.setPosition(a.x, a.y); this.addChild(this.scoreLabel, 10); a = new cc.LabelTTF("" + this.targetNum, "Helvetica", parseInt(1.6 * this.fontSize)); a.setPosition(0.9 * this.winSize.width, 0.87 * this.winSize.height); this.addChild(a); a = new cc.Sprite("#TimeBarBtm.png"); a.setPosition(this.winSize.width - a.getTextureRect().width / 2, this.winSize.height - a.getTextureRect().height); this.addChild(a, 10); b = new cc.Sprite("#TimeBar.png"); this.timeBar = new cc.ProgressTimer(b); this.timeBar.setType(cc.ProgressTimer.TYPE_BAR); this.timeBar.setMidpoint(cc.p(0, 1)); this.timeBar.setBarChangeRate(cc.p(1, 0)); this.timeBar.setPercentage(100); this.timeBar.setPosition(a.getPosition().x, a.getPosition().y); this.addChild(this.timeBar, 10); this.addMenus(); this.initNums(); this.makeNumMatrix(); this.scheduleUpdate() }, initNums: function () { for (var a = NJ.Tags.NumTag, b = 0; b < NJ.Matrix; b++) for (var c = 0; c < NJ.Matrix; c++) this.makeNewNumSp(a, b, c, null), a++ }, makeNewNumSp: function (a, b, c, d) { d = 0 != parseInt(4 * Math.random()) ? parseInt(Math.random() * (this.targetNum - 1)) : parseInt(this.targetNum + 1 + 5 * Math.random()); d = new NumSprite(d + 1, a); this.numGrid.addChild(d, b + c, a); d.setPosition(0.5 * NJ.Adjust + c * NJ.Adjust, 0.5 * NJ.Adjust + NJ.Matrix * NJ.Adjust + b * NJ.Adjust); a = new cc.MoveBy(0.1 * b, 0, -b * NJ.Adjust); c = new cc.CallFunc(this.setVis, d); b = new cc.MoveBy(0.1 * (NJ.Matrix - b), cc.p(0, (b - NJ.Matrix) * NJ.Adjust)); b = new cc.Sequence(a, c, b); d.runAction(b) }, addMenus: function () { var a = new cc.MenuItemImage(res_img.GoBtn_png, res_img.GoBtnS_png, this.onGo, this), b = (new cc.Sprite(res_img.GoBtn_png)).getTextureRect(); a.setPosition(this.winSize.width / 2 - b.width, b.height - this.winSize.height / 2); a = new cc.Menu(a); this.addChild(a, 1) }, onGo: function () { var a = 0, b = 0, c; for (c in this.selectedNumArray) a += parseInt(this.selectedNumArray[c].Num); var d = this.selectedNumArray.length; if (0 < d) if (b = d * d + d * this.targetNum, 0 == a % this.targetNum) { for (c in this.selectedNumArray) { var e = this.numGrid.getChildByTag(this.selectedNumArray[c].Tag); if (e) { e.setTag(-1); var f = this.scoreLabel.getPosition(), f = 800 <= this.winSize.height ? cc.sequence(cc.spawn(cc.moveTo(0.7, cc.p(f.x, f.y - (this.winSize.height / 2 - NJ.Grid / 2))), cc.rotateBy(0.5, Math.random() % 2 ? 360 : -360).repeat(7), cc.fadeOut(0.5), cc.scaleTo(0.5, 0.5)), cc.callFunc(this.rmNumSp, e)) : cc.sequence(cc.scaleTo(0.3, 0), cc.callFunc(this.rmNumSp, e)); e.runAction(f) } } this.countTotal += this.selectedNumArray.length; d >= NJ.Matrix * (NJ.Matrix - 1) && this.screenShake(); this.bonusShow(a, b, d); this.superbShow(d); this.selectedNumArray.length = 0; this.scoreCurrent += a + b; this.dropAni(this.selectedNumArray.length) } else this.countTotal -= this.selectedNumArray.length, this.scoreCurrent -= a + b, this.bonusShow(-a, -b) }, vanishEff: function (a, b) { var c = new cc.ParticleSystem(res_eff.Eff_vanish); c.autoRemoveOnFinish = !0; c.setPosition(b); a.addChild(c) }, rmLabel: function (a) { this.removeFromParent(a, !0) }, setVis: function (a) { a.setVisible(!0) }, rmNumSp: function (a) { this.removeFromParent(a, !0) }, screenShake: function () { var a = cc.director.getRunningScene(), b = cc.moveBy(0.05, cc.p(5, 0)), c = cc.moveBy(0.05, cc.p(-5, 0)), d = cc.moveBy(0.05, cc.p(0, 5)), e = cc.moveBy(0.05, cc.p(0, -5)), b = cc.sequence(b, c, d, e), b = cc.repeat(b, 6); a.runAction(b) }, superbShow: function (a) { if (a == NJ.Matrix * NJ.Matrix) { a = new cc.Sprite("#Superb.png"); a.setPosition(this.winSize.width / 2, this.winSize.height / 2); this.addChild(a, 100); var b = cc.scaleTo(0.3, 1); a.setScale(0); b = cc.sequence(cc.delayTime(0.25), cc.scaleTo(0, 6), b.easing(cc.easeBounceOut()), cc.fadeOut(0.9), cc.callFunc(this.rmLabel, a)); a.runAction(b) } }, bonusShow: function (a, b, c) { var d = null, d = 0 < b ? "+" : "-", e = new cc.LabelTTF(c + "\u8fde\u6d88! " + d + Math.abs(b), "Helvetica", parseInt(1.2 * this.fontSize)); b = new cc.LabelTTF(d + Math.abs(a + b), "Helvetica", parseInt(1.9 * this.fontSize)); e.color = cc.color.YELLOW; b.color = cc.color.WHITE; e.setPosition(0.6 * this.winSize.width, 0.87 * this.winSize.height); b.setPosition(this.winSize.width / 2, this.winSize.height / 2); 0 < a && this.addChild(e, 100); e.setVisible(!1); this.addChild(b, 100); var f = cc.sequence(cc.blink(2, 2), cc.fadeOut(1), cc.callFunc(this.rmLabel, e)); a = cc.sequence(cc.spawn(cc.moveBy(1.3, cc.p(0, 80)), cc.fadeOut(1.3)), cc.callFunc(this.rmLabel, b)); b.runAction(a); b.runAction(cc.callFunc(function () { e.setVisible(!0); e.runAction(f) })) }, dropAni: function (a) { var b = NJ.Tags.NumTag, c, d, e, f; for (a = 0; a < NJ.Matrix * NJ.Matrix; a++) { d = 0; c = b - NJ.Matrix; e = this.numGrid.getChildByTag(b); for (f = this.numGrid.getChildByTag(c) ; null == f && c >= NJ.Tags.NumTag && null != e;) e.tag = c, c = e.tag - NJ.Matrix, f = this.numGrid.getChildByTag(c), d++; null != e && (c = "" + e.tag, this.dropNumArray[c] = d); b++ } for (a = 0; a < NJ.Matrix * NJ.Matrix; a++) c = a + NJ.Tags.NumTag + "", e = this.numGrid.getChildByTag(a + NJ.Tags.NumTag), null == e ? (e = parseInt(a / NJ.Matrix), b = parseInt(a % NJ.Matrix), this.makeNewNumSp(a + NJ.Tags.NumTag, e, b, null)) : (b = parseInt(this.dropNumArray[c]), b = new cc.MoveBy(0.2, cc.p(0, -parseInt(NJ.Adjust * b))), e.runAction(b)); this.dropNumArray.length = 0 }, makeNumMatrix: function () { for (var a, b = NJ.Tags.NumTag, c = 1; c <= NJ.Matrix; c++) for (var d = 1; d <= NJ.Matrix; d++) a = this.numGrid.getChildByTag(b), a = a.getNum(), this.numMatrix[d][c] = { Num: a, Tag: b }, b++ }, update: function (a) { var b = 0; this.tmpScore < this.scoreCurrent ? (b = parseInt((this.scoreCurrent - this.tmpScore) / 4), this.tmpScore += b) : this.tmpScore > this.scoreCurrent && (b = parseInt((this.tmpScore - this.scoreCurrent) / 4), this.tmpScore -= b); 0 == b && (this.tmpScore = this.scoreCurrent); this.scoreLabel.setString("" + this.tmpScore); this.stepTime += a; 1 <= this.stepTime && (0 < this.timeBar.percentage ? this.timeBar.setPercentage(this.timeBar.percentage - 1) : (this.endGame(), this.unscheduleUpdate()), this.stepTime = 0) }, endGame: function () { var a = cc.color(0, 0, 0, 185), a = new PauseLayer(a, this.scoreCurrent, this.countTotal, this.targetNum); cc.eventManager.removeAllListeners(); this.parent.addChild(a, 10) } }); var NumSprite = cc.Sprite.extend({ num: 0, tag: 0, spriteL: null, spriteR: null, spriteB: null, lastTouchLocation: null, currentTouchLocation: null, isSelected: 0, isTouched: 0, ctor: function (a, b) { this.num = a; this.tag = b; var c = this; cc.eventManager.addListener({ prevTouchId: -1, event: cc.EventListener.TOUCH_ALL_AT_ONCE, swallowTouches: !1, onTouchesBegan: function (a, b) { var d = a[0]; c.lastTouchLocation = d.getLocation(); var e = cc.rect(0, 0, c._rect.width, c._rect.height); cc.rectContainsPoint(e, c.convertTouchToNodeSpace(d)) && (c.touchAni(), c.isTouched = 1, c.isSelected = !c.isSelected, c.isSelected ? c.setSpriteFrame("NumBackSel.png") : c.setSpriteFrame("NumBack.png"), c.disListener()) }, onTouchesMoved: function (a, b) { var d = a[0]; c.currentTouchLocation = d.getLocation(); var e = cc.rect(0, 0, c._rect.width, c._rect.height); cc.rectContainsPoint(e, c.convertTouchToNodeSpace(d)) ? c.isTouched || (c.isTouched = 1, c.isSelected = !c.isSelected, c.isSelected ? c.setSpriteFrame("NumBackSel.png") : c.setSpriteFrame("NumBack.png"), c.disListener(), c.touchAni()) : c.isTouched = 0 }, onTouchesEnded: function (a, b) { c.isTouched = 0 } }, this); this._super("#NumBack.png"); this.spriteB = cc.Sprite.create(res_img.NumBack_png); var d = this.spriteB.getContentSize(), e = parseInt(5 * d.width / 8), e = new cc.LabelBMFont("" + this.num, res_font.NumFont, e, cc.TEXT_ALIGNMENT_LEFT); e.setPosition(d.width / 2, d.height / 2); this.addChild(e, 1) }, rect: function (a) { return cc.rect(-a.width / 2, -a.height / 2, a.width, a.height) }, touchAni: function () { var a = new cc.ScaleTo(0.1, 1.3), b = new cc.ScaleTo(0.1, 1), a = new cc.Sequence(a, b); this.runAction(a) }, init: function () { }, numEffect: function (a) { a = new cc.ParticleSystem(res_eff.Eff_tmp); var b = this.getContentSize(); a.setPosition(b.width / 2, b.height / 2); this.addChild(a, -1) }, disListener: function () { cc.eventManager.dispatchCustomEvent("NumSelected", { Num: this.num, Status: this.isSelected, Tag: this.tag }) }, getNum: function () { return this.num }, setNum: function (a) { this.num = a } }); var DrawLines = cc.LayerColor.extend({ POINT_NUM: 16, MIDDLE_POINT_R: 255, MIDDLE_POINT_G: 255, MIDDLE_POINT_B: 255, MIDDLE_POINT_A: 255, TOP_POINT_R: 255, TOP_POINT_G: 200, TOP_POINT_B: 0, TOP_POINT_A: 255, BOTTOM_POINT_R: 255, BOTTOM_POINT_G: 255, BOTTOM_POINT_B: 0, BOTTOM_POINT_A: 255, m_pointPath: null, m_pParticle: null, m_Index: 0, m_bTouched: !1, m_touchBeganPoint: null, m_touchEndPoint: null, m_timer: 0, ctor: function () { this._super(); this.init(); var a = this; cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ALL_AT_ONCE, swallowTouches: !0, onTouchesBegan: function (a, c) { }, onTouchesMoved: function (b, c) { a.m_touchEndPoint = b[0].getLocation(); var d = new cc.ParticleSystem(res_eff.Eff_line); d.setPosition(a.m_touchEndPoint); a.addChild(d, 10) }, onTouchesEnded: function (b, c) { a.removeAllChildrenWithCleanup(!0) } }, this) }, init: function () { this.m_pParticle = new cc.ParticleSystem(res_eff.Eff_line); this.addChild(this.m_pParticle, 10); this.m_pParticle.setVisible(!1); this.m_touchBeganPoint = this.m_touchEndPoint = cc.p(0, 0) }, draw: function () { } }); var NJ = NJ || {}; NJ.Grid = 480; NJ.Matrix = 5; NJ.Adjust = 96; NJ.Difficulty = 6; NJ.Tags = { NumTag: 100, GridTag: 1001, LabelTag: 1002 }; NJ.ScoreLevels = { Level_0: ["\u592a\u60e8\u4e86\uff0c", " \u300c\u7c97\u7cd9\u5927\u8111\u300d", "\u7070\u8272"], Level_1: ["\u51d1\u5408\u5427\uff0c", " \u300c\u666e\u901a\u5927\u8111\u300d", "\u7eff\u8272"], Level_2: ["\u8fd8\u4e0d\u9519\uff0c", " \u300c\u4f18\u79c0\u5927\u8111\u300d", "\u84dd\u8272"], Level_3: ["\u5f88\u817b\u5bb3\uff0c", " \u300c\u7cbe\u82f1\u5927\u8111\u300d", "\u7d2b\u8272"], Level_4: ["\u725bX\u554a~", " \u300c\u6770\u51fa\u5927\u8111\u300d\uff01", "\u6a59\u8272"], Level_5: ["\u540a\u7206\u4e86\uff01", " \u300c\u53f2\u8bd7\u5927\u8111\u300d\uff01\uff01", "\u7ea2\u8272"], Level_6: ["OMG\uff01", " \u300c\u4f20\u5947\u5927\u8111\u300d\uff01\uff01\uff01", "\u91d1\u8272"], Level_7: ["\u6211\u53bb\uff01", " \u300c\u4e71\u4e22\u4e3b\u4eba\u624b\u673a\u7684\u5c0f\u72d7\u300d\uff01", ""] }; var WeixinApi = function () { return { version: "2.5", enableDebugMode: function (a) { window.onerror = function (b, c, d, e) { if ("function" === typeof a) a({ message: b, script: c, line: d, column: e }); else { var f = []; f.push("\u989d\uff0c\u4ee3\u7801\u6709\u9519\u3002\u3002\u3002"); f.push("\n\u9519\u8bef\u4fe1\u606f\uff1a", b); f.push("\n\u51fa\u9519\u6587\u4ef6\uff1a", c); f.push("\n\u51fa\u9519\u4f4d\u7f6e\uff1a", d + "\u884c\uff0c" + e + "\u5217"); alert(f.join("")) } } }, ready: function (a) { if (a && "function" == typeof a) { var b = this, c = function () { a(b) }; "undefined" == typeof window.WeixinJSBridge ? document.addEventListener ? document.addEventListener("WeixinJSBridgeReady", c, !1) : document.attachEvent && (document.attachEvent("WeixinJSBridgeReady", c), document.attachEvent("onWeixinJSBridgeReady", c)) : c() } }, shareToTimeline: function (a, b) { b = b || {}; }, shareToWeibo: function (a, b) { b = b || {}; }, shareToFriend: function (a, b) { b = b || {}; }, generalShare: function (a, b) { b = b || {}; }, addContact: function (a, b) { b = b || {}; }, showOptionMenu: function () { }, hideOptionMenu: function () { }, showToolbar: function () { }, hideToolbar: function () { }, getNetworkType: function (a) { }, imagePreview: function (a, b) { }, closeWindow: function (a) { a = a || {}; }, openInWeixin: function () { return /MicroMessenger/i.test(navigator.userAgent) }, getInstallState: function (a, b) { b = b || {}; }, scanQRCode: function (a) { a = a || {}; } } }(); var PauseLayer = cc.LayerColor.extend({ backSp: null, winSize: null, scoLevel: null, score: 0, count: 0, target: 0, ctor: function (a, b, c, d) { this._super(a); this.score = b; this.count = c; this.target = d; this.init() }, init: function () { this.winSize = cc.director.getWinSize(); this.backSp = new cc.Sprite(res_img.PauseBG_jpg); this.backSp.setPosition(this.winSize.width / 2, this.winSize.height / 2); this.addChild(this.backSp, 0); this.backSp.tag = 100; this.backSp.setScale(0); var a = this.backSp.getContentSize(), b = this.count * this.target + parseInt(this.score / 2), c = "", d = 0; 600 >= b && 0 < b ? (d = 0, c = "\u6b8b\u6b21\u54c1\u7684") : 600 < b && 1E3 >= b ? (d = 1, c = "\u4e94\u54c1\u7684") : 1E3 < b && 1500 >= b ? (d = 2, c = "\u56db\u54c1\u7684") : 1500 < b && 2200 >= b ? (d = 3, c = "\u4e09\u54c1\u7684") : 2200 < b && 3E3 >= b ? (d = 4, c = "\u4e8c\u54c1\u7684") : 3E3 < b && 3300 >= b ? (d = 5, c = "\u4e00\u54c1\u7684") : 3300 < b ? (d = 6, c = "\u6781\u54c1\u7684") : 0 >= b && (d = 7); var e = "Level_" + d, f = new cc.LabelTTF(NJ.ScoreLevels[e][0] + "\n\u4f60\u83b7\u5f97\u4e86\uff1a" + this.score + "\u5206,\n\u8ba1\u7b97\u80fd\u529b\uff1a" + b + ", \n\u5c5e\u4e8e\uff1a" + NJ.ScoreLevels[e][1], "Helvetica", parseInt(a.width / 16)); f.textAlign = cc.TEXT_ALIGNMENT_CENTER; f.boundingWidth = a.width; f.setPosition(a.width / 2, 3 * a.height / 4); this.backSp.addChild(f, 1); var d = res_img["Brain_" + d + "_png"], g = new cc.Sprite(d), h = g.getTextureRect(), k = f.getContentSize(); g.setPosition(f.getPosition().x, f.getPosition().y - (k.height / 2 + h.width / 2)); g.setScale(0.8); this.backSp.addChild(g, 1); updateShare(NJ.ScoreLevels[e][1],this.score); Play68.setRankingScoreDesc(this.score); b = new cc.MenuItemImage(res_img.RefreshBtnN_png, res_img.RefreshBtnS_png, this.refresh, this); c = new cc.MenuItemImage(res_img.ShareBtnN_png, res_img.ShareBtnS_png, this.share, this); e = (new cc.Sprite(res_img.RefreshBtnN_png)).getTextureRect(); b.setPosition(a.width / 2 - e.width / 2, -a.height / 11 * 7); c.setPosition(-b.getPosition().x, b.getPosition().y); a = new cc.Menu(b, c); this.backSp.addChild(a, 1); a = cc.sequence(cc.spawn(cc.scaleTo(0.5, 1), cc.jumpBy(0.5, cc.p(0, 0), this.winSize.height / 3, 1)), cc.jumpBy(0.5, cc.p(0, 0), this.winSize.height / 20, 1)); this.backSp.runAction(a) }, refresh: function () { var a = new GameScene; cc.director.runScene(a) }, share: function () { var a = new ShareGuideLayer; this.parent.addChild(a, 100) } }); var ShareGuideLayer = cc.LayerColor.extend({ ctor: function () { this._super(cc.color(0, 0, 0, 220)); var a = new cc.LabelTTF('\u70b9\u51fb\"+\"\u83dc\u5355\n"\u5206\u4eab\u5230\u670b\u53cb\u5708"\n\u68c0\u6d4b\u4e0b\u670b\u53cb\u4eec\u4e0d\u582a\u7684\u5927\u8111 (\u2192_\u2192)', "\u5b8b\u4f53", 30, cc.size(0.7 * cc.winSize.width, 253), cc.TEXT_ALIGNMENT_CENTER), b = cc.director.getWinSize(); a.setPosition(b.width / 2, b.height / 2); this.addChild(a) }, onEnter: function () { this._super(); var a = this; cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ONE_BY_ONE, onTouchBegan: function (b, c) { a.removeFromParent() } }, this) } }); logoData = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM4AAADwCAYAAABIb1sZAAAACXBIWXMAAAsTAAALEwEAmpwYAABD1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMTQgNzkuMTUxNDgxLCAyMDEzLzAzLzEzLTEyOjA5OjE1ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpjcnM9Imh0dHA6Ly9ucy5hZG9iZS5jb20vY2FtZXJhLXJhdy1zZXR0aW5ncy8xLjAvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxjcnM6QWxyZWFkeUFwcGxpZWQ+VHJ1ZTwvY3JzOkFscmVhZHlBcHBsaWVkPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaT54bXAuZGlkOjc1MDQ5MjY2RUExREUzMTE4MTE0QTc3RUM3QThCMEYzPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+eG1wLmRpZDo3RDE5OTdCOUREMURFMzExODExNEE3N0VDN0E4QjBGMzwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgIDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNC0wNC0xMlQxODo1MTo0OCswODowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE1LTAxLTIxVDE2OjIzOjAxKzA4OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wMS0yMVQxNjoyMzowMSswODowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+ZGVyaXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5jb252ZXJ0ZWQgZnJvbSBpbWFnZS9qcGVnIHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3A8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjBFMzMzOTEyMzJDMkUzMTFCNzYzRjAwMkQwQUEzQ0FFPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA0LTEyVDE5OjA2OjUzKzA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3M8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjViMTE4M2U2LTkyYmYtOTc0Zi04OGNmLTQwYTBiYmIyMTRhYzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wMS0yMVQxNjoyMzowMSswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+ZGVyaXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5jb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZDVjMDg0NWUtZjI4NS00ZjRiLWEwZTQtMzY4NGYzZjkyMjdiPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTAxLTIxVDE2OjIzOjAxKzA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6NWIxMTgzZTYtOTJiZi05NzRmLTg4Y2YtNDBhMGJiYjIxNGFjPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWY2NDM2OWItNDc3YS0xMWU0LWJlZDgtZTQxYWE1YTcxOWYzPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MEUzMzM5MTIzMkMyRTMxMUI3NjNGMDAyRDBBQTNDQUU8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVmNjQzNjliLTQ3N2EtMTFlNC1iZWQ4LWU0MWFhNWE3MTlmMzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpkNWMwODQ1ZS1mMjg1LTRmNGItYTBlNC0zNjg0ZjNmOTIyN2I8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDowRTMzMzkxMjMyQzJFMzExQjc2M0YwMDJEMEFBM0NBRTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8dGlmZjpJbWFnZVdpZHRoPjE2MDwvdGlmZjpJbWFnZVdpZHRoPgogICAgICAgICA8dGlmZjpJbWFnZUxlbmd0aD4xNzI8L3RpZmY6SW1hZ2VMZW5ndGg+CiAgICAgICAgIDx0aWZmOkJpdHNQZXJTYW1wbGU+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPjg8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT44PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+ODwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwvdGlmZjpCaXRzUGVyU2FtcGxlPgogICAgICAgICA8dGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPjI8L3RpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6U2FtcGxlc1BlclBpeGVsPjM8L3RpZmY6U2FtcGxlc1BlclBpeGVsPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6RXhpZlZlcnNpb24+MDIyMTwvZXhpZjpFeGlmVmVyc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+Mo8UAQAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAynUlEQVR42uydeXgUZZ7Hv9VHujvpXCQkciQhJJySQw4VkFMEHEXUcZWdBQYQz8UBddFdWVccrxVU8ER8mMkwMDg6rsIwKoIMKgRQzoQzJCEXITdJJ510d/qo/SNdTXXVW9XVSSeQ7vf7PPVA+qiq7n4/7+94f+/7MizLgoqKyj+p6FdARUXBoaKi4FBRUXCoqCg4VFQUHCoqKgoOFRUFh4qKgkNFRcGhoqLgUFFRUXCoqCg4VFQUHCoqCg4VFQWHioqKgkNFRcGhoqLgUFFRcKioKDhUVFQUHCoqCg4VFQWHioqCQ0VFwaGioqLgUFFRcKioKDhUVBQcKioKDhUVFQWHioqCQ0VFwaGiouBQUVFwqKioZKUJtg/EMEyvvfe3frx/KgBsWL4fxSfrfL281H1cdwqFDZmZYPuQvQicQbfOSc2+ff6w7NgbwucCyOY/WXyyHrtzzvkD0I8ATrqPUgoOBSdYwIkBMBXA3PCosKn3/HvGoLGzU3y+6bM3juHIrjJ/r1UKYDuAzW6QKDgUnF4FTgyAewHMdf8LADAYtXjhs9kwGLWKTvL6Q7twpbqts/fAQfRuT1miUACHJge6R9kAcgCUuP+9l/+kxWzH/i+KFJ9s5uIRXXIJAaxw38s+4b1QUXCuB011N84TABa5LQ5R+/9WhMtFJkUnHTs7RbF1UnB/X7khWkR/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"; sceneLoad = cc.Scene.extend({ _interval: null, _label: null, _className: "LoaderScene", init: function () { var a = this, b = 200, c = a._bgLayer = new cc.LayerColor(cc.color(4, 5, 23, 255)); c.setPosition(cc.visibleRect.bottomLeft); a.addChild(c, 0); var d = 24, e = -b / 2 + 100; cc._loaderImage && (cc.loader.loadImg(logoData, { isCrossOrigin: !1 }, function (c, d) { b = d.height; a._initStage(d, cc.visibleRect.center) }), d = 14, e = -b / 2 - 10); d = a._label = cc.LabelTTF.create("\u6570\u4e0d\u72ec\u52a0\u8f7d\u4e2d... 0%", "Arial", d); d.setPosition(cc.pAdd(cc.visibleRect.center, cc.p(0, e))); d.setColor(cc.color(180, 180, 180)); c.addChild(this._label, 10); return !0 }, _initStage: function (a, b) { var c = this._texture2d = new cc.Texture2D; c.initWithElement(a); c.handleLoadedTexture(); c = this._logo = cc.Sprite.create(c); c.setScale(cc.contentScaleFactor()); c.x = b.x; c.y = b.y; this._bgLayer.addChild(c, 10) }, onEnter: function () { cc.Node.prototype.onEnter.call(this); this.schedule(this._startLoading, 0.3) }, onExit: function () { cc.Node.prototype.onExit.call(this); this._label.setString("\u6570\u4e0d\u72ec\u52a0\u8f7d\u4e2d... 0%") }, initWithResources: function (a, b) { cc.isString(a) && (a = [a]); this.resources = a || []; this.cb = b }, _startLoading: function () { var a = this; a.unschedule(a._startLoading); cc.loader.load(a.resources, function (b, c, d) { b = Math.min(d / c * 100 | 0, 100); a._label.setString("\u6570\u4e0d\u72ec\u52a0\u8f7d\u4e2d... " + b + "%") }, function () { a.cb && a.cb() }) } }); sceneLoad.preload = function (a, b) { var c = cc; c.sceneLoad || (c.sceneLoad = new sceneLoad, c.sceneLoad.init()); c.sceneLoad.initWithResources(a, b); cc.director.runScene(c.sceneLoad); return c.sceneLoad }; cc.game.onStart = function () { var a = cc.size(480, 800); cc.loader.resPath = "res"; cc.view.setDesignResolutionSize(a.width, a.height, cc.ResolutionPolicy.SHOW_ALL); cc.view.resizeWithBrowserSize(!0); cc.view.canSetContentScaleFactor("RW/DW"); sceneLoad.preload(g_resources, function () { cc.director.runScene(new WelcomeScene) }, this) }; cc.game.run();