Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Smokescreen v0.1.2 - Chris Smoak <chris.smoak@gmail.com>
- * A Flash player written in JavaScript.
- *
- * Copyright 2010, RevShock
- *
- * Date: 2010-05-27
- */
- var Smokescreen = function (url, element, width, height, name, params) {
- goog = {};
- goog.global = this;
- goog.provide = function (a) {
- a = a.split(".");
- var b = goog.global;
- for (var c in a) {
- var d = a[c];
- d in b || (b[d] = {});
- b = b[d]
- }
- };
- goog.require = function () {};
- var fljs = {},
- BrowserDetect = {
- init: function () {
- this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
- this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
- this.OS = this.searchString(this.dataOS) || "an unknown OS"
- },
- searchString: function (a) {
- for (var b = 0; b < a.length; b++) {
- var c = a[b].string,
- d = a[b].prop;
- this.versionSearchString = a[b].versionSearch || a[b].identity;
- if (c) {
- if (c.indexOf(a[b].subString) != -1) return a[b].identity
- } else if (d) return a[b].identity
- }
- },
- searchVersion: function (a) {
- var b = a.indexOf(this.versionSearchString);
- if (b != -1) return parseFloat(a.substring(b + this.versionSearchString.length + 1))
- },
- dataBrowser: [{
- string: navigator.userAgent,
- subString: "Chrome",
- identity: "Chrome"},{
- string: navigator.vendor,
- subString: "Apple",
- identity: "Safari",
- versionSearch: "Version"},{
- prop: window.opera,
- identity: "Opera"},{
- string: navigator.userAgent,
- subString: "Firefox",
- identity: "Firefox"},{
- string: navigator.userAgent,
- subString: "MSIE",
- identity: "Explorer",
- versionSearch: "MSIE"}],
- dataOS: [{
- string: navigator.platform,
- subString: "Win",
- identity: "Windows"},{
- string: navigator.userAgent,
- subString: "iPad",
- identity: "iPad"},{
- string: navigator.userAgent,
- subString: "iPhone",
- identity: "iPhone"},{
- string: navigator.platform,
- subString: "Mac",
- identity: "Mac"}]
- };
- BrowserDetect.init();
- fljs.agent = BrowserDetect;
- fljs.addConstants = function (a, b) {
- for (var c in b) a[c] = b[c]
- };
- fljs.addMethods = function (a, b) {
- for (var c in b) a.prototype[c] = b[c]
- };
- fljs.addStaticMethods = function (a, b) {
- for (var c in b) a[c] = b[c]
- };
- fljs.addEvents = function (a, b) {
- for (var c in b) {
- var d = b[c],
- e = d[0],
- f = d[2];
- a.prototype["__add" + e] = d[1];
- a.prototype["__remove" + e] = f
- }
- };
- fljs.now = function () {
- return +new Date
- };
- fljs.inherits = function (a, b) {
- function c() {}
- c.prototype = b.prototype;
- a.superClass_ = b.prototype;
- a.prototype = new c;
- a.prototype.constructor = a
- };
- fljs.base = function (a, b) {
- var c = arguments.callee.caller;
- if (c.superClass_) return c.superClass_.constructor.apply(a, Array.prototype.slice.call(arguments, 1));
- for (var d = Array.prototype.slice.call(arguments, 2), e = false, f = a.constructor; f; f = f.superClass_ && f.superClass_.constructor) if (f.prototype[b] === c) e = true;
- else if (e) return f.prototype[b].apply(a, d);
- if (a[b] === c) return a.constructor.prototype[b].apply(a, d);
- else throw Error("invalid base call");
- };
- fljs.bind = function (a, b) {
- var c = b || this;
- if (arguments.length > 2) {
- var d = Array.prototype.slice.call(arguments, 2);
- return function () {
- var e = Array.prototype.slice.call(arguments);
- Array.prototype.unshift.apply(e, d);
- return a.apply(c, e)
- }
- } else return function () {
- return a.apply(c, arguments)
- }
- };
- fljs.DummyConsole = function () {};
- fljs.addMethods(fljs.DummyConsole, {
- info: function () {}
- });
- fljs.DummyConsole._instance = new fljs.DummyConsole;
- fljs.console = function () {
- return fljs.debug ? console : fljs.DummyConsole._instance
- };
- fljs.ext = {};
- var flash = {};
- flash.display = {};
- flash.display.BlendMode = function () {};
- fljs.addConstants(flash.display.BlendMode, {
- ADD: "add",
- ALPHA: "alpha",
- DARKEN: "darken",
- DIFFERENCE: "difference",
- ERASE: "erase",
- HARDLIGHT: "hardlight",
- INVERT: "invert",
- LAYER: "layer",
- LIGHTEN: "lighten",
- MULTIPLY: "multiply",
- NORMAL: "normal",
- OVERLAY: "overlay",
- SCREEN: "screen",
- SUBTRACT: "subtract"
- });
- flash.events = {};
- flash.events.Event = function (a, b, c) {
- this.type = a;
- this.bubbles = b;
- this.cancelable = c
- };
- fljs.addConstants(flash.events.Event, {
- ACTIVATE: "activate",
- ADDED: "added",
- ADDED_TO_STAGE: "addedToStage",
- CANCEL: "cancel",
- CHANGE: "change",
- CLOSE: "close",
- COMPLETE: "complete",
- CONNECT: "connect",
- DEACTIVATE: "deactivate",
- DISPLAYING: "displaying",
- ENTER_FRAME: "enterFrame",
- FULLSCREEN: "fullscreen",
- ID3: "id3",
- INIT: "init",
- MOUSE_LEAVE: "mouseLeave",
- OPEN: "open",
- REMOVED: "removed",
- REMOVED_FROM_STAGE: "removedFromStage",
- RENDER: "render",
- RESIZE: "resize",
- SCROLL: "scroll",
- SELECT: "select",
- SOUND_COMPLETE: "soundComplete",
- TAB_CHILDREN_CHANGE: "tabChildrenChange",
- TAB_ENABLED_CHANGE: "tabEnabledChange",
- TAB_INDEX_CHANGE: "tabIndexChange",
- UNLOAD: "unload"
- });
- fljs.addMethods(flash.events.Event, {
- clone: function () {},
- formatToString: function (a) {
- return "[" + a + this.buildPropertiesString_(arguments) + "]"
- },
- buildPropertiesString_: function (a) {
- for (var b = [], c = 0; c < a.length; c++) c > 0 && b.push(a[c] + "=" + this[a[c]]);
- return b.join(" ")
- },
- isDefaultPrevented: function () {
- return this.returnValue_
- },
- stopImmediatePropagation: function () {
- this.stopPropagation()
- },
- toString: function () {
- return this.formatToString("Event", "type", "bubbles", "cancelable")
- }
- });
- flash.events.MouseEvent = function (a, b, c, d, e, f, g, j, h, m, k, l, n, p) {
- flash.events.Event.call(this, a, b, c);
- this.localX = d;
- this.localY = e;
- this.relatedObject = f;
- this.ctrlKey = g;
- this.altKey = j;
- this.shiftKey = h;
- this.buttonDown = m;
- this.delta = k;
- this.commandKey = l;
- this.controlKey = n;
- this.clickCount = p
- };
- fljs.inherits(flash.events.MouseEvent, flash.events.Event);
- fljs.addConstants(flash.events.MouseEvent, {
- CLICK: "click",
- DOUBLE_CLICK: "doubleClick",
- MOUSE_DOWN: "mouseDown",
- MOUSE_MOVE: "mouseMove",
- MOUSE_OUT: "mouseOut",
- MOUSE_OVER: "mouseOver",
- MOUSE_UP: "mouseUp",
- MOUSE_WHEEL: "mouseWheel",
- ROLL_OUT: "rollOut",
- ROLL_OVER: "rollOver"
- });
- flash.events.FullScreenEvent = function () {};
- fljs.addConstants(flash.events.FullScreenEvent, {
- FULL_SCREEN: "fullScreen"
- });
- flash.events.KeyboardEvent = function (a, b, c, d, e, f, g, j, h) {
- flash.events.Event(a, b, c);
- this.charCode = d;
- this.keyCode = e;
- this.keyLocation = f;
- this.ctrlKey = g;
- this.altKey = j;
- this.shiftKey = h
- };
- fljs.inherits(flash.events.KeyboardEvent, flash.events.Event);
- fljs.addConstants(flash.events.KeyboardEvent, {
- KEY_DOWN: "keyDown",
- KEY_UP: "keyUp"
- });
- flash.events.FocusEvent = function () {};
- fljs.addConstants(flash.events.FocusEvent, {
- KEY_FOCUS_CHANGE: "keyFocusChange",
- MOUSE_FOCUS_CHANGE: "mouseFocusChange"
- });
- flash.events.IEventDispatcher = function () {};
- fljs.addMethods(flash.events.IEventDispatcher, {
- addEventListener: function () {},
- dispatchEvent: function () {},
- hasEventListener: function () {},
- removeEventListener: function () {},
- willTrigger: function () {}
- });
- flash.events.EventDispatcher = function () {
- this._listenerCount = {};
- this._listeners = {}
- };
- fljs.addMethods(flash.events.EventDispatcher, {
- addEventListener: function (a, b, c, d, e) {
- a in this._listeners || (this._listeners[a] = []);
- this._listeners[a].push([b, c, d, e]);
- if (!this._listenerCount[a]) {
- this["__add" + a] && this["__add" + a]();
- this._listenerCount[a] = 0
- }
- this._listenerCount[a] += 1
- },
- dispatchEvent: function (a) {
- var b = this._listeners[a.type];
- for (var c in b) b[c][0](a)
- },
- hasEventListener: function (a) {
- return this._listeners[a] && this._listeners[a].length > 0
- },
- removeEventListener: function (a, b, c) {
- var d = this._listeners[a];
- for (var e in d) d[e][0] == b && d[e][1] == c && d.splice(e, 1);
- this._listenerCount[a] -= 1;
- if (!this._listenerCount[a]) {
- this["__remove" + a] && this["__remove" + a]();
- this._listenerCount[a] = 0
- }
- },
- willTrigger: function (a) {
- return this.hasEventListener(a)
- }
- });
- flash.geom = {};
- flash.geom.ColorTransform = function (a, b, c, d, e, f, g, j) {
- if (typeof a == "undefined") a = 1;
- if (typeof b == "undefined") b = 1;
- if (typeof c == "undefined") c = 1;
- if (typeof d == "undefined") d = 1;
- if (typeof e == "undefined") e = 0;
- if (typeof f == "undefined") f = 0;
- if (typeof g == "undefined") g = 0;
- if (typeof j == "undefined") j = 0;
- this.alphaMultiplier = d;
- this.alphaOffset = j;
- this.blueMultiplier = c;
- this.blueOffset = g;
- this.greenMultiplier = b;
- this.greenOffset = f;
- this.redMultiplier = a;
- this.redOffset = e;
- this.__default = this.alphaMultiplier == 1 && this.blueMultiplier == 1 && this.greenMultiplier == 1 && this.redMultiplier == 1 && this.alphaOffset == 0 && this.blueOffset == 0 && this.greenOffset == 0 && this.redOffset == 0;
- fljs.console("cxform")
- };
- fljs.addMethods(flash.geom.ColorTransform, {
- concat: function (a) {
- return new flash.geom.ColorTransform(this.redMultiplier * a.redMultiplier, this.greenMultiplier * a.greenMultiplier, this.blueMultiplier * a.blueMultiplier, this.alphaMultiplier * a.alphaMultiplier, Math.min(255, this.redOffset + a.redOffset), Math.min(255, this.greenOffset + a.greenOffset), Math.min(255, this.blueOffset + a.blueOffset), Math.min(255, this.alphaOffset + a.alphaOffset))
- },
- toString: function () {},
- __toSvgString: function () {
- return [this.redMultiplier, 0, 0, 0, this.redOffset, 0, this.greenMultiplier, 0, 0, this.greenOffset, 0, 0, this.blueMultiplier, 0, this.blueOffset, 0, 0, 0, this.alphaMultiplier, this.alphaOffset].toString()
- }
- });
- flash.geom.ColorTransform.identity = new flash.geom.ColorTransform;
- flash.geom.Matrix = function (a, b, c, d, e, f) {
- if (typeof a == "undefined") a = 1;
- if (typeof b == "undefined") b = 0;
- if (typeof c == "undefined") c = 0;
- if (typeof d == "undefined") d = 1;
- if (typeof e == "undefined") e = 0;
- if (typeof f == "undefined") f = 0;
- this.a = a;
- this.b = b;
- this.c = c;
- this.d = d;
- this.tx = e;
- this.ty = f;
- this.__default = this.a == 1 && this.b == 0 && this.c == 0 && this.d == 1 && this.tx == 0 && this.ty == 0
- };
- fljs.addMethods(flash.geom.Matrix, {
- clone: function () {
- return new flash.geom.Matrix(this.a, this.b, this.c, this.d, this.tx, this.ty)
- },
- concat: function (a) {
- var b = this.a * a.b + this.b * a.d,
- c = this.c * a.a + this.d * a.c,
- d = this.c * a.b + this.d * a.d,
- e = this.tx * a.a + this.ty * a.c + a.tx,
- f = this.tx * a.b + this.ty * a.d + a.ty;
- this.a = this.a * a.a + this.b * a.c;
- this.b = b;
- this.c = c;
- this.d = d;
- this.tx = e;
- this.ty = f
- },
- createBox: function () {},
- createGradientBox: function () {},
- deltaTransformPoint: function () {},
- identity: function () {},
- invert: function () {},
- rotate: function () {},
- scale: function (a, b) {
- this.a *= a;
- this.d *= b;
- this.tx *= a;
- this.ty *= b
- },
- toString: function () {},
- transformPoint: function () {},
- translate: function () {},
- __toSvgString: function () {
- return "matrix(" + [this.a, this.b, this.c, this.d, this.tx, this.ty] + ")"
- }
- });
- flash.geom.Transform = function (a) {
- this._target = a;
- this._colorTransform = new flash.geom.ColorTransform;
- this._matrix = new flash.geom.Matrix
- };
- fljs.addMethods(flash.geom.Transform, {
- setTarget: function (a) {
- this._target = a
- },
- getColorTransform: function () {
- return this._colorTransform
- },
- setColorTransform: function (a) {
- this._colorTransform = a;
- this._target.__setColorTransform(a)
- },
- getConcatenatedColorTransform: function () {
- for (var a = this._colorTransform, b = this._target, c = fljs.Player.getInstance(); b && b != c;) {
- var d = b.getTransform().getColorTransform();
- if (!d.__default) {
- a = d;
- break
- }
- b = b.getParent()
- }
- return a
- },
- getMatrix: function () {
- return this._matrix
- },
- setMatrix: function (a) {
- this._matrix =
- a;
- this._target.__setMatrix(a)
- },
- notify: function () {
- this._target.__setMatrix(this._matrix);
- this._target.__setColorTransform(this._colorTransform)
- }
- });
- flash.display.DisplayObject = function () {
- flash.events.EventDispatcher.call(this);
- this._alpha = 1;
- this.blendMode_ = flash.display.BlendMode.NORMAL;
- this._transform = new flash.geom.Transform(this);
- this.enterFrameListener = fljs.bind(this.onEnterFrame_, this);
- fljs.Player.getInstance().dispatcher.addEventListener(flash.events.Event.ENTER_FRAME, this.enterFrameListener);
- this.__simpleColorTransform = true;
- this.__asContext = null;
- (this._clipElement = new fljs.dom.Element).create(fljs.dom.Namespace.Svg, "g");
- this.id = "clip" + flash.display.DisplayObject.id++;
- this._mouseEventHandler = fljs.bind(this.dispatchMouseEvent, this)
- };
- fljs.inherits(flash.display.DisplayObject, flash.events.EventDispatcher);
- fljs.addMethods(flash.display.DisplayObject, {
- getBounds: function (a) {
- var b = this.element_.getElement().getBBox();
- if (a == this) return new flash.geom.Rectangle(b.x, b.y, b.width, b.height);
- else {
- var c = new flash.geom.Point(b.x, b.y);
- c = a.globalToLocal(this.localToGlobal(c));
- b = new flash.geom.Point(b.x + b.width, b.y + b.height);
- b = a.globalToLocal(this.localToGlobal(b));
- return new flash.geom.Rectangle(c.x, c.y, b.x - c.x, b.y - c.y)
- }
- },
- getRect: function () {},
- globalToLocal: function (a) {
- var b = this._svgCtm();
- a = this._SvgApplyMatrixToPoint(a, b);
- return new flash.geom.Point(a.x, a.y)
- },
- hitTestObject: function (a) {
- a = a.getBounds(this);
- var b = this.getBounds(this);
- return a.x + a.width <= b.x && a.x >= b.x + b.width && a.y + a.height <= b.y && a.y >= b.y + b.height
- },
- hitTestPoint: function (a, b) {
- a = new flash.geom.Point(a, b);
- a = this.globalToLocal(a);
- b = this.getBounds(this);
- return a.x >= b.x && a.x <= b.x + b.width && a.y > b.y && a.y <= b.y + b.height
- },
- _svgApplyMatrixToPoint: function (a, b) {
- var c = fljs.Player.getInstance().element.getElement().createSVGPoint();
- c.x = a.x;
- c.y = a.y;
- return c = c.matrixTransform(b)
- },
- _svgCtm: function () {
- var a = this.element_.getElement(),
- b;
- try {
- b = a.parentNode.getScreenCTM()
- } catch (c) {
- b = getScreenCTM(a.parentNode)
- }
- return b
- },
- localToGlobal: function (a) {
- var b = this._svgCtm();
- a = this._SvgApplyMatrixToPoint(a, b.inverse());
- return new flash.geom.Point(a.x, a.y)
- },
- onEnterFrame_: function () {},
- __setColorTransform: function (a) {
- this.element_.getElement().setAttributeNS(null, "opacity", a.alphaMultiplier);
- this.element_.getElement().setAttributeNS(null, "stroke-opacity", a.alphaMultiplier);
- this.element_.getElement().setAttributeNS(null, "fill-opacity", a.alphaMultiplier);
- this.__simpleColorTransform = true
- },
- setColorTransform: function () {},
- __setHitTarget: function (a) {
- this.setVisible(false);
- this.element_.getElement().setAttributeNS(null, "pointer-events", "all");
- this._hitTargetFor = a;
- this.addEventListeners()
- },
- makeClipPath: function () {
- this.getClipPath()
- },
- getClipPath: function () {
- this._clipPath || this.buildClipPath();
- return this._clipPath
- },
- buildClipPath: function () {
- var a = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "clipPath");
- var b = "clip" + flash.display.DisplayObject.id++;
- a.sets([["id", b], [null, "clipPathUnits", "userSpaceOnUse"]]);
- a.update();
- this.__clipElement = a;
- a = this._clipPath = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "g");
- a.set(null, "clip-path", "url(#" + b + ")");
- a.update();
- this._clipElement.element.parentNode.replaceChild(a.element, this._clipElement.element);
- this._clipElement = a;
- this.buildClipParts(this);
- fljs.Player.getInstance().defs.append(this.__clipElement)
- },
- buildClipParts: function (a) {
- if (!this._parentClipPaths) this._parentClipPaths = {};
- this._parentClipPaths[a.id] = a
- },
- __setMatrix: function (a) {
- this.element_.getElement().setAttributeNS(null, "transform", a.__toSvgString());
- if (this._parentClipPaths) for (var b in this._parentClipPaths) {
- a = this._parentClipPaths[b];
- this.updateClipParts && this.updateClipParts(a)
- }
- },
- addEventListeners: function () {
- var a = this._buttonEventHandler = fljs.bind(this._hitTargetFor.updateButtonState, this._hitTargetFor),
- b = flash.events.MouseEvent;
- this.addEventListener(b.CLICK, a, true);
- this.addEventListener(b.MOUSE_OVER, a, true);
- this.addEventListener(b.MOUSE_OUT, a, true);
- this.addEventListener(b.MOUSE_DOWN, a, true);
- this.addEventListener(b.MOUSE_UP, a, true)
- },
- removeFromStage: function () {
- fljs.Player.getInstance().dispatcher.removeEventListener(flash.events.Event.ENTER_FRAME, this.enterFrameListener)
- },
- updateClipDepth: function (a) {
- if (this.__clipDepth) {
- if (a != this.__clipDepth) if (a < this.__clipDepth) {;
- } else if (a > this.__clipDepth) {}
- } else {
- this.makeClipPath();
- this.__clipDepth = a;
- var b = this._parent;
- b.element_.getElement();
- var c = b.clipPathForDepth(this._depth);
- c && c.getClipPath();
- var d = document.createDocumentFragment();
- for (var e in b.displayList_) {
- var f = b.displayList_[e].displayObject;
- if (e > this._depth && e <= a && f._mask == c) {
- d.appendChild(f._clipElement.element);
- f._mask = this
- }
- }
- this.getClipPath().element.appendChild(d)
- }
- },
- getName: function () {
- return this._name
- },
- setName: function (a) {
- this._parent && this._parent.setChildName(this, a);
- this._name = a
- },
- getStage: function () {
- return this._parent && this._parent.getStage ? this._parent.getStage() : null
- },
- getTransform: function () {
- return this._transform
- },
- setTransform: function (a) {
- this._transform = a;
- this._transform.setTarget(this);
- this._transform.notify()
- },
- getMatrix: function () {
- return this._transform._matrix
- },
- setMatrix: function (a) {
- this._transform.setMatrix(a)
- },
- getVisible: function () {
- return this._visible
- },
- setVisible: function (a) {
- a = (this._visible = !! a) ? "visible" : "hidden";
- this.element_.getElement().setAttributeNS(null, "visibility", a)
- },
- getParent: function () {
- return this._parent
- },
- setParent: function (a) {
- if (this._parent != a) this._parent = a
- },
- getAs2Object: function () {
- if (!this._as2Object) this._as2Object = new fljs.swf.act.MovieClip(this);
- return this._as2Object
- },
- dispatchMouseEvent: function (a) {
- var b = {};
- b.click = flash.events.MouseEvent.CLICK;
- b.touchend = flash.events.MouseEvent.CLICK;
- b.mouseover = flash.events.MouseEvent.MOUSE_OVER;
- b.mouseout = flash.events.MouseEvent.MOUSE_OUT;
- b.mousedown = flash.events.MouseEvent.MOUSE_DOWN;
- b.mouseup = flash.events.MouseEvent.MOUSE_UP;
- b.touchstart = flash.events.MouseEvent.MOUSE_DOWN;
- b.touchend = flash.events.MouseEvent.MOUSE_UP;
- this.dispatchEvent(new flash.events.MouseEvent(b[a.type]))
- },
- getWidth: function () {
- return this.element_.element.getBBox().width
- },
- setWidth: function (a) {
- var b = this.getWidth(),
- c = this.getMatrix(),
- d = new flash.geom.Matrix;
- d.scale(a / b, 1);
- d.concat(c);
- d.tx = c.tx;
- d.ty = c.ty;
- this.setMatrix(d)
- },
- getHeight: function () {
- return this.element_.element.getBBox().height
- }
- });
- fljs.addEvents(flash.display.DisplayObject, [[flash.events.MouseEvent.MOUSE_OVER, function () {
- this.element_.element.addEventListener("mouseover", this._mouseEventHandler, false)},function () {
- this.element_.element.removeEventListener("mouseover", this._mouseEventHandler)}], [flash.events.MouseEvent.MOUSE_OUT, function () {
- this.element_.element.addEventListener("mouseout", this._mouseEventHandler, false)},function () {
- this.element_.element.removeEventListener("mouseout", this._mouseEventHandler)}], [flash.events.MouseEvent.MOUSE_DOWN,
- function () {
- this.element_.element.addEventListener("mousedown", this._mouseEventHandler, false)},function () {
- this.element_.element.removeEventListener("mousedown", this._mouseEventHandler)}], [flash.events.MouseEvent.MOUSE_UP, function () {
- this.element_.element.addEventListener("mouseup", this._mouseEventHandler, false)},function () {
- this.element_.element.removeEventListener("mouseup", this._mouseEventHandler)}]]);
- flash.display.DisplayObject.id = 1;
- flash.display.InteractiveObject = function () {
- flash.display.DisplayObject.call(this)
- };
- fljs.inherits(flash.display.InteractiveObject, flash.display.DisplayObject);
- flash.display.DisplayObjectContainer = function () {
- flash.display.InteractiveObject.call(this);
- this.element_ = this._clipElement;
- this.graphics_ = new flash.display.Graphics(this);
- this.displayList_ = [];
- this.__childNames = {}
- };
- fljs.inherits(flash.display.DisplayObjectContainer, flash.display.InteractiveObject);
- fljs.addMethods(flash.display.DisplayObjectContainer, {
- addChild: function (a) {
- var b = 0;
- for (var c in this.displayList_) b = Math.max(c, b);
- return this.addChildAt(a, b + 1)
- },
- addChildAt: function (a, b) {
- a._depth = b;
- a.setParent(this);
- var c = this.element_.getElement(),
- d = this.clipPathForDepth(b);
- if (d) c = d.getClipPath().element;
- var e = this.displayList_[b],
- f;
- if (e) f = e.displayObject;
- if (e && !f.__clipDepth) {
- c.replaceChild(a._clipElement.element, f._clipElement.element);
- f.removeFromStage()
- } else {
- e && this.removeChildAt(b);
- if ((e = this.dispObjAfterIndex(b)) && d) if (e._mask != d) e = null;
- e ? c.insertBefore(a._clipElement.element, e._clipElement.element) : c.appendChild(a._clipElement.element)
- }
- this.displayList_[b] = {
- displayObject: a
- };
- a.__name && this.setChildName(a, null, a.__name);
- if (this._parentClipPaths) for (var g in this._parentClipPaths) a.buildClipParts(this._parentClipPaths[g]);
- if (d) a._mask = d;
- return a
- },
- dispObjAfterIndex: function (a) {
- var b, c = null;
- for (var d in this.displayList_) if (d > a) {
- b = c ? Math.min(b, d) : d;
- c = this.displayList_[b].displayObject
- }
- return c
- },
- areInaccessibleObjectsUnderPoint: function () {
- return false
- },
- contains: function () {},
- getChildAt: function (a) {
- return (a = this.displayList_[a]) ? a.displayObject : null
- },
- getChildByName: function (a) {
- return this.childrenByName_[a]
- },
- removeChildAt: function (a) {
- var b = this.displayList_[a];
- if (b) {
- b = b.displayObject;
- var c;
- c = (c = this.clipPathForDepth(a)) ? c.getClipPath().element : this.element_.getElement();
- var d = b._clipElement.element;
- if (b.__clipDepth) {
- b.getClipPath();
- var e = document.createDocumentFragment();
- for (var f in this.displayList_) {
- var g = this.displayList_[f].displayObject;
- if (g._mask == b) {
- g._mask = null;
- e.appendChild(g._clipElement.element)
- }
- }
- c.replaceChild(e, d)
- } else c.removeChild(d);
- b.setParent(null);
- b.removeFromStage();
- b._name && delete this.__childNames[b._name];
- delete this.displayList_[a];
- return b
- } else fljs.console("doc").info("removeChildAt:" + a + " failed")
- },
- removeChildren: function () {
- for (var a in this.displayList_) this.removeChildAt(a)
- },
- setChildIndex: function () {},
- swapChildren: function () {},
- swapChildrenAt: function () {},
- setChildName: function (a, b) {
- a._name && delete this.__childNames[a._name];
- this.__childNames[b] = a
- },
- buildClipParts: function (a) {
- fljs.base(this, "buildClipParts", a);
- this.graphics_.buildClipParts(a);
- for (var b in this.displayList_) {
- var c = this.displayList_[b].displayObject;
- c.buildClipParts && c.buildClipParts(a)
- }
- },
- updateClipParts: function (a) {
- this.graphics_.updateClipParts(a);
- for (var b in this.displayList_) {
- var c = this.displayList_[b].displayObject;
- c.updateClipParts && c.updateClipParts(a)
- }
- },
- updateColorTransform: function () {
- for (var a in this.displayList_) {
- var b = this.displayList_[a].displayObject;
- b.updateColorTransform && b.updateColorTransform()
- }
- },
- __setColorTransform: function (a) {
- fljs.base(this, "__setColorTransform", a);
- this.updateColorTransform()
- },
- clipPathForDepth: function (a) {
- var b = -1;
- for (var c in this.displayList_) {
- var d = this.displayList_[c].displayObject;
- if (d.__clipDepth) if (a > c && a <= d.__clipDepth) b = Math.max(c, b)
- }
- return b > -1 ? this.displayList_[b].displayObject : null
- }
- });
- flash.display.Stage = function () {
- flash.display.DisplayObjectContainer.call(this);
- var a = fljs.Player.getInstance(),
- b = a.header.FrameSize.Xmax - a.header.FrameSize.Xmin,
- c = a.header.FrameSize.Ymax - a.header.FrameSize.Ymin;
- this._clipElement.sets([[null, "width", b], [null, "height", c]]);
- this._clipElement.update();
- this.align_ = flash.display.StageAlign.TOP_LEFT;
- this.displayState_ = flash.display.StageDisplayState.NORMAL;
- this.frameRate_ = 30;
- a = fljs.Player.getInstance();
- b = a.header.FrameSize.Xmax - a.header.FrameSize.Xmin;
- c =
- a.header.FrameSize.Ymax - a.header.FrameSize.Ymin;
- a = this._bg = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "rect");
- a.sets([[null, "x", 0], [null, "y", 0], [null, "width", b], [null, "height", c], [null, "stroke", "none"], [null, "fill", this.colorToSvgString(0)]]);
- a.update();
- (b = this._clipElement.element.firstChild) ? this._clipElement.getElement().insertBefore(a.element, b) : this._clipElement.getElement().appendChild(a.element)
- };
- fljs.inherits(flash.display.Stage, flash.display.DisplayObjectContainer);
- fljs.addMethods(flash.display.Stage, {
- initialize: function () {
- this.setBackgroundColor_(0)
- },
- invalidate: function () {},
- isFocusInaccessible: function () {},
- runFrameLoop_: function () {},
- onEnterFrame_: function () {
- for (var a in this.children_) this.children_.onEnterFrame()
- },
- colorToSvgString: function (a) {
- return "rgb(" + [a >> 16 & 255, a >> 8 & 255, a & 255] + ")"
- },
- setBackgroundColor_: function (a) {
- this._bg.set(null, "fill", this.colorToSvgString(a));
- this._bg.update()
- },
- onMouseMove: function (a) {
- this._mouseX = a.clientX;
- this._mouseY = a.clientY
- },
- getStage: function () {
- return this
- },
- getFrameRate: function () {
- return this.frameRate_
- },
- setFrameRate: function (a) {
- this.frameRate_ = a = Math.max(Math.min(a, 1E3), 0.01)
- }
- });
- flash.display.GradientType = function () {};
- fljs.addConstants(flash.display.GradientType, {
- LINEAR: "linear",
- RADIAL: "radial"
- });
- flash.display.SpreadMethod = function () {};
- fljs.addConstants(flash.display.SpreadMethod, {
- PAD: "pad",
- REFLECT: "reflect",
- REPEAT: "repeat"
- });
- flash.display.InterpolationMethod = function () {};
- fljs.addConstants(flash.display.InterpolationMethod, {
- LINEAR_RGB: "linearRGB",
- RGB: "rgb"
- });
- flash.display.Graphics = function (a) {
- this.__target = a;
- this.setDisplayObject(a);
- this._parentClipPaths = {};
- this._clipParts = {};
- this._parts = []
- };
- fljs.addMethods(flash.display.Graphics, {
- clear: function () {
- for (var a in this._parts) this.parentEl.removeChild(this._parts[a]);
- this._parts = [];
- this._clipParts = {};
- this._parentClipPaths = {}
- },
- opacityWithXform: function (a) {
- var b = this.displayObject_.getTransform().getConcatenatedColorTransform();
- return b.__default ? a : Math.max(0, Math.min(255, Math.round(a * 255 * b.alphaMultiplier + b.alphaOffset))) / 255
- },
- setDisplayObject: function (a) {
- this.displayObject_ = a;
- this.parentEl = this.displayObject_.element_.element
- },
- __colorToSvgString: function (a) {
- var b =
- a >> 16 & 255,
- c = a >> 8 & 255;
- a = a & 255;
- if (!this.displayObject_.getTransform().getConcatenatedColorTransform().__default) {
- var d = this.displayObject_.getTransform().getConcatenatedColorTransform();
- b = Math.max(0, Math.min(255, Math.round(b * d.redMultiplier + d.redOffset)));
- c = Math.max(0, Math.min(255, Math.round(c * d.greenMultiplier + d.greenOffset)));
- a = Math.max(0, Math.min(255, Math.round(a * d.blueMultiplier + d.blueOffset)))
- }
- return "rgb(" + [b, c, a] + ")"
- },
- clipTransforms: function (a) {
- for (var b = [], c = this.displayObject_;;) {
- var d = c.getMatrix().__toSvgString();
- b.push(d);
- if (c == a) break;
- c = c.getParent()
- }
- return b
- },
- buildClipParts: function (a) {
- this._parentClipPaths[a.id] = a;
- var b = this.clipTransforms(a).join(" ");
- if (this.tag) {
- var c = this.tag.def.paths;
- for (var d in c) {
- var e = c[d],
- f;
- f = fljs.agent.browser == "Safari" ? e.clone() : e.use();
- f.set(null, "transform", b);
- f.update();
- this.addClipPart(a, e, f)
- }
- }
- },
- addClipPart: function (a, b, c) {
- this._clipParts[a.id] || (this._clipParts[a.id] = {});
- this._clipParts[a.id][b.id] = c;
- a.__clipElement.append(c)
- },
- updateClipParts: function (a) {
- var b = this.clipTransforms(a);
- for (a = a;;) {
- if (this._parentClipPaths[a.id]) {
- var c = b.join(" "),
- d = this._clipParts[a.id];
- for (var e in d) {
- var f = d[e];
- f.set(null, "transform", c);
- f.update()
- }
- }
- if (!a || !a.getTransform) break;
- c = a.getMatrix().__toSvgString();
- b.push(c);
- a = a.getParent()
- }
- },
- useTag: function (a, b, c) {
- var d = this.displayObject_.getTransform().getConcatenatedColorTransform();
- d.__default || (b = d);
- this.tag = a;
- this.cloning = c;
- this.use = a.def.use(b, null, this.cloning);
- this.parentEl.appendChild(this.use.element)
- },
- setColorTransform: function (a) {
- if (this.use) {
- var b =
- this.use.element;
- this.use = this.tag.def.use(a, null, this.cloning);
- this.parentEl.replaceChild(this.use.element, b)
- }
- }
- });
- flash.display.Graphics.patternId = 1;
- flash.display.Graphics.pathId = 1;
- flash.display.IBitmapDrawable = function () {};
- flash.display.StageAlign = function () {};
- fljs.addConstants(flash.display.StageAlign, {
- TOP: "top",
- BOTTOM: "bottom",
- LEFT: "left",
- RIGHT: "right",
- TOP_LEFT: "topLeft",
- TOP_RIGHT: "topRight",
- BOTTOM_LEFT: "bottomLeft",
- BOTTOM_RIGHT: "bottomRight"
- });
- flash.display.StageDisplayState = function () {};
- fljs.addConstants(flash.display.StageDisplayState, {
- FULL_SCREEN: "fullScreen",
- NORMAL: "normal"
- });
- fljs.swf = {};
- fljs.swf.tag = {};
- fljs.swf.tag.End = function () {};
- fljs.addMethods(fljs.swf.tag.End, {
- read: function () {},
- evaluate: function () {}
- });
- fljs.swf.tag.ShowFrame = function () {};
- fljs.addMethods(fljs.swf.tag.ShowFrame, {
- read: function () {},
- evaluate: function () {}
- });
- flash.display.Shape = function () {
- flash.display.DisplayObject.call(this);
- this.element_ = this._clipElement;
- this.graphics_ = new flash.display.Graphics(this)
- };
- fljs.inherits(flash.display.Shape, flash.display.DisplayObject);
- fljs.addMethods(flash.display.Shape, {
- buildClipParts: function (a) {
- fljs.base(this, "buildClipParts", a);
- this.graphics_.buildClipParts(a)
- },
- updateClipParts: function (a) {
- this.graphics_.updateClipParts(a)
- },
- useTag: function (a, b, c) {
- this.tag = a;
- this.graphics_.useTag(a, b, c);
- if (b) {
- this.setColorTransform(b);
- this.element_.getElement().setAttributeNS(null, "opacity", b.alphaMultiplier)
- }
- },
- updateColorTransform: function () {
- this.graphics_.setColorTransform(this.getTransform().getConcatenatedColorTransform())
- },
- __setColorTransform: function (a) {
- fljs.base(this, "__setColorTransform", a);
- this.graphics_.setColorTransform(a)
- }
- });
- fljs.swf.tag.PlaceObject = function () {};
- fljs.addMethods(fljs.swf.tag.PlaceObject, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.CharacterId = a.readUI16();
- this.Depth = a.readUI16();
- this.Matrix = a.readMATRIX();
- a.stream.align();
- if (a.stream.byteIndex != c + b.TagLength) {
- fljs.console("parse").info("reading cxform");
- this.ColorTransform = a.readCXFORM()
- }
- a.stream.align()
- },
- buildMatrix_: function () {
- return new flash.geom.Matrix(this.Matrix.ScaleX, this.Matrix.RotateSkew0, this.Matrix.RotateSkew1, this.Matrix.ScaleY, this.Matrix.TranslateX, this.Matrix.TranslateY)
- },
- buildColorTransform_: function () {
- var a = this.ColorTransform;
- return new flash.geom.ColorTransform(a.RedMultTerm, a.GreenMultTerm, a.BlueMultTerm, a.AlphaMultTerm, a.RedAddTerm, a.GreenAddTerm, a.BlueAddTerm, a.AlphaAddTerm)
- },
- evaluate: function (a, b, c, d) {
- b = fljs.console("eval");
- c = a.dictionary[this.CharacterId];
- var e;
- if (c instanceof fljs.swf.tag.DefineShape || c instanceof fljs.swf.tag.DefineShape2) {
- e = new flash.display.Shape;
- e.getTransform().setMatrix(this.buildMatrix_());
- this.ColorTransform && e.getTransform().setColorTransform(this.buildColorTransform_());
- e.useTag(c)
- } else if (c instanceof fljs.swf.tag.DefineBitsJPEG2) {
- e = c.buildBitmap(fljs.Player.getInstance());
- e.getTransform().setMatrix(this.buildMatrix_())
- } else if (c instanceof fljs.swf.tag.DefineButton2) {
- e = c.build(a);
- e.getTransform().setMatrix(this.buildMatrix_())
- }
- e ? d.addChildAt(e, this.Depth) : b.info("not recognized: " + [this.CharacterId, this.Name])
- }
- });
- fljs.swf.tag.RemoveObject = function () {};
- fljs.addMethods(fljs.swf.tag.RemoveObject, {
- read: function (a) {
- this.CharacterId = a.readUI16();
- this.Depth = a.readUI16()
- },
- evaluate: function (a, b, c, d) {
- d.removeChildAt(this.Depth)
- }
- });
- fljs.swf.tag.PlaceObject2 = function () {};
- fljs.addMethods(fljs.swf.tag.PlaceObject2, {
- read: function (a) {
- this.startByteIndex = a.stream.byteIndex;
- fljs.console("parse");
- this.PlaceFlagHasClipActions = a.readUB(1);
- this.PlaceFlagHasClipDepth = a.readUB(1);
- this.PlaceFlagHasName = a.readUB(1);
- this.PlaceFlagHasRatio = a.readUB(1);
- this.PlaceFlagHasColorTransform = a.readUB(1);
- this.PlaceFlagHasMatrix = a.readUB(1);
- this.PlaceFlagHasCharacter = a.readUB(1);
- this.PlaceFlagMove = a.readUB(1);
- this.Depth = a.readUI16();
- if (this.PlaceFlagHasCharacter) this.CharacterId = a.readUI16();
- if (this.PlaceFlagHasMatrix) this.Matrix = a.readMATRIX();
- if (this.PlaceFlagHasColorTransform) this.ColorTransform = a.readCXFORMWITHALPHA();
- if (this.PlaceFlagHasRatio) this.Ratio = a.readUI16();
- if (this.PlaceFlagHasName) this.Name = a.readSTRING();
- if (this.PlaceFlagHasClipDepth) this.ClipDepth = a.readUI16();
- if (this.PlaceFlagHasClipActions) this.ClipActions = a.readCLIPACTIONS()
- },
- buildMatrix_: function () {
- return new flash.geom.Matrix(this.Matrix.ScaleX, this.Matrix.RotateSkew0, this.Matrix.RotateSkew1, this.Matrix.ScaleY, this.Matrix.TranslateX, this.Matrix.TranslateY)
- },
- buildColorTransform_: function () {
- var a = this.ColorTransform;
- return new flash.geom.ColorTransform(a.RedMultTerm, a.GreenMultTerm, a.BlueMultTerm, a.AlphaMultTerm, a.RedAddTerm, a.GreenAddTerm, a.BlueAddTerm, a.AlphaAddTerm)
- },
- evaluate: function (a, b, c, d) {
- var e;
- c = fljs.console("place");
- if (this.PlaceFlagMove && this.PlaceFlagHasCharacter) e = d.getChildAt(this.Depth);
- var f;
- if (this.ColorTransform) f = this.buildColorTransform_();
- if (this.PlaceFlagHasCharacter) {
- b = a.dictionary[this.CharacterId];
- var g;
- if (b instanceof fljs.swf.tag.DefineShape || b instanceof fljs.swf.tag.DefineEditText || b instanceof fljs.swf.tag.DefineText || b instanceof fljs.swf.tag.DefineSprite || b instanceof fljs.swf.tag.DefineButton2) g = b.build(a, f);
- if (g) {
- this.Matrix && g.getTransform().setMatrix(this.buildMatrix_());
- d.addChildAt(g, this.Depth);
- if (e) this.Matrix || g.getTransform().setMatrix(e.getTransform().getMatrix());
- if (g.__clipActions == null) g.__clipActions = {};
- if (this.ClipActions) {
- f = fljs.swf.ClipEventFlags;
- d = this.ClipActions.ClipActionRecords;
- for (var j in d) {
- e = d[j];
- for (var h in fljs.swf.ClipEventFlags) if (e.EventFlags & f[h]) {
- g.__clipActions[h] || (g.__clipActions[h] = []);
- g.__clipActions[h].push(e)
- }
- }
- }
- if (b instanceof fljs.swf.tag.DefineSprite || b instanceof fljs.swf.tag.DefineButton2) g.onCreate()
- } else {
- c.info("not recognized: " + [this.CharacterId, this.Name]);
- e && d.removeChildAt(this.Depth)
- }
- } else if (this.PlaceFlagMove) {
- g = d.getChildAt(this.Depth);
- if (!g) return;
- h = false;
- if (this.Matrix) {
- g.getTransform().setMatrix(this.buildMatrix_());
- h = true
- }
- if (f) {
- g.getTransform().setColorTransform(f);
- h = true
- }
- if (h && a.renderTextAsGlyphs) if (g.text_ || g._text) if (g.getParent()) {
- j = 0;
- h = g._clipElement.element;
- h = b = h.parentNode;
- b = h.parentNode;
- d = h.nextSibling;
- b.removeChild(h);
- f && g.getTransform().setColorTransform(f);
- this.Matrix && g.getTransform().setMatrix(this.buildMatrix_());
- d ? b.insertBefore(h, d) : b.appendChild(h)
- }
- }
- if (g) {
- this.PlaceFlagHasClipDepth && g.updateClipDepth(this.ClipDepth);
- this.Name && g.setName(this.Name);
- if (g && this.PlaceFlagHasCharacter) {
- if (g.__clipActions.ClipEventInitialize) {
- f = [];
- for (j in g.__clipActions.ClipEventInitialize) f.push.apply(f, g.__clipActions.ClipEventInitialize[j].Actions);
- a.doActions(g, f)
- }
- if (g.__clipActions.ClipEventLoad) {
- f = [];
- for (j in g.__clipActions.ClipEventLoad) f.push.apply(f, g.__clipActions.ClipEventLoad[j].Actions);
- a.doActions(g, f)
- }
- if (g.__clipActions.ClipEventEnterFrame) {
- f = [];
- for (j in g.__clipActions.ClipEventEnterFrame) f.push.apply(f, g.__clipActions.ClipEventEnterFrame[j].Actions);
- a.dispatcher.addEventListener(flash.events.Event.ENTER_FRAME, fljs.bind(a.doActions, a, g, f))
- }
- }
- }
- }
- });
- fljs.swf.build = {};
- fljs.swf.build.SvgUtils = function () {};
- fljs.addMethods(fljs.swf.build.SvgUtils, {
- toSvgColorString: function (a) {
- return "rgb(" + [a.Red, a.Green, a.Blue] + ")"
- },
- toSvgOpacity: function (a) {
- return a.Alpha == null ? 1 : a.Alpha / 255
- },
- toSvgMatrixString: function (a) {
- return (new flash.geom.Matrix(a.ScaleX, a.RotateSkew0, a.RotateSkew1, a.ScaleY, a.TranslateX, a.TranslateY)).__toSvgString()
- },
- toMatrix: function (a) {
- return new flash.geom.Matrix(a.ScaleX, a.RotateSkew0, a.RotateSkew1, a.ScaleY, a.TranslateX, a.TranslateY)
- }
- });
- fljs.swf.def = {};
- fljs.swf.def.BitmapDef = function () {
- (this.element = new fljs.dom.Element).create(fljs.dom.Namespace.Svg, "image")
- };
- fljs.addMethods(fljs.swf.def.BitmapDef, {
- setCharaId: function (a) {
- this.id = "bitmap-" + a;
- this.ref = "#" + this.id;
- this.element.set("id", this.id)
- },
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function () {
- var a = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "use");
- a.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.ref]]);
- a.update();
- return a
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.BitmapFillDef = function () {
- var a = this.element = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "pattern");
- this.type = "Bitmap";
- this.id = "pattern-" + fljs.swf.def.BitmapFillDef.patternId++;
- this.ref = "#" + this.id;
- a.set("id", this.id)
- };
- fljs.addMethods(fljs.swf.def.BitmapFillDef, {
- setBitmapId: function (a) {
- a = fljs.Player.getInstance().dictionary[a];
- if (!a) return false;
- this.bitmap = a;
- this.element.append(a.def.use());
- return true
- },
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function () {
- var a = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "use");
- a.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.ref]]);
- a.update();
- return a
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.BitmapFillDef.patternId = 1;
- fljs.swf.def.GradientFillDef = function () {
- this.element = new fljs.dom.Element;
- this.stops = [];
- this.type = "Gradient"
- };
- fljs.addMethods(fljs.swf.def.GradientFillDef, {
- create: function (a) {
- var b = this.element;
- b.create(fljs.dom.Namespace.Svg, a);
- this.id = "gradient-" + fljs.swf.def.GradientFillDef.gradientId++;
- this.ref = "#" + this.id;
- b.set("id", this.id)
- },
- addStop: function (a) {
- this.stops.push(a);
- this.element.append(a.element)
- },
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function (a) {
- var b = this.element.clone(false);
- b.id = "gradient-" + fljs.swf.def.GradientFillDef.gradientId++;
- b.ref = "#" + b.id;
- b.set("id", b.id);
- for (var c in this.stops) b.append(this.stops[c].use(a));
- b.update();
- this._define(b.element);
- return b
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.GradientFillDef.gradientId = 1;
- fljs.swf.def.GradientFillStopDef = function () {
- (this.element = new fljs.dom.Element).create(fljs.dom.Namespace.Svg, "stop")
- };
- fljs.addMethods(fljs.swf.def.GradientFillStopDef, {
- create: function (a) {
- var b = this.element;
- b.create(fljs.dom.Namespace.Svg, a);
- b.set("id", this.id)
- },
- setColor: function (a, b) {
- this.rgba = a;
- this.element.sets([[null, "stop-color", this._colorToSvgColor(a, b)], [null, "stop-opacity", this._colorToSvgOpacity(a)]])
- },
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function (a) {
- var b = this.element.clone(false);
- a = [[null, "stop-color", this._colorToSvgColor(this.rgba, a)]];
- b.sets(a);
- b.update();
- return b
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- },
- _colorToSvgColor: function (a, b) {
- var c = a >> 24 & 255,
- d = a >> 16 & 255;
- a = a >> 8 & 255;
- if (b) {
- c = Math.max(0, Math.min(255, Math.round(c * b.redMultiplier + b.redOffset)));
- d = Math.max(0, Math.min(255, Math.round(d * b.greenMultiplier + b.greenOffset)));
- a = Math.max(0, Math.min(255, Math.round(a * b.blueMultiplier + b.blueOffset)))
- }
- return "rgb(" + [c, d, a] + ")"
- },
- _colorToSvgOpacity: function (a, b) {
- a = (a & 255) / 255;
- if (b) a = Math.max(0, Math.min(1, Math.round(a * b.alphaMultiplier + b.alphaOffset)));
- return a
- }
- });
- fljs.swf.def.GradientFillStopDef.gradientStopId = 1;
- fljs.swf.def.PathDef = function () {
- var a = this.element = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "path");
- this.id = "path" + fljs.swf.def.PathDef.pathId++;
- this.ref = "#" + this.id;
- a.set("id", this.id);
- a.update()
- };
- fljs.addMethods(fljs.swf.def.PathDef, {
- setStroke: function (a) {
- (this.stroke = a) ? this.element.sets([[null, "stroke-width", a.thickness], [null, "stroke", this._colorToSvgColor(a.color)], [null, "stroke-opacity", this._colorToSvgOpacity(a.color)]]) : this.element.set(null, "stroke", "none")
- },
- setFill: function (a) {
- if (this.fill = a) switch (a.type) {
- case "Solid":
- this._setSolidFill(a);
- break;
- case "Bitmap":
- this._setBitmapFill(a);
- break;
- case "Gradient":
- this._setGradientFill(a);
- break
- } else this.element.set(null, "fill", "none")
- },
- _setSolidFill: function () {},
- _setBitmapFill: function (a) {
- this.element.sets([[null, "fill", "url(" + a.ref + ")"], [null, "fill-opacity", 1]])
- },
- _setGradientFill: function () {},
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function (a, b) {
- var c = new fljs.dom.Element;
- c.create(fljs.dom.Namespace.Svg, "use");
- document.getElementById(this.id);
- var d = [[fljs.dom.Namespace.Xlink, "xlink:href", this.ref]],
- e = this.stroke;
- e && c.sets([[null, "stroke-width", e.thickness], [null, "stroke", this._colorToSvgColor(e.color, a)], [null, "stroke-opacity",
- this._colorToSvgOpacity(e.color)]]);
- if (e = this.fill) switch (e.type) {
- case "Solid":
- c.set(null, "fill", this._colorToSvgColor(e.color, a));
- c.set(null, "fill-opacity", this._colorToSvgOpacity(e.color));
- break;
- case "Bitmap":
- break;
- case "Gradient":
- c.sets([[null, "fill", "url(" + e.use(a).ref + ")"], [null, "fill-opacity", 1]]);
- break
- }
- c.sets(d);
- b && b.append(c);
- c.update();
- return c
- },
- clone: function () {
- var a = this.element.clone(true);
- a.set("id", null);
- return a
- },
- _colorToSvgColor: function (a, b) {
- var c = a >> 24 & 255,
- d = a >> 16 & 255;
- a = a >> 8 & 255;
- if (b) {
- c = Math.max(0, Math.min(255, Math.round(c * b.redMultiplier + b.redOffset)));
- d = Math.max(0, Math.min(255, Math.round(d * b.greenMultiplier + b.greenOffset)));
- a = Math.max(0, Math.min(255, Math.round(a * b.blueMultiplier + b.blueOffset)))
- }
- return "rgb(" + [c, d, a] + ")"
- },
- _colorToSvgOpacity: function (a, b) {
- a = (a & 255) / 255;
- if (b) a = Math.max(0, Math.min(1, Math.round(a * b.alphaMultiplier + b.alphaOffset)));
- return a
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.PathDef.pathId = 1;
- fljs.swf.def.ShapeDef = function () {
- (this.element = new fljs.dom.Element).create(fljs.dom.Namespace.Svg, "g");
- this.parts = [];
- this.paths = [];
- this.images = [];
- this.cxforms = {};
- this.cxformCount = 0
- };
- fljs.addMethods(fljs.swf.def.ShapeDef, {
- setCharaId: function (a) {
- this.id = "chara-" + a;
- this.ref = "#" + this.id;
- this.element.set("id", this.id)
- },
- addPath: function (a) {
- this.paths.push(a);
- this.parts.push(a);
- this.element.append(a.element)
- },
- addImage: function (a) {
- this.images.push(a);
- this.parts.push(a);
- this.element.append(a.element)
- },
- define: function () {
- this.element.update();
- fljs.Player.getInstance();
- this._define(this.element.element)
- },
- use: function (a, b, c) {
- if (c) {
- a = this.element.clone(true);
- b && b.append(a);
- return a
- }
- if (!a) a = flash.geom.ColorTransform.identity;
- c = a.__toSvgString();
- a = c in this.cxforms ? this.cxforms[c] : (this.cxforms[c] = this.useDef(a));
- c = new fljs.dom.Element;
- c.create(fljs.dom.Namespace.Svg, "use");
- document.getElementById(a.id);
- b && b.append(c);
- c.element.setAttributeNS(fljs.dom.Namespace.Xlink, "xlink:href", a.ref);
- return c
- },
- useDef: function (a) {
- var b = new fljs.dom.Element;
- b.create(fljs.dom.Namespace.Svg, "g");
- var c = [this.id, this.cxformCount++].join("-");
- b.sets([["id", c]]);
- b.update();
- this._define(b.element);
- var d = this.parts;
- for (var e in d) d[e].use(a, b);
- return {
- element: b,
- id: c,
- ref: "#" + c
- }
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.ImageDef = function () {
- var a = this.element = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "g");
- this.id = "image-def-" + fljs.swf.def.ImageDef.id++;
- this.ref = "#" + this.id;
- a.set("id", this.id)
- };
- fljs.addMethods(fljs.swf.def.ImageDef, {
- setBitmapId: function (a) {
- a = fljs.Player.getInstance().dictionary[a];
- if (!a) return false;
- this.bitmap = a;
- this._use = a.def.use();
- this.element.append(this._use);
- return true
- },
- define: function () {
- this.element.update();
- this._define(this.element.element)
- },
- use: function (a, b) {
- a = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "use");
- a.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.ref]]);
- a.update();
- b && b.append(a);
- return a
- },
- _define: function (a) {
- fljs.Player.getInstance().defs.element.appendChild(a)
- }
- });
- fljs.swf.def.ImageDef.id = 1;
- fljs.swf.BigEndianStringStream = function (a) {
- this.buffer = a;
- this.bitIndex = this.byteIndex = this._byte = 0;
- this.byteIndexForBits = -1;
- this.logger = fljs.console("parse")
- };
- fljs.addMethods(fljs.swf.BigEndianStringStream, {
- length: function () {
- return this.buffer.length
- },
- hasMore: function () {
- return this.byteIndex < this.buffer.length
- },
- skipBytes: function (a) {
- this.byteIndex += a
- },
- readBytes: function (a) {
- for (var b = [], c = 0; c < a; c++) b.push(this.buffer.charCodeAt(this.byteIndex++) & 255);
- return b
- },
- align: function () {
- this.bitIndex = 8
- },
- nextUByte: function () {
- return this.buffer.charCodeAt(this.byteIndex++) & 255
- },
- nextSByte: function () {
- var a = this.buffer.charCodeAt(this.byteIndex++) & 255;
- if (a >= 128) a -= 256;
- return a
- },
- nextUShort: function () {
- var a = ((this.buffer.charCodeAt(this.byteIndex++) & 255) << 8) + (this.buffer.charCodeAt(this.byteIndex++) & 255);
- if (a < 0) a += 65536;
- return a
- }
- });
- fljs.swf.ClipEventFlags = {
- ClipEventKeyUp: -2147483648,
- ClipEventKeyDown: 1073741824,
- ClipEventMouseUp: 536870912,
- ClipEventMouseDown: 268435456,
- ClipEventMouseMove: 134217728,
- ClipEventUnload: 67108864,
- ClipEventEnterFrame: 33554432,
- ClipEventLoad: 16777216,
- ClipEventDragOver: 8388608,
- ClipEventRollOut: 4194304,
- ClipEventRollOver: 2097152,
- ClipEventReleaseOutside: 1048576,
- ClipEventRelease: 524288,
- ClipEventPress: 262144,
- ClipEventInitialize: 131072,
- ClipEventData: 65536,
- ClipEventConstruct: 1024,
- ClipEventKeyPress: 512,
- ClipEventDragOut: 256
- };
- fljs.swf.FillStyleTypes = {
- SolidFill: 0,
- LinearGradientFill: 16,
- RadialGradientFill: 18,
- FocalRadialGradientFill: 19,
- RepeatingBitmapFill: 64,
- ClippedBitmapFill: 65,
- NonSmoothedRepeatingBitmapFill: 66,
- NonSmoothedClippedBitmapFill: 67
- };
- fljs.swf.SpreadMethods = {
- Pad: 0,
- Reflect: 1,
- Repeat: 2
- };
- fljs.swf.InterpolationMethods = {
- Rgb: 0,
- LinearRgb: 1
- };
- fljs.swf.build.ShapeBuilder = function (a) {
- this.context = a;
- this.utils = new fljs.swf.build.SvgUtils
- };
- fljs.addMethods(fljs.swf.build.ShapeBuilder, {
- build: function (a) {
- var b = this.parseSwfPaths(a),
- c = [];
- for (var d in b) c.push([this.buildPaths(b[d][0]), this.buildPaths(b[d][1])]);
- return this.buildDefinition(a, c)
- },
- parseSwfPaths: function (a) {
- var b = 0,
- c = 0,
- d = 0,
- e = 0,
- f = 0,
- g = 0,
- j = a.Shapes.ShapeRecords,
- h = this.stateNewStyles(a.Shapes.FillStyles),
- m = this.stateNewStyles(a.Shapes.LineStyles),
- k = [],
- l = 0,
- n = 0,
- p = 0,
- u = 1,
- o = {
- x1: 0,
- y1: 0
- },
- q = [],
- s = this;
- a = function () {
- o.parts = q;
- o.flipped = false;
- o.x2 = q[q.length - 1].x2;
- o.y2 = q[q.length - 1].y2;
- o.key1 =
- s.pointKey(o.x1, o.y1);
- o.key2 = s.pointKey(o.x2, o.y2);
- o.key = u += 1;
- l && h[l].edges.push(o);
- if (n) h[n].edges.push({
- parts: q,
- flipped: true,
- x1: o.x2,
- y1: o.y2,
- x2: o.x1,
- y2: o.y1,
- key1: o.key2,
- key2: o.key1,
- key: u += 1
- });
- p && m[p].edges.push(o);
- o = {
- x1: o.x2,
- y1: o.y2
- };
- q = []
- };
- var r = function () {
- k.push([h, m])
- },
- t = function (w) {
- return Math.round(w * 100) / 100
- };
- for (var v in j) {
- g = j[v];
- switch (g.type) {
- case "STRAIGHT":
- f = b + g.DeltaX;
- g = c + g.DeltaY;
- q.push({
- x1: t(b),
- y1: t(c),
- x2: t(f),
- y2: t(g)
- });
- b = f;
- c = g;
- break;
- case "CURVED":
- d = b + g.ControlDeltaX;
- e = c + g.ControlDeltaY;
- f = d + g.AnchorDeltaX;
- g = e + g.AnchorDeltaY;
- q.push({
- x1: t(b),
- y1: t(c),
- cx: t(d),
- cy: t(e),
- x2: t(f),
- y2: t(g)
- });
- b = f;
- c = g;
- break;
- case "NONEDGE":
- q.length && a();
- if (g.StateNewStyles) {
- r();
- h = this.stateNewStyles(g.FillStyles);
- m = this.stateNewStyles(g.LineStyles)
- }
- if (g.StateLineStyle) p = g.LineStyle;
- if (g.StateFillStyle0) l = g.FillStyle0;
- if (g.StateFillStyle1) n = g.FillStyle1;
- if (g.StateMoveTo) {
- b = g.MoveDeltaX;
- c = g.MoveDeltaY;
- o.x1 = b;
- o.y1 = c
- }
- break
- }
- }
- q.length && a();
- r();
- return k
- },
- stateNewStyles: function (a) {
- var b = [{
- edges: [],
- style: null}];
- for (var c in a) b.push({
- edges: [],
- style: a[c]
- });
- return b
- },
- buildPaths: function (a) {
- var b = [],
- c, d, e, f, g, j, h, m, k, l;
- for (e = 0; e < a.length; e++) {
- d = a[e].edges;
- if (d.length != 0) {
- j = {};
- edgeIndexCount = {};
- m = [];
- for (f = h = 0; f < d.length; f++) {
- c = d[f];
- if (c.key1 == c.key2) {
- c.picked = true;
- h += 1;
- m.push([c])
- } else {
- c.picked = false;
- j[c.key1] || (j[c.key1] = []);
- j[c.key1].push(c)
- }
- }
- for (f = 0; f < d.length; f++) {
- if (h == d.length) break;
- c = d[f];
- if (!c.picked) {
- k = [c];
- c.picked = true;
- h += 1;
- l = j[c.key1];
- for (g = 0; g < l.length; g++) if (l[g] == c) {
- l.splice(g, 1);
- break
- }
- g = c.key1;
- for (c = c.key2; c != g;) {
- l = j[c];
- if (typeof l == "undefined") break;
- if (l.length == 0) break;
- c = l.shift();
- k.push(c);
- c.picked = true;
- h += 1;
- c = c.key2
- }
- m.push(k)
- }
- }
- m.length && b.push({
- path: m,
- style: a[e].style
- })
- }
- }
- return b
- },
- pointKey: function (a, b) {
- return [a, b].join(",")
- },
- buildDefinition: function (a, b) {
- var c = new fljs.swf.def.ShapeDef;
- c.setCharaId(a.ShapeId);
- for (var d in b) {
- a = b[d][0];
- for (var e in a) {
- var f = a[e];
- if (this.isImagePath(f)) {
- var g = new fljs.swf.def.ImageDef;
- this.buildImageDef(g, f);
- c.addImage(g)
- } else {
- f.style.def = this.buildFillDef(f.style);
- f = this.buildPathDefinition(f.path, f.style, null);
- c.addPath(f)
- }
- }
- a = b[d][1];
- for (e in a) {
- f = a[e];
- f = this.buildPathDefinition(f.path, null, f.style);
- c.addPath(f)
- }
- }
- c.define();
- return c
- },
- sameStyle: function (a, b) {
- if (!a || !b) return false;
- if (a.def && b.def && a.def.fill && b.def.fill) if (a.def.fill.type == "Solid" && b.def.fill.type == "Solid") {
- if (a.def.fill.color != b.def.fill.color) return false
- } else return false;
- else if (a.def && b.def && (a.def.fill || b.def.fill)) return false;
- var c, d;
- c = a.HasFillFlag && a.FillType.Color ? a.FillType.Color : a.Color;
- if (b.HasFillFlag && b.FillType.Color) bcolor = b.FillType.Color;
- else d = b.Color;
- if (c && d) {
- if (this.rgbaToColor(c) != this.rgbaToColor(d)) return false;
- if (a.Width != b.Width) return false
- } else if (c || d) return false;
- return true
- },
- buildPathDefinition: function (a, b, c) {
- var d = new fljs.swf.def.PathDef;
- this.setPathLineStyle(d, c);
- this.setPathFillStyle(d, b);
- d.element.set(null, "d", this.pathToString(a));
- d.define();
- return d
- },
- isImagePath: function (a) {
- if (a.path.length != 1 || a.path[0].length != 1 || a.path[0][0].parts.length != 4 || !a.style) return false;
- var b = a.style.FillStyleType,
- c = fljs.swf.FillStyleTypes;
- if (!(b == c.RepeatingBitmapFill || b == c.ClippedBitmapFill || b == c.NonSmoothedRepeatingBitmapFill || b == c.NonSmoothedClippedBitmapFill)) return false;
- if (!fljs.Player.getInstance().dictionary[a.style.BitmapId]) return false;
- a = a.path[0][0].parts;
- for (b = 0; b < a.length; b++) {
- if (typeof a[b].cx != "undefined") return false;
- if (b < a.length - 1) {
- var d = a[b],
- e = a[b + 1],
- f, g, j;
- if (d.flipped) {
- f = d.x2;
- c = d.y2;
- g = d.x1;
- d = d.y1
- } else {
- f = d.x1;
- c = d.y1;
- g = d.x2;
- d = d.y2
- }
- if (e.flipped) {
- j = e.x1;
- e = e.y1
- } else {
- j = e.x2;
- e = e.y2
- }
- f = (f - g) * (j - g);
- c = (c - d) * (e - d);
- g = f + c;
- if (Math.abs(g) > 0.01) {
- if (!f || !c) return false;
- if (Math.abs(g / f) > 0.01 || Math.abs(g / c) > 0.01) return false
- }
- }
- }
- return true
- },
- buildImageDef: function (a, b) {
- a.setBitmapId(b.style.BitmapId);
- for (var c = [], d = 0, e = 0, f = b.path[0][0].parts, g = 0; g < f.length; g++) {
- var j = f[g],
- h = Math.abs(j.x2 - j.x1);
- j = Math.abs(j.y2 - j.y1);
- if (h > d) d = h;
- if (j > e) e = j
- }
- a._use.set(null, "x", 0);
- a._use.set(null, "y", 0);
- a._use.set(null, "width", d);
- a._use.set(null, "height", e);
- if (b = b.style.BitmapMatrix) {
- b = this.utils.toMatrix(b);
- b.a /= 20;
- b.b /= 20;
- b.c /= 20;
- b.d /= 20;
- c.push("translate(" + [b.tx, b.ty] + ")");
- b.tx = 0;
- b.ty = 0;
- c.push(b.__toSvgString())
- }
- a._use.set(null, "transform", c.toString());
- a._use.update();
- a.element.update();
- a.define()
- },
- appendPathToDef: function (a, b) {
- a = a.element.element;
- b = a.getAttributeNS(null, "d") + " " + this.pathToString(b);
- a.setAttributeNS(null, "d", b)
- },
- pathToString: function (a) {
- var b, c, d = [];
- for (var e in a) {
- var f = a[e];
- d.push("M", f[0].x1, f[0].y1);
- for (var g in f) {
- b = f[g];
- if (b.flipped) for (var j = b.parts.length - 1; j >= 0; j--) {
- c = b.parts[j];
- typeof c.cx == "undefined" ? d.push("L", c.x1, c.y1) : d.push("Q", c.cx, c.cy, c.x1, c.y1)
- } else for (j in b.parts) {
- c = b.parts[j];
- typeof c.cx == "undefined" ? d.push("L", c.x2, c.y2) : d.push("Q", c.cx, c.cy, c.x2, c.y2)
- }
- }
- }
- return d.join(" ")
- },
- setPathLineStyle: function (a, b) {
- if (b) {
- var c = {};
- c = b.HasFillFlag ? b.FillType.Color ? {
- thickness: Math.max(b.Width, 1),
- color: this.rgbaToColor(b.FillType.Color)
- } : {
- thickness: 1,
- color: 0
- } : {
- thickness: Math.max(b.Width, 1),
- color: this.rgbaToColor(b.Color)
- };
- a.setStroke(c)
- } else a.setStroke(null)
- },
- setPathFillStyle: function (a, b) {
- if (b) if (b.FillStyleType == fljs.swf.FillStyleTypes.SolidFill) this.setPathSolidFillStyle(a, b);
- else b.def && a.setFill(b.def);
- else a.setFill(null)
- },
- setPathSolidFillStyle: function (a, b) {
- a.setFill({
- type: "Solid",
- color: this.rgbaToColor(b.Color)
- })
- },
- buildFillDef: function (a) {
- if (!a) return null;
- var b = a.FillStyleType,
- c = fljs.swf.FillStyleTypes;
- return b == c.LinearGradientFill || b == c.RadialGradientFill || b == c.FocalRadialGradientFill ? this.buildGradientFillDef(a) : b == c.RepeatingBitmapFill || b == c.ClippedBitmapFill || b == c.NonSmoothedRepeatingBitmapFill || b == c.NonSmoothedClippedBitmapFill ? this.buildBitmapFillDef(a) : null
- },
- buildGradientFillDef: function (a) {
- var b = new fljs.swf.def.GradientFillDef,
- c = [];
- if (a.FillStyleType == fljs.swf.FillStyleTypes.LinearGradientFill) {
- b.create("linearGradient");
- c.push([null, "x1", -819.2], [null, "x2", 819.2])
- } else {
- b.create("radialGradient");
- c.push([null, "cx", 0], [null, "cy", 0], [null, "r", 819.2])
- }
- c.push([null, "gradientUnits", "userSpaceOnUse"]);
- c.push([null, "gradientTransform", this.utils.toSvgMatrixString(a.GradientMatrix)]);
- var d, e = fljs.swf.SpreadMethods;
- switch (a.Gradient.SpreadMode) {
- case e.Pad:
- d = "pad";
- break;
- case e.Reflect:
- d = "reflect";
- break;
- case e.Repeat:
- d = "repeat";
- break
- }
- c.push([null, "spreadMethod", d]);
- var f;
- d = fljs.swf.InterpolationMethods;
- switch (a.Gradient.InterpolationMode) {
- case d.LinearRgb:
- f = "linearRGB";
- break;
- case d.Rgb:
- f = "rgb";
- break
- }
- c.push([null, "color-interpolation", f]);
- a = a.Gradient.GradientRecords;
- for (var g in a) {
- f = a[g];
- d = new fljs.swf.def.GradientFillStopDef;
- d.setColor(this.rgbaToColor(f.Color));
- e = [];
- e.push([null, "offset",
- f.Ratio / 255]);
- d.element.sets(e);
- d.element.update();
- b.addStop(d)
- }
- b.element.sets(c);
- b.define();
- return b
- },
- buildBitmapFillDef: function (a) {
- var b = new fljs.swf.def.BitmapFillDef;
- if (!b.setBitmapId(a.BitmapId)) {
- b.define();
- return b
- }
- var c = [];
- c.push([null, "patternUnits", "userSpaceOnUse"], [null, "x", 0], [null, "y", 0], [null, "width", b.bitmap.Width], [null, "height", b.bitmap.Height]);
- var d = [];
- if (a = a.BitmapMatrix) {
- a = this.utils.toMatrix(a);
- a.a /= 20;
- a.b /= 20;
- a.c /= 20;
- a.d /= 20;
- d.push("translate(" + [a.tx, a.ty] + ")");
- a.tx = 0;
- a.ty =
- 0;
- d.push(a.__toSvgString())
- }
- c.push([null, "patternTransform", d.toString()]);
- b.element.sets(c);
- b.define();
- return b
- },
- rgbaToColor: function (a) {
- var b = (a.Red << 24) + (a.Green << 16) + (a.Blue << 8);
- b |= typeof a.Alpha != "undefined" ? a.Alpha : 255;
- return b
- }
- });
- fljs.swf.tag.DefineShape = function () {};
- fljs.addMethods(fljs.swf.tag.DefineShape, {
- read: function (a) {
- a.beginContext(fljs.swf.tag.DefineShape);
- this.defId = this.ShapeId = a.readUI16();
- this.ShapeBounds = a.readRECT();
- a.stream.align();
- this.Shapes = a.readSHAPEWITHSTYLE();
- a.endContext()
- },
- waitForBitmaps: function () {
- var a = fljs.Player.getInstance();
- this.bitmapIds = this.findBitmaps(this);
- this.waiting = 0;
- var b = fljs.Player.getInstance().mainTimeline.resources,
- c = [];
- for (var d in this.bitmapIds) if (b.waiting(d)) {
- this.waiting += 1;
- b.listen(d, fljs.bind(this.onLoad, this, a))
- } else c.push(d);
- for (var e in c) delete this.bitmapIds[c[e]]
- },
- onLoad: function (a, b) {
- if (this.bitmapIds[b]) {
- delete this.bitmapIds[b];
- this.waiting -= 1
- }
- this.waiting == 0 && this.evaluate(a)
- },
- evaluate: function (a) {
- this.bitmapIds || this.waitForBitmaps();
- if (!(this.waiting > 0)) {
- this.def = (new fljs.swf.build.ShapeBuilder).build(this);
- a.addDefinition(this, this.ShapeId)
- }
- },
- findBitmaps: function (a) {
- var b = {};
- this.findBitmapsForStyles(b, a.Shapes.FillStyles);
- a = a.Shapes.ShapeRecords;
- for (var c in a) {
- var d = a[c];
- d.type == "NONEDGE" && d.StateNewStyles && this.findBitmapsForStyles(b, d.FillStyles)
- }
- return b
- },
- findBitmapsForStyles: function (a, b) {
- var c = fljs.swf.FillStyleTypes;
- for (var d in b) {
- var e = b[d],
- f = e.FillStyleType;
- if (f == c.RepeatingBitmapFill || f == c.ClippedBitmapFill || f == c.NonSmoothedRepeatingBitmapFill || f == c.NonSmoothedClippedBitmapFill) a[e.BitmapId] = true
- }
- },
- build: function (a, b, c) {
- a = new flash.display.Shape;
- a.useTag(this, b, c);
- return a
- }
- });
- fljs.dom = {};
- fljs.dom.Namespace = {
- Svg: "http://www.w3.org/2000/svg",
- Xlink: "http://www.w3.org/1999/xlink"
- };
- fljs.dom.Element = function (a) {
- this.element = a;
- this.changes = []
- };
- fljs.addMethods(fljs.dom.Element, {
- create: function (a, b) {
- if (arguments.length == 1) {
- b = a;
- this.element = document.createElement(b)
- } else this.element = document.createElementNS(a, b);
- this.changes = []
- },
- set: function (a, b, c) {
- if (arguments.length == 2) {
- c = b;
- b = a;
- this.changes.push([b, c])
- } else this.changes.push([a, b, c])
- },
- sets: function (a) {
- this.changes.push.apply(this.changes, a)
- },
- update: function () {
- var a = this.element,
- b = this.changes;
- for (var c in b) {
- var d = b[c];
- d.length == 2 ? a.setAttribute(d[0], d[1]) : a.setAttributeNS(d[0], d[1], d[2])
- }
- this.changes = []
- },
- append: function (a) {
- this.element.appendChild(a.element)
- },
- appendText: function (a) {
- this.element.appendChild(document.createTextNode(a))
- },
- clone: function (a) {
- var b = new fljs.dom.Element;
- b.element = this.element.cloneNode(a);
- b.changes = [];
- return b
- },
- remove: function (a) {
- this.element.removeChild(a.element)
- },
- getElement: function () {
- return this.element
- }
- });
- fljs.swf.build.FontBuilder = function (a, b) {
- this.tag = a;
- this.player = b
- };
- fljs.addMethods(fljs.swf.build.FontBuilder, {
- buildDef: function () {
- var a = this.buildGlyphPaths();
- return this.player.renderTextAsGlyphs ? this.buildFontDef(a) : this.buildShapeDef(a)
- },
- buildFontDef: function (a) {
- var b = this.tag,
- c = this.player.element.getElement().ownerDocument,
- d = c.createElementNS("http://www.w3.org/2000/svg", "font"),
- e = c.createElementNS("http://www.w3.org/2000/svg", "font-face");
- e.setAttributeNS(null, "font-family", "font-" + b.FontId);
- e.setAttributeNS(null, "units-per-em", 51.2);
- d.appendChild(e);
- for (var f in a) {
- e =
- c.createElementNS("http://www.w3.org/2000/svg", "glyph");
- e.setAttributeNS(null, "unicode", String.fromCharCode(b.CodeTable[f]));
- b.FontAdvanceTable && e.setAttributeNS(null, "horiz-adv-x", b.FontAdvanceTable[f] / 20);
- e.setAttributeNS(null, "d", a[f]);
- d.appendChild(e)
- }
- return [{
- element: d
- }]
- },
- buildShapeDef: function (a) {
- var b = this.tag,
- c = [];
- for (var d in a) {
- var e = new fljs.dom.Element;
- e.create(fljs.dom.Namespace.Svg, "path");
- var f = ["font", b.FontId, b.FontFlagsBold, b.FontFlagsItalic, b.CodeTable[d]].join("-");
- if (document.getElementById(f)) rar.rar = rar;
- e.sets([["id", f], ["d", a[d]]]);
- e.update();
- c.push(e)
- }
- return c
- },
- buildGlyphPaths: function () {
- for (var a = [], b = this.tag.GlyphShapeTable, c = 0, d = b.length; c < d; c++) {
- var e = this.buildPath(this.buildGlyph(b[c]));
- a.push(e)
- }
- return a
- },
- buildGlyph: function (a) {
- var b = 0,
- c = 0,
- d = 0,
- e = 0,
- f = 0,
- g = 0;
- a = a.ShapeRecords;
- var j = [],
- h = [],
- m = 1;
- if (this.tag instanceof fljs.swf.tag.DefineFont3) m = 20;
- var k = function (n) {
- return Math.round(n * 100) / 100 / m
- };
- for (var l in a) {
- g = a[l];
- switch (g.type) {
- case "STRAIGHT":
- f = b + g.DeltaX;
- g = c + g.DeltaY;
- h.push({
- x1: k(b),
- y1: k(c),
- x2: k(f),
- y2: k(g)
- });
- b = f;
- c = g;
- break;
- case "CURVED":
- d = b + g.ControlDeltaX;
- e = c + g.ControlDeltaY;
- f = d + g.AnchorDeltaX;
- g = e + g.AnchorDeltaY;
- h.push({
- x1: k(b),
- y1: k(c),
- cx: k(d),
- cy: k(e),
- x2: k(f),
- y2: k(g)
- });
- b = f;
- c = g;
- break;
- case "NONEDGE":
- if (g.StateMoveTo) {
- h.length && j.push(h);
- b = g.MoveDeltaX;
- c = g.MoveDeltaY;
- h = []
- }
- break
- }
- }
- h.length && j.push(h);
- return j
- },
- buildPath: function (a) {
- var b = [],
- c = this.player.renderTextAsGlyphs ? -1 : 1,
- d;
- for (var e in a) {
- var f = a[e];
- b.push("M", f[0].x1, f[0].y1 * c);
- for (var g in f) {
- d = f[g];
- typeof d.cx == "undefined" ? b.push("L", d.x2, d.y2 * c) : b.push("Q", d.cx, d.cy * c, d.x2, d.y2 * c)
- }
- }
- b.length == 0 && b.push("M", 0, 0);
- return b.join(" ")
- }
- });
- fljs.swf.build.FontBuilder.id = 1;
- fljs.swf.tag.DefineFont = function () {};
- fljs.addMethods(fljs.swf.tag.DefineFont, {
- read: function (a) {
- this.FontId = a.readUI16();
- this.OffsetTable = [a.readUI16()];
- var b = this.OffsetTable[0] / 2;
- this.NumGlyphs = b;
- for (var c = 1; c < b; c++) this.OffsetTable.push(a.readUI16());
- this.GlyphShapeTable = [];
- for (c = 0; c < b; c++) this.GlyphShapeTable.push(a.readSHAPE())
- },
- evaluate: function (a) {
- this.CodeTable = [];
- for (var b in this.GlyphShapeTable) this.CodeTable.push(b);
- this.FontName = "font-no-info-" + this.FontId;
- this.FontFlagsItalic = this.FontFlagsBold = false;
- a.fontsWithoutInfo[this.FontId] =
- this;
- b = (new fljs.swf.build.FontBuilder(this, a)).buildDef();
- a.defineFont2(this.FontId, this.GlyphShapeTable, b, this.FontName, this.FontFlagsBold, this.FontFlagsItalic, this.CodeTable)
- }
- });
- fljs.swf.tag.SetBackgroundColor = function () {};
- fljs.addMethods(fljs.swf.tag.SetBackgroundColor, {
- read: function (a) {
- this.BackgroundColor = a.readRGB()
- },
- evaluate: function (a) {
- a.stage.setBackgroundColor_((this.BackgroundColor.Red << 16) + (this.BackgroundColor.Green << 8) + this.BackgroundColor.Blue)
- }
- });
- fljs.swf.tag.DoAbc = function () {};
- fljs.addMethods(fljs.swf.tag.DoAbc, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.Flags = a.readUI32();
- this.Name = a.readString();
- b = b.TagLength - (a.stream.byteIndex - c);
- c = [];
- for (var d = 0; d < b; d++) c.push(String.fromCharCode(a.readUB()));
- this.AbcData = c.join("")
- },
- evaluate: function () {}
- });
- fljs.swf.tag.SoundStreamBlock = function () {};
- fljs.addMethods(fljs.swf.tag.SoundStreamBlock, {
- read: function (a, b) {
- this.SampleCount = a.readUI16();
- this.Mp3SoundData = a.readMp3SoundData(b.TagLength - 2)
- },
- evaluate: function (a, b, c, d) {
- if (d == a.mainTimeline) if (b = d.audioStream) {
- b.shouldBuffer() && b.buffer();
- c = a.mainTimeline.currentFrameIndex_;
- if (!b.playing && b.frameShouldPlay(c)) {
- b.playFrame(c);
- a.sync.start(c)
- }
- }
- },
- duration: function () {
- var a = 0;
- for (var b in this.Mp3SoundData.Mp3Frames) {
- var c = this.Mp3SoundData.Mp3Frames[b],
- d;
- d = c.MpegVersion == 3 ? 1152 : 576;
- var e = {
- 0: 11025,
- 1: 12E3,
- 2: 8E3
- }[c.SamplingRate];
- e *= {
- 0: 1,
- 2: 2,
- 3: 4
- }[c.MpegVersion];
- a += 1E3 * d / e / (c.ChannelMode == 3 ? 1 : 2)
- }
- return a
- }
- });
- fljs.swf.SwfStreamingSoundReader = function (a, b) {
- this.stream = new fljs.swf.SwfStream(new fljs.swf.StringStream(a));
- this.container = b;
- b.soundStream = this;
- this.tagMap = {
- 19: fljs.swf.tag.SoundStreamBlock
- };
- this.currentTimeOffset = this.currentPlayer = 0;
- this.data = [];
- this.dataDurations = [];
- this.container.needAudio();
- for (a = 0; a < 2; a++) {
- b = this.container.audio[a];
- b.currentTimeOffset = 0;
- b.addEventListener("load", fljs.bind(this.onLoadSrc, this, a), true)
- }
- this.lastBufferAt = null;
- this.swfFrames = {};
- this.duration = this.swfFrameNum =
- 0;
- this.playing = false;
- this.nextTime = null;
- this.waitingForLoad = false;
- this.dataOffset = 0;
- this.player = fljs.Player.getInstance()
- };
- fljs.addMethods(fljs.swf.SwfStreamingSoundReader, {
- controlFrame: function () {},
- timeDiff: function (a) {
- var b = this.container.audio[this.currentPlayer];
- return 1E3 * (b.currentTime + b.currentTimeOffset) - this.swfFrames[a]
- },
- currentTime: function () {
- var a = this.container.audio[this.currentPlayer];
- return 1E3 * (a.currentTime + a.currentTimeOffset)
- },
- play: function (a) {
- a = this.swfFrames[a];
- if (a == null) a = 0;
- a /= 1E3;
- this.nextTime = a;
- this.playing = true;
- if (!this.waitingForLoad) {
- var b = this.container.audio[this.currentPlayer];
- b.currentTime =
- a - b.currentTimeOffset;
- b.fljsPlaying = true;
- this.player.playing && b.play()
- }
- },
- stop: function () {
- this.playing = false;
- var a = this.container.audio[this.currentPlayer];
- a.fljsPlaying = false;
- a.pause()
- },
- silence: function () {
- return ""
- },
- onLoadSrc: function (a) {
- var b = this.container.audio[a],
- c = this.container.audio[1 - a];
- b.fljsWaiting = false;
- if (this.nextTime != null) {
- b.currentTime = this.nextTime - b.currentTimeOffset;
- this.nextTime = null
- } else b.currentTime = c.currentTime + c.currentTimeOffset - b.currentTimeOffset;
- if (this.playing) {
- b.fljsPlaying =
- true;
- this.player.playing && b.play()
- }
- c.fljsPlaying = false;
- c.pause();
- this.currentPlayer = a;
- this.waitingForLoad = false
- },
- processBlock: function (a, b) {
- a = new fljs.swf.StringStream(this.stream.stream.buffer);
- a.byteIndex = b.Mp3SoundData.byteIndex;
- a = a.readBytes(b.Mp3SoundData.byteCount).join("");
- this.data.push(String(a));
- if (b.SampleCount) {
- a = b.duration();
- b = a * (b.Mp3SoundData.SeekSamples / b.SampleCount);
- this.swfFrames[this.swfFrameNum] = this.duration + b;
- this.sync && this.sync.setFrameTime(this.swfFrameNum, this.duration + b);
- this.duration += a
- } else a = 0;
- this.dataDurations.push(a / 1E3);
- this.blocks += 1;
- return this.blocks < fljs.swf.SwfStreamingSoundReader.bufferBlocks
- },
- buffer: function () {
- this.blocks = 0;
- this.readTags(fljs.bind(this.processBlock, this), this.stream.stream.byteIndex);
- for (var a = this.container.audio[this.currentPlayer], b = this.container.audio[1 - this.currentPlayer]; this.currentTimeOffset + this.dataDurations[this.dataOffset] < a.currentTime + a.currentTimeOffset;) {
- this.currentTimeOffset += this.dataDurations[this.dataOffset];
- this.dataOffset += 1
- }
- a = "data:audio/mpeg;base64," + btoa(this.data.slice(this.dataOffset).join(""));
- b.currentTimeOffset = this.currentTimeOffset;
- b.setAttribute("src", a);
- this.waitingForLoad = true;
- b.fljsWaiting = true;
- b.load();
- this.lastBufferAt = fljs.now()
- },
- readTags: function (a, b) {
- var c = fljs.console("soundstream");
- if (b) this.stream.stream.seek(b);
- else this.stream.header = this.stream.readSwfHeader();
- for (var d, e; this.stream.hasMore();) {
- d = this.stream.readRecordHeader();
- e = this.tagMap[d.TagType];
- b = this.stream.stream.byteIndex;
- if (e) {
- e = new e;
- e.read(this.stream, d, this, a, fljs.Player.getInstance().stage);
- if (!a(d, e)) return
- } else {
- this.stream.skipBytes(d.TagLength);
- if (d.TagType == 1) this.swfFrameNum += 1
- }
- if (this.stream.stream.byteIndex != b + d.TagLength) {
- c.info("expected " + (b + d.TagLength) + " but got " + this.stream.stream.byteIndex);
- return
- }
- }
- }
- });
- fljs.swf.SwfStreamingSoundReader.rebufferDuration = 9E4;
- fljs.swf.SwfStreamingSoundReader.bufferBlocks = 4500;
- fljs.swf.tag.SoundStreamHead = function () {};
- fljs.addMethods(fljs.swf.tag.SoundStreamHead, {
- read: function (a) {
- a.readUB(4);
- this.PlaybackSoundRate = a.readUB(2);
- this.PlaybackSoundSize = a.readUB(1);
- this.PlaybackSoundType = a.readUB(1);
- this.StreamSoundCompression = a.readUB(4);
- this.StreamSoundRate = a.readUB(2);
- this.StreamSoundSize = a.readUB(1);
- this.StreamSoundType = a.readUB(1);
- this.StreamSoundSampleCount = a.readUI16();
- if (this.StreamSoundCompression == 2) this.LatencySeek = a.readSI16()
- },
- evaluate: function (a, b, c, d) {
- if (!this.processed) {
- d.soundStreamHead = this;
- if (d == a.mainTimeline) {
- d.audioStream = fljs.agent.browser == "Firefox" ? new fljs.player.ExtAudioStream(a, d, "audio/" + a.name + "-" + (d.def ? d.def.defId : "main") + ".wav") : new fljs.player.SwfAudioStream(a, d);
- a.sync = new fljs.player.AudioSync(a.header.FrameRate);
- a.sync.setAudio(d.audioStream);
- d.audioStream.buffer()
- }
- this.processed = true
- }
- }
- });
- fljs.swf.tag.DefineFont2 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineFont2, {
- read: function (a) {
- var b;
- this.FontId = a.readUI16();
- this.FontFlagsHasLayout = a.readUB(1);
- this.FontFlagsShiftJIS = a.readUB(1);
- this.FontFlagsSmallText = a.readUB(1);
- this.FontFlagsANSI = a.readUB(1);
- this.FontFlagsWideOffsets = a.readUB(1);
- this.FontFlagsWideCodes = a.readUB(1);
- a.FontFlagsWideCodes = this.FontFlagsWideCodes;
- this.FontFlagsItalic = a.readUB(1);
- this.FontFlagsBold = a.readUB(1);
- this.LanguageCode = a.readLangCode();
- this.FontNameLen = a.readUI8();
- var c = [];
- for (b = 0; b < this.FontNameLen; b++) c.push(String.fromCharCode(a.readUI8()));
- this.FontName = c.join("");
- this.NumGlyphs = a.readUI16();
- this.OffsetTable = [];
- if (this.FontFlagsWideOffsets) {
- for (b = 0; b < this.NumGlyphs; b++) this.OffsetTable.push(a.readUI32());
- this.CodeTableOffset = a.readUI32()
- } else {
- for (b = 0; b < this.NumGlyphs; b++) this.OffsetTable.push(a.readUI16());
- this.CodeTableOffset = a.readUI16()
- }
- this.GlyphShapeTable = [];
- for (b = 0; b < this.NumGlyphs; b++) this.GlyphShapeTable.push(a.readShape());
- this.CodeTable = [];
- if (this.FontFlagsWideCodes) for (b = 0; b < this.NumGlyphs; b++) this.CodeTable.push(a.readUI16());
- else for (b = 0; b < this.NumGlyphs; b++) this.CodeTable.push(a.readUI8());
- if (this.FontFlagsHasLayout) {
- this.FontAscent = a.readSI16();
- this.FontDescent = a.readSI16();
- this.FontLeading = a.readSI16();
- this.FontAdvanceTable = [];
- for (b = 0; b < this.NumGlyphs; b++) this.FontAdvanceTable.push(a.readSI16());
- this.FontBoundsTable = [];
- for (b = 0; b < this.NumGlyphs; b++) {
- this.FontBoundsTable.push(a.readRECT());
- a.stream.align()
- }
- this.KerningCount = a.readUI16();
- this.FontKerningTable = [];
- for (b = 0; b < this.KerningCount; b++) this.FontKerningTable.push(a.readKerningRecord())
- }
- },
- evaluate: function (a) {
- var b = (new fljs.swf.build.FontBuilder(this, a)).buildDef();
- a.defineFont2(this.FontId, this.GlyphShapeTable.length, b, this.FontName, this.FontFlagsBold, this.FontFlagsItalic, this.CodeTable, this)
- }
- });
- flash.text = {};
- flash.text.TextFormatAlign = function () {};
- fljs.addConstants(flash.text.TextFormatAlign, {
- CENTER: "center",
- JUSTIFY: "justify",
- LEFT: "left",
- RIGHT: "right"
- });
- flash.text.TextFormat = function (a, b, c, d, e, f, g, j, h, m, k, l, n, p) {
- if (typeof a == "undefined") a = null;
- this.font = a;
- if (typeof b == "undefined") b = null;
- this.size = b;
- if (typeof c == "undefined") c = null;
- this.color = c;
- if (typeof d == "undefined") d = null;
- this.bold = d;
- if (typeof e == "undefined") e = null;
- this.italic = e;
- if (typeof f == "undefined") f = null;
- this.underline = f;
- if (typeof g == "undefined") g = null;
- this.url = g;
- if (typeof j == "undefined") j = null;
- this.target = j;
- if (typeof h == "undefined") h = flash.text.TextFormatAlign.LEFT;
- this.align = h;
- if (typeof m == "undefined") m = null;
- this.leftMargin = m;
- if (typeof k == "undefined") k = null;
- this.rightMargin = k;
- if (typeof l == "undefined") l = null;
- this.indent = l;
- if (typeof n == "undefined") n = null;
- this.leading = n;
- if (typeof p == "undefined") p = 1;
- this.alpha = p
- };
- flash.text.TextField = function () {
- flash.display.InteractiveObject.call(this);
- var a = this.element_ = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "g");
- this._clipElement.element.appendChild(this.element_.getElement());
- this.font_ = {
- family: "times",
- size: 12
- };
- this.fill_ = {
- color: 0
- };
- this.textFormat_ = new flash.text.TextFormat(this.font_.family, this.font_.size, this.fill_.color, false, false, false, null, null, flash.text.TextFormatAlign.LEFT, 0, 0, 0, 0);
- if (fljs.Player.getInstance().renderTextAsGlyphs) {
- a = Math.round(this.font_.size * 0.85);
- var b = Math.round(0 - this.font_.size / 2 + a);
- a = this._text = this.text_ = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "text");
- a.sets([[null, "fill", this.__colorToSvgString(this.font_.color)], [null, "font-family", this.font_.family], [null, "font-size", this.font_.size], [null, "font-family", this.font_.family], [null, "x", 0], [null, "y", b]]);
- a.update();
- this.element_.append(a)
- } else {
- a = this._text = new fljs.dom.Element;
- a.create(fljs.dom.Namespace.Svg, "g");
- a.update();
- this.element_.append(a)
- }
- this._textContent = ""
- };
- fljs.inherits(flash.text.TextField, flash.display.InteractiveObject);
- fljs.addMethods(flash.text.TextField, {
- setTextMatrix: function (a) {
- this._textMatrix = a;
- this._text.set(null, 'transform', a.__toSvgString());
- this._text.update()
- },
- __setSpans: function (a) {
- var b = [];
- this.spans = [];
- if (fljs.Player.getInstance().renderTextAsGlyphs) {
- var c = this.text_.getElement().ownerDocument;
- for (var d in a) {
- var e = a[d],
- f = c.createElementNS("http://www.w3.org/2000/svg", "tspan"),
- g = e.format.indent,
- j = [g];
- for (var h in e.advances) {
- g += e.advances[h];
- j.push(g)
- }
- f.appendChild(c.createTextNode(e.text));
- f.setAttributeNS(null, "x", j.join(" "));
- f.setAttributeNS(null, "y", e.format.leading);
- f.setAttributeNS(null, "font-size", e.format.size);
- f.setAttributeNS(null, "fill", this.__colorToSvgString(e.format.color));
- f.setAttributeNS(null, "fill-opacity", this.textOpacityWithXform(e.format.alpha));
- this.text_.getElement().appendChild(f);
- this.spans.push({
- def: e,
- element: f
- });
- b.push(e.text)
- }
- } else {
- fljs.Player.getInstance();
- c = this._text;
- for (d in a) {
- e = a[d];
- f = e.format;
- j = e.advances;
- var m = new fljs.dom.Element;
- m.create(fljs.dom.Namespace.Svg, "g");
- m.sets([["transform", ["translate(", f.indent, ",", f.leading, ")"].join("")], ["fill", this.__colorToSvgString(f.color)],
- ["fill-opacity", this.opacityWithXform(f.alpha)]]);
- m.update();
- h = g = 0;
- for (var k = e.text.length; h < k; h++) {
- var l = new fljs.dom.Element;
- l.create(fljs.dom.Namespace.Svg, "use");
- var n = ["font", f.fontid, f.bold, f.italic, e.text.charCodeAt(h)].join("-");
- l.sets([[fljs.dom.Namespace.Xlink, "xlink:href", "#" + n], ["transform", ["translate(", g, ")scale(", f.size * 20 / 1024, ")"].join("")]]);
- l.update();
- m.append(l);
- g += j[h]
- }
- c.append(m);
- this.spans.push({
- def: e,
- element: m
- });
- b.push(e.text)
- }
- }
- this._textContent = b.join("")
- },
- __colorToSvgString: function (a) {
- var b =
- a >> 16 & 255,
- c = a >> 8 & 255;
- a = a & 255;
- var d = this.getTransform().getConcatenatedColorTransform();
- if (!d.__default) {
- b = Math.max(0, Math.min(255, Math.round(b * d.redMultiplier + d.redOffset)));
- c = Math.max(0, Math.min(255, Math.round(c * d.greenMultiplier + d.greenOffset)));
- a = Math.max(0, Math.min(255, Math.round(a * d.blueMultiplier + d.blueOffset)))
- }
- return "rgb(" + [b, c, a] + ")"
- },
- opacityWithXform: function (a) {
- return a
- },
- textOpacityWithXform: function (a) {
- var b = this.getTransform().getConcatenatedColorTransform();
- return b.__default ? a : Math.max(0, Math.min(255, Math.round(a * 255 * b.alphaMultiplier + b.alphaOffset))) / 255
- },
- __setColorTransform: function (a) {
- if (fljs.Player.getInstance().renderTextAsGlyphs) for (var b in this.spans) {
- var c = this.spans[b];
- a = c.def;
- c = c.element;
- c.setAttributeNS(null, "color", this.__colorToSvgString(a.format.color));
- c.setAttributeNS(null, "fill-opacity", this.textOpacityWithXform(a.format.alpha))
- } else {
- fljs.base(this, "__setColorTransform", a);
- for (b in this.spans) {
- c = this.spans[b];
- a = c.def;
- c = c.element;
- c.sets([[null, "color", this.__colorToSvgString(a.format.color)]]);
- c.update()
- }
- }
- },
- setHeight: function (a) {
- this.height_ = a
- },
- setWidth: function (a) {
- this.width_ = a
- },
- getDefaultTextFormat: function () {
- return this.textFormat_
- },
- setDefaultTextFormat: function (a) {
- if (fljs.Player.getInstance().renderTextAsGlyphs) {
- var b = this.textFormat_;
- this.textFormat_ = a;
- if (b.align != this.textFormat_.align) switch (this.textFormat_.align) {
- case flash.text.TextFormatAlign.LEFT:
- this.text_.getElement().setAttribute("x", this.x);
- this.text_.getElement().setAttribute("text-anchor", "start");
- break;
- case flash.text.TextFormatAlign.CENTER:
- this.text_.getElement().setAttribute("x", this.x + this.width / 2);
- this.text_.getElement().setAttribute("text-anchor", "middle");
- break;
- case flash.text.TextFormatAlign.LEFT:
- this.text_.getElement().setAttribute("x", this.x + this.width);
- this.text_.getElement().setAttribute("text-anchor", "end");
- break;
- default:
- }
- if (b.font != this.textFormat_.font) {
- a = fljs.Player.getInstance().lookupFontByStyle(this.textFormat_.font, this.textFormat_.bold, this.textFormat_.italic);
- this.text_.getElement().setAttributeNS(null, "font-family", a)
- }
- if (b.bold != this.textFormat_.bold) {
- a =
- this.textFormat_.bold ? "bold" : "";
- this.text_.getElement().setAttribute("font-weight", a)
- }
- if (b.italic != this.textFormat_.italic) {
- a = this.textFormat_.italic ? "italic" : "";
- this.text_.getElement().setAttribute("font-style", a)
- }
- if (b.color != this.textFormat_.color) {
- this.fill_ = {
- color: this.textFormat_.color
- };
- this.text_.set(null, "fill", this.__colorToSvgString(this.fill_.color))
- }
- if (b.size != this.textFormat_.size) {
- this.font_ = {
- size: this.textFormat_.size,
- family: this.textFormat_.font
- };
- this.text_.getElement().setAttribute("font-size", this.textFormat_.size)
- }
- b.alpha != this.textFormat_.alpha && this.text_.getElement().setAttribute("opacity", this.textFormat_.alpha)
- }
- }
- });
- fljs.swf.tag.DefineEditText = function () {};
- fljs.addMethods(fljs.swf.tag.DefineEditText, {
- read: function (a) {
- this.CharacterId = a.readUI16();
- this.Bounds = a.readRECT();
- a.stream.align();
- this.HasText = a.readUB(1);
- this.WordWrap = a.readUB(1);
- this.Multiline = a.readUB(1);
- this.Password = a.readUB(1);
- this.ReadOnly = a.readUB(1);
- this.HasTextColor = a.readUB(1);
- this.HasMaxLength = a.readUB(1);
- this.HasFont = a.readUB(1);
- this.HasFontClass = a.readUB(1);
- this.AutoSize = a.readUB(1);
- this.HasLayout = a.readUB(1);
- this.NoSelect = a.readUB(1);
- this.Border = a.readUB(1);
- this.WasStatic = a.readUB(1);
- this.HTML = a.readUB(1);
- this.UseOutlines = a.readUB(1);
- if (this.HasFont) this.FontId = a.readUI16();
- if (this.HasFontClass) this.FontClass = a.readString();
- if (this.HasFont) this.FontHeight = a.readUI16() / a.twipsPerPixel;
- if (this.HasTextColor) this.TextColor = a.readRGBA();
- if (this.HasMaxLength) this.MaxLength = a.readUI16();
- if (this.HasLayout) {
- this.Align = a.readUI8();
- this.LeftMargin = a.readUI16();
- this.RightMargin = a.readUI16();
- this.Indent = a.readUI16();
- this.Leading = a.readUI16()
- }
- this.VariableName = a.readString();
- if (this.HasText) this.InitialText = a.readString()
- },
- evaluate: function (a) {
- a.addDefinition(this, this.CharacterId)
- },
- _build: function (a) {
- a = a.element.getElement().ownerDocument;
- var b = a.createElement("text");
- b.setAttribute("font-family", "font-" + String(this.FontId));
- b.setAttribute("font-size", this.FontHeight);
- var c = this.TextColor,
- d = 0;
- d += c.Red << 16;
- d += c.Green << 8;
- d += c.Blue;
- b.setAttribute("fill", d);
- var e, f;
- if (this.Align) {
- if (this.Align == 1) {
- e = this.Bounds.Xmax;
- f = "end"
- }
- } else {
- e = this.Bounds.Xmin;
- f = "start"
- }
- b.setAttribute("x", e);
- b.setAttribute("text-anchor", f);
- b.setAttribute("y", this.Bounds.Ymax);
- b.appendChild(a.createTextNode(this.InitialText ? this.InitialText : ""));
- return b
- },
- build: function (a, b) {
- return this._buildTextField(a, b)
- },
- _buildTextField: function (a, b) {
- var c = new flash.text.TextField;
- b && c.getTransform().setColorTransform(b);
- c.text = this.InitialText;
- c.x = this.Bounds.Xmin;
- c.y = this.Bounds.Ymin;
- c.setWidth(this.Bounds.Xmax - this.Bounds.Xmin);
- c.setHeight(this.Bounds.Ymax - this.Bounds.Ymin);
- b = new flash.text.TextFormat;
- switch (this.Align) {
- case 0:
- b.align = flash.text.TextFormatAlign.LEFT;
- break;
- case 1:
- b.align = flash.text.TextFormatAlign.RIGHT;
- break;
- case 2:
- b.align = flash.text.TextFormatAlign.CENTER;
- break;
- case 3:
- b.align = flash.text.TextFormatAlign.JUSTIFY;
- break
- }
- if (a = a.fonts2[this.FontId]) {
- b.bold = a.bold;
- b.italic = a.italic;
- b.font = a.name
- }
- a = this.TextColor;
- var d = 0;
- d += a.Red << 16;
- d += a.Green << 8;
- d += a.Blue;
- b.color = d;
- b.leading = this.Leading;
- b.leftMargin = this.LeftMargin;
- b.rightMargin = this.RightMargin;
- b.indent = this.Indent;
- b.size = this.FontHeight;
- c.setDefaultTextFormat(b);
- return c
- }
- });
- fljs.swf.tag.RemoveObject2 = function () {};
- fljs.addMethods(fljs.swf.tag.RemoveObject2, {
- read: function (a) {
- this.Depth = a.readUI16()
- },
- evaluate: function (a, b, c, d) {
- d.removeChildAt(this.Depth)
- }
- });
- fljs.swf.build.JpegBuilder = function () {};
- fljs.addMethods(fljs.swf.build.JpegBuilder, {
- parseJpeg: function (a, b, c, d) {
- b = String(b.readBytes(c).join(""));
- var e = new fljs.swf.BigEndianStringStream(b),
- f, g, j = fljs.Player.getInstance(),
- h;
- if (e.nextUShort() == 65497) {
- h = d && j.jpegTables ? 6 : 4;
- e.nextUShort();
- e.nextUShort()
- } else h = d && j.jpegTables ? 2 : 0;
- for (var m = 0; e.byteIndex < c;) {
- f = e.nextUShort();
- g = e.nextUShort();
- if (f == 65472) {
- e.nextUByte();
- a.Height = e.nextUShort();
- a.Width = e.nextUShort();
- break
- }
- if (f == 65497) m = e.byteIndex - 6;
- else e.skipBytes(g - 2)
- }
- if (m) b = b.substr(0, m) + b.substr(m + 6);
- if (h) b = b.substr(h);
- a.DataUri = "data:image/jpeg;base64," + btoa((d && j.jpegTables ? j.jpegTables : "") + b)
- },
- parseJpegTables: function (a, b, c) {
- b = String(b.readBytes(c).join(""));
- var d = new fljs.swf.BigEndianStringStream(b),
- e = 0;
- if (d.nextUShort() == 65497) {
- e = 4;
- d.nextUShort();
- d.nextUShort()
- }
- a.JpegTables = b.substr(e, c - e - 2)
- }
- });
- fljs.swf.tag.DefineBitsJPEG2 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineBitsJPEG2, {
- read: function (a, b) {
- this.CharacterId = a.readUI16();
- b = b.TagLength - 2;
- (new fljs.swf.build.JpegBuilder).parseJpeg(this, a, b, true)
- },
- evaluate: function (a) {
- this.defId = "image" + this.CharacterId;
- a.addDefinition(this, this.CharacterId);
- a = new fljs.swf.def.BitmapDef;
- a.setCharaId(this.defId);
- a.element.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.DataUri], [null, "x", 0], [null, "y", 0], [null, "width", this.Width], [null, "height", this.Height]]);
- a.define();
- this.def = a
- }
- });
- flash.display.Sprite = function () {
- flash.display.DisplayObjectContainer.call(this)
- };
- fljs.inherits(flash.display.Sprite, flash.display.DisplayObjectContainer);
- fljs.addMethods(flash.display.Sprite, {
- startDrag: function () {},
- stopDrag: function () {},
- getGraphics: function () {
- return this.graphics_
- }
- });
- flash.display.Scene = function () {};
- flash.ui = {};
- flash.ui.Keyboard = function () {};
- fljs.addStaticMethods(flash.ui.Keyboard, {
- isAccessible: function () {}
- });
- fljs.addConstants(flash.ui.Keyboard, {
- BACKSPACE: 8,
- CAPS_LOCK: 20,
- CONTROL: 17,
- DELETE: 46,
- DOWN: 40,
- END: 35,
- ENTER: 13,
- ESCAPE: 27,
- F1: 112,
- F10: 121,
- F11: 122,
- F12: 123,
- F13: 124,
- F14: 125,
- F15: 126,
- F2: 113,
- F3: 114,
- F4: 115,
- F5: 116,
- F6: 117,
- F7: 118,
- F8: 119,
- F9: 120,
- HOME: 36,
- INSERT: 45,
- LEFT: 37,
- NUMPAD_0: 96,
- NUMPAD_1: 97,
- NUMPAD_2: 98,
- NUMPAD_3: 99,
- NUMPAD_4: 100,
- NUMPAD_5: 101,
- NUMPAD_6: 102,
- NUMPAD_7: 103,
- NUMPAD_8: 104,
- NUMPAD_9: 105,
- NUMPAD_ADD: 107,
- NUMPAD_DECIMAL: 110,
- NUMPAD_DIVIDE: 111,
- NUMPAD_ENTER: 108,
- NUMPAD_MULTIPLY: 106,
- NUMPAD_SUBTRACT: 109,
- PAGE_DOWN: 34,
- PAGE_UP: 33,
- RIGHT: 39,
- SHIFT: 16,
- SPACE: 32,
- TAB: 9,
- UP: 38
- });
- fljs.swf.AudioStreamReader = function (a, b) {
- this.player = a;
- this.delegate = b;
- this.reader = new fljs.swf.TagReader(a.parser.reader.stream.stream.buffer);
- this.reader.readSwfHeader()
- };
- fljs.addMethods(fljs.swf.AudioStreamReader, {
- hasMore: function () {
- return this.reader.stream.hasMore()
- },
- read: function (a) {
- for (var b = 0, c = this.delegate, d = this.reader, e = [0]; d.stream.hasMore();) {
- var f = d.readTagHeader();
- switch (f.tagClass()) {
- case fljs.swf.tag.SoundStreamBlock:
- f = d.readTag(f);
- c.onSoundStreamBlockTag(f, null, e[0]);
- b++;
- if (b == a) return;
- break;
- case fljs.swf.tag.ShowFrame:
- f = d.readTag(f);
- c.onShowFrameTag(f, null, e[0]);
- e[0] += 1;
- break;
- default:
- d.skipTag(f);
- c.onUnknownTag && c.onUnknownTag(f, null, e[0]);
- break
- }
- }
- }
- });
- fljs.player = {};
- fljs.player.ResourceManager = function () {
- this.frames = {};
- this.res = {};
- this.streams = {};
- this.listeners = {}
- };
- fljs.addMethods(fljs.player.ResourceManager, {
- addToFrame: function (a, b) {
- this.frames[b] || (this.frames[b] = {});
- this.frames[b][a] = true;
- this.res[a] = b
- },
- remove: function (a) {
- if (this.listeners[a]) for (var b in this.listeners[a]) this.listeners[a][b](a);
- b = this.res[a];
- delete this.listeners[a];
- delete this.frames[b][a];
- delete this.res[a]
- },
- addStream: function (a) {
- this.streams[a.id] = a
- },
- frameReady: function (a) {
- for (var b = 0; b <= a; b++) {
- var c = this.frames[a];
- if (c) for (var d in c) return false
- }
- for (b in this.streams) if (!this.streams[b].frameReady(a)) return false;
- return true
- },
- listen: function (a, b) {
- var c = this.listeners[a];
- c || (c = this.listeners[a] = []);
- c.push(b)
- },
- waiting: function (a) {
- return a in this.res
- },
- newId: function () {
- return fljs.player.ResourceManager.id++
- }
- });
- fljs.player.ResourceManager.id = 1;
- fljs.player.ExtAudioStream = function (a, b, c) {
- this.id = b.resources.newId();
- b.resources.addStream(this);
- b = this.audio = a.allocAudio();
- b.addEventListener("canplaythrough", fljs.bind(this.onAudioLoad, this), true);
- b.setAttribute("src", c);
- b.load();
- this.frames = {};
- this.playing = false;
- this.audioStreamReader = new fljs.swf.AudioStreamReader(a, this);
- this.duration = 0;
- this.maxFrame = -1
- };
- fljs.addMethods(fljs.player.ExtAudioStream, {
- pingLoad: function () {},
- frameReady: function (a) {
- if (this.maxFrame < a) return false;
- if (typeof this.frames[a] != "undefined") return true;
- else {
- for (a = a; a > 0 && typeof this.frames[a] == "undefined";) a--;
- return a == 0 ? true : this.frameReady(a)
- }
- },
- frameShouldPlay: function (a) {
- for (a = a; a > 0;) {
- if (a in this.frames) return !!this.frames[a];
- a--
- }
- return false
- },
- setFrameDuration: function (a, b) {
- this.frames[a] = b
- },
- onAudioLoad: function () {
- fljs.console("audio").info("onAudioLoad: " + this.audio.readyState + ", " + this.audio.duration);
- if (!this.started && this.playing) {
- this.audio.currentTime = this.frames[this.frame];
- this.audio.play()
- }
- this.started = true
- },
- playFrame: function (a) {
- fljs.console("audio").info("playFrame:" + this.audio.readyState);
- if (this.audio.readyState >= 2) {
- this.frame = a;
- this.audio.currentTime = this.frames[a];
- this.audio.play();
- this.started = true
- }
- this.playing = true
- },
- pause: function () {
- this.audio.pause();
- this.playing = false
- },
- controlsFrame: function () {},
- currentTime: function () {
- return this.audio.currentTime * 1E3
- },
- setSync: function (a) {
- this.sync = a
- },
- shouldBuffer: function () {
- var a = fljs.now() - this.lastBufferAt;
- return !this.lastBufferAt || a > fljs.swf.SwfStreamingSoundReader.rebufferDuration
- },
- buffer: function () {
- var a = this.audioStreamReader;
- a.hasMore() && a.read(fljs.swf.SwfStreamingSoundReader.bufferBlocks);
- this.lastBufferAt = fljs.now()
- },
- onSoundStreamBlockTag: function (a, b, c) {
- this.maxFrame = c;
- b = a.duration();
- a = this.duration + b * (a.Mp3SoundData.SeekSamples / a.SampleCount);
- this.frames[c] = a / 1E3;
- this.duration += b;
- this.sync.setFrameTime(c, a)
- },
- onShowFrameTag: function () {}
- });
- fljs.player.SwfAudioStream = function (a, b) {
- this.id = b.resources.newId();
- b.resources.addStream(this);
- this.player = a;
- this.target = b;
- this.soundStream = new fljs.swf.SwfStreamingSoundReader(a.parser.reader.stream.stream.buffer, b);
- this.playing = false
- };
- fljs.addMethods(fljs.player.SwfAudioStream, {
- pingLoad: function () {},
- frameReady: function (a) {
- if (typeof this.soundStream.swfFrames[a] != "undefined") return this.soundStream.duration >= this.soundStream.swfFrames[a];
- else {
- for (a = a; a > 0 && typeof this.soundStream.swfFrames[a] == "undefined";) a--;
- return a == 0 ? true : this.frameReady(a)
- }
- },
- frameShouldPlay: function (a) {
- for (a = a; a > 0;) {
- if (a in this.soundStream.swfFrames) return true;
- a--
- }
- return false
- },
- setFrameDuration: function () {},
- playFrame: function (a) {
- this.soundStream.play(a);
- this.playing = true
- },
- pause: function () {
- this.soundStream.stop();
- this.playing = false
- },
- controlsFrame: function (a) {
- return this.soundStream.controlFrame(a)
- },
- timeDiff: function (a) {
- return this.soundStream.timeDiff(a)
- },
- currentTime: function () {
- return this.soundStream.currentTime()
- },
- setSync: function (a) {
- this.soundStream.sync = a
- },
- shouldBuffer: function () {
- var a = fljs.now() - this.soundStream.lastBufferAt;
- return !this.soundStream.lastBufferAt || a > fljs.swf.SwfStreamingSoundReader.rebufferDuration
- },
- buffer: function () {
- this.soundStream.buffer()
- }
- });
- flash.display.MovieClip = function () {
- flash.display.Sprite.call(this);
- var a = new flash.display.Scene;
- a.labels = [];
- a.name = "Scene 1";
- a.numFrames = 1;
- this.frameData_ = [{
- scripts: [],
- parts: [],
- tags: [],
- label: "",
- repeat: false}];
- this.labels_ = {};
- this.sceneIndices_ = {};
- this.currentSceneIndex_ = 0;
- this.scenes_ = [a];
- this.currentFrameIndex_ = 0;
- this.currentLabel_ = null;
- this._enabled = false;
- this.totalFrames_ = this.framesLoaded_ = 1;
- this.next_ = null;
- this.playing_ = true;
- this.audio = [];
- fljs.Player.getInstance();
- this.id = flash.display.MovieClip.id++;
- this.element_.getElement().setAttribute("id", "mc" + this.id);
- this.__buttonStateDown = this.__buttonStateOver = this.firstFrame = false;
- this.resources = new fljs.player.ResourceManager
- };
- fljs.inherits(flash.display.MovieClip, flash.display.Sprite);
- fljs.addMethods(flash.display.MovieClip, {
- gotoAndPlay: function (a, b) {
- this.gotoAnd_(a, b, true)
- },
- gotoAndStop: function (a, b) {
- this.gotoAnd_(a, b, false)
- },
- gotoAnd_: function (a, b, c) {
- var d, e;
- if (typeof a.valueOf() == "string") if (d = this.labels_[a]) {
- d = d.frame - 1;
- e = 0
- } else return;
- else if (!b) {
- d = a - 1;
- if (d == -1) d = 0;
- a = this.globalFrameIndexToLocal_(d);
- d = a[0];
- e = a[1]
- }
- this.next_ = {
- frameIndex: d,
- sceneIndex: e,
- play: c
- };
- this.next_.clear = d != this.currentFrameIndex_ + 1
- },
- globalFrameIndexToLocal_: function (a) {
- for (var b = 0; a >= this.scenes_[b].numFrames;) {
- a -= this.scenes_[b].numFrames;
- b += 1
- }
- return [a, b]
- },
- nextFrame: function () {
- var a = this.currentFrameIndex_ + 1,
- b = this.currentSceneIndex_;
- if (a == this.scenes_[this.currentSceneIndex_].numFrames) if (this.totalFrames_ > 1) {
- a = 0;
- b += 1;
- if (b == this.scenes_.length) b = 0
- } else {
- this.next_ = null;
- return
- }
- this.next_ = {
- frameIndex: a,
- sceneIndex: b,
- play: this.next_ ? this.next_.play : this.playing_
- }
- },
- nextScene: function () {
- var a = this.currentSceneIndex_ + 1;
- if (a == this.scenes_.length) a = 0;
- this.next_ = {
- frameIndex: 0,
- sceneIndex: a,
- play: true
- }
- },
- play: function () {
- this.next_ =
- this.next_ ? {
- frameIndex: this.next_.frameIndex,
- sceneIndex: this.next_.sceneIndex,
- play: true,
- clear: this.next_.clear
- } : {
- frameIndex: this.currentFrameIndex_,
- sceneIndex: this.currentSceneIndex_,
- play: true
- }
- },
- prevFrame: function () {
- var a = this.currentFrameIndex_ - 1,
- b = this.currentSceneIndex_;
- if (a == -1) {
- b -= 1;
- if (b == -1) b = this.scenes_.length - 1;
- a = this.scenes_[b].numFrames - 1
- }
- this.next_ = {
- frameIndex: a,
- sceneIndex: b,
- play: this.next_ ? this.next_.play : this.playing_
- }
- },
- prevScene: function () {
- var a = this.currentSceneIndex_ - 1;
- if (a == -1) a = this.scenes_.length - 1;
- frameIndex = this.scenes_[a].numFrames - 1;
- this.next_ = {
- frameIndex: frameIndex,
- sceneIndex: a,
- play: true
- }
- },
- stop: function () {
- var a;
- if (this.next_) a = this.next_.clear;
- this.next_ = {
- frameIndex: this.currentFrameIndex_,
- sceneIndex: this.currentSceneIndex_,
- play: false,
- stop: true,
- clear: a
- }
- },
- clear: function () {
- for (var a in this.displayList_) this.removeChildAt(a)
- },
- onNewFrame: function () {
- if (this.getStage()) if (this.frameReady(this.currentFrameIndex_)) {
- this.pendingFrame = false;
- var a = this.frameData_[this.currentFrameIndex_];
- if (a.label) this.currentLabel_ = a.label;
- for (var b = 0; b < a.tags.length; b++) {
- var c = a.tags[b];
- c[0] && c[0].evaluate(fljs.Player.getInstance(), null, null, this)
- }
- if (a.parts) for (b in a.parts) this.addChildAt(a.parts[b], b)
- } else this.pendingFrame = true
- },
- onEnterFrame: function () {
- var a = false;
- if (a = this.pendingFrame ? true : this.pickNextFrame()) {
- this.onNewFrame();
- if (this.pendingFrame) return
- }(a = this._as2Object) && a._onEnterFrame && fljs.Player.getInstance().interpreter.callback(a, a._onEnterFrame)
- },
- onCreate: function () {
- this.next_ = {
- frameIndex: 0,
- sceneIndex: 0,
- play: !this._enabled && this.totalFrames_ > 1
- };
- this.setCurrentFrame();
- this.onNewFrame()
- },
- setCurrentFrame: function () {
- this.updateSoundStream();
- this.currentFrameIndex_ = this.next_.frameIndex;
- this.currentSceneIndex_ = this.next_.sceneIndex;
- this.playing_ = this.next_.play;
- this.next_ = null
- },
- pickNextFrame: function () {
- if (this.playing_) if (!this.next_) {
- var a = this.currentFrameIndex_ + 1,
- b = this.currentSceneIndex_;
- if (a == this.scenes_[this.currentSceneIndex_].numFrames) if (a == this.totalFrames_) if (this.totalFrames_ > 1) {
- this.clear();
- this.next_ = {
- frameIndex: 0,
- sceneIndex: 0,
- play: true
- }
- } else {
- this.playing_ = false;
- this.next_ = null
- } else this.next_ = {
- frameIndex: a,
- sceneIndex: b + 1,
- play: true
- };
- else this.next_ = {
- frameIndex: a,
- sceneIndex: b,
- play: this.playing_
- }
- }
- if (this.next_) if (this._enabled) this.next_.play = false;
- a = this.next_ && !this.next_.stop && this.next_.frameIndex != this.currentFrameIndex_;
- if (this.next_) {
- a && this.next_.clear && this.removeChildren();
- this.setCurrentFrame();
- this.next_ = null
- }
- return a
- },
- onEnterFrame_: function (a) {
- fljs.console("mc").info("mc#" + this.id + " frame#" + this.currentFrameIndex_);
- this.onEnterFrame(a)
- },
- updateSoundStream: function () {
- if (this.audioStream) if (this.next_) if (this.next_.play != this.playing_) if (this.next_.playing) this.audioStream.frameShouldPlay(this.next_.frameIndex) && this.audioStream.playFrame(this.next_.frameIndex);
- else this.audioStream.pause();
- else this.next_.play && this.next_.frameIndex != this.currentFrameIndex_ + 1 && this.audioStream.frameShouldPlay(this.next_.frameIndex) && this.audioStream.playFrame(this.next_.frameIndex);
- else this.audioStream.pause()
- },
- addFrameScript: function () {
- for (var a, b, c = 0; c < arguments.length; c += 2) {
- a = arguments[c];
- b = this.globalFrameIndexToLocal_(a);
- a = b[0];
- b = b[1];
- this.scenes_[b].frameData_[a].scripts.push(arguments[c + 1])
- }
- },
- updateButtonState: function (a) {
- if (this._enabled) {
- var b = flash.events.MouseEvent,
- c = flash.events.KeyboardEvent,
- d, e;
- switch (a.type) {
- case b.CLICK:
- e = d = true;
- break;
- case b.MOUSE_OVER:
- d = true;
- e = this.__buttonStateDown;
- break;
- case b.MOUSE_OUT:
- d = false;
- e = this.__buttonStateDown;
- break;
- case b.MOUSE_DOWN:
- d = this.__buttonStateOver;
- e = true;
- break;
- case b.MOUSE_UP:
- d = this.__buttonStateOver;
- e = false;
- break;
- case c.KEY_DOWN:
- d = this.__buttonStateOver;
- e = true;
- break;
- case c.KEY_UP:
- d = this.__buttonStateOver;
- e = false;
- break
- }
- var f;
- if (this.__buttonStateOver != d) f = d ? e ? this.__buttonStateDown ? "CondOutDownToOverDown" : "CondIdleToOverDown" : "CondIdleToOverUp" : e ? "CondOverDownToOutDown" : "CondOverUpToIdle";
- else if (this.__buttonStateDown != e) if (e) {
- if (d) f = "CondOverUpToOverDown"
- } else f = d ? "CondOverDownToOverUp" : "CondOutDownToIdle";
- a = d ? e ? "down" : "over" : "up";
- this.__buttonStateOver =
- d;
- this.__buttonStateDown = e;
- this.gotoAndStop("_" + a);
- if (f) for (var g in this.__buttonActions) {
- d = this.__buttonActions[g];
- d[f] && fljs.Player.getInstance().doActions(this, d.Actions)
- }
- }
- },
- needAudio: function () {
- for (var a = fljs.Player.getInstance(), b = 0; b < 2; b++) this.audio[b] = a.allocAudio()
- },
- frameReady: function (a) {
- return this.frameData_[a] && this.frameData_[a].loaded && this.resources.frameReady(a)
- },
- getEnabled: function () {
- return this._enabled
- },
- setEnabled: function (a) {
- this._enabled = !! a
- }
- });
- flash.display.MovieClip.id = 1;
- fljs.swf.tag.DefineSprite = function () {};
- fljs.addMethods(fljs.swf.tag.DefineSprite, {
- read: function (a) {
- this.defId = this.SpriteId = a.readUI16();
- this.FrameCount = a.readUI16();
- this.frameData_ = [{
- tags: []}];
- this.labels_ = {};
- this.framesLoaded_ = 0;
- this.totalFrames_ = this.FrameCount
- },
- evaluate: function (a) {
- a.addDefinition(this, this.SpriteId)
- },
- build: function (a, b) {
- a = new flash.display.MovieClip;
- a.def = this;
- b && a.getTransform().setColorTransform(b);
- b = new flash.display.Scene;
- b.labels = [];
- b.name = "Scene 1";
- b.numFrames = this.FrameCount;
- a.frameData_ = [];
- for (var c = 0; c < this.FrameCount; c++) {
- var d = {
- scripts: [],
- parts: [],
- tags: [],
- label: ""
- };
- d.tags = this.frameData_[c].tags;
- d.loaded = this.frameData_[c].loaded;
- a.frameData_.push(d)
- }
- a.labels_ = this.labels_;
- a.sceneIndices_ = {};
- a.currentSceneIndex_ = 0;
- a.scenes_ = [b];
- a.currentFrameIndex_ = 0;
- a.currentLabel_ = null;
- a._enabled = false;
- a.framesLoaded_ = this.FrameCount;
- a.totalFrames_ = this.FrameCount;
- a.next_ = null;
- a.playing_ = true;
- return a
- }
- });
- fljs.swf.tag.DefineSound = function () {};
- fljs.addMethods(fljs.swf.tag.DefineSound, {
- read: function (a, b) {
- this.SoundId = a.readUI16();
- this.SoundFormat = a.readUB(4);
- this.SoundRate = a.readUB(2);
- this.SoundSize = a.readUB(1);
- this.SoundType = a.readUB(1);
- this.SoundSampleCount = a.readUI32();
- this.Mp3SoundData = this.SoundData = a.readMp3SoundData(b.TagLength - 2 - 1 - 4)
- },
- evaluate: function (a) {
- a.sounds[this.SoundId] = this
- }
- });
- fljs.swf.tag.StartSound = function () {};
- fljs.addMethods(fljs.swf.tag.StartSound, {
- read: function (a) {
- this.SoundId = a.readUI16();
- this.SoundInfo = a.readSoundInfo()
- },
- evaluate: function (a, b) {
- var c = a.sounds[this.SoundId];
- if (!c.player) {
- c.player = a.allocAudio();
- b = new fljs.swf.StringStream(a.reader.stream.stream.buffer);
- b.byteIndex = c.Mp3SoundData.byteIndex;
- b = b.readBytes(c.Mp3SoundData.byteCount).join("");
- b = "data:audio/mpeg;base64," + btoa(b);
- c.player.setAttribute("src", b)
- }
- var d = c.player;
- if (this.SoundInfo.SyncStop) {
- d.fljsPlaying = false;
- d.pause()
- } else if (this.SoundInfo.SyncNoMultiple) {
- d.fljsPlaying =
- true;
- a.playing && d.play()
- } else {
- d.addEventListener("load", function () {
- d.currentTime = 0;
- d.fljsPlaying = true;
- a.playing && d.play()
- }, true);
- d.load()
- }
- }
- });
- fljs.swf.tag.DefineShape2 = function () {};
- fljs.inherits(fljs.swf.tag.DefineShape2, fljs.swf.tag.DefineShape);
- fljs.addMethods(fljs.swf.tag.DefineShape2, {
- read: function (a, b) {
- a.beginContext(fljs.swf.tag.DefineShape2);
- a.endByteIndex = a.stream.byteIndex + b.TagLength;
- this.ShapeId = a.readUI16();
- this.ShapeBounds = a.readRECT();
- a.stream.align();
- this.Shapes = a.readSHAPEWITHSTYLE();
- a.endContext()
- }
- });
- fljs.swf.tag.SoundStreamHead2 = function () {};
- fljs.inherits(fljs.swf.tag.SoundStreamHead2, fljs.swf.tag.SoundStreamHead);
- fljs.swf.tag.DefineFontInfo = function () {};
- fljs.addMethods(fljs.swf.tag.DefineFontInfo, {
- read: function (a) {
- this.FontId = a.readUI16();
- this.FontNameLen = a.readUI8();
- var b = [];
- for (i = 0; i < this.FontNameLen; i++) b.push(String.fromCharCode(a.readUI8()));
- this.FontName = b.join("");
- a.readUB(2);
- this.FontFlagsSmallText = a.readUB(1);
- this.FontFlagsShiftJis = a.readUB(1);
- this.FontFlagsAnsi = a.readUB(1);
- this.FontFlagsItalic = a.readUB(1);
- this.FontFlagsBold = a.readUB(1);
- this.FontFlagsWideCodes = a.readUB(1);
- b = fljs.Player.getInstance().fontsWithoutInfo[this.FontId];
- this.CodeTable = [];
- if (this.FontFlagsWideCodes) for (i = 0; i < b.NumGlyphs; i++) this.CodeTable.push(a.readUI16());
- else for (i = 0; i < this.NumGlyphs; i++) this.CodeTable.push(a.readUI8());
- this.GlyphShapeTable = b.GlyphShapeTable
- },
- evaluate: function (a) {
- var b = (new fljs.swf.build.FontBuilder(this, a)).buildDef();
- a.defineFont2(this.FontId, this.GlyphShapeTable.length, b, this.FontName, this.FontFlagsBold, this.FontFlagsItalic, this.CodeTable)
- }
- });
- fljs.swf.tag.DefineText = function () {};
- fljs.addMethods(fljs.swf.tag.DefineText, {
- read: function (a) {
- this.CharacterId = a.readUI16();
- this.TextBounds = a.readRECT();
- a.stream.align();
- this.TextMatrix = a.readMATRIX();
- this.GlyphBits = a.readUI8();
- this.AdvanceBits = a.readUI8();
- a.GlyphBits = this.GlyphBits;
- a.AdvanceBits = this.AdvanceBits;
- a.context = fljs.swf.tag.DefineText;
- this.TextRecords = a.readTEXTRECORDS();
- a.context = null
- },
- buildMatrix_: function () {
- return new flash.geom.Matrix(this.TextMatrix.ScaleX, this.TextMatrix.RotateSkew0, this.TextMatrix.RotateSkew1, this.TextMatrix.ScaleY, this.TextMatrix.TranslateX, this.TextMatrix.TranslateY)
- },
- evaluate: function (a) {
- a.addDefinition(this, this.CharacterId)
- },
- build: function (a, b) {
- return this._buildTextField(a, b)
- },
- _buildTextField: function (a, b) {
- if (!this.TextRecords || !this.TextRecords.length) return null;
- this.FontId = this.TextRecords[0].FontId;
- this.Bounds = this.TextBounds;
- var c = a.fonts2[this.FontId];
- a = [];
- var d;
- fljs.console("definetext");
- var e, f, g = 0,
- j;
- for (var h in this.TextRecords) {
- var m = this.TextRecords[h];
- d = new flash.text.TextFormat;
- if (c) {
- d.bold = c.bold;
- d.italic = c.italic;
- d.font = c.name;
- d.fontid = this.FontId
- }
- if (m.TextColor) {
- var k = m.TextColor;
- e = 0;
- e += k.Red << 16;
- e += k.Green << 8;
- e += k.Blue;
- if (typeof m.TextColor.Alpha != "undefined") d.alpha = m.TextColor.Alpha / 255
- }
- d.color = e;
- if (m.YOffset != null) {
- f = m.YOffset;
- g = 0
- };
- d.leading = f;
- if (m.XOffset != null) g = m.XOffset;
- d.indent = g;
- if (m.TextHeight != null) j = m.TextHeight;
- d.size = j;
- m = m.GlyphEntries;
- k = [];
- var l = [];
- if (m) for (var n in m) {
- var p = m[n];
- c ? k.push(String.fromCharCode(c.codeTable[p.GlyphIndex])) : k.push(String.fromCharCode(p.GlyphIndex));
- l.push(p.GlyphAdvance);
- g += p.GlyphAdvance
- }
- a.push({
- text: k.join(""),
- advances: l,
- format: d
- })
- }
- this.Indent = this.RightMargin = this.LeftMargin = this.Leading = this.Align = 0;
- this.FontHeight = this.TextRecords[0].TextHeight;
- this.TextColor = this.TextRecords[0].TextColor;
- e = new flash.text.TextField;
- e.setTextMatrix(this.buildMatrix_());
- b && e.getTransform().setColorTransform(b);
- e.x = this.Bounds.Xmin;
- e.y = this.Bounds.Ymin;
- e.setWidth(this.Bounds.Xmax - this.Bounds.Xmin);
- e.setHeight(this.Bounds.Ymax - this.Bounds.Ymin);
- e.setDefaultTextFormat(d);
- e.__setSpans(a);
- return e
- }
- });
- fljs.swf.tag.DefineFontInfo2 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineFontInfo2, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.FontId = a.readUI16();
- this.FontNameLen = a.readUI8();
- var d = [];
- for (i = 0; i < this.FontNameLen; i++) d.push(String.fromCharCode(a.readUI8()));
- this.FontName = d.join("");
- a.readUB(2);
- this.FontFlagsSmallText = a.readUB(1);
- this.FontFlagsShiftJis = a.readUB(1);
- this.FontFlagsAnsi = a.readUB(1);
- this.FontFlagsItalic = a.readUB(1);
- this.FontFlagsBold = a.readUB(1);
- this.FontFlagsWideCodes = a.readUB(1);
- this.LanguageCode = a.readLangCode();
- b =
- b.TagLength - (a.stream.byteIndex - c);
- this.CodeTable = [];
- if (this.FontFlagsWideCodes) {
- b = b / 2;
- for (i = 0; i < b; i++) this.CodeTable.push(a.readUI16())
- } else {
- b = b;
- for (i = 0; i < b; i++) this.CodeTable.push(a.readUI8())
- }
- },
- evaluate: function (a) {
- this.GlyphShapeTable = a.fontsWithoutInfo[this.FontId].GlyphShapeTable;
- var b = (new fljs.swf.build.FontBuilder(this, a)).buildDef();
- a.defineFont2(this.FontId, this.GlyphShapeTable.length, b, this.FontName, this.FontFlagsBold, this.FontFlagsItalic, this.CodeTable)
- }
- });
- fljs.swf.tag.DefineShape3 = function () {};
- fljs.inherits(fljs.swf.tag.DefineShape3, fljs.swf.tag.DefineShape);
- fljs.addMethods(fljs.swf.tag.DefineShape3, {
- read: function (a) {
- a.beginContext(fljs.swf.tag.DefineShape3);
- this.ShapeId = a.readUI16();
- this.ShapeBounds = a.readRECT();
- a.stream.align();
- this.Shapes = a.readSHAPEWITHSTYLE();
- a.endContext()
- }
- });
- fljs.swf.tag.DoAction = function () {};
- fljs.addMethods(fljs.swf.tag.DoAction, {
- read: function (a, b) {
- this.Actions = a.readActionRecords(b.TagLength)
- },
- evaluate: function (a, b, c, d) {
- a.doActions(d, this.Actions)
- }
- });
- fljs.swf.tag.Protect = function () {};
- fljs.addMethods(fljs.swf.tag.Protect, {
- read: function (a, b) {
- a.skipBytes(b.TagLength)
- },
- evaluate: function () {}
- });
- flash.display.FrameLabel = function () {};
- fljs.swf.tag.DefineButton2 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineButton2, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- a.context = fljs.swf.tag.DefineButton2;
- this.ButtonId = a.readUI16();
- a.readUB(7);
- this.TrackAsMenu = a.readUB(1);
- this.ActionOffset = a.readUI16();
- this.Characters = a.readButtonRecords();
- this.Actions = this.ActionOffset ? a.readButtonCondActions(b.TagLength - (a.stream.byteIndex - c)) : [];
- a.context = null
- },
- evaluate: function (a) {
- a.addDefinition(this, this.ButtonId)
- },
- build: function (a, b) {
- if (b && b.__default) b = null;
- var c = new flash.display.MovieClip;
- c.def = this;
- c.setEnabled(true);
- c.trackAsMenu = this.TrackAsMenu;
- c.__buttonActions = this.Actions;
- var d = [["ButtonStateUp", "up"], ["ButtonStateDown", "down"], ["ButtonStateOver", "over"], ["ButtonStateHitTest", "hitTest"]],
- e = new flash.display.Scene;
- e.labels = [];
- e.name = "Scene 1";
- e.numFrames = 3;
- c.frameData_ = [];
- c.labels_ = {};
- var f, g = 0;
- for (var j in d) {
- var h = d[j][0],
- m = d[j][1];
- f = null;
- for (var k in this.Characters) {
- var l = this.Characters[k];
- if (l[h]) {
- f || (f = new flash.display.Sprite);
- var n = this.buildStateDisplayObject(a, l, false);
- n && f.addChildAt(n, l.PlaceDepth)
- }
- }
- for (k in this.Characters) {
- l = this.Characters[k];
- if (l.ButtonStateHitTest) {
- f || (f = new flash.display.Sprite);
- if (n = this.buildStateDisplayObject(a, l, true)) {
- n.__setHitTarget(c);
- f.addChild(n)
- }
- }
- }
- if (m != "hitTest") {
- h = new flash.display.FrameLabel;
- h.name = "_" + m;
- h.frame = g + 1;
- m = {
- scripts: [],
- parts: [],
- tags: [],
- label: h.name,
- loaded: true
- };
- f && m.parts.push(f);
- c.frameData_.push(m);
- c.labels_[h.name] = h
- }
- g += 1
- }
- c.sceneIndices_ = {};
- c.currentSceneIndex_ = 0;
- c.scenes_ = [e];
- c.currentFrameIndex_ = 0;
- c.currentLabel_ =
- c.frameData_[c.currentFrameIndex_].label;
- c._enabled = true;
- c.framesLoaded_ = 3;
- c.totalFrames_ = 3;
- c.next_ = null;
- c.playing_ = false;
- c.gotoAndStop(1);
- b && c.getTransform().setColorTransform(b);
- return c
- },
- buildStateDisplayObject: function (a, b, c) {
- var d = this.buildColorTransform(b.ColorTransform),
- e = this.buildMatrix(b.PlaceMatrix);
- c = (fljs.agent.OS == "iPad" || fljs.agent.OS == "iPhone") && c;
- b = a.dictionary[b.CharacterId];
- var f;
- if (b instanceof fljs.swf.tag.DefineShape || b instanceof fljs.swf.tag.DefineEditText || b instanceof fljs.swf.tag.DefineText || b instanceof fljs.swf.tag.DefineSprite) f = b.build(a, d, c);
- if (f) {
- f.setMatrix(e);
- f.__clipActions = {};
- b instanceof fljs.swf.tag.DefineSprite && f.onCreate()
- }
- return f
- },
- buildMatrix: function (a) {
- return new flash.geom.Matrix(a.ScaleX, a.RotateSkew0, a.RotateSkew1, a.ScaleY, a.TranslateX, a.TranslateY)
- },
- buildColorTransform: function (a) {
- a = new flash.geom.ColorTransform(a.RedMultTerm, a.GreenMultTerm, a.BlueMultTerm, a.AlphaMultTerm, a.RedAddTerm, a.GreenAddTerm, a.BlueAddTerm, a.AlphaAddTerm);
- return a.__default ? null : a
- }
- });
- fljs.swf.tag.DefineText2 = function () {};
- fljs.inherits(fljs.swf.tag.DefineText2, fljs.swf.tag.DefineText);
- fljs.addMethods(fljs.swf.tag.DefineText2, {
- read: function (a) {
- this.CharacterId = a.readUI16();
- this.TextBounds = a.readRECT();
- a.stream.align();
- this.TextMatrix = a.readMATRIX();
- this.GlyphBits = a.readUI8();
- this.AdvanceBits = a.readUI8();
- a.GlyphBits = this.GlyphBits;
- a.AdvanceBits = this.AdvanceBits;
- a.context = fljs.swf.tag.DefineText2;
- this.TextRecords = a.readTEXTRECORDS();
- a.context = null
- }
- });
- fljs.swf.tag.JpegTables = function () {};
- fljs.addMethods(fljs.swf.tag.JpegTables, {
- read: function (a, b) {
- if (b.TagLength != 0) {
- a = a.readBytes(b.TagLength).join("");
- var c = new fljs.swf.BigEndianStringStream(a);
- fljs.console("jpeg").info("" + b.TagType);
- b = 0;
- if (c.nextUShort() == 65497) {
- b = 4;
- c.nextUShort();
- c.nextUShort()
- }
- this.JPEGData = a.substr(b, a.length - b - 2)
- }
- },
- evaluate: function (a) {
- a.jpegTables = this.JPEGData
- }
- });
- fljs.swf.tag.DefineBits = function () {};
- fljs.inherits(fljs.swf.tag.DefineBits, fljs.swf.tag.DefineBitsJPEG2);
- fljs.addMethods(fljs.swf.tag.DefineBits, {
- read: function (a, b) {
- this.CharacterId = a.readUI16();
- b = b.TagLength - 2;
- (new fljs.swf.build.JpegBuilder).parseJpeg(this, a, b, true)
- }
- });
- fljs.swf.tag.FrameLabel = function () {};
- fljs.addMethods(fljs.swf.tag.FrameLabel, {
- read: function (a) {
- this.Name = a.readString()
- },
- evaluate: function (a, b, c, d) {
- if (d == a.stage) d = a.mainTimeline;
- d.frameData_[d.framesLoaded_].label = this.Name;
- a = d.labels_[this.Name] = new flash.display.FrameLabel;
- a.frame = d.framesLoaded_ + 1;
- a.name = this.Name
- }
- });
- fljs.zip_inflate = {};
- var zip_WSIZE = 32768,
- zip_STORED_BLOCK = 0,
- zip_STATIC_TREES = 1,
- zip_DYN_TREES = 2,
- zip_lbits = 9,
- zip_dbits = 6,
- zip_INBUFSIZ = 32768,
- zip_INBUF_EXTRA = 64,
- zip_slide, zip_wp, zip_fixed_tl = null,
- zip_fixed_td, zip_fixed_bl, fixed_bd, zip_bit_buf, zip_bit_len, zip_method, zip_eof, zip_copy_leng, zip_copy_dist, zip_tl, zip_td, zip_bl, zip_bd, zip_inflate_data, zip_inflate_pos, zip_MASK_BITS = new Array(0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535),
- zip_cplens = new Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0),
- zip_cplext = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99),
- zip_cpdist = new Array(1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577),
- zip_cpdext = new Array(0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13),
- zip_border = new Array(16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15);
- function zip_HuftList() {
- this.list = this.next = null
- }
- function zip_HuftNode() {
- this.n = this.b = this.e = 0;
- this.t = null
- }
- function zip_HuftBuild(a, b, c, d, e, f) {
- this.BMAX = 16;
- this.N_MAX = 288;
- this.status = 0;
- this.root = null;
- this.m = 0;
- var g = new Array(this.BMAX + 1),
- j, h, m, k, l, n, p, u = new Array(this.BMAX + 1),
- o, q, s, r = new zip_HuftNode,
- t = new Array(this.BMAX);
- k = new Array(this.N_MAX);
- var v, w = new Array(this.BMAX + 1),
- y, x, z;
- z = this.root = null;
- for (l = 0; l < g.length; l++) g[l] = 0;
- for (l = 0; l < u.length; l++) u[l] = 0;
- for (l = 0; l < t.length; l++) t[l] = null;
- for (l = 0; l < k.length; l++) k[l] = 0;
- for (l = 0; l < w.length; l++) w[l] = 0;
- j = b > 256 ? a[256] : this.BMAX;
- o = a;
- q = 0;
- l = b;
- do {
- g[o[q]]++;
- q++
- } while (--l > 0);
- if (g[0] == b) {
- this.root = null;
- this.status = this.m = 0
- } else {
- for (n = 1; n <= this.BMAX; n++) if (g[n] != 0) break;
- p = n;
- if (f < n) f = n;
- for (l = this.BMAX; l != 0; l--) if (g[l] != 0) break;
- m = l;
- if (f > l) f = l;
- for (y = 1 << n; n < l; n++, y <<= 1) if ((y -= g[n]) < 0) {
- this.status = 2;
- this.m = f;
- return
- }
- if ((y -= g[l]) < 0) {
- this.status = 2;
- this.m = f
- } else {
- g[l] += y;
- w[1] = n = 0;
- o = g;
- q = 1;
- for (s = 2; --l > 0;) w[s++] = n += o[q++];
- o = a;
- l = q = 0;
- do
- if ((n = o[q++]) != 0) k[w[n]++] = l;
- while (++l < b);
- b = w[m];
- w[0] = l = 0;
- o = k;
- q = 0;
- k = -1;
- v = u[0] = 0;
- s = null;
- for (x = 0; p <= m; p++) for (a = g[p]; a-- > 0;) {
- for (; p > v + u[1 + k];) {
- v += u[1 + k];
- k++;
- x = (x = m - v) > f ? f : x;
- if ((h = 1 << (n = p - v)) > a + 1) {
- h -= a + 1;
- for (s = p; ++n < x;) {
- if ((h <<= 1) <= g[++s]) break;
- h -= g[s]
- }
- }
- if (v + n > j && v < j) n = j - v;
- x = 1 << n;
- u[1 + k] = n;
- s = new Array(x);
- for (h = 0; h < x; h++) s[h] = new zip_HuftNode;
- z = z == null ? (this.root = new zip_HuftList) : (z.next = new zip_HuftList);
- z.next = null;
- z.list = s;
- t[k] = s;
- if (k > 0) {
- w[k] = l;
- r.b = u[k];
- r.e = 16 + n;
- r.t = s;
- n = (l & (1 << v) - 1) >> v - u[k];
- t[k - 1][n].e = r.e;
- t[k - 1][n].b = r.b;
- t[k - 1][n].n = r.n;
- t[k - 1][n].t = r.t
- }
- }
- r.b = p - v;
- if (q >= b) r.e = 99;
- else if (o[q] < c) {
- r.e = o[q] < 256 ? 16 : 15;
- r.n = o[q++]
- } else {
- r.e = e[o[q] - c];
- r.n =
- d[o[q++] - c]
- }
- h = 1 << p - v;
- for (n = l >> v; n < x; n += h) {
- s[n].e = r.e;
- s[n].b = r.b;
- s[n].n = r.n;
- s[n].t = r.t
- }
- for (n = 1 << p - 1;
- (l & n) != 0; n >>= 1) l ^= n;
- for (l ^= n;
- (l & (1 << v) - 1) != w[k];) {
- v -= u[k];
- k--
- }
- }
- this.m = u[1];
- this.status = y != 0 && m != 1 ? 1 : 0
- }
- }
- }
- function zip_GET_BYTE() {
- if (zip_inflate_data.length == zip_inflate_pos) return -1;
- return zip_inflate_data.charCodeAt(zip_inflate_pos++) & 255
- }
- function zip_NEEDBITS(a) {
- for (; zip_bit_len < a;) {
- zip_bit_buf |= zip_GET_BYTE() << zip_bit_len;
- zip_bit_len += 8
- }
- }
- function zip_GETBITS(a) {
- return zip_bit_buf & zip_MASK_BITS[a]
- }
- function zip_DUMPBITS(a) {
- zip_bit_buf >>= a;
- zip_bit_len -= a
- }
- function zip_inflate_codes(a, b, c) {
- var d, e, f;
- if (c == 0) return 0;
- for (f = 0;;) {
- zip_NEEDBITS(zip_bl);
- e = zip_tl.list[zip_GETBITS(zip_bl)];
- for (d = e.e; d > 16;) {
- if (d == 99) return -1;
- zip_DUMPBITS(e.b);
- d -= 16;
- zip_NEEDBITS(d);
- e = e.t[zip_GETBITS(d)];
- d = e.e
- }
- zip_DUMPBITS(e.b);
- if (d == 16) {
- zip_wp &= zip_WSIZE - 1;
- a[b + f++] = zip_slide[zip_wp++] = e.n
- } else {
- if (d == 15) break;
- zip_NEEDBITS(d);
- zip_copy_leng = e.n + zip_GETBITS(d);
- zip_DUMPBITS(d);
- zip_NEEDBITS(zip_bd);
- e = zip_td.list[zip_GETBITS(zip_bd)];
- for (d = e.e; d > 16;) {
- if (d == 99) return -1;
- zip_DUMPBITS(e.b);
- d -= 16;
- zip_NEEDBITS(d);
- e = e.t[zip_GETBITS(d)];
- d = e.e
- }
- zip_DUMPBITS(e.b);
- zip_NEEDBITS(d);
- zip_copy_dist = zip_wp - e.n - zip_GETBITS(d);
- for (zip_DUMPBITS(d); zip_copy_leng > 0 && f < c;) {
- zip_copy_leng--;
- zip_copy_dist &= zip_WSIZE - 1;
- zip_wp &= zip_WSIZE - 1;
- a[b + f++] = zip_slide[zip_wp++] = zip_slide[zip_copy_dist++]
- }
- }
- if (f == c) return c
- }
- zip_method = -1;
- return f
- }
- function zip_inflate_stored(a, b, c) {
- var d;
- d = zip_bit_len & 7;
- zip_DUMPBITS(d);
- zip_NEEDBITS(16);
- d = zip_GETBITS(16);
- zip_DUMPBITS(16);
- zip_NEEDBITS(16);
- if (d != (~zip_bit_buf & 65535)) return -1;
- zip_DUMPBITS(16);
- zip_copy_leng = d;
- for (d = 0; zip_copy_leng > 0 && d < c;) {
- zip_copy_leng--;
- zip_wp &= zip_WSIZE - 1;
- zip_NEEDBITS(8);
- a[b + d++] = zip_slide[zip_wp++] = zip_GETBITS(8);
- zip_DUMPBITS(8)
- }
- if (zip_copy_leng == 0) zip_method = -1;
- return d
- }
- function zip_inflate_fixed(a, b, c) {
- if (zip_fixed_tl == null) {
- var d, e = new Array(288);
- for (d = 0; d < 144; d++) e[d] = 8;
- for (; d < 256; d++) e[d] = 9;
- for (; d < 280; d++) e[d] = 7;
- for (; d < 288; d++) e[d] = 8;
- zip_fixed_bl = 7;
- d = new zip_HuftBuild(e, 288, 257, zip_cplens, zip_cplext, zip_fixed_bl);
- if (d.status != 0) {
- alert("HufBuild error: " + d.status);
- return -1
- }
- zip_fixed_tl = d.root;
- zip_fixed_bl = d.m;
- for (d = 0; d < 30; d++) e[d] = 5;
- zip_fixed_bd = 5;
- d = new zip_HuftBuild(e, 30, 0, zip_cpdist, zip_cpdext, zip_fixed_bd);
- if (d.status > 1) {
- zip_fixed_tl = null;
- alert("HufBuild error: " + d.status);
- return -1
- }
- zip_fixed_td = d.root;
- zip_fixed_bd = d.m
- }
- zip_tl = zip_fixed_tl;
- zip_td = zip_fixed_td;
- zip_bl = zip_fixed_bl;
- zip_bd = zip_fixed_bd;
- return zip_inflate_codes(a, b, c)
- }
- function zip_inflate_dynamic(a, b, c) {
- var d, e, f, g, j, h, m, k = new Array(316);
- for (d = 0; d < k.length; d++) k[d] = 0;
- zip_NEEDBITS(5);
- h = 257 + zip_GETBITS(5);
- zip_DUMPBITS(5);
- zip_NEEDBITS(5);
- m = 1 + zip_GETBITS(5);
- zip_DUMPBITS(5);
- zip_NEEDBITS(4);
- d = 4 + zip_GETBITS(4);
- zip_DUMPBITS(4);
- if (h > 286 || m > 30) return -1;
- for (e = 0; e < d; e++) {
- zip_NEEDBITS(3);
- k[zip_border[e]] = zip_GETBITS(3);
- zip_DUMPBITS(3)
- }
- for (; e < 19; e++) k[zip_border[e]] = 0;
- zip_bl = 7;
- e = new zip_HuftBuild(k, 19, 19, null, null, zip_bl);
- if (e.status != 0) return -1;
- zip_tl = e.root;
- zip_bl = e.m;
- g = h + m;
- for (d = f = 0; d < g;) {
- zip_NEEDBITS(zip_bl);
- j = zip_tl.list[zip_GETBITS(zip_bl)];
- e = j.b;
- zip_DUMPBITS(e);
- e = j.n;
- if (e < 16) k[d++] = f = e;
- else if (e == 16) {
- zip_NEEDBITS(2);
- e = 3 + zip_GETBITS(2);
- zip_DUMPBITS(2);
- if (d + e > g) return -1;
- for (; e-- > 0;) k[d++] = f
- } else {
- if (e == 17) {
- zip_NEEDBITS(3);
- e = 3 + zip_GETBITS(3);
- zip_DUMPBITS(3)
- } else {
- zip_NEEDBITS(7);
- e = 11 + zip_GETBITS(7);
- zip_DUMPBITS(7)
- }
- if (d + e > g) return -1;
- for (; e-- > 0;) k[d++] = 0;
- f = 0
- }
- }
- zip_bl = zip_lbits;
- e = new zip_HuftBuild(k, h, 257, zip_cplens, zip_cplext, zip_bl);
- if (zip_bl == 0) e.status = 1;
- if (e.status != 0) return -1;
- zip_tl = e.root;
- zip_bl = e.m;
- for (d = 0; d < m; d++) k[d] = k[d + h];
- zip_bd = zip_dbits;
- e = new zip_HuftBuild(k, m, 0, zip_cpdist, zip_cpdext, zip_bd);
- zip_td = e.root;
- zip_bd = e.m;
- if (zip_bd == 0 && h > 257) return -1;
- if (e.status != 0) return -1;
- return zip_inflate_codes(a, b, c)
- }
- function zip_inflate_start() {
- if (zip_slide == null) zip_slide = new Array(2 * zip_WSIZE);
- zip_bit_len = zip_bit_buf = zip_wp = 0;
- zip_method = -1;
- zip_eof = false;
- zip_copy_leng = zip_copy_dist = 0;
- zip_tl = null
- }
- function zip_inflate_internal(a, b, c) {
- var d, e;
- for (d = 0; d < c;) {
- if (zip_eof && zip_method == -1) return d;
- if (zip_copy_leng > 0) {
- if (zip_method != zip_STORED_BLOCK) for (; zip_copy_leng > 0 && d < c;) {
- zip_copy_leng--;
- zip_copy_dist &= zip_WSIZE - 1;
- zip_wp &= zip_WSIZE - 1;
- a[b + d++] = zip_slide[zip_wp++] = zip_slide[zip_copy_dist++]
- } else {
- for (; zip_copy_leng > 0 && d < c;) {
- zip_copy_leng--;
- zip_wp &= zip_WSIZE - 1;
- zip_NEEDBITS(8);
- a[b + d++] = zip_slide[zip_wp++] = zip_GETBITS(8);
- zip_DUMPBITS(8)
- }
- if (zip_copy_leng == 0) zip_method = -1
- }
- if (d == c) return d
- }
- if (zip_method == -1) {
- if (zip_eof) break;
- zip_NEEDBITS(1);
- if (zip_GETBITS(1) != 0) zip_eof = true;
- zip_DUMPBITS(1);
- zip_NEEDBITS(2);
- zip_method = zip_GETBITS(2);
- zip_DUMPBITS(2);
- zip_tl = null;
- zip_copy_leng = 0
- }
- switch (zip_method) {
- case 0:
- e = zip_inflate_stored(a, b + d, c - d);
- break;
- case 1:
- e = zip_tl != null ? zip_inflate_codes(a, b + d, c - d) : zip_inflate_fixed(a, b + d, c - d);
- break;
- case 2:
- e = zip_tl != null ? zip_inflate_codes(a, b + d, c - d) : zip_inflate_dynamic(a, b + d, c - d);
- break;
- default:
- e = -1;
- break
- }
- if (e == -1) {
- if (zip_eof) return 0;
- return -1
- }
- d += e
- }
- return d
- }
- function zip_inflate(a) {
- var b, c, d;
- zip_inflate_start();
- zip_inflate_data = a;
- zip_inflate_pos = 0;
- b = new Array(1024);
- for (a = "";
- (c = zip_inflate_internal(b, 0, b.length)) > 0;) for (d = 0; d < c; d++) a += String.fromCharCode(b[d]);
- zip_inflate_data = null;
- return a
- }
- fljs.swf.tag.DefineBitsJpeg3 = function () {};
- fljs.inherits(fljs.swf.tag.DefineBitsJpeg3, fljs.swf.tag.DefineBitsJPEG2);
- fljs.addMethods(fljs.swf.tag.DefineBitsJpeg3, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.CharacterId = a.readUI16();
- var d = fljs.Player.getInstance();
- d.mainTimeline && d.mainTimeline.resources.addToFrame(this.CharacterId, d.mainTimeline.framesLoaded_);
- if (d.loadExtResources) {
- a.skipBytes(b.TagLength - 2);
- d = "img/" + d.name + "-" + this.CharacterId + ".png";
- fljs.console("image").info(d);
- c = new Image;
- c.addEventListener("load", fljs.bind(this.onLoadImage, this, a, b, c), false);
- fljs.Player.getInstance().delayFrame++;
- c.src =
- d
- } else {
- d = this.AlphaDataOffset = a.readUI32();
- (new fljs.swf.build.JpegBuilder).parseJpeg(this, a, d, true);
- d = b.TagLength - (a.stream.byteIndex - c);
- c = a.stream.byteIndex;
- var e = new Image;
- e.width = this.Width;
- e.height = this.Height;
- e.addEventListener("load", fljs.bind(this.onLoadData, this, a, b, e, c, d));
- fljs.Player.getInstance().delayFrame++;
- e.src = this.DataUri
- }
- },
- onLoadData: function (a, b, c, d, e) {
- a = a.stream.buffer.substr(d + 2, e - 2);
- a = zip_inflate(a);
- a = new fljs.swf.SwfStream(new fljs.swf.StringStream(a));
- b = document.createElement("canvas");
- b.width = this.Width;
- b.height = this.Height;
- d = b.getContext("2d");
- d.drawImage(c, 0, 0);
- c = d.getImageData(0, 0, this.Width, this.Height);
- e = c.data;
- for (var f = 0; f < this.Width * this.Height * 4;) {
- e[f + 3] = a.readUI8();
- f += 4
- }
- d.putImageData(c, 0, 0);
- this.DataUri = b.toDataURL();
- c = fljs.Player.getInstance();
- if (c.dictionary) {
- this.evaluate(c);
- c.delayFrame--;
- c.mainTimeline.resources.remove(this.CharacterId)
- } else this.callback(this);
- return true
- },
- onLoadImage: function (a, b, c) {
- this.Width = c.width;
- this.Height = c.height;
- a = document.createElement("canvas");
- a.width = this.Width;
- a.height = this.Height;
- a.getContext("2d").drawImage(c, 0, 0);
- this.DataUri = a.toDataURL();
- c = fljs.Player.getInstance();
- this.evaluate(c);
- c.setTimeout(fljs.bind(this.afterLoadImage, this));
- return true
- },
- afterLoadImage: function () {
- c = fljs.Player.getInstance();
- c.delayFrame--;
- c.mainTimeline.resources.remove(this.CharacterId)
- },
- evaluate: function (a) {
- this.defId = "image" + this.CharacterId;
- a.addDefinition(this, this.CharacterId);
- a = new fljs.swf.def.BitmapDef;
- a.setCharaId(this.defId);
- a.element.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.DataUri], [null, "x", 0], [null, "y", 0], [null, "width", this.Width], [null,
- "height", this.Height]]);
- a.define();
- this.def = a
- }
- });
- fljs.swf.tag.ExportAssets = function () {};
- fljs.addMethods(fljs.swf.tag.ExportAssets, {
- read: function (a) {
- this.Count = a.readUI16();
- this.Tags = [];
- this.Names = [];
- for (var b = 0; b < this.Count; b++) {
- this.Tags[b] = a.readUI16();
- this.Names[b] = a.readString()
- }
- },
- evaluate: function (a) {
- for (var b = 0; b < this.Tags.length; b++) a.assets[this.Names[b]] = this.Tags[b]
- }
- });
- fljs.swf.tag.PlaceObject3 = function () {};
- fljs.inherits(fljs.swf.tag.PlaceObject3, fljs.swf.tag.PlaceObject2);
- fljs.addMethods(fljs.swf.tag.PlaceObject3, {
- read: function (a) {
- this.startByteIndex = a.stream.byteIndex;
- this.PlaceFlagHasClipActions = a.readUB(1);
- this.PlaceFlagHasClipDepth = a.readUB(1);
- this.PlaceFlagHasName = a.readUB(1);
- this.PlaceFlagHasRatio = a.readUB(1);
- this.PlaceFlagHasColorTransform = a.readUB(1);
- this.PlaceFlagHasMatrix = a.readUB(1);
- this.PlaceFlagHasCharacter = a.readUB(1);
- this.PlaceFlagMove = a.readUB(1);
- a.readUB(3);
- this.PlaceFlagHasImage = a.readUB(1);
- this.PlaceFlagHasClassName = a.readUB(1);
- this.PlaceFlagHasCacheAsBitmap =
- a.readUB(1);
- this.PlaceFlagHasBlendMode = a.readUB(1);
- this.PlaceFlagHasFilterList = a.readUB(1);
- this.Depth = a.readUI16();
- if (this.PlaceFlagHasClassName || this.PlaceFlagHasImage && this.PlaceFlagHasCharacter) this.ClassName = a.readString();
- if (this.PlaceFlagHasCharacter) this.CharacterId = a.readUI16();
- if (this.PlaceFlagHasMatrix) this.Matrix = a.readMATRIX();
- if (this.PlaceFlagHasColorTransform) this.ColorTransform = a.readCXFORMWITHALPHA();
- if (this.PlaceFlagHasRatio) this.Ratio = a.readUI16();
- if (this.PlaceFlagHasName) this.Name = a.readSTRING();
- if (this.PlaceFlagHasClipDepth) this.ClipDepth = a.readUI16();
- if (this.PlaceFlagHasFilterList) this.SurfaceFilterList = a.readFilterList();
- if (this.PlaceFlagHasBlendMode) this.BlendMode = a.readUI8();
- if (this.PlaceFlagHasClipActions) this.ClipActions = a.readCLIPACTIONS()
- }
- });
- fljs.swf.tag.DefineShape4 = function () {};
- fljs.inherits(fljs.swf.tag.DefineShape4, fljs.swf.tag.DefineShape);
- fljs.addMethods(fljs.swf.tag.DefineShape4, {
- read: function (a) {
- a.beginContext(fljs.swf.tag.DefineShape4);
- this.ShapeId = a.readUI16();
- this.ShapeBounds = a.readRECT();
- this.EdgeBounds = a.readRECT();
- a.readUB(6);
- this.UsesNonScalingStrokes = a.readUB(1);
- this.UsesScalingStrokes = a.readUB(1);
- this.Shapes = a.readSHAPEWITHSTYLE();
- a.endContext()
- }
- });
- fljs.swf.tag.DefineBitsLossless2 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineBitsLossless2, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.CharacterId = a.readUI16();
- this.BitmapFormat = a.readUI8();
- this.BitmapWidth = a.readUI16();
- this.BitmapHeight = a.readUI16();
- if (this.BitmapFormat == 3) this.BitmapColorTableSize = a.readUI8();
- a = a.stream.buffer.substr(a.stream.byteIndex + 2, b.TagLength - (a.stream.byteIndex - c) - 2);
- a = zip_inflate(a);
- a = new fljs.swf.SwfStream(new fljs.swf.StringStream(a));
- b = document.createElement("canvas");
- b.width = this.BitmapWidth;
- b.height =
- this.BitmapHeight;
- c = b.getContext("2d");
- var d = c.createImageData(this.BitmapWidth, this.BitmapHeight),
- e = d.data;
- if (this.BitmapFormat == 3) {
- this.ColorTableRgb = [];
- for (var f = 0; f < this.BitmapColorTableSize + 1; f++) this.ColorTableRgb[f] = a.readRGBA();
- var g = Math.floor((this.BitmapWidth + 3) / 4) * 4;
- for (var j = f = 0; f < this.BitmapWidth * this.BitmapHeight * 4;) {
- var h = this.ColorTableRgb[a.readUI8()];
- e[f++] = h.Red;
- e[f++] = h.Green;
- e[f++] = h.Blue;
- e[f++] = h.Alpha;
- j++;
- if (j == this.BitmapWidth) {
- a.skipBytes(g - this.BitmapWidth);
- j = 0
- }
- }
- } else for (f =
- 0; f < this.BitmapWidth * this.BitmapHeight * 4;) {
- h = a.readARGB();
- e[f++] = h.Red;
- e[f++] = h.Green;
- e[f++] = h.Blue;
- e[f++] = h.Alpha
- }
- c.putImageData(d, 0, 0);
- this.DataUri = b.toDataURL()
- },
- evaluate: function (a) {
- a.addDefinition(this, this.CharacterId);
- this.Width = this.BitmapWidth;
- this.Height = this.BitmapHeight;
- this.defId = "image" + this.CharacterId;
- a = new fljs.swf.def.BitmapDef;
- a.setCharaId(this.defId);
- a.element.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.DataUri], [null, "x", 0], [null, "y", 0], [null, "width", this.Width], [null, "height",
- this.Height]]);
- a.define();
- this.def = a
- }
- });
- fljs.swf.tag.DefineBitsLossless = function () {};
- fljs.addMethods(fljs.swf.tag.DefineBitsLossless, {
- read: function (a, b) {
- var c = a.stream.byteIndex;
- this.CharacterId = a.readUI16();
- this.BitmapFormat = a.readUI8();
- this.BitmapWidth = a.readUI16();
- this.BitmapHeight = a.readUI16();
- if (this.BitmapFormat == 3) this.BitmapColorTableSize = a.readUI8();
- a = a.stream.buffer.substr(a.stream.byteIndex + 2, b.TagLength - (a.stream.byteIndex - c) - 2);
- a = zip_inflate(a);
- a = new fljs.swf.SwfStream(new fljs.swf.StringStream(a));
- b = document.createElement("canvas");
- b.width = this.BitmapWidth;
- b.height =
- this.BitmapHeight;
- c = b.getContext("2d");
- var d = c.createImageData(this.BitmapWidth, this.BitmapHeight),
- e = d.data;
- if (this.BitmapFormat == 3) {
- this.ColorTableRgb = [];
- for (var f = 0; f < this.BitmapColorTableSize + 1; f++) this.ColorTableRgb[f] = a.readRGB();
- var g = Math.floor((this.BitmapWidth + 3) / 4) * 4;
- for (var j = f = 0; f < this.BitmapWidth * this.BitmapHeight * 4;) {
- var h = this.ColorTableRgb[a.readUI8()];
- e[f++] = h.Red;
- e[f++] = h.Green;
- e[f++] = h.Blue;
- e[f++] = 255;
- j++;
- if (j == this.BitmapWidth) {
- a.skipBytes(g - this.BitmapWidth);
- j = 0
- }
- }
- } else if (this.BitmapFormat == 4) {
- g = Math.floor((this.BitmapWidth * 2 + 3) / 4) * 4;
- for (j = f = 0; f < this.BitmapWidth * this.BitmapHeight * 4;) {
- h = a.readPix15();
- e[f++] = h.Red;
- e[f++] = h.Green;
- e[f++] = h.Blue;
- e[f++] = 255;
- j++;
- if (j == this.BitmapWidth) {
- a.skipBytes(g - this.BitmapWidth);
- j = 0
- }
- }
- } else if (this.BitmapFormat == 5) for (f = 0; f < this.BitmapWidth * this.BitmapHeight * 4;) {
- h = a.readARGB();
- e[f++] = h.Red;
- e[f++] = h.Green;
- e[f++] = h.Blue;
- e[f++] = 255
- }
- c.putImageData(d, 0, 0);
- this.DataUri = b.toDataURL()
- },
- evaluate: function (a) {
- a.addDefinition(this, this.CharacterId);
- this.Width = this.BitmapWidth;
- this.Height = this.BitmapHeight;
- this.defId = "image" + this.CharacterId;
- a = new fljs.swf.def.BitmapDef;
- a.setCharaId(this.defId);
- a.element.sets([[fljs.dom.Namespace.Xlink, "xlink:href", this.DataUri], [null, "x", 0], [null, "y", 0], [null, "width", this.Width], [null, "height", this.Height]]);
- a.define();
- this.def = a
- }
- });
- fljs.swf.tag.DefineFont3 = function () {};
- fljs.addMethods(fljs.swf.tag.DefineFont3, {
- read: function (a) {
- var b;
- this.FontId = a.readUI16();
- this.FontFlagsHasLayout = a.readUB(1);
- this.FontFlagsShiftJIS = a.readUB(1);
- this.FontFlagsSmallText = a.readUB(1);
- this.FontFlagsANSI = a.readUB(1);
- this.FontFlagsWideOffsets = a.readUB(1);
- this.FontFlagsWideCodes = a.readUB(1);
- a.FontFlagsWideCodes = this.FontFlagsWideCodes;
- this.FontFlagsItalic = a.readUB(1);
- this.FontFlagsBold = a.readUB(1);
- this.LanguageCode = a.readLangCode();
- this.FontNameLen = a.readUI8();
- var c = [];
- for (b = 0; b < this.FontNameLen; b++) c.push(String.fromCharCode(a.readUI8()));
- this.FontName = c.join("");
- this.NumGlyphs = a.readUI16();
- this.OffsetTable = [];
- if (this.FontFlagsWideOffsets) {
- for (b = 0; b < this.NumGlyphs; b++) this.OffsetTable.push(a.readUI32());
- this.CodeTableOffset = a.readUI32()
- } else {
- for (b = 0; b < this.NumGlyphs; b++) this.OffsetTable.push(a.readUI16());
- this.CodeTableOffset = a.readUI16()
- }
- this.GlyphShapeTable = [];
- for (b = 0; b < this.NumGlyphs; b++) this.GlyphShapeTable.push(a.readShape());
- this.CodeTable = [];
- for (b = 0; b < this.NumGlyphs; b++) this.CodeTable.push(a.readUI16());
- if (this.FontFlagsHasLayout) {
- this.FontAscent =
- a.readSI16();
- this.FontDescent = a.readSI16();
- this.FontLeading = a.readSI16();
- this.FontAdvanceTable = [];
- for (b = 0; b < this.NumGlyphs; b++) this.FontAdvanceTable.push(a.readSI16());
- this.FontBoundsTable = [];
- for (b = 0; b < this.NumGlyphs; b++) {
- this.FontBoundsTable.push(a.readRECT());
- a.stream.align()
- }
- this.KerningCount = a.readUI16();
- this.FontKerningTable = [];
- for (b = 0; b < this.KerningCount; b++) this.FontKerningTable.push(a.readKerningRecord())
- }
- },
- evaluate: function (a) {
- var b = (new fljs.swf.build.FontBuilder(this, a)).buildDef();
- a.defineFont2(this.FontId, this.GlyphShapeTable.length, b, this.FontName, this.FontFlagsBold, this.FontFlagsItalic, this.CodeTable, this)
- }
- });
- fljs.swf.tag.DoInitAction = function () {};
- fljs.addMethods(fljs.swf.tag.DoInitAction, {
- read: function (a, b) {
- this.SpriteId = a.readUI16();
- this.Actions = a.readActionRecords(b.TagLength - 2 - 1);
- this.ActionEndFlag = a.readUI8()
- },
- evaluate: function (a) {
- if (!this.processed) {
- this.processed = true;
- a.doInitAction(this)
- }
- }
- });
- fljs.swf.tag.tagMap = {
- 0: fljs.swf.tag.End,
- 1: fljs.swf.tag.ShowFrame,
- 2: fljs.swf.tag.DefineShape,
- 4: fljs.swf.tag.PlaceObject,
- 5: fljs.swf.tag.RemoveObject,
- 6: fljs.swf.tag.DefineBits,
- 8: fljs.swf.tag.JpegTables,
- 9: fljs.swf.tag.SetBackgroundColor,
- 10: fljs.swf.tag.DefineFont,
- 11: fljs.swf.tag.DefineText,
- 12: fljs.swf.tag.DoAction,
- 13: fljs.swf.tag.DefineFontInfo,
- 14: fljs.swf.tag.DefineSound,
- 15: fljs.swf.tag.StartSound,
- 18: fljs.swf.tag.SoundStreamHead,
- 19: fljs.swf.tag.SoundStreamBlock,
- 20: fljs.swf.tag.DefineBitsLossless,
- 21: fljs.swf.tag.DefineBitsJPEG2,
- 22: fljs.swf.tag.DefineShape2,
- 24: fljs.swf.tag.Protect,
- 26: fljs.swf.tag.PlaceObject2,
- 28: fljs.swf.tag.RemoveObject2,
- 32: fljs.swf.tag.DefineShape3,
- 33: fljs.swf.tag.DefineText2,
- 34: fljs.swf.tag.DefineButton2,
- 35: fljs.swf.tag.DefineBitsJpeg3,
- 36: fljs.swf.tag.DefineBitsLossless2,
- 37: fljs.swf.tag.DefineEditText,
- 39: fljs.swf.tag.DefineSprite,
- 43: fljs.swf.tag.FrameLabel,
- 45: fljs.swf.tag.SoundStreamHead2,
- 48: fljs.swf.tag.DefineFont2,
- 56: fljs.swf.tag.ExportAssets,
- 59: fljs.swf.tag.DoInitAction,
- 62: fljs.swf.tag.DefineFontInfo2,
- 70: fljs.swf.tag.PlaceObject3,
- 75: fljs.swf.tag.DefineFont3,
- 82: fljs.swf.tag.DoAbc,
- 83: fljs.swf.tag.DefineShape4
- };
- fljs.swf.SwfStream = function (a) {
- this.stream = a;
- this.twipsPerPixel = 20;
- this.logger = fljs.console("parse")
- };
- fljs.addMethods(fljs.swf.SwfStream, {
- _mark: function (a, b) {
- this.debug && this.logger.info(a + ": " + b)
- },
- hasMore: function () {
- return this.stream.hasMore()
- },
- skipBytes: function (a) {
- this.stream.skipBytes(a)
- },
- readBytes: function (a) {
- return this.stream.readBytes(a)
- },
- readUI8: function () {
- return this.stream.nextUByte()
- },
- readUI16: function () {
- var a = this.stream.nextUShort();
- this._mark("readUI16", a);
- return a
- },
- readUI32: function () {
- return this.stream.nextULong()
- },
- readSI8: function () {
- return this.stream.nextSByte()
- },
- readSI16: function () {
- return this.stream.nextSShort()
- },
- readSI32: function () {
- return this.stream.nextSLong()
- },
- readUB: function (a) {
- return this.stream.nextUBits(a)
- },
- readSB: function (a) {
- return this.stream.nextSBits(a)
- },
- readFB: function (a) {
- return this.stream.nextFBits(a)
- },
- readFIXED: function () {
- return this.readFixed()
- },
- readFixed: function () {
- return this.stream.nextFLong()
- },
- readFIXED8: function () {
- return this.readFixed8()
- },
- readFixed8: function () {
- return this.stream.nextFShort()
- },
- readFLOAT16: function () {
- return this.stream.nextHalfFloat()
- },
- readFLOAT: function () {
- return this.readFloat()
- },
- readFloat: function () {
- return this.stream.nextSingleFloat()
- },
- readFloats: function (a) {
- for (var b = [], c = 0; c < a; c++) b.push(this.readFloat());
- return b
- },
- readDOUBLE: function () {
- return this.stream.nextDoubleFloat()
- },
- readDouble: function () {
- return this.stream.nextDoubleFloat()
- },
- readEncodedU32: function () {
- return this.stream.nextEncodedULong()
- },
- readString: function () {
- return this.stream.nextString()
- },
- readSTRING: function () {
- return this.stream.nextString()
- },
- readSwfHeader: function () {
- var a = String.fromCharCode(this.readUI8(), this.readUI8(), this.readUI8()),
- b = this.readUI8(),
- c = this.readUI32();
- if (a == "CWS") {
- var d = fljs.console("rar");
- d.info("deflating...");
- var e = this.stream.buffer.substr(this.stream.byteIndex + 2);
- d.info("unzipping...");
- e = zip_inflate(e);
- d.info("streaming...");
- this.stream = new fljs.swf.StringStream(e);
- d.info("done");
- d.info(this.stream.buffer.length)
- }
- d = this.readRECT();
- e = this.readFIXED8();
- var f = this.readUI16();
- return this.header = {
- Signature: a,
- Version: b,
- FileLength: c,
- FrameSize: d,
- FrameRate: e,
- FrameCount: f
- }
- },
- readLANGCODE: function () {
- return {
- LanguageCode: this.readUI8()
- }
- },
- readRecordHeader: function () {
- var a = this.readUI16(),
- b = a & 63;
- a = a >> 6 & 1023;
- if (b == 63) b = this.readSI32();
- return {
- TagType: a,
- TagLength: b,
- byteIndex: this.stream.byteIndex
- }
- },
- readMATRIX: function () {
- return this.readMatrix()
- },
- readCXFORM: function () {
- var a = this.readUB(1),
- b = this.readUB(1),
- c = this.readUB(4),
- d = 1,
- e = 1,
- f = 1;
- if (b) {
- d = this.readSB(c) / 256;
- e = this.readSB(c) / 256;
- f = this.readSB(c) / 256
- }
- var g = 0,
- j = 0,
- h = 0;
- if (a) {
- g = this.readSB(c);
- j = this.readSB(c);
- h = this.readSB(c)
- }
- return {
- HasAddTerms: a,
- HasMultTerms: b,
- Nbits: c,
- RedMultTerm: d,
- GreenMultTerm: e,
- BlueMultTerm: f,
- RedAddTerm: g,
- GreenAddTerm: j,
- BlueAddTerm: h,
- AlphaMultTerm: 1,
- AlphaAddTerm: 0
- }
- },
- readCXFORMWITHALPHA: function () {
- this.stream.align();
- var a = this.readUB(1),
- b = this.readUB(1),
- c = this.readUB(4),
- d = 1,
- e = 1,
- f = 1,
- g = 1;
- if (b) {
- d = this.readSB(c) / 256;
- e = this.readSB(c) / 256;
- f = this.readSB(c) / 256;
- g = this.readSB(c) / 256
- }
- var j = 0,
- h = 0,
- m = 0,
- k = 0;
- if (a) {
- j = this.readSB(c);
- h = this.readSB(c);
- m = this.readSB(c);
- k = this.readSB(c)
- }
- return {
- HasAddTerms: a,
- HasMultTerms: b,
- Nbits: c,
- RedMultTerm: d,
- GreenMultTerm: e,
- BlueMultTerm: f,
- AlphaMultTerm: g,
- RedAddTerm: j,
- GreenAddTerm: h,
- BlueAddTerm: m,
- AlphaAddTerm: k
- }
- },
- readFILTERLIST: function () {},
- readCLIPACTIONS: function () {
- this.readUI16();
- var a = this.readClipEventFlags(),
- b = this.readClipActionRecords();
- return {
- AllEventFlags: a,
- ClipActionRecords: b
- }
- },
- readClipActionRecords: function () {
- for (var a = [], b; b = this.readClipActionRecord();) a.push(b);
- return a
- },
- readClipActionRecord: function () {
- var a = this.readClipEventFlags();
- if (!a) return null;
- var b = this.readUI32(),
- c = b,
- d;
- if (a & fljs.swf.ClipEventFlags.ClipEventKeyPress) {
- d = this.readUI8();
- c -= 1
- }
- c = this.readActionRecords(c);
- return {
- EventFlags: a,
- ActionRecordSize: b,
- KeyCode: d,
- Actions: c
- }
- },
- readActionRecords: function (a) {
- for (var b = this.stream.byteIndex, c = []; this.stream.byteIndex != b + a;) c.push(this.readActionRecord());
- if (c.length) {
- a = c[c.length - 1];
- a.ActionCode != 0 && c.push({
- code: "0x0",
- address: a.address + a.Length,
- ActionCode: 0,
- Action: "End"
- })
- }
- return c
- },
- readActionRecord: function () {
- var a = this.stream.byteIndex,
- b = this.readUI8();
- a = {
- code: "0x" + b.toString(16),
- address: a,
- ActionCode: b
- };
- if (b >= 128) a.Length = this.readUI16();
- switch (b) {
- case 129:
- a.Action = "ActionGotoFrame";
- a.Frame = this.readUI16();
- break;
- case 131:
- a.Action = "ActionGetUrl";
- a.UrlString = this.readString();
- a.TargetString = this.readString();
- break;
- case 4:
- a.Action = "ActionNextFrame";
- break;
- case 5:
- a.Action = "ActionPrevFrame";
- break;
- case 6:
- a.Action = "ActionPlay";
- break;
- case 7:
- a.Action = "ActionStop";
- break;
- case 8:
- a.Action = "ActionToggleQuality";
- break;
- case 9:
- a.Action = "ActionStopSounds";
- break;
- case 138:
- a.Action = "ActionWaitForFrame";
- a.Frame = this.readUI16();
- a.SkipCount = this.readUI8();
- break;
- case 139:
- a.Action = "ActionSetTarget";
- a.TargetName = this.readString();
- break;
- case 8:
- a.Action = "ActionToggleQuality";
- break;
- case 139:
- a.Action = "ActionSetTarget";
- a.TargetName = this.readString();
- break;
- case 140:
- a.Action = "ActionGotoLabel";
- a.Label = this.readString();
- break;
- case 150:
- this.readActionPush(a);
- break;
- case 153:
- a.Action = "ActionJump";
- a.BranchOffset = this.readSI16();
- break;
- case 157:
- a.Action = "ActionIf";
- a.BranchOffset = this.readSI16();
- break;
- case 154:
- a.Action = "ActionGetUrl2";
- a.SendVarsMethod = this.readUB(2);
- a.Reserved = this.readUB(4);
- a.LoadTargetFlag = this.readUB(1);
- a.LoadVariablesFlag = this.readUB(1);
- break;
- case 159:
- this.readActionGotoFrame2(a);
- break;
- case 141:
- a.Action = "ActionWaitForFrame2";
- a.SkipCount = this.readUI8();
- break;
- case 136:
- this.readActionConstantPool(a);
- break;
- case 155:
- this.readActionDefineFunction(a);
- break;
- case 148:
- this.readActionWith(a);
- break;
- case 135:
- a.Action = "ActionStoreRegister";
- a.RegisterNumber = this.readUI8();
- break;
- case 142:
- this.readActionDefineFunction2(a);
- break;
- case 143:
- this.readActionTry(a);
- break;
- default:
- a.Action = "Unknown";
- break
- }
- return a
- },
- readActionPush: function (a) {
- for (var b = a.Length, c = this.stream.byteIndex, d = []; this.stream.byteIndex < c + b;) {
- var e = this.readUI8(),
- f;
- switch (e) {
- case 0:
- f = this.readString();
- break;
- case 1:
- f = this.readFloat();
- break;
- case 4:
- case 5:
- case 8:
- f = this.readUI8();
- break;
- case 6:
- f = this.readDouble();
- break;
- case 7:
- f = this.readUI32();
- break;
- case 9:
- f = this.readUI16();
- break
- }
- d.push({
- Type: e,
- Value: f
- })
- }
- a.Action = "ActionPush";
- a.Values = d
- },
- readActionGotoFrame2: function (a) {
- this.readUB(6);
- var b =
- this.readUB(1),
- c = this.readUB(1),
- d;
- if (b) d = this.readUI16();
- a.Action = "ActionGotoFrame2";
- a.SceneBiasFlag = b;
- a.PlayFlag = c;
- a.SceneBias = d
- },
- readActionConstantPool: function (a) {
- for (var b = a.Length, c = this.stream.byteIndex, d = [], e = 0; this.stream.byteIndex < c + b;) {
- var f = this.readString();
- e > 0 && d.push(f);
- e++
- }
- a.Action = "ActionConstantPool";
- a.Count = b;
- a.ConstantPool = d
- },
- readActionDefineFunction: function (a) {
- for (var b = this.readString(), c = this.readUI16(), d = [], e = 0; e < c; e++) d.push(this.readString());
- e = this.readUI16();
- var f = this.readActionRecords(e);
- a.Action = "ActionDefineFunction";
- a.FunctionName = b;
- a.NumParams = c;
- a.Params = d;
- a.CodeSize = e;
- a.Code = f
- },
- readActionWith: function (a) {
- var b = this.readUI16(),
- c = this.readActionRecords(b);
- a.Action = "ActionWith";
- a.Size = b;
- a.Code = c
- },
- readActionDefineFunction2: function (a) {
- a.FunctionName = this.readString();
- a.NumParams = this.readUI16();
- a.RegisterCount = this.readUI8();
- a.PreloadParentFlag = this.readUB(1);
- a.PreloadRootFlag = this.readUB(1);
- a.SupressSuperFlag = this.readUB(1);
- a.PreloadSuperFlag = this.readUB(1);
- a.SupressArgumentsFlag =
- this.readUB(1);
- a.PreloadArgumentsFlag = this.readUB(1);
- a.SupressThisFlag = this.readUB(1);
- a.PreloadThisFlag = this.readUB(1);
- this.readUB(7);
- a.PreloadGlobalFlag = this.readUB(1);
- a.Parameters = [];
- for (var b = 0; b < a.NumParams; b++) a.Parameters.push(this.readRegisterParam());
- a.CodeSize = this.readUI16();
- b = this.readActionRecords(a.CodeSize);
- a.Action = "ActionDefineFunction2";
- a.Code = b
- },
- readRegisterParam: function () {
- return {
- Register: this.readUI8(),
- ParamName: this.readString()
- }
- },
- readActionTry: function (a) {
- this.readUB(5);
- a.CatchInRegisterFlag =
- this.readUB(1);
- a.FinallyBlockFlag = this.readUB(1);
- a.CatchBlockFlag = this.readUB(1);
- a.TrySize = this.readUI16();
- a.CatchSize = this.readUI16();
- a.FinallySize = this.readUI16();
- if (a.CatchInRegisterFlag) a.CatchRegister = this.readUI8();
- else a.CatchName = this.readString();
- this.skipBytes(a.TrySize);
- this.skipBytes(a.CatchSize);
- this.skipBytes(a.FinallySize)
- },
- readClipEventFlags: function () {
- return this.header.Version <= 5 ? this.readUB(16) << 16 : this.readUB(32)
- },
- readRGB: function () {
- return {
- Red: this.readUI8(),
- Green: this.readUI8(),
- Blue: this.readUI8()
- }
- },
- readRGBA: function () {
- return {
- Red: this.readUI8(),
- Green: this.readUI8(),
- Blue: this.readUI8(),
- Alpha: this.readUI8()
- }
- },
- readARGB: function () {
- return {
- Alpha: this.readUI8(),
- Red: this.readUI8(),
- Green: this.readUI8(),
- Blue: this.readUI8()
- }
- },
- readRect: function () {
- this.stream.align();
- var a = this.readUB(5);
- return {
- Nbits: a,
- Xmin: this.readSB(a) / this.twipsPerPixel,
- Xmax: this.readSB(a) / this.twipsPerPixel,
- Ymin: this.readSB(a) / this.twipsPerPixel,
- Ymax: this.readSB(a) / this.twipsPerPixel
- }
- },
- readRECT: function () {
- return this.readRect()
- },
- readShapeWithStyle: function () {
- this.stream.align();
- var a = this.readFILLSTYLEARRAY(),
- b = this.readLINESTYLEARRAY();
- this.stream.align();
- var c = this.readUB(4),
- d = this.readUB(4);
- this.NumFillBits = c;
- this.NumLineBits = d;
- var e = this.readSHAPERECORDS();
- return {
- FillStyles: a,
- LineStyles: b,
- NumFillBits: c,
- NumLineBits: d,
- ShapeRecords: e
- }
- },
- readSHAPEWITHSTYLE: function () {
- return this.readShapeWithStyle()
- },
- readSHAPERECORDS: function () {
- for (var a = [], b = this.readSHAPERECORD(); !b.isEndOfShape;) {
- a.push(b);
- b = this.readSHAPERECORD()
- }
- this.stream.align();
- return a
- },
- readSHAPERECORD: function () {
- return this.readUB(1) == 0 ? this.readNonEdgeSHAPERECORD() : this.readEdgeSHAPERECORD()
- },
- readNonEdgeSHAPERECORD: function () {
- var a = this.readUB(1),
- b = this.readUB(1),
- c = this.readUB(1),
- d = this.readUB(1),
- e = this.readUB(1);
- if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0) return {
- isEndOfShape: true,
- type: "END"
- };
- else {
- var f, g, j;
- if (e) {
- f = this.readUB(5);
- g = this.readSB(f);
- j = this.readSB(f)
- }
- var h;
- if (d) h = this.readUB(this.NumFillBits);
- var m;
- if (c) m = this.readUB(this.NumFillBits);
- var k;
- if (b) k = this.readUB(this.NumLineBits);
- var l, n, p, u;
- if (a) {
- l = this.readFILLSTYLEARRAY();
- n = this.readLINESTYLEARRAY();
- this.stream.align();
- p = this.readUB(4);
- u = this.readUB(4);
- this.NumFillBits = p;
- this.NumLineBits = u
- }
- return {
- isEndOfShape: false,
- type: "NONEDGE",
- StateNewStyles: a,
- StateLineStyle: b,
- StateFillStyle1: c,
- StateFillStyle0: d,
- StateMoveTo: e,
- MoveBits: f,
- MoveDeltaX: g / this.twipsPerPixel,
- MoveDeltaY: j / this.twipsPerPixel,
- FillStyle0: h,
- FillStyle1: m,
- LineStyle: k,
- FillStyles: l,
- LineStyles: n,
- NumFillBits: p,
- NumLineBits: u
- }
- }
- },
- readEdgeSHAPERECORD: function () {
- return this.readUB(1) == 1 ? this.readSTRAIGHTEDGERECORD() : this.readCURVEDEDGERECORD()
- },
- readSTRAIGHTEDGERECORD: function () {
- var a = this.readUB(4),
- b = this.readUB(1),
- c;
- if (b == 0) c = this.readUB(1);
- var d;
- if (b == 1 || c == 0) {
- d = this.readSB(a + 2);
- if (c == 0) e = 0
- }
- var e;
- if (b == 1 || c == 1) {
- e = this.readSB(a + 2);
- if (c == 1) d = 0
- }
- return {
- isStraightEdge: true,
- type: "STRAIGHT",
- NumBits: a,
- GeneralLineFlag: b,
- VertLineFlag: c,
- DeltaX: d / this.twipsPerPixel,
- DeltaY: e / this.twipsPerPixel
- }
- },
- readCURVEDEDGERECORD: function () {
- var a = this.readUB(4),
- b = this.readSB(a + 2),
- c = this.readSB(a + 2),
- d =
- this.readSB(a + 2),
- e = this.readSB(a + 2);
- return {
- isCurvedEdge: true,
- type: "CURVED",
- NumBits: a,
- ControlDeltaX: b / this.twipsPerPixel,
- ControlDeltaY: c / this.twipsPerPixel,
- AnchorDeltaX: d / this.twipsPerPixel,
- AnchorDeltaY: e / this.twipsPerPixel
- }
- },
- readFILLSTYLEARRAY: function () {
- var a = this.readUI8();
- if (this.context == fljs.swf.tag.DefineShape2 || this.context == fljs.swf.tag.DefineShape3 || this.context == fljs.swf.tag.DefineShape4) if (a == 255) a = a = this.readUI16();
- for (var b = [], c = 0; c < a; c++) b[c] = this.readFILLSTYLE();
- return b
- },
- readFILLSTYLE: function () {
- var a =
- this.readUI8(),
- b;
- if (a == 0) b = this.context == fljs.swf.tag.DefineShape3 || this.context == fljs.swf.tag.DefineShape4 ? this.readRGBA() : this.readRGB();
- var c, d;
- if (a == 16 || a == 18) {
- c = this.readMatrix();
- d = this.readGRADIENT()
- }
- if (a == 19) {
- c = this.readMatrix();
- d = this.readFOCALGRADIENT()
- }
- var e, f;
- if (a == 64 || a == 65 || a == 66 || a == 67) {
- e = this.readUI16();
- f = this.readMatrix()
- }
- this.stream.align();
- return {
- FillStyleType: a,
- Color: b,
- GradientMatrix: c,
- Gradient: d,
- BitmapId: e,
- BitmapMatrix: f
- }
- },
- readLINESTYLEARRAY: function () {
- var a = this.readUI8();
- if (a == 255) a = a = this.readUI16();
- var b = [];
- if (this.context == fljs.swf.tag.DefineShape4) for (var c = 0; c < a; c++) b[c] = this.readLINESTYLE2();
- else for (c = 0; c < a; c++) b[c] = this.readLINESTYLE();
- return b
- },
- readLINESTYLE: function () {
- var a = this.readUI16(),
- b;
- b = this.context == fljs.swf.tag.DefineShape || this.context == fljs.swf.tag.DefineShape2 ? this.readRGB() : this.readRGBA();
- return {
- Width: a / this.twipsPerPixel,
- Color: b
- }
- },
- readLINESTYLE2: function () {
- var a = this.readUI16(),
- b = this.readUB(2),
- c = this.readUB(2),
- d = this.readUB(1),
- e = this.readUB(1),
- f = this.readUB(1),
- g = this.readUB(1);
- this.readUB(5);
- var j = this.readUB(1),
- h = this.readUB(2),
- m;
- if (c == 2) m = this.readUI16();
- var k;
- if (d == 0) k = this.readRGBA();
- var l;
- if (d == 1) l = this.readFILLSTYLE();
- return {
- Width: a / this.twipsPerPixel,
- StartCapStyle: b,
- JoinStyle: c,
- HasFillFlag: d,
- NoHScaleFlag: e,
- NoVScaleFlag: f,
- PixelHintingFlag: g,
- NoClose: j,
- EndCapStyle: h,
- MiterLimitFactor: m,
- Color: k,
- FillType: l
- }
- },
- readGRADIENT: function () {
- this.stream.align();
- for (var a = this.readUB(2), b = this.readUB(2), c = this.readUB(4), d = [], e = 0; e < c; e++) d.push(this.readGRADRECORD());
- return {
- SpreadMode: a,
- InterpolationMode: b,
- NumGradients: c,
- GradientRecords: d
- }
- },
- readFOCALGRADIENT: function () {
- this.stream.align();
- for (var a = this.readUB(2), b = this.readUB(2), c = this.readUB(4), d = [], e = 0; e < c; e++) d.push(this.readGRADRECORD());
- e = this.readFIXED8();
- return {
- SpreadMode: a,
- InterpolationMode: b,
- NumGradients: c,
- GradientRecords: d,
- FocalPoint: e
- }
- },
- readGRADRECORD: function () {
- var a = this.readUI8(),
- b;
- b = this.context == fljs.swf.tag.DefineShape || this.context == fljs.swf.tag.DefineShape2 ? this.readRGB() : this.readRGBA();
- return {
- Ratio: a,
- Color: b
- }
- },
- readID: function () {},
- readMatrix: function () {
- this.stream.align();
- var a = this.readUB(1),
- b, c, d;
- if (a) {
- b = this.readUB(5);
- c = this.readFB(b);
- d = this.readFB(b)
- }
- var e = this.readUB(1),
- f, g, j;
- if (e) {
- f = this.readUB(5);
- g = this.readFB(f);
- j = this.readFB(f)
- }
- var h = this.readUB(5),
- m = this.readSB(h),
- k = this.readSB(h);
- return {
- HasScale: a,
- NScaleBits: b,
- ScaleX: c,
- ScaleY: d,
- HasRotate: e,
- NRotateBits: f,
- RotateSkew0: g,
- RotateSkew1: j,
- NTranslateBits: h,
- TranslateX: m / this.twipsPerPixel,
- TranslateY: k / this.twipsPerPixel
- }
- },
- readSHAPE: function () {
- var a =
- this.readUB(4),
- b = this.readUB(4);
- this.NumFillBits = a;
- this.NumLineBits = b;
- var c = this.readSHAPERECORDS();
- return {
- NumFillBits: a,
- NumLineBits: b,
- ShapeRecords: c
- }
- },
- readShape: function () {
- return this.readSHAPE()
- },
- readTEXTRECORDS: function () {
- for (var a = [];;) {
- this.stream.align();
- if (this.readUB(1)) a.push(this.readTEXTRECORD());
- else {
- this.stream.align();
- break
- }
- }
- return a
- },
- readTEXTRECORD: function () {
- var a = this.readUB(3),
- b = this.readUB(1),
- c = this.readUB(1),
- d = this.readUB(1),
- e = this.readUB(1),
- f;
- if (b) f = this.readUI16();
- var g;
- if (c) g = this.context == fljs.swf.tag.DefineText2 ? this.readRGBA() : this.readRGB();
- var j;
- if (e) j = this.readSI16() / this.twipsPerPixel;
- var h;
- if (d) h = this.readSI16() / this.twipsPerPixel;
- var m;
- if (b) m = this.readUI16() / this.twipsPerPixel;
- for (var k = this.readUI8(), l = [], n = 0; n < k; n++) l.push(this.readGLYPHENTRY());
- return {
- StyleFlagsReserved: a,
- StyleFlagsHasFont: b,
- StyleFlagsHasColor: c,
- StyleFlagsHasYOffset: d,
- StyleFlagsHasXOffset: e,
- FontId: f,
- TextColor: g,
- XOffset: j,
- YOffset: h,
- TextHeight: m,
- GlyphCount: k,
- GlyphEntries: l
- }
- },
- readGLYPHENTRY: function () {
- return {
- GlyphIndex: this.readUB(this.GlyphBits),
- GlyphAdvance: this.readSB(this.AdvanceBits) / this.twipsPerPixel
- }
- },
- readLangCode: function () {
- return this.readUI8()
- },
- readKerningRecord: function () {
- var a, b;
- if (this.FontFlagsWideCodes) {
- a = this.readUI16();
- b = this.readUI16()
- } else {
- a = this.readUI8();
- b = this.readUI8()
- }
- var c = this.readSI16();
- return {
- FontKerningCode1: a,
- FontKerningCode2: b,
- FontKerningAdjustment: c
- }
- },
- readMp3SoundData: function (a) {
- for (var b = this.stream.byteIndex, c = this.readSI16(), d = this.stream.byteIndex, e = []; this.stream.byteIndex < b + a;) e.push(this.readMp3Frame(e.length));
- a = this.stream.byteIndex - d;
- return {
- SeekSamples: c,
- Mp3Frames: e,
- byteIndex: d,
- byteCount: a,
- buffer: this.stream.buffer
- }
- },
- readMp3Frame: function (a) {
- var b = this.readUB(11);
- if (b != 2047) throw new Error("readMp3Frame: Syncword is wrong in frame# " + a + " @ " + this.stream.byteIndex);
- a = this.readUB(2);
- var c = this.readUB(2),
- d = this.readUB(1),
- e = this.readUB(4),
- f = this.readUB(2),
- g = this.readUB(1);
- this.readUB(1);
- var j = this.readUB(2),
- h = this.readUB(2),
- m = this.readUB(1),
- k = this.readUB(1),
- l = this.readUB(2);
- d == 0 && this.readUI16();
- var n = Math.floor((a == {
- MPEG2_5: 0,
- MPEG2: 2,
- MPEG1: 3
- }.MPEG1 ? 144 : 72) * {
- 1: [null, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],
- 2: [null, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]
- }[{
- 0: 2,
- 2: 2,
- 3: 1}[a]][e] * 1E3 / {
- 0: [11025, 12E3, 8E3],
- 2: [22050, 24E3, 16E3],
- 3: [44100, 48E3, 32E3]
- }[a][f]) + g - 4,
- p = this.readBytes(n);
- return {
- Syncword: b,
- MpegVersion: a,
- Layer: c,
- ProtectionBit: d,
- Bitrate: e,
- SamplingRate: f,
- PaddingBit: g,
- ChannelMode: j,
- ModeExtension: h,
- Copyright: m,
- Original: k,
- Emphasis: l,
- byteCount: n,
- SampleData: p
- }
- },
- readSoundInfo: function () {
- this.readUB(2);
- var a =
- this.readUB(1),
- b = this.readUB(1),
- c = this.readUB(1),
- d = this.readUB(1),
- e = this.readUB(1),
- f = this.readUB(1),
- g;
- if (f) g = this.readUI32();
- var j;
- if (e) j = this.readUI32();
- var h;
- if (d) h = this.readUI16();
- var m, k;
- if (c) {
- m = this.readUI8();
- k = [];
- for (var l = 0; l < m; l++) k.push(this.readEnvelopeRecord())
- }
- return {
- SyncStop: a,
- SyncNoMultiple: b,
- HasEnvelope: c,
- HasLoops: d,
- HasOutPoint: e,
- HasInPoint: f,
- InPoint: g,
- OutPoint: j,
- LoopCount: h,
- EnvPoints: m,
- EnvelopeRecords: k
- }
- },
- readEnvelopeRecord: function () {
- return {
- Pos44: this.readUI32(),
- LeftLevel: this.readUI16(),
- RightLevel: this.readUI16()
- }
- },
- readButtonRecords: function () {
- for (var a = [], b; b = this.readButtonRecord();) a.push(b);
- return a
- },
- readButtonRecord: function () {
- var a = {};
- this.stream.align();
- this.readUB(2);
- a.ButtonHasBlendMode = this.readUB(1);
- a.ButtonHasFilterList = this.readUB(1);
- a.ButtonStateHitTest = this.readUB(1);
- a.ButtonStateDown = this.readUB(1);
- a.ButtonStateOver = this.readUB(1);
- a.ButtonStateUp = this.readUB(1);
- if (!a.ButtonHasBlendMode && !a.ButtonHasFilterList && !a.ButtonStateHitTest && !a.ButtonStateDown && !a.ButtonStateOver && !a.ButtonStateUp) return null;
- a.CharacterId = this.readUI16();
- a.PlaceDepth = this.readUI16();
- a.PlaceMatrix = this.readMatrix();
- if (this.context == fljs.swf.tag.DefineButton2) {
- a.ColorTransform = this.readCXFORMWITHALPHA();
- if (a.ButtonHasFilterList) a.FilterList = this.readFilterList();
- if (a.ButtonHasBlendMode) a.BlendMode = this.readUI8()
- }
- return a
- },
- readFilterList: function () {
- for (var a = [], b = this.readUI8(), c = 0; c < b; c++) a.push(this.readFilter());
- return a
- },
- readFilter: function () {
- var a = {};
- a.FilterId = this.readUI8();
- switch (a.FilterId) {
- case 0:
- a.DropShadowFilter =
- this.readDropShadowFilter();
- break;
- case 1:
- a.BlurFilter = this.readBlurFilter();
- break;
- case 2:
- a.GlowFilter = this.readGlowFilter();
- break;
- case 3:
- a.BevelFilter = this.readBevelFilter();
- break;
- case 4:
- a.GradientGlowFilter = this.readGradientGlowFilter();
- break;
- case 5:
- a.ConvolutionFilter = this.readConvolutionFilter();
- break;
- case 6:
- a.ColorMatrixFilter = this.readColorMatrixFilter();
- break;
- case 7:
- a.GradientBevelFitler = this.readGradientBevelFilter();
- break
- }
- return a
- },
- readColorMatrixFilter: function () {
- return {
- Matrix: this.readFloats(20)
- }
- },
- readConvolutionFilter: function () {
- var a = {};
- a.MatrixX = this.readUI8();
- a.MatrixY = this.readUI8();
- a.Divisor = this.readFloat();
- a.Bias = this.readFloat();
- a.Matrix = this.readFloats(a.MatrixX * a.MatrixY);
- a.DefaultColor = this.readRGBA();
- this.readUB(6);
- a.Clamp = this.readUB(1);
- a.PreserveAlpha = this.readUB(1);
- return a
- },
- readBlurFilter: function () {
- var a = {
- BlurX: this.readFixed(),
- BlurY: this.readFixed(),
- Passes: this.readUB(5)
- };
- this.readUB(3);
- return a
- },
- readDropShadowFilter: function () {
- return {
- DropShadowColor: this.readRGBA(),
- BlurX: this.readFixed(),
- BlurY: this.readFixed(),
- Angle: this.readFixed(),
- Distance: this.readFixed(),
- Strength: this.readFixed8(),
- InnerShadow: this.readUB(1),
- Knockout: this.readUB(1),
- CompositeSource: this.readUB(1),
- Passes: this.readUB(5)
- }
- },
- readGlowFilter: function () {
- return {
- GlowColor: this.readRGBA(),
- BlurX: this.readFixed(),
- BlurY: this.readFixed(),
- Strength: this.readFixed8(),
- InnerGlow: this.readUB(1),
- Knockout: this.readUB(1),
- CompositeSource: this.readUB(1),
- Passes: this.readUB(5)
- }
- },
- readBevelFilter: function () {
- return {
- ShadowColor: this.readRGBA(),
- HighlightColor: this.readRGBA(),
- BlurX: this.readFixed(),
- BlurY: this.readFixed(),
- Angle: this.readFixed(),
- Distance: this.readFixed(),
- Strength: this.readFixed8(),
- InnerShadow: this.readUB(1),
- Knockout: this.readUB(1),
- CompositeSource: this.readUB(1),
- OnTop: this.readUB(1),
- Passes: this.readUB(4)
- }
- },
- readGradientGlowFilter: function () {
- var a = {};
- a.NumColors = this.readUI8();
- a.GradientColors = [];
- for (var b = 0; b < a.NumColors; b++) a.GradientColors.push(this.readRGBA());
- a.GradientRatios = [];
- for (b = 0; b < a.NumColors; b++) a.GradientRatios.push(this.readUI8());
- a.BlurX = this.readFixed();
- a.BlurY = this.readFixed();
- a.Angle = this.readFixed();
- a.Distance = this.readFixed();
- a.Strength = this.readFixed8();
- a.InnerShadow = this.readUB(1);
- a.Knockout = this.readUB(1);
- a.CompositeSource = this.readUB(1);
- a.OnTop = this.readUB(1);
- a.Passes = this.readUB(4);
- return a
- },
- readGradientBevelFilter: function () {
- var a = {};
- a.NumColors = this.readUI8();
- a.GradientColors = [];
- for (var b = 0; b < a.NumColors; b++) a.GradientColors.push(this.readRGBA());
- a.GradientRatios = [];
- for (b = 0; b < a.NumColors; b++) a.GradientRatios.push(this.readUI8());
- a.BlurX = this.readFixed();
- a.BlurY = this.readFixed();
- a.Angle = this.readFixed();
- a.Distance = this.readFixed();
- a.Strength = this.readFixed8();
- a.InnerShadow = this.readUB(1);
- a.Knockout = this.readUB(1);
- a.CompositeSource = this.readUB(1);
- a.OnTop = this.readUB(1);
- a.Passes = this.readUB(4);
- return a
- },
- readButtonCondActions: function (a) {
- for (var b = [], c = this.stream.byteIndex, d; d = this.readUI16();) b.push(this.readButtonCondAction(d - 2));
- b.push(this.readButtonCondAction(a - (this.stream.byteIndex - c)));
- return b
- },
- readButtonCondAction: function (a) {
- var b = {};
- b.CondActionSize = a + 2;
- b.CondIdleToOverDown = this.readUB(1);
- b.CondOutDownToIdle = this.readUB(1);
- b.CondOutDownToOverDown = this.readUB(1);
- b.CondOverDownToOutDown = this.readUB(1);
- b.CondOverDownToOverUp = this.readUB(1);
- b.CondOverUpToOverDown = this.readUB(1);
- b.CondOverUpToIdle = this.readUB(1);
- b.CondIdleToOverUp = this.readUB(1);
- b.CondKeyPress = this.readUB(7);
- b.CondOverDownToIdle = this.readUB(1);
- b.Actions = this.readActionRecords(a - 2);
- return b
- },
- readPix15: function () {
- this.stream.align();
- this.readUB(1);
- return {
- Red: Math.floor(this.readUB(5) * 8.226),
- Green: Math.floor(this.readUB(5) * 8.226),
- Blue: Math.floor(this.readUB(5) * 8.226)
- }
- },
- beginContext: function (a) {
- this.context = a
- },
- endContext: function () {
- this.NumLineBits = this.NumFillBits = this.context = null
- }
- });
- fljs.swf.StringStream = function (a) {
- this.buffer = String(a);
- this.bitIndex = this.byteIndex = this._byte = 0;
- this.byteIndexForBits = -1;
- this.logger = fljs.console("parse")
- };
- fljs.addMethods(fljs.swf.StringStream, {
- length: function () {
- return this.buffer.length
- },
- hasMore: function () {
- return this.byteIndex < this.buffer.length
- },
- seek: function (a) {
- this._byte = 0;
- this.byteIndex = a;
- this.bitIndex = 0;
- this.byteIndexForBits = -1
- },
- skipBytes: function (a) {
- this.byteIndex += a
- },
- readBytes: function (a) {
- for (var b = [], c = 0; c < a; c++) b.push(String.fromCharCode(this.buffer.charCodeAt(this.byteIndex++) & 255));
- return b
- },
- readBytesRev: function (a) {
- for (var b = [], c = 0; c < a; c++) b.unshift(String.fromCharCode(this.buffer.charCodeAt(this.byteIndex++) & 255));
- return b
- },
- align: function () {
- this.bitIndex = 8
- },
- nextUByte: function () {
- return this.buffer.charCodeAt(this.byteIndex++) & 255
- },
- nextSByte: function () {
- var a = this.buffer.charCodeAt(this.byteIndex++) & 255;
- if (a >= 128) a -= 256;
- return a
- },
- nextUShort: function () {
- var a = (this.buffer.charCodeAt(this.byteIndex++) & 255) + ((this.buffer.charCodeAt(this.byteIndex++) & 255) << 8);
- if (a < 0) a += 65536;
- return a
- },
- nextSShort: function () {
- var a = this.nextUShort();
- if (a > 32767) a -= 65536;
- return a
- },
- nextULong: function () {
- var a = this.buffer.charCodeAt(this.byteIndex++) & 255,
- b = this.buffer.charCodeAt(this.byteIndex++) & 255,
- c = this.buffer.charCodeAt(this.byteIndex++) & 255,
- d = this.buffer.charCodeAt(this.byteIndex++) & 255;
- a = a + (b << 8) + (c << 16) + (d << 24);
- if (a < 0) a += 4294967296;
- return a
- },
- nextSLong: function () {
- var a = this.nextULong();
- if (a > 2147483647) a -= 4294967296;
- return a
- },
- nextEncodedULong: function () {
- var a = this.buffer.charCodeAt(this.byteIndex++) & 255;
- if (!(a & 128)) return a;
- a = a & 127 | (this.buffer.charCodeAt(this.byteIndex++) & 255) << 7;
- if (!(a & 16384)) return a;
- a = a & 16383 | (this.buffer.charCodeAt(this.byteIndex++) & 255) << 14;
- if (!(a & 2097152)) return a;
- a = a & 2097151 | (this.buffer.charCodeAt(this.byteIndex++) & 255) << 21;
- if (!(a & 268435456)) return a;
- return a = a & 268435455 | (this.buffer.charCodeAt(this.byteIndex++) & 255) << 28
- },
- nextString: function () {
- for (var a = [], b; b = this.nextUByte();) a.push(String.fromCharCode(b));
- return a.join("")
- },
- _nextByteForBits: function () {
- this._byte = this.nextUByte();
- this.bitIndex = 0;
- this.byteIndexForBits = this.byteIndex
- },
- nextUBits: function (a) {
- this.byteIndex != this.byteIndexForBits && this._nextByteForBits();
- for (var b =
- 0, c = 0; c < a; c++) {
- this.bitIndex == 8 && this._nextByteForBits();
- b = (b << 1) + (this._byte >> 7 - this.bitIndex & 1);
- this.bitIndex += 1
- }
- return b
- },
- nextSBits: function (a, b) {
- b = this.nextUBits(a, b);
- if (b >> a - 1) b -= Math.pow(2, a);
- return b
- },
- nextFShort: function () {
- return this.nextSShort() * Math.pow(2, -8)
- },
- nextFLong: function () {
- return this.nextSLong() * Math.pow(2, -16)
- },
- nextFBits: function (a) {
- return this.nextSBits(a) * Math.pow(2, -16)
- },
- nextHalfFloat: function () {
- return this.nextUShort()
- },
- nextSingleFloat: function () {
- return this.nextULong()
- },
- nextDoubleFloat: function () {
- return this.nextULong() + this.nextULong()
- }
- });
- fljs.swf.TagHeader = function () {};
- fljs.addMethods(fljs.swf.TagHeader, {
- tagClass: function () {
- return fljs.swf.tag.tagMap[this.type]
- }
- });
- fljs.swf.TagReader = function (a) {
- this.stream = new fljs.swf.SwfStream(new fljs.swf.StringStream(a));
- this.tagMap = fljs.swf.tag.tagMap
- };
- fljs.addMethods(fljs.swf.TagReader, {
- position: function () {
- return this.stream.stream.byteIndex
- },
- readSwfHeader: function () {
- return this.stream.readSwfHeader()
- },
- readTagHeader: function () {
- var a = this.stream.readRecordHeader(),
- b = new fljs.swf.TagHeader;
- b.data = a;
- b.type = a.TagType;
- b.length = a.TagLength;
- return b
- },
- readTag: function (a, b) {
- var c = a.tagClass();
- if (c) {
- var d = new c;
- c = this.stream.stream.byteIndex;
- d.read(this.stream, a.data, this, null, fljs.Player.getInstance().stage);
- d.header = a;
- d.byteIndex = c;
- if (!b && this.stream.stream.byteIndex < c + a.length) this.stream.skipBytes(c + a.length - this.stream.stream.byteIndex);
- else b || this.checkLocation(d)
- }
- return d
- },
- skipTag: function (a) {
- this.stream.skipBytes(a.length)
- },
- checkLocation: function (a) {
- if (this.stream.stream.byteIndex != a.byteIndex + a.header.length) {
- fljs.console("parse");
- }
- }
- });
- fljs.swf.DefinitionParser = function (a) {
- this.reader = new fljs.swf.TagReader(a);
- this.pendingSprite = this.pendingHeader = null;
- this.done = false
- };
- fljs.addMethods(fljs.swf.DefinitionParser, {
- readHeader: function () {
- var a = this.reader.readSwfHeader();
- return this.reader.stream.header = a
- },
- readSomeTags: function (a) {
- fljs.console("parse");
- if (!this.done) {
- var b;
- b = this.pendingSprite ? this.pendingSprite.tag : a.mainTimeline;
- for (var c = this.reader, d = 0, e = c.stream.stream.byteIndex; c.stream.hasMore();) {
- var f = c.stream.stream.byteIndex,
- g;
- if (this.pendingHeader) {
- g = this.pendingHeader;
- this.pendingHeader = null
- } else g = c.readTagHeader();
- if (d > 0 && g.length > 2E4) {
- this.pendingHeader =
- g;
- a.mainTimeline.__bytesLoaded += e - c.stream.stream.byteIndex;
- return
- }
- var j = c.stream.stream.byteIndex;
- switch (g.tagClass()) {
- case fljs.swf.tag.DefineShape:
- case fljs.swf.tag.DefineShape2:
- case fljs.swf.tag.DefineShape3:
- case fljs.swf.tag.DefineShape4:
- case fljs.swf.tag.DefineFont:
- case fljs.swf.tag.DefineFont2:
- case fljs.swf.tag.DefineFont3:
- case fljs.swf.tag.DefineFontInfo:
- case fljs.swf.tag.DefineFontInfo2:
- case fljs.swf.tag.DefineText:
- case fljs.swf.tag.DefineText2:
- case fljs.swf.tag.DefineEditText:
- case fljs.swf.tag.DefineSound:
- case fljs.swf.tag.JpegTables:
- case fljs.swf.tag.DefineBits:
- case fljs.swf.tag.DefineBitsJPEG2:
- case fljs.swf.tag.DefineBitsLossless:
- case fljs.swf.tag.DefineBitsLossless2:
- case fljs.swf.tag.DefineButton2:
- case fljs.swf.tag.FrameLabel:
- case fljs.swf.tag.ExportAssets:
- var h =
- c.readTag(g);
- if (c.stream.stream.byteIndex != j + g.length) {
- rar.rar = true;
- return
- }
- h.evaluate(a, this, null, b);
- break;
- case fljs.swf.tag.DefineBitsJpeg3:
- c.readTag(g);
- if (c.stream.stream.byteIndex != j + g.length) {
- rar.rar = true;
- return
- }
- break;
- case fljs.swf.tag.DefineSprite:
- h = c.readTag(g, true);
- h.evaluate(a, this, null, a.stage);
- this.pendingSprite = {
- header: g,
- tag: h,
- endByteIndex: j + g.length
- };
- b = h;
- break;
- case fljs.swf.tag.PlaceObject:
- case fljs.swf.tag.RemoveObject:
- case fljs.swf.tag.SetBackgroundColor:
- case fljs.swf.tag.DoAction:
- case fljs.swf.tag.DoInitAction:
- case fljs.swf.tag.Protect:
- case fljs.swf.tag.StartSound:
- case fljs.swf.tag.SoundStreamHead:
- case fljs.swf.tag.SoundStreamBlock:
- case fljs.swf.tag.PlaceObject2:
- case fljs.swf.tag.PlaceObject3:
- case fljs.swf.tag.RemoveObject2:
- case fljs.swf.tag.SoundStreamHead2:
- case fljs.swf.tag.DoAbc:
- case fljs.swf.tag.End:
- h =
- c.readTag(g);
- b.frameData_[b.framesLoaded_].tags.push([h, g]);
- if (c.stream.stream.byteIndex != j + g.length) {
- rar.rar = true;
- return
- }
- break;
- case fljs.swf.tag.ShowFrame:
- c.readTag(g);
- b.frameData_[b.framesLoaded_].loaded = true;
- b.framesLoaded_ += 1;
- if (b.framesLoaded_ == b.totalFrames_) if (this.pendingSprite) {
- c.stream.stream.byteIndex < this.pendingSprite.endByteIndex && c.stream.skipBytes(this.pendingSprite.endByteIndex - c.stream.stream.byteIndex);
- b.__bytesLoaded = b.__bytesTotal;
- this.pendingSprite = null;
- b = a.mainTimeline
- } else {
- b.__bytesLoaded =
- b.__bytesTotal;
- this.done = true;
- return
- } else b.frameData_[b.framesLoaded_] = {
- tags: []
- };
- break;
- default:
- fljs.console("unk");
- c.skipTag(g)
- }
- d += c.stream.stream.byteIndex - f;
- if (d > 2E4) {
- a.mainTimeline.__bytesLoaded += c.stream.stream.byteIndex - e;
- return
- }
- }
- }
- }
- });
- fljs.swf.DefParser = fljs.swf.DefinitionParser;
- fljs.swf.act = {};
- fljs.swf.act.ActionInterpreter = function (a) {
- this.player = a;
- this.trace = false;
- this.consts = new fljs.swf.act.ConstantsPool;
- this.globals = new fljs.swf.act.Globals(a);
- this.traceLogger = fljs.console("trace")
- };
- fljs.swf.act.ActionInterpreter.ActionCode = {
- End: 0,
- NextFrame: 4,
- PreviousFrame: 5,
- Play: 6,
- Stop: 7,
- Subtract: 11,
- Multiply: 12,
- Divide: 13,
- Not: 18,
- Pop: 23,
- ToInteger: 24,
- GetVariable: 28,
- SetVariable: 29,
- Trace: 38,
- StartDrag: 39,
- EndDrag: 40,
- GetTime: 52,
- Delete: 58,
- DefineLocal: 60,
- CallFunction: 61,
- Return: 62,
- NewObject: 64,
- DefineLocal2: 65,
- InitObject: 67,
- TypeOf: 68,
- Add2: 71,
- Less2: 72,
- Equals2: 73,
- PushDuplicate: 76,
- GetMember: 78,
- SetMember: 79,
- Increment: 80,
- Decrement: 81,
- CallMethod: 82,
- Greater: 103,
- GotoFrame: 129,
- GetUrl: 131,
- StoreRegister: 135,
- ConstantPool: 136,
- WaitForFrame: 138,
- SetTarget: 139,
- GotoLabel: 140,
- DefineFunction2: 142,
- With: 148,
- Push: 150,
- Jump: 153,
- GetUrl2: 154,
- DefineFunction: 155,
- If: 157,
- GotoFrame2: 159
- };
- fljs.addMethods(fljs.swf.act.ActionInterpreter, {
- value: function (a, b) {
- switch (b.Type) {
- case 0:
- case 2:
- case 3:
- case 5:
- case 10:
- case 11:
- return b;
- case 1:
- case 6:
- case 7:
- return {
- Type: 1,
- Value: b.Value
- };
- case 4:
- return a.reg(b.Value);
- case 8:
- case 9:
- return {
- Type: 0,
- Value: this.consts.lookup(b.Value)
- };
- default:
- return "[ERR: unknown value]"
- }
- },
- callFunction: function (a, b, c, d) {
- a = new fljs.swf.act.Context(c, b.Context, this, false, b.Value.SupressThisFlag);
- for (var e = 0; e < b.Value.NumParams; e++) {
- var f = b.Value.Parameters[e].Register,
- g = d[e];
- g || (g = {
- Type: 3,
- Value: undefined
- });
- f ? a.setReg(f, g) : a.setLocal(b.Value.Parameters[e].ParamName, g)
- }
- f = 1;
- if (b.Value.PreloadThisFlag) {
- a.setReg(f, a.locals.get("this"));
- f += 1
- }
- if (b.Value.PreloadArgumentsFlag) {
- a.setReg(f, {
- Type: 3,
- Value: undefined
- });
- f += 1
- }
- if (b.Value.PreloadSuperFlag) {
- a.setReg(f, {
- Type: 3,
- Value: undefined
- });
- f += 1
- }
- if (b.Value.PreloadRootFlag) {
- a.setReg(f, a.locals.get("_root"));
- f += 1
- }
- if (b.Value.PreloadParentFlag) {
- a.setReg(f, a.locals.get("_parent"));
- f += 1
- }
- b.Value.PreloadGlobalFlag && a.setReg(f, a.locals.get("_global"));
- d = this.consts;
- this.consts = b.Consts;
- b = this.eval(c, b.Value.Code, a);
- this.consts = d;
- return b
- },
- callMethod: function (a, b, c, d) {
- var e;
- switch (b.Type) {
- case 0:
- a = new fljs.swf.act.String(b.Value);
- e = a.get(c).apply(a, d);
- break;
- case 3:
- break;
- case 11:
- c = b.Value.get(c);
- switch (c.Type) {
- case 10:
- e = c.Value.apply(b.Value, d);
- break;
- case 12:
- e = this.callFunction(a, c, b.Value, d);
- break
- }
- break
- }
- return e
- },
- callWith: function (a, b, c) {
- a = new fljs.swf.act.Context(c, a, this, true);
- this.eval(c, b.Value.Code, a)
- },
- callback: function (a, b, c) {
- c || (c = []);
- switch (b.Type) {
- case 10:
- b.Value.apply(a, c);
- break;
- case 12:
- this.callFunction(null, b, a, c);
- break
- }
- },
- eval: function (a, b, c) {
- c || (c = new fljs.swf.act.Context(a, null, this));
- for (var d = fljs.swf.act.ActionInterpreter.ActionCode, e = [], f = 0; f < b.length; f++) {
- var g = b[f];
- g = b[f];
- switch (g.ActionCode) {
- case d.ConstantPool:
- this.consts = new fljs.swf.act.ConstantsPool;
- for (var j in g.ConstantPool) this.consts.push(g.ConstantPool[j]);
- this.trace && e.push("ConstantPool = " + this.consts);
- break;
- case d.Push:
- for (j in g.Values) c.stack.push(this.value(c, g.Values[j]));
- if (this.trace) {
- var h = [];
- for (j in g.Values) h.push(this.value(c, g.Values[j]));
- e.push("Push(" + h + ")")
- }
- break;
- case d.GetVariable:
- g = c.stack.pop().Value;
- h = c.get(g);
- c.stack.push(h);
- this.trace && e.push("GetVariable(" + [g, h] + ")");
- break;
- case d.CallMethod:
- g = c.stack.pop().Value;
- var m = c.stack.pop(),
- k = c.stack.pop().Value;
- h = [];
- for (j = 0; j < k; j++) h.push(c.stack.pop());
- var l;
- if (g) l = this.callMethod(c, m, g, h);
- else switch (m.Type) {
- case 10:
- l = m.Value.apply(null, h);
- break;
- case 12:
- l = this.callFunction(c, m, null, h);
- break
- }
- if (typeof l == "undefined") l = {
- Type: 3,
- Value: undefined
- };
- c.stack.push(l);
- this.trace && e.push("Call(" + [m, g, h, l] + ")");
- break;
- case d.SetVariable:
- h = c.stack.pop();
- k = c.stack.pop().Value;
- m = k.split(":");
- if (m.length == 1) {
- a = c.self;
- g = m[0]
- } else {
- a = c.resolvePath(m[0]);
- g = m[1]
- }
- switch (h.Type) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 5:
- case 6:
- case 7:
- a.set(g, {
- Type: h.Type,
- Value: h.Value
- });
- break;
- default:
- a.set(g, h);
- break
- }
- this.trace && e.push("Set: " + [k, g, h]);
- break;
- case d.Divide:
- g = c.stack.pop();
- h = c.stack.pop();
- k = {
- Type: 1,
- Value: h.Value / g.Value
- };
- if (fljs.Player.getInstance().swfVersion == 4 && (isNaN(k.Value) || k.Value == Number.POSITIVE_INFINITY || k.Value == Number.NEGATIVE_INFINITY)) k = {
- Type: 0,
- Value: "#ERROR#"
- };
- c.stack.push(k);
- this.trace && e.push([g, "/", h].toString());
- break;
- case d.Multiply:
- g = c.stack.pop();
- h = c.stack.pop();
- c.stack.push({
- Type: 1,
- Value: Number(g.Value) * Number(h.Value)
- });
- this.trace && e.push([g, "*", h].toString());
- break;
- case d.Equals2:
- g = c.stack.pop();
- h = c.stack.pop();
- c.stack.push({
- Type: 5,
- Value: g.Value == h.Value
- });
- this.trace && e.push([g, "==", h].toString());
- break;
- case d.Not:
- g = Number(c.stack.pop().Value);
- if (fljs.Player.getInstance().swfVersion == 4) g == 0 ? c.stack.push({
- Type: 1,
- Value: 1
- }) : c.stack.push({
- Type: 1,
- Value: 0
- });
- else c.stack.push({
- Type: 5,
- Value: !g
- });
- this.trace && e.push(["!", g].toString());
- break;
- case d.If:
- h = c.stack.pop();
- if (h.Value) {
- for (j = f + 1; b[j] && b[j].address != b[f + 1].address + g.BranchOffset;) if (g.BranchOffset > 0) j += 1;
- else j -= 1;
- f = j - 1
- }
- this.trace && e.push(["if(", h, ")", f].toString());
- break;
- case d.Pop:
- c.stack.pop();
- this.trace && e.push("pop");
- break;
- case d.WaitForFrame:
- if (c.self.get__framesloaded().Value < g.Frame + 1) f += 1 + g.SkipCount;
- this.trace && e.push("waitForFrame(" + [g.Frame + 1, g.SkipCount] + ")");
- break;
- case d.GotoFrame:
- c.self.gotoFrame({
- Type: 1,
- Value: g.Frame + 1
- });
- this.trace && e.push("gotoFrame(" + (g.Frame + 1) + ")");
- break;
- case d.GetUrl:
- c.self.getUrl({
- Type: 0,
- Value: g.UrlString
- }, {
- Type: 0,
- Value: g.TargetString
- });
- this.trace && e.push('getUrl("' + g.UrlString + '")');
- break;
- case d.GetUrl2:
- if (g.LoadTargetFlag) this.trace && e.push("unsupported getUrl call");
- else if (g.LoadVariablesFlag) this.trace && e.push("unsupported getUrl call");
- else {
- g.SendVarsMethod && this.trace && e.push("unsupported getUrl call");
- g = c.stack.pop();
- h = c.stack.pop();
- c.self.getUrl(h, g);
- this.trace && e.push('getUrl("' + h + '", "' + g + '")')
- }
- break;
- case d.Play:
- c.self.play();
- this.trace && e.push("play()");
- break;
- case d.Stop:
- c.self.stop();
- this.trace && e.push("stop()");
- break;
- case d.DefineFunction:
- if (g.FunctionName) {
- c.set(g.FunctionName, {
- Type: 12,
- Value: g,
- Consts: this.consts,
- Context: c
- });
- this.trace && e.push(g.FunctionName + " = function() {}")
- } else {
- c.stack.push({
- Type: 12,
- Value: g,
- Consts: this.consts,
- Context: c
- });
- this.trace && e.push("Push(function " + g.FunctionName + "() {})")
- }
- break;
- case d.SetTarget:
- c.setTarget(g.TargetName);
- this.trace && e.push("SetTarget(" + g.TargetName + ")");
- break;
- case d.PreviousFrame:
- c.self.prevFrame();
- this.trace && e.push("PrevFrame()");
- break;
- case d.NextFrame:
- c.self.nextFrame();
- this.trace && e.push("NextFrame()");
- break;
- case d.Jump:
- h = g.BranchOffset > 0 ? 1 : -1;
- for (j = f + 1; b[j] && b[j].address != b[f + 1].address + g.BranchOffset;) j += h;
- f = j - 1;
- this.trace && e.push("Jump(" + g.BranchOffset + ")");
- break;
- case d.NewObject:
- g =
- c.stack.pop().Value;
- k = c.stack.pop().Value;
- h = [];
- for (j = 0; j < k; j++) h.push(c.stack.pop());
- k = c.get(g);
- switch (k.Type) {
- case 11:
- a = new k.Value;
- a.init.apply(a, h);
- a = {
- Type: 11,
- Value: a
- };
- break
- }
- c.stack.push(a);
- this.trace && e.push("New(" + g + ")");
- break;
- case d.GetMember:
- g = c.stack.pop().Value;
- a = c.stack.pop();
- c.stack.push(a.Value.get(g));
- this.trace && e.push("GetMember (" + [a, g] + ")");
- break;
- case d.SetMember:
- h = c.stack.pop();
- g = c.stack.pop().Value;
- a = c.stack.pop();
- a.Value.set(g, h);
- this.trace && e.push("SetMember (" + [a, g, h] + ")");
- break;
- case d.InitObject:
- k = c.stack.pop().Value;
- a = new fljs.swf.act.Object;
- for (f = 0; f < k; f++) {
- h = c.stack.pop();
- g = c.stack.pop().Value;
- a.set(g, h)
- }
- this.trace && e.push("InitObject (" + [a, k] + ")");
- break;
- case d.Trace:
- h = c.stack.pop();
- this.traceLogger.info(h.Value);
- this.trace && e.push("Trace (" + h.Value + ")");
- break;
- case d.Increment:
- h = c.stack.pop();
- c.stack.push({
- Type: h.Type,
- Value: h.Value + 1
- });
- this.trace && e.push("Increment (" + h.Value + ")");
- break;
- case d.With:
- a = c.stack.pop();
- this.callWith(c, g, a.Value);
- this.trace && e.push("With (" + a + ")");
- break;
- case d.End:
- this.trace && e.push("End");
- break;
- case d.DefineFunction2:
- if (g.FunctionName) {
- c.set(g.FunctionName, {
- Type: 12,
- Value: g,
- Consts: this.consts,
- Context: c
- });
- this.trace && e.push(g.FunctionName + " = function() {}")
- } else {
- c.stack.push({
- Type: 12,
- Value: g,
- Consts: this.consts,
- Context: c
- });
- this.trace && e.push("Push(function " + g.FunctionName + "() {})")
- }
- this.trace && e.push("DefineFunction2(" + g.FunctionName + ")");
- break;
- case d.StoreRegister:
- c.setReg(g.RegisterNumber, c.stack[c.stack.length - 1]);
- this.trace && e.push("StoreRegister(" + g.RegisterNumber + ")");
- break;
- case d.GotoLabel:
- c.self.gotoFrame({
- Type: 0,
- Value: g.Label
- });
- this.trace && e.push("GotoLabel(" + g.Label + ")");
- break;
- case d.StartDrag:
- c.stack.pop();
- c.stack.pop();
- if (c.stack.pop().Value) {
- c.stack.pop();
- c.stack.pop();
- c.stack.pop();
- c.stack.pop()
- }
- break;
- case d.EndDrag:
- break;
- case d.Add2:
- h = c.stack.pop();
- k = c.stack.pop();
- g = h.Type == 0 || k.Type == 0 ? 0 : h.Type == 6 || k.Type == 6 ? 6 : h.Type == 1 || k.Type == 1 ? 1 : 7;
- c.stack.push({
- Type: g,
- Value: k.Value + h.Value
- });
- break;
- case d.Subtract:
- g = Number(c.stack.pop().Value);
- h = Number(c.stack.pop().Value);
- c.stack.push({
- Type: 1,
- Value: h - g
- });
- break;
- case d.DefineLocal:
- h = c.stack.pop();
- g = c.stack.pop().Value;
- c.setLocal(g, h);
- break;
- case d.PushDuplicate:
- h = c.stack[c.stack.length - 1];
- switch (h.Type) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 5:
- case 6:
- case 7:
- g = {
- Type: h.Type,
- Value: h.Value
- };
- break;
- default:
- g = h;
- break
- }
- c.stack.push(g);
- break;
- case d.GetTime:
- c.stack.push({
- Type: 1,
- Value: fljs.now() - fljs.Player.getInstance().startTime
- });
- break;
- case d.Greater:
- h = c.stack.pop();
- k = c.stack.pop();
- c.stack.push({
- Type: 5,
- Value: k.Value > h.Value
- });
- break;
- case d.CallFunction:
- g = c.stack.pop().Value;
- k = c.stack.pop().Value;
- h = [];
- for (j = 0; j < k; j++) h.push(c.stack.pop());
- k = c.get(g);
- if (g) switch (k.Type) {
- case 10:
- l = k.Value.apply(null, h);
- break;
- case 12:
- l = this.callFunction(c, k, null, h);
- break
- }
- if (typeof l == "undefined") l = {
- Type: 3,
- Value: undefined
- };
- c.stack.push(l);
- break;
- case d.DefineLocal2:
- g = c.stack.pop().Value;
- g in c.locals || c.setLocal(g, {
- Type: 3,
- Value: undefined
- });
- break;
- case d.TypeOf:
- h = c.stack.pop();
- g = {
- 0: "string",
- 1: "number",
- 2: "null",
- 3: "undefined",
- 5: "boolean",
- 6: "number",
- 7: "number",
- 10: "function",
- 11: "object",
- 12: "function"
- }[h.Type];
- if (h.Value instanceof fljs.swf.act.MovieClip) g = "movieclip";
- c.stack.push({
- Type: 0,
- Value: g
- });
- break;
- case d.ToInteger:
- h = Number(c.stack.pop().Value);
- h = h >= 0 ? Math.floor(h) : Math.ceil(h);
- c.stack.push({
- Type: 1,
- Value: h
- });
- break;
- case d.Return:
- return c.stack.pop();
- case d.GotoFrame2:
- h = c.stack.pop();
- if (h.Type == 0) {
- m = h.Value.split(":");
- if (m.length == 1) {
- a = c.self;
- h = m[0]
- } else {
- a = c.resolvePath(m[0]);
- h = m[1]
- }
- h = parseInt(h) ? {
- Type: 1,
- Value: parseInt(h)
- } : {
- Type: 0,
- Value: h
- }
- } else {
- a = c.self;
- h = h
- }
- if (g.SceneBias) h.Value += g.SceneBias;
- g.PlayFlag ? c.self.gotoandPlay(h) : c.self.gotoFrame(h);
- break;
- case d.Less2:
- h = c.stack.pop().Value;
- k = c.stack.pop().Value;
- c.stack.push({
- Type: 5,
- Value: k < h
- });
- break;
- case d.Decrement:
- h = c.stack.pop();
- c.stack.push({
- Type: h.Type,
- Value: h.Value - 1
- });
- break;
- case d.Delete:
- g = c.stack.pop().Value;
- a = c.stack.pop();
- a.Value.del(g);
- break;
- default:
- rar.rar = rar;
- this.trace && e.push("skipped: 0x" + g.ActionCode.toString(16))
- }
- }
- this.trace && fljs.console("actions").info(e.join("\n"))
- }
- });
- fljs.swf.act.Context = function (a, b, c, d, e) {
- this.self = a;
- if (this.parent = b) this.root = b.root ? b.root : b;
- this.withCtx = d;
- this.stack = [];
- this.interp = c;
- this.locals = this.withCtx ? this.parent.locals : new fljs.swf.act.Object;
- if (!this.withCtx) {
- a = fljs.Player.getInstance().mainTimeline.getAs2Object();
- this.locals.set("_root", {
- Type: 11,
- Value: a
- });
- this.locals.set("_level0", {
- Type: 11,
- Value: a
- });
- this.locals.set("_global", {
- Type: 11,
- Value: c.globals
- });
- if (this.self) {
- for (c = this; !c.self;) c = c.parent;
- b = c.self;
- c = b.dispObj.getParent() ? b.dispObj.getParent().getAs2Object() : a
- } else b = c = a;
- this.locals.set("_parent", {
- Type: 11,
- Value: c
- });
- e || this.locals.set("this", {
- Type: 11,
- Value: b
- })
- }
- this.regs = []
- };
- fljs.addMethods(fljs.swf.act.Context, {
- set: function (a, b) {
- if (a in this.locals) this.locals.set(a, b);
- else {
- if (this.withCtx) if (a in this.self) {
- this.self.set(a, b);
- return
- }
- this.parent ? this.parent.set(a, b) : this.self.set(a, b)
- }
- },
- setLocal: function (a, b) {
- this.parent ? this.locals.set(a, b) : this.set(a, b)
- },
- get: function (a) {
- var b;
- b = this.locals.get(a);
- if (b.Type != 3) return b;
- if (this.withCtx) {
- b = this.self.get(a);
- if (b.Type != 3) return b
- }
- if (this.parent) return this.parent.get(a);
- else b = this.root ? this.root.get(a) : this.self.get(a);
- if (b.Type != 3) return b;
- return this.interp.globals.get(a)
- },
- reg: function (a) {
- return this.regs[a]
- },
- setReg: function (a, b) {
- this.regs[a] = b
- },
- resolvePath: function (a) {
- var b;
- b = a.indexOf(".") == -1 ? "/" : ".";
- a = a.split(b);
- b = this.self;
- if (a[0] == "" && a.length > 1) b = this.root ? this.root.self : this.self;
- for (var c in a) {
- var d = a[c];
- if (d) if (d != ".") b = d == ".." ? b.parent.Value : b.dispObj.__childNames[d].getAs2Object()
- }
- return b
- },
- setTarget: function (a) {
- if (a) {
- a = this.resolvePath(a);
- if (!this.origTarget) this.origTarget = this.self
- } else a = this.origTarget;
- this.self = a
- }
- });
- fljs.swf.act.ConstantsPool = function () {
- this.consts = []
- };
- fljs.addMethods(fljs.swf.act.ConstantsPool, {
- clear: function () {
- this.consts = []
- },
- push: function (a) {
- this.consts.push(a)
- },
- lookup: function (a) {
- return this.consts[a]
- }
- });
- fljs.swf.act.Object = function () {
- this.self = {};
- this.funcs = {};
- this.props = {}
- };
- fljs.swf.act.Object.Type = {
- Bool: 5,
- Func: 10
- };
- fljs.addMethods(fljs.swf.act.Object, {
- setNativeFunc: function (a, b) {
- this.funcs[a] = b
- },
- setNativeProperty: function (a, b) {
- this.props[a] = b
- },
- set: function (a, b) {
- if (this.props && a in this.props) this["set_" + this.props[a]](b);
- else this.self[a] = b
- },
- get: function (a) {
- if (this.funcs && a in this.funcs) return {
- Type: 10,
- Value: this[this.funcs[a]]
- };
- if (this.props && a in this.props) return this["get_" + this.props[a]]();
- else if (this.self && a in this.self) {
- a = this.self[a];
- return a == null ? {
- Type: 2,
- Value: null
- } : a
- } else return {
- Type: 3,
- Value: undefined
- }
- },
- del: function (a) {
- if (this.props && a in this.props) this["set_" + this.props[a]]({
- Type: 3,
- Value: undefined
- });
- else delete this.self[a]
- }
- });
- fljs.swf.act.MovieClip = function (a) {
- fljs.swf.act.Object.call(this);
- this.dispObj = a;
- this.logger = fljs.console("mcaction");
- this.funcs = fljs.swf.act.MovieClip.funcs;
- this.props = fljs.swf.act.MovieClip.props
- };
- fljs.inherits(fljs.swf.act.MovieClip, fljs.swf.act.Object);
- fljs.swf.act.MovieClip.props = {
- _framesloaded: "_framesloaded",
- _visible: "_visible",
- _x: "_x",
- _y: "_y",
- onEnterFrame: "onEnterFrame",
- onRollOver: "onRollOver",
- onRollOut: "onRollOut",
- onPress: "onPress",
- onRelease: "onRelease",
- _xmouse: "_ymouse",
- _xscale: "_xscale",
- _yscale: "_yscale",
- _width: "_width"
- };
- fljs.swf.act.MovieClip.funcs = {
- nextFrame: "nextFrame",
- prevFrame: "prevFrame",
- gotoFrame: "gotoFrame",
- gotoAndStop: "gotoFrame",
- gotoAndPlay: "gotoAndPlay",
- play: "play",
- stop: "stop",
- localToGlobal: "localToGlobal",
- hitTest: "hitTest",
- getBytesLoaded: "getBytesLoaded",
- getBytesTotal: "getBytesTotal"
- };
- fljs.addMethods(fljs.swf.act.MovieClip, {
- get: function (a) {
- var b = this.dispObj.__childNames[a];
- return b ? {
- Type: 11,
- Value: b.getAs2Object()
- } : fljs.base(this, "get", a)
- },
- nextFrame: function () {
- this.logger.info("nextFrame");
- this.dispObj.currentFrameIndex_ < this.dispObj.totalFrames_ - 1 && this.dispObj.nextFrame()
- },
- prevFrame: function () {
- this.logger.info("prevFrame");
- this.dispObj.currentFrameIndex_ > 0 && this.dispObj.prevFrame()
- },
- gotoFrame: function (a) {
- this.logger.info("gotoFrame: " + a);
- this.dispObj.gotoAndStop(a.Value)
- },
- gotoAndPlay: function (a) {
- this.logger.info("gotoAndPlay: " + a);
- this.dispObj.gotoAndPlay(a.Value)
- },
- play: function () {
- this.logger.info("play");
- this.dispObj.play()
- },
- stop: function () {
- this.logger.info("stop");
- this.dispObj.stop()
- },
- getUrl: function (a, b) {
- if (b.Value == "") window.location = a.Value;
- if (a.Value.substr(0, 10) == "FSCommand:") switch (a.Value.substr(10)) {
- case "quit":
- fljs.Player.getInstance().pause();
- break;
- case "fullscreen":
- break;
- case "allowscale":
- break;
- case "showmenu":
- break;
- case "exec":
- break;
- case "trapallkeys":
- break
- } else {
- b = b.Value;
- if (fljs.agent.OS == "iPhone" || fljs.agent.OS == "iPad") if (b == "_blank") b = "_self";
- window.open(a.Value, b);
- return {
- Type: 0,
- Value: ""
- }
- }
- },
- localToGlobal: function (a) {
- a = new flash.geom.Point(a.Value.get("x"), a.Value.get("y"));
- a = this.dispObj.localToGlobal(a);
- var b = new fljs.swf.act.Object;
- b.set("x", a.x);
- b.set("y", a.y);
- return {
- Type: 11,
- Value: b
- }
- },
- hitTest: function (a, b, c) {
- if (arguments.length == 1) {
- c = arguments[0];
- var d;
- if (c.Type != 0) d = c.Value;
- return {
- Type: 5,
- Value: this.dispObj.hitTestObject(d.Value.dispObj)
- }
- }
- },
- getBytesLoaded: function () {
- return {
- Type: 1,
- Value: this.dispObj.__bytesLoaded
- }
- },
- getBytesTotal: function () {
- return {
- Type: 1,
- Value: this.dispObj.__bytesTotal
- }
- },
- get__framesloaded: function () {
- return {
- Type: 1,
- Value: this.dispObj.framesLoaded_
- }
- },
- get__xscale: function () {
- return {
- Type: 1,
- Value: this.dispObj.scaleX
- }
- },
- set__xscale: function (a) {
- this.dispObj.scaleX = a.Value
- },
- get__yscale: function () {
- return {
- Type: 1,
- Value: this.dispObj.scaleY
- }
- },
- set__yscale: function (a) {
- this.dispObj.scaleY = a.Value
- },
- get__visible: function () {
- return {
- Type: 5,
- Value: this.dispObj.getVisible()
- }
- },
- set__visible: function (a) {
- this.dispObj.setVisible(a.Value)
- },
- get__x: function () {
- return {
- Type: 1,
- Value: this.dispObj.x
- }
- },
- set__x: function (a) {
- this.dispObj.x = a.Value
- },
- get__y: function () {
- return {
- Type: 1,
- Value: this.dispObj.y
- }
- },
- set__y: function (a) {
- this.dispObj.y = a.Value
- },
- set_onEnterFrame: function (a) {
- this._onEnterFrame = a
- },
- set_onRollOver: function (a) {
- this.set_onMouseEvent(flash.events.MouseEvent.MOUSE_OVER, a)
- },
- set_onRollOut: function (a) {
- this.set_onMouseEvent(flash.events.MouseEvent.MOUSE_OUT, a)
- },
- set_onPress: function (a) {
- this.set_onMouseEvent(flash.events.MouseEvent.MOUSE_DOWN, a)
- },
- set_onRelease: function (a) {
- this.set_onMouseEvent(flash.events.MouseEvent.MOUSE_UP, a)
- },
- set_onMouseEvent: function (a, b) {
- var c = this["_on" + a] && !(this["_on" + a].Type == 2 || this["_on" + a].Type == 3),
- d = !(b.Type == 2 || b.Type == 3);
- c && !d && this.dispObj.removeEventListener(a, this["_on" + a + "Handler"]);
- if (!c && d) {
- this["_on" + a + "Handler"] || (this["_on" + a + "Handler"] = fljs.bind(this.onMouseEventHandler, this, a));
- this.dispObj.addEventListener(a, this["_on" + a + "Handler"])
- }
- this["_on" + a] = b
- },
- get_xmouse: function () {
- return this.dispObj.get_mouseX()
- },
- get_ymouse: function () {
- return this.dispObj.get_mouseY()
- },
- onMouseEventHandler: function (a) {
- fljs.Player.getInstance().interpreter.callback(this, this["_on" + a])
- },
- get__width: function () {
- return {
- Type: 1,
- Value: this.dispObj.getWidth()
- }
- },
- set__width: function (a) {
- this.dispObj.setWidth(a.Value)
- }
- });
- fljs.swf.act.Mouse = function () {
- fljs.swf.act.Object.call(this);
- this.funcs = fljs.swf.act.Mouse.funcs;
- this.props = fljs.swf.act.Mouse.props
- };
- fljs.inherits(fljs.swf.act.Mouse, fljs.swf.act.Object);
- fljs.swf.act.Mouse.props = {};
- fljs.swf.act.Mouse.funcs = {
- hide: "hide",
- show: "show",
- addListener: "addListener",
- removeListener: "removeListener"
- };
- fljs.addMethods(fljs.swf.act.Mouse, {
- hide: function () {
- fljs.Player.getInstance().element.getElement().setAttributeNS(null, "cursor", 'url("img/nothing.cur")')
- },
- show: function () {
- fljs.Player.getInstance().element.getElement().setAttributeNS(null, "cursor", "")
- },
- addListener: function () {},
- removeListener: function () {}
- });
- fljs.swf.act.Mouse._self = {};
- fljs.swf.act.Mouse._props = {};
- fljs.swf.act.Mouse._funcs = {
- hide: "hide",
- show: "show"
- };
- fljs.addStaticMethods(fljs.swf.act.Mouse, {
- set: function (a, b) {
- delete this._funcs[a];
- delete this._props[a];
- this._self[a] = b
- },
- get: function (a) {
- var b = this._funcs[a];
- if (b) return {
- Type: 10,
- Value: this[b]
- };
- if (b = this._props[a]) return this[b];
- else {
- a = this._self[a];
- return a == null ? {
- Type: 2,
- Value: null
- } : a
- }
- },
- hide: function () {
- fljs.Player.getInstance().element.getElement().setAttributeNS(null, "cursor", 'url("img/nothing.cur")')
- },
- show: function () {
- fljs.Player.getInstance().element.getElement().setAttributeNS(null, "cursor", "")
- }
- });
- fljs.swf.act.Sound = function () {
- this.funcs = fljs.swf.act.Sound.funcs;
- this.props = {}
- };
- fljs.inherits(fljs.swf.act.Sound, fljs.swf.act.Object);
- fljs.swf.act.Sound.funcs = {
- attachSound: "attachSound",
- start: "start",
- stop: "stop"
- };
- fljs.addMethods(fljs.swf.act.Sound, {
- init: function (a) {
- this.target = a
- },
- attachSound: function (a) {
- var b = fljs.Player.getInstance();
- this.target = b.sounds[b.assets[a.Value]]
- },
- start: function () {
- var a = fljs.Player.getInstance();
- if (!this.audio) this.audio = a.allocAudio();
- var b = this.audio,
- c = this.target,
- d = new fljs.swf.StringStream(a.reader.stream.stream.buffer);
- d.byteIndex = c.Mp3SoundData.byteIndex;
- c = d.readBytes(c.Mp3SoundData.byteCount).join("");
- c = "data:audio/mpeg;base64," + btoa(c);
- b.setAttribute("src", c);
- b.addEventListener("load", function () {
- b.currentTime = 0;
- b.fljsPlaying = true;
- a.playing && b.play()
- }, true);
- b.load()
- },
- stop: function () {
- if (this.audio) {
- fljs.Player.getInstance();
- var a = this.audio;
- a.fljsPlaying = false;
- a.pause()
- }
- }
- });
- fljs.swf.act.Math = function () {
- this.funcs = fljs.swf.act.Math.funcs;
- this.props = fljs.swf.act.Math.props
- };
- fljs.inherits(fljs.swf.act.Math, fljs.swf.act.Object);
- fljs.swf.act.Math.props = {};
- fljs.swf.act.Math.funcs = {
- floor: "floor"
- };
- fljs.addMethods(fljs.swf.act.Math, {
- floor: function (a) {
- return {
- Type: 1,
- Value: Math.floor(a.Value)
- }
- }
- });
- fljs.swf.act.Math._self = {};
- fljs.swf.act.Math._props = {};
- fljs.swf.act.Math._funcs = {
- floor: "floor",
- random: "random"
- };
- fljs.addStaticMethods(fljs.swf.act.Math, {
- set: function (a, b) {
- delete this._funcs[a];
- delete this._props[a];
- this._self[a] = b
- },
- get: function (a) {
- var b = this._funcs[a];
- if (b) return {
- Type: 10,
- Value: this[b]
- };
- if (b = this._props[a]) return this[b];
- else {
- a = this._self[a];
- return a == null ? {
- Type: 2,
- Value: null
- } : a
- }
- },
- floor: function (a) {
- return {
- Type: 1,
- Value: Math.floor(a.Value)
- }
- },
- random: function () {
- return {
- Type: 1,
- Value: Math.random()
- }
- }
- });
- fljs.swf.act.System = function () {
- this.funcs = {};
- this.props = fljs.swf.act.System.props;
- this.security = new fljs.swf.act.SystemSecurity
- };
- fljs.inherits(fljs.swf.act.System, fljs.swf.act.Object);
- fljs.swf.act.System.props = {
- security: "security"
- };
- fljs.swf.act.SystemSecurity = function () {
- this.funcs = fljs.swf.act.SystemSecurity.funcs;
- this.props = {}
- };
- fljs.inherits(fljs.swf.act.SystemSecurity, fljs.swf.act.Object);
- fljs.swf.act.SystemSecurity.funcs = {
- allowDomain: "allowDomain"
- };
- fljs.addMethods(fljs.swf.act.SystemSecurity, {
- allowDomain: function () {},
- get_security: function () {
- return {
- Type: 11,
- Value: this.security
- }
- }
- });
- fljs.swf.act.String = function (a) {
- this.str = a;
- this.funcs = fljs.swf.act.String.funcs;
- this.props = {}
- };
- fljs.inherits(fljs.swf.act.String, fljs.swf.act.Object);
- fljs.swf.act.String.funcs = {
- substr: "substr"
- };
- fljs.addMethods(fljs.swf.act.String, {
- substr: function (a, b) {
- return {
- Type: 0,
- Value: this.str.substr(a.Value, b.Value)
- }
- }
- });
- fljs.swf.act.Globals = function () {
- fljs.swf.act.Object.call(this);
- this.funcs = fljs.swf.act.Globals.funcs;
- this.props = fljs.swf.act.Globals.props;
- this.Mouse = {
- Type: 11,
- Value: fljs.swf.act.Mouse
- };
- this.Sound = {
- Type: 11,
- Value: fljs.swf.act.Sound
- };
- this.System = {
- Type: 11,
- Value: fljs.swf.act.System
- };
- this.Math = {
- Type: 11,
- Value: fljs.swf.act.Math
- }
- };
- fljs.inherits(fljs.swf.act.Globals, fljs.swf.act.Object);
- fljs.swf.act.Globals.props = {
- Mouse: "Mouse",
- Sound: "Sound",
- System: "System",
- Math: "Math",
- setInterval: "setInterval",
- clearInterval: "clearInterval"
- };
- fljs.swf.act.Globals.funcs = {};
- fljs.addMethods(fljs.swf.act.Globals, {
- get_Mouse: function () {
- return this.Mouse
- },
- get_Sound: function () {
- return this.Sound
- },
- get_System: function () {
- return this.System
- },
- get_Math: function () {
- return this.Math
- },
- get_setInterval: function () {
- return {
- Type: 10,
- Value: fljs.bind(this.setInterval, this)
- }
- },
- get_clearInterval: function () {
- return {
- Type: 10,
- Value: fljs.bind(this.clearInterval, this)
- }
- },
- setInterval: function () {
- var a = fljs.Player.getInstance().interpreter,
- b;
- b = [];
- switch (arguments[0].Type) {
- case 10:
- b = [arguments[0].Value, null];
- for (var c = 2; c < arguments.length; c++) b.push(arguments[c]);
- a = fljs.bind.apply(null, b);
- b = arguments[1].Value;
- b = [a, b];
- break;
- case 11:
- b = [];
- for (c = 3; c < arguments.length; c++) b.push(arguments[c]);
- a = fljs.bind(a.callMethod, a, null, arguments[0], arguments[1], b);
- b = arguments[2].Value;
- b = [a, b];
- break;
- case 12:
- b = [];
- for (c = 2; c < arguments.length; c++) b.push(arguments[c]);
- a = fljs.bind(a.callFunction, a, null, arguments[0], null, b);
- b = arguments[1].Value;
- b = [a, b];
- break
- }
- return {
- Type: 1,
- Value: setInterval.apply(null, b)
- }
- },
- clearInterval: function (a) {
- clearInterval(a.Value)
- }
- });
- flash.display.Document = function () {
- flash.display.MovieClip.call(this)
- };
- fljs.inherits(flash.display.Document, flash.display.MovieClip);
- fljs.player.AbsTimeSync = function (a) {
- this.frameRate = a
- };
- fljs.addMethods(fljs.player.AbsTimeSync, {
- start: function () {
- this.frameCount = 1;
- this.frameStart = 0;
- this.startAt = +new Date
- },
- delay: function () {
- this.frameCount++;
- return 1E3 * (this.frameCount - this.frameStart) / this.frameRate - (+new Date - this.startAt)
- }
- });
- fljs.player.AudioSync = function (a) {
- this.frameRate = a;
- this.oneFrame = 1E3 / this.frameRate;
- this.audio = null;
- this.frames = {};
- this.timeSync = new fljs.player.AbsTimeSync(a)
- };
- fljs.addMethods(fljs.player.AudioSync, {
- setAudio: function (a) {
- this.audio = a;
- this.audio.setSync(this)
- },
- setFrameTime: function (a, b) {
- this.frames[a] = b
- },
- start: function (a) {
- if (this.audio.frameShouldPlay(a) && typeof this.frames[a] != "undefined") this.audioSync = true;
- else {
- this.timeSync.start();
- this.audioSync = false
- }
- this.lastFrame = a
- },
- stop: function () {},
- delay: function (a) {
- if (a != this.lastFrame + 1) {
- this.start(a);
- return this.oneFrame
- }
- this.lastFrame = a;
- if (this.audioSync) if (this.audio.frameShouldPlay(a) && typeof this.frames[a] != "undefined") {
- expTime = this.audio.currentTime();
- time = this.frames[a];
- return time - expTime
- } else {
- this.timeSync.start();
- this.audioSync = false;
- return this.oneFrame
- } else if (this.audio.frameShouldPlay(a) && typeof this.frames[a] != "undefined") {
- this.audioSync = true;
- return this.oneFrame
- } else return this.timeSync.delay(a)
- }
- });
- fljs.enterFrameDispatcher = function () {
- this.enterFrameListeners = []
- };
- fljs.addMethods(fljs.enterFrameDispatcher, {
- addEventListener: function (a, b) {
- this.enterFrameListeners.push(b)
- },
- removeEventListener: function (a, b) {
- for (var c in this.enterFrameListeners) this.enterFrameListeners[c] == b && this.enterFrameListeners.splice(c, 1)
- },
- dispatchEvent: function (a) {
- for (var b in this.enterFrameListeners) this.enterFrameListeners[b](a)
- }
- });
- fljs.Player = function () {
- this.muted = this.debug = this.predefine = false;
- this.playing = true;
- this.audioId = 1;
- this.audios = {};
- this._volume = 1;
- this.params = {};
- this.renderTextAsGlyphs = false;
- this.loadExtResources = fljs.agent.browser == "Safari" || fljs.agent.browser == "Firefox" || fljs.agent.browser == "Opera"
- };
- fljs.Player.getInstance = function () {
- return fljs.Player._instance || (fljs.Player._instance = new fljs.Player)
- };
- fljs.addMethods(fljs.Player, {
- initialize: function (a) {
- fljs.debug = this.debug;
- this.containerElement = a;
- this.dictionary = {};
- this.displayList = [];
- this.frameNum = -1;
- this.fontsWithoutInfo = {};
- this.fonts = {};
- this.fonts2 = {};
- this.fonts2ByName = {};
- this.fonts2ByStyle = {};
- this.sounds = {};
- this.tagMap = fljs.swf.tag.tagMap;
- this.logger = fljs.console("player");
- this.dispatcher = new fljs.enterFrameDispatcher;
- this.buildSvg();
- this.assets = {};
- this.actionQueue = [];
- this.initActionQueue = [];
- this.delayFrame = 0;
- this.startTime = fljs.now();
- this.initTimeoutHandler()
- },
- initTimeoutHandler: function () {
- this.timeouts = [];
- this.timeoutMessageName = "fljs-timeout-message";
- window.addEventListener("message", fljs.bind(this.timeoutHandler, this), true)
- },
- timeoutHandler: function (a) {
- if (a.source == window && a.data == this.timeoutMessageName) {
- a.stopPropagation();
- this.timeouts.length > 0 && this.timeouts.shift()()
- }
- },
- setTimeout: function (a) {
- this.timeouts.push(a);
- window.postMessage(this.timeoutMessageName, "*")
- },
- buildSvg: function () {
- for (var a = this.containerElement.firstChild, b; a;) {
- if (a.nodeName == "SVG") {
- b =
- new fljs.dom.Element(a);
- break
- }
- a = a.nextSibling
- }
- if (!a) {
- for (var a = this.containerElement.firstChild, b; a;) {
- b = a.nextSibling;
- this.containerElement.removeChild(a);
- a = b
- };
- b = new fljs.dom.Element;
- b.create(fljs.dom.Namespace.Svg, "svg")
- }
- b.set(null, "overflow", "hidden");
- b.sets([[null, "width", this.containerElement.offsetWidth], [null, "height", this.containerElement.offsetHeight], [null, "stroke-linecap", "round"], [null, "stroke-linejoin", "round"], [null, "fill-rule", "evenodd"], [null, "clip-rule", "evenodd"]]);
- if (fljs.agent.OS == "iPhone" || fljs.agent.OS == "iPad") b.sets([[null, "color-rendering", "optimizeSpeed"], [null, "image-rendering",
- "optimizeSpeed"]]);
- b.update();
- this.svg = this.element = this.element_ = b;
- a || this.containerElement.appendChild(b.element);
- b = this.defs = new fljs.dom.Element;
- b.create(fljs.dom.Namespace.Svg, "defs");
- this.svg.append(b)
- },
- createStage: function () {
- new flash.display.DisplayObject;
- this.stage = new flash.display.Stage;
- this.stage.setParent(this);
- this.svg.append(this.stage._clipElement);
- this.stage.initialize();
- this.stage.setFrameRate(this.header.FrameRate)
- },
- addDefinition: function (a, b) {
- this.dictionary[b] = a
- },
- defineFont: function (a, b, c) {
- this.fonts[a] = {
- glyphCount: b,
- element: c
- };
- this.defs.element.appendChild(c)
- },
- defineFont2: function (a, b, c, d, e, f, g, j) {
- this.fonts2[a] = {
- glyphCount: b,
- element: c,
- name: d,
- bold: e,
- italic: f,
- codeTable: g,
- tag: j
- };
- this.fonts2ByName[d] = a;
- this.fonts2ByStyle[[d, e, f].toString()] = a;
- for (var h in c) this.defs.append(c[h])
- },
- lookupFontByName: function (a) {
- return "font-" + String(this.fonts2ByName[a])
- },
- lookupFontByStyle: function (a, b, c) {
- a = [a, b, c].toString();
- return "font-" + String(this.fonts2ByStyle[a])
- },
- addToDisplayList: function (a, b) {
- this.displayList[b] = a
- },
- loadSwf: function (a, b, c, d, e, f) {
- b.style.width = c + "px";
- b.style.height = d + "px";
- this.name = e;
- for (var g in f) this.params[g] = f[g];
- this.initialize(b);
- (new fljs.swf.SwfLoader).load(a, fljs.bind(this.readSwf, this))
- },
- readSwf: function (a) {
- this.parser = new fljs.swf.DefinitionParser(a.stream.buffer);
- this.readHeader();
- this.createStage();
- this.buildMainTimeline();
- this.interpreter = new fljs.swf.act.ActionInterpreter(this);
- this.sync = new fljs.player.AbsTimeSync(this.header.FrameRate);
- this.sync.start();
- this.enterFrame()
- },
- showFrame: function () {
- delay = this.sync.delay(this.mainTimeline.currentFrameIndex_, this.delayFrame);
- delay = Math.max(0, delay);
- this.lastFrameAt = fljs.now();
- this.waitingOnFrame = true;
- if (fljs.agent.browser == "Opera") {
- this.element.getElement().setAttributeNS(null, "fill-color", "red");
- this.element.getElement().setAttributeNS(null, "fill-color", "none")
- }
- var a = fljs.bind(this.enterFrame, this, this.frameNum);
- delay >= 10 ? setTimeout(a, delay) : this.setTimeout(a)
- },
- enterFrame: function (a) {
- if (!this.delayFrame) {
- this.logger.info("player frame#" + a);
- this.waitingOnFrame = false;
- if (!this.playing) return;
- this.frameNum += 1;
- var b;
- if (this.element.getElement().suspendRedraw) b = this.element.getElement().suspendRedraw(100);
- this.dispatcher.dispatchEvent(new flash.events.Event(flash.events.Event.ENTER_FRAME));
- this.parser.readSomeTags(this);
- this.doActionQueue();
- this.element.getElement().unsuspendRedraw && this.element.getElement().unsuspendRedraw(b)
- }
- this.showFrame()
- },
- doActions: function (a, b) {
- this.actionQueue.push({
- target: this.containingDispObj(a).getAs2Object(),
- actions: b
- })
- },
- doInitAction: function (a) {
- this.initActionQueue.push({
- target: null,
- actions: a.Actions
- })
- },
- containingDispObj: function (a) {
- for (; !(a instanceof flash.display.MovieClip && !a.getEnabled());) a = a.getParent();
- return a
- },
- doActionQueue: function () {
- for (var a in this.initActionQueue) {
- var b = this.initActionQueue[a];
- this.interpreter.eval(null, b.actions)
- }
- this.initActionQueue = [];
- for (a in this.actionQueue) {
- b = this.actionQueue[a];
- this.interpreter.eval(b.target, b.actions)
- }
- this.actionQueue = []
- },
- readHeader: function () {
- var a =
- this.parser.readHeader();
- this.header = a;
- this.swfVersion = a.Version;
- var b = a.FrameSize.Xmin,
- c = a.FrameSize.Ymin;
- this.svg.sets([[null, "viewBox", [b, c, a.FrameSize.Xmax - b, a.FrameSize.Ymax - c].join(" ")], [null, "preserveAspectRatio", "none"]]);
- this.svg.update()
- },
- buildMainTimeline: function () {
- var a = new flash.display.Document;
- a.setName("_root");
- a.__frameNum = 0;
- var b = new flash.display.Scene;
- b.labels = [];
- b.name = "Scene 1";
- b.numFrames = this.header.FrameCount;
- a.frameData_ = [];
- for (var c = 0; c < this.header.FrameCount; c++) a.frameData_.push({
- scripts: [],
- parts: [],
- tags: [],
- label: ""
- });
- a.labels_ = {};
- a.sceneIndices_ = {};
- a.currentSceneIndex_ = 0;
- a.scenes_ = [b];
- a.currentFrameIndex_ = 0;
- a.currentLabel_ = null;
- a._enabled = false;
- a.framesLoaded_ = 0;
- a.totalFrames_ = this.header.FrameCount;
- a.next_ = null;
- a.playing_ = true;
- a.__bytesLoaded = this.parser.reader.stream.stream.byteIndex;
- a.__bytesTotal = this.header.FileLength;
- this.mainTimeline = a;
- b = a.getAs2Object();
- for (c in this.params) b.set(c, {
- Type: 0,
- Value: this.params[c]
- });
- this.stage.addChild(a);
- a.onCreate()
- },
- play: function () {
- if (!this.playing) {
- for (var a in this.audios) {
- var b =
- this.audios[a];
- b.fljsPlaying && b.play()
- }
- this.playing = true;
- this.setPlayingControl();
- this.waitingOnFrame || this.enterFrame()
- }
- },
- pause: function () {
- if (this.playing) {
- this.playing = false;
- this.setPlayingControl();
- for (var a in this.audios) this.audios[a].pause()
- }
- },
- mute: function () {
- this.prevVolume = this.getVolume();
- this.setVolume(0);
- this.setVolumeControl();
- for (var a in this.audios) this.audioSetVolume(this.audios[a])
- },
- unmute: function () {
- this.setVolume(this.prevVolume);
- this.setVolumeControl();
- for (var a in this.audios) this.audioSetVolume(this.audios[a])
- },
- allocAudio: function () {
- var a = new Audio,
- b = this;
- a.addEventListener("loadedmetadata", function () {
- b.audioSetVolume(a)
- }, false);
- a.fljsPlay = a.play;
- a.play = function () {
- a.fljsPlaying = true;
- b.playing && a.fljsPlay()
- };
- a.fljsId = this.audioId++;
- return this.audios[a.fljsId] = a
- },
- releaseAudio: function (a) {
- delete this.audios[a.fljsId]
- },
- audioSetVolume: function (a) {
- if (!a.fljsWaiting) {
- a.volume = Math.max(0, Math.min(this._volume + 0.0010, 1));
- a.volume = Math.max(0, Math.min(this._volume, 1))
- }
- },
- buildControls: function (a) {
- if (fljs.agent.browser != "Explorer") {
- var b = a.ownerDocument,
- c = b.createElement("input");
- c.setAttribute("type", "button");
- var d = this;
- c.addEventListener("click", function () {
- d.playing ? d.pause() : d.play()
- }, true);
- a.appendChild(c);
- b = b.createElement("input");
- b.setAttribute("type", "button");
- b.addEventListener("click", function () {
- d.getVolume() > 0 ? d.mute() : d.unmute()
- }, true);
- a.appendChild(b);
- this.controls = {
- playing: c,
- volume: b
- };
- this.setPlayingControl();
- this.setVolumeControl()
- }
- },
- setPlayingControl: function () {
- if (this.controls) this.controls.playing.value = this.playing ? "pause" : "play"
- },
- setVolumeControl: function () {
- if (this.controls) this.controls.volume.value = this.muted ? "unmute" : "mute"
- },
- getVolume: function () {
- return this._volume == 0.999 ? 1 : this._volume
- },
- setSolume: function (a) {
- this.prevVolume = this._volume;
- this._volume = a;
- this.muted = this._volume == 0;
- if (this._volume == 1) this._volume = 0.999;
- this.setVolumeControl()
- }
- });
- fljs.base64 = {};
- fljs.base64.chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- fljs.base64.atob = function (a) {
- for (var b = a.length, c = [], d = 0, e, f, g, j, h, m = fljs.base64.chars; d < b;) {
- e = m.indexOf(a.charAt(d++));
- f = m.indexOf(a.charAt(d++));
- g = m.indexOf(a.charAt(d++));
- j = m.indexOf(a.charAt(d++));
- e = e << 2 | f >> 4;
- f = (f & 15) << 4 | g >> 2;
- h = (g & 3) << 6 | j;
- c.push(String.fromCharCode(4096 | e));
- g != 64 && c.push(String.fromCharCode(4096 | f));
- j != 64 && c.push(String.fromCharCode(4096 | h))
- }
- String(c.join(""))
- };
- fljs.swf.SwfLoader = function () {
- var a;
- this.complete = false;
- try {
- a = new XMLHttpRequest
- } catch (b) {
- a = false
- }
- if (!a) return null;
- this.xmlhttp = a
- };
- fljs.addMethods(fljs.swf.SwfLoader, {
- load: function (a, b) {
- if (fljs.agent.browser == "Explorer" || fljs.agent.browser == "Opera") a += ".b64";
- this.logger = fljs.console("demo");
- this.complete = false;
- try {
- this.xmlhttp.overrideMimeType && this.xmlhttp.overrideMimeType("text/plain; charset=x-user-defined");
- this.xmlhttp.open("GET", a, true);
- this.xmlhttp.onreadystatechange = fljs.bind(this.onLoad, this, b);
- this.xmlhttp.send(null)
- } catch (c) {
- return false
- }
- return true
- },
- onLoad: function (a) {
- if (!(this.xmlhttp.readyState != 4 || this.complete)) {
- this.complete =
- true;
- var b;
- b = fljs.agent.browser == "Explorer" ? fljs.base64.atob(this.xmlhttp.responseText) : fljs.agent.browser == "Opera" ? window.atob(this.xmlhttp.responseText) : this.xmlhttp.responseText;
- b = new fljs.swf.StringStream(b);
- b = new fljs.swf.SwfStream(b);
- a(b)
- }
- }
- });
- var player = fljs.Player.getInstance();
- player.loadSwf(url, element, width, height, name, params);
- return player
- }
Add Comment
Please, Sign In to add comment