/**1.9.8*/ var OS_PC = "pc", OS_IPHONE = "iPhone", OS_IPOD = "iPod", OS_IPAD = "iPad", OS_ANDROID = "Android", OS_WINDOWS_PHONE = "Windows Phone", OS_BLACK_BERRY = "BlackBerry", NONE = "none", UNDEFINED = "undefined", LANDSCAPE = "landscape", PORTRAIT = "portrait", mouseX, mouseY; function LEvent(type) { this.eventType = type; this._ll_preventDefault = false; } LEvent.prototype.preventDefault = function() { this._ll_preventDefault = true; }; LEvent.INIT = "init"; LEvent.COMPLETE = "complete"; LEvent.ENTER_FRAME = "enter_frame"; LEvent.WINDOW_RESIZE = "resize"; LEvent.SOUND_COMPLETE = "sound_complete"; LEvent.END_CONTACT = "endContact"; LEvent.PRE_SOLVE = "preSolve"; LEvent.POST_SOLVE = "postSolve"; LEvent.BEGIN_CONTACT = "beginContact"; LEvent.addEventListener = function(n, t, f, b) { if (b == null) { b = false; } if (n.addEventListener) { n.addEventListener(t, f, b); } else if (n.attachEvent) { n["e" + t + f] = f; n[t + f] = function() { n["e" + t + f](); }; n.attachEvent("on" + t, n[t + f]); } }; LEvent.removeEventListener = function(n, t, f, b) { if (b == null) { b = false; } if (n.removeEventListener) { n.removeEventListener(t, f, b); } else if (n.detachEvent) { n["e" + t + f] = f; n[t + f] = function() { n["e" + t + f](); }; n.detachEvent("on" + t, n[t + f]); } }; var LMouseEvent = function() { throw "LMouseEvent cannot be instantiated"; }; LMouseEvent.MOUSE_DOWN = "mousedown"; LMouseEvent.MOUSE_UP = "mouseup"; LMouseEvent.TOUCH_START = "touchstart"; LMouseEvent.TOUCH_MOVE = "touchmove"; LMouseEvent.TOUCH_END = "touchend"; LMouseEvent.MOUSE_MOVE = "mousemove"; LMouseEvent.MOUSE_OVER = "mouseover"; LMouseEvent.MOUSE_OUT = "mouseout"; LMouseEvent.DOUBLE_CLICK = "dblclick"; var LMultitouchInputMode = function() { throw "LMultitouchInputMode cannot be instantiated"; }; LMultitouchInputMode.NONE = "none"; LMultitouchInputMode.GESTURE = "gesture"; LMultitouchInputMode.TOUCH_POINT = "touchPoint"; var LMultitouch = function() { throw "LMultitouch cannot be instantiated"; }; LMultitouch.inputMode = "none"; LMultitouch.touchs = []; var LTextEvent = function() { throw "LTextEvent cannot be instantiated"; }; LTextEvent.TEXT_INPUT = "textInput"; LTextEvent.WIND_COMPLETE = "windComplete"; var LFocusEvent = function() { throw "LFocusEvent cannot be instantiated"; }; LFocusEvent.FOCUS_IN = "focusIn"; LFocusEvent.FOCUS_OUT = "focusOut"; var LMouseEventContainer = (function() { function MouseEventContainer() { var s = this; s.container = {}; s.dispatchAllEvent = false; s.mouseDownContainer = []; s.mouseUpContainer = []; s.mouseMoveContainer = []; s.mouseOverContainer = []; s.mouseOutContainer = []; s.mouseDblContainer = []; s.textFieldInputContainer = []; s.buttonContainer = []; }; MouseEventContainer.prototype = { pushInputBox: function(d) { var s = this, c = s.textFieldInputContainer, i, l; for (i = 0, l = c.length; i < l; i++) { if (d.objectIndex == c[i].objectIndex) { return; } } s.textFieldInputContainer.push(d); }, removeInputBox: function(d) { var s = this, c = s.textFieldInputContainer, i, l; for (i = 0, l = c.length; i < l; i++) { if (d.objectIndex == c[i].objectIndex) { s.textFieldInputContainer.splice(i, 1); break; } } }, pushButton: function(d) { var s = this, c = s.buttonContainer, i, l; for (i = 0, l = c.length; i < l; i++) { if (d.objectIndex == c[i].objectIndex) { return; } } s.buttonContainer.push(d); }, removeButton: function(d) { var s = this, c = s.buttonContainer, i, l; for (i = 0, l = c.length; i < l; i++) { if (d.objectIndex == c[i].objectIndex) { s.buttonContainer.splice(i, 1); break; } } }, dispatchEventButton: function(e) { var s = this, c = s.buttonContainer, i, l; for (i = 0, l = c.length; i < l; i++) { if (typeof s.buttonContainer[i].ll_button_mode == "function") { s.buttonContainer[i].ll_button_mode(e); } } }, addEvent: function(o, list, f) { var s = this; list.push({ container: o, listener: f }); }, removeEvent: function(o, list, f) { var s = this, i, l; for (i = 0, l = list.length; i < l; i++) { if (list[i].container.objectIndex === o.objectIndex && (!f || list[i].listener == f)) { list.splice(i, 1); break; } } }, addMouseDownEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseDownContainer, f); }, addMouseUpEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseUpContainer, f); }, addMouseMoveEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseMoveContainer, f); }, addMouseOverEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseOverContainer, f); }, addMouseOutEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseOutContainer, f); }, addMouseDblEvent: function(o, f) { var s = this; s.addEvent(o, s.mouseDblContainer, f); }, addMouseEvent: function(o, t, f) { var s = this; if (t == LMouseEvent.MOUSE_DOWN) { s.addMouseDownEvent(o, f); } else if (t == LMouseEvent.MOUSE_UP) { s.addMouseUpEvent(o, f); } else if (t == LMouseEvent.MOUSE_OVER) { s.addMouseOverEvent(o, f); } else if (t == LMouseEvent.MOUSE_OUT) { s.addMouseOutEvent(o, f); } else if (t == LMouseEvent.MOUSE_MOVE) { s.addMouseMoveEvent(o, f); } else { s.addMouseDblEvent(o, f); } }, hasEvent: function(o, list) { for (var i = 0, l = list.length; i < l; i++) { if (list[i].container.objectIndex === o.objectIndex) { return true; } } return false; }, removeMouseDownEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseDownContainer, f); }, removeMouseUpEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseUpContainer, f); }, removeMouseMoveEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseMoveContainer, f); }, removeMouseOverEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseOverContainer, f); }, removeMouseOutEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseOutContainer, f); }, removeMouseDblEvent: function(o, f) { var s = this; s.removeEvent(o, s.mouseDblContainer, f); }, removeMouseEvent: function(o, t, f) { var s = this; if (t == LMouseEvent.MOUSE_DOWN) { s.removeMouseDownEvent(o, f); } else if (t == LMouseEvent.MOUSE_UP) { s.removeMouseUpEvent(o, f); } else if (t == LMouseEvent.MOUSE_OVER) { s.removeMouseOverEvent(o, f); } else if (t == LMouseEvent.MOUSE_OUT) { s.removeMouseOutEvent(o, f); } else if (t == LMouseEvent.MOUSE_MOVE) { s.removeMouseMoveEvent(o, f); } else { s.removeMouseDblEvent(o, f); } }, dispatchMouseEvent: function(event, type) { var s = this; if (type == LMouseEvent.MOUSE_DOWN) { s.dispatchEvent(event, s.mouseDownContainer, LMouseEvent.MOUSE_DOWN); s.dispatchEvent(event, s.textFieldInputContainer); } else if (type == LMouseEvent.MOUSE_UP) { s.dispatchEvent(event, s.mouseUpContainer, LMouseEvent.MOUSE_UP); } else if (type == LMouseEvent.DOUBLE_CLICK) { s.dispatchEvent(event, s.mouseDblContainer, LMouseEvent.DOUBLE_CLICK); } else { s.dispatchEventButton(event); s.dispatchEvent(event, s.mouseOutContainer, LMouseEvent.MOUSE_OUT); s.dispatchEvent(event, s.mouseOverContainer, LMouseEvent.MOUSE_OVER); s.dispatchEvent(event, s.mouseMoveContainer, LMouseEvent.MOUSE_MOVE); } }, getRootParams: function(s) { var p = s.parent, r = { x: 0, y: 0, scaleX: 1, scaleY: 1 }; while (p && p != "root") { r.x*=p.scaleX; r.y*=p.scaleY; r.x += p.x; r.y += p.y; r.scaleX*=p.scaleX; r.scaleY*=p.scaleY; p = p.parent; } return r; }, _mouseEnabled: function(sp) { var self = this; if (!sp ||!sp.parent) { return false; } if (!sp.visible || (typeof sp.mouseEnabled != UNDEFINED&&!sp.mouseEnabled)) { return false; } var p = sp.parent; while (p && p != "root") { if (!p.mouseEnabled ||!p.mouseChildren ||!p.visible) { return false; } p = p.parent; if (!p) { return false; } } return true; }, _dispatchEvent: function(event, type, st, index, fromIndex, endIndex) { var self = this, i, j, l = st.length; for (i = fromIndex; i <= endIndex && i < l; i++) { o = st[i]; if (o.sp.objectIndex != index) { continue; } event.currentTarget = event.clickTarget = o.sp; if (!event.target) { event.target = o.sp; } event.event_type = type; event.selfX = (event.offsetX - o.co.x - o.sp.x) / (o.co.scaleX * o.sp.scaleX); event.selfY = (event.offsetY - o.co.y - o.sp.y) / (o.co.scaleY * o.sp.scaleY); o.listener(event, o.sp); } }, dispatchEvent: function(event, list, type) { var self = this, sp, co, st = [], o, i, l; for (i = 0, l = list.length; i < l; i++) { sp = list[i].container || list[i]; if (!self._mouseEnabled(sp)) { continue; } co = self.getRootParams(sp); if (!type && sp.mouseEvent) { sp.mouseEvent(event, LMouseEvent.MOUSE_DOWN, co); continue; } if (sp.ismouseon(event, co)) { if (type == LMouseEvent.MOUSE_OUT) { continue; } if (type == LMouseEvent.MOUSE_OVER) { if (sp.ll_mousein) { continue; } } if (type != LMouseEvent.MOUSE_UP) { sp.ll_mousein = true; } st.push({ sp: sp, co: co, listener: list[i].listener }); } else { if (type != LMouseEvent.MOUSE_OUT && type != LMouseEvent.MOUSE_OVER) { continue; } if (!sp.ll_mousein) { continue; } sp.ll_mousein = false; st.push({ sp: sp, co: co, listener: list[i].listener }); } } if (st.length == 0) { return; } if (st.length > 1) { st = st.sort(self._sort.bind(self)); } l = st.length; for (i = 0; i < l; i++) { o = st[i]; self._dispatchEvent(event, type, st, o.sp.objectIndex, i, self.dispatchAllEvent ? l - 1 : i); if (i < st.length - 1 && o.sp.objectIndex == st[i + 1].sp.objectIndex) { st.splice(i, 1); i--; continue; } var p; while (true) { if (!p) { p = o.sp.parent; event.target = o.sp; } if (!p || p == "root") { break; } self._dispatchEvent(event, type, st, p.objectIndex, i + 1, l); event.target = p; p = p.parent; if (!p || p == "root") { break; } } if (!self.dispatchAllEvent) { break; } else { continue; } } }, set: function(t, v) { this.container[t] = v; }, _sort: function(a, b) { var s = this, o1, o2, al = s._getSort(a.sp), bl = s._getSort(b.sp), i, l1, l2; for (i = 0, l1 = al.length, l2 = bl.length; i < l1 && i < l2; i++) { o1 = al[i]; o2 = bl[i]; if (o1.objectIndex == o2.objectIndex) { continue; } return o2.parent.getChildIndex(o2) - o1.parent.getChildIndex(o1); } return bl.length - al.length; }, _getSort: function(layer) { var p = layer.parent, list = [layer]; while (p && p != "root") { list.unshift(p); p = p.parent; } return list; } }; return new MouseEventContainer(); })(); var LKeyboardEvent = function() { throw "LKeyboardEvent cannot be instantiated"; }; LKeyboardEvent.KEY_DOWN = "keydown"; LKeyboardEvent.KEY_UP = "keyup"; LKeyboardEvent.KEY_PRESS = "keypress"; var LAccelerometerEvent = function() { throw "LAccelerometerEvent cannot be instantiated"; }; LAccelerometerEvent.DEVICEMOTION = "devicemotion"; function LStageAlign() { throw "LStageAlign cannot be instantiated"; } LStageAlign.TOP = "T"; LStageAlign.BOTTOM = "B"; LStageAlign.LEFT = "L"; LStageAlign.RIGHT = "Re"; LStageAlign.TOP_LEFT = "TL"; LStageAlign.TOP_RIGHT = "TR"; LStageAlign.TOP_MIDDLE = "TM"; LStageAlign.BOTTOM_LEFT = "BL"; LStageAlign.BOTTOM_RIGHT = "BR"; LStageAlign.BOTTOM_MIDDLE = "BM"; LStageAlign.MIDDLE = "M"; function LStageScaleMode() { throw "LStageScaleMode cannot be instantiated"; } LStageScaleMode.EXACT_FIT = "exactFit"; LStageScaleMode.SHOW_ALL = "showAll"; LStageScaleMode.NO_BORDER = "noBorder"; LStageScaleMode.NO_SCALE = "noScale"; var LGlobal = (function() { function LGlobal() { throw "LGlobal cannot be instantiated"; } LGlobal.FULL_SCREEN = "full_screen"; LGlobal.traceDebug = false; LGlobal.displayState = NONE; LGlobal.aspectRatio = NONE; LGlobal.canvasObj = null; LGlobal.canvas = null; LGlobal.webAudio = true; LGlobal.objectIndex = 1; LGlobal.stage = null; LGlobal.width = 0; LGlobal.height = 0; LGlobal.box2d = null; LGlobal.speed = 50; LGlobal.IS_MOUSE_DOWN = false; LGlobal.stopPropagation = false; LGlobal.preventDefault = true; LGlobal.childList = new Array(); LGlobal.dragList = new Array(); LGlobal.excludingContainer = new Array(); LGlobal.fpsStatus = null; LGlobal.stageScale = "noScale"; LGlobal.align = "M"; LGlobal.mobile = false; LGlobal.canTouch = false; LGlobal.os = OS_PC; LGlobal.ios = false; LGlobal.android = false; LGlobal.android_new = false; LGlobal.backgroundColor = null; LGlobal.destroy = true; LGlobal.forceRefresh = false; LGlobal.devicePixelRatio = window.devicePixelRatio || 1; LGlobal.startTimer = 0; LGlobal.keepClear = true; LGlobal.top = 0; LGlobal.left = 0; LGlobal.window = window; (function(n) { LGlobal.isFirefox = (n.toLowerCase().indexOf('firefox') >= 0); if (n.indexOf(OS_IPHONE) > 0) { LGlobal.os = OS_IPHONE; LGlobal.canTouch = true; LGlobal.ios = true; } else if (n.indexOf(OS_IPOD) > 0) { LGlobal.os = OS_IPOD; LGlobal.canTouch = true; LGlobal.ios = true; } else if (n.indexOf(OS_IPAD) > 0) { LGlobal.os = OS_IPAD; LGlobal.ios = true; LGlobal.canTouch = true; } else if (n.indexOf(OS_ANDROID) > 0) { LGlobal.os = OS_ANDROID; LGlobal.canTouch = true; LGlobal.android = true; var i = n.indexOf(OS_ANDROID); if (parseInt(n.substr(i + 8, 1)) > 3) { LGlobal.android_new = true; } } else if (n.indexOf(OS_WINDOWS_PHONE) > 0) { LGlobal.os = OS_WINDOWS_PHONE; LGlobal.canTouch = true; } else if (n.indexOf(OS_BLACK_BERRY) > 0) { LGlobal.os = OS_BLACK_BERRY; LGlobal.canTouch = true; } LGlobal.mobile = LGlobal.canTouch; })(navigator.userAgent); LGlobal.setDebug = function(v) { LGlobal.traceDebug = v; }; LGlobal.setCanvas = function(id, w, h) { LGlobal.ll_createCanvas(id, w, h); LGlobal.ll_createStage(); if (LGlobal.displayState == LStage.FULL_SCREEN) { LGlobal.resize(); } else if (typeof LGlobal.displayState == "number") { LGlobal.resize(LGlobal.width * LGlobal.displayState, LGlobal.height * LGlobal.displayState); } if (LGlobal.canTouch) { LGlobal.ll_clicks = 0; LGlobal.ll_prev_clickTime = 0; LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.TOUCH_START, LGlobal.ll_touchStart); LEvent.addEventListener(document, LMouseEvent.TOUCH_END, LGlobal.ll_touchEnd); LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.TOUCH_MOVE, LGlobal.ll_touchMove); } else { LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.DOUBLE_CLICK, LGlobal.ll_mouseDbclick); LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_DOWN, LGlobal.ll_mouseDown); LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_MOVE, LGlobal.ll_mouseMove); LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_UP, LGlobal.ll_mouseUp); LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_OUT, LGlobal.ll_mouseOut); } }; LGlobal.ll_createCanvas = function(id, w, h) { LGlobal.id = id; LGlobal.object = document.getElementById(id); LGlobal.object.innerHTML = '
' + '' + '
' + "

Hey there,it looks like you're using Microsoft's Internet Explorer. Microsoft hates the Web and doesn't support HTML5:(

" + '
' + '
' + ''; LGlobal.canvasObj = document.getElementById(LGlobal.id + "_canvas"); LGlobal._canvas = document.createElement("canvas"); LGlobal._context = LGlobal._canvas.getContext("2d"); if (LGlobal._context) { LGlobal.canvasObj.innerHTML = ""; } LGlobal.inputBox = document.getElementById(LGlobal.id + '_InputText'); LGlobal.inputTextareaBoxObj = document.getElementById(LGlobal.id + '_InputTextareaBox'); LGlobal.inputTextBoxObj = document.getElementById(LGlobal.id + '_InputTextBox'); LGlobal.passwordBoxObj = document.getElementById(LGlobal.id + '_passwordBox'); LGlobal.inputTextField = null; if (w) { LGlobal.canvasObj.width = w; } if (h) { LGlobal.canvasObj.height = h; } LGlobal.width = LGlobal.canvasObj.width; LGlobal.height = LGlobal.canvasObj.height; LGlobal.canvasStyleWidth = LGlobal.width; LGlobal.canvasStyleHeight = LGlobal.height; LGlobal.canvas = LGlobal.canvasObj.getContext("2d"); LGlobal.offsetX = mouseX = 0; LGlobal.offsetY = mouseY = 0; }; LGlobal.ll_createStage = function() { LGlobal.stage = new LSprite(); LGlobal.stage.parent = "root"; LGlobal.childList.push(LGlobal.stage); LGlobal.stage.baseAddEvent = LGlobal.stage.addEventListener; LGlobal.stage.baseRemoveEvent = LGlobal.stage.removeEventListener; LGlobal.stage.addEventListener = function(type, listener) { if (type == LEvent.WINDOW_RESIZE) { LGlobal.stage.onresizeListener = listener; LGlobal.stage.onresize = function(e) { LGlobal.stage.onresizeEvent = e; }; LEvent.addEventListener(LGlobal.window, type, LGlobal.stage.onresize); } else if (type == LKeyboardEvent.KEY_DOWN || type == LKeyboardEvent.KEY_UP || type == LKeyboardEvent.KEY_PRESS) { LEvent.addEventListener(LGlobal.window, type, listener); } else { LGlobal.stage.baseAddEvent(type, listener); } }; LGlobal.stage.removeEventListener = function(type, listener) { if (type == LEvent.WINDOW_RESIZE) { LEvent.removeEventListener(LGlobal.window, LEvent.WINDOW_RESIZE, LGlobal.stage.onresize); delete LGlobal.stage.onresize; delete LGlobal.stage.onresizeListener; } else if (type == LKeyboardEvent.KEY_DOWN || type == LKeyboardEvent.KEY_UP || type == LKeyboardEvent.KEY_PRESS) { LEvent.removeEventListener(LGlobal.window, type, listener); } else { LGlobal.stage.baseRemoveEvent(type, listener); } }; }; LGlobal.ll_touchStart = function(event) { if (LGlobal.inputBox.style.display != NONE) { LGlobal.inputTextField._ll_getValue(); } var canvasX, canvasY, eve, k, i; canvasX = parseInt(0 + LGlobal.object.style.left) + parseInt(LGlobal.canvasObj.style.marginLeft); canvasY = parseInt(0 + LGlobal.object.style.top) + parseInt(LGlobal.canvasObj.style.marginTop); if (LMultitouch.inputMode == LMultitouchInputMode.NONE) { eve = LGlobal.ll_touchStartEvent(event, 0, canvasX, canvasY); } else if (LMultitouch.inputMode == LMultitouchInputMode.TOUCH_POINT) { for (var i = 0, l = event.touches.length; i < l; i++) { if (!LMultitouch.touchs["touch" + event.touches[i].identifier]) { eve = LGlobal.ll_touchStartEvent(event, i, canvasX, canvasY); } } } var date = new Date(); var clickTime = date.getTime(); LGlobal.ll_clicks = (clickTime <= (LGlobal.ll_prev_clickTime + 500)) ? (LGlobal.ll_clicks + 1) : 1; LGlobal.ll_prev_clickTime = clickTime; if (LGlobal.ll_clicks === 2) { LGlobal.mouseEvent(eve, LMouseEvent.DOUBLE_CLICK); LGlobal.ll_clicks = 0; } LGlobal.IS_MOUSE_DOWN = true; if (LGlobal.mouseJoint_start) { LGlobal.mouseJoint_start(eve); } LGlobal.touchHandler(event); }; LGlobal.ll_touchStartEvent = function(event, eveIndex, canvasX, canvasY) { var eve = { offsetX: (event.touches[eveIndex].pageX - canvasX), offsetY: (event.touches[eveIndex].pageY - canvasY), touchPointID: event.touches[eveIndex].identifier }; eve.offsetX = LGlobal.ll_scaleX(eve.offsetX); eve.offsetY = LGlobal.ll_scaleY(eve.offsetY); mouseX = LGlobal.offsetX = eve.offsetX; mouseY = LGlobal.offsetY = eve.offsetY; LMultitouch.touchs["touch" + eve.touchPointID] = eve; LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_DOWN); LGlobal.buttonStatusEvent = eve; return eve; }; LGlobal.ll_touchEnd = function(event) { var e, eve, k, i, l, h; if (LMultitouch.inputMode == LMultitouchInputMode.TOUCH_POINT) { for (k in LMultitouch.touchs) { e = LMultitouch.touchs[k]; h = false; for (i = 0, l = event.touches.length; i < l; i++) { if (event.touches[i].identifier == e.touchPointID) { h = true; break; } } if (!h) { eve = e; delete LMultitouch.touchs[k]; LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_UP); } } } if (!eve) { eve = { offsetX: LGlobal.offsetX, offsetY: LGlobal.offsetY }; } LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_UP); LGlobal.touchHandler(event); LGlobal.IS_MOUSE_DOWN = false; LGlobal.buttonStatusEvent = null; if (LGlobal.mouseJoint_end) { LGlobal.mouseJoint_end(); } }; LGlobal.ll_touchMove = function(e) { var cX, cY, eve, l, ll = e.touches.length; cX = parseInt(0 + LGlobal.object.style.left) + parseInt(LGlobal.canvasObj.style.marginLeft); cY = parseInt(0 + LGlobal.object.style.top) + parseInt(LGlobal.canvasObj.style.marginTop); if (LMultitouch.inputMode == LMultitouchInputMode.NONE) { ll = 1; } for (i = 0, l = e.touches.length; i < l && i < ll; i++) { eve = { offsetX: (e.touches[i].pageX - cX), offsetY: (e.touches[i].pageY - cY), touchPointID: e.touches[i].identifier }; eve.offsetX = LGlobal.ll_scaleX(eve.offsetX); eve.offsetY = LGlobal.ll_scaleY(eve.offsetY); mouseX = LGlobal.offsetX = eve.offsetX; mouseY = LGlobal.offsetY = eve.offsetY; if (LMultitouch.touchs["touch" + eve.touchPointID] && LMultitouch.touchs["touch" + eve.touchPointID].offsetX == eve.offsetX && LMultitouch.touchs["touch" + eve.touchPointID].offsetY == eve.offsetY) { continue; } LGlobal.buttonStatusEvent = eve; LMultitouch.touchs["touch" + eve.touchPointID] = eve; LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_MOVE); } LGlobal.touchHandler(e); if (LGlobal.mouseJoint_move) { LGlobal.mouseJoint_move(eve); } }; LGlobal.ll_mouseDbclick = function(e) { if (e.offsetX == null && e.layerX != null) { e.offsetX = e.layerX; e.offsetY = e.layerY; } var event = { button: e.button }; event.offsetX = LGlobal.ll_scaleX(e.offsetX); event.offsetY = LGlobal.ll_scaleY(e.offsetY); LGlobal.mouseEvent(event, LMouseEvent.DOUBLE_CLICK); }; LGlobal.ll_mouseDown = function(e) { if (e.offsetX == null && e.layerX != null) { e.offsetX = e.layerX; e.offsetY = e.layerY; } if (LGlobal.inputBox.style.display != NONE) { LGlobal.inputTextField._ll_getValue(); } var event = { button: e.button }; event.offsetX = LGlobal.ll_scaleX(e.offsetX); event.offsetY = LGlobal.ll_scaleY(e.offsetY); LGlobal.mouseEvent(event, LMouseEvent.MOUSE_DOWN); LGlobal.IS_MOUSE_DOWN = true; if (LGlobal.mouseJoint_start) { LGlobal.mouseJoint_start(event); } }; LGlobal.ll_mouseMove = function(e) { if (e.offsetX == null && e.layerX != null) { e.offsetX = e.layerX; e.offsetY = e.layerY; } var event = {}; event.offsetX = LGlobal.ll_scaleX(e.offsetX); event.offsetY = LGlobal.ll_scaleY(e.offsetY); LGlobal.buttonStatusEvent = event; mouseX = LGlobal.offsetX = event.offsetX; mouseY = LGlobal.offsetY = event.offsetY; LGlobal.cursor = "default"; LGlobal.mouseEvent(event, LMouseEvent.MOUSE_MOVE); document.body.style.cursor = LGlobal.cursor; if (LGlobal.mouseJoint_move) { LGlobal.mouseJoint_move(event); } }; LGlobal.ll_mouseUp = function(e) { if (e.offsetX == null && e.layerX != null) { e.offsetX = e.layerX; e.offsetY = e.layerY; } var event = { button: e.button }; event.offsetX = LGlobal.ll_scaleX(e.offsetX); event.offsetY = LGlobal.ll_scaleY(e.offsetY); LGlobal.mouseEvent(event, LMouseEvent.MOUSE_UP); LGlobal.IS_MOUSE_DOWN = false; if (LGlobal.mouseJoint_end) { LGlobal.mouseJoint_end(); } }; LGlobal.ll_mouseOut = function(e) { if (e.offsetX == null && e.layerX != null) { e.offsetX = e.layerX; e.offsetY = e.layerY; } var event = {}; event.offsetX = LGlobal.ll_scaleX(e.offsetX); event.offsetY = LGlobal.ll_scaleY(e.offsetY); LGlobal.mouseEvent(event, LMouseEvent.MOUSE_OUT); LGlobal.IS_MOUSE_DOWN = false; }; LGlobal.touchHandler = function(e) { if (LGlobal.stopPropagation) { e.stopPropagation(); } if (LGlobal.preventDefault) { e.preventDefault(); } if (e.stopImmediatePropagation) { e.stopImmediatePropagation(); } return e; }; LGlobal.mouseEvent = function(e, t) { if (t == LMouseEvent.MOUSE_MOVE) { LGlobal.dragHandler(e); } if (LMouseEventContainer.container[t]) { LMouseEventContainer.dispatchMouseEvent(e, t); return; } for (var k = LGlobal.childList.length - 1; k >= 0; k--) { if (LGlobal.childList[k].mouseEvent && LGlobal.childList[k].mouseEvent(e, t)) { break; } } }; LGlobal.dragHandler = function(e) { var i, s, c, d = LGlobal.dragList; for (i = d.length - 1; i >= 0; i--) { s = d[i]; if (LGlobal.canTouch && s.ll_touchPointID != e.touchPointID) { continue; } c = s.getAbsoluteScale(); s.x = s.ll_dragStartX + (e.offsetX - s.ll_dragMX) * s.scaleX / c.scaleX; s.y = s.ll_dragStartY + (e.offsetY - s.ll_dragMY) * s.scaleY / c.scaleY; if (s.dragRange) { if (s.x < s.dragRange.left) { s.x = s.dragRange.left; } else if (s.x > s.dragRange.right) { s.x = s.dragRange.right; } if (s.y < s.dragRange.top) { s.y = s.dragRange.top; } else if (s.y > s.dragRange.bottom) { s.y = s.dragRange.bottom; } } break; } }; LGlobal._ll_mobile = function() { var w1 = LGlobal.width * 0.3, h1 = w1 * 1.5, s = LGlobal.width * 0.05, ss = w1 * 0.05, sm = w1 * 0.15, sx = w1 * 0.3, sh = h1 * 0.20, c = '#cccccc', d = '#000000', f = '#ffffff', h = '#ff0000', b, w1, h1, m, m1, n, v; b = new LSprite(); addChild(b); w1 = LGlobal.width * 0.3, h1 = w1 * 1.5; b.graphics.drawRoundRect(1, d, [s, s, w1, h1, s], true, c); b.graphics.drawRoundRect(1, d, [s + ss, s + ss, w1 - ss * 2, h1 - ss * 2, s], true, d); b.graphics.drawRect(1, f, [s + sm, s + sh, w1 - sm * 2, h1 - sh * 2], true, f); b.graphics.drawArc(1, f, [s + w1 * 0.5, s + h1 - ss * 3.5, ss * 1.5, 0, 2 * Math.PI]); b.graphics.drawRoundRect(1, f, [s + sx, s + sm, w1 - sx * 2, ss, ss * 0.5]); m = new LSprite(); m.x =- (w1 - sm * 2) * 0.5; m.y =- ss * 0.5; m.graphics.drawRect(1, h, [0, 0, w1 - sm * 2, ss], true, h); m1 = new LSprite(); m1.y =- (w1 - sm * 2) * 0.5; m1.x =- ss * 0.5; m1.graphics.drawRect(1, h, [0, 0, ss, w1 - sm * 2], true, h); n = new LSprite(); n.x = s + sx + (w1 - sx * 2) * 0.5; n.y = s + sh + (h1 - sh * 2) * 0.5; n.rotate = 45; n.addChild(m); n.addChild(m1); b.addChild(n); v = new LSprite(); v.graphics.drawVertices(2, d, [[0, 0], [sm, sm ], [0, sm * 2]], true, c); v.x = s * 1.5 + h1; v.y = s * 1.5 + h1 * 0.5; addChild(v); b.arrow = v; var fn = function() { setTimeout(function() { location.href = location.href; }, 100); }; window.onorientationchange = fn; return b; }; LGlobal.verticalError = function() { var w1 = LGlobal.width * 0.3, s = LGlobal.width * 0.05; var b = LGlobal._ll_mobile(); var d = b.clone(); d.getChildAt(0).visible = false; d.x = LGlobal.width * 0.5 + s; addChild(d); b.rotate = 90; b.x = LGlobal.width * 0.5 + s; b.y = w1 * 0.5; }; LGlobal.horizontalError = function() { var w1 = LGlobal.width * 0.3, s = LGlobal.width * 0.05; var b = LGlobal._ll_mobile(); var d = b.clone(); d.getChildAt(0).visible = false; d.rotate = 90; d.x = LGlobal.width - s; d.y = w1 * 0.5; addChild(d); b.arrow.x = s * 1.5 + w1; }; LGlobal.onShow = function() { if (LGlobal.canvas == null) { return; } if (LGlobal.fpsStatus) { LGlobal.fpsStatus.reset(); } if (LGlobal.stage.onresizeEvent) { LGlobal.stage.onresizeListener(LGlobal.stage.onresizeEvent); delete LGlobal.stage.onresizeEvent; } if (LGlobal.forceRefresh) { LGlobal.canvasObj.width = LGlobal.canvasObj.width; LGlobal.forceRefresh = false; } LGlobal.canvas.beginPath(); if (LGlobal.box2d != null) { LGlobal.box2d.ll_show(); if (!LGlobal.traceDebug && LGlobal.keepClear) { LGlobal.canvas.clearRect(0, 0, LGlobal.width + 1, LGlobal.height + 1); } } else { if (LGlobal.keepClear) { LGlobal.canvas.clearRect(0, 0, LGlobal.width + 1, LGlobal.height + 1); } if (LGlobal.backgroundColor !== null) { LGlobal.canvas.fillStyle = LGlobal.backgroundColor; LGlobal.canvas.fillRect(0, 0, LGlobal.width, LGlobal.height); } } LGlobal.show(LGlobal.childList); }; LGlobal.show = function(s) { for (var i = 0, l = s.length, c; i < l; i++) { c = s[i]; if (c && c.ll_show) { c.ll_show(); if (c._ll_removeFromSelf) { i--; l--; } } } }; LGlobal.divideCoordinate = function(w, h, row, col) { var i, j, cw = w / col, ch = h / row, r = [], c; for (i = 0; i < row; i++) { c = []; for (j = 0; j < col; j++) { c.push({ x: cw * j, y: ch * i, width: cw, height: ch }); } r.push(c); } return r; }; LGlobal._create_loading_color = function() { var co = LGlobal.canvas.createRadialGradient(LGlobal.width / 2, LGlobal.height, 0, LGlobal.width / 2, 0, LGlobal.height); co.addColorStop(0, "red"); co.addColorStop(0.3, "orange"); co.addColorStop(0.4, "yellow"); co.addColorStop(0.5, "green"); co.addColorStop(0.8, "blue"); co.addColorStop(1, "violet"); return co; }; LGlobal.hitPolygon = function(list, x, y) { var c = 0, p0 = list[0], b0x = (x <= p0[0]), b0y = (y <= p0[1]), i, l, p1, b1x, b1y; for (i = 1, l = list.length; i < l + 1; i++) { p1 = list[i % l]; b1x = (x <= p1[0]); b1y = (y <= p1[1]); if (b0y != b1y) { if (b0x == b1x) { if (b0x) { c += (b0y?-1 : 1); } } else { if (x <= (p0[0] + (p1[0] - p0[0]) * (y - p0[1]) / (p1[1] - p0[1]))) { c += (b0y?-1 : 1); } } } p0 = p1; b0x = b1x; b0y = b1y; } return 0 != c; }; LGlobal.hitTestPolygon = function(p1, p2) { var i, j, l, listA, normals, vecs, list = [[p1, [], []], [p2, [], []]]; for (j = 0; j < list.length; j++) { listA = list[j][0], normals = list[j][1]; for (i = 0, l = listA.length; i < l; i++) { list[j][2].push(new LVec2(listA[i][0], listA[i][1])); if (i < l - 1) { normals.push((new LVec2(listA[i + 1][0] - listA[i][0], listA[i + 1][1] - listA[i][1])).normL()); } } normals.push((new LVec2(listA[0][0] - listA[l - 1][0], listA[0][1] - listA[l - 1][1])).normL()); } for (j = 0; j < list.length; j++) { normals = list[j][1]; for (i = 0, l = normals.length; i < l; i++) { var r1 = LVec2.getMinMax(list[0][2], normals[i]); var r2 = LVec2.getMinMax(list[1][2], normals[i]); if (r1.max_o < r2.min_o || r1.min_o > r2.max_o) { return false; } } } return true; }; LGlobal.hitTestPolygonArc = function(vs, arc) { if (LGlobal.hitPolygon(vs, arc[0], arc[1])) { return true; } var i, j, l, p1, p2, v1, v2, ext, inn, l2; for (i = 0, l = vs.length; i < l; i++) { j = i < l - 1 ? i + 1 : 0; p1 = vs[i], p2 = vs[j]; v1 = new LVec2(arc[0] - p1[0], arc[1] - p1[1]), v2 = new LVec2(p2[0] - p1[0], p2[1] - p1[1]); l2 = v2.normalize(); inn = LVec2.dot(v1, l2); if (inn <= 0) { if (v1.x * v1.x + v1.y * v1.y < arc[3]) { return true; } } else if (inn * inn < v2.x * v2.x + v2.y * v2.y) { ext = LVec2.cross(v1, l2); if (ext * ext < arc[3]) { return true; } } } return false; }; LGlobal.hitTestArc = function(objA, objB, objAR, objBR) { var rA = objA.getWidth() * 0.5, rB = objB.getWidth() * 0.5, xA = objA._startX ? objA._startX(): objA.startX(), xB = objB._startX ? objB._startX(): objB.startX(), yA = objA._startY ? objA._startY(): objA.startY(), yB = objB._startY ? objB._startY(): objB.startY(); if (typeof objAR != UNDEFINED) { xA += (rA - objAR); yA += (rA - objAR); rA = objAR; } if (typeof objBR != UNDEFINED) { xB += (rB - objBR); yB += (rB - objBR); rB = objBR; } var disx = xA + rA - xB - rB, disy = yA + rA - yB - rB; return disx * disx + disy * disy < (rA + rB) * (rA + rB); }; LGlobal.hitTestRect = function(objA, objB, vecA, vecB) { var wA = objA.getWidth(), wB = objB.getWidth(), hA = objA.getHeight(), hB = objB.getHeight(), xA = objA._startX ? objA._startX(): objA.startX(), xB = objB._startX ? objB._startX(): objB.startX(), yA = objA._startY ? objA._startY(): objA.startY(), yB = objB._startY ? objB._startY(): objB.startY(); if (typeof vecA != UNDEFINED) { xA += (wA - vecA[0]) * 0.5; yA += (hA - vecA[1]) * 0.5; wA = vecA[0]; hA = vecA[1]; } if (typeof vecB != UNDEFINED) { xB += (wB - vecB[0]) * 0.5; yB += (hB - vecB[1]) * 0.5; wB = vecB[0]; hB = vecB[1]; } var minx = xA > xB ? xA: xB, miny = yA > yB ? yA: yB, maxx = (xA + wA) > (xB + wB) ? (xB + wB): (xA + wA), maxy = (yA + hA) > (yB + hB) ? (yB + hB): (yA + hA); return minx <= maxx && miny <= maxy; }; LGlobal.hitTest = LGlobal.hitTestRect; LGlobal.setFrameRate = function(s) { if (LGlobal.frameRate) { clearInterval(LGlobal.frameRate); } LGlobal.speed = s; LGlobal.frameRate = setInterval(function() { LGlobal.onShow(); }, s); }; LGlobal.ll_scaleX = function(v) { return (v - LGlobal.left) * LGlobal.width / LGlobal.canvasStyleWidth; }; LGlobal.ll_scaleY = function(v) { return (v - LGlobal.top) * LGlobal.height / LGlobal.canvasStyleHeight; }; LGlobal.ll_setStageSize = function(w, h) { w = Math.ceil(w); h = Math.ceil(h); LGlobal.canvasObj.style.width = w + "px"; LGlobal.canvasObj.style.height = h + "px"; LGlobal.canvasStyleWidth = w; LGlobal.canvasStyleHeight = h; }; LGlobal.resize = function(canvasW, canvasH) { var w, h, t = 0, l = 0, ww = window.innerWidth, wh = window.innerHeight; if (canvasW) { w = canvasW; } if (canvasH) { h = canvasH; } if (LGlobal.stageScale == "noScale") { w = canvasW || LGlobal.width; h = canvasH || LGlobal.height; } switch (LGlobal.stageScale) { case "exactFit": w = canvasW || ww; h = canvasH || wh; break; case "noBorder": w = canvasW || ww; h = canvasH || LGlobal.height * ww / LGlobal.width; switch (LGlobal.align) { case LStageAlign.BOTTOM: case LStageAlign.BOTTOM_LEFT: case LStageAlign.BOTTOM_RIGHT: case LStageAlign.BOTTOM_MIDDLE: t = wh - h; break; } break; case "showAll": if (ww / wh > LGlobal.width / LGlobal.height) { h = canvasH || wh; w = canvasW || LGlobal.width * wh / LGlobal.height; } else { w = canvasW || ww; h = canvasH || LGlobal.height * ww / LGlobal.width; } case "noScale": default: switch (LGlobal.align) { case LStageAlign.BOTTOM: case LStageAlign.BOTTOM_LEFT: t = wh - h; break; case LStageAlign.RIGHT: case LStageAlign.TOP_RIGHT: l = ww - w; break; case LStageAlign.TOP_MIDDLE: l = (ww - w) * 0.5; break; case LStageAlign.BOTTOM_RIGHT: t = wh - h; l = ww - w; break; case LStageAlign.BOTTOM_MIDDLE: t = wh - h; l = (ww - w) * 0.5; break; case LStageAlign.MIDDLE: t = (wh - h) * 0.5; l = (ww - w) * 0.5; break; case LStageAlign.TOP: case LStageAlign.LEFT: case LStageAlign.TOP_LEFT: default: } } LGlobal.canvasObj.style.marginTop = t + "px"; LGlobal.canvasObj.style.marginLeft = l + "px"; if (LGlobal.isFirefox) { LGlobal.left = parseInt(LGlobal.canvasObj.style.marginLeft); LGlobal.top = parseInt(LGlobal.canvasObj.style.marginTop); } LGlobal.ll_setStageSize(w, h); }; LGlobal.sleep = function(s) { var d = new Date(); while ((new Date().getTime() - d.getTime()) < s) {} }; LGlobal.screen = function(a) { LGlobal.displayState = a; if (LGlobal.stage) { if (typeof LGlobal.displayState == "number") { LGlobal.resize(LGlobal.width * LGlobal.displayState, LGlobal.height * LGlobal.displayState); } else { LGlobal.resize(); } } }; return LGlobal; })(); var LSystem = LGlobal; var LStage = LGlobal; if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt) { var len = this.length>>>0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) { from += len; } for (; from < len; from++) { if (from in this && this[from] === elt) { return from; } } return - 1; }; } if (!Array.isArray) { Array.isArray = function(value) { return Object.prototype.toString.apply(value) == '[object Array]'; }; } if (!Function.prototype.bind) { Function.prototype.bind = function(oThis) { if (typeof this !== "function") { throw new TypeError("Function.prototype.bind-what is trying to be bound is not callable"); } var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function() {}, fBound = function() { return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); }; fNOP.prototype = this.prototype; fBound.prototype = new fNOP(); return fBound; }; } if (!Array.prototype.find) { Array.prototype.find = function(predicate) { if (this == null) { throw new TypeError('Array.prototype.find called on null or undefined'); } if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); } var list = Object(this); var length = list.length>>>0; var thisArg = arguments[1]; var value; for (var i = 0; i < length; i++) { value = list[i]; if (predicate.call(thisArg, value, i, list)) { return value; } } return undefined; }; } if (!Array.prototype.findIndex) { Array.prototype.findIndex = function(predicate) { if (this == null) { throw new TypeError('Array.prototype.find called on null or undefined'); } if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); } var list = Object(this); var length = list.length>>>0; var thisArg = arguments[1]; var value; for (var i = 0; i < length; i++) { value = list[i]; if (predicate.call(thisArg, value, i, list)) { return i; } } return - 1; }; } if (!Array.prototype.forEach) { Array.prototype.forEach = function(callback, thisArg) { var T, k; if (this == null) { throw new TypeError(' this is null or not defined'); } var O = Object(this); var len = O.length>>>0; if (typeof callback !== "function") { throw new TypeError(callback + ' is not a function'); } if (arguments.length > 1) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; callback.call(T, kValue, k, O); } k++; } }; } if (!Array.prototype.every) { Array.prototype.every = function(callbackfn, thisArg) { 'use strict'; var T, k; if (this == null) { throw new TypeError('this is null or not defined'); } var O = Object(this); var len = O.length>>>0; if (typeof callbackfn !== 'function') { throw new TypeError(); } if (arguments.length > 1) { T = thisArg; } k = 0; while (k < len) { var kValue; if (k in O) { kValue = O[k]; var testResult = callbackfn.call(T, kValue, k, O); if (!testResult) { return false; } } k++; } return true; }; } if (!Array.prototype.some) { Array.prototype.some = function(fun) { 'use strict'; if (this == null) { throw new TypeError('Array.prototype.some called on null or undefined'); } if (typeof fun !== 'function') { throw new TypeError(); } var t = Object(this); var len = t.length>>>0; var thisArg = arguments.length >= 2 ? arguments[1]: void 0; for (var i = 0; i < len; i++) { if (i in t && fun.call(thisArg, t[i], i, t)) { return true; } } return false; }; } function trace() { if (!LGlobal.traceDebug) return; var t = document.getElementById("traceObject"), i; if (trace.arguments.length > 0 && t == null) { t = document.createElement("TEXTAREA"); t.id = "traceObject"; t.style.position = "absolute"; t.style.top = (LGlobal.height + 20) + "px"; t.style.width = LGlobal.width + "px"; t.style.height = "200px"; document.body.appendChild(t); } for (i = 0; i < trace.arguments.length; i++) { t.value = t.value + trace.arguments[i] + "\r\n"; t.scrollTop = t.scrollHeight; } } if (!window.console) { window.console = { log: trace, warn: trace }; } function addChild(o) { LGlobal.stage.addChild(o); } function removeChild(o) { LGlobal.stage.removeChild(o); } function init(s, c, w, h, f, t) { LGlobal.speed = s; var _f = function() { if (LGlobal.canTouch && LGlobal.aspectRatio == LANDSCAPE && window.innerWidth < window.innerHeight) { LGlobal.horizontalError(); } else if (LGlobal.canTouch && LGlobal.aspectRatio == PORTRAIT && window.innerWidth > window.innerHeight) { LGlobal.verticalError(); } else { setTimeout(f, 100); } LGlobal.startTimer = (new Date()).getTime(); }; if (t != null && t == LEvent.INIT) { LGlobal.frameRate = setInterval(function() { LGlobal.onShow(); }, s); LGlobal.setCanvas(c, w, h); _f(); } else { LEvent.addEventListener(window, "load", function() { LGlobal.frameRate = setInterval(function() { LGlobal.onShow(); }, s); LGlobal.setCanvas(c, w, h); _f(); }); } } var LInit = init; function base(d, b, a) { var p = null, o = d.constructor.prototype, h = {}; if (d.constructor.name == "Object") { console.warn("When you use the extends. You must make a method like 'XX.prototype.xxx=function(){}'. but not 'XX.prototype={xxx:function(){}}'."); } if (typeof d.__ll__parent__ == UNDEFINED) { d.__ll__parent__ = []; d.__ll__parent__ = []; } d.__ll__parent__.push(b.prototype); for (p in o) { h[p] = 1; } for (p in b.prototype) { if (!h[p]) { o[p] = b.prototype[p]; } } if (o.toString == Object.prototype.toString) { o.toString = LObject.prototype.toString; } b.apply(d, a); } var LExtends = base; function getTimer() { return (new Date()).getTime() - LGlobal.startTimer; } function getExtension(path) { var r, pattern = /([^#?]+\.)([^.#?]+)/; r = path.match(pattern); if (r.length >= 3) { return r[2].toLowerCase(); } return null; } var LObject = (function() { function LObject() { this.type = "LObject"; this.objectIndex=++LGlobal.objectIndex; this.objectindex = this.objectIndex; } LObject.prototype = { callParent: function(f_n, args) { if (!f_n ||!args) { return; } var s = this, init = false, r, k = "__ll__parent_call" + f_n; if (typeof s[k] == "undefined") { init = true; s[k] = 0; } else { s[k]++; } if (s[k] >= s.__ll__parent__.length) { return false; } if (!s.__ll__parent__[s[k]][f_n]) { r = s.callParent(f_n, args); } else { r = s.__ll__parent__[s[k]][f_n].apply(s, args); } if (init) { delete s[k]; } return r; }, toString: function() { return "[object " + this.constructor.name + "]"; } }; return LObject; })(); var LColorTransform = (function() { function LColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) { var s = this; LExtends(s, LObject, []); s.redMultiplier = redMultiplier; s.greenMultiplier = greenMultiplier; s.blueMultiplier = blueMultiplier; s.alphaMultiplier = alphaMultiplier; s.redOffset = redOffset; s.greenOffset = greenOffset; s.blueOffset = blueOffset; s.alphaOffset = alphaOffset; } return LColorTransform; })(); var LTransform = (function() { function LTransform() { var s = this; LExtends(s, LObject, []); s.matrix = null; } return LTransform; })(); var LMatrix = (function() { function LMatrix(a, b, c, d, tx, ty, u, v, w) { var s = this; LExtends(s, LObject, []); s.a = 1; s.b = 0; s.u = 0; s.c = 0; s.d = 1; s.v = 0; s.tx = 0; s.ty = 0; s.w = 1; if (typeof a != UNDEFINED) { s.a = a; } if (typeof b != UNDEFINED) { s.b = b; } if (typeof c != UNDEFINED) { s.c = c; } if (typeof d != UNDEFINED) { s.d = d; } if (typeof tx != UNDEFINED) { s.tx = tx; } if (typeof ty != UNDEFINED) { s.ty = ty; } if (typeof u != UNDEFINED) { s.u = u; } if (typeof v != UNDEFINED) { s.v = v; } if (typeof w != UNDEFINED) { s.w = w; } } var p = { setTo: function(a, b, c, d, tx, ty, u, v, w) { var s = this; if (typeof a != UNDEFINED) { s.a = a; } if (typeof b != UNDEFINED) { s.b = b; } if (typeof c != UNDEFINED) { s.c = c; } if (typeof d != UNDEFINED) { s.d = d; } if (typeof tx != UNDEFINED) { s.tx = tx; } if (typeof ty != UNDEFINED) { s.ty = ty; } if (typeof u != UNDEFINED) { s.u = u; } if (typeof v != UNDEFINED) { s.v = v; } if (typeof w != UNDEFINED) { s.w = w; } return s; }, isIdentity: function() { var s = this; return (s.a == 1 && s.b == 0 && s.c == 0 && s.d == 1 && s.tx == 0 && s.ty == 0 && u == 0 && v == 0 && w == 1); }, transform: function(c) { var s = this; c.transform(s.a, s.b, s.c, s.d, s.tx, s.ty); return s; }, identity: function() { this.setTo(1, 0, 0, 1, 0, 0, 0, 0, 1); }, rotate: function(q) { var s = this, radian = q * Math.PI / 180, cos = Math.cos(radian), sin = Math.sin(radian), mtx = new LMatrix(cos, sin, - sin, cos, 0, 0, 0, 0, 1); s.add(mtx); return s; }, scale: function(sx, sy) { var s = this, mtx = new LMatrix(sx, 0, 0, sy, 0, 0, 0, 0, 1); s.add(mtx); return s; }, translate: function(tx, ty) { var s = this, mtx = new LMatrix(1, 0, 0, 1, tx, ty, 0, 0, 1); s.add(mtx); return s; }, skew: function(kx, ky) { var s = this, mtx = new LMatrix(1, ky, kx, 1, 0, 0, 0, 0, 1); s.add(mtx); return s; }, add: function(mtx) { var s = this, a, b, c, d, tx, ty, u, v, w; a = s.a * mtx.a + s.b * mtx.c + s.u * mtx.tx; b = s.a * mtx.b + s.b * mtx.d + s.u * mtx.ty; u = s.a * mtx.u + s.b * mtx.v + s.u * mtx.w; c = s.c * mtx.a + s.d * mtx.c + s.v * mtx.tx; d = s.c * mtx.b + s.d * mtx.d + s.v * mtx.ty; v = s.c * mtx.u + s.d * mtx.v + s.v * mtx.w; tx = s.tx * mtx.a + s.ty * mtx.c + s.w * mtx.tx; ty = s.tx * mtx.b + s.ty * mtx.d + s.w * mtx.ty; w = s.tx * mtx.u + s.ty * mtx.v + s.w * mtx.w; s.setTo(a, b, c, d, tx, ty, u, v, w); }, toArray: function(mtx) { var s = this; if (Array.isArray(mtx) && mtx.length == 3) { var m = mtx[0] * s.a + mtx[1] * s.c + mtx[2] * s.tx, n = mtx[0] * s.b + mtx[1] * s.d + mtx[2] * s.ty, k = mtx[0] * s.u + mtx[1] * s.v + mtx[2] * s.w; return [m, n, k]; } else { var a = s.a * mtx.a + s.b * mtx.c + s.u * mtx.tx, b = s.a * mtx.b + s.b * mtx.d + s.u * mtx.ty, u = s.a * mtx.u + s.b * mtx.v + s.u * mtx.w, c = s.c * mtx.a + s.d * mtx.c + s.v * mtx.tx, d = s.c * mtx.b + s.d * mtx.d + s.v * mtx.ty, v = s.c * mtx.u + s.d * mtx.v + s.v * mtx.w, tx = s.tx * mtx.a + s.ty * mtx.c + s.w * mtx.tx, ty = s.tx * mtx.b + s.ty * mtx.d + s.w * mtx.ty, w = s.tx * mtx.u + s.ty * mtx.v + s.w * mtx.w; return [a, b, c, d, tx, ty, u, v, w]; } }, clone: function() { var s = this; return new LMatrix(s.a, s.b, s.c, s.d, s.tx, s.ty, s.u, s.v, s.w); } }; for (var k in p) { LMatrix.prototype[k] = p[k]; } return LMatrix; })(); var LVec2 = (function() { function LVec2(x, y) { this.x = x || 0; this.y = y || 0; } LVec2.dot = function(a, b) { return a.x * b.x + a.y * b.y; }; LVec2.cross = function(a, b) { return a.x * b.y - a.y * b.x; }; LVec2.distance = function(a, b) { var x = a.x - b.x; var y = a.y - b.y; return Math.sqrt(x * x + y * y); }; LVec2.getMinMax = function(vecs, axis) { var min_o = LVec2.dot(vecs[0], axis); var max_o = LVec2.dot(vecs[0], axis); var min_i = 0; var max_i = 0; for (var i = 1; i < vecs.length; i++) { var this_o = LVec2.dot(vecs[i], axis); if (min_o > this_o) { min_o = this_o; min_i = i; } if (max_o < this_o) { max_o = this_o; max_i = i; } } var r = { "min_o": min_o, "min_i": min_i, "max_o": max_o, "max_i": max_i }; return r; }; LVec2.prototype = { length: function() { var s = this; return Math.sqrt(s.x * s.x + s.y * s.y); }, normalize: function() { var s = this, l = s.length(); return new LVec2(s.x / l, s.y / l); }, normR: function() { return new LVec2( - this.y, this.x); }, normL: function() { return new LVec2(this.y, - this.x); } }; return LVec2; })(); var LEventDispatcher = (function() { function LEventDispatcher() { var s = this; LExtends(s, LObject, []); s._eventList = new Array(); } var p = { addEventListener: function(type, listener) { this._eventList.push({ listener: listener, type: type }); }, removeEventListener: function(type, listener) { var s = this, i, length; length = s._eventList.length; for (i = 0; i < length; i++) { if (!s._eventList[i]) { continue; } if (type == s._eventList[i].type && s._eventList[i].listener == listener) { s._eventList.splice(i, 1); return; } } }, removeAllEventListener: function() { this._eventList = []; }, dispatchEvent: function(event) { var s = this, i, length = s._eventList.length, ctype = (typeof event == "string") ? event: event.eventType; for (i = 0; i < length; i++) { if (!s._eventList[i]) { continue; } if (ctype == s._eventList[i].type) { if (typeof event == "string") { s.currentTarget = s.target = s; s.eventType = s.event_type = ctype; s._eventList[i].listener(s); delete s.currentTarget; delete s.target; delete s.eventType; } else { if (!event.target) { event.target = s; } if (!event.currentTarget) { event.currentTarget = event.target; } event._ll_preventDefault = false; s._eventList[i].listener(event); if (event._ll_preventDefault) { return false; } } return true; } } return false; }, hasEventListener: function(type, listener) { var s = this, i, length = s._eventList.length; for (i = 0; i < length; i++) { if (!s._eventList[i]) { continue; } if (type == s._eventList[i].type) { if (typeof listener == UNDEFINED || listener == s._eventList[i].listener) { return true; } } } return false; } }; for (var k in p) { LEventDispatcher.prototype[k] = p[k]; } return LEventDispatcher; })(); var LDisplayObject = (function() { function LDisplayObject() { var s = this; LExtends(s, LEventDispatcher, []); s.name = "instance" + s.objectIndex; s.x = 0; s.y = 0; s.width = 0; s.height = 0; s.scaleX = 1; s.scaleY = 1; s.alpha = 1; s.visible = true; s.rotate = 0; s.mask = null; s.blendMode = null; s.filters = null; s.transform = new LTransform(); } var p = { _createCanvas: function() { var s = this; if (!s._canvas) { s._canvas = document.createElement("canvas"); s._context = s._canvas.getContext("2d"); } }, ll_show: function() { var s = this, c = LGlobal.canvas; if (!s._canShow()) { return; } s._ll_trans = false; if (!LGlobal.box2d && typeof s._ll_loopframe == "function") { s._ll_loopframe(); } c.save(); s._showReady(c); if (s.blendMode) { c.globalCompositeOperation = s.blendMode; } if (s.filters) { s._ll_setShadow(); } s._rotateReady(); if (s.mask != null && s.mask.ll_show) { s.mask.ll_show(); c.clip(); } s._transformRotate(); s._transformScale(); s._coordinate(c); if (s.transform.matrix) { s.transform.matrix.transform(c); } if (s.alpha < 1) { s._ll_trans = true; c.globalAlpha = s.alpha; } if (LGlobal.fpsStatus) { LGlobal.fpsStatus.display++; if (s._ll_trans) { LGlobal.fpsStatus.transform++; } } s._ll_show(c); c.restore(); if (LGlobal.box2d != null && typeof s._ll_loopframe == "function") { s._ll_loopframe(); } }, _canShow: function() { return this.visible; }, _coordinate: function(c) { var s = this; if (s.x != 0 || s.y != 0) { s._ll_trans = true; c.transform(1, 0, 0, 1, s.x, s.y); } }, _rotateReady: function() {}, _showReady: function(c) {}, _ll_show: function(c) {}, _ll_setShadow: function() { var s = this, f = s.filters, i, l; if (!f) { return; } for (i = 0, l = f.length; i < l; i++) { f[i].ll_show(); } }, _transformRotate: function() { var s = this, c; if (s.rotate == 0) { return; } s._ll_trans = true; c = LGlobal.canvas, rotateFlag = Math.PI / 180, rotateObj = new LMatrix(); if ((typeof s.rotatex) == UNDEFINED) { s.rotatex = 0; s.rotatey = 0; } if (s.box2dBody) { rotateFlag = 1; } rotateObj.a = Math.cos(s.rotate * rotateFlag); rotateObj.b = Math.sin(s.rotate * rotateFlag); rotateObj.c =- rotateObj.b; rotateObj.d = rotateObj.a; rotateObj.tx = s.x + s.rotatex; rotateObj.ty = s.y + s.rotatey; rotateObj.transform(c).setTo(1, 0, 0, 1, - rotateObj.tx, - rotateObj.ty).transform(c); }, _transformScale: function() { var s = this, c = LGlobal.canvas, scaleObj; if (s.scaleX == 1 && s.scaleY == 1) { return; } s._ll_trans = true; scaleObj = new LMatrix(); if (s.scaleX != 1) { scaleObj.tx = s.x; } if (s.scaleY != 1) { scaleObj.ty = s.y; } scaleObj.a = s.scaleX; scaleObj.d = s.scaleY; scaleObj.transform(c).setTo(1, 0, 0, 1, - scaleObj.tx, - scaleObj.ty).transform(c); }, copyProperty: function(a) { var s = this, k; for (k in a) { if (typeof a[k] == "number" || typeof a[k] == "string" || typeof a[k] == "boolean") { if (k == "objectindex" || k == "objectIndex") { continue; } s[k] = a[k]; } else if (Array.isArray(a[k])) { s[k] = a[k].slice(); } } if (a.mask) { s.mask = a.mask.clone(); } }, getAbsoluteScale: function() { var s = this, sX, sY, p; sX = s.scaleX; sY = s.scaleY; p = s.parent; while (p && p != "root") { sX*=p.scaleX; sY*=p.scaleY; p = p.parent; } return { scaleX: sX, scaleY: sY }; }, getRootCoordinate: function() { var s = this, sx, sy, p; sx = s.x; sy = s.y; p = s.parent; while (p && p != "root") { sx*=p.scaleX; sy*=p.scaleY; sx += p.x; sy += p.y; p = p.parent; } return new LPoint(sx, sy); }, getBounds: function(d) { if (typeof d == UNDEFINED) { return new LRectangle(0, 0, 0, 0); } var s = this, x = 0, y = 0, w = 0, h = 0, sp, dp; if (s.objectIndex != d.objectIndex) { sp = s.getRootCoordinate(); dp = d.getRootCoordinate(); x = sp.x - dp.x; y = sp.y - dp.y; } if (d.getWidth) { w = d.getWidth(); } if (d.getHeight) { h = d.getHeight(); } return new LRectangle(x, y, w, h); }, getDataCanvas: function() { var s = this, _o, o, _c, c, _x, _y; s._createCanvas(); o = LGlobal.canvasObj; c = LGlobal.canvas; _o = s._canvas; _c = s._context; s.width = s.getWidth(); s.height = s.getHeight(); _o.width = s.width; _o.height = s.height; _c.clearRect(0, 0, s.width, s.height); LGlobal.canvasObj = s._canvas; LGlobal.canvas = s._context; _x = s.x; _y = s.y; s.x = s.y = 0; s.ll_show(); s.x = _x; s.y = _y; s._canvas = _o; s._context = _c; LGlobal.canvasObj = o; LGlobal.canvas = c; return s._canvas; }, getDataURL: function() { var s = this, r = s.getDataCanvas(); return r.toDataURL.apply(r, arguments); }, ismouseonShapes: function(shapes, mx, my) { var s = this, parent = s, m, child, j, v, arg; if (typeof shapes == UNDEFINED) { shapes = s.shapes; } m = s.getRootMatrix(); for (j = shapes.length - 1; j >= 0; j--) { child = shapes[j]; arg = child.arg; v = s._changeShape(child.type, arg, m); if (child.type == LShape.VERTICES) { if (LGlobal.hitPolygon(v, mx, my)) { return true; } } else if (child.type == LShape.RECT) { if (LGlobal.hitPolygon(v, mx, my)) { return true; } } else if (child.type == LShape.ARC) { if ((v[0] - mx) * (v[0] - mx) + (v[1] - my) * (v[1] - my) < v[3]) { return true; } } } return false; }, _changeShape: function(type, arg, m) { var v, arg = arg, r2, i, l, v1, v2; if (type == LShape.VERTICES) { v = []; for (i = 0, l = arg.length; i < l; i++) { v[i] = m.toArray([arg[i][0], arg[i][1], 1]); } } else if (type == LShape.RECT) { v = [[arg[0], arg[1]], [arg[0] + arg[2], arg[1]], [arg[0] + arg[2], arg[1] + arg[3]], [arg[0], arg[1] + arg[3]]]; for (i = 0, l = v.length; i < l; i++) { v[i] = m.toArray([v[i][0], v[i][1], 1]); } } else if (type == LShape.ARC) { v1 = m.toArray([arg[0], arg[1], 1]); v2 = m.toArray([arg[0] + arg[2], arg[1], 1]); r2 = (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]); v = [v1[0], v1[1], Math.sqrt(r2), r2]; } return v; }, getRootMatrix: function() { var parent = this, m = new LMatrix(); while (parent && parent != "root") { if (parent.scaleX != 1 || parent.scaleY != 1) { m.scale(parent.scaleX, parent.scaleY); } if (parent.rotate != 0) { m.rotate(parent.rotate); } if (parent.x != 0 || parent.y != 0) { m.translate(parent.x, parent.y); } parent = parent.parent; } return m; }, remove: function() { var s = this, p = s.parent; if (!p || p == "root") { return; } p.removeChild(s); s._ll_removeFromSelf = true; } }; for (var k in p) { LDisplayObject.prototype[k] = p[k]; } return LDisplayObject; })(); var LInteractiveObject = (function() { function LInteractiveObject() { var s = this; LExtends(s, LDisplayObject, []); s.type = "LInteractiveObject"; s.mouseEnabled = true; s.mouseList = new Array(); } var p = { addEventListener: function(type, listener) { var s = this; if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) { if (LMouseEventContainer.container[type] || ((type == LMouseEvent.MOUSE_OVER || type == LMouseEvent.MOUSE_OUT) && LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE])) { LMouseEventContainer.addMouseEvent(s, type, listener); return; } s.mouseList.push({ listener: listener, type: type }); } else { s._eventList.push({ listener: listener, type: type }); } }, removeEventListener: function(type, listener) { var s = this, i, length; if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) { if (LMouseEventContainer.container[type] || ((type == LMouseEvent.MOUSE_OVER || type == LMouseEvent.MOUSE_OUT) && LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE])) { LMouseEventContainer.removeMouseEvent(s, type, listener); return; } length = s.mouseList.length; for (i = 0; i < length; i++) { if (!s.mouseList[i]) { continue; } if (type == s.mouseList[i].type && s.mouseList[i].listener == listener) { s.mouseList.splice(i, 1); return; } } } else { return s.callParent("removeEventListener", arguments); } }, removeAllEventListener: function() { var s = this; s.mouseList.length = 0; s._eventList.length = 0; if (LMouseEventContainer.container[LMouseEvent.MOUSE_DOWN]) { LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_DOWN); } if (LMouseEventContainer.container[LMouseEvent.MOUSE_UP]) { LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_UP); } if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) { LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_MOVE); LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_OVER); LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_OUT); } }, hasEventListener: function(type) { var s = this, i, length; if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) { length = s.mouseList.length; for (i = 0; i < length; i++) { if (!s.mouseList[i]) { continue; } if (type == s.mouseList[i].type) { return true; } } } else { return s.callParent("hasEventListener", arguments); } return false; } }; for (var k in p) { LInteractiveObject.prototype[k] = p[k]; } return LInteractiveObject; })(); var LDisplayObjectContainer = (function() { function LDisplayObjectContainer() { var s = this; LExtends(s, LInteractiveObject, []); s.childList = new Array(); s.numChildren = 0; s.mouseChildren = true; } var p = { addChild: function(d) { var s = this, t; if (d.parent) { t = LGlobal.destroy; LGlobal.destroy = false; d.parent.removeChild(d); LGlobal.destroy = t; } d.parent = s; s.childList.push(d); s.numChildren = s.childList.length; s._ll_removeFromSelf = false; return d; }, addChildAt: function(d, i) { var s = this, t; if (i < 0 || i > s.childList.length) { return; } if (typeof d.remove == "function") { t = LGlobal.destroy; LGlobal.destroy = false; d.remove(); LGlobal.destroy = t; } d.parent = s; s.childList.splice(i, 0, d); s.numChildren = s.childList.length; s._ll_removeFromSelf = false; return d; }, removeChild: function(d) { var s = this, c = s.childList, i, l; for (i = 0, l = c.length; i < l; i++) { if (d.objectIndex == c[i].objectIndex) { if (LGlobal.destroy && d.die) { d.die(); } s.childList.splice(i, 1); break; } } s.numChildren = s.childList.length; delete d.parent; }, getChildAt: function(i) { var s = this, c = s.childList; if (c.length == 0 || c.length <= i) { return null; } return c[i]; }, getChildByName: function(n) { var s = this, c = s.childList; for (i = 0, l = c.length; i < l; i++) { if (!c[i]) { continue; } if (c[i].name == n) { return c[i]; } } return null; }, removeChildAt: function(i) { var s = this, c = s.childList; if (c.length <= i) { return; } if (LGlobal.destroy && c[i].die) { c[i].die(); } var d = s.childList.splice(i, 1); s.numChildren = s.childList.length; return d; }, getChildIndex: function(child) { if (!child) { return - 1; } var s = this, c = s.childList, i, l = c.length; for (i = 0; i < l; i++) { if (c[i].objectIndex == child.objectIndex) { return i; } } return - 1; }, setChildIndex: function(child, index) { var s = this, c = s.childList, i, l = c.length; if (child.parent == "root" || child.parent.objectIndex != s.objectIndex || index < 0 || index >= l) { return - 1; } for (i = 0; i < l; i++) { if (c[i].objectIndex == child.objectIndex) { break; } } s.childList.splice(i, 1); s.childList.splice(index, 0, child); return index; }, resize: function() { var s = this; s.width = s.getWidth(); s.height = s.getHeight(); }, removeAllChild: function() { var s = this, c = s.childList, i, l; for (i = 0, l = c.length; i < l; i++) { if (LGlobal.destroy && c[i].die) { c[i].die(); } } s.childList.length = 0; s.width = 0; s.height = 0; s.numChildren = 0; } }; for (var k in p) { LDisplayObjectContainer.prototype[k] = p[k]; } return LDisplayObjectContainer; })(); var LLoader = (function() { function LLoader() { var s = this; LExtends(s, LEventDispatcher, []); s.type = "LLoader"; } LLoader.TYPE_BITMAPDATE = "bitmapData"; LLoader.prototype.load = function(u, t) { var s = this; if (!t) { t = LLoader.TYPE_BITMAPDATE; } s.loadtype = t; if (t == LLoader.TYPE_BITMAPDATE) { s.content = new Image(); s.content.onload = function() { s.content.onload = null; var event = new LEvent(LEvent.COMPLETE); event.currentTarget = s; event.target = s.content; s.dispatchEvent(event); delete s.content; }; s.content.src = u; } }; return LLoader; })(); var LURLLoader = (function() { function LURLLoader() { var s = this; LExtends(s, LEventDispatcher, []); s.type = "LURLLoader"; s.loadtype = ""; s.content = null; s.event = {}; } LURLLoader.TYPE_TEXT = "text"; LURLLoader.TYPE_JS = "js"; LURLLoader.prototype.load = function(u, t) { var s = this, event, ext; if (!t) { ext = getExtension(u); if (ext == "txt") { t = LURLLoader.TYPE_TEXT; } else if (ext == "js") { t = LURLLoader.TYPE_JS; } } s.loadtype = t; if (t == LURLLoader.TYPE_TEXT) { LAjax.get(u, {}, function(data) { event = new LEvent(LEvent.COMPLETE); s.data = data; event.currentTarget = s; event.target = data; s.dispatchEvent(event); delete s.content; delete s.data; }); } else if (t == LURLLoader.TYPE_JS) { var script = document.createElement("script"); script.onload = function() { event = new LEvent(LEvent.COMPLETE); event.currentTarget = s; event.target = s; s.dispatchEvent(event); delete s.content; }; script.src = u; script.type = "text/javascript"; document.querySelector('head').appendChild(script); } }; return LURLLoader; })(); var LWebAudio = (function() { function LWebAudio() { var s = this; LExtends(s, LEventDispatcher, []); s.currentTime = 0; s.currentStart = 0; s.currentSave = 0; s.length = 0; s.loopStart = 0; s.loopEnd = 0; s.loopIndex = 0; s.loopLength = 1; s.playing = false; s.volume = 1; LSound.Container.add(s); } LWebAudio.container = []; LWebAudio.containerCount = 0; LWebAudio.audioTag = new Audio(); LWebAudio._context = null; var p = { getWebAudio: function() { var data; if (LWebAudio.containerCount > 0) { data = LWebAudio.container.shift(); } else { if (typeof webkitAudioContext !== UNDEFINED) { try { data = new webkitAudioContext(); } catch (e) { LWebAudio.containerCount = LWebAudio.container.length; data = LWebAudio.container.shift(); } } else if (typeof AudioContext !== UNDEFINED) { try { data = new AudioContext(); } catch (e) { LWebAudio.containerCount = LWebAudio.container.length; data = LWebAudio.container.shift(); } } else { throw "AudioContext not supported.:("; } } if (!data.createGainNode) { data.createGainNode = data.createGain; } LWebAudio.container.push(data); return data; }, onload: function(data) { var s = this; if (Object.prototype.toString.apply(data) !== '[object AudioBuffer]') { s.load(data); return; }; if (!s.data) { s.data = s.getWebAudio(); } s.buffer = data; s.length = s.buffer.duration; var e = new LEvent(LEvent.COMPLETE); e.currentTarget = s; e.target = s.buffer; s.dispatchEvent(e); }, _onended: function() { var s = this; s.dispatchEvent(LEvent.SOUND_COMPLETE); s.close(); if (++s.loopIndex < s.loopLength) { s.play(s.currentStart, undefined, s.currentTimeTo); } }, load: function(u) { var s = this; if (typeof u !== "string") { if (Object.prototype.toString.apply(u) == '[object AudioBuffer]') { s.onload(u); } else if (Object.prototype.toString.apply(u) == '[object ArrayBuffer]') { if (!s.data) { s.data = s.getWebAudio(); } s.data.decodeAudioData(u, s.onload.bind(s), function(error) { throw "AudioContext decodeAudioData error:" + error.toString(); }); } return; } var a, b, c, k, d, q = { "mov": ["quicktime"], "3gp": ["3gpp"], "midi": ["midi"], "mid": ["midi"], "ogv": ["ogg"], "m4a": ["acc"], "mp3": ["mpeg"], "wav": ["wav", "x-wav", "wave"], "wave": ["wav", "x-wav", "wave"], "aac": ["mp4", "aac"] }; a = u.split(','); for (k = 0; k < a.length; k++) { b = a[k].split('.'); d = b[b.length - 1]; if (q[d]) { d = q[d]; } else { d = [d]; } c = d.some(function(element, index, array) { return LWebAudio.audioTag.canPlayType(s._type + "/" + element); }); if (c) { LAjax.responseType = LAjax.ARRAY_BUFFER; LAjax.get(a[k], {}, s.onload.bind(s)); return; } else { console.warn("Not support " + b[b.length - 1] + ":" + a[k]); var e = new LEvent(LEvent.COMPLETE); e.currentTarget = e.target = s; s.dispatchEvent(e); } } }, getCurrentTime: function() { var s = this; if (s.playing) { return s.data.currentTime - s.currentSave + s.currentTime; } else { return s.currentSave; } }, setVolume: function(v) { var s = this; s.volume = v; if (s.playing) { s.volumeNode.gain.value = v; } }, getVolume: function() { return this.volume; }, play: function(c, l, to) { var s = this; if (s.length == 0) { return; } if (typeof l !== UNDEFINED) { s.loopIndex = 0; s.loopLength = l; } if (typeof c !== UNDEFINED) { s.currentTime = c; s.currentStart = c; } if (typeof to !== UNDEFINED) { s.currentTimeTo = to > s.length ? s.length : to; } else { s.currentTimeTo = s.length; } s.data.loop = false; s.playing = true; if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } s.timeout = setTimeout(s._onended.bind(s), (s.currentTimeTo - s.currentTime) * 1000); s.bufferSource = s.data.createBufferSource(); s.bufferSource.buffer = s.buffer; s.volumeNode = s.data.createGainNode(); s.volumeNode.gain.value = s.volume; s.volumeNode.connect(s.data.destination); s.bufferSource.connect(s.volumeNode); s.currentSave = s.data.currentTime; if (s.bufferSource.start) { s.bufferSource.start(0, s.currentTime, s.length - s.currentTime); } else { s.bufferSource.noteGrainOn(0, s.currentTime, s.length - s.currentTime); } }, playSegment: function(c, seg, l) { this.playTo(c, c + seg, l); }, playTo: function(c, to, l) { this.play(c, l, to); }, stop: function() { var s = this; if (!s.playing) { return; } if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } if (s.bufferSource.stop) { s.bufferSource.stop(0); } else { s.bufferSource.noteOff(0); } s.currentSave = s.getCurrentTime(); s.currentTime = s.currentSave; s.playing = false; }, close: function() { var s = this; if (!s.playing) { return; } if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } if (s.bufferSource.stop) { s.bufferSource.stop(0); } else { s.bufferSource.noteOff(0); } s.playing = false; s.currentTime = 0; s.currentSave = 0; }, ll_check: function() { var s = this; if (!s.playing) { return; } if (s.currentTimeTo < s.data.currentTime - s.currentSave + LSound.Container.time * 0.001) { s._onended(); } }, die: function() { LSound.Container.remove(this); } }; for (var k in p) { LWebAudio.prototype[k] = p[k]; } return LWebAudio; })(); var LMedia = (function() { function LMedia() { var s = this; LExtends(s, LDisplayObject, []); s.length = 0; s.loopIndex = 0; s.loopLength = 1; s.playing = false; s.oncomplete = null; s.onsoundcomplete = null; s.currentStart = 0; LSound.Container.add(this); } var p = { onload: function() { var s = this; if (s.data.readyState) { s.length = s.data.duration - (LGlobal.android ? 0.1 : 0); var e = new LEvent(LEvent.COMPLETE); e.currentTarget = s; e.target = s.data; s.dispatchEvent(e); return; } s.data.addEventListener("canplaythrough", function() { s.onload(); }, false); }, _onended: function() { var s = this, i, l; s.dispatchEvent(LEvent.SOUND_COMPLETE); if (++s.loopIndex < s.loopLength) { i = s.loopIndex; l = s.loopLength; s.close(); s.play(s.currentStart, s.loopLength, s.currentTimeTo); s.loopIndex = i; } else { s.close(); } }, load: function(u) { var s = this; if (Object.prototype.toString.apply(u) == "[object HTMLAudioElement]") { s.data = u; s.onload(); return; } var a, b, c, k, d, q = { "mov": ["quicktime"], "3gp": ["3gpp"], "midi": ["midi"], "mid": ["midi"], "ogv": ["ogg"], "m4a": ["acc"], "mp3": ["mpeg"], "wav": ["wav", "x-wav", "wave"], "wave": ["wav", "x-wav", "wave"], "aac": ["mp4", "aac"] }; a = u.split(','); for (k = 0; k < a.length; k++) { b = a[k].split('.'); d = b[b.length - 1]; if (q[d]) { d = q[d]; } else { d = [d]; } c = d.some(function(element, index, array) { return s.data.canPlayType(s._type + "/" + element); }); if (c) { s.data.src = a[k]; s.onload(); s.data.load(); return; } else { console.warn("Not support " + b[b.length - 1] + ":" + a[k]); var e = new LEvent(LEvent.COMPLETE); e.currentTarget = e.target = s; s.dispatchEvent(e); } } if (s.oncomplete) { s.oncomplete({}); } }, getCurrentTime: function() { return this.data.currentTime; }, setVolume: function(v) { this.data.volume = v; }, getVolume: function() { return this.data.volume; }, play: function(c, l, to) { var s = this; if (s.length == 0) { return; } if (LGlobal.android) { LSound.Container.stopOther(this); } if (typeof c != UNDEFINED) { s.data.currentTime = c; s.currentStart = c; } if (typeof l != UNDEFINED) { s.loopLength = l; } if (typeof to !== UNDEFINED) { s.currentTimeTo = to > s.length ? s.length : to; } else { s.currentTimeTo = s.length; } if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } s.timeout = setTimeout(function() { s._onended(); }, (s.currentTimeTo - s.data.currentTime) * 1000); s.data.loop = false; s.loopIndex = 0; s.playing = true; s.data.play(); }, playSegment: function(c, seg, l) { this.playTo(c, c + seg, l); }, playTo: function(c, to, l) { this.play(c, l, to); }, stop: function() { var s = this; if (!s.playing) { return; } if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } s.playing = false; s.data.pause(); }, close: function() { var s = this; if (!s.playing) { return; } if (s.timeout) { clearTimeout(s.timeout); delete s.timeout; } s.playing = false; s.data.pause(); s.data.currentTime = 0; s.currentSave = 0; }, ll_check: function() { var s = this; if (!s.playing) { return; } if (s.data.duration != s._ll_duration) { s._ll_duration = s.data.duration; s.length = s.data.duration - (LGlobal.android ? 0.1 : 0); } if (s.currentTimeTo < s.data.currentTime + LSound.Container.time * 0.005) { s._onended(); } }, die: function() { LSound.Container.remove(this); } }; for (var k in p) { LMedia.prototype[k] = p[k]; } return LMedia; })(); var LSound = (function() { function LSound(u) { var s = this; s.type = "LSound"; s._type = "audio"; if (LSound.webAudioEnabled && LGlobal.webAudio) { LExtends(s, LWebAudio, []); } else { LExtends(s, LMedia, []); s.data = new Audio(); s.data.loop = false; s.data.autoplay = false; } if (u) { s.load(u); } } LSound.TYPE_SOUND = "sound"; LSound.webAudioEnabled = false; var protocol = location.protocol; if (protocol == "http:" || protocol == "https:") { if (typeof webkitAudioContext !== UNDEFINED) { try { LWebAudio._context = new webkitAudioContext(); } catch (e) {} } else if (typeof AudioContext !== UNDEFINED) { try { LWebAudio._context = new AudioContext(); } catch (e) {} } if (LWebAudio._context) { LWebAudio.container.push(LWebAudio._context); LSound.webAudioEnabled = true; } } LSound.Container = { ll_save: 0, time: 0, list: [], ll_show: function() { var c = LSound.Container; var t = (new Date()).getTime(); c.time = t - (c.ll_save ? c.ll_save : t); c.ll_save = t; var l = c.list; for (var i = l.length - 1; i >= 0; i--) { if (l[i]) { l[i].ll_check(); } } }, add: function(obj) { if (LSound.Container.list.indexOf(obj) >= 0) { return; } LSound.Container.list.push(obj); }, remove: function(obj) { var l = LSound.Container.list; for (var i = l.length - 1; i >= 0; i--) { if (l[i].objectIndex == obj.objectIndex) { l.splice(i, 1); break; } } }, stopOther: function(obj) { var l = LSound.Container.list; for (var i = l.length - 1; i >= 0; i--) { if (l[i].objectIndex != obj.objectIndex) { l[i].stop(); } } } }; LGlobal.childList.push(LSound.Container); return LSound; })(); var LVideo = (function() { function LVideo(u) { var s = this; LExtends(s, LMedia, []); s.type = "LVideo"; s._type = "video"; s.rotatex = 0; s.rotatey = 0; s.data = document.createElement("video"); s.data.style.display = "none"; document.body.appendChild(s.data); s.data.id = "video_" + s.objectIndex; s.data.loop = false; s.data.autoplay = false; if (u) { s.load(u); } } var p = { _ll_show: function(c) { var s = this; c.drawImage(s.data, s.x, s.y); }, die: function() { var s = this; document.body.removeChild(s.data); delete s.data; }, getWidth: function() { return this.data.width; }, getHeight: function() { return this.data.height; } }; for (var k in p) { LVideo.prototype[k] = p[k]; } return LVideo; })(); var LPoint = (function() { function LPoint(x, y) { var s = this; s.x = x; s.y = y; } LPoint.distance = function(p1, p2) { return LPoint.distance2(p1.x, p1.y, p2.x, p2.y); }; LPoint.distance2 = function(x1, y1, x2, y2) { var x = x1 - x2, y = y1 - y2; return Math.sqrt(x * x + y * y); }; LPoint.interpolate = function(p1, p2, f) { return new LPoint(p1.x + (p2.x - p1.x) * (1 - f), p1.y + (p2.y - p1.y) * (1 - f)); }; LPoint.polar = function(l, a) { return new LPoint(l * Math.cos(a), l * Math.sin(a)); }; LPoint.prototype = { toString: function() { return '[object LPoint(' + this.x + ',' + this.y + ')]'; }, length: function() { return LPoint.distance2(this.x, this.y, 0, 0); }, add: function(v) { return LPoint(this.x + v.x, this.y + v.y); }, clone: function() { return new LPoint(this.x, this.y); }, setTo: function(x, y) { this.x = x, this.y = y; }, copyFrom: function(s) { this.setTo(s.x, s.y); }, equals: function(t) { return this.x == t.x && this.y == t.y; }, normalize: function(t) { var s = this, scale = t / s.length(); s.x*=scale, s.y*=scale; }, offset: function(dx, dy) { this.x += dx; this.y += dy; }, subtract: function(v) { return new LPoint(this.x - v.x, this.y - v.y); } }; return LPoint; })(); var LRectangle = (function() { function LRectangle(x, y, w, h) { var s = this; s.x = x; s.y = y; s.width = w; s.height = h; s.setRectangle(); } LRectangle.prototype = { setRectangle: function() { var s = this; s.bottom = s.y + s.height; s.right = s.x + s.width; s.left = s.x; s.top = s.y; }, clone: function() { var s = this; return new LRectangle(s.x, s.y, s.width, s.height); }, contains: function(x, y) { var s = this; return x >= s.x && x <= s.right && y >= s.y && y <= s.bottom; }, containsRect: function(rect) { var s = this; return rect.x >= s.x && rect.right <= s.right && rect.y >= s.y && rect.bottom <= s.bottom; }, equals: function(v) { var s = this; return v.x == s.x && v.width == s.width && v.y == s.y && v.height == s.height; }, inflate: function(dx, dy) { var s = this; s.width += dx; s.height += dy; s.setRectangle(); }, intersection: function(t) { var s = this; var ix = s.x > t.x ? s.x: t.x; var iy = s.y > t.y ? s.y: t.y; var ax = s.right > t.right ? t.right: s.right; var ay = s.bottom > t.bottom ? t.bottom: s.bottom; if (ix <= ax && iy <= ay) { return new LRectangle(ix, iy, ax, ay); } else { return new LRectangle(0, 0, 0, 0); } }, intersects: function(t) { var s = this; var ix = s.x > t.x ? s.x: t.x; var iy = s.y > t.y ? s.y: t.y; var ax = s.right > t.right ? t.right: s.right; var ay = s.bottom > t.bottom ? t.bottom: s.bottom; return ix <= ax && iy <= ay; }, isEmpty: function() { var s = this; return s.x == 0 && s.y == 0 && s.width == 0 && s.height == 0; }, offset: function(dx, dy) { var s = this; s.x += dx; s.y += dy; s.setRectangle(); }, setEmpty: function() { var s = this; s.x = 0; s.y = 0; s.width = 0; s.height = 0; s.setRectangle(); }, setTo: function(xa, ya, w, h) { var s = this; s.x = xa; s.y = ya; s.width = w; s.height = h; s.setRectangle(); }, toString: function() { var s = this; return "[object LRectangle(" + s.x + "," + s.y + "," + s.width + "," + s.height + ")]"; }, union: function(t) { var s = this; return new LRectangle(s.x > t.x ? t.x : s.x, s.y > t.y ? t.y : s.y, s.right > t.right ? s.right : t.right, s.bottom > t.bottom ? s.bottom : t.bottom); } }; return LRectangle; })(); var LGraphics = (function() { function LGraphics() { var s = this; LExtends(s, LObject, []); s.type = "LGraphics"; s.color = "#000000"; s.alpha = 1; s.bitmap = null; s.setList = new Array(); s.showList = new Array(); } var p = { ll_show: function() { var s = this, k, l = s.setList.length; if (l == 0) { return; } for (k = 0; k < l; k++) { s.setList[k](); if (LGlobal.fpsStatus) { LGlobal.fpsStatus.graphics++; } } }, clone: function() { var s = this, a = new LGraphics(), i, l, c; a.color = s.color; a.alpha = s.alpha; a.bitmap = s.bitmap; for (i = 0, l = s.setList.length; i < l; i++) { c = s.setList[i]; a.setList.push(c); } for (i = 0, l = s.showList.length; i < l; i++) { c = s.showList[i]; a.showList.push(c); } return a; }, lineCap: function(t) { var s = this; s.setList.push(function() { LGlobal.canvas.lineCap = t; }); }, lineJoin: function(t) { var s = this; s.setList.push(function() { LGlobal.canvas.lineJoin = t; }); }, lineWidth: function(t) { var s = this; s.setList.push(function() { LGlobal.canvas.lineWidth = t; }); }, strokeStyle: function(co) { var s = this; s.setList.push(function() { LGlobal.canvas.strokeStyle = co; }); }, stroke: function() { var s = this; s.setList.push(function() { LGlobal.canvas.stroke(); }); }, beginPath: function() { var s = this; s.setList.push(function() { LGlobal.canvas.beginPath(); }); }, closePath: function() { var s = this; s.setList.push(function() { LGlobal.canvas.closePath(); }); }, moveTo: function(x, y) { var s = this; s.setList.push(function() { LGlobal.canvas.moveTo(x, y); }); s.showList.push({ type: LShape.POINT, arg: [x, y] }); }, lineTo: function(x, y) { var s = this; s.setList.push(function() { LGlobal.canvas.lineTo(x, y); }); s.showList.push({ type: LShape.POINT, arg: [x, y] }); }, rect: function(x, y, w, h) { var s = this; s.setList.push(function() { LGlobal.canvas.rect(x, y, w, h); }); s.showList.push({ type: LShape.RECT, arg: [x, y, w, h] }); }, fillStyle: function(co) { var s = this; s.setList.push(function() { LGlobal.canvas.fillStyle = co; }); }, fill: function() { var s = this; s.setList.push(function() { LGlobal.canvas.fill(); }); }, arc: function(x, y, r, sa, ea, aw) { var s = this; s.setList.push(function() { LGlobal.canvas.arc(x, y, r, sa, ea, aw); }); s.showList.push({ type: LShape.ARC, arg: sa }); }, lineStyle: function(tn, co) { var s = this, c; if (co == null) { co = s.color; } s.color = co; s.setList.push(function() { c = LGlobal.canvas; c.lineWidth = tn; c.strokeStyle = co; }); }, clear: function() { var s = this; s.bitmap = null; s.setList.length = 0; s.showList.length = 0; }, beginBitmapFill: function(b) { var s = this; s.setList.push(function() { s.bitmap = b; }); }, drawEllipse: function(tn, lco, pa, isf, co) { var s = this; s.setList.push(function() { var c, x, y, w, h, k, ox, oy, xe, ye, xm, ym; c = LGlobal.canvas; c.beginPath(); k = 0.5522848; x = pa[0]; y = pa[1]; w = pa[2]; h = pa[3]; ox = (w / 2) * k; oy = (h / 2) * k; xe = x + w; ye = y + h; xm = x + w / 2; ym = y + h / 2; c.moveTo(x, ym); c.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); c.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); c.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); c.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); if (s.bitmap) { c.save(); c.clip(); c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height); c.restore(); s.bitmap = null; return; } if (isf) { c.fillStyle = co; c.fill(); } if (tn > 0) { c.lineWidth = tn; c.strokeStyle = lco; c.stroke(); } }); s.showList.push({ type: LShape.RECT, arg: pa }); }, drawArc: function(tn, lco, pa, isf, co) { var s = this; s.setList.push(function() { var c = LGlobal.canvas; c.beginPath(); if (pa.length > 6 && pa[6]) { c.moveTo(pa[0], pa[1]); } c.arc(pa[0], pa[1], pa[2], pa[3], pa[4], pa[5]); if (pa.length > 6 && pa[6]) { c.lineTo(pa[0], pa[1]); } if (s.bitmap) { c.save(); c.clip(); c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height); c.restore(); s.bitmap = null; return; } if (isf) { c.fillStyle = co; c.fill(); } if (tn > 0) { c.lineWidth = tn; c.strokeStyle = lco; c.stroke(); } }); s.showList.push({ type: LShape.ARC, arg: pa }); }, drawRect: function(tn, lco, pa, isf, co) { var s = this; s.setList.push(function() { var c = LGlobal.canvas; c.beginPath(); c.rect(pa[0], pa[1], pa[2], pa[3]); c.closePath(); if (s.bitmap) { c.save(); c.clip(); c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height); c.restore(); s.bitmap = null; return; } if (isf) { c.fillStyle = co; c.fill(); } if (tn > 0) { c.lineWidth = tn; c.strokeStyle = lco; c.stroke(); } }); s.showList.push({ type: LShape.RECT, arg: pa }); }, drawRoundRect: function(tn, lco, pa, isf, co) { var s = this; s.setList.push(function() { var c = LGlobal.canvas; c.beginPath(); c.moveTo(pa[0] + pa[4], pa[1]); c.lineTo(pa[0] + pa[2] - pa[4], pa[1]); c.arcTo(pa[0] + pa[2], pa[1], pa[0] + pa[2], pa[1] + pa[4], pa[4]); c.lineTo(pa[0] + pa[2], pa[1] + pa[3] - pa[4]); c.arcTo(pa[0] + pa[2], pa[1] + pa[3], pa[0] + pa[2] - pa[4], pa[1] + pa[3], pa[4]); c.lineTo(pa[0] + pa[4], pa[1] + pa[3]); c.arcTo(pa[0], pa[1] + pa[3], pa[0], pa[1] + pa[3] - pa[4], pa[4]); c.lineTo(pa[0], pa[1] + pa[4]); c.arcTo(pa[0], pa[1], pa[0] + pa[4], pa[1], pa[4]); c.closePath(); if (s.bitmap) { c.save(); c.clip(); c.drawImage(s.bitmap.image, 0, 0, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height); c.restore(); s.bitmap = null; return; } if (isf) { c.fillStyle = co; c.fill(); } if (tn > 0) { c.lineWidth = tn; c.strokeStyle = lco; c.stroke(); } }); s.showList.push({ type: LShape.RECT, arg: pa }); }, drawVertices: function(tn, lco, v, isf, co) { var s = this; if (v.length < 3) { return; } s.setList.push(function() { var c = LGlobal.canvas; c.beginPath(); c.moveTo(v[0][0], v[0][1]); var i, l = v.length, pa; for (i = 1; i < l; i++) { pa = v[i]; c.lineTo(pa[0], pa[1]); } c.lineTo(v[0][0], v[0][1]); c.closePath(); if (s.bitmap) { c.save(); c.clip(); c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height); c.restore(); s.bitmap = null; return; } if (isf) { c.fillStyle = co; c.fill(); } if (tn > 0) { c.lineWidth = tn; c.strokeStyle = lco; c.closePath(); c.stroke(); } }); s.showList.push({ type: LShape.VERTICES, arg: v }); }, drawTriangles: function(ve, ind, u, tn, lco) { var s = this; var i, j, l = ind.length, c; s.setList.push(function() { c = LGlobal.canvas; var v = ve, a, k, sw; for (i = 0, j = 0; i < l; i += 3) { a = 0; c.save(); c.beginPath(); c.moveTo(v[ind[i] * 2], v[ind[i] * 2 + 1]); c.lineTo(v[ind[i + 1] * 2], v[ind[i + 1] * 2 + 1]); c.lineTo(v[ind[i + 2] * 2], v[ind[i + 2] * 2 + 1]); c.lineTo(v[ind[i] * 2], v[ind[i] * 2 + 1]); c.closePath(); if (tn) { c.lineWidth = tn; c.strokeStyle = lco; c.stroke(); } c.clip(); if (i % 6 == 0) { sw =- 1; var w = (u[ind[i + 1 + j] * 2] - u[ind[i + j] * 2]) * s.bitmap.width; var h = (u[ind[i + 2] * 2 + 1] - u[ind[i] * 2 + 1]) * s.bitmap.height; if (j == 0 && w < 0) { for (k = i + 9; k < l; k += 3) { if (u[ind[i + 2] * 2 + 1] == u[ind[k + 2] * 2 + 1]) { j = k - i; break; } } if (j == 0) { j = l - i; } w = (u[ind[i + 1 + j] * 2] - u[ind[i + j] * 2]) * s.bitmap.width; } if (i + j >= l) { w = (u[ind[i + j - l] * 2] - u[ind[i + 1] * 2]) * s.bitmap.width; sw = u[ind[i] * 2] == 1 ? 0 : s.bitmap.width * u[ind[i] * 2] + w; if (sw > s.bitmap.width) { sw -= s.bitmap.width; } } else { sw = s.bitmap.width * u[ind[i + j] * 2]; } sh = s.bitmap.height * u[ind[i] * 2 + 1]; if (h < 0) { h = (u[ind[i + 2 - (i > 0 ? 6 : - 6)] * 2 + 1] - u[ind[i - (i > 0 ? 6 : - 6)] * 2 + 1]) * s.bitmap.height; sh = 0; } var t1 = (v[ind[i + 1] * 2] - v[ind[i] * 2]) / w; var t2 = (v[ind[i + 1] * 2 + 1] - v[ind[i] * 2 + 1]) / w; var t3 = (v[ind[i + 2] * 2] - v[ind[i] * 2]) / h; var t4 = (v[ind[i + 2] * 2 + 1] - v[ind[i] * 2 + 1]) / h; c.transform(t1, t2, t3, t4, v[ind[i] * 2], v[ind[i] * 2 + 1]); c.drawImage(s.bitmap.image, s.bitmap.x + sw, s.bitmap.y + sh, w, h, 0, 0, w, h); } else { var w = (u[ind[i + 2 + j] * 2] - u[ind[i + 1 + j] * 2]) * s.bitmap.width; var h = (u[ind[i + 2] * 2 + 1] - u[ind[i] * 2 + 1]) * s.bitmap.height; if (j == 0 && w < 0) { for (k = i + 9; k < l; k += 3) { if (u[ind[i + 2] * 2 + 1] == u[ind[k + 2] * 2 + 1]) { j = k - i; break; } } if (j == 0) { j = l - i; } w = (u[ind[i + 2 + j] * 2] - u[ind[i + 1 + j] * 2]) * s.bitmap.width; } if (i + 1 + j >= l) { w = (u[ind[i + 1 + j - l] * 2] - u[ind[i + 2] * 2]) * s.bitmap.width; sw = u[ind[i + 1] * 2] == 1 ? 0 : s.bitmap.width * u[ind[i + 1] * 2] + w; if (sw > s.bitmap.width) { sw -= s.bitmap.width; } } else { sw = s.bitmap.width * u[ind[i + 1 + j] * 2]; } sh = s.bitmap.height * u[ind[i] * 2 + 1]; if (h < 0) { h = (u[ind[i + 2 - (i > 0 ? 6 : - 6)] * 2 + 1] - u[ind[i - (i > 0 ? 6 : - 6)] * 2 + 1]) * s.bitmap.height; sh = 0; } var t1 = (v[ind[i + 2] * 2] - v[ind[i + 1] * 2]) / w; var t2 = (v[ind[i + 2] * 2 + 1] - v[ind[i + 1] * 2 + 1]) / w; var t3 = (v[ind[i + 2] * 2] - v[ind[i] * 2]) / h; var t4 = (v[ind[i + 2] * 2 + 1] - v[ind[i] * 2 + 1]) / h; c.transform(t1, t2, t3, t4, v[ind[i + 1] * 2], v[ind[i + 1] * 2 + 1]); c.drawImage(s.bitmap.image, s.bitmap.x + sw, s.bitmap.y + sh, w, h, 0, - h, w, h); } c.restore(); } }); }, drawLine: function(tn, lco, pa) { var s = this; s.setList.push(function() { var c = LGlobal.canvas; c.beginPath(); c.moveTo(pa[0], pa[1]); c.lineTo(pa[2], pa[3]); c.lineWidth = tn; c.strokeStyle = lco; c.closePath(); c.stroke(); }); s.showList.push({ type: LShape.LINE, arg: pa }); }, add: function(f) { this.setList.push(f); }, ismouseon: function(e, co) { var s = this; if (e == null || e == UNDEFINED || s.showList.length == 0 ||!s.parent) { return false; } return s.parent.ismouseonShapes(s.showList, e.offsetX, e.offsetY); }, getWidth: function() { var s = this, k, k1, min, max, v, l, l1; for (k = 0, l = s.showList.length; k < l; k++) { if (s.showList[k].type == LShape.RECT) { if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) { min = s.showList[k].arg[0]; } if (max < s.showList[k].arg[0] + s.showList[k].arg[2] || typeof max == UNDEFINED) { max = s.showList[k].arg[0] + s.showList[k].arg[2]; } } else if (s.showList[k].type == LShape.ARC) { if (min > s.showList[k].arg[0] - s.showList[k].arg[2] || typeof min == UNDEFINED) { min = s.showList[k].arg[0] - s.showList[k].arg[2]; } if (max < s.showList[k].arg[0] + s.showList[k].arg[2] || typeof max == UNDEFINED) { max = s.showList[k].arg[0] + s.showList[k].arg[2]; } } else if (s.showList[k].type == LShape.VERTICES) { for (k1 = 0, l1 = s.showList[k].arg.length; k1 < l1; k1++) { v = s.showList[k].arg[k1]; if (min > v[0] || typeof min == UNDEFINED) { min = v[0]; } if (max < v[0] || typeof max == UNDEFINED) { max = v[0]; } } } else if (s.showList[k].type == LShape.LINE) { if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) { min = s.showList[k].arg[0]; } if (min > s.showList[k].arg[2] || typeof min == UNDEFINED) { min = s.showList[k].arg[2]; } if (max < s.showList[k].arg[0] || typeof max == UNDEFINED) { max = s.showList[k].arg[0]; } if (max < s.showList[k].arg[2] || typeof max == UNDEFINED) { max = s.showList[k].arg[2]; } } else if (s.showList[k].type == LShape.POINT) { if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) { min = s.showList[k].arg[0]; } if (max < s.showList[k].arg[0] || typeof max == UNDEFINED) { max = s.showList[k].arg[0]; } } } if (typeof min == UNDEFINED) { min = max = 0; } s.left = min; if (l > 0 && max == min) { max = min + 1; } return max - min; }, getHeight: function() { var s = this, k = null, k1 = null, l, l1, min, max, v; for (k = 0, l = s.showList.length; k < l; k++) { if (s.showList[k].type == LShape.RECT) { if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) { min = s.showList[k].arg[1]; } if (max < s.showList[k].arg[1] + s.showList[k].arg[3] || typeof max == UNDEFINED) { max = s.showList[k].arg[1] + s.showList[k].arg[3]; } } else if (s.showList[k].type == LShape.ARC) { if (min > s.showList[k].arg[1] - s.showList[k].arg[2] || typeof min == UNDEFINED) { min = s.showList[k].arg[1] - s.showList[k].arg[2]; } if (max < s.showList[k].arg[1] + s.showList[k].arg[2] || typeof max == UNDEFINED) { max = s.showList[k].arg[1] + s.showList[k].arg[2]; } } else if (s.showList[k].type == LShape.VERTICES) { for (k1 = 0, l1 = s.showList[k].arg.length; k1 < l1; k1++) { v = s.showList[k].arg[k1]; if (min > v[1] || typeof min == UNDEFINED) { min = v[1]; } if (max < v[1] || typeof max == UNDEFINED) { max = v[1]; } } } else if (s.showList[k].type == LShape.LINE) { if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) { min = s.showList[k].arg[1]; } if (min > s.showList[k].arg[3] || typeof min == UNDEFINED) { min = s.showList[k].arg[3]; } if (max < s.showList[k].arg[1] || typeof max == UNDEFINED) { max = s.showList[k].arg[1]; } if (max < s.showList[k].arg[3] || typeof max == UNDEFINED) { max = s.showList[k].arg[3]; } } else if (s.showList[k].type == LShape.POINT) { if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) { min = s.showList[k].arg[1]; } if (max < s.showList[k].arg[1] || typeof max == UNDEFINED) { max = s.showList[k].arg[1]; } } } if (typeof min == UNDEFINED) { min = max = 0; } s.top = min; if (l > 0 && max == min) { max = min + 1; } return max - min; }, startX: function() { var s = this; s.getWidth(); return s.left; }, startY: function() { var s = this; s.getHeight(); return s.top; } }; for (var k in p) { LGraphics.prototype[k] = p[k]; } return LGraphics; })(); var LShape = (function() { function LShape() { var s = this; LExtends(s, LInteractiveObject, []); s.type = "LShape"; s.graphics = new LGraphics(); s.graphics.parent = s; } LShape.POINT = "point"; LShape.LINE = "line"; LShape.ARC = "arc"; LShape.RECT = "rect"; LShape.VERTICES = "vertices"; var p = { _ll_show: function(c) { var s = this; s.graphics.ll_show(); }, getWidth: function(maskSize) { var s = this, mx, mw, left = s.graphics.startX(), right = left + s.graphics.getWidth(); if (maskSize && s.mask) { mx = s.mask._startX ? s.mask._startX() : s.mask.startX(); mw = s.mask.getWidth(); if (left < mx) { left = mx; } if (right > mx + mw) { right = mx + mw; } } s.ll_left = s.x + left; s.ll_right = s.x + right; return (right - left) * s.scaleX; }, getHeight: function(maskSize) { var s = this, my, mh, top = s.graphics.startY(), bottom = top + s.graphics.getHeight(); if (maskSize && s.mask) { my = s.mask._startY ? s.mask._startY() : s.mask.startY(); mh = s.mask.getHeight(); if (top < my) { top = my; } if (bottom > my + mh) { bottom = my + mh; } } s.ll_top = s.y + top; s.ll_bottom = s.y + bottom; return (bottom - top) * s.scaleY; }, _startX: function() { var s = this; s.getWidth(); return s.ll_left; }, startX: function() { var s = this; return s._startX() * s.scaleX; }, _startY: function() { var s = this; s.getHeight(); return s.ll_top; }, startY: function() { var s = this; return s._startY() * s.scaleY; }, clone: function() { var s = this, a = new LShape(), c, o; a.copyProperty(s); a.graphics = s.graphics.clone(); a.graphics.parent = a; return a; }, ismouseon: function(e, cd) { var s = this, i = false, sc; if (!s.visible || e == null) { return false; } if (s.mask) { if (!s.mask.parent) { s.mask.parent = s.parent; } if (!s.mask.ismouseon(e, cd)) { return false; } } sc = { x: s.x * cd.scaleX + cd.x, y: s.y * cd.scaleY + cd.y, scaleX: cd.scaleX * s.scaleX, scaleY: cd.scaleY * s.scaleY }; if (s.graphics) { i = s.graphics.ismouseon(e, sc); } return i; }, die: function() { var s = this; s.graphics.clear(); } }; for (var k in p) { LShape.prototype[k] = p[k]; } return LShape; })(); var LSprite = (function() { function LSprite() { var s = this; LExtends(s, LDisplayObjectContainer, []); s.type = "LSprite"; s.rotatex; s.rotatey; s.graphics = new LGraphics(); s.graphics.parent = s; s.box2dBody = null; s.shapes = new Array(); s.dragRange = null; } var p = { setRotate: function(angle) { var s = this; if (s.box2dBody) { s.box2dBody.SetAngle(angle); } else { s.rotate = angle; } }, _rotateReady: function() { var s = this; if (s.box2dBody) { if ((typeof s.rotatex) == UNDEFINED) { s.getRotateXY(); } s.x = s.box2dBody.GetPosition().x * LGlobal.box2d.drawScale - s.parent.x - s.rotatex; s.y = s.box2dBody.GetPosition().y * LGlobal.box2d.drawScale - s.parent.y - s.rotatey; s.rotate = s.box2dBody.GetAngle(); } }, _ll_show: function(c) { var s = this; s.graphics.ll_show(); LGlobal.show(s.childList); s._ll_debugShape(); }, startDrag: function(touchPointID) { var s = this, r, c; if (s.ll_dragStart) { return; } s.ll_touchPointID = touchPointID; s.ll_dragStartX = s.x; s.ll_dragStartY = s.y; s.ll_dragMX = mouseX; s.ll_dragMY = mouseY; s.ll_dragStart = true; LGlobal.dragList.push(s); }, stopDrag: function() { var s = this, i, l; for (i = 0, l = LGlobal.dragList.length; i < l; i++) { if (s.objectIndex == LGlobal.dragList[i].objectIndex) { s.ll_dragStart = false; LGlobal.dragList.splice(i, 1); break; } } }, getRotateXY: function(w, h) { var s = this; if (!w ||!h) { w = s.getWidth(); h = s.getHeight(); } s.rotatex = w / 2; s.rotatey = h / 2; }, getWidth: function(maskSize) { var s = this, i, l, o, a, b, mx, mw, left = s.graphics.startX(), right = left + s.graphics.getWidth(); for (i = 0, l = s.childList.length; i < l; i++) { o = s.childList[i]; if (typeof o.visible == UNDEFINED ||!o.visible) { continue; } a = o.x; if (typeof o._startX == "function") { a = o._startX(); } b = a + o.getWidth(maskSize); if (a < left) { left = a; } if (b > right) { right = b; } } if (maskSize && s.mask) { mx = s.mask._startX ? s.mask._startX() : s.mask.startX(); mw = s.mask.getWidth(); if (left < mx) { left = mx; } if (right > mx + mw) { right = mx + mw; } } s.ll_left = s.x + left; s.ll_right = s.x + right; return (right - left) * s.scaleX; }, getHeight: function(maskSize) { var s = this, i, l, o, a, b, my, mh, top = s.graphics.startY(), bottom = top + s.graphics.getHeight(); for (i = 0, l = s.childList.length; i < l; i++) { o = s.childList[i]; if (typeof o.visible == UNDEFINED ||!o.visible) { continue; } a = o.y; if (typeof o._startY == "function") { a = o._startY(); } b = a + o.getHeight(maskSize); if (a < top) { top = a; } if (b > bottom) { bottom = b; } } if (maskSize && s.mask) { my = s.mask._startY ? s.mask._startY() : s.mask.startY(); mh = s.mask.getHeight(); if (top < my) { top = my; } if (bottom > my + mh) { bottom = my + mh; } } s.ll_top = s.y + top; s.ll_bottom = s.y + bottom; return (bottom - top) * s.scaleY; }, _startX: function() { var s = this; s.getWidth(); return s.ll_left; }, startX: function() { var s = this; return s._startX() * s.scaleX; }, _startY: function() { var s = this; s.getHeight(); return s.ll_top; }, startY: function() { var s = this; return s._startY() * s.scaleY; }, _ll_loopframe: function() { this.dispatchEvent(LEvent.ENTER_FRAME); }, clone: function() { var s = this, a = new LSprite(), c, o, i, l; a.copyProperty(s); a.graphics = s.graphics.clone(); a.graphics.parent = a; a.childList.length = 0; for (i = 0, l = s.childList.length; i < l; i++) { c = s.childList[i]; if (c.clone) { o = c.clone(); o.parent = a; a.childList.push(o); } } return a; }, _mevent: function(type) { var s = this, k; for (k = 0; k < s.mouseList.length; k++) { var o = s.mouseList[k]; if (o.type == type) { return true; } } return false; }, ll_dispatchMouseEvent: function(type, e, cd, ox, oy) { var s = this; if (!s.mouseEnabled) { return; } for (k = 0; k < s.mouseList.length; k++) { var o = s.mouseList[k]; if (o.type == type) { e.selfX = (ox - (s.x * cd.scaleX + cd.x)) / (cd.scaleX * s.scaleX); e.selfY = (oy - (s.y * cd.scaleY + cd.y)) / (cd.scaleY * s.scaleY); e.currentTarget = e.clickTarget = s; if (!e.target) { e.target = s; } o.listener(e, s); } } }, ll_mouseout: function(e, type, cd, ox, oy) { var s = this; if (type == LMouseEvent.MOUSE_MOVE && s.ll_mousein) { s.ll_mousein = false; if (s._mevent(LMouseEvent.MOUSE_OUT)) { s.ll_dispatchMouseEvent(LMouseEvent.MOUSE_OUT, e, cd, ox, oy); } if (s.mouseChildren) { for (var k = s.childList.length - 1; k >= 0; k--) { if (s.childList[k].mouseEvent && s.childList[k].ll_mouseout) { s.childList[k].ll_mouseout(e, type, cd, ox, oy); } } } } }, mouseEvent: function(e, type, cd) { if (!e) { return false; } var s = this, i, k, ox = e.offsetX, oy = e.offsetY, on, mc; if (!s.visible) { return false; } if (cd == null) { cd = { x: 0, y: 0, scaleX: 1, scaleY: 1 }; } on = s.ismouseon(e, cd); if (on) { if (type == LMouseEvent.MOUSE_MOVE&&!s.ll_mousein) { s.ll_mousein = true; if (s._mevent(LMouseEvent.MOUSE_OVER)) { s.ll_dispatchMouseEvent(LMouseEvent.MOUSE_OVER, e, cd, ox, oy); } } if (s.mouseChildren) { mc = { x: s.x * cd.scaleX + cd.x, y: s.y * cd.scaleY + cd.y, scaleX: cd.scaleX * s.scaleX, scaleY: cd.scaleY * s.scaleY }; for (k = s.childList.length - 1; k >= 0; k--) { if (s.childList[k].mouseEvent) { i = s.childList[k].mouseEvent(e, type, mc); if (i) { e.target = s.childList[k]; if (type != LMouseEvent.MOUSE_MOVE) { break; } } } } if (s._mevent(type)) { s.ll_dispatchMouseEvent(type, e, cd, ox, oy); } } return true; } else { s.ll_mouseout(e, type, cd, ox, oy); } return false; }, hitTestPoint: function(x, y) { var s = this, shapes = s.shapes; if (!shapes || shapes.length == 0) { s.getWidth(); s.getHeight(); shapes = [{ "type": LShape.RECT, "arg": [s.ll_left - s.x, s.ll_top - s.y, s.ll_right - s.ll_left, s.ll_bottom - s.ll_top] } ]; } return s.ismouseonShapes(shapes, x, y); }, hitTestObject: function(obj) { var s = this, shapes = s.shapes, shapes1 = obj.shapes, m, m1, j, child, j1, child1, vo1, v1; if (!shapes || shapes.length == 0) { s.getWidth(); s.getHeight(); shapes = [{ "type": LShape.RECT, "arg": [s.ll_left - s.x, s.ll_top - s.y, s.ll_right - s.ll_left, s.ll_bottom - s.ll_top] } ]; } if (!shapes1 || shapes1.length == 0) { obj.getWidth(); obj.getHeight(); shapes1 = [{ "type": LShape.RECT, "arg": [obj.ll_left - obj.x, obj.ll_top - obj.y, obj.ll_right - obj.ll_left, obj.ll_bottom - obj.ll_top] } ]; } m = s.getRootMatrix(); m1 = obj.getRootMatrix(); for (j = shapes.length - 1; j >= 0; j--) { child = shapes[j]; v1 = s._changeShape(child.type, child.arg, m); for (j1 = shapes1.length - 1; j1 >= 0; j1--) { child1 = shapes1[j1]; vo1 = obj._changeShape(child1.type, child1.arg, m1); if (child.type == LShape.VERTICES || child.type == LShape.RECT) { if (child1.type == LShape.VERTICES || child1.type == LShape.RECT) { if (LGlobal.hitTestPolygon(v1, vo1)) { return true; } } else if (child1.type == LShape.ARC) { if (LGlobal.hitTestPolygonArc(v1, vo1)) { return true; } } } else { if (child1.type == LShape.VERTICES || child1.type == LShape.RECT) { if (LGlobal.hitTestPolygonArc(vo1, v1)) { return true; } } else if (child1.type == LShape.ARC) { if (Math.sqrt((v1[0] - vo1[0]) * (v1[0] - vo1[0]) + (v1[1] - vo1[1]) * (v1[1] - vo1[1])) < v1[2] + vo1[2]) { return true; } } } } } return false; }, addShape: function(type, arg) { var s = this; if (type == LShape.VERTICES && arg.length < 3) { return; } s.shapes.push({ "type": type, "arg": arg }); return s.shapes; }, addShapes: function(shapes) { var s = this; if (s.shapes.length == 0) { s.shapes = shapes; } else { s.shapes = s.shapes.concat(shapes); } }, clearShape: function() { this.shapes = []; }, _ll_debugShape: function() { var s = this, i, l, child, c, arg, j, ll; if (!LGlobal.traceDebug || s.shapes.length == 0) { return; } for (i = 0, l = s.shapes.length; i < l; i++) { child = s.shapes[i]; c = LGlobal.canvas; arg = child.arg; c.beginPath(); if (child.type == LShape.RECT) { c.rect(arg[0], arg[1], arg[2], arg[3]); } else if (child.type == LShape.ARC) { c.arc(arg[0], arg[1], arg[2], 0, 2 * Math.PI); } else if (child.type == LShape.VERTICES) { c.moveTo(arg[0][0], arg[0][1]); for (j = 1, ll = arg.length; j < ll; j++) { c.lineTo(arg[j][0], arg[j][1]); }; c.lineTo(arg[0][0], arg[0][1]); } c.closePath(); c.strokeStyle = "#00FF00"; c.stroke(); } }, ismouseon: function(e, cd) { var s = this; if (!s.visible || e == null) { return false; } if (s.mask) { if (!s.mask.parent) { s.mask.parent = s.parent; } if (!s.mask.ismouseon(e, cd)) { return false; } } if (s.shapes && s.shapes.length > 0) { return s.ismouseonShapes(s.shapes, e.offsetX, e.offsetY); } var k, i = false, l = s.childList, sc = { x: s.x * cd.scaleX + cd.x, y: s.y * cd.scaleY + cd.y, scaleX: cd.scaleX * s.scaleX, scaleY: cd.scaleY * s.scaleY }; for (k = l.length - 1; k >= 0; k--) { if (l[k].ismouseon) { i = l[k].ismouseon(e, sc); } if (i) { e.target = s.childList[k]; break; } } if (!i) { i = s.graphics.ismouseon(e, sc); } return i; }, die: function() { var s = this, i, c, l; s.graphics.clear(); s.removeAllEventListener(); s.stopDrag(); if (s.box2dBody) { s.clearBody(); } for (i = 0, c = s.childList, l = c.length; i < l; i++) { if (c[i].die) { c[i].die(); } } } }; for (var k in p) { LSprite.prototype[k] = p[k]; } return LSprite; })(); var LButton = (function() { function LButton(upState, overState, downState, disableState) { var s = this; LExtends(s, LSprite, []); s.type = "LButton"; s.addChild(upState); if (!overState) { overState = upState; } else { s.addChild(overState); } if (!downState) { downState = overState; } else { s.addChild(downState); } if (!disableState) { disableState = upState; } else { s.addChild(disableState); } s.upState = s.bitmap_up = upState; s.overState = s.bitmap_over = overState; s.downState = downState; s.disableState = disableState; s._ll_down_sx = s.downState.scaleX; s._ll_down_sy = s.downState.scaleY; s.overState.visible = false; s.downState.visible = false; s.upState.visible = true; s.buttonMode = true; s.staticMode = false; s._ll_cursorEnabled = true; s.setState(LButton.STATE_ENABLE); if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) { LMouseEventContainer.pushButton(s); } s.addEventListener(LMouseEvent.MOUSE_DOWN, s.ll_modeDown); } LButton.STATE_DISABLE = "disable"; LButton.STATE_ENABLE = "enable"; var p = { setState: function(state) { var s = this; if (state == LButton.STATE_DISABLE) { s.upState.visible = false; s.overState.visible = false; s.downState.visible = false; s.disableState.visible = true; s.mouseEnabled = false; } else if (state == LButton.STATE_ENABLE) { s.overState.visible = false; s.downState.visible = false; s.disableState.visible = false; s.upState.visible = true; s.mouseEnabled = true; } else { return; } s.state = state; }, ll_mouseout: function(e, type, cd, ox, oy) { var s = this; if (!s.ll_mousein) { return; } e.clickTarget = s; s.ll_modeOut(e); s.ll_mousein = false; }, mouseEvent: function(e, type, cd) { if (!e) { return false; } var s = this; if (type == LMouseEvent.MOUSE_MOVE && s.ll_button_mode) { s.ll_button_mode(e); } return this.callParent("mouseEvent", arguments); }, ll_button_mode: function(e) { var s = this; if (!s.visible) { return; } e.clickTarget = s; if (s.hitTestPoint(e.offsetX, e.offsetY)) { s.ll_modeOver(e); } else { s.ll_modeOut(e); } }, ll_modeDown: function(e) { var s = e.clickTarget, w, h, tw, th, x, y, tx, ty, onComplete; if (!s.buttonMode || s.tween) { return; } if (s.state == LButton.STATE_DISABLE) { s.upState.visible = false; s.overState.visible = false; s.downState.visible = false; s.disableState.visible = true; return; } s.upState.visible = false; s.overState.visible = false; s.downState.visible = true; s._tweenOver = s.ll_modeOver; onComplete = function(obj) { var s = obj.parent; delete s.tween; s._tweenOver({ clickTarget: s }); delete s._tweenOver; }; if (s.staticMode) { s.tween = LTweenLiteTimeline.to(s.downState, 0.3, {}).to(s.downState, 0.1, { onComplete: onComplete }); } else { w = s.downState.getWidth(); h = s.downState.getHeight(); tw = w * 1.1; th = h * 1.1; x = s.downState.x; y = s.downState.y; tx = x + (w - tw) * 0.5; ty = y + (h - th) * 0.5; s.tween = LTweenLiteTimeline.to(s.downState, 0.3, { x: tx, y: ty, scaleX: s._ll_down_sx * 1.1, scaleY: s._ll_down_sy * 1.1, ease: Quart.easeOut }).to(s.downState, 0.1, { x: x, y: y, scaleX: s._ll_down_sx, scaleY: s._ll_down_sy, ease: Quart.easeOut, onComplete: onComplete }); } }, ll_modeOver: function(e) { var s = e.clickTarget; if (!s.buttonMode) { return; } if (s.tween) { s._tweenOver = s.ll_modeOver; return; } if (s.state == LButton.STATE_DISABLE) { s.upState.visible = false; s.overState.visible = false; s.downState.visible = false; s.disableState.visible = true; return; } s.upState.visible = false; s.downState.visible = false; s.overState.visible = true; if (LGlobal.os == OS_PC && s._ll_cursorEnabled && s.parent) { LGlobal.cursor = "pointer"; } }, ll_modeOut: function(e) { var s = e.clickTarget; if (!s.buttonMode) { return; } if (s.tween) { s._tweenOver = s.ll_modeOut; return; } if (s.state == LButton.STATE_DISABLE) { s.upState.visible = false; s.overState.visible = false; s.downState.visible = false; s.disableState.visible = true; return; } s.overState.visible = false; s.downState.visible = false; s.upState.visible = true; }, setCursorEnabled: function(value) { this._ll_cursorEnabled = value; }, clone: function() { var s = this; return new LButton(s.upState.clone(), s.overState.clone(), s.downState.clone(), s.disableState.clone()); }, die: function() { var s = this; if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) { LMouseEventContainer.removeButton(s); } s.callParent("die", arguments); } }; for (var k in p) { LButton.prototype[k] = p[k]; } return LButton; })(); function LBlendMode() { throw "LBlendMode cannot be instantiated"; } LBlendMode.SOURCE_OVER = "source-over"; LBlendMode.SOURCE_ATOP = "source-atop"; LBlendMode.SOURCE_IN = "source-in"; LBlendMode.SOURCE_OUT = "source-out"; LBlendMode.DESTINATION_OVER = "destination-over"; LBlendMode.DESTINATION_ATOP = "destination-atop"; LBlendMode.DESTINATION_IN = "destination-in"; LBlendMode.DESTINATION_OUT = "destination-out"; LBlendMode.LIGHTER = "lighter"; LBlendMode.COPY = "copy"; LBlendMode.XOR = "xor"; LBlendMode.NONE = null; LBlendMode.NORMAL = null; var LTextFieldType = function() { throw "LTextFieldType cannot be instantiated"; }; LTextFieldType.INPUT = "input"; LTextFieldType.DYNAMIC = null; LStyleSheet = (function() { function LStyleSheet() { var s = this; LExtends(s, LObject, []); s.styleIndex = 0; s.styleNames = {}; } LStyleSheet.prototype.clone = function() { var s = this, a = new s.constructor(); a.copyProperty(s); return a; }; LStyleSheet.prototype.setStyle = function(styleName, styleObject) { this.styleIndex++; if (styleObject === null) { if (this.styleNames[styleName]) { delete this.styleNames[styleName]; } return; } var arr = styleObject.replace(/(^\{)|(\}$)/g, "").split(";"), i, styleObjects; styleObject = {}; for (i = 0; i < arr.length; i++) { if (!arr[i]) { continue; } var styleObjects = arr[i].split(":"); if (!styleObjects[0]) { continue; } styleObject[styleObjects[0]] = styleObjects[1]; } this.styleNames[styleName] = styleObject; }; LStyleSheet.prototype.getStyle = function(styleName) { return this.styleNames[styleName]; }; return LStyleSheet; })(); LTextFormat = (function() { function LTextFormat(font, size, color, bold, italic, underline) { var s = this; LExtends(s, LObject, []); s.font = font ? font : "Arial"; s.size = size ? size : 15; s.color = color ? color : "#000000"; s.bold = bold ? bold : false; s.italic = italic ? italic : false; s.underline = underline ? underline : false; } LTextFormat.prototype.clone = function() { var s = this, a = new s.constructor(); a.copyProperty(s); return a; }; LTextFormat.prototype.getFontText = function() { var s = this; return (s.italic ? "italic " : "") + (s.bold ? "bold " : "") + s.size + "px " + s.font; }; LTextFormat.prototype.setCss = function(css) { var s = this, k; for (k in css) { switch (k) { case "color": s.color = css[k]; break; case "font-family": s.font = css[k]; break; case "font-size": s.size = css[k]; break; case "font-style": s.italic = (css[k] == "italic"); break; case "font-weight": s.bold = (css[k] == "bold"); break; case "text-decoration": s.color = (css[k] == "underline"); break; } } }; return LTextFormat; })(); var LTextField = (function() { function LTextField() { var s = this; LExtends(s, LInteractiveObject, []); s.type = "LTextField"; s.texttype = null; s.text = ""; s.htmlText = ""; s.styleSheet = ""; s.font = "Arial"; s.size = 15; s.color = "#000000"; s.weight = "normal"; s.textAlign = "left"; s.textBaseline = "top"; s.heightMode = LTextField.HEIGHT_MODE_BOTTOM; s.stroke = false; s.lineWidth = 1; s.lineColor = "#000000"; s.width = 150; s.height = s.size; s.displayAsPassword = false; s.wordWrap = false; s.multiline = false; s.numLines = 1; s.speed = 0; s._speedIndex = 100; } LTextField.HEIGHT_MODE_BOTTOM = "bottom"; LTextField.HEIGHT_MODE_BASELINE = "baseline"; var p = { _showReady: function(c) { var s = this; c.font = s.weight + " " + s.size + "px " + s.font; c.textAlign = s.textAlign; c.textBaseline = s.textBaseline; }, ll_getStyleSheet: function(textFormat, tabName, attribute, text) { var s = this, pattern, tf = textFormat.clone(); if (tabName == "font") { var i = 0; while (attribute) { if (i++>4) break; pattern = /(([^\s]*?)(\s*)=(\s*)("|')(.*?)\5)*/g; var arr = pattern.exec(attribute); if (!arr ||!arr[0]) { break; } switch (arr[2]) { case "face": tf.font = arr[6]; break; case "color": tf.color = arr[6]; break; case "size": tf.size = arr[6]; break; } attribute = attribute.replace(arr[0], "").replace(/(^\s*)|(\s*$)|(\n)/g, ""); } } else if (tabName == "b") { tf.bold = true; } else if (tabName == "u") { tf.underline = true; } else if (tabName == "i") { tf.italic = true; } else if (tabName == "p" && s.wordWrap) { text = "\n" + text + "\n"; } else if (s.styleSheet) { var sheetObj; if (tabName == "span") { pattern = /(([^\s]*?)(\s*)=(\s*)("|')(.*?)\5)*/g; var arr = pattern.exec(attribute); if (arr && arr[0]) { switch (arr[2]) { case "class": sheetObj = s.styleSheet.getStyle("." + arr[6]); break; } } } else if (s.styleSheet.getStyle(tabName)) { sheetObj = s.styleSheet.getStyle(tabName); } if (sheetObj) { tf.setCss(sheetObj); } } s.ll_getHtmlText(tf, text); }, ll_getHtmlText: function(tf, text) { if (!text) { return; } var s = this, tabName, content, start, end, pattern = /<(.*?)(\s*)(.*?)>(.*?)<\/\1>/g, arr = pattern.exec(text); if (!arr ||!arr[0]) { s.ll_htmlTexts.push({ textFormat: tf.clone(), text: text }); return; } if (arr.index > 0) { s.ll_htmlTexts.push({ textFormat: tf.clone(), text: text.substring(0, arr.index) }); } tabName = arr[1]; start = arr.index; end = start; do { end = text.indexOf(" 0 && start < end); content = text.substring(text.indexOf(">", arr.index) + 1, end); s.ll_getStyleSheet(tf, tabName, arr[3], content); s.ll_getHtmlText(tf, text.substring(end + tabName.length + 3)); }, _ll_show: function(c) { var s = this, d, lbl, i, rc, j, l, k, m, b, h, enter, tf, underlineY; if (s.texttype == LTextFieldType.INPUT) { s.inputBackLayer.ll_show(); rc = s.getRootCoordinate(); if (LGlobal.inputBox.name == "input" + s.objectIndex) { LGlobal.inputBox.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + (((rc.y + s.inputBackLayer.startY()) * parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>>0)) + "px"; LGlobal.inputBox.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + (((rc.x + s.inputBackLayer.startX()) * parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width)>>>0)) + "px"; } if (LGlobal.inputTextField && LGlobal.inputTextField.objectIndex == s.objectIndex) { return; } } if (LGlobal.fpsStatus) { LGlobal.fpsStatus.text++; } c.fillStyle = s.color; if (s.stroke) { c.strokeStyle = s.lineColor; c.lineWidth = s.lineWidth + 1; } if (s.htmlText) { if (s.ll_htmlText != s.htmlText || (s.styleSheet && (s.ll_style_objectIndex != s.styleSheet.objectIndex || s.ll_styleIndex == s.styleSheet.styleIndex))) { tf = new LTextFormat(); s.ll_htmlTexts = []; s.ll_htmlText = s.htmlText; if (s.styleSheet) { s.ll_style_objectIndex = s.styleSheet.objectIndex; s.ll_styleIndex = s.styleSheet.styleIndex; } s.ll_getHtmlText(tf, s.htmlText); } j = 0, k = 0, m = 0, b = 0; s._wordHeight = s.wordHeight || 30; if (!LTextField.underlineY) { LTextField.underlineY = { "alphabetic": 0, "top": 1, "bottom": - 0.2, "middle": 0.4, "hanging": 0.8 }; } s.ll_htmlTexts.forEach(function(element) { var textFormat = element.textFormat, text = element.text; c.font = textFormat.getFontText(); c.fillStyle = textFormat.color; for (i = 0, l = text.length; i < l; i++) { enter = /(?:\r\n|\r|\n|Â¥n)/.exec(text.substr(i, 1)); if (enter) { j = 0; k = i + 1; m++; } else { h = c.measureText("O").width * 1.2; if (s.stroke) { c.strokeText(text.substr(i, 1), j, m * s._wordHeight); } c.fillText(text.substr(i, 1), j, m * s._wordHeight); if (textFormat.underline) { c.beginPath(); underlineY = m * s._wordHeight + h * LTextField.underlineY[s.textBaseline]; c.moveTo(j, underlineY); c.lineTo(j + c.measureText(text.substr(i, 1)).width, underlineY); c.stroke(); } } j += c.measureText(text.substr(i, 1)).width; if (s.wordWrap && j + c.measureText(text.substr(i + 1, 1)).width > s.width) { j = 0; k = i + 1; m++; } } s.height = (m + 1) * s._wordHeight; }); return; } lbl = s.text; if (s.displayAsPassword) { lbl = ''; for (i = 0, l = s.text.length; i < l; i++) { lbl += '*'; } } if (s.wordWrap || s.multiline) { j = 0, k = 0, m = 0, b = 0; for (i = 0, l = s.text.length; i < l; i++) { enter = /(?:\r\n|\r|\n|Â¥n)/.exec(lbl.substr(i, 1)); if (enter) { j = 0; k = i + 1; m++; } else { if (s.stroke) { c.strokeText(lbl.substr(i, 1), j, m * s.wordHeight); } c.fillText(lbl.substr(i, 1), j, m * s.wordHeight); } s.numLines = m; j = c.measureText(s.text.substr(k, i + 1 - k)).width; if (s.wordWrap && j + c.measureText(lbl.substr(i, 1)).width > s.width) { j = 0; k = i + 1; m++; } } s.height = (m + 1) * s.wordHeight; } else { s.numLines = 1; if (s.stroke) { c.strokeText(lbl, 0, 0, c.measureText(lbl).width); } c.fillText(lbl, 0, 0, c.measureText(lbl).width); } if (s.windRunning) { s._ll_windRun(); } }, _wordHeight: function(h) { var s = this; if (h > 0) { s.wordHeight = h; } else { s.wordWrap = false; s.wordHeight = s.getHeight(); } s.height = 0; }, setMultiline: function(v, h) { var s = this; if (v) { s._wordHeight(h); } s.multiline = v; }, setWordWrap: function(v, h) { var s = this; if (v) { s._wordHeight(h); } s.wordWrap = v; }, setType: function(type, inputBackLayer) { var s = this; if (s.texttype != type && type == LTextFieldType.INPUT) { if (inputBackLayer == null || inputBackLayer.type != "LSprite") { s.inputBackLayer = new LSprite(); s.inputBackLayer.graphics.drawRect(1, "#000000", [0, - s.getHeight() * 0.4, s.width, s.getHeight() * 1.5]); } else { s.inputBackLayer = inputBackLayer; } s.inputBackLayer.parent = s; if (LMouseEventContainer.container[LMouseEvent.MOUSE_DOWN]) { LMouseEventContainer.pushInputBox(s); } } else { s.inputBackLayer = null; LMouseEventContainer.removeInputBox(s); } s.texttype = type; }, ismouseon: function(e, cood) { var s = this; if (!e) { return false; } if (!s.visible) { return false; } if (!cood) { cood = { x: 0, y: 0, scaleX: 1, scaleY: 1 }; } if (s.mask) { if (!s.mask.parent) { s.mask.parent = s.parent; } if (!s.mask.ismouseon(e, cood)) { return false; } } if (s.inputBackLayer) { return s.inputBackLayer.ismouseon(e, { x: s.x * cood.scaleX + cood.x, y: s.y * cood.scaleY + cood.y, scaleX: cood.scaleX * s.scaleX, scaleY: cood.scaleY * s.scaleY }); } return s.ismouseonShapes([{ type: LShape.RECT, arg: [0, 0, s._getWidth(), s._getHeight()] } ], e.offsetX, e.offsetY); }, clone: function() { var s = this, a = new s.constructor(); a.copyProperty(s); a.texttype = null; if (s.texttype == LTextFieldType.INPUT) { a.setType(LTextFieldType.INPUT); } return a; }, mouseEvent: function(event, type, cood) { var s = this, on; if (s.inputBackLayer == null || type != LMouseEvent.MOUSE_DOWN) { return; } on = s.ismouseon(event, cood); if (!on) { return; } s.focus(); }, _ll_getValue: function() { if (LGlobal.inputBox.style.display != NONE) { LGlobal.inputTextField.text = LGlobal.inputTextBox.value; LEvent.removeEventListener(LGlobal.inputTextBox, LKeyboardEvent.KEY_DOWN, LGlobal.inputTextField._ll_input); LGlobal.inputBox.style.display = NONE; LGlobal.inputTextField.dispatchEvent(LFocusEvent.FOCUS_OUT); LGlobal.inputTextField = null; } }, updateInput: function() { var s = this; if (s.texttype == LTextFieldType.INPUT && LGlobal.inputTextField.objectIndex == s.objectIndex) { LGlobal.inputTextBox.value = LGlobal.inputTextField.text; } }, _ll_input: function(e) { var event = new LEvent(LTextEvent.TEXT_INPUT); event.keyCode = e.keyCode; LGlobal.inputTextField.text = LGlobal.inputTextBox.value; if (LGlobal.inputTextField.hasEventListener(LTextEvent.TEXT_INPUT)) { e.returnValue = LGlobal.inputTextField.dispatchEvent(event); } else { e.returnValue = true; } }, focus: function() { var s = this, sc, sx; if (!s.parent) { return; } if (s.texttype != LTextFieldType.INPUT) { return; } if (LGlobal.inputTextField && LGlobal.inputTextField.objectIndex != s.objectIndex) { s._ll_getValue(); } s.dispatchEvent(LFocusEvent.FOCUS_IN); sc = s.getAbsoluteScale(); LGlobal.inputBox.style.display = ""; LGlobal.inputBox.name = "input" + s.objectIndex; LGlobal.inputTextField = s; LGlobal.inputTextareaBoxObj.style.display = NONE; LGlobal.inputTextBoxObj.style.display = NONE; LGlobal.passwordBoxObj.style.display = NONE; if (s.displayAsPassword) { LGlobal.inputTextBox = LGlobal.passwordBoxObj; } else if (s.multiline) { LGlobal.inputTextBox = LGlobal.inputTextareaBoxObj; } else { LGlobal.inputTextBox = LGlobal.inputTextBoxObj; } sx = parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width; sy = parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height; LGlobal.inputTextBox.style.display = ""; LGlobal.inputTextBox.value = s.text; LGlobal.inputTextBox.style.height = s.inputBackLayer.getHeight() * sc.scaleY * s.scaleY * sy + "px"; LGlobal.inputTextBox.style.width = s.inputBackLayer.getWidth() * sc.scaleX * s.scaleX * sx + "px"; LGlobal.inputTextBox.style.color = s.color; LGlobal.inputTextBox.style.fontSize = ((s.size * parseFloat(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>0) + "px"; LGlobal.inputTextBox.style.fontFamily = s.font; LEvent.addEventListener(LGlobal.inputTextBox, LKeyboardEvent.KEY_DOWN, LGlobal.inputTextField._ll_input); if (s.texttype == LTextFieldType.INPUT) { rc = s.getRootCoordinate(); if (LGlobal.inputBox.name == "input" + s.objectIndex) { LGlobal.inputBox.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + (((rc.y + s.inputBackLayer.startY()) * parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>>0)) + "px"; LGlobal.inputBox.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + (((rc.x + s.inputBackLayer.startX()) * parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width)>>>0)) + "px"; } } setTimeout(function() { LGlobal.inputTextBox.focus(); }, 0); }, _getWidth: function() { var s = this; if (s.wordWrap) { return s.width; } LGlobal.canvas.font = s.size + "pt " + s.font; return LGlobal.canvas.measureText(s.text).width; }, getWidth: function(maskSize) { var s = this, w, mx, mw; w = s._getWidth() * s.scaleX; if (maskSize && s.mask) { mx = s.mask._startX ? s.mask._startX() : s.mask.startX(); if (mx > w) { return 0; } mw = s.mask.getWidth(); if (mx + mw > w) { return w - mx; } else { return mw; } } return w; }, _getHeight: function() { var s = this, c = LGlobal.canvas, i, l, j, k, m, enter; if (s.wordWrap) { c.font = s.weight + " " + s.size + "pt " + s.font; if (s.height == 0) { j = 0, k = 0, m = 0; for (i = 0, l = s.text.length; i < l; i++) { j = c.measureText(s.text.substr(k, i - k)).width; enter = /(?:\r\n|\r|\n|Â¥n)/.exec(s.text.substr(i, 1)); if ((s.wordWrap && j > s.width) || enter) { j = 0; k = i; m++; if (enter) { k++; } } } s.height = (m + 1) * s.wordHeight; } return s.height; } c.font = s.weight + " " + s.size + "pt " + s.font; l = c.measureText("O").width * 1.2; if (s.heightMode == LTextField.HEIGHT_MODE_BASELINE) { l = l * 1.2; } return l; }, getHeight: function(maskSize) { var s = this, h, my, mh; h = s._getHeight() * s.scaleY; if (maskSize && s.mask) { my = s.mask._startY ? s.mask._startY() : s.mask.startY(); if (my > h) { return 0; } mh = s.mask.getHeight(); if (my + mh > h) { return h - my; } else { return mh; } } return h; }, wind: function(listener) { var s = this; s.wind_over_function = listener; s.windRunning = true; s._ll_wind_text = s.text; s.text = ""; s._ll_wind_length = 0; }, _ll_windRun: function() { var s = this; if (s._speedIndex++ s._ll_wind_text.length) { s.windRunning = false; if (s.wind_over_function) { s.wind_over_function(); } s.dispatchEvent(new LEvent(LTextEvent.WIND_COMPLETE)); return; } s.text = s._ll_wind_text.substring(0, s._ll_wind_length); s._ll_wind_length++; }, die: function() { LMouseEventContainer.removeInputBox(this); } }; for (var k in p) { LTextField.prototype[k] = p[k]; } return LTextField; })(); var LBitmap = (function() { function LBitmap(bitmapdata) { var s = this; LExtends(s, LDisplayObject, []); s.type = "LBitmap"; s.rotateCenter = true; s.bitmapData = bitmapdata; if (s.bitmapData) { s.width = s.bitmapData.width; s.height = s.bitmapData.height; } } var p = { _canShow: function() { return (this.visible && this.bitmapData); }, _rotateReady: function() { var s = this; if (s.rotate != 0 && s.rotateCenter) { s.rotatex = s.getWidth() * 0.5; s.rotatey = s.getHeight() * 0.5; } else { s.rotatex = s.rotatey = 0; } }, _coordinate: function(c) {}, _ll_show: function() { this.ll_draw(); }, ll_draw: function() { var s = this; if (LGlobal.fpsStatus) { LGlobal.fpsStatus.bitmapData++; } LGlobal.canvas.drawImage(s.bitmapData.image, s.bitmapData.x, s.bitmapData.y, s.bitmapData.width, s.bitmapData.height, s.x, s.y, s.bitmapData.width, s.bitmapData.height); }, clone: function() { var s = this, a = new LBitmap(s.bitmapData.clone()); a.copyProperty(s); a.rotateCenter = s.rotateCenter; return a; }, ismouseon: function(e, cood) { var s = this; if (!e) { return false; } if (!s.visible ||!s.bitmapData) { return false; } if (s.mask) { if (!s.mask.parent) { s.mask.parent = s.parent; } if (!s.mask.ismouseon(e, cood)) { return false; } } return s.ismouseonShapes([{ type: LShape.RECT, arg: [0, 0, s.bitmapData.width, s.bitmapData.height] } ], e.offsetX, e.offsetY); }, getWidth: function(maskSize) { var s = this, w, mx, mw; w = s.bitmapData != null ? s.bitmapData.width * (s.scaleX > 0 ? s.scaleX : - s.scaleX) : 0; if (maskSize && s.mask) { mx = s.mask._startX ? s.mask._startX() : s.mask.startX(); if (mx > w) { return 0; } mw = s.mask.getWidth(); if (mx + mw > w) { return w - mx; } else { return mw; } } return w; }, getHeight: function(maskSize) { var s = this, h, my, mh; h = s.bitmapData != null ? s.bitmapData.height * (s.scaleY > 0 ? s.scaleY : - s.scaleY) : 0; if (maskSize && s.mask) { my = s.mask._startY ? s.mask._startY() : s.mask.startY(); if (my > h) { return 0; } mh = s.mask.getHeight(); if (my + mh > h) { return h - my; } else { return mh; } } return h; }, startX: function() { return this.x; }, startY: function() { return this.y; }, die: function() {} }; for (var k in p) { LBitmap.prototype[k] = p[k]; } return LBitmap; })(); var LBitmapData = (function() { function LBitmapData(image, x, y, width, height, dataType) { var s = this; LExtends(s, LObject, []); s.type = "LBitmapData"; if (typeof dataType == UNDEFINED) { dataType = LBitmapData.DATA_IMAGE; } s.oncomplete = null; s._locked = false; s._setPixel = false; s.x = (x == null ? 0 : x); s.y = (y == null ? 0 : y); s.width = 0; s.height = 0; s.dataType = null; if (image && typeof image == "object") { s.image = image; s.dataType = LBitmapData.DATA_IMAGE; s.width = (width == null ? s.image.width : width); s.height = (height == null ? s.image.height : height); s._setDataType(dataType); } else { s._createCanvas(); s.dataType = LBitmapData.DATA_CANVAS; s._canvas.width = s.width = (width == null ? 1 : width); s._canvas.height = s.height = (height == null ? 1 : height); if (typeof image == "string") { image = parseInt(image.replace("#", "0x")); } if (typeof image == "number") { var d = s._context.createImageData(s.width, s.height); for (var i = 0; i < d.data.length; i += 4) { d.data[i + 0] = image>>16 & 0xFF; d.data[i + 1] = image>>8 & 0xFF; d.data[i + 2] = image & 0xFF; d.data[i + 3] = 255; } s._context.putImageData(d, 0, 0); } s.image = s._canvas; if (dataType == LBitmapData.DATA_IMAGE) { s._setDataType(dataType); } } s.resize(); } LBitmapData.DATA_IMAGE = "data_image"; LBitmapData.DATA_CANVAS = "data_canvas"; var p = { _setDataType: function(dataType) { var s = this; if (s.dataType == dataType) { return; } if (dataType == LBitmapData.DATA_CANVAS) { s._createCanvas(); s._canvas.width = s.image.width; s._canvas.height = s.image.height; s._context.clearRect(0, 0, s._canvas.width, s._canvas.height); s._context.drawImage(s.image, 0, 0); s.image = s._canvas; } else if (dataType == LBitmapData.DATA_IMAGE) { s.image = new Image(); s.image.width = s._canvas.width; s.image.height = s._canvas.height; s.image.src = s._canvas.toDataURL(); } s.dataType = dataType; }, _createCanvas: function() { var s = this; if (!s._canvas) { s._canvas = document.createElement("canvas"); s._context = s._canvas.getContext("2d"); } }, clear: function() { var s = this; s._createCanvas(); s._canvas.width = s.image.width; if (s.dataType == LBitmapData.DATA_IMAGE) { s.image.src = s._canvas.toDataURL(); } }, setProperties: function(x, y, width, height) { var s = this; s.x = x; s.y = y; s.width = width; s.height = height; s.resize(); }, setCoordinate: function(x, y) { var s = this; s.x = x; s.y = y; s.resize(); }, clone: function() { var s = this; return new LBitmapData(s.image, s.x, s.y, s.width, s.height, s.dataType); }, _ready: function() { var s = this; s._dataType = s.dataType; s._setDataType(LBitmapData.DATA_CANVAS); s._data = s._context.getImageData(s.x, s.y, s.width, s.height); }, _update: function() { var s = this; s._context.putImageData(s._data, s.x, s.y, 0, 0, s.width, s.height); s._setDataType(s._dataType); s._data = null; }, getPixel: function(x, y, colorType) { var s = this, i, d; x = x>>0; y = y>>0; if (!s._locked) { s._ready(); } i = s.width * 4 * y + x * 4; d = s._data.data; if (!s._locked) { s._update(); } if (colorType == "number") { return d[i]<<16 | d[i + 1]<<8 | d[i + 2]; } else { return [d[i], d[i + 1], d[i + 2], d[i + 3]]; } }, setPixel: function(x, y, data) { var s = this; x = x>>0; y = y>>0; if (!s._locked) { s._ready(); } var d = s._data, i = s.width * 4 * y + x * 4; if (typeof data == "object") { d.data[i + 0] = data[0]; d.data[i + 1] = data[1]; d.data[i + 2] = data[2]; d.data[i + 3] = data[3]; } else { if (typeof data == "string") { data = parseInt(data.replace("#", "0x")); } d.data[i + 0] = data>>16 & 0xFF; d.data[i + 1] = data>>8 & 0xFF; d.data[i + 2] = data & 0xFF; d.data[i + 3] = 255; } if (!s._locked) { s._update(); } }, getPixels: function(rect) { var s = this, r; if (!s._locked) { s._ready(); } r = s._context.getImageData(s.x + rect.x, s.y + rect.y, rect.width, rect.height); if (!s._locked) { s._update(); } return r; }, setPixels: function(rect, data) { var s = this, i, j, d, w, sd, x, y; if (!s._locked) { s._ready(); } d = s._data; if (typeof data == "object") { w = s._canvas.width; for (x = rect.x; x < rect.right; x++) { for (y = rect.y; y < rect.bottom; y++) { i = w * 4 * (s.y + y) + (s.x + x) * 4; j = data.width * 4 * (y - rect.y) + (x - rect.x) * 4; d.data[i + 0] = data.data[j + 0]; d.data[i + 1] = data.data[j + 1]; d.data[i + 2] = data.data[j + 2]; d.data[i + 3] = data.data[j + 3]; } } } else { if (typeof data == "string") { data = parseInt(data.replace("#", "0x")); } data = [data>>16 & 0xFF, data>>8 & 0xFF, data & 0xFF]; w = s._canvas.width; for (x = rect.x; x < rect.right; x++) { for (y = rect.y; y < rect.bottom; y++) { i = w * 4 * (s.y + y) + (s.x + x) * 4; d.data[i + 0] = data[0]; d.data[i + 1] = data[1]; d.data[i + 2] = data[2]; d.data[i + 3] = 255; } } } if (!s._locked) { s._update(); } }, putPixels: function(rect, data) { var s = this; if (s.dataType != LBitmapData.DATA_CANVAS || typeof data != "object") { return; } s._context.putImageData(data, s.x + rect.x, s.y + rect.y, 0, 0, rect.width, rect.height); }, lock: function() { var s = this; s._locked = true; s._ready(); }, unlock: function() { var s = this; s._locked = false; s._update(); }, draw: function(source, matrix, colorTransform, blendMode, clipRect) { var s = this, c, bd = source, x, y, w, h, save = false; var _dataType = s.dataType; s._setDataType(LBitmapData.DATA_CANVAS); if (matrix || colorTransform || blendMode || clipRect) { s._context.save(); save = true; } if (clipRect) { if (!(bd instanceof LBitmapData)) { x = y = 0; } else { x = bd.x; y = bd.y; } bd = new LBitmapData(bd.getDataCanvas(), x + clipRect.x, y + clipRect.y, clipRect.width, clipRect.height, LBitmapData.DATA_CANVAS); } w = bd.getWidth()>>>0; h = bd.getHeight()>>>0; if (w == 0 || h == 0) { s._setDataType(_dataType); return; } c = bd.getDataCanvas(); if (colorTransform) { bd.colorTransform(new LRectangle(0, 0, w, h), colorTransform); c = bd.image; } if (matrix) { s._context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty); } if (blendMode) { s._context.globalCompositeOperation = blendMode; } s._context.drawImage(c, bd.x, bd.y, w, h, 0, 0, w, h); if (save) { s._context.restore(); } s._setDataType(_dataType); s.resize(); }, getDataCanvas: function() { var s = this; var _dataType = s.dataType; s._setDataType(LBitmapData.DATA_CANVAS); s._setDataType(_dataType); return s._canvas; }, getWidth: function() { return this.width; }, getHeight: function() { return this.height; }, resize: function() { var s = this, w = s.image.width - s.x, h = s.image.height - s.y; s.width = s.width < w ? s.width : w; s.height = s.height < h ? s.height : h; }, colorTransform: function(rect, colorTransform) { var s = this; if (s.dataType != LBitmapData.DATA_CANVAS) { return; } var x = rect.x>>0, y = rect.y>>0, w = rect.width>>0, h = rect.height>>0; var img = s._context.getImageData(s.x + rect.x, s.y + rect.y, rect.width, rect.height); var data = img.data; for (var i = 0, l = data.length; i < l; i += 4) { var r = i, g = i + 1, b = i + 2, a = i + 3; data[r] = data[r] * colorTransform.redMultiplier + colorTransform.redOffset; data[g] = data[g] * colorTransform.greenMultiplier + colorTransform.greenOffset; data[b] = data[b] * colorTransform.blueMultiplier + colorTransform.blueOffset; data[a] = data[a] * colorTransform.alphaMultiplier + colorTransform.alphaOffset; } s._context.putImageData(img, s.x + rect.x, s.y + rect.y, 0, 0, rect.width, rect.height); }, copyPixels: function(sourceBitmapData, sourceRect, destPoint) { var s = this, left, top, width, height, bd = sourceBitmapData; if (s.dataType != LBitmapData.DATA_CANVAS) { return; } left = bd.x; top = bd.y; width = bd.width; height = bd.height; bd.setProperties(sourceRect.x + bd.x, sourceRect.y + bd.y, sourceRect.width, sourceRect.height); s._context.drawImage(bd.image, bd.x, bd.y, bd.width, bd.height, destPoint.x, destPoint.y, bd.width, bd.height); bd.x = left; bd.y = top; bd.width = width; bd.height = height; } }; for (var k in p) { LBitmapData.prototype[k] = p[k]; } return LBitmapData; })(); var LDropShadowFilter = (function() { function LDropShadowFilter(distance, angle, color, blur) { var s = this; LExtends(s, LObject, []); s.type = "LDropShadowFilter"; s.distance = distance ? distance : 0; s.angle = angle ? angle : 0; s.shadowColor = color ? color : "#000000"; s.shadowBlur = blur ? blur : 20; s.setShadowOffset(); } var p = { setShadowOffset: function() { var s = this; var a = s.angle * Math.PI / 180; s.shadowOffsetX = s.distance * Math.cos(a); s.shadowOffsetY = s.distance * Math.sin(a); }, ll_show: function() { var s = this, c = LGlobal.canvas; c.shadowColor = s.shadowColor; c.shadowBlur = s.shadowBlur; c.shadowOffsetX = s.shadowOffsetX; c.shadowOffsetY = s.shadowOffsetY; }, setDistance: function(distance) { this.distance = distance; this.setShadowOffset(); }, setAngle: function(angle) { this.angle = angle; this.setShadowOffset(); }, setColor: function(color) { this.shadowColor = color; }, setBlur: function(blur) { this.shadowBlur = blur; } }; for (var k in p) { LDropShadowFilter.prototype[k] = p[k]; } return LDropShadowFilter; })(); var LAnimation = (function() { function LAnimation(layer, data, list) { var s = this; LExtends(s, LSprite, []); s.type = "LAnimation"; s.rowIndex = 0; s.colIndex = 0; s._ll_stepIndex = 0; s._ll_stepArray = []; s.mode = 1; s.isMirror = false; if (Array.isArray(data)) { s.bitmapList = data; } else { s.bitmapList = [data]; } s.bitmap = new LBitmap(s.bitmapList[0]); s.imageArray = list; s.addChild(s.bitmap); if (layer != null) { layer.addChild(s); } s.onframe(); s.colIndex = 0; } var p = { setAction: function(rowIndex, colIndex, mode, isMirror) { var s = this, changed = false; if (rowIndex != null && rowIndex >= 0 && rowIndex < s.imageArray.length) { s.rowIndex = rowIndex; changed = true; } if (colIndex != null && colIndex >= 0 && colIndex < s.imageArray[rowIndex].length) { s.colIndex = colIndex; changed = true; } if (mode != null) { s.mode = mode; changed = true; } if (isMirror != null) { s.isMirror = isMirror; if (s.isMirror) { s.bitmap.x = s.bitmap.getWidth(); s.bitmap.scaleX =- 1 * Math.abs(s.bitmap.scaleX); } else { s.bitmap.x = 0; s.bitmap.scaleX = Math.abs(s.bitmap.scaleX); } changed = true; } if (changed) { s._ll_stepIndex = 0; } }, getAction: function() { var s = this; return [s.rowIndex, s.colIndex, s.mode, s.isMirror]; }, onframe: function() { var s = this, arr, sx = 0, stepFrame = null; if (s.colIndex >= s.imageArray[s.rowIndex].length) { s.colIndex = 0; } arr = s.imageArray[s.rowIndex][s.colIndex]; if (s._ll_stepArray[s.rowIndex] && s._ll_stepArray[s.rowIndex][s.colIndex]) { stepFrame = s._ll_stepArray[s.rowIndex][s.colIndex]; } else { stepFrame = 0; } if (s._ll_stepIndex == 0) { if (typeof arr.dataIndex == "number" && Array.isArray(s.bitmapList) && arr.dataIndex < s.bitmapList.length) { s.bitmap.bitmapData = s.bitmapList[arr.dataIndex]; } if (arr.script) { for (i = 0; i < arr.script.length; i++) { obj = arr.script[i]; l = s.ll_labelList[obj.name]; if (l && l.rowIndex == s.rowIndex && l.colIndex == s.colIndex && l.mode == s.mode && l.isMirror == (s.bitmap.scaleX==-1)) { obj.func(s, obj.params); } } } if (typeof arr.width != UNDEFINED && typeof arr.height != UNDEFINED) { s.bitmap.bitmapData.setProperties(arr.x, arr.y, arr.width, arr.height); } else { s.bitmap.bitmapData.setCoordinate(arr.x, arr.y); } if (typeof arr.sx != UNDEFINED) { sx = arr.sx; } if (typeof arr.sy != UNDEFINED) { s.bitmap.y = arr.sy; } if (typeof arr.mirror != UNDEFINED) { s.bitmap.rotateCenter = false; s.bitmap.scaleX = arr.mirror?-1 : 1; } s.bitmap.x = sx + (s.bitmap.scaleX == 1 ? 0 : s.bitmap.getWidth()); } if (s._ll_stepIndex++= s.imageArray[s.rowIndex].length || s.colIndex < 0) { s.colIndex = s.mode > 0 ? 0 : s.imageArray[s.rowIndex].length - 1; if (s.constructor.name == "LAnimationTimeline") { s._send_complete = true; } else { s.dispatchEvent(LEvent.COMPLETE); } } }, clone: function() { var s = this, a = new LAnimation(null, s.bitmap.bitmapData, s.imageArray.slice(0)); a.copyProperty(s); a.childList.length = 0; a.bitmap = s.bitmap.clone(); a.addChild(a.bitmap); return a; } }; for (var k in p) { LAnimation.prototype[k] = p[k]; } return LAnimation; })(); var LAnimationTimeline = (function() { function LAnimationTimeline(data, list) { var s = this; LExtends(s, LAnimation, [null, data, list]); s.type = "LAnimationTimeline"; s.speed = 0; s._speedIndex = 0; s.ll_labelList = {}; for (var i = 0, sublist, j, child; i < list.length; i++) { sublist = list[i]; for (j = 0; j < sublist.length; j++) { child = sublist[j]; if (child.label) { s.setLabel(child.label, i, j, 1, child.isMirror ? true : false); } } } s.addEventListener(LEvent.ENTER_FRAME, s._ll_onframe); }; var p = { clone: function() { var s = this, k, o, a = new LAnimation(null, s.bitmap.bitmapData, s.imageArray.slice(0)); a.copyProperty(s); a.childList.length = 0; a.bitmap = s.bitmap.clone(); a.addChild(a.bitmap); for (k in s.ll_labelList) { o = s.ll_labelList[k]; a.ll_labelList[k] = { rowIndex: o.rowIndex, colIndex: o.colIndex, mode: o.mode, isMirror: o.isMirror }; } return a; }, setFrameSpeedAt: function(rowIndex, colIndex, speed) { var s = this; if (!s._ll_stepArray[rowIndex]) { s._ll_stepArray[rowIndex] = []; } s._ll_stepArray[rowIndex][colIndex] = speed; }, _ll_onframe: function(event) { var self = event.target; if (self._ll_stop) { return; } if (self._speedIndex++= s.list.length) { return; } s.loadIndex = 0; s.loadStart(); s.reloadtime = setTimeout(s.loadInit.bind(s), 10000); }, loadStart: function() { var s = this, d, ph, phs, ext; if (s.loadIndex >= s.list.length) { return; } d = s.list[s.loadIndex]; if (!d.name) { d.name = s.llname + s.loadIndex; } if (!s.lresult[s.llload + d.name]) { if (!d["type"]) { ext = getExtension(d.path); if (ext == "txt") { d["type"] = LURLLoader.TYPE_TEXT; } else if (ext == "js") { d["type"] = LURLLoader.TYPE_JS; } else if ((new Array("mp3", "ogg", "wav", "m4a")).indexOf(ext) >= 0) { d["type"] = LSound.TYPE_SOUND; } } if (d["type"] == LURLLoader.TYPE_TEXT || d["type"] == LURLLoader.TYPE_JS) { s.loader = new LURLLoader(); s.loader.name = d.name; s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s)); s.loader.load(s.url(d.path), d["type"]); } else if (d["type"] == LSound.TYPE_SOUND) { s.loader = new LSound(); s.loader.name = d.name; s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s)); s.loader.load(d.path); } else { s.loader = new LLoader(); s.loader.name = d.name; s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s)); s.loader.load(s.url(d.path), LLoader.TYPE_BITMAPDATE); } } s.loadIndex++; s.loadStart(); }, loadComplete: function(e) { var s = this; if (e && e.currentTarget && e.currentTarget.name) { e.currentTarget.removeEventListener(LEvent.COMPLETE, s.loadComplete); if (e.currentTarget.name.indexOf(s.llname) >= 0) { e.target = 1; } if (s.lresult[s.llload + e.currentTarget.name]) { return; } s.result[e.currentTarget.name] = e.target; s.lresult[s.llload + e.currentTarget.name] = 1; } s.index++; if (s.onupdate) { s.onupdate(Math.floor(s.index * 100 / s.list.length)); } if (s.index >= s.list.length) { if (s.reloadtime) { clearTimeout(s.reloadtime); } s.loader = null; var r = s.result; LGlobal.forceRefresh = true; s.oncomplete(r); } }, url: function(u) { if (!LGlobal.traceDebug) { return u; } return u + (u.indexOf('?') >= 0 ? '&' : '?') + 't=' + (new Date()).getTime(); } }; return new LoadManage(); })(); var LEasing = { None: { easeIn: function(t, b, c, d) { return b + t * c / d; }, easeOut: function(t, b, c, d) { return b + t * c / d; }, easeInOut: function(t, b, c, d) { return b + t * c / d; } }, Quad: { easeIn: function(t, b, c, d) { return c * (t/=d) * t + b; }, easeOut: function(t, b, c, d) { return - c * (t/=d) * (t - 2) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return c / 2 * t * t + b; } return - c / 2 * ((--t) * (t - 2) - 1) + b; } }, Cubic: { easeIn: function(t, b, c, d) { return c * (t/=d) * t * t + b; }, easeOut: function(t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return c / 2 * t * t * t + b; } return c / 2 * ((t -= 2) * t * t + 2) + b; } }, Quart: { easeIn: function(t, b, c, d) { return c * (t/=d) * t * t * t + b; }, easeOut: function(t, b, c, d) { return - c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return c / 2 * t * t * t * t + b; } return - c / 2 * ((t -= 2) * t * t * t - 2) + b; } }, Quint: { easeIn: function(t, b, c, d) { return c * (t/=d) * t * t * t * t + b; }, easeOut: function(t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return c / 2 * t * t * t * t * t + b; } return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; } }, Sine: { easeIn: function(t, b, c, d) { return - c * Math.cos(t / d * (Math.PI / 2)) + c + b; }, easeOut: function(t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b; }, easeInOut: function(t, b, c, d) { return - c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; } }, Strong: { easeIn: function(t, b, c, d) { return c * (t/=d) * t * t * t * t + b; }, easeOut: function(t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return c / 2 * t * t * t * t * t + b; } return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; } }, Expo: { easeIn: function(t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; }, easeOut: function(t, b, c, d) { return (t == d) ? b + c : c * ( - Math.pow(2, - 10 * t / d) + 1) + b; }, easeInOut: function(t, b, c, d) { if (t == 0) { return b; } if (t == d) { return b + c; } if ((t/=d / 2) < 1) { return c / 2 * Math.pow(2, 10 * (t - 1)) + b; } return c / 2 * ( - Math.pow(2, - 10*--t) + 2) + b; } }, Circ: { easeIn: function(t, b, c, d) { return - c * (Math.sqrt(1 - (t/=d) * t) - 1) + b; }, easeOut: function(t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; }, easeInOut: function(t, b, c, d) { if ((t/=d / 2) < 1) { return - c / 2 * (Math.sqrt(1 - t * t) - 1) + b; } return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; } }, Elastic: { easeIn: function(t, b, c, d, a, p) { var s; if (t == 0) { return b; } if ((t/=d) == 1) { return b + c; } if (!p) { p = d * .3; } if (!a || a < Math.abs(c)) { a = c; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(c / a); } return - (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; }, easeOut: function(t, b, c, d, a, p) { var s; if (t == 0) { return b; } if ((t/=d) == 1) { return b + c; } if (!p) { p = d * .3; } if (!a || a < Math.abs(c)) { a = c; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(c / a); } return (a * Math.pow(2, - 10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b); }, easeInOut: function(t, b, c, d, a, p) { var s; if (t == 0) { return b; } if ((t/=d / 2) == 2) { return b + c; } if (!p) { p = d * (.3 * 1.5); } if (!a || a < Math.abs(c)) { a = c; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(c / a); } if (t < 1) { return - .5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; } return a * Math.pow(2, - 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b; } }, Back: { easeIn: function(t, b, c, d, s) { if (typeof s == UNDEFINED) { s = 1.70158; } return c * (t/=d) * t * ((s + 1) * t - s) + b; }, easeOut: function(t, b, c, d, s) { if (typeof s == UNDEFINED) { s = 1.70158; } return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }, easeInOut: function(t, b, c, d, s) { if (typeof s == UNDEFINED) { s = 1.70158; } if ((t/=d / 2) < 1) { return c / 2 * (t * t * (((s*=(1.525)) + 1) * t - s)) + b; } return c / 2 * ((t -= 2) * t * (((s*=(1.525)) + 1) * t + s) + 2) + b; } }, Bounce: { easeIn: function(t, b, c, d) { return c - LEasing.Bounce.easeOut(d - t, 0, c, d) + b; }, easeOut: function(t, b, c, d) { if ((t/=d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } }, easeInOut: function(t, b, c, d) { if (t < d / 2) { return LEasing.Bounce.easeIn(t * 2, 0, c, d) * .5 + b; } return LEasing.Bounce.easeOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b; } } }; var Quad = LEasing.Quad, Cubic = LEasing.Cubic, Quart = LEasing.Quart, Quint = LEasing.Quint, Sine = LEasing.Sine, Strong = LEasing.Strong, Expo = LEasing.Expo, Circ = LEasing.Circ, Elastic = LEasing.Elastic, Back = LEasing.Back, Bounce = LEasing.Bounce; var LTweenLiteTimeline; var LTweenLite = (function() { function LTweenLiteChild($target, $duration, $vars) { var s = this; LExtends(s, LObject, []); s.type = "LTweenLiteChild"; s.toNew = []; s.init($target, $duration, $vars); } var p = { init: function($target, $duration, $vars) { var s = this, k = null; if (typeof $vars["tweenTimeline"] == UNDEFINED) { $vars["tweenTimeline"] = LTweenLite.TYPE_FRAME; } s.target = $target; s.duration = $duration || 0.001; s.vars = $vars; s.delay = s.vars.delay || 0; if (s.vars["tweenTimeline"] == LTweenLite.TYPE_TIMER) { s.currentTime = (new Date()).getTime() / 1000; s.initTime = s.currentTime; s.startTime = s.initTime + s.delay; } else { s.currentTime = 0; s.duration*=1000; s.currentTime -= s.delay * 1000; } s.combinedTimeScale = s.vars.timeScale || 1; s.active = s.duration == 0 && s.delay == 0; s.varsto = {}; s.varsfrom = {}; s.stop = false; if (typeof(s.vars.ease) != "function") { s.vars.ease = LEasing.None.easeIn; } s.ease = s.vars.ease; delete s.vars.ease; if (s.vars.onComplete) { s.onComplete = s.vars.onComplete; delete s.vars.onComplete; } if (s.vars.onUpdate) { s.onUpdate = s.vars.onUpdate; delete s.vars.onUpdate; } if (s.vars.onStart) { s.onStart = s.vars.onStart; delete s.vars.onStart; } for (k in s.vars) { s.varsto[k] = s.vars[k]; s.varsfrom[k] = s.target[k]; } }, pause: function() { this.stop = true; }, resume: function() { this.stop = false; }, tween: function() { var s = this, tweentype; var type_timer = (s.vars["tweenTimeline"] == LTweenLite.TYPE_TIMER); if (type_timer) { var time = (new Date()).getTime() / 1000, etime = time - s.startTime; if (etime < 0) { return; } } else { if (s.stop) { return; } s.currentTime += LGlobal.speed; if (s.currentTime < 0) { return; } } for (tweentype in s.varsto) { if (tweentype == "tweenTimeline") { continue; } if (type_timer) { s.target[tweentype] = s.ease(etime, s.varsfrom[tweentype], s.varsto[tweentype] - s.varsfrom[tweentype], s.duration); } else { s.target[tweentype] = s.ease(s.currentTime, s.varsfrom[tweentype], s.varsto[tweentype] - s.varsfrom[tweentype], s.duration); } } if (s.onStart) { s._dispatchEvent(s.onStart); delete s.onStart; } var e; if (type_timer) { e = (etime >= s.duration); } else { e = (s.currentTime >= s.duration); } if (e) { for (tweentype in s.varsto) { s.target[tweentype] = s.varsto[tweentype]; } if (s.onComplete) { s._dispatchEvent(s.onComplete); } return true; } else if (s.onUpdate) { s._dispatchEvent(s.onUpdate); } return false; }, _dispatchEvent: function(f) { var s = this; s.target.target = s.target; s.target.currentTarget = s; f(s.target); delete s.target.currentTarget; delete s.target.target; }, to: function($target, $duration, $vars) { var s = this; s.toNew.push({ target: $target, duration: $duration, vars: $vars }); return s; }, keep: function() { var s = this, t, vs, k; if (s.toNew.length > 0) { t = s.toNew.shift(); if (t.vars.loop) { s.loop = true; } if (s.loop) { vs = {}; for (k in t.vars) { vs[k] = t.vars[k]; } s.to(t.target, t.duration, vs); } s.init(t.target, t.duration, t.vars); return true; } return false; } }; for (var k in p) { LTweenLiteChild.prototype[k] = p[k]; } function LTweenLite() { var s = this; LExtends(s, LObject, []); s.type = "LTweenLite"; s.tweens = []; } LTweenLite.TYPE_FRAME = "type_frame"; LTweenLite.TYPE_TIMER = "type_timer"; p = { count: function() { return this.tweens.length; }, ll_show: function() { var s = this; var i, length = s.tweens.length, t; for (i = 0; i < length; i++) { t = s.tweens[i]; if (t && t.tween && t.tween()) { s.tweens.splice(i, 1); i--; length = s.tweens.length; if (t.keep()) { s.add(t); } } } }, to: function($target, $duration, $vars) { if (!$target) { return; } var s = this; var tween = new LTweenLiteChild({}, 0, {}); s.tweens.push(tween); tween.to($target, $duration, $vars); return tween; }, add: function(tween) { this.tweens.push(tween); }, remove: function(tween) { var s = this; if (typeof tween == UNDEFINED) { return; } for (var i = 0, l = s.tweens.length; i < l; i++) { if (tween.objectIndex == s.tweens[i].objectIndex) { s.tweens.splice(i, 1); break; } } }, removeAll: function() { this.tweens.splice(0, this.tweens.length); }, pauseAll: function() { for (var i = 0, l = this.tweens.length; i < l; i++) { this.tweens[i].pause(); } }, resumeAll: function() { for (var i = 0, l = this.tweens.length; i < l; i++) { this.tweens[i].resume(); } } }; for (var k in p) { LTweenLite.prototype[k] = p[k]; } LTweenLiteTimeline = new LTweenLite(); LGlobal.childList.push(LTweenLiteTimeline); var tween = new LTweenLite(); tween.TYPE_FRAME = LTweenLite.TYPE_FRAME; tween.TYPE_TIMER = LTweenLite.TYPE_TIMER; LGlobal.childList.push(tween); return tween; })(); var LAjax = (function() { function LAjax() { this.responseType = null; } LAjax.prototype = { TEXT: "text", JSON: "json", ARRAY_BUFFER: "arraybuffer", BLOB: "blob", get: function(url, data, oncomplete, onerror) { this.getRequest("GET", url, data, oncomplete, onerror); }, post: function(url, data, oncomplete, onerror) { this.getRequest("POST", url, data, oncomplete, onerror); }, getRequest: function(t, url, d, oncomplete, err) { var s = this, k, data = "", a = ""; s.err = err; var ajax = s.getHttp(); if (!ajax) { return; } if (d) { for (k in d) { data += (a + k + "=" + d[k]); a = "&"; } } if (t.toLowerCase() == "get" && data.length > 0) { url += ((url.indexOf('?') >= 0 ? '&' : '?') + data); data = null; } ajax.open(t, url, true); if (s.responseType) { if (s.responseType == s.JSON) { try { ajax.responseType = s.responseType; } catch (e) { ajax.responseType = s.TEXT; ajax._responseType = "json"; } } else { ajax.responseType = s.responseType; } s.responseType = s.TEXT; } ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { if (ajax.status >= 200 && ajax.status < 300 || ajax.status === 304) { if (oncomplete) { if (ajax._responseType == s.JSON) { ajax._responseType = s.TEXT; oncomplete(JSON.parse(ajax.responseText)); } else if (ajax.responseType == s.ARRAY_BUFFER || ajax.responseType == s.BLOB || ajax.responseType == s.JSON) { oncomplete(ajax.response); } else if (ajax.responseText.length > 0) { oncomplete(ajax.responseText); } else { oncomplete(null); } } } else { if (err) { err(ajax); } } } }; ajax.send(data); }, getHttp: function() { if (typeof XMLHttpRequest != UNDEFINED) { return new XMLHttpRequest(); } try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { if (!this.err) { this.err(e); } } } return false; } }; return new LAjax(); })(); var LStageWebView = (function() { function LStageWebView() { var s = this; LExtends(s, LEventDispatcher, []); s.display = document.createElement("div"); s.iframe = document.createElement("iframe"); s.display.style.position = "absolute"; s.display.style.marginTop = "0px"; s.display.style.marginLeft = "0px"; s.display.style.zIndex = 11; if (LGlobal.ios) { s.display.style.overflow = "auto"; s.display.style.webkitOverflowScrolling = "touch"; } s.display.appendChild(s.iframe); s.idAdded = false; } var p = { loadURL: function(u) { var s = this; s.iframe.src = u; s.iframe.onload = function() { s.dispatchEvent(LEvent.COMPLETE); }; }, show: function() { var s = this; if (!s.idAdded) { LGlobal.object.appendChild(s.display); s.idAdded = true; } if (s.display.style.display == "none") { s.display.style.display = ""; } }, die: function() { LGlobal.object.removeChild(this.display); this.idAdded = false; }, hide: function() { this.display.style.display = "none"; }, setViewPort: function(r) { var s = this, sx = parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width, sy = parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height; s.display.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + ((r.y * sy)>>>0)) + "px"; s.display.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + ((r.x * sx)>>>0)) + "px"; s.iframe.style.width = s.display.style.width = (r.width * sx>>>0) + "px"; s.iframe.style.height = s.display.style.height = (r.height * sy>>>0) + "px"; } }; for (var k in p) { LStageWebView.prototype[k] = p[k]; } return LStageWebView; })(); var FPS = (function() { function FPS() { var s = this; LExtends(s, LSprite, []); if (!LGlobal.fpsStatus) { LGlobal.fpsStatus = { a: 0, b: 0, c: 0, d: 0, e: 0, bitmapData: 0, display: 0, transform: 0, graphics: 0, text: 0, reset: function() { this.a = this.bitmapData; this.b = this.display - 1; this.c = this.transform - 1; this.d = this.graphics - 1; this.e = this.text - 5; this.bitmapData = 0; this.display = 0; this.transform = 0; this.graphics = 0; this.text = 0; } }; } s.fps = []; for (var i = 0; i < 5; i++) { var f = new LTextField(); f.color = "#ffffff"; f.y = i * 20; s.addChild(f); s.fps.push(f); } s.fpsCount = 0; s.fpsTime = (new Date()).getTime(); s.addEventListener(LEvent.ENTER_FRAME, s.showFPS); } FPS.prototype.showFPS = function(e) { var s = e.currentTarget, t, f; s.fpsCount++; t = (new Date()).getTime(); if (t - s.fpsTime < 1000) return; s.fps[0].text = "FPS:" + Math.round(s.fpsCount * 10000 / (t - s.fpsTime)) / 10; f = LGlobal.fpsStatus; s.fps[1].text = "DisplayObject:" + f.c + "/" + f.b; s.fps[2].text = "Draw image:" + f.a; s.fps[3].text = "Drwa graphics:" + f.d; s.fps[4].text = "Draw text:" + f.e; s.fpsTime = t; s.fpsCount = 0; s.graphics.clear(); s.graphics.drawRect(0, "#000000", [0, 0, s.fps[1].getWidth(), 100], true, "#000000"); }; FPS.prototype.die = function() { var s = this; LGlobal.fpsStatus = null; s.callParent("die", arguments); }; return FPS; })(); var LQuadTree = (function() { function LQuadTree(rect) { var s = this; LExtends(s, LObject, []); s.q1 = null; s.q2 = null; s.q3 = null; s.q4 = null; s.parent = null; s.data = []; s.rect = rect; s.root = s; } var p = { createChildren: function(deep) { if (deep == 0) { return; } var s = this; var hw = s.rect.width / 2, hh = s.rect.height / 2; s.q1 = new LQuadTree(new LRectangle(s.rect.x + hw, s.rect.y, hw, hh)); s.q2 = new LQuadTree(new LRectangle(s.rect.x + hw, s.rect.y + hh, hw, hh)); s.q3 = new LQuadTree(new LRectangle(s.rect.x, s.rect.y + hh, hw, hh)); s.q4 = new LQuadTree(new LRectangle(s.rect.x, s.rect.y, hw, hh)); s.q1.parent = s.q2.parent = s.q3.parent = s.q4.parent = s; s.q1.root = s.q2.root = s.q3.root = s.q4.root = s.root; s.q1.createChildren(deep - 1); s.q2.createChildren(deep - 1); s.q3.createChildren(deep - 1); s.q4.createChildren(deep - 1); }, hasChildren: function() { var s = this; return s.q1 && s.q2 && s.q3 && s.q4; }, clear: function() { var s = this; if (s.hasChildren()) { return s.q1.clear() || s.q2.clear() || s.q3.clear() || s.q4.clear(); } else { s.q1 = null; s.q2 = null; s.q3 = null; s.q4 = null; s.parent = null; s.data = []; return s; } }, add: function(v, x, y) { var s = this; if (!s.isIn(x, y)) { return null; } if (s.hasChildren()) { return s.q1.add(v, x, y) || s.q2.add(v, x, y) || s.q3.add(v, x, y) || s.q4.add(v, x, y); } else { s.data.push(v); return s; } }, remove: function(v, x, y) { var s = this; if (!s.isIn(x, y)) { return null; } if (s.hasChildren()) { return s.q1.remove(v, x, y) || s.q2.remove(v, x, y) || s.q3.remove(v, x, y) || s.q4.remove(v, x, y); } else { var index = s.data.indexOf(v); if (index!=-1) { s.data.splice(index, 1); return s; } else { return null; } } }, isIn: function(x, y) { var s = this; return (typeof x == UNDEFINED || (x >= s.rect.x && x < s.rect.right)) && (typeof y == UNDEFINED || (y >= s.rect.y && y < s.rect.bottom)); }, getDataInRect: function(rect) { var s = this; if (!s.rect.intersects(rect)) { return []; } var r = s.data.concat(); if (s.hasChildren()) { r.push.apply(r, s.q1.getDataInRect(rect)); r.push.apply(r, s.q2.getDataInRect(rect)); r.push.apply(r, s.q3.getDataInRect(rect)); r.push.apply(r, s.q4.getDataInRect(rect)); } return r; } }; for (var k in p) { LQuadTree.prototype[k] = p[k]; } return LQuadTree; })(); var LoadingSample1 = (function() { function LoadingSample1(step, b, c) { base(this, LSprite, []); var s = this; s.numberList = new Array([1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1]); s.backgroundColor = b == null ? "#000000" : b; s.color = c == null ? "#ffffff" : c; s.progress = 0; s.step = step == null ? LGlobal.width * 0.5 / 15 : step; s.back = new LSprite(); s.addChild(s.back); s.num = new LSprite(); s.addChild(s.num); s.num.mask = new LSprite(); s.screenX = (LGlobal.width - s.step * 15) / 2; s.screenY = (LGlobal.height - s.step * 5) / 2; s.num.x = s.screenX; s.num.y = s.screenY; s.setProgress(s.progress); } LoadingSample1.prototype.setProgress = function(value) { var s = this, c = LGlobal.canvas; var num_0 = "", num_1, num_2, i; var s_x = s.step; if (value >= 100) { num_0 = s.getNumber(1); num_1 = s.getNumber(0); num_2 = s.getNumber(0); s_x = s.step * 3; } else if (value >= 10) { num_1 = s.getNumber(Math.floor(value / 10)); num_2 = s.getNumber(value % 10); } else { num_1 = s.getNumber(0); num_2 = s.getNumber(value); } s.back.graphics.clear(); s.back.graphics.add(function() { c.beginPath(); c.fillStyle = s.backgroundColor; c.fillRect(0, 0, LGlobal.width, LGlobal.height); c.closePath(); c.fillStyle = s.color; if (value >= 100) { for (i = 0; i < num_0.length; i++) { if (num_0[i] == 0) { continue; } c.fillRect(s.screenX + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } } for (i = 0; i < num_1.length; i++) { if (num_1[i] == 0) { continue; } c.fillRect(s.screenX + s_x + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } for (i = 0; i < num_2.length; i++) { if (num_2[i] == 0) { continue; } c.fillRect(s.screenX + s_x + Math.floor(i % 3) * s.step + s.step * 4, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } c.moveTo(s.screenX + s_x + s.step * 9.7, s.screenY); c.lineTo(s.screenX + s_x + s.step * 10.5, s.screenY); c.lineTo(s.screenX + s_x + s.step * 9.3, s.screenY + s.step * 5); c.lineTo(s.screenX + s_x + s.step * 8.5, s.screenY + s.step * 5); c.lineTo(s.screenX + s_x + s.step * 9.7, s.screenY); c.fill(); c.moveTo(s.screenX + s_x + s.step * 8.5, s.screenY + s.step); c.arc(s.screenX + s_x + s.step * 8.5, s.screenY + s.step, s.step * 0.6, 0, 360 + Math.PI / 180); c.moveTo(s.screenX + s_x + s.step * 10.5, s.screenY + s.step * 4); c.arc(s.screenX + s_x + s.step * 10.5, s.screenY + s.step * 4, s.step * 0.6, 0, 360 + Math.PI / 180); c.fill(); }); s.num.mask.graphics.clear(); s.num.mask.graphics.add(function() { if (value >= 100) { for (i = 0; i < num_0.length; i++) { if (num_0[i] == 0) { continue; } c.rect(s.screenX + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } } for (var i = 0; i < num_1.length; i++) { if (num_1[i] == 0) { continue; } c.rect(s.screenX + s_x + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } for (var i = 0; i < num_2.length; i++) { if (num_2[i] == 0) { continue; } c.rect(s.screenX + s_x + Math.floor(i % 3) * s.step + s.step * 4, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step); } }); c.fillStyle = LGlobal._create_loading_color(); s.num.graphics.clear(); s.num.graphics.drawRect(1, c.fillStyle, [0, s.step * 5 * (100 - value) * 0.01, LGlobal.width, LGlobal.height], true, c.fillStyle); }; LoadingSample1.prototype.getNumber = function(value) { return this.numberList[value]; }; return LoadingSample1; })(); function LoadingSample2(size, background, color) { base(this, LSprite, []); var s = this, c = LGlobal.canvas, t = "Loading...", l; s.backgroundColor = background == null ? "#000000" : background; s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor); if (color == null) color = LGlobal._create_loading_color(); s.color = color; s.progress = 0; s.size = size == null ? LGlobal.height * 0.2 : size; l = new LTextField(); l.text = t; l.size = s.size; l.color = "#ffffff"; l.x = (LGlobal.width - l.getWidth()) / 2; l.y = (LGlobal.height - s.size) / 2; s.addChild(l); s.backLabel = l; l = new LTextField(); l.text = "***%"; l.size = s.size * 0.3; l.color = color; l.x = (LGlobal.width - l.getWidth()) / 2; l.y = (LGlobal.height - s.size) / 2 - s.size * 0.4; s.addChild(l); s.progressLabel = l; l = new LTextField(); l.text = t; l.size = s.size; l.color = s.color; l.x = (LGlobal.width - l.getWidth()) / 2; l.y = (LGlobal.height - s.size) / 2; l.mask = new LGraphics(); s.screenX = l.x; s.screenY = l.y; s.screenWidth = l.getWidth(); s.addChild(l); s.showLabel = l; c.shadowOffsetX = 2; c.shadowOffsetY = 2; c.shadowColor = "blue"; s.setProgress(s.progress); } LoadingSample2.prototype.setProgress = function(value) { var s = this, c = LGlobal.canvas; s.progressLabel.text = value + "%"; s.showLabel.mask.clear(); s.showLabel.mask.drawRect(0, "#000000", [s.screenX, 0, s.screenWidth * value * 0.01, LGlobal.height]); if (value >= 100) { c.shadowOffsetX = 0; c.shadowOffsetY = 0; } }; function LoadingSample3(height, background, color) { base(this, LSprite, []); var s = this, c = LGlobal.canvas; s.backgroundColor = background == null ? "#000000" : background; s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor); if (color == null) color = LGlobal._create_loading_color(); s.color = color; s.progress = 0; s.screenWidth = LGlobal.width * 0.75; s.screenHeight = height == null ? LGlobal.height * 0.1 : height; if (s.screenHeight > 5) s.screenHeight = 5; s.screenX = (LGlobal.width - s.screenWidth) / 2; s.screenY = (LGlobal.height - s.screenHeight) / 2; s.back = new LSprite(); s.addChild(s.back); s.label = new LTextField(); s.label.color = "#ffffff"; s.label.weight = "bolder"; s.label.size = s.screenHeight * 2; s.label.x = s.screenX + (s.screenWidth - s.label.getWidth()) * 0.5; s.label.y = s.screenY - s.screenHeight * 4; s.addChild(s.label); s.star = new Array(); s.addEventListener(LEvent.ENTER_FRAME, s.onframe); s.setProgress(s.progress); } LoadingSample3.prototype.onframe = function(s) { var i, star, l; if (s.progress >= 100) { if (s.star.length > 0) { for (i = 0, l = s.star.length; i < l; i++) { s.removeChild(s.star[i]); } s.star.length = 0; } return; } for (i = 0, l = s.star.length; i < l; i++) { star = s.star[i]; star.alpha -= 0.1; star.x += star.speedx; star.y += star.speedy; if (star.alpha <= 0) { s.star.splice(i, 1); s.removeChild(star); i--, l--; } } if (s.star.length < 10) s.addStar(); }; LoadingSample3.prototype.addStar = function() { var s = this, c = LGlobal.canvas; var star = new LSprite(); var step = 1 + Math.floor(Math.random() * 4); star.graphics.add(function() { c.beginPath(); c.fillStyle = "#ffffff"; c.lineTo(step * 2, step); c.lineTo(step * 4, 0); c.lineTo(step * 3, step * 2); c.lineTo(step * 4, step * 4); c.lineTo(step * 2, step * 3); c.lineTo(0, step * 4); c.lineTo(step, step * 2); c.lineTo(0, 0); c.fill(); }); star.x = s.screenX + s.screenWidth * s.progress * 0.01; star.y = s.screenY; star.speedx = 4 - 8 * Math.random(); star.speedy = 4 - 8 * Math.random(); s.star.push(star); s.addChild(star); }; LoadingSample3.prototype.setProgress = function(value) { var s = this, c = LGlobal.canvas; if (value > 100) value = 100; s.progress = value; s.back.graphics.clear(); s.back.graphics.add(function() { c.beginPath(); c.fillStyle = "#00FFFF"; c.rect(s.screenX - 3, s.screenY - 3, s.screenWidth + 6, s.screenHeight + 6); c.fill(); c.beginPath(); c.fillStyle = "#990033"; c.rect(s.screenX, s.screenY, s.screenWidth, s.screenHeight); c.fill(); c.beginPath(); c.fillStyle = s.color; c.rect(s.screenX, s.screenY, s.screenWidth * value * 0.01, s.screenHeight); c.fill(); }); s.label.text = value + "%"; }; function LoadingSample4(height, background, color) { base(this, LSprite, []); var s = this, c = LGlobal.canvas; s.backgroundColor = background == null ? "#000000" : background; s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor); if (color == null) color = "#FFFFFF"; s.arc = new LSprite(); s.arc.x = LGlobal.width * 0.5; s.arc.y = LGlobal.height * 0.5; s.addChild(s.arc); for (var i = 0; i < 360; i++) { s.arc.graphics.drawArc(1 + i / 36, color, [0, 0, 50, (2 * Math.PI / 360) * i, (2 * Math.PI / 360) * (i + 2)]); } s.progress = 0; s.label = new LTextField(); s.label.color = color; s.label.weight = "bolder"; s.label.size = 18; s.label.x = LGlobal.width * 0.5; s.label.y = LGlobal.height * 0.5 - s.label.getHeight() * 0.5; s.addChild(s.label); var shadow = new LDropShadowFilter(0, 0, "#FFFFFF", 30); s.arc.filters = [shadow]; s.addEventListener(LEvent.ENTER_FRAME, s.onframe); s.setProgress(s.progress); } LoadingSample4.prototype.onframe = function(event) { event.target.arc.rotate += 20; }; LoadingSample4.prototype.setProgress = function(value) { var s = this; if (value > 100) value = 100; s.progress = value; s.label.text = value + "%"; s.label.x = LGlobal.width * 0.5 - s.label.getWidth() * 0.5; }; function LoadingSample5(height, background, color) { base(this, LSprite, []); var s = this, c = LGlobal.canvas; s.backgroundColor = background == null ? "#000000" : background; s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor); if (color == null) color = "#FFFFFF"; s.arc = new LSprite(); s.arc.x = LGlobal.width * 0.5; s.arc.y = LGlobal.height * 0.5; s.addChild(s.arc); var r = 50; for (var i = 0; i < 360; i += 30) { var child = new LSprite(); child.graphics.drawArc(0, color, [r, 0, 7, 0, 2 * Math.PI], true, color); child.rotate = i; child.alpha = 0.1 + i / 360; s.arc.addChild(child); } s.index = 0; s.max = 3; s.progress = 0; s.label = new LTextField(); s.label.color = "#FFFFFF"; s.label.weight = "bolder"; s.label.size = 18; s.label.x = LGlobal.width * 0.5; s.label.y = LGlobal.height * 0.5 - s.label.getHeight() * 0.5; s.addChild(s.label); var shadow = new LDropShadowFilter(0, 0, "#FFFFFF", 30); s.arc.filters = [shadow]; s.addEventListener(LEvent.ENTER_FRAME, s.onframe); s.setProgress(s.progress); } LoadingSample5.prototype.onframe = function(event) { var s = event.target; if (s.index++ 100) value = 100; s.progress = value; s.label.text = value + "%"; s.label.x = LGlobal.width * 0.5 - s.label.getWidth() * 0.5; }; function LoadingSample6(r, color, filterColor) { var self = this; base(self, LSprite, []); self.progress = 0; self.step = 0; self.holeR = r || 10; self.holeAmount = 5; self.holesx = 20; self.loadingBarWidth = self.holeR * 2 * self.holeAmount + self.holesx * (self.holeAmount - 1); self.loadingBarHeight = self.holeR * 2; self.progressColor = color || "#2187e7"; self.filterColor = filterColor || "#00c6ff"; self.backLayer = new LSprite(); self.backLayer.graphics.drawRect(0, "", [0, 0, LGlobal.width, LGlobal.height], true, "#161616"); self.addChild(self.backLayer); self.holeLayer = new LSprite(); self.holeLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5; self.holeLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5; self.addChild(self.holeLayer); self.progressLayer = new LSprite(); self.progressLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5; self.progressLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5; self.addChild(self.progressLayer); self._addHole(); } LoadingSample6.prototype._addHole = function() { var self = this; var amount = self.holeAmount, sx = self.holeR * 2 + self.holesx, r = self.holeR; for (var i = 0; i < amount; i++) { var holeObj = new LSprite(); holeObj.x = i * sx; holeObj.graphics.drawArc(1, "#111", [0, 0, r, 0, 2 * Math.PI], true, "#000"); holeObj.graphics.drawArc(1, "#333", [0, 0, r, 1.7 * Math.PI, 0.7 * Math.PI], false); self.holeLayer.addChild(holeObj); } }; LoadingSample6.prototype.setProgress = function(value) { var self = this; var sx = self.holeR * 2 + self.holesx, r = self.holeR; self.progress = value / 100; var tweenList = new Array(); while (Math.floor(self.progress / 0.2) > self.step) { var cw = r * 2; var ch = cw; var grd = LGlobal.canvas.createLinearGradient(0, - ch * 2, 0, ch); grd.addColorStop(0, "white"); grd.addColorStop(1, self.progressColor); var po = new LSprite(); po.x = self.step * sx; po.scaleX = 0; po.scaleY = 0; po.graphics.drawArc(0, "", [0, 0, r, 0, 2 * Math.PI], true, grd); self.progressLayer.addChild(po); tweenList.push(po); self.step++; } var completeFunc = function(o) { var circleObj = new LSprite(); circleObj.alpha = 0.9; circleObj.x = o.x; circleObj.graphics.drawArc(1, self.filterColor, [0, 0, r, 0, 2 * Math.PI], false); self.progressLayer.addChild(circleObj); var shadow = new LDropShadowFilter(0, 5, self.filterColor, 10); circleObj.filters = [shadow]; LTweenLite.to(circleObj, 0.5, { scaleX: 1.7, scaleY: 1.7, alpha: 0, onComplete: function(s) { s.parent.removeChild(s); } }); }; for (var i = 0; i < tweenList.length; i++) { var o = tweenList[i]; LTweenLite.to(o, 1, { scaleX: 1, scaleY: 1, onComplete: completeFunc }); } }; function LoadingSample7(w, h, color) { var self = this; base(self, LSprite, []); self.progress = 0; self.step = 0; self.holeW = w || 10; self.holeH = h || 30; self.holeAmount = 10; self.holesx = 8; self.loadingBarWidth = self.holeW * self.holeAmount + self.holesx * (self.holeAmount - 1); self.loadingBarHeight = self.holeH; self.progressColor = color || "#2187e7"; self.backLayer = new LSprite(); self.backLayer.graphics.drawRect(0, "", [0, 0, LGlobal.width, LGlobal.height], true, "#161616"); self.addChild(self.backLayer); self.holeLayer = new LSprite(); self.holeLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5; self.holeLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5; self.addChild(self.holeLayer); self.progressLayer = new LSprite(); self.progressLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5; self.progressLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5; self.addChild(self.progressLayer); self._addHole(); } LoadingSample7.prototype._addHole = function() { var self = this; var amount = self.holeAmount, sx = self.holeW + self.holesx, w = self.holeW, h = self.holeH; for (var i = 0; i < amount; i++) { var holeObj = new LSprite(); holeObj.x = i * sx; holeObj.graphics.drawRect(1, "#333", [1, 1, self.holeW, self.holeH], false); holeObj.graphics.drawRect(1, "#111", [0, 0, self.holeW, self.holeH], true, "#000"); self.holeLayer.addChild(holeObj); var grd = LGlobal.canvas.createLinearGradient(0, - h, 0, h); grd.addColorStop(0, "white"); grd.addColorStop(1, self.progressColor); var progressObj = new LSprite(); progressObj.alpha = 0; progressObj.x = i * sx; progressObj.graphics.drawRect(0, "", [0, 0, self.holeW, self.holeH], true, grd); self.progressLayer.addChild(progressObj); } }; LoadingSample7.prototype.setProgress = function(value) { var self = this; self.progress = value / 100; if (Math.floor(self.progress / 0.1) > self.step) { var n = Math.ceil(self.progress / 0.1); if (n > 10) n = 10; for (var i = 0; i < n; i++) { var sc = self.progressLayer.childList; if (sc[i].alpha > 0) continue; var o = self.progressLayer.childList[i]; LTweenLite.to(o, 1, { alpha: 1 }); } self.step++; } }; var LBox2d = (function() { function LBox2d(gravity, doSleep, drawScale) { var s = this; Box2D.Dynamics.b2World.prototype.LAddController = Box2D.Dynamics.b2World.prototype.AddController; Box2D.Dynamics.b2World.prototype.AddController = function(c) { var l = {}, k; for (k in c) { l[k] = c[k]; } if (LBox2d) { LBox2d.m_controllerList = l; } return this.LAddController(c); }; var i, j, b = Box2D, d, a = [b.Collision, b.Common, b.Common.Math, b.Dynamics, b.Dynamics.Contacts, b.Dynamics.Controllers, b.Dynamics.Joints, b.Collision.Shapes]; for (i in a) { for (j in a[i]) { s[j] = a[i][j]; } } if (typeof drawScale == UNDEFINED) { drawScale = 30; } s.stop = false; s.drawScale = 30; s.selectedBody = null; s.mouseJoint = null; s.mousePVec = null; s.contactListener = null; if (typeof gravity == UNDEFINED) { gravity = new s.b2Vec2(0, 9.8); } else { gravity = new s.b2Vec2(gravity[0], gravity[1]); } if (typeof doSleep == UNDEFINED) { doSleep = true; } s.world = new s.b2World(gravity, doSleep); s.removeList = new Array(); if (LGlobal.traceDebug) { d = new s.b2DebugDraw(); d.SetSprite(LGlobal.canvas); d.SetLineThickness(1); d.SetFillAlpha(0.5); d.SetAlpha(1); d.SetDrawScale(s.drawScale); d.SetFlags(s.b2DebugDraw.e_shapeBit | s.b2DebugDraw.e_jointBit); s.world.SetDebugDraw(d); } LGlobal.destroy = true; } LBox2d.prototype = { setEvent: function(t_v, f_v) { var s = this; if (t_v == LEvent.ENTER_FRAME) { s.ll_enterFrame = f_v; return; } if (!s.contactListener) { s.contactListener = new s.b2ContactListener(); s.world.SetContactListener(s.contactListener); } switch (t_v) { case LEvent.END_CONTACT: s.contactListener.EndContact = f_v; break; case LEvent.PRE_SOLVE: s.contactListener.PreSolve = f_v; break; case LEvent.POST_SOLVE: s.contactListener.PostSolve = f_v; break; case LEvent.BEGIN_CONTACT: default: s.contactListener.BeginContact = f_v; } }, setWeldJoint: function(A, B) { var s = this; var j = new s.b2WeldJointDef(); j.Initialize(B, A, B.GetWorldCenter()); return s.world.CreateJoint(j); }, setLineJoint: function(A, B, vec, t, m) { var s = this; var wa = new s.b2Vec2(vec[0], vec[1]); var j = new s.b2LineJointDef(); j.Initialize(A, B, B.GetWorldCenter(), wa); if (t == null) { j.enableLimit = false; } else { j.lowerTranslation = t[0]; j.upperTranslation = t[1]; j.enableLimit = true; } if (m == null) { j.enableMotor = false; } else { j.maxMotorForce = m[0]; j.motorSpeed = m[1]; j.enableMotor = true; } return s.world.CreateJoint(j); }, setGearJoint: function(A, B, ra, r, p) { var s = this; var j = new s.b2GearJointDef(); j.joint1 = r; j.joint2 = p; j.bodyA = A; j.bodyB = B; j.ratio = ra * s.b2Settings.b2_pi / (300 / s.drawScale); return s.world.CreateJoint(j); }, setPrismaticJoint: function(A, B, vec, t, m) { var s = this; var wa = new s.b2Vec2(vec[0], vec[1]); var j = new s.b2PrismaticJointDef(); j.Initialize(B, A, B.GetWorldCenter(), wa); if (t == null) { j.enableLimit = false; } else { j.lowerTranslation = t[0]; j.upperTranslation = t[1]; j.enableLimit = true; } if (m == null) { j.enableMotor = false; } else { j.maxMotorForce = m[0]; j.motorSpeed = m[1]; j.enableMotor = true; } return s.world.CreateJoint(j); }, setRevoluteJoint: function(A, B, a, m) { var s = this; var j = new s.b2RevoluteJointDef(); j.Initialize(A, B, B.GetWorldCenter()); if (a == null) { j.enableLimit = false; } else { j.lowerAngle = a[0] * s.b2Settings.b2_pi / 180; j.upperAngle = a[1] * s.b2Settings.b2_pi / 180; j.enableLimit = true; } if (m == null) { j.enableMotor = false; } else { j.maxMotorTorque = m[0]; j.motorSpeed = m[1]; j.enableMotor = true; } return s.world.CreateJoint(j); }, setDistanceJoint: function(A, B) { var s = this; var j = new s.b2DistanceJointDef(); j.Initialize(A, B, A.GetWorldCenter(), B.GetWorldCenter()); return s.world.CreateJoint(j); }, setPulleyJoint: function(A, B, vA, vB, ratio) { var s = this; var a1 = A.GetWorldCenter(); var a2 = B.GetWorldCenter(); var g1 = new s.b2Vec2(a1.x + (vA[0] / s.drawScale), a1.y + (vA[1] / s.drawScale)); var g2 = new s.b2Vec2(a2.x + (vB[0] / s.drawScale), a2.y + (vB[1] / s.drawScale)); var j = new s.b2PulleyJointDef(); j.Initialize(A, B, g1, g2, a1, a2, ratio); j.maxLengthA = vA[2] / s.drawScale; j.maxLengthB = vB[2] / s.drawScale; return s.world.CreateJoint(j); }, addCircle: function(r, cx, cy, t, d, f, e) { var s = this; s.bodyDef = new s.b2BodyDef; s.bodyDef.type = t; s.fixDef = new s.b2FixtureDef; s.fixDef.density = d; s.fixDef.friction = f; s.fixDef.restitution = e; s.fixDef.shape = new s.b2CircleShape(r); s.bodyDef.position.x = cx; s.bodyDef.position.y = cy; var shape = s.world.CreateBody(s.bodyDef); shape.CreateFixture(s.fixDef); return shape; }, addPolygon: function(w, h, cx, cy, type, d, f, e) { var s = this; s.bodyDef = new s.b2BodyDef; s.bodyDef.type = type; s.fixDef = new s.b2FixtureDef; s.fixDef.density = d; s.fixDef.friction = f; s.fixDef.restitution = e; s.fixDef.shape = new s.b2PolygonShape; s.fixDef.shape.SetAsBox(w, h); s.bodyDef.position.x = cx; s.bodyDef.position.y = cy; var shape = s.world.CreateBody(s.bodyDef); shape.CreateFixture(s.fixDef); return shape; }, addVertices: function(vertices, type, d, f, e) { var s = this, i, l; s.bodyDef = new s.b2BodyDef; s.bodyDef.type = type; var shape = s.world.CreateBody(s.bodyDef); for (i = 0, l = vertices.length; i < l; i++) { s.createShapeAsArray(shape, vertices[i], type, d, f, e); } return shape; }, createShapeAsArray: function(c, vertices, type, d, f, e) { var s = this; var shape = new s.b2PolygonShape(); var sv = s.createVerticesArray(vertices); shape.SetAsArray(sv, 0); var def = new s.b2FixtureDef(); def.shape = shape; def.density = d; def.friction = f; def.restitution = e; c.CreateFixture(def); }, createVerticesArray: function(a) { var s = this, i, l; var v = new Array(); if (a.length < 3) { return v; } for (i = 0, l = a.length; i < l; i++) { v.push(new s.b2Vec2(a[i][0] / s.drawScale, a[i][1] / s.drawScale)); } return v; }, getBodyAtMouse: function(mouseX, mouseY) { var s = this; s.mousePVec = new s.b2Vec2(mouseX, mouseY); var aabb = new s.b2AABB(); aabb.lowerBound.Set(mouseX - 0.001, mouseY - 0.001); aabb.upperBound.Set(mouseX + 0.001, mouseY + 0.001); s.selectedBody = null; s.world.QueryAABB(s.getBodyCallBack, aabb); return s.selectedBody; }, getBodyCallBack: function(fixture) { var s = LGlobal.box2d; if (fixture.GetBody().GetType() != s.b2Body.b2_staticBody) { if (fixture.GetShape().TestPoint(fixture.GetBody().GetTransform(), s.mousePVec)) { s.selectedBody = fixture.GetBody(); return false; } } return true; }, ll_show: function() { var s = this, k = null; for (k in s.removeList) { s.world.DestroyBody(s.removeList[k]); } s.removeList.splice(0, s.removeList.length); if (s.stop) { return; } if (s.ll_enterFrame) { s.ll_enterFrame({ target: s }); } s.world.Step(1 / 30, 10, 10); s.world.ClearForces(); if (LGlobal.traceDebug) { s.world.DrawDebugData(); } }, synchronous: function() { var s = this; var parent = null, child, position = null, cx = 0, cy = 0, currentBody, joint; for (currentBody = s.world.GetBodyList(); currentBody; currentBody = currentBody.GetNext() ) { child = currentBody.GetUserData(); if (child) { if (position == null) { parent = child.parent; cx = currentBody.GetPosition().x; cy = currentBody.GetPosition().y; } currentBody.SetPosition(new s.b2Vec2((child.x + child.rotatex + parent.x) / s.drawScale, (child.y + child.rotatey + parent.y) / s.drawScale)); if (position == null) { position = { x: (currentBody.GetPosition().x - cx), y: (currentBody.GetPosition().y - cy) }; } } } for (joint = s.world.GetJointList(); joint; joint = joint.GetNext() ) { if (joint.m_groundAnchor1) { joint.m_groundAnchor1.x += position.x; joint.m_groundAnchor1.y += position.y; } if (joint.m_groundAnchor2) { joint.m_groundAnchor2.x += position.x; joint.m_groundAnchor2.y += position.y; } } if (LBox2d.m_controllerList && s.world.m_controllerList && parent) { LGlobal.box2d.world.m_controllerList.offset = LBox2d.m_controllerList.offset - parent.y / LGlobal.box2d.drawScale; } } }; return LBox2d; })(); LSprite.prototype.setBodyMouseJoint = function(value) { var s = this; if (!s.box2dBody) { return; } s.box2dBody.mouseJoint = value; }; LSprite.prototype.clearBody = function(value) { var s = this; if (!s.box2dBody) { return; } LGlobal.box2d.removeList.push(s.box2dBody); s.box2dBody = null; }; LSprite.prototype.addBodyCircle = function(radius, cx, cy, type, density, friction, restitution) { var s = this; s.rotatex = radius; s.rotatey = radius; s.box2dBody = LGlobal.box2d.addCircle(radius / LGlobal.box2d.drawScale, (s.x + cx) / LGlobal.box2d.drawScale, (s.y + cy) / LGlobal.box2d.drawScale, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density == null ? 0.5 : density, friction == null ? 0.4 : friction, restitution == null ? 0.8 : restitution); s.box2dBody.SetUserData(s); }; LSprite.prototype.addBodyPolygon = function(w, h, type, density, friction, restitution) { var s = this; s.rotatex = w / 2; s.rotatey = h / 2; s.box2dBody = LGlobal.box2d.addPolygon(w * 0.5 / LGlobal.box2d.drawScale, h * 0.5 / LGlobal.box2d.drawScale, s.x / LGlobal.box2d.drawScale, s.y / LGlobal.box2d.drawScale, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density == null ? 0.5 : density, friction == null ? 0.4 : friction, restitution == null ? 0.8 : restitution); s.box2dBody.SetUserData(s); }; LSprite.prototype.addBodyVertices = function(vertices, cx, cy, type, density, friction, restitution) { var s = this; s.rotatex = 0; s.rotatey = 0; s.box2dBody = LGlobal.box2d.addVertices(vertices, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density, friction, restitution); s.box2dBody.SetUserData(s); s.box2dBody.SetPosition(new LGlobal.box2d.b2Vec2((s.x + cx) / LGlobal.box2d.drawScale, (s.y + cy) / LGlobal.box2d.drawScale)); }; LGlobal.mouseJoint_start = function(eve) { if (!LGlobal.IS_MOUSE_DOWN ||!LGlobal.box2d || LGlobal.box2d.mouseJoint || LGlobal.box2d.stop) { return; } var mX = eve.offsetX / LGlobal.box2d.drawScale, mY = eve.offsetY / LGlobal.box2d.drawScale, b = LGlobal.box2d.getBodyAtMouse(mX, mY); if (b && b.mouseJoint) { var m = new LGlobal.box2d.b2MouseJointDef(); m.bodyA = LGlobal.box2d.world.GetGroundBody(); m.bodyB = b; m.target.Set(mX, mY); m.collideConnected = true; m.maxForce = 300000.0 * b.GetMass(); LGlobal.box2d.mouseJoint = LGlobal.box2d.world.CreateJoint(m); b.SetAwake(true); }; }; LGlobal.mouseJoint_move = function(eve) { if (!LGlobal.IS_MOUSE_DOWN ||!LGlobal.box2d ||!LGlobal.box2d.mouseJoint) { return; } mX = eve.offsetX / LGlobal.box2d.drawScale, mY = eve.offsetY / LGlobal.box2d.drawScale; LGlobal.box2d.mouseJoint.SetTarget(new LGlobal.box2d.b2Vec2(mX, mY)); }; LGlobal.mouseJoint_end = function() { if (LGlobal.box2d != null && LGlobal.box2d.mouseJoint) { LGlobal.box2d.world.DestroyJoint(LGlobal.box2d.mouseJoint); LGlobal.box2d.mouseJoint = null; } }; var LTransition = (function() { function LTransition(displayObject, transObj) { this.child = displayObject; this.trans = transObj; } LTransition.prototype = { startTransition: function() { var self = this; switch (self.trans.type) { case LTransition.Blinds: self.blinds(); break; case LTransition.Fade: self.fade(); break; case LTransition.Fly: self.fly(); break; case LTransition.Iris: self.iris(); break; case LTransition.Squeeze: self.squeeze(); break; case LTransition.Wipe: self.wipe(); break; case LTransition.Zoom: self.zoom(); break; case LTransition.PixelDissolve: self.pixelDissolve(); break; case LTransition.Curtain: self.curtain(); break; default: throw ("the type is not exists."); } }, blindsComplete: function(self) { if (self.trans.direction == LTransition.OUT) { self.child.mask.clear(); } else { self.blindsUpdateRun(); } self.child.mask = null; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, blindsUpdateRun: function() { var self = this, g = self.child.mask, c = LGlobal.canvas; g.clear(); if (self.trans.dimension) { g.add(function() { c.save(); for (var i = 0; i < self.trans.numStrips; i++) { c.rect(i * self.maxSize, 0, self.blindsSize, self.child.getHeight()); } c.restore(); }); } else { g.add(function() { c.save(); for (var i = 0; i < self.trans.numStrips; i++) { c.rect(0, 0 + i * self.maxSize, self.child.getWidth(), self.blindsSize); } c.restore(); }); } }, blindsUpdate: function(self) { self.blindsUpdateRun(); if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, blinds: function() { var self = this; if (!self.trans.numStrips) self.trans.numStrips = 1; self.blindsSize = 0; if (self.trans.dimension) { self.maxSize = self.child.getWidth() / self.trans.numStrips>>0; } else { self.maxSize = self.child.getHeight() / self.trans.numStrips>>0; } var g = new LGraphics(); self.child.mask = g; var toSize = self.maxSize; if (self.trans.direction == LTransition.OUT) { self.blindsSize = self.maxSize; toSize = 0; } LTweenLite.to(self, self.trans.duration, { blindsSize: toSize, onComplete: self.blindsComplete, onUpdate: self.blindsUpdate, ease: self.trans.easing }); }, fadeComplete: function(self) { self.child.alpha = self.alpha; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, fadeUpdate: function(self) { self.child.alpha = self.alpha; if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, fade: function() { var self = this; var toAlpha = 1; self.alpha = 0; if (self.trans.direction == LTransition.OUT) { self.alpha = 1; toAlpha = 0; } self.child.alpha = self.alpha; LTweenLite.to(self, self.trans.duration, { alpha: toAlpha, onComplete: self.fadeComplete, onUpdate: self.fadeUpdate, ease: self.trans.easing }); }, flyComplete: function(self) { self.child.x = self.x; self.child.y = self.y; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, flyUpdate: function(self) { self.child.x = self.x; self.child.y = self.y; if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, fly: function() { var self = this; var toX = self.child.x; var toY = self.child.y; switch (self.trans.startPoint) { case 1: self.x =- self.child.getWidth(); self.y =- self.child.getHeight(); break; case 2: self.x = (LGlobal.width - self.child.getWidth()) * 0.5; self.y =- self.child.getHeight(); break; case 3: self.x = LGlobal.width; self.y =- self.child.getHeight(); break; case 4: self.x =- self.child.getWidth(); self.y = (LGlobal.height - self.child.getHeight()) * 0.5; break; case 6: self.x = LGlobal.width; self.y = (LGlobal.height - self.child.getHeight()) * 0.5; break; case 7: self.x =- self.child.getWidth(); self.y = LGlobal.height; break; case 8: self.x = (LGlobal.width - self.child.getWidth()) * 0.5; self.y = LGlobal.height; break; case 9: self.x = LGlobal.width; self.y = LGlobal.height; break; case 5: default: self.x = (LGlobal.width - self.child.getWidth()) * 0.5; self.y = (LGlobal.height - self.child.getHeight()) * 0.5; } if (self.trans.direction == LTransition.OUT) { var toX = self.x; var toY = self.y; self.x = self.child.x; self.y = self.child.y; } else { self.child.x = self.x; self.child.y = self.y; } LTweenLite.to(self, self.trans.duration, { x: toX, y: toY, onComplete: self.flyComplete, onUpdate: self.flyUpdate, ease: self.trans.easing }); }, irisComplete: function(self) { if (self.trans.direction == LTransition.OUT) { self.child.mask.clear(); } else { self.irisUpdateRun(); } self.child.mask = null; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, irisUpdateRun: function() { var self = this, g = self.child.mask, c = LGlobal.canvas; g.clear(); if (self.trans.shape == LIris.CIRCLE) { g.drawArc(0, "#000000", [self.x, self.y, self.r, 0, Math.PI * 2]); } else { g.drawRect(0, "#000000", [self.x + self.sLeft, self.y + self.sTop, self.width, self.height]); } }, irisUpdate: function(self) { self.irisUpdateRun(); if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, iris: function() { var self = this; self.sLeft = 0; self.sTop = 0; self.width = 0; self.height = 0; self.x = 0; self.y = 0; self.r = 0; self.eWidth = self.child.getWidth(); self.eHeight = self.child.getHeight(); switch (self.trans.startPoint) { case 1: self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight); break; case 2: self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + self.eHeight * self.eHeight); self.x = self.child.getWidth() * 0.5; break; case 3: self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight); self.x = self.child.getWidth(); break; case 4: self.eR = Math.sqrt(self.eWidth * self.eWidth + (self.eHeight * 0.5) * (self.eHeight * 0.5)); self.y = self.child.getHeight() * 0.5; break; case 6: self.eR = Math.sqrt(self.eWidth * self.eWidth + (self.eHeight * 0.5) * (self.eHeight * 0.5)); self.x = self.child.getWidth(); self.y = self.child.getHeight() * 0.5; break; case 7: self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight); self.y = self.child.getHeight(); break; case 8: self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + self.eHeight * self.eHeight); self.x = self.child.getWidth() * 0.5; self.y = self.child.getHeight(); break; case 9: self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight); self.x = self.child.getWidth(); self.y = self.child.getHeight(); break; case 5: default: self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + (self.eHeight * 0.5) * (self.eHeight * 0.5)); self.x = self.child.getWidth() * 0.5; self.y = self.child.getHeight() * 0.5; } self.eLeft =- self.x; self.eTop =- self.y; var g = new LGraphics(); self.child.mask = g; var toSize = self.maxSize; if (self.trans.direction == LTransition.OUT) { self.sLeft = self.eLeft; self.sTop = self.eTop; self.eLeft = 0; self.eTop = 0; self.width = self.eWidth; self.height = self.eHeight; self.eWidth = 0; self.eHeight = 0; self.r = self.eR; self.eR = 0; } LTweenLite.to(self, self.trans.duration, { width: self.eWidth, height: self.eHeight, sLeft: self.eLeft, sTop: self.eTop, r: self.eR, onComplete: self.irisComplete, onUpdate: self.irisUpdate, ease: self.trans.easing }); }, curtainComplete: function(self) { if (self.trans.direction == LTransition.OUT) { self.child.mask.clear(); } else { self.curtainUpdateRun(); } self.child.mask = null; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, curtainUpdateRun: function() { var self = this, g = self.child.mask, c = LGlobal.canvas; g.clear(); if (self.trans.dimension) { g.add(function() { c.save(); c.rect(0, 0, self.width, self.child.getHeight()); c.rect(self.child.getWidth() - self.width, 0, self.width, self.child.getHeight()); c.restore(); }); } else { g.add(function() { c.save(); c.rect(0, 0, self.child.getWidth(), self.height); c.rect(0, self.child.getHeight() - self.height, self.child.getWidth(), self.height); c.restore(); }); } }, curtainUpdate: function(self) { self.curtainUpdateRun(); if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, curtain: function() { var self = this; var eW = self.child.getWidth() * 0.5; var eH = self.child.getHeight() * 0.5; if (self.trans.dimension) { eH = 0; } else { eW = 0; } self.width = 0; self.height = 0; var g = new LGraphics(); self.child.mask = g; var toSize = self.maxSize; if (self.trans.direction == LTransition.OUT) { self.width = eW; self.height = eH; eW = 0; eH = 0; } LTweenLite.to(self, self.trans.duration, { width: eW, height: eH, onComplete: self.curtainComplete, onUpdate: self.curtainUpdate, ease: self.trans.easing }); }, squeezeComplete: function(self) { self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, squeezeUpdate: function(self) { self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, squeeze: function() { var self = this; var toScaleX = 1, toScaleY = 1; self.scaleX = 0, self.scaleY = 0; if (self.trans.dimension) { self.scaleX = 1; } else { self.scaleY = 1; } if (self.trans.direction == LTransition.OUT) { toScaleX = self.scaleX, toScaleY = self.scaleY; self.scaleX = 1, self.scaleY = 1; } self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; LTweenLite.to(self, self.trans.duration, { scaleX: toScaleX, scaleY: toScaleY, onComplete: self.squeezeComplete, onUpdate: self.squeezeUpdate, ease: self.trans.easing }); }, zoomComplete: function(self) { self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, zoomUpdate: function(self) { self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, zoom: function() { var self = this; var toScaleX = 1, toScaleY = 1; self.scaleX = 0, self.scaleY = 0; if (self.trans.direction == LTransition.OUT) { toScaleX = 0, toScaleY = 0; self.scaleX = 1, self.scaleY = 1; } self.child.scaleX = self.scaleX; self.child.scaleY = self.scaleY; LTweenLite.to(self, self.trans.duration, { scaleX: toScaleX, scaleY: toScaleY, onComplete: self.zoomComplete, onUpdate: self.zoomUpdate, ease: self.trans.easing }); }, wipeComplete: function(self) { if (self.trans.direction == LTransition.OUT) { self.child.mask.clear(); } else { self.wipeUpdateRun(); } self.child.mask = null; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, wipeUpdateRun: function() { var self = this, g = self.child.mask, c = LGlobal.canvas; g.clear(); g.drawVertices(0, "#000000", [[self.leftTopX, self.leftTopY], [self.leftBottomX, self.leftBottomY], [self.rightBottomX, self.rightBottomY], [self.rightTopX, self.rightTopY]]); }, wipeUpdate: function(self) { self.wipeUpdateRun(); if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, wipe: function() { var self = this, w = self.child.getWidth(), h = self.child.getHeight(), ltX = self.leftTopX = 0, ltY = self.leftTopY = 0, lbX = self.leftBottomX = 0, lbY = self.leftBottomY = h, rtX = self.rightTopX = w, rtY = self.rightTopY = 0, rbX = self.rightBottomX = w, rbY = self.rightBottomY = h; switch (self.trans.startPoint) { case 1: ltX = self.leftTopX =- w; lbX = self.leftBottomX =- w * 2; self.rightTopX = 0; rtX = w * 2; self.rightBottomX =- w; rbX = w; break; case 2: ltY = self.leftTopY =- h; self.leftBottomY = 0; lbY = h; rtY = self.rightTopY =- h; self.rightBottomY = 0; rbY = h; break; case 3: self.leftTopX = w; ltX =- w; self.leftBottomX = w * 2; lbX = 0; rtX = self.rightTopX = w * 2; rbX = self.rightBottomX = w * 3; break; case 4: self.rightTopX = 0; rtX = w; self.rightBottomX = 0; rbX = w; break; case 6: self.leftTopX = w; ltX = 0; self.leftBottomX = w; lbX = 0; break; case 7: lbX = self.leftBottomX =- w; ltX = self.leftTopX =- w * 2; self.rightBottomX = 0; rbX = w * 2; self.rightTopX =- w; rtX = w; break; case 8: lbY = self.leftBottomY = h; self.leftTopY = h; ltY = 0; rbY = self.rightBottomY = h; self.rightTopY = h; rtY = 0; break; case 9: self.leftBottomX = w; lbX =- w; self.leftTopX = w * 2; ltX = 0; rbX = self.rightBottomX = w * 2; rtX = self.rightTopX = w * 3; break; case 5: default: self.leftTopX = w * 0.5; self.leftTopY = h * 0.5; self.rightTopX = w * 0.5; self.rightTopY = h * 0.5; self.leftBottomX = w * 0.5; self.leftBottomY = h * 0.5; self.rightBottomX = w * 0.5; self.rightBottomY = h * 0.5; ltX = 0, ltY = 0; lbX = 0, lbY = h; rtX = w, rtY = 0; rbX = w, rbY = h; } var g = new LGraphics(); self.child.mask = g; if (self.trans.direction == LTransition.OUT) { var oltX = ltX, oltY = ltY, olbX = lbX, olbY = lbY, ortX = rtX, ortY = rtY, orbX = rbX, orbY = rbY; ltX = self.leftTopX, ltY = self.leftTopY, lbX = self.leftBottomX, lbY = self.leftBottomY, rtX = self.rightTopX, rtY = self.rightTopY, rbX = self.rightBottomX, rbY = self.rightBottomY; self.leftTopX = oltX, self.leftTopY = oltY, self.leftBottomX = olbX, self.leftBottomY = olbY, self.rightTopX = ortX, self.rightTopY = ortY, self.rightBottomX = orbX, self.rightBottomY = orbY; } LTweenLite.to(self, self.trans.duration, { leftTopX: ltX, leftTopY: ltY, leftBottomX: lbX, leftBottomY: lbY, rightTopX: rtX, rightTopY: rtY, rightBottomX: rbX, rightBottomY: rbY, onComplete: self.wipeComplete, onUpdate: self.wipeUpdate, ease: self.trans.easing }); }, pixelDissolveComplete: function(self) { if (self.trans.direction == LTransition.OUT) { self.child.mask.clear(); } else { self.pixelDissolveUpdateRun(); } self.child.mask = null; if (self.trans.onComplete) { self.trans.onComplete(self.child); } }, pixelDissolveUpdateRun: function() { var self = this, g = self.child.mask, c = LGlobal.canvas, list; g.clear(); g.add(function() { c.save(); for (var i = 0; i < self.index; i++) { list = self.list[i]; c.rect(list[0] * self.w, list[1] * self.h, self.w, self.h); } c.restore(); }); }, pixelDissolveUpdate: function(self) { self.pixelDissolveUpdateRun(); if (self.trans.onUpdate) { self.trans.onUpdate(self.child); } }, pixelDissolve: function() { var self = this; var g = new LGraphics(); self.child.mask = g; LGlobal.mg = g; self.w = self.child.getWidth() / self.trans.xSections, self.h = self.child.getHeight() / self.trans.ySections; self.list = []; for (var i = 0; i < self.trans.xSections; i++) { for (var j = 0; j < self.trans.ySections; j++) { self.list.push([i, j]); } } self.index = 0; var to = self.trans.xSections * self.trans.ySections; if (self.trans.direction == LTransition.OUT) { self.index = to; to = 0; } self.list = self.list.sort(function(a, b) { return Math.random() > 0.5; }); self.pixelDissolveUpdateRun(); LTweenLite.to(self, self.trans.duration, { index: to, onComplete: self.pixelDissolveComplete, onUpdate: self.pixelDissolveUpdate, ease: self.trans.easing }); } }; LTransition.IN = "in"; LTransition.OUT = "out"; LTransition.Blinds = 1; LTransition.Fade = 2; LTransition.Fly = 3; LTransition.Iris = 4; LTransition.Curtain = 5; LTransition.PixelDissolve = 6; LTransition.Squeeze = 7; LTransition.Wipe = 8; LTransition.Zoom = 9; return LTransition; })(); var LIris = (function() { function LIris() {} LIris.SQUARE = 0; LIris.CIRCLE = 1; return LIris; })(); var LTransitionManager = (function() { function LTransitionManager(displayObject) { this.child = displayObject; } LTransitionManager.prototype = { startTransition: function(transParams) { return LTransitionManager.start(this.child, transParams); } }; LTransitionManager.start = function(displayObject, transParams) { var trans = new LTransition(displayObject, transParams); trans.startTransition(); return trans; }; return LTransitionManager; })(); var LFlash = (function() { function LFlash() {} LFlash.SpriteSheetConvert = function(frames) { var result = [], child; for (var i = 0; i < frames.length; i++) { child = frames[i]; result.push({ x: child.frame.x, sx: child.spriteSourceSize.x, y: child.frame.y, sy: child.spriteSourceSize.y, width: child.frame.w, height: child.frame.h }); } return result; }; return LFlash; })(); var LString = { trim: function(s) { return s.replace(/(^\s*)|(\s*$)|(\n)/g, ""); }, leftTrim: function(s) { return s.replace(/(^\s*)|(^\n)/g, ""); }, rightTrim: function(s) { return s.replace(/(\s*$)|(\n$)/g, ""); }, numberFormat: function(s, l) { if (!l || l < 1) { l = 3; } s = String(s).split("."); s[0] = s[0].replace(new RegExp('(\\d)(?=(\\d{' + l + '})+$)', 'ig'), "$1,"); return s.join("."); }, isString: function(s) { var p = /^([a-z]|[A-Z])+$/; return p.exec(s); }, isNumber: function(s) { var p = /^\d+\.\d+$/; return p.exec(s); }, isInt: function(s) { var p = /^\d+$/; return p.exec(s); } }; LMath = LString;