STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228073
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/71388393?noj=FRM71388393-29DC" width="1" height="1"></div>

umbrella.swf

This is the info page for
Flash #96246

(Click the ID number above for more basic data on this flash file.)


ActionScript [AS3]
Section 1
//ImageItem (br.com.stimuli.loading.loadingtypes.ImageItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; public class ImageItem extends LoadingItem { public var loader:Loader; public function ImageItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CONTEXT]; super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:Event):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function load():void{ super.load(); loader = new Loader(); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 100, true); loader.contentLoaderInfo.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.load(url, context); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } override public function _parseOptions(_arg1:Object):Array{ context = ((_arg1[BulkLoader.CONTEXT]) || (null)); return (super._parseOptions(_arg1)); } override public function isImage():Boolean{ return ((type == BulkLoader.TYPE_IMAGE)); } override public function onCompleteHandler(_arg1:Event):void{ _content = loader.content; super.onCompleteHandler(_arg1); } override public function cleanListeners():void{ var _local1:Object; if (loader){ _local1 = loader.contentLoaderInfo; _local1.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); _local1.removeEventListener(Event.COMPLETE, onCompleteHandler, false); _local1.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); _local1.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); _local1.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); }; } override public function isSWF():Boolean{ return ((type == BulkLoader.TYPE_MOVIECLIP)); } public function _onHttpStatusHandler(_arg1:HTTPStatusEvent):void{ _httpStatus = _arg1.status; dispatchEvent(_arg1); } } }//package br.com.stimuli.loading.loadingtypes
Section 2
//LoadingItem (br.com.stimuli.loading.loadingtypes.LoadingItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; public class LoadingItem extends EventDispatcher { public var _priority:int;// = 0 public var specificAvailableProps:Array; public var preventCache:Boolean; public var _responseTime:Number; public var _uid:String; public var propertyParsingErrors:Array; public var maxTries:int;// = 3 public var _bytesLoaded:int;// = 0 public var _type:String; public var _percentLoaded:Number; public var _isLoaded:Boolean; public var context;// = null public var _totalTime:int; public var numTries:int;// = 0 public var _additionIndex:int; public var _bytesTotal:int;// = -1 public var _id:String; public var _latency:Number; public var _httpStatus:int;// = -1 public var _content; public var _isLoading:Boolean; public var _speed:Number; public var _startTime:int; public var _weightPercentLoaded:Number; public var _bytesRemaining:int;// = 10000000 public var url:URLRequest; public var status:String; public var _addedTime:int; public var _timeToDownload:int; public var weight:int;// = 1 public static const STATUS_STOPPED:String = "stopped"; public static const STATUS_STARTED:String = "started"; public static const STATUS_ERROR:String = "error"; public static const STATUS_FINISHED:String = "finished"; public function LoadingItem(_arg1:URLRequest, _arg2:String, _arg3:String){ this._type = _arg2; this.url = _arg1; if (!specificAvailableProps){ specificAvailableProps = []; }; this._uid = _arg3; } public function stop():void{ if (_isLoaded){ return; }; status = STATUS_STOPPED; _isLoading = false; } public function onProgressHandler(_arg1):void{ _bytesLoaded = _arg1.bytesLoaded; _bytesTotal = _arg1.bytesTotal; _bytesRemaining = (_bytesTotal - bytesLoaded); _percentLoaded = (_bytesLoaded / _bytesTotal); _weightPercentLoaded = (_percentLoaded * weight); dispatchEvent(_arg1); } public function isSound():Boolean{ return (false); } public function isText():Boolean{ return (false); } public function get weightPercentLoaded():Number{ return (_weightPercentLoaded); } public function get latency():Number{ return (_latency); } public function get content(){ return (_content); } public function isXML():Boolean{ return (false); } public function get percentLoaded():Number{ return (_percentLoaded); } public function load():void{ var _local1:String; if (preventCache){ _local1 = ((("BulkLoaderNoCache=" + _uid) + "_") + int(((Math.random() * 100) * getTimer()))); if (url.url.indexOf("?") == -1){ url.url = (url.url + ("?" + _local1)); } else { url.url = (url.url + ("&" + _local1)); }; }; _isLoading = true; _startTime = getTimer(); } public function onErrorHandler(_arg1:Event):void{ var _local2:BulkErrorEvent; numTries++; status = STATUS_ERROR; _arg1.stopPropagation(); if (numTries >= maxTries){ _local2 = new BulkErrorEvent(BulkErrorEvent.ERROR); _local2.errors = [this]; dispatchEvent(_local2); } else { status = null; load(); }; } public function get startTime():int{ return (_startTime); } public function isStreamable():Boolean{ return (false); } public function get bytesTotal():int{ return (_bytesTotal); } public function onHttpStatusHandler(_arg1:HTTPStatusEvent):void{ _httpStatus = _arg1.status; dispatchEvent(_arg1); } public function get responseTime():Number{ return (_responseTime); } public function get priority():int{ return (_priority); } public function get id():String{ return (_id); } public function onCompleteHandler(_arg1:Event):void{ _totalTime = getTimer(); _timeToDownload = ((_totalTime - _responseTime) / 1000); if (_timeToDownload == 0){ _timeToDownload = 0.2; }; _speed = BulkLoader.truncateNumber(((bytesTotal / 0x0400) / _timeToDownload)); if (_timeToDownload == 0){ _speed = 3000; }; status = STATUS_FINISHED; _isLoaded = true; dispatchEvent(_arg1); _arg1.stopPropagation(); } public function get totalTime():int{ return (_totalTime); } public function get type():String{ return (_type); } public function _parseOptions(_arg1:Object):Array{ var _local3:String; preventCache = _arg1[BulkLoader.PREVENT_CACHING]; _id = _arg1[BulkLoader.ID]; _priority = ((int(_arg1[BulkLoader.PRIORITY])) || (0)); maxTries = ((_arg1[BulkLoader.MAX_TRIES]) || (3)); weight = ((int(_arg1[BulkLoader.WEIGHT])) || (1)); var _local2:Array = BulkLoader.GENERAL_AVAILABLE_PROPS.concat(specificAvailableProps); propertyParsingErrors = []; for (_local3 in _arg1) { if (_local2.indexOf(_local3) == -1){ propertyParsingErrors.push(((((this + ": got a wrong property name: ") + _local3) + ", with value:") + _arg1[_local3])); }; }; return (propertyParsingErrors); } public function get speed():Number{ return (_speed); } public function onStartedHandler(_arg1:Event):void{ _responseTime = getTimer(); _latency = BulkLoader.truncateNumber(((_responseTime - _startTime) / 1000)); status = STATUS_STARTED; dispatchEvent(_arg1); } public function isImage():Boolean{ return (false); } public function get bytesRemaining():int{ return (_bytesRemaining); } public function get bytesLoaded():int{ return (_bytesLoaded); } public function isLoader():Boolean{ return (false); } public function get timeToDownload():int{ return (_timeToDownload); } public function get httpStatus():int{ return (_httpStatus); } public function get isLoaded():Boolean{ return (_isLoaded); } public function getStats():String{ return ((((((((((("Item url:" + url.url) + ", total time: ") + _timeToDownload) + "(s), latency:") + _latency) + "(s), speed: ") + _speed) + " kb/s, size: ") + BulkLoader.truncateNumber((_bytesTotal / 0x0400))) + " kb")); } override public function toString():String{ return (((((("LoadingItem url: " + url.url) + ", type:") + _type) + ", status: ") + status)); } public function isVideo():Boolean{ return (false); } public function destroy():void{ _content = null; } public function get addedTime():int{ return (_addedTime); } public function cleanListeners():void{ } public function isSWF():Boolean{ return (false); } } }//package br.com.stimuli.loading.loadingtypes
Section 3
//SoundItem (br.com.stimuli.loading.loadingtypes.SoundItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.display.*; import flash.media.*; import flash.net.*; import flash.utils.*; public class SoundItem extends LoadingItem { public var loader:Sound; public function SoundItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CONTEXT]; super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:Event):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function isStreamable():Boolean{ return (true); } override public function isSound():Boolean{ return (true); } override public function load():void{ super.load(); loader = new Sound(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.load(url, context); } override public function onStartedHandler(_arg1:Event):void{ _content = loader; super.onStartedHandler(_arg1); } override public function destroy():void{ cleanListeners(); stop(); _content = null; loader = null; } override public function _parseOptions(_arg1:Object):Array{ context = ((_arg1[BulkLoader.CONTEXT]) || (null)); return (super._parseOptions(_arg1)); } override public function onCompleteHandler(_arg1:Event):void{ _content = loader; super.onCompleteHandler(_arg1); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); }; } } }//package br.com.stimuli.loading.loadingtypes
Section 4
//URLItem (br.com.stimuli.loading.loadingtypes.URLItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.net.*; public class URLItem extends LoadingItem { public var loader:URLLoader; public function URLItem(_arg1:URLRequest, _arg2:String, _arg3:String){ super(_arg1, _arg2, _arg3); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); }; } override public function load():void{ super.load(); loader = new URLLoader(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.load(url); } override public function isText():Boolean{ return (true); } override public function onStartedHandler(_arg1:Event):void{ super.onStartedHandler(_arg1); } override public function onCompleteHandler(_arg1:Event):void{ _content = loader.data; super.onCompleteHandler(_arg1); } override public function _parseOptions(_arg1:Object):Array{ return (super._parseOptions(_arg1)); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } } }//package br.com.stimuli.loading.loadingtypes
Section 5
//VideoItem (br.com.stimuli.loading.loadingtypes.VideoItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; public class VideoItem extends LoadingItem { var stream:NetStream; private var dummyEventTrigger:Sprite; var pausedAtStart:Boolean;// = false private var _metaData:Object; private var _canBeginStreaming:Boolean;// = false private var nc:NetConnection; private var _checkPolicyFile:Boolean; public function VideoItem(_arg1:URLRequest, _arg2:String, _arg3:String){ specificAvailableProps = [BulkLoader.CHECK_POLICY_FILE, BulkLoader.PAUSED_AT_START]; super(_arg1, _arg2, _arg3); } public function get checkPolicyFile():Object{ return (_checkPolicyFile); } override public function onStartedHandler(_arg1:Event):void{ _content = stream; if (((pausedAtStart) && (stream))){ stream.pause(); }; super.onStartedHandler(_arg1); } override public function stop():void{ try { if (stream){ stream.close(); }; } catch(e:Error) { }; super.stop(); } override public function _parseOptions(_arg1:Object):Array{ pausedAtStart = ((_arg1[BulkLoader.PAUSED_AT_START]) || (false)); _checkPolicyFile = ((_arg1[BulkLoader.CHECK_POLICY_FILE]) || (false)); return (super._parseOptions(_arg1)); } private function fireCanBeginStreamingEvent():void{ if (_canBeginStreaming){ return; }; _canBeginStreaming = true; var _local1:Event = new Event(BulkLoader.CAN_BEGIN_PLAYING); dispatchEvent(_local1); } public function get metaData():Object{ return (_metaData); } function onNetStatus(_arg1:NetStatusEvent):void{ var _local2:Event; if (!stream){ return; }; stream.removeEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false); if (_arg1.info.code == "NetStream.Play.Start"){ _content = stream; _local2 = new Event(Event.OPEN); onStartedHandler(_local2); } else { if (_arg1.info.code == "NetStream.Play.StreamNotFound"){ onErrorHandler(_arg1); }; }; } override public function isStreamable():Boolean{ return (true); } override public function load():void{ super.load(); nc = new NetConnection(); nc.connect(null); stream = new NetStream(nc); stream.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); stream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false, 0, true); dummyEventTrigger = new Sprite(); dummyEventTrigger.addEventListener(Event.ENTER_FRAME, createNetStreamEvent, false, 0, true); var customClient:Object = new Object(); customClient.onCuePoint = function (... _args):void{ }; customClient.onMetaData = onVideoMetadata; customClient.onPlayStatus = function (... _args):void{ }; stream.client = customClient; stream.play(url.url, _checkPolicyFile); stream.seek(0); } function onVideoMetadata(_arg1):void{ _metaData = _arg1; } override public function onCompleteHandler(_arg1:Event):void{ _content = stream; super.onCompleteHandler(_arg1); } override public function cleanListeners():void{ if (stream){ stream.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); stream.removeEventListener(NetStatusEvent.NET_STATUS, onNetStatus, false); }; if (dummyEventTrigger){ dummyEventTrigger.removeEventListener(Event.ENTER_FRAME, createNetStreamEvent, false); dummyEventTrigger = null; }; } override public function isVideo():Boolean{ return (true); } public function createNetStreamEvent(_arg1:Event):void{ var _local2:Event; var _local3:Event; var _local4:ProgressEvent; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; if ((((_bytesTotal == _bytesLoaded)) && ((_bytesTotal > 8)))){ if (dummyEventTrigger){ dummyEventTrigger.removeEventListener(Event.ENTER_FRAME, createNetStreamEvent, false); }; _local2 = new Event(Event.COMPLETE); onCompleteHandler(_local2); } else { if ((((_bytesTotal == 0)) && ((stream.bytesTotal > 4)))){ _local3 = new Event(Event.OPEN); onStartedHandler(_local3); _bytesLoaded = stream.bytesLoaded; _bytesTotal = stream.bytesTotal; } else { if (stream){ _local4 = new ProgressEvent(ProgressEvent.PROGRESS, false, false, stream.bytesLoaded, stream.bytesTotal); if (((((isVideo()) && (metaData))) && (!(_canBeginStreaming)))){ _local5 = (getTimer() - responseTime); _local6 = (bytesLoaded / (_local5 / 1000)); _local7 = (_bytesRemaining / (_local6 * 0.8)); _local8 = (metaData.duration - stream.bufferLength); if (_local8 > _local7){ fireCanBeginStreamingEvent(); }; }; super.onProgressHandler(_local4); }; }; }; } override public function destroy():void{ if (stream){ }; stop(); cleanListeners(); stream = null; super.destroy(); } } }//package br.com.stimuli.loading.loadingtypes
Section 6
//XMLItem (br.com.stimuli.loading.loadingtypes.XMLItem) package br.com.stimuli.loading.loadingtypes { import br.com.stimuli.loading.*; import flash.events.*; import flash.net.*; public class XMLItem extends LoadingItem { public var loader:URLLoader; public function XMLItem(_arg1:URLRequest, _arg2:String, _arg3:String){ super(_arg1, _arg2, _arg3); } override public function onErrorHandler(_arg1:Event):void{ super.onErrorHandler(_arg1); } override public function stop():void{ try { if (loader){ loader.close(); }; } catch(e:Error) { }; super.stop(); } override public function cleanListeners():void{ if (loader){ loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false); loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false); loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false); loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false); loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false); }; } override public function load():void{ super.load(); loader = new URLLoader(); loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true); loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true); loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true); loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true); loader.load(url); } override public function isText():Boolean{ return (true); } override public function onStartedHandler(_arg1:Event):void{ super.onStartedHandler(_arg1); } override public function onCompleteHandler(_arg1:Event):void{ _content = new XML(loader.data); super.onCompleteHandler(_arg1); } override public function _parseOptions(_arg1:Object):Array{ return (super._parseOptions(_arg1)); } override public function destroy():void{ stop(); cleanListeners(); _content = null; loader = null; } } }//package br.com.stimuli.loading.loadingtypes
Section 7
//BulkErrorEvent (br.com.stimuli.loading.BulkErrorEvent) package br.com.stimuli.loading { import flash.events.*; public class BulkErrorEvent extends Event { public var name:String; public var errors:Array; public static const ERROR:String = "error"; public function BulkErrorEvent(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); this.name = _arg1; } override public function toString():String{ return (super.toString()); } override public function clone():Event{ var _local1:BulkErrorEvent = new BulkErrorEvent(name, bubbles, cancelable); _local1.errors = (errors) ? errors.slice() : []; return (_local1); } } }//package br.com.stimuli.loading
Section 8
//BulkLoader (br.com.stimuli.loading.BulkLoader) package br.com.stimuli.loading { import flash.events.*; import flash.display.*; import br.com.stimuli.loading.loadingtypes.*; import flash.media.*; import flash.net.*; import flash.utils.*; public class BulkLoader extends EventDispatcher { public var _itemsTotal:int;// = 0 public var speedAvg:Number; public var _numConnections:int;// = 7 public var _totalWeight:int;// = 0 public var _bytesTotalCurrent:int;// = 0 public var _itemsLoaded:int;// = 0 public var totalTime:Number; public var _additionIndex:int;// = 0 public var _bytesTotal:int;// = 0 public var _loadedRatio:Number;// = 0 public var _speed:Number; public var _lastSpeedCheck:int; public var _isPaused:Boolean;// = true public var _isFinished:Boolean; public var _name:String; public var _allowsAutoIDFromFileName:Boolean;// = false public var _contents:Dictionary; public var _logFunction:Function; public var _bytesLoaded:int;// = 0 public var _connections:Array; public var logLevel:int;// = 20 public var _percentLoaded:Number;// = 0 public var _weightPercent:Number; public var _lastBytesCheck:int; public var _isRunning:Boolean; public var _id:int; public var _items:Array; public var _stringSubstitutions:Object; public var avgLatency:Number; public var _startTime:int; public var _speedTotal:Number; public var _endTIme:int; public static const LOG_INFO:int = 2; public static const HTTP_STATUS:String = "httpStatus"; public static const CONTEXT:String = "context"; public static const CAN_BEGIN_PLAYING:String = "canBeginPlaying"; public static const TYPE_VIDEO:String = "video"; public static const TYPE_TEXT:String = "text"; public static const TYPE_MOVIECLIP:String = "movieclip"; public static const PREVENT_CACHING:String = "preventCache"; public static const PAUSED_AT_START:String = "pausedAtStart"; public static const TYPE_SOUND:String = "sound"; public static const PROGRESS:String = "progress"; public static const DEFAULT_LOG_LEVEL:int = 20; public static const ID:String = "id"; public static const CHECK_POLICY_FILE:String = "checkPolicyFile"; public static const COMPLETE:String = "complete"; public static const PRIORITY:String = "priority"; public static const MAX_TRIES:String = "maxTries"; public static const VERSION:String = "rev 196 (0.9.9.4)"; public static const AVAILABLE_TYPES:Array = [TYPE_VIDEO, TYPE_XML, TYPE_TEXT, TYPE_SOUND, TYPE_MOVIECLIP, TYPE_IMAGE]; public static const LOG_VERBOSE:int = 0; public static const OPEN:String = "open"; public static const LOG_WARNINGS:int = 3; public static const DEFAULT_NUM_CONNECTIONS:int = 7; public static const GENERAL_AVAILABLE_PROPS:Array = [WEIGHT, MAX_TRIES, HEADERS, ID, PRIORITY, PREVENT_CACHING, "type"]; public static const LOG_SILENT:int = 10; public static const ERROR:String = "error"; public static const HEADERS:String = "headers"; public static const LOG_ERRORS:int = 4; public static const TYPE_IMAGE:String = "image"; public static const TYPE_XML:String = "xml"; public static const WEIGHT:String = "weight"; public static var IMAGE_EXTENSIONS:Array = ["jpg", "jpeg", "gif", "png"]; public static var _customTypesExtensions:Object; public static var MOVIECLIP_EXTENSIONS:Array = ["swf"]; public static var XML_EXTENSIONS:Array = ["xml"]; public static var _typeClasses:Object = {image:ImageItem, movieclip:ImageItem, xml:XMLItem, video:VideoItem, sound:SoundItem, text:URLItem}; public static var TEXT_EXTENSIONS:Array = ["txt", "js", "php", "asp", "py"]; public static var _instancesCreated:int = 0; public static var AVAILABLE_EXTENSIONS:Array = ["swf", "jpg", "jpeg", "gif", "png", "flv", "mp3", "xml", "txt", "js"]; public static var SOUND_EXTENSIONS:Array = ["mp3", "f4a", "f4b"]; public static var VIDEO_EXTENSIONS:Array = ["flv", "f4v", "f4p"]; public static var _allLoaders:Object = {}; public function BulkLoader(_arg1:String, _arg2:int=7, _arg3:int=20){ _items = []; _contents = new Dictionary(); _logFunction = trace; super(); if (Boolean(_allLoaders[_arg1])){ __debug_print_loaders(); throw (new Error((("BulkLoader with name'" + _arg1) + "' has already been created."))); }; if (!_arg1){ throw (new Error("Cannot create a BulkLoader instance without a name")); }; _allLoaders[_arg1] = this; if (_arg2 > 0){ this._numConnections = _arg2; }; this.logLevel = _arg3; _name = _arg1; _instancesCreated++; _id = _instancesCreated; _additionIndex = 0; } public function get allowsAutoIDFromFileName():Boolean{ return (_allowsAutoIDFromFileName); } public function set allowsAutoIDFromFileName(_arg1:Boolean):void{ _allowsAutoIDFromFileName = _arg1; } public function get loadedRatio():Number{ return (_loadedRatio); } public function loadNow(_arg1):Boolean{ var _local2:LoadingItem; var _local3:LoadingItem; if ((_arg1 is LoadingItem)){ _local2 = _arg1; } else { _local2 = get(_arg1); }; if (!_local2){ return (false); }; if (!_connections){ _connections = []; }; if ((((_local2.status == LoadingItem.STATUS_FINISHED)) || ((_local2.status == LoadingItem.STATUS_STARTED)))){ return (true); }; if (_connections.length >= numConnections){ _local3 = _getLeastUrgentOpenedItem(); _removeFromConnections(_local3); _local3.status = null; }; _local2._priority = highestPriority; _loadNext(_local2); return (true); } public function _onItemComplete(_arg1:Event):void{ var _local2:LoadingItem = (_arg1.target as LoadingItem); _removeFromConnections(_local2); log("Loaded ", _local2, LOG_INFO); log("Items to load", getNotLoadedItems(), LOG_VERBOSE); _local2.cleanListeners(); _contents[_local2.url.url] = _local2.content; var _local3:Boolean = _loadNext(); var _local4:Boolean = _isAllDoneP(); _itemsLoaded++; if (_local4){ _onAllLoaded(); }; } public function _getContentAsType(_arg1, _arg2:Class, _arg3:Boolean=false){ var res:*; var key = _arg1; var type = _arg2; var clearMemory = _arg3; if (!_name){ throw (new Error("[BulkLoader] Cannot use an instance that has been cleared from memory (.clear())")); }; var item:LoadingItem = get(key); if (!item){ return (null); }; try { if (((item._isLoaded) || (((item.isStreamable()) && ((item.status == LoadingItem.STATUS_STARTED)))))){ res = (item.content as type); if (res == null){ throw (new Error("bad cast")); }; if (clearMemory){ remove(key); }; return (res); }; } catch(e:Error) { log((("Failed to get content with url: '" + key) + "'as type:"), type, LOG_ERRORS); }; return (null); } public function set stringSubstitutions(_arg1:Object):void{ _stringSubstitutions = _arg1; } public function get contents():Object{ return (_contents); } public function get id():int{ return (_id); } public function getBitmap(_arg1:String, _arg2:Boolean=false):Bitmap{ return (Bitmap(_getContentAsType(_arg1, Bitmap, _arg2))); } public function _removeFromConnections(_arg1):Boolean{ if (!_connections){ return (false); }; var _local2:int = _connections.indexOf(_arg1); if (_local2 > -1){ _connections.splice(_local2, 1); return (true); }; return (false); } public function resume(_arg1):Boolean{ var _local2:LoadingItem = ((_arg1 is LoadingItem)) ? _arg1 : get(_arg1); _isPaused = false; if (((_local2) && ((_local2.status == LoadingItem.STATUS_STOPPED)))){ _local2.status = null; _loadNext(); return (true); }; return (false); } public function _onAllLoaded():void{ if (_isFinished){ return; }; var _local1:BulkProgressEvent = new BulkProgressEvent(COMPLETE); _local1.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); var _local2:BulkProgressEvent = new BulkProgressEvent(PROGRESS); _local2.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, _itemsLoaded, itemsTotal, weightPercent); _isRunning = false; _endTIme = getTimer(); totalTime = BulkLoader.truncateNumber(((_endTIme - _startTime) / 1000)); _updateStats(); _connections = []; getStats(); _isFinished = true; log("Finished all", LOG_INFO); dispatchEvent(_local2); dispatchEvent(_local1); } public function removePausedItems():Boolean{ var stoppedLoads:Array = _items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_STOPPED)); }); stoppedLoads.forEach(function (_arg1:LoadingItem, ... _args):void{ remove(_arg1); }); _loadNext(); return ((stoppedLoads.length > 0)); } public function resumeAll():Boolean{ log("Resuming all items", LOG_VERBOSE); var affected:Boolean; _items.forEach(function (_arg1:LoadingItem, ... _args):void{ if (_arg1.status == LoadingItem.STATUS_STOPPED){ resume(_arg1); affected = true; }; }); _loadNext(); return (affected); } public function get isRunning():Boolean{ return (_isRunning); } public function getNetStreamMetaData(_arg1:String, _arg2:Boolean=false):Object{ var _local3:NetStream = getNetStream(_arg1, _arg2); return ((Boolean(_local3)) ? (get(_arg1) as Object).metaData : null); } public function get logFunction():Function{ return (_logFunction); } public function getProgressForItems(_arg1:Array):BulkProgressEvent{ var _local11:LoadingItem; var _local13:*; _bytesLoaded = (_bytesTotal = (_bytesTotalCurrent = 0)); var _local2:Number = 0; var _local3:int; var _local4:int; var _local5:Number = 0; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local12:Array = []; for each (_local13 in _arg1) { _local11 = ((_local13 is LoadingItem)) ? _local13 : get(_local13); if (!_local11){ } else { _local6++; _local3 = (_local3 + _local11.weight); if ((((((_local11.status == LoadingItem.STATUS_STARTED)) || ((_local11.status == LoadingItem.STATUS_FINISHED)))) || ((_local11.status == LoadingItem.STATUS_STOPPED)))){ _local8 = (_local8 + _local11._bytesLoaded); _local10 = (_local10 + _local11._bytesTotal); _local5 = (_local5 + ((_local11._bytesLoaded / _local11._bytesTotal) * _local11.weight)); if (_local11.status == LoadingItem.STATUS_FINISHED){ _local7++; }; _local4++; }; }; }; if (_local4 != _local6){ _local9 = Number.POSITIVE_INFINITY; } else { _local9 = _local10; }; _local2 = (_local5 / _local3); if (_local3 == 0){ _local2 = 0; }; var _local14:BulkProgressEvent = new BulkProgressEvent(PROGRESS); _local14.setInfo(_local8, _local9, _local9, _local7, _local6, _local2); return (_local14); } public function getContent(_arg1:String, _arg2:Boolean=false){ return (_getContentAsType(_arg1, Object, _arg2)); } public function getSerializedData(_arg1, _arg2:Boolean=false, _arg3:Function=null){ var raw:*; var parsed:*; var key = _arg1; var clearMemory = _arg2; var encodingFunction = _arg3; try { raw = _getContentAsType(key, Object, clearMemory); parsed = encodingFunction.apply(null, [raw]); return (parsed); } catch(e:Error) { log("Failed to parse key:", key, ("with encodingFunction:" + encodingFunction), LOG_ERRORS); }; return (null); } public function log(... _args):void{ var _local2:int = (isNaN(_args[(_args.length - 1)])) ? 3 : int(_args.pop()); if (_local2 >= logLevel){ _logFunction(("[BulkLoader] " + _args.join(" "))); }; } public function clear():void{ removeAll(); delete _allLoaders[name]; _name = null; } public function get speed():Number{ var _local1:int = (getTimer() - _lastSpeedCheck); var _local2:int = ((bytesLoaded - _lastBytesCheck) / 0x0400); var _local3:int = (_local2 / (_local1 / 1000)); _lastSpeedCheck = _local1; _lastBytesCheck = bytesLoaded; return (_local3); } public function get bytesLoaded():int{ return (_bytesLoaded); } public function _loadNext(_arg1:LoadingItem=null):Boolean{ var checkItem:LoadingItem; var toLoad = _arg1; if (_isFinished){ return (false); }; if (!_connections){ _connections = []; }; _connections.forEach(function (_arg1:LoadingItem, ... _args):void{ if ((((_arg1.status == LoadingItem.STATUS_ERROR)) && ((_arg1.numTries < _arg1.maxTries)))){ _removeFromConnections(_arg1); }; }); var next:Boolean; if (!toLoad){ for each (checkItem in _items) { if (((!(checkItem._isLoading)) && (!((checkItem.status == LoadingItem.STATUS_STOPPED))))){ toLoad = checkItem; break; }; }; }; if (toLoad){ next = true; _isRunning = true; if (_connections.length < numConnections){ _connections.push(toLoad); toLoad.load(); log("Will load item:", toLoad, LOG_INFO); }; if (_connections.length < numConnections){ _loadNext(); }; }; return (next); } public function getSound(_arg1, _arg2:Boolean=false):Sound{ return (Sound(_getContentAsType(_arg1, Sound, _arg2))); } public function removeFailedItems():int{ var numCleared:int; var badItems:Array = _items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_ERROR)); }); numCleared = badItems.length; badItems.forEach(function (_arg1:LoadingItem, ... _args):void{ remove(_arg1); }); _loadNext(); return (numCleared); } public function get(_arg1):LoadingItem{ var _local2:LoadingItem; if (!_arg1){ return (null); }; for each (_local2 in _items) { if ((((((((_local2._id == _arg1)) || ((_local2.url.url == _arg1)))) || ((_local2.url == _arg1)))) || ((((_arg1 is URLRequest)) && ((_local2.url.url == _arg1.url)))))){ return (_local2); }; }; return (null); } public function get highestPriority():int{ var _local2:LoadingItem; var _local1:int = int.MIN_VALUE; for each (_local2 in _items) { if (_local2.priority > _local1){ _local1 = _local2.priority; }; }; return (_local1); } public function start(_arg1:int=-1):void{ if (_arg1 > 0){ _numConnections = _arg1; }; if (_connections){ _loadNext(); return; }; _startTime = getTimer(); _connections = []; _loadNext(); _isRunning = true; _lastBytesCheck = 0; _lastSpeedCheck = getTimer(); _isPaused = false; } public function _getLeastUrgentOpenedItem():LoadingItem{ var _local1:LoadingItem = LoadingItem(_connections.sortOn(["priority", "bytesRemaining", "_additionIndex"], [Array.NUMERIC, Array.DESCENDING, Array.NUMERIC, Array.NUMERIC])[0]); return (_local1); } public function get itemsTotal():int{ return (items.length); } public function getBitmapData(_arg1, _arg2:Boolean=false):BitmapData{ var key = _arg1; var clearMemory = _arg2; try { return (getBitmap(key, clearMemory).bitmapData); } catch(e:Error) { log("Failed to get bitmapData with url:", key, LOG_ERRORS); }; return (null); } public function set logFunction(_arg1:Function):void{ _logFunction = _arg1; } override public function toString():String{ return (((((("[BulkLoader] name:" + name) + ", itemsTotal: ") + itemsTotal) + ", itemsLoaded: ") + _itemsLoaded)); } public function sortItemsByPriority():void{ _items.sortOn(["priority", "_additionIndex"], [(Array.NUMERIC | Array.DESCENDING), Array.NUMERIC]); } public function get stringSubstitutions():Object{ return (_stringSubstitutions); } public function get name():String{ return (_name); } public function remove(_arg1):Boolean{ var item:LoadingItem; var allDone:Boolean; var key = _arg1; try { if ((key is LoadingItem)){ item = key; } else { item = get(key); }; if (!item){ return (false); }; _removeFromItems(item); _removeFromConnections(item); item.destroy(); item = null; _onProgress(); allDone = _isAllDoneP(); if (allDone){ _onAllLoaded(); }; return (true); } catch(e:Error) { log(("Error while removing item from key:" + key), e.getStackTrace(), LOG_ERRORS); }; return (false); } public function removeAll():void{ var _local1:LoadingItem; for each (_local1 in _items.slice()) { remove(_local1); }; _items = []; _connections = []; _contents = new Dictionary(); } public function _updateStats():void{ var _local4:LoadingItem; avgLatency = 0; speedAvg = 0; var _local1:Number = 0; var _local2:int; _speedTotal = 0; var _local3:Number = 0; for each (_local4 in _items) { if (((_local4._isLoaded) && (!((_local4.status == LoadingItem.STATUS_ERROR))))){ _local1 = (_local1 + _local4.latency); _local2 = (_local2 + _local4.bytesTotal); _local3++; }; }; _speedTotal = ((_local2 / 0x0400) / totalTime); avgLatency = (_local1 / _local3); speedAvg = (_speedTotal / _local3); } public function reload(_arg1):Boolean{ var _local2:LoadingItem; if ((_arg1 is LoadingItem)){ _local2 = _arg1; } else { _local2 = get(_arg1); }; if (!_local2){ return (false); }; _removeFromItems(_local2); _removeFromConnections(_local2); _local2.stop(); _local2.cleanListeners(); _local2.status = null; _isFinished = false; _local2._addedTime = getTimer(); _local2._additionIndex = _additionIndex++; _local2.addEventListener(Event.COMPLETE, _onItemComplete, false, int.MIN_VALUE, true); _local2.addEventListener(ERROR, _onItemError, false, 0, true); _local2.addEventListener(Event.OPEN, _onItemStarted, false, 0, true); _local2.addEventListener(ProgressEvent.PROGRESS, _onProgress, false, 0, true); _items.push(_local2); _itemsTotal = (_itemsTotal + 1); _totalWeight = (_totalWeight + _local2.weight); sortItemsByPriority(); _isFinished = false; loadNow(_local2); return (true); } public function _onItemStarted(_arg1:Event):void{ var _local2:LoadingItem = (_arg1.target as LoadingItem); log("Started loading", _local2, LOG_INFO); dispatchEvent(_arg1); } public function add(_arg1, _arg2:Object=null):LoadingItem{ var _local4:String; var _local6:String; if (!_name){ throw (new Error("[BulkLoader] Cannot use an instance that has been cleared from memory (.clear())")); }; if (((!(_arg1)) || (!(String(_arg1))))){ throw (new Error("[BulkLoader] Cannot add an item with a null url")); }; _arg2 = ((_arg2) || ({})); if ((_arg1 is String)){ _arg1 = new URLRequest(BulkLoader.substituteURLString(_arg1, _stringSubstitutions)); if (_arg2[HEADERS]){ _arg1.requestHeaders = _arg2[HEADERS]; }; } else { if ((!(_arg1) is URLRequest)){ throw (new Error(("[BulkLoader] cannot add object with bad type for url:'" + _arg1.url))); }; }; var _local3:LoadingItem = get(_arg2[ID]); if (_local3){ log((("Add received an already added id: " + _arg2[ID]) + ", not adding a new item")); return (_local3); }; if (_arg2["type"]){ _local4 = _arg2["type"].toLowerCase(); if (AVAILABLE_TYPES.indexOf(_local4) == -1){ log("add received an unknown type:", _local4, "and will cast it to text", LOG_WARNINGS); }; }; if (!_local4){ _local4 = guessType(_arg1.url); }; _additionIndex++; _local3 = new _typeClasses[_local4](_arg1, _local4, ((_instancesCreated + "_") + String(_additionIndex))); if (((!(_arg2["id"])) && (_allowsAutoIDFromFileName))){ _arg2["id"] = getFileName(_arg1.url); log("Adding automatic id from file name for item:", _local3, (("( id= " + _arg2["id"]) + " )")); }; var _local5:Array = _local3._parseOptions(_arg2); for each (_local6 in _local5) { log(_local6, LOG_WARNINGS); }; log("Added", _local3, LOG_VERBOSE); _local3._addedTime = getTimer(); _local3._additionIndex = _additionIndex; _local3.addEventListener(Event.COMPLETE, _onItemComplete, false, int.MIN_VALUE, true); _local3.addEventListener(ERROR, _onItemError, false, 0, true); _local3.addEventListener(Event.OPEN, _onItemStarted, false, 0, true); _local3.addEventListener(ProgressEvent.PROGRESS, _onProgress, false, 0, true); _items.push(_local3); _itemsTotal = (_itemsTotal + 1); _totalWeight = (_totalWeight + _local3.weight); sortItemsByPriority(); _isFinished = false; if (!_isPaused){ _loadNext(); }; return (_local3); } public function getText(_arg1, _arg2:Boolean=false):String{ return (String(_getContentAsType(_arg1, String, _arg2))); } public function get bytesTotal():int{ return (_bytesTotal); } public function get percentLoaded():Number{ return (_percentLoaded); } public function get weightPercent():Number{ return (_weightPercent); } public function get bytesTotalCurrent():int{ return (_bytesTotalCurrent); } public function getAVM1Movie(_arg1:String, _arg2:Boolean=false):AVM1Movie{ return (AVM1Movie(_getContentAsType(_arg1, AVM1Movie, _arg2))); } public function get isFinished():Boolean{ return (_isFinished); } public function changeItemPriority(_arg1:String, _arg2:int):Boolean{ var _local3:LoadingItem = get(_arg1); if (!_local3){ return (false); }; _local3._priority = _arg2; sortItemsByPriority(); return (true); } public function get items():Array{ return (_items.slice()); } public function getNetStream(_arg1:String, _arg2:Boolean=false):NetStream{ return (NetStream(_getContentAsType(_arg1, NetStream, _arg2))); } public function getHttpStatus(_arg1):int{ var _local2:LoadingItem = get(_arg1); if (_local2){ return (_local2.httpStatus); }; return (-1); } public function set itemsLoaded(_arg1:int):void{ _itemsLoaded = _arg1; } public function _onProgress(_arg1:Event=null):void{ var _local2:BulkProgressEvent = getProgressForItems(_items); _bytesLoaded = _local2.bytesLoaded; _bytesTotal = _local2.bytesTotal; _weightPercent = _local2.weightPercent; _percentLoaded = _local2.percentLoaded; _bytesTotalCurrent = _local2.bytesTotalCurrent; _loadedRatio = _local2.ratioLoaded; dispatchEvent(_local2); } public function hasItem(_arg1, _arg2:Boolean=true):Boolean{ var _local3:*; var _local4:BulkLoader; if (_arg2){ _local3 = _allLoaders; } else { _local3 = [this]; }; for each (_local4 in _local3) { if (_hasItemInBulkLoader(_arg1, _local4)){ return (true); }; }; return (false); } public function _removeFromItems(_arg1:LoadingItem):Boolean{ var _local2:int = _items.indexOf(_arg1); if (_local2 > -1){ _items.splice(_local2, 1); } else { return (false); }; if (_arg1._isLoaded){ _itemsLoaded--; }; _itemsTotal--; _totalWeight = (_totalWeight - _arg1.weight); log(("Removing " + _arg1), LOG_VERBOSE); return (true); } public function _isAllDoneP():Boolean{ return (_items.every(function (_arg1:LoadingItem, ... _args):Boolean{ return (_arg1._isLoaded); })); } public function _onItemError(_arg1:BulkErrorEvent):void{ var evt = _arg1; var item:LoadingItem = (evt.target as LoadingItem); log(((("After " + item.numTries) + " I am giving up on ") + item.url.url), LOG_ERRORS); log("Error loading", item, LOG_ERRORS); _removeFromConnections(item); evt.stopPropagation(); var bulkErrorEvent:BulkErrorEvent = new BulkErrorEvent(BulkErrorEvent.ERROR); bulkErrorEvent.errors = _items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return ((_arg1.status == LoadingItem.STATUS_ERROR)); }); dispatchEvent(bulkErrorEvent); } public function pauseAll():void{ var _local1:LoadingItem; for each (_local1 in _items) { pause(_local1); }; _isRunning = false; _isPaused = true; log("Stopping all items", LOG_INFO); } public function getNotLoadedItems():Array{ return (_items.filter(function (_arg1:LoadingItem, ... _args):Boolean{ return (!((_arg1.status == LoadingItem.STATUS_FINISHED))); })); } public function getXML(_arg1, _arg2:Boolean=false):XML{ return (XML(_getContentAsType(_arg1, XML, _arg2))); } public function get totalWeight():int{ return (_totalWeight); } public function get itemsLoaded():int{ return (_itemsLoaded); } public function getMovieClip(_arg1:String, _arg2:Boolean=false):MovieClip{ return (MovieClip(_getContentAsType(_arg1, MovieClip, _arg2))); } public function get numConnections():int{ return (_numConnections); } public function getStats():String{ var stats:Array = []; stats.push("\n************************************"); stats.push((("All items loaded(" + itemsTotal) + ")")); stats.push(("Total time(s): " + totalTime)); stats.push(("Average latency(s): " + truncateNumber(avgLatency))); stats.push(("Average speed(kb/s): " + truncateNumber(speedAvg))); stats.push(("Median speed(kb/s): " + truncateNumber(_speedTotal))); stats.push(("KiloBytes total: " + truncateNumber((bytesTotal / 0x0400)))); var itemsInfo:Array = _items.map(function (_arg1:LoadingItem, ... _args):String{ return (("\t" + _arg1.getStats())); }); stats.push(itemsInfo.join("\n")); stats.push("************************************"); var statsString:String = stats.join("\n"); log(statsString, LOG_VERBOSE); return (statsString); } public function pause(_arg1, _arg2:Boolean=false):Boolean{ var _local3:LoadingItem = ((_arg1 is LoadingItem)) ? _arg1 : get(_arg1); if (!_local3){ return (false); }; _local3.stop(); log("STOPPED ITEM:", _local3, LOG_INFO); var _local4:Boolean = _removeFromConnections(_local3); if (_arg2){ _loadNext(); }; return (_local4); } public static function __debug_printStackTrace():void{ try { throw (new Error("stack trace")); } catch(e:Error) { trace(e.getStackTrace()); }; } public static function pauseAllLoaders():void{ var _local1:BulkLoader; for each (_local1 in _allLoaders) { _local1.pauseAll(); }; } public static function _hasItemInBulkLoader(_arg1, _arg2:BulkLoader):Boolean{ var _local3:LoadingItem = _arg2.get(_arg1); if (((_local3) && (_local3._isLoaded))){ return (true); }; return (false); } public static function getUniqueName():String{ return (("BulkLoader-" + _instancesCreated)); } public static function substituteURLString(_arg1:String, _arg2:Object):String{ var _local9:Object; var _local10:Object; var _local12:String; if (!_arg2){ return (_arg1); }; var _local3:RegExp = /(?P<var_name>\{\s*[^\}]*\})/g; var _local4:Object = _local3.exec(_arg1); var _local5:String = (_local4) ? _local4.var_name : null; var _local6:Array = []; var _local7:int; while (((Boolean(_local4)) && (Boolean(_local4.var_name)))) { if (_local4.var_name){ _local5 = _local4.var_name; _local5 = _local5.replace("{", ""); _local5 = _local5.replace("}", ""); _local5 = _local5.replace(/\s*/g, ""); }; _local6.push({start:_local4.index, end:(_local4.index + _local4.var_name.length), changeTo:_arg2[_local5]}); _local7++; if (_local7 > 400){ break; }; _local4 = _local3.exec(_arg1); _local5 = (_local4) ? _local4.var_name : null; }; if (_local6.length == 0){ return (_arg1); }; var _local8:Array = []; var _local11:String = _arg1.substr(0, _local6[0].start); for each (_local10 in _local6) { if (_local9){ _local11 = _arg1.substring(_local9.end, _local10.start); }; _local8.push(_local11); _local8.push(_local10.changeTo); _local9 = _local10; }; _local8.push(_arg1.substring(_local10.end)); return (_local8.join("")); } public static function createUniqueNamedLoader(_arg1:int=7, _arg2:int=20):BulkLoader{ return (new BulkLoader(BulkLoader.getUniqueName(), _arg1, _arg2)); } public static function whichLoaderHasItem(_arg1):BulkLoader{ var _local2:BulkLoader; for each (_local2 in _allLoaders) { if (BulkLoader._hasItemInBulkLoader(_arg1, _local2)){ return (_local2); }; }; return (null); } public static function removeAllLoaders():void{ var _local1:BulkLoader; for each (_local1 in _allLoaders) { _local1.removeAll(); _local1.clear(); _local1 = null; }; _allLoaders = {}; } public static function __debug_print_num_loaders():void{ var _local2:String; var _local1:int; for each (_local2 in BulkLoader._allLoaders) { _local1++; }; trace("BulkLoader has ", _local1, "instances"); } public static function getFileName(_arg1:String):String{ if (_arg1.lastIndexOf("/") == (_arg1.length - 1)){ return (getFileName(_arg1.substring(0, (_arg1.length - 1)))); }; var _local2:int = (_arg1.lastIndexOf("/") + 1); var _local3:String = _arg1.substring(_local2); var _local4:int = _local3.indexOf("."); if (_local4 == -1){ if (_local3.indexOf("?") > -1){ _local4 = _local3.indexOf("?"); } else { _local4 = _local3.length; }; }; var _local5:String = _local3.substring(0, _local4); return (_local5); } public static function guessType(_arg1:String):String{ var _local4:String; var _local5:String; var _local6:String; var _local2:String = ((_arg1.indexOf("?") > -1)) ? _arg1.substring(0, _arg1.indexOf("?")) : _arg1; var _local3:String = _local2.substring((_local2.lastIndexOf(".") + 1)).toLowerCase(); if (!Boolean(_local3)){ _local3 = BulkLoader.TYPE_TEXT; }; if ((((_local3 == BulkLoader.TYPE_IMAGE)) || ((BulkLoader.IMAGE_EXTENSIONS.indexOf(_local3) > -1)))){ _local4 = BulkLoader.TYPE_IMAGE; } else { if ((((_local3 == BulkLoader.TYPE_SOUND)) || ((BulkLoader.SOUND_EXTENSIONS.indexOf(_local3) > -1)))){ _local4 = BulkLoader.TYPE_SOUND; } else { if ((((_local3 == BulkLoader.TYPE_VIDEO)) || ((BulkLoader.VIDEO_EXTENSIONS.indexOf(_local3) > -1)))){ _local4 = BulkLoader.TYPE_VIDEO; } else { if ((((_local3 == BulkLoader.TYPE_XML)) || ((BulkLoader.XML_EXTENSIONS.indexOf(_local3) > -1)))){ _local4 = BulkLoader.TYPE_XML; } else { if ((((_local3 == BulkLoader.TYPE_MOVIECLIP)) || ((BulkLoader.MOVIECLIP_EXTENSIONS.indexOf(_local3) > -1)))){ _local4 = BulkLoader.TYPE_MOVIECLIP; } else { for (_local5 in _customTypesExtensions) { for each (_local6 in _customTypesExtensions[_local5]) { if (_local6 == _local3){ _local4 = _local5; break; }; if (_local4){ break; }; }; }; if (!_local4){ _local4 = BulkLoader.TYPE_TEXT; }; }; }; }; }; }; return (_local4); } public static function getLoader(_arg1:String):BulkLoader{ return ((BulkLoader._allLoaders[_arg1] as BulkLoader)); } public static function registerNewType(_arg1:String, _arg2:String, _arg3:Class):Boolean{ var _local4:Array; if (_arg1.charAt(0) == "."){ _arg1 = _arg1.substring(1); }; if (AVAILABLE_TYPES.indexOf(_arg2) == -1){ if (((!(Boolean(_arg3))) || (!((_arg3 is LoadingItem))))){ throw (new Error("[BulkLoader]: When adding a new type and extension, you must determine which class to use")); }; _typeClasses[_arg2] = _arg3; if (!_customTypesExtensions[_arg2]){ _customTypesExtensions[_arg2] = []; AVAILABLE_TYPES.push(_arg2); }; _customTypesExtensions[_arg2].push(_arg1); return (true); }; var _local5:Object = {IMAGE_EXTENSIONS:TYPE_IMAGE, VIDEO_EXTENSIONS:TYPE_VIDEO, SOUND_EXTENSIONS:TYPE_SOUND, TEXT_EXTENSIONS:TYPE_TEXT}; _local4 = _local5[_arg2]; if (((_local4) && ((_local4.indexOf(_arg1) == -1)))){ _local4.push(_arg1); return (true); }; return (false); } public static function __debug_print_loaders():void{ var instNames:String; var theNames:Array = []; for each (instNames in BulkLoader._allLoaders) { theNames.push(instNames); }; theNames.sort(); trace("All loaders"); theNames.forEach(function (_arg1, ... _args):void{ trace("\t", _arg1); }); trace("==========="); } public static function truncateNumber(_arg1:Number, _arg2:int=2):Number{ var _local3:int = Math.pow(10, _arg2); return ((Math.round((_arg1 * _local3)) / _local3)); } } }//package br.com.stimuli.loading
Section 9
//BulkProgressEvent (br.com.stimuli.loading.BulkProgressEvent) package br.com.stimuli.loading { import flash.events.*; public class BulkProgressEvent extends ProgressEvent { public var bytesTotalCurrent:int; public var itemsTotal:int; public var itemsLoaded:int; public var _percentLoaded:Number; public var _weightPercent:Number; public var _ratioLoaded:Number; public var name:String; public static const COMPLETE:String = "complete"; public static const PROGRESS:String = "progress"; public function BulkProgressEvent(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); this.name = _arg1; } override public function clone():Event{ var _local1:BulkProgressEvent = new BulkProgressEvent(name, bubbles, cancelable); _local1.setInfo(bytesLoaded, bytesTotal, bytesTotalCurrent, itemsLoaded, itemsTotal, weightPercent); return (_local1); } public function get weightPercent():Number{ return (_weightPercent); } public function set ratioLoaded(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _ratioLoaded = _arg1; } public function setInfo(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Number):void{ this.bytesLoaded = _arg1; this.bytesTotal = _arg2; this.bytesTotalCurrent = _arg3; this.itemsLoaded = _arg4; this.itemsTotal = _arg5; this.weightPercent = _arg6; this.percentLoaded = ((_arg2 > 0)) ? (_arg1 / _arg2) : 0; ratioLoaded = ((_arg5 == 0)) ? 0 : (_arg4 / _arg5); } public function set percentLoaded(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _percentLoaded = _arg1; } public function loadingStatus():String{ var _local1:Array = []; _local1.push(("bytesLoaded: " + bytesLoaded)); _local1.push(("bytesTotal: " + bytesTotal)); _local1.push(("itemsLoaded: " + itemsLoaded)); _local1.push(("itemsTotal: " + itemsTotal)); _local1.push(("bytesTotalCurrent: " + bytesTotalCurrent)); _local1.push(("percentLoaded: " + BulkLoader.truncateNumber(percentLoaded))); _local1.push(("weightPercent: " + BulkLoader.truncateNumber(weightPercent))); _local1.push(("ratioLoaded: " + BulkLoader.truncateNumber(ratioLoaded))); return ((("BulkProgressEvent " + _local1.join(", ")) + ";")); } public function get ratioLoaded():Number{ return (_ratioLoaded); } public function get percentLoaded():Number{ return (_percentLoaded); } public function set weightPercent(_arg1:Number):void{ if (((isNaN(_arg1)) || (!(isFinite(_arg1))))){ _arg1 = 0; }; _weightPercent = _arg1; } override public function toString():String{ return (super.toString()); } } }//package br.com.stimuli.loading
Section 10
//SectionEvent (cartelle.core.events.SectionEvent) package cartelle.core.events { import flash.events.*; public class SectionEvent extends Event { public static const TRANSITION_OUT_COMPLETE:String = "transitionOutComplete"; public static const TRANSITION_IN_COMPLETE:String = "transitionInComplete"; public static const ASSET_PACK_LOAD_COMPLETE:String = "assetPackLoadComplete"; public function SectionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function clone():Event{ return (new SectionEvent(type, bubbles, cancelable)); } } }//package cartelle.core.events
Section 11
//Section (cartelle.core.Section) package cartelle.core { import cartelle.loading.*; import flash.events.*; import flash.display.*; public class Section extends View { public var isStandaloneSwf:Boolean; private var assetPacks:Array; private var assetPackIds:Array; public function Section(){ assetPackIds = []; assetPacks = []; super(); if ((this.isStandaloneSwf = (this.parent is Stage))){ this.standAloneSWF(); }; if (!AssetPackManager.initialized){ AssetPackManager.initialize(); }; } public function handleAssetPack(_arg1:AssetPack, _arg2:ProgressStatus=null):void{ this.assetPacks.push(_arg1); if (((((!(this.initialized)) && (!((this.parent is Loader))))) && ((this.assetPacks.length == this.assetPackIds.length)))){ super.start(); }; } public function requireAssetPack(_arg1:String):void{ this.assetPackIds.push(_arg1); } public function pause():void{ } override protected function start():void{ if (this.assetPackIds.length == 0){ super.start(); } else { if (this.assetPackIds.length > 0){ this.loadRequiredPacks(); }; }; } public function getAssetPack(_arg1:String):AssetPack{ return (AssetPackManager.getAssetPack(_arg1)); } public function resume():void{ } override public function destroy():void{ super.destroy(); var _local1:Number = 0; while (_local1 < this.assetPacks.length) { this.assetPacks[_local1].clear(); this.assetPacks[_local1] = null; _local1++; }; } public function loadRequiredPacks():void{ var _local1:Number = 0; while (_local1 < this.assetPackIds.length) { AssetPackManager.loadToSection(this.assetPackIds[_local1], this); _local1++; }; } override protected function removedFromStageHandler(_arg1:Event):void{ super.removedFromStageHandler(_arg1); } public function transitionOut():void{ } public function getAsset(_arg1:String):AssetPackItem{ var _local3:AssetPack; var _local2:Number = 0; while (_local2 < this.assetPacks.length) { _local3 = AssetPack(this.assetPacks[_local2]); if (_local3.getAsset(_arg1)){ return (AssetPackItem(_local3.getAsset(_arg1))); }; _local2++; }; return (null); } public function handleAssetPackItem(_arg1:AssetPackItem):void{ } public function transitionIn():void{ } protected function standAloneSWF():void{ } } }//package cartelle.core
Section 12
//View (cartelle.core.View) package cartelle.core { import flash.events.*; import flash.display.*; public class View extends MovieClip { protected var initialized:Boolean; public function View(){ this.initialized = false; this.addEventListener(Event.ADDED_TO_STAGE, this.addedToStageHandler, false, 0, true); this.addEventListener(Event.REMOVED_FROM_STAGE, this.removedFromStageHandler, false, 0, true); } protected function start():void{ this.initialize(); this.render(); this.initialized = true; } protected function render():void{ } private function addedToStageHandler(_arg1:Event):void{ if (_arg1.target == this){ this.removeEventListener(Event.ADDED_TO_STAGE, this.addedToStageHandler); this.stage.addEventListener(Event.RESIZE, stageResizeHandler, false, 0, true); this.stage.addEventListener(Event.RENDER, this.stageRenderHandler, false, 0, true); this.start(); }; } protected function removedFromStageHandler(_arg1:Event):void{ this.destroy(); if (_arg1.target == this){ this.removeEventListener(Event.ADDED_TO_STAGE, this.addedToStageHandler); this.removeEventListener(Event.REMOVED_FROM_STAGE, this.removedFromStageHandler); this.stage.removeEventListener(Event.RESIZE, stageResizeHandler); this.stage.removeEventListener(Event.RENDER, this.stageRenderHandler); }; } override public function gotoAndPlay(_arg1:Object, _arg2:String=null):void{ super.gotoAndPlay(_arg1, _arg2); if (this.stage){ this.stage.invalidate(); }; } protected function initialize():void{ } private function stageRenderHandler(_arg1:Event):void{ } protected function stageResizeHandler(_arg1:Event):void{ } public function destroy():void{ } override public function gotoAndStop(_arg1:Object, _arg2:String=null):void{ super.gotoAndStop(_arg1, _arg2); if (this.stage){ this.stage.invalidate(); }; } } }//package cartelle.core
Section 13
//AssetPackParser (cartelle.loading.parsers.AssetPackParser) package cartelle.loading.parsers { import cartelle.loading.*; public class AssetPackParser { public function parse(_arg1:XML):Array{ var _local5:XML; var _local6:String; var _local7:XMLList; var _local8:AssetPack; var _local9:Number; var _local10:Boolean; var _local11:AssetPackItem; var _local2:Array = []; var _local3:XMLList = _arg1..assetPack; var _local4:Number = 0; while (_local4 < _local3.length()) { _local5 = _local3[_local4]; _local6 = _local3[_local4].@id; _local7 = _local5..asset; if (((_local5.@targetId) && ((_local7.length() > 0)))){ _local8 = ((AssetPackManager.getAssetPack(_local6)) || (new AssetPack(_local6))); _local9 = 0; while (_local9 < _local7.length()) { _local10 = ((_local7[_local9].@addContents == "true")) ? true : false; _local11 = ((_local8.getAsset(_local7[_local9].@id)) || (_local8.addAsset(_local7[_local9].url, _local8.id, _local7[_local9].@id, _local7[_local9]))); _local11.addContents = _local10; _local11.group = _local7[_local9].@group; _local9++; }; }; _local2.push(_local8); _local4++; }; return (_local2); } } }//package cartelle.loading.parsers
Section 14
//AssetPack (cartelle.loading.AssetPack) package cartelle.loading { import cartelle.core.*; public class AssetPack { public var id:String; public var assets:Array; public var loaded:Boolean; public var host:Section; public var hostItem:AssetPackHostItem; public function AssetPack(_arg1:String){ assets = []; super(); this.id = _arg1; this.loaded = false; } public function removeAsset(_arg1:String):void{ var _local2:AssetPackItem = this.getAsset(_arg1); if (_local2){ AssetPackManager.bulkLoader.removeAll(); _local2.file = null; _local2.loaded = false; _local2.uniqueId = null; _local2 = null; }; } public function getGroup(_arg1:String):Array{ var _local4:AssetPackItem; var _local2:Array = []; var _local3:Number = 0; while (_local3 < this.getItems().length) { _local4 = this.getItems()[_local3]; if (_local4.group == _arg1){ _local2.push(_local4); }; _local3++; }; return (_local2); } public function isHostItem(_arg1:AssetPackItem):Boolean{ if (((this.hostItem) && ((this.hostItem == _arg1)))){ return (true); }; return (false); } public function checkLoaded():Boolean{ var _local3:AssetPackItem; var _local1:Boolean; var _local2:Number = 0; while (_local2 < this.getItems().length) { _local3 = AssetPackItem(this.getItems()[_local2]); if (!_local3.loaded){ _local1 = false; }; _local2++; }; return ((this.loaded = _local1)); } public function addAsset(_arg1:XMLList, _arg2:String, _arg3:String=null, _arg4:XML=null):AssetPackItem{ var _local5:AssetPackItem = new AssetPackItem(_arg1, _arg2, _arg3, _arg4); _local5.index = this.assets.length; this.assets.push(_local5); return (_local5); } public function getItems():Array{ var _local1:Array = []; var _local2:Number = 0; while (_local2 < this.assets.length) { _local1.push(this.assets[_local2]); _local2++; }; if (this.hostItem){ _local1.push(this.hostItem); }; return (_local1); } public function clear():void{ var _local3:AssetPackItem; this.host = null; if (this.hostItem){ this.hostItem.sectionHost = null; this.hostItem = null; }; this.loaded = false; var _local1:Number = this.getItems().length; var _local2:Number = 0; while (_local2 < _local1) { _local3 = this.getItems()[_local2]; this.removeAsset(_local3.id); _local2++; }; } public function getAsset(_arg1:String):AssetPackItem{ var _local3:AssetPackItem; var _local2:Number = 0; while (_local2 < assets.length) { _local3 = assets[_local2]; if (_local3.id == _arg1){ return (_local3); }; _local2++; }; return (null); } } }//package cartelle.loading
Section 15
//AssetPackHostItem (cartelle.loading.AssetPackHostItem) package cartelle.loading { import cartelle.core.*; public class AssetPackHostItem extends AssetPackItem { public var sectionHost:Section; public function AssetPackHostItem(_arg1:XMLList, _arg2:String, _arg3:Section, _arg4:String=null, _arg5:XML=null){ super(_arg1, _arg2, _arg4, _arg5); this.sectionHost = _arg3; } } }//package cartelle.loading
Section 16
//AssetPackItem (cartelle.loading.AssetPackItem) package cartelle.loading { public class AssetPackItem { public var uniqueId:String; public var index:Number; public var addContents:Boolean; public var xmlData:XML; public var id:String; public var assetPackId:String; private var urlList:XMLList; private var _url:String; private var _loaded:Boolean; public var file; public var group:String; public function AssetPackItem(_arg1:XMLList, _arg2:String, _arg3:String=null, _arg4:XML=null){ this.urlList = _arg1; this.id = _arg3; this.assetPackId = _arg2; this.xmlData = _arg4; this.loaded = false; } public function get loaded():Boolean{ return (this._loaded); } public function set loaded(_arg1:Boolean):void{ this._loaded = _arg1; var _local2:AssetPack = AssetPackManager.getAssetPack(this.assetPackId); if (_local2){ _local2.checkLoaded(); }; } public function get url():String{ if (!_loaded){ _url = urlList[Math.floor((Math.random() * urlList.length()))]; }; return (_url); } } }//package cartelle.loading
Section 17
//AssetPackManager (cartelle.loading.AssetPackManager) package cartelle.loading { import cartelle.core.*; import br.com.stimuli.loading.*; import flash.events.*; import cartelle.loading.parsers.*; public class AssetPackManager { public static var bulkLoader:BulkLoader; public static var initialized:Boolean = false; protected static var disp:EventDispatcher; public static var assetPacks:Object = {}; private static var _uniqueId:Number = 0; private static function queueCompleteHandler(_arg1:BulkProgressEvent):void{ bulkLoader.removeAll(); dispatchEvent(_arg1); } private static function getUniqueId(_arg1:String=""):String{ return ((_arg1 + _uniqueId++)); } public static function defineDriver(_arg1:String, _arg2:String, _arg3:Section):void{ var _local4:XML = <list><assetPack><asset/></assetPack></list> ; _local4.assetPack.@id = _arg2; _local4.assetPack.asset.url = _arg1; _local4.assetPack.asset.@addContents = "true"; _local4.assetPack.asset.@id = "driver"; addAssetPacksXML(_local4); _arg3.requireAssetPack(_arg2); } public static function dispatchEvent(... _args):void{ if (disp == null){ return; }; disp.dispatchEvent.apply(null, _args); } public static function addAssetPack(_arg1:AssetPack):void{ assetPacks[_arg1.id] = _arg1; } private static function queueProgressHandler(_arg1:BulkProgressEvent):void{ dispatchEvent(_arg1); } public static function addEventListener(... _args):void{ if (disp == null){ disp = new EventDispatcher(); }; disp.addEventListener.apply(null, _args); } public static function initialize():void{ initialized = true; bulkLoader = new BulkLoader("assetPacks"); bulkLoader.addEventListener(BulkProgressEvent.COMPLETE, queueCompleteHandler, false, 0, true); bulkLoader.addEventListener(BulkProgressEvent.PROGRESS, queueProgressHandler, false, 0, true); bulkLoader.addEventListener(BulkErrorEvent.ERROR, errorHandler, false, 0, true); } private static function itemProgressHandler(_arg1:ProgressEvent):void{ } private static function getAssetPackItemById(_arg1:String):AssetPackItem{ var _local2:String; var _local3:AssetPack; var _local4:Number; var _local5:AssetPackItem; for (_local2 in assetPacks) { _local3 = assetPacks[_local2]; _local4 = 0; while (_local4 < _local3.getItems().length) { _local5 = _local3.getItems()[_local4]; if (_local5.uniqueId == _arg1){ return (_local5); }; _local4++; }; }; return (null); } private static function loadItem(_arg1:AssetPackItem):void{ bulkLoader.add(_arg1.url, {id:_arg1.uniqueId}); bulkLoader.get(_arg1.uniqueId).addEventListener(ProgressEvent.PROGRESS, itemProgressHandler, false, 0, true); bulkLoader.get(_arg1.uniqueId).addEventListener(Event.COMPLETE, itemCompleteHandler, false, 0, true); bulkLoader.start(); } private static function loadAssetPack(_arg1:AssetPack):void{ var _local3:AssetPackItem; var _local2:Number = 0; while (_local2 < _arg1.getItems().length) { _local3 = _arg1.getItems()[_local2]; if (bulkLoader.get(_local3.uniqueId) == null){ _local3.uniqueId = getUniqueId("assetPackItem_"); loadItem(_local3); }; _local2++; }; } public static function loadToSection(_arg1:String, _arg2:Section):void{ var _local3:AssetPack = getAssetPack(_arg1); if (_local3){ _local3.host = Section(_arg2); loadAssetPack(_local3); }; } public static function addAssetPacksXML(_arg1:XML):void{ addAssetPacks(new AssetPackParser().parse(_arg1)); } public static function loadToURL(_arg1:String, _arg2:XMLList, _arg3:Section):void{ var _local5:AssetPackHostItem; var _local4:AssetPack = getAssetPack(_arg1); if (_local4){ _local5 = new AssetPackHostItem(_arg2, _arg1, _arg3, "host"); _local4.hostItem = _local5; loadAssetPack(_local4); }; } private static function errorHandler(_arg1:BulkErrorEvent):void{ trace(("ASSET PACK MANAGER : ERROR EVENT : " + _arg1.errors)); } public static function addAssetPacks(_arg1:Array):void{ var _local2:Number = 0; while (_local2 < _arg1.length) { addAssetPack(_arg1[_local2]); _local2++; }; } public static function getAssetPack(_arg1:String):AssetPack{ return (assetPacks[_arg1]); } public static function removeEventListener(... _args):void{ if (disp == null){ return; }; disp.removeEventListener.apply(null, _args); } private static function itemCompleteHandler(_arg1:Event):void{ var _local2:AssetPackItem = AssetPackItem(getAssetPackItemById(_arg1.target.id)); var _local3:AssetPack = getAssetPack(_local2.assetPackId); var _local4:String = _local2.uniqueId; var _local5:* = _arg1.target.content; var _local6:ProgressStatus = new ProgressStatus("complete", 1, 1); bulkLoader.get(_local4).removeEventListener(ProgressEvent.PROGRESS, itemProgressHandler); bulkLoader.get(_local4).removeEventListener(Event.COMPLETE, itemCompleteHandler); _local2.file = _local5; if (_local3.isHostItem(_local2)){ _local3.host = Section(_local3.hostItem.file); }; _local2.loaded = true; if (_local2.addContents){ addAssetPacksXML(XML(_local2.file)); loadAssetPack(_local3); } else { if (_local3.loaded){ _local3.host.handleAssetPack(_local3, _local6); if (_local3.hostItem){ _local3.hostItem.sectionHost.handleAssetPack(_local3, _local6); }; }; if (_local3.host){ _local3.host.loadRequiredPacks(); }; }; } } }//package cartelle.loading
Section 18
//ProgressStatus (cartelle.loading.ProgressStatus) package cartelle.loading { public class ProgressStatus { public var total:Number; public var loaded:Number; public var message:String; public function ProgressStatus(_arg1:String, _arg2:Number, _arg3:Number){ this.message = _arg1; this.loaded = _arg2; this.total = _arg3; } } }//package cartelle.loading
Section 19
//FormatManager (cartelle.text.FormatManager) package cartelle.text { import flash.text.*; import flash.utils.*; public class FormatManager { public function init():void{ } public static function getFont(_arg1:String):Font{ var _local2:Array = Font.enumerateFonts(false); var _local3:Number = 0; while (_local3 < _local2.length) { if (getQualifiedClassName(Font(_local2[_local3])) == _arg1){ return (Font(_local2[_local3])); }; _local3++; }; return (null); } } }//package cartelle.text
Section 20
//Quad (gs.easing.Quad) package gs.easing { public class Quad { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } } }//package gs.easing
Section 21
//TweenFilterLite (gs.TweenFilterLite) package gs { import flash.filters.*; import flash.utils.*; public class TweenFilterLite extends TweenLite { protected var _matrix:Array; protected var _hf:Boolean;// = false protected var _roundProps:Boolean; protected var _cmf:ColorMatrixFilter; protected var _filters:Array; protected var _endMatrix:Array; protected var _timeScale:Number; protected var _clrsa:Array; public static var removeTween:Function = TweenLite.removeTween; private static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]; private static var _lumB:Number = 0.072169; public static var delayedCall:Function = TweenLite.delayedCall; public static var killTweensOf:Function = TweenLite.killTweensOf; public static var version:Number = 9.29; private static var _lumG:Number = 0.71516; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; private static var _lumR:Number = 0.212671; protected static var _globalTimeScale:Number = 1; public function TweenFilterLite(_arg1:Object, _arg2:Number, _arg3:Object){ _filters = []; super(_arg1, _arg2, _arg3); if (((!((this.combinedTimeScale == 1))) && ((this.target is TweenFilterLite)))){ _timeScale = 1; this.combinedTimeScale = _globalTimeScale; } else { _timeScale = this.combinedTimeScale; this.combinedTimeScale = (this.combinedTimeScale * _globalTimeScale); }; if (((!((this.combinedTimeScale == 1))) && (!((this.delay == 0))))){ this.startTime = (this.initTime + (this.delay * (1000 / this.combinedTimeScale))); }; if (TweenLite.version < 9.29){ trace("TweenFilterLite error! Please update your TweenLite class or try deleting your ASO files. TweenFilterLite requires a more recent version. Download updates at http://www.TweenLite.com."); }; } override public function killVars(_arg1:Object):void{ if (TweenLite.overwriteManager.enabled){ TweenLite.overwriteManager.killVars(_arg1, this.vars, this.tweens, _subTweens, ((_filters) || ([]))); }; } override public function initTweenVals(_arg1:Boolean=false, _arg2:String=""):void{ var _local3:int; var _local4:Object; var _local5:Object; var _local6:Object; var _local7:int; var _local8:String; if (((!(_arg1)) && (TweenLite.overwriteManager.enabled))){ TweenLite.overwriteManager.manageOverwrites(this, masterList[this.target]); }; _clrsa = []; _filters = []; _matrix = _idMatrix.slice(); _arg2 = (_arg2 + " blurFilter glowFilter colorMatrixFilter dropShadowFilter bevelFilter roundProps "); _roundProps = Boolean((this.vars.roundProps is Array)); if (_isDisplayObject){ if (this.vars.blurFilter != null){ _local4 = this.vars.blurFilter; addFilter("blurFilter", _local4, BlurFilter, ["blurX", "blurY", "quality"], new BlurFilter(0, 0, ((_local4.quality) || (2)))); }; if (this.vars.glowFilter != null){ _local4 = this.vars.glowFilter; addFilter("glowFilter", _local4, GlowFilter, ["alpha", "blurX", "blurY", "color", "quality", "strength", "inner", "knockout"], new GlowFilter(0xFFFFFF, 0, 0, 0, ((_local4.strength) || (1)), ((_local4.quality) || (2)), _local4.inner, _local4.knockout)); }; if (this.vars.colorMatrixFilter != null){ _local4 = this.vars.colorMatrixFilter; _local5 = addFilter("colorMatrixFilter", _local4, ColorMatrixFilter, [], new ColorMatrixFilter(_matrix)); _cmf = _local5.filter; _matrix = ColorMatrixFilter(_cmf).matrix; if (((!((_local4.matrix == null))) && ((_local4.matrix is Array)))){ _endMatrix = _local4.matrix; } else { if (_local4.relative == true){ _endMatrix = _matrix.slice(); } else { _endMatrix = _idMatrix.slice(); }; _endMatrix = setBrightness(_endMatrix, _local4.brightness); _endMatrix = setContrast(_endMatrix, _local4.contrast); _endMatrix = setHue(_endMatrix, _local4.hue); _endMatrix = setSaturation(_endMatrix, _local4.saturation); _endMatrix = setThreshold(_endMatrix, _local4.threshold); if (!isNaN(_local4.colorize)){ _endMatrix = colorize(_endMatrix, _local4.colorize, _local4.amount); } else { if (!isNaN(_local4.color)){ _endMatrix = colorize(_endMatrix, _local4.color, _local4.amount); }; }; }; _local3 = 0; while (_local3 < _endMatrix.length) { if (((!((_matrix[_local3] == _endMatrix[_local3]))) && (!((_matrix[_local3] == undefined))))){ this.tweens[this.tweens.length] = [_matrix, _local3.toString(), _matrix[_local3], (_endMatrix[_local3] - _matrix[_local3]), "colorMatrixFilter"]; }; _local3++; }; }; if (this.vars.dropShadowFilter != null){ _local4 = this.vars.dropShadowFilter; addFilter("dropShadowFilter", _local4, DropShadowFilter, ["alpha", "angle", "blurX", "blurY", "color", "distance", "quality", "strength", "inner", "knockout", "hideObject"], new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, ((_local4.quality) || (2)), _local4.inner, _local4.knockout, _local4.hideObject)); }; if (this.vars.bevelFilter != null){ _local4 = this.vars.bevelFilter; addFilter("bevelFilter", _local4, BevelFilter, ["angle", "blurX", "blurY", "distance", "highlightAlpha", "highlightColor", "quality", "shadowAlpha", "shadowColor", "strength"], new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, ((_local4.quality) || (2)))); }; if (this.vars.runBackwards == true){ _local3 = (_clrsa.length - 1); while (_local3 > -1) { _local6 = _clrsa[_local3]; _clrsa[_local3].sr = (_local6.sr + _local6.cr); _local6.cr = (_local6.cr * -1); _local6.sg = (_local6.sg + _local6.cg); _local6.cg = (_local6.cg * -1); _local6.sb = (_local6.sb + _local6.cb); _local6.cb = (_local6.cb * -1); _local6.f[_local6.p] = (((_local6.sr << 16) | (_local6.sg << 8)) | _local6.sb); _local3--; }; }; super.initTweenVals(true, _arg2); } else { super.initTweenVals(_arg1, _arg2); }; if (_roundProps){ _local3 = (this.vars.roundProps.length - 1); while (_local3 > -1) { _local8 = this.vars.roundProps[_local3]; _local7 = (this.tweens.length - 1); while (_local7 > -1) { if ((((this.tweens[_local7][1] == _local8)) && ((this.tweens[_local7][0] == this.target)))){ this.tweens[_local7][5] = true; break; }; _local7--; }; _local3--; }; }; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; if (_arg1){ this.combinedTimeScale = (_timeScale * _globalTimeScale); }; } public function set timeScale(_arg1:Number):void{ if (_arg1 < 1E-5){ _arg1 = (_timeScale = 1E-5); } else { _timeScale = _arg1; _arg1 = (_arg1 * _globalTimeScale); }; this.initTime = ((currentTime - ((((currentTime - this.initTime) - (this.delay * (1000 / this.combinedTimeScale))) * this.combinedTimeScale) * (1 / _arg1))) - (this.delay * (1000 / _arg1))); if (this.startTime != 999999999999999){ this.startTime = (this.initTime + (this.delay * (1000 / _arg1))); }; this.combinedTimeScale = _arg1; } public function get timeScale():Number{ return (_timeScale); } override public function render(_arg1:uint):void{ var _local3:Number; var _local4:Object; var _local5:int; var _local6:Number; var _local7:int; var _local8:Array; var _local9:int; var _local2:Number = (((_arg1 - this.startTime) * 0.001) * this.combinedTimeScale); if (_local2 >= this.duration){ _local2 = this.duration; _local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0; } else { _local3 = this.ease(_local2, 0, 1, this.duration); }; if (!_roundProps){ _local5 = (this.tweens.length - 1); while (_local5 > -1) { _local4 = this.tweens[_local5]; _local4[0][_local4[1]] = (_local4[2] + (_local3 * _local4[3])); _local5--; }; } else { _local5 = (this.tweens.length - 1); while (_local5 > -1) { _local4 = this.tweens[_local5]; if (_local4[5]){ _local6 = (_local4[2] + (_local3 * _local4[3])); _local7 = ((_local6)<0) ? -1 : 1; _local4[0][_local4[1]] = ((((_local6 % 1) * _local7))>0.5) ? (int(_local6) + _local7) : int(_local6); } else { _local4[0][_local4[1]] = (_local4[2] + (_local3 * _local4[3])); }; _local5--; }; }; if (_hf){ _local5 = (_clrsa.length - 1); while (_local5 > -1) { _local4 = _clrsa[_local5]; _local4.f[_local4.p] = ((((_local4.sr + (_local3 * _local4.cr)) << 16) | ((_local4.sg + (_local3 * _local4.cg)) << 8)) | (_local4.sb + (_local3 * _local4.cb))); _local5--; }; if (_cmf != null){ ColorMatrixFilter(_cmf).matrix = _matrix; }; _local8 = this.target.filters; _local5 = 0; while (_local5 < _filters.length) { _local9 = (_local8.length - 1); while (_local9 > -1) { if ((_local8[_local9] is _filters[_local5].type)){ _local8.splice(_local9, 1, _filters[_local5].filter); break; }; _local9--; }; _local5++; }; this.target.filters = _local8; }; if (_hst){ _local5 = (_subTweens.length - 1); while (_local5 > -1) { _subTweens[_local5].proxy(_subTweens[_local5], _local2); _local5--; }; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ complete(true); }; } private function addFilter(_arg1:String, _arg2:Object, _arg3:Class, _arg4:Array, _arg5:BitmapFilter):Object{ var _local8:int; var _local9:String; var _local10:Number; var _local11:Object; var _local12:Object; var _local6:Object = {type:_arg3, name:_arg1}; var _local7:Array = this.target.filters; _local8 = 0; while (_local8 < _local7.length) { if ((_local7[_local8] is _arg3)){ _local6.filter = _local7[_local8]; break; }; _local8++; }; if (_local6.filter == undefined){ _local6.filter = _arg5; _local7[_local7.length] = _local6.filter; this.target.filters = _local7; }; _local8 = 0; while (_local8 < _arg4.length) { _local9 = _arg4[_local8]; if (_arg2[_local9] != undefined){ if ((((((_local9 == "color")) || ((_local9 == "highlightColor")))) || ((_local9 == "shadowColor")))){ _local11 = HEXtoRGB(_local6.filter[_local9]); _local12 = HEXtoRGB(_arg2[_local9]); _clrsa[_clrsa.length] = {f:_local6.filter, p:_local9, sr:_local11.rb, cr:(_local12.rb - _local11.rb), sg:_local11.gb, cg:(_local12.gb - _local11.gb), sb:_local11.bb, cb:(_local12.bb - _local11.bb)}; } else { if ((((((((_local9 == "quality")) || ((_local9 == "inner")))) || ((_local9 == "knockout")))) || ((_local9 == "hideObject")))){ _local6.filter[_local9] = _arg2[_local9]; } else { if (typeof(_arg2[_local9]) == "number"){ _local10 = (_arg2[_local9] - _local6.filter[_local9]); } else { _local10 = Number(_arg2[_local9]); }; this.tweens[this.tweens.length] = [_local6.filter, _local9, _local6.filter[_local9], _local10, _arg1]; }; }; }; _local8++; }; _filters[_filters.length] = _local6; _hf = true; return (_local6); } public static function setHue(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; _arg2 = (_arg2 * (Math.PI / 180)); var _local3:Number = Math.cos(_arg2); var _local4:Number = Math.sin(_arg2); var _local5:Array = [((_lumR + (_local3 * (1 - _lumR))) + (_local4 * -(_lumR))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * -(_lumG))), ((_lumB + (_local3 * -(_lumB))) + (_local4 * (1 - _lumB))), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * 0.143)), ((_lumG + (_local3 * (1 - _lumG))) + (_local4 * 0.14)), ((_lumB + (_local3 * -(_lumB))) + (_local4 * -0.283)), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * -((1 - _lumR)))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * _lumG)), ((_lumB + (_local3 * (1 - _lumB))) + (_local4 * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; return (applyMatrix(_local5, _arg1)); } public static function setContrast(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; _arg2 = (_arg2 + 0.01); var _local3:Array = [_arg2, 0, 0, 0, (128 * (1 - _arg2)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg2, 0, (128 * (1 - _arg2)), 0, 0, 0, 1, 0]; return (applyMatrix(_local3, _arg1)); } public static function applyMatrix(_arg1:Array, _arg2:Array):Array{ var _local6:int; var _local7:int; if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){ return (_arg2); }; var _local3:Array = []; var _local4:int; var _local5:int; _local6 = 0; while (_local6 < 4) { _local7 = 0; while (_local7 < 5) { if (_local7 == 4){ _local5 = _arg1[(_local4 + 4)]; } else { _local5 = 0; }; _local3[(_local4 + _local7)] = (((((_arg1[_local4] * _arg2[_local7]) + (_arg1[(_local4 + 1)] * _arg2[(_local7 + 5)])) + (_arg1[(_local4 + 2)] * _arg2[(_local7 + 10)])) + (_arg1[(_local4 + 3)] * _arg2[(_local7 + 15)])) + _local5); _local7++; }; _local4 = (_local4 + 5); _local6++; }; return (_local3); } public static function colorize(_arg1:Array, _arg2:Number, _arg3:Number=1):Array{ if (isNaN(_arg2)){ return (_arg1); }; if (isNaN(_arg3)){ _arg3 = 1; }; var _local4:Number = (((_arg2 >> 16) & 0xFF) / 0xFF); var _local5:Number = (((_arg2 >> 8) & 0xFF) / 0xFF); var _local6:Number = ((_arg2 & 0xFF) / 0xFF); var _local7:Number = (1 - _arg3); var _local8:Array = [(_local7 + ((_arg3 * _local4) * _lumR)), ((_arg3 * _local4) * _lumG), ((_arg3 * _local4) * _lumB), 0, 0, ((_arg3 * _local5) * _lumR), (_local7 + ((_arg3 * _local5) * _lumG)), ((_arg3 * _local5) * _lumB), 0, 0, ((_arg3 * _local6) * _lumR), ((_arg3 * _local6) * _lumG), (_local7 + ((_arg3 * _local6) * _lumB)), 0, 0, 0, 0, 0, 1, 0]; return (applyMatrix(_local8, _arg1)); } public static function setBrightness(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; _arg2 = ((_arg2 * 100) - 100); return (applyMatrix([1, 0, 0, 0, _arg2, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], _arg1)); } public static function setSaturation(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; var _local3:Number = (1 - _arg2); var _local4:Number = (_local3 * _lumR); var _local5:Number = (_local3 * _lumG); var _local6:Number = (_local3 * _lumB); var _local7:Array = [(_local4 + _arg2), _local5, _local6, 0, 0, _local4, (_local5 + _arg2), _local6, 0, 0, _local4, _local5, (_local6 + _arg2), 0, 0, 0, 0, 0, 1, 0]; return (applyMatrix(_local7, _arg1)); } public static function setGlobalTimeScale(_arg1:Number):void{ var _local3:int; var _local4:Array; if (_arg1 < 1E-5){ _arg1 = 1E-5; }; var _local2:Dictionary = masterList; _globalTimeScale = _arg1; for each (_local4 in _local2) { _local3 = (_local4.length - 1); while (_local3 > -1) { if ((_local4[_local3] is TweenFilterLite)){ _local4[_local3].timeScale = (_local4[_local3].timeScale * 1); }; _local3--; }; }; } public static function get globalTimeScale():Number{ return (_globalTimeScale); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenFilterLite{ _arg3.runBackwards = true; return (new TweenFilterLite(_arg1, _arg2, _arg3)); } public static function set globalTimeScale(_arg1:Number):void{ setGlobalTimeScale(_arg1); } public static function HEXtoRGB(_arg1:Number):Object{ return ({rb:(_arg1 >> 16), gb:((_arg1 >> 8) & 0xFF), bb:(_arg1 & 0xFF)}); } public static function setThreshold(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; var _local3:Array = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), 0, 0, 0, 1, 0]; return (applyMatrix(_local3, _arg1)); } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenFilterLite{ return (new TweenFilterLite(_arg1, _arg2, _arg3)); } } }//package gs
Section 22
//TweenLite (gs.TweenLite) package gs { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; public class TweenLite { public var started:Boolean; public var delay:Number; protected var _hasUpdate:Boolean; protected var _subTweens:Array; public var initted:Boolean; public var active:Boolean; public var startTime:Number; public var target:Object; public var duration:Number; protected var _hst:Boolean; public var gc:Boolean; protected var _isDisplayObject:Boolean; public var tweens:Array; public var vars:Object; public var ease:Function; protected var _specialVars:Object; public var initTime:Number; public var combinedTimeScale:Number; private static var _timer:Timer = new Timer(2000); private static var _classInitted:Boolean; public static var defaultEase:Function = TweenLite.easeOut; public static var version:Number = 9.29; public static var masterList:Dictionary = new Dictionary(false); public static var currentTime:uint; public static var overwriteManager:Object; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; public static var timingSprite:Sprite = new Sprite(); public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ if (_arg1 == null){ return; }; if (!_classInitted){ currentTime = getTimer(); timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; _timer.addEventListener("timer", killGarbage, false, 0, true); _timer.start(); _classInitted = true; }; this.vars = _arg3; this.duration = ((_arg2) || (0.001)); this.delay = ((_arg3.delay) || (0)); this.combinedTimeScale = ((_arg3.timeScale) || (1)); this.active = Boolean((((_arg2 == 0)) && ((this.delay == 0)))); this.target = _arg1; _isDisplayObject = Boolean((_arg1 is DisplayObject)); if (!(this.vars.ease is Function)){ this.vars.ease = defaultEase; }; if (this.vars.easeParams != null){ this.vars.proxiedEase = this.vars.ease; this.vars.ease = easeProxy; }; this.ease = this.vars.ease; if (!isNaN(Number(this.vars.autoAlpha))){ this.vars.alpha = Number(this.vars.autoAlpha); this.vars.visible = Boolean((this.vars.alpha > 0)); }; _specialVars = ((this.vars.isTV)==true) ? this.vars.exposedProps : this.vars; this.tweens = []; _subTweens = []; _hst = (this.initted = false); this.initTime = currentTime; this.startTime = (this.initTime + (this.delay * 1000)); var _local4:int = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); if ((((masterList[_arg1] == undefined)) || (((!((_arg1 == null))) && ((_local4 == 1)))))){ masterList[_arg1] = []; }; masterList[_arg1].push(this); if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))) || (this.active))){ initTweenVals(); if (this.active){ render((this.startTime + 1)); } else { render(this.startTime); }; if (((((!((_specialVars.visible == null))) && ((this.vars.runBackwards == true)))) && (_isDisplayObject))){ this.target.visible = _specialVars.visible; }; }; } public function get enabled():Boolean{ return ((this.gc) ? false : true); } public function render(_arg1:uint):void{ var _local3:Number; var _local4:Object; var _local5:int; var _local2:Number = ((_arg1 - this.startTime) * 0.001); if (_local2 >= this.duration){ _local2 = this.duration; _local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0; } else { _local3 = this.ease(_local2, 0, 1, this.duration); }; _local5 = (this.tweens.length - 1); while (_local5 > -1) { _local4 = this.tweens[_local5]; _local4[0][_local4[1]] = (_local4[2] + (_local3 * _local4[3])); _local5--; }; if (_hst){ _local5 = (_subTweens.length - 1); while (_local5 > -1) { _subTweens[_local5].proxy(_subTweens[_local5], _local2); _local5--; }; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ complete(true); }; } public function set enabled(_arg1:Boolean):void{ var _local2:Array; var _local3:Boolean; var _local4:int; if (_arg1){ if (masterList[this.target] == undefined){ masterList[this.target] = [this]; } else { _local2 = masterList[this.target]; _local4 = (_local2.length - 1); while (_local4 > -1) { if (_local2[_local4] == this){ _local3 = true; break; }; _local4--; }; if (!_local3){ masterList[this.target].push(this); }; }; }; this.gc = (_arg1) ? false : true; if (this.gc){ this.active = false; } else { this.active = this.started; }; } public function activate():void{ this.started = (this.active = true); if (!this.initted){ initTweenVals(); }; if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; if (this.duration == 0.001){ this.startTime = (this.startTime - 1); }; } public function clear():void{ this.tweens = []; _subTweens = []; this.vars = {}; _hst = (_hasUpdate = false); } protected function addSubTween(_arg1:String, _arg2:Function, _arg3:Object, _arg4:Object, _arg5:Object=null):void{ var _local6:String; _subTweens[_subTweens.length] = {name:_arg1, proxy:_arg2, target:_arg3, info:_arg5}; for (_local6 in _arg4) { if (typeof(_arg4[_local6]) == "number"){ this.tweens[this.tweens.length] = [_arg3, _local6, _arg3[_local6], (_arg4[_local6] - _arg3[_local6]), _arg1]; } else { this.tweens[this.tweens.length] = [_arg3, _local6, _arg3[_local6], Number(_arg4[_local6]), _arg1]; }; }; _hst = true; } public function initTweenVals(_arg1:Boolean=false, _arg2:String=""):void{ var _local3:String; var _local4:int; var _local5:Array; var _local6:ColorTransform; var _local7:ColorTransform; var _local8:Object; if (((!(_arg1)) && (overwriteManager.enabled))){ overwriteManager.manageOverwrites(this, masterList[this.target]); }; if ((this.target is Array)){ _local5 = ((this.vars.endArray) || ([])); _local4 = 0; while (_local4 < _local5.length) { if (((!((this.target[_local4] == _local5[_local4]))) && (!((this.target[_local4] == undefined))))){ this.tweens[this.tweens.length] = [this.target, _local4.toString(), this.target[_local4], (_local5[_local4] - this.target[_local4]), _local4.toString()]; }; _local4++; }; } else { if (((((!((typeof(_specialVars.tint) == "undefined"))) || ((this.vars.removeTint == true)))) && (_isDisplayObject))){ _local6 = this.target.transform.colorTransform; _local7 = new ColorTransform(); if (_specialVars.alpha != undefined){ _local7.alphaMultiplier = _specialVars.alpha; delete _specialVars.alpha; } else { _local7.alphaMultiplier = this.target.alpha; }; if (((!((this.vars.removeTint == true))) && (((((!((_specialVars.tint == null))) && (!((_specialVars.tint == ""))))) || ((_specialVars.tint == 0)))))){ _local7.color = _specialVars.tint; }; addSubTween("tint", tintProxy, {progress:0}, {progress:1}, {target:this.target, color:_local6, endColor:_local7}); }; if (((!((_specialVars.frame == null))) && (_isDisplayObject))){ addSubTween("frame", frameProxy, {frame:this.target.currentFrame}, {frame:_specialVars.frame}, {target:this.target}); }; if (((!(isNaN(this.vars.volume))) && (this.target.hasOwnProperty("soundTransform")))){ addSubTween("volume", volumeProxy, this.target.soundTransform, {volume:this.vars.volume}, {target:this.target}); }; if (((!((_specialVars.visible == null))) && (_isDisplayObject))){ addSubTween("visible", visibleProxy, {}, {}, {tween:this}); }; for (_local3 in _specialVars) { if ((((((((((((((((((((((((((((((((((((((_local3 == "ease")) || ((_local3 == "delay")))) || ((_local3 == "overwrite")))) || ((_local3 == "onComplete")))) || ((_local3 == "onCompleteParams")))) || ((_local3 == "runBackwards")))) || ((_local3 == "visible")))) || ((_local3 == "autoOverwrite")))) || ((_local3 == "persist")))) || ((_local3 == "onUpdate")))) || ((_local3 == "onUpdateParams")))) || ((_local3 == "autoAlpha")))) || ((((_local3 == "timeScale")) && (!((this.target is TweenLite))))))) || ((_local3 == "onStart")))) || ((_local3 == "onStartParams")))) || ((_local3 == "renderOnStart")))) || ((_local3 == "proxiedEase")))) || ((_local3 == "easeParams")))) || (((_arg1) && (!((_arg2.indexOf(((" " + _local3) + " ")) == -1))))))){ } else { if (((!(((_isDisplayObject) && ((((((_local3 == "tint")) || ((_local3 == "removeTint")))) || ((_local3 == "frame"))))))) && (!((((_local3 == "volume")) && (this.target.hasOwnProperty("soundTransform"))))))){ if (typeof(_specialVars[_local3]) == "number"){ this.tweens[this.tweens.length] = [this.target, _local3, this.target[_local3], (_specialVars[_local3] - this.target[_local3]), _local3]; } else { this.tweens[this.tweens.length] = [this.target, _local3, this.target[_local3], Number(_specialVars[_local3]), _local3]; }; }; }; }; }; if (this.vars.runBackwards == true){ _local4 = (this.tweens.length - 1); while (_local4 > -1) { _local8 = this.tweens[_local4]; _local8[2] = (_local8[2] + _local8[3]); _local8[3] = (_local8[3] * -1); _local4--; }; }; if (this.vars.onUpdate != null){ _hasUpdate = true; }; this.initted = true; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } public function killVars(_arg1:Object):void{ if (overwriteManager.enabled){ overwriteManager.killVars(_arg1, this.vars, this.tweens, _subTweens, []); }; } public function complete(_arg1:Boolean=false):void{ if (!_arg1){ if (!this.initted){ initTweenVals(); }; this.startTime = (currentTime - ((this.duration * 1000) / this.combinedTimeScale)); render(currentTime); return; }; if (this.vars.persist != true){ this.enabled = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; } public static function frameProxy(_arg1:Object, _arg2:Number=0):void{ _arg1.info.target.gotoAndStop(Math.round(_arg1.target.frame)); } public static function removeTween(_arg1:TweenLite, _arg2:Boolean=true):void{ if (_arg1 != null){ if (_arg2){ _arg1.clear(); }; _arg1.enabled = false; }; } public static function visibleProxy(_arg1:Object, _arg2:Number):void{ var _local3:TweenLite = _arg1.info.tween; if (_local3.duration == _arg2){ if (((!((_local3.vars.runBackwards == true))) && ((_local3.ease == _local3.vars.ease)))){ _local3.target.visible = _local3.vars.visible; }; } else { if (_local3.target.visible != true){ _local3.target.visible = true; }; }; } public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{ var _local3:Array; var _local4:int; var _local5:TweenLite; if (((!((_arg1 == null))) && (!((masterList[_arg1] == undefined))))){ _local3 = masterList[_arg1]; _local4 = (_local3.length - 1); while (_local4 > -1) { _local5 = _local3[_local4]; if (((_arg2) && (!(_local5.gc)))){ _local5.complete(false); }; _local5.clear(); _local4--; }; delete masterList[_arg1]; }; } public static function updateAll(_arg1:Event=null):void{ var _local4:Array; var _local5:int; var _local6:TweenLite; var _local2:uint = (currentTime = getTimer()); var _local3:Dictionary = masterList; for each (_local4 in _local3) { _local5 = (_local4.length - 1); while (_local5 > -1) { _local6 = _local4[_local5]; if (_local6 == null){ } else { if (_local6.active){ _local6.render(_local2); } else { if (_local6.gc){ _local4.splice(_local5, 1); } else { if (_local2 >= _local6.startTime){ _local6.activate(); _local6.render(_local2); }; }; }; }; _local5--; }; }; } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:0})); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function tintProxy(_arg1:Object, _arg2:Number=0):void{ var _local3:Number = _arg1.target.progress; var _local4:Number = (1 - _local3); var _local5:Object = _arg1.info.color; var _local6:Object = _arg1.info.endColor; _arg1.info.target.transform.colorTransform = new ColorTransform(((_local5.redMultiplier * _local4) + (_local6.redMultiplier * _local3)), ((_local5.greenMultiplier * _local4) + (_local6.greenMultiplier * _local3)), ((_local5.blueMultiplier * _local4) + (_local6.blueMultiplier * _local3)), ((_local5.alphaMultiplier * _local4) + (_local6.alphaMultiplier * _local3)), ((_local5.redOffset * _local4) + (_local6.redOffset * _local3)), ((_local5.greenOffset * _local4) + (_local6.greenOffset * _local3)), ((_local5.blueOffset * _local4) + (_local6.blueOffset * _local3)), ((_local5.alphaOffset * _local4) + (_local6.alphaOffset * _local3))); } public static function volumeProxy(_arg1:Object, _arg2:Number=0):void{ _arg1.info.target.soundTransform = _arg1.target; } protected static function killGarbage(_arg1:TimerEvent):void{ var _local3:Object; var _local4:Array; var _local2:Dictionary = masterList; for (_local3 in _local2) { if (_local2[_local3].length == 0){ delete _local2[_local3]; }; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } } }//package gs
Section 23
//AbstractCollection (org.cove.ape.AbstractCollection) package org.cove.ape { import flash.display.*; import flash.utils.*; public class AbstractCollection { private var _sprite:Sprite; private var _particles:Array; private var _isParented:Boolean; private var _constraints:Array; public function AbstractCollection(){ if (getQualifiedClassName(this) == "org.cove.ape::AbstractCollection"){ throw (new ArgumentError("AbstractCollection can't be instantiated directly")); }; _isParented = false; _particles = new Array(); _constraints = new Array(); } public function removeConstraint(_arg1:AbstractConstraint):void{ var _local2:int = constraints.indexOf(_arg1); if (_local2 == -1){ return; }; constraints.splice(_local2, 1); _arg1.cleanup(); } public function getAll():Array{ return (particles.concat(constraints)); } function checkCollisionsVsCollection(_arg1:AbstractCollection):void{ var _local5:AbstractParticle; var _local6:int; var _local7:int; var _local8:int; var _local9:AbstractParticle; var _local10:SpringConstraint; var _local11:SpringConstraint; var _local12:int; var _local2:int = _particles.length; var _local3:int; while (_local3 < _local2) { _local5 = _particles[_local3]; if (!_local5.collidable){ } else { _local6 = _arg1.particles.length; _local7 = 0; while (_local7 < _local6) { _local9 = _arg1.particles[_local7]; if (_local9.collidable){ CollisionDetector.test(_local5, _local9); }; _local7++; }; _local8 = _arg1.constraints.length; _local7 = 0; while (_local7 < _local8) { _local10 = _arg1.constraints[_local7]; if (((_local10.collidable) && (!(_local10.isConnectedTo(_local5))))){ _local10.scp.updatePosition(); CollisionDetector.test(_local5, _local10.scp); }; _local7++; }; }; _local3++; }; var _local4:int = _constraints.length; _local3 = 0; while (_local3 < _local4) { _local11 = _constraints[_local3]; if (!_local11.collidable){ } else { _local6 = _arg1.particles.length; _local12 = 0; while (_local12 < _local6) { _local9 = _arg1.particles[_local12]; if (((_local9.collidable) && (!(_local11.isConnectedTo(_local9))))){ _local11.scp.updatePosition(); CollisionDetector.test(_local9, _local11.scp); }; _local12++; }; }; _local3++; }; } public function get sprite():Sprite{ if (_sprite != null){ return (_sprite); }; if (APEngine.container == null){ throw (new Error("The container property of the APEngine class has not been set")); }; _sprite = new Sprite(); APEngine.container.addChild(_sprite); return (_sprite); } function checkInternalCollisions():void{ var _local3:AbstractParticle; var _local4:int; var _local5:int; var _local6:int; var _local7:AbstractParticle; var _local8:SpringConstraint; var _local1:int = _particles.length; var _local2:int; while (_local2 < _local1) { _local3 = _particles[_local2]; if (!_local3.collidable){ } else { _local4 = (_local2 + 1); while (_local4 < _local1) { _local7 = _particles[_local4]; if (_local7.collidable){ CollisionDetector.test(_local3, _local7); }; _local4++; }; _local5 = _constraints.length; _local6 = 0; while (_local6 < _local5) { _local8 = _constraints[_local6]; if (((_local8.collidable) && (!(_local8.isConnectedTo(_local3))))){ _local8.scp.updatePosition(); CollisionDetector.test(_local3, _local8.scp); }; _local6++; }; }; _local2++; }; } public function addParticle(_arg1:AbstractParticle):void{ particles.push(_arg1); if (isParented){ _arg1.init(); }; } public function init():void{ var _local1:int; while (_local1 < particles.length) { particles[_local1].init(); _local1++; }; _local1 = 0; while (_local1 < constraints.length) { constraints[_local1].init(); _local1++; }; } function satisfyConstraints():void{ var _local3:AbstractConstraint; var _local1:int = _constraints.length; var _local2:int; while (_local2 < _local1) { _local3 = _constraints[_local2]; _local3.resolve(); _local2++; }; } function get isParented():Boolean{ return (_isParented); } public function paint():void{ var _local1:AbstractParticle; var _local4:SpringConstraint; var _local2:int = _particles.length; var _local3:int; while (_local3 < _local2) { _local1 = _particles[_local3]; if (((!(_local1.fixed)) || (_local1.alwaysRepaint))){ _local1.paint(); }; _local3++; }; _local2 = _constraints.length; _local3 = 0; while (_local3 < _local2) { _local4 = _constraints[_local3]; if (((!(_local4.fixed)) || (_local4.alwaysRepaint))){ _local4.paint(); }; _local3++; }; } public function addConstraint(_arg1:AbstractConstraint):void{ constraints.push(_arg1); if (isParented){ _arg1.init(); }; } function set isParented(_arg1:Boolean):void{ _isParented = _arg1; } public function removeParticle(_arg1:AbstractParticle):void{ var _local2:int = particles.indexOf(_arg1); if (_local2 == -1){ return; }; particles.splice(_local2, 1); _arg1.cleanup(); } public function cleanup():void{ var _local1:int; while (_local1 < particles.length) { particles[_local1].cleanup(); _local1++; }; _local1 = 0; while (_local1 < constraints.length) { constraints[_local1].cleanup(); _local1++; }; } public function get particles():Array{ return (_particles); } function integrate(_arg1:Number):void{ var _local4:AbstractParticle; var _local2:int = _particles.length; var _local3:int; while (_local3 < _local2) { _local4 = _particles[_local3]; _local4.update(_arg1); _local3++; }; } public function get constraints():Array{ return (_constraints); } } }//package org.cove.ape
Section 24
//AbstractConstraint (org.cove.ape.AbstractConstraint) package org.cove.ape { import flash.utils.*; public class AbstractConstraint extends AbstractItem { private var _stiffness:Number; public function AbstractConstraint(_arg1:Number){ if (getQualifiedClassName(this) == "org.cove.ape::AbstractConstraint"){ throw (new ArgumentError("AbstractConstraint can't be instantiated directly")); }; this.stiffness = _arg1; setStyle(); } function resolve():void{ } public function set stiffness(_arg1:Number):void{ _stiffness = _arg1; } public function get stiffness():Number{ return (_stiffness); } } }//package org.cove.ape
Section 25
//AbstractItem (org.cove.ape.AbstractItem) package org.cove.ape { import flash.display.*; public class AbstractItem { var lineAlpha:Number; var lineColor:uint; var displayObjectOffset:Vector; var lineThickness:Number; var displayObject:DisplayObject; var fillAlpha:Number; private var _sprite:Sprite; var fillColor:uint; private var _visible:Boolean; private var _alwaysRepaint:Boolean; var displayObjectRotation:Number; public function AbstractItem(){ _visible = true; _alwaysRepaint = false; } public function setLine(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1):void{ lineThickness = _arg1; lineColor = _arg2; lineAlpha = _arg3; } public function set visible(_arg1:Boolean):void{ _visible = _arg1; sprite.visible = _arg1; } public function setFill(_arg1:uint=0xFFFFFF, _arg2:Number=1):void{ fillColor = _arg1; fillAlpha = _arg2; } public function init():void{ } public function get sprite():Sprite{ if (_sprite != null){ return (_sprite); }; if (APEngine.container == null){ throw (new Error("The container property of the APEngine class has not been set")); }; _sprite = new Sprite(); APEngine.container.addChild(_sprite); return (_sprite); } public function paint():void{ } public function cleanup():void{ sprite.graphics.clear(); var _local1:int; while (_local1 < sprite.numChildren) { sprite.removeChildAt(_local1); _local1++; }; } public function setStyle(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1, _arg4:uint=0xFFFFFF, _arg5:Number=1):void{ setLine(_arg1, _arg2, _arg3); setFill(_arg4, _arg5); } public function get visible():Boolean{ return (_visible); } final public function set alwaysRepaint(_arg1:Boolean):void{ _alwaysRepaint = _arg1; } final public function get alwaysRepaint():Boolean{ return (_alwaysRepaint); } } }//package org.cove.ape
Section 26
//AbstractParticle (org.cove.ape.AbstractParticle) package org.cove.ape { import flash.display.*; import flash.utils.*; public class AbstractParticle extends AbstractItem { private var _collidable:Boolean; private var _center:Vector; private var collision:Collision; var prev:Vector; private var _kfr:Number; var interval:Interval; private var _invMass:Number; var curr:Vector; private var _mass:Number; private var temp:Vector; private var _friction:Number; var samp:Vector; private var _multisample:int; private var _fixed:Boolean; private var forces:Vector; public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number){ if (getQualifiedClassName(this) == "org.cove.ape::AbstractParticle"){ throw (new ArgumentError("AbstractParticle can't be instantiated directly")); }; interval = new Interval(0, 0); curr = new Vector(_arg1, _arg2); prev = new Vector(_arg1, _arg2); samp = new Vector(); temp = new Vector(); fixed = _arg3; forces = new Vector(); collision = new Collision(new Vector(), new Vector()); collidable = true; this.mass = _arg4; this.elasticity = _arg5; this.friction = _arg6; setStyle(); _center = new Vector(); _multisample = 0; } function get invMass():Number{ return ((fixed) ? 0 : _invMass); } public function get px():Number{ return (curr.x); } public function get py():Number{ return (curr.y); } public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{ displayObject = _arg1; displayObjectRotation = _arg4; displayObjectOffset = new Vector(_arg2, _arg3); } public function set px(_arg1:Number):void{ curr.x = _arg1; prev.x = _arg1; } public function set py(_arg1:Number):void{ curr.y = _arg1; prev.y = _arg1; } function getComponents(_arg1:Vector):Collision{ var _local2:Vector = velocity; var _local3:Number = _arg1.dot(_local2); collision.vn = _arg1.mult(_local3); collision.vt = _local2.minus(collision.vn); return (collision); } public function get mass():Number{ return (_mass); } function initDisplay():void{ displayObject.x = displayObjectOffset.x; displayObject.y = displayObjectOffset.y; displayObject.rotation = displayObjectRotation; sprite.addChild(displayObject); } public function get multisample():int{ return (_multisample); } public function get position():Vector{ return (new Vector(curr.x, curr.y)); } function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{ curr.plusEquals(_arg1); velocity = _arg2; } public function get elasticity():Number{ return (_kfr); } public function set velocity(_arg1:Vector):void{ prev = curr.minus(_arg1); } public function addMasslessForce(_arg1:Vector):void{ forces.plusEquals(_arg1); } public function set collidable(_arg1:Boolean):void{ _collidable = _arg1; } public function set multisample(_arg1:int):void{ _multisample = _arg1; } public function addForce(_arg1:Vector):void{ forces.plusEquals(_arg1.mult(invMass)); } public function set position(_arg1:Vector):void{ curr.copy(_arg1); prev.copy(_arg1); } public function get center():Vector{ _center.setTo(px, py); return (_center); } public function update(_arg1:Number):void{ if (fixed){ return; }; addForce(APEngine.force); addMasslessForce(APEngine.masslessForce); temp.copy(curr); var _local2:Vector = velocity.plus(forces.multEquals(_arg1)); curr.plusEquals(_local2.multEquals(APEngine.damping)); prev.copy(temp); forces.setTo(0, 0); } public function get velocity():Vector{ return (curr.minus(prev)); } public function get collidable():Boolean{ return (_collidable); } public function set mass(_arg1:Number):void{ if (_arg1 <= 0){ throw (new ArgumentError("mass may not be set <= 0")); }; _mass = _arg1; _invMass = (1 / _mass); } public function set fixed(_arg1:Boolean):void{ _fixed = _arg1; } public function set elasticity(_arg1:Number):void{ _kfr = _arg1; } public function set friction(_arg1:Number):void{ if ((((_arg1 < 0)) || ((_arg1 > 1)))){ throw (new ArgumentError("Legal friction must be >= 0 and <=1")); }; _friction = _arg1; } public function get friction():Number{ return (_friction); } public function get fixed():Boolean{ return (_fixed); } } }//package org.cove.ape
Section 27
//APEngine (org.cove.ape.APEngine) package org.cove.ape { import flash.display.*; public final class APEngine { private static var _container:DisplayObjectContainer; private static var _damping:Number; private static var _constraintCollisionCycles:int; private static var groups:Array; static var masslessForce:Vector; private static var _constraintCycles:int; static var force:Vector; private static var timeStep:Number; private static var numGroups:int; public static function get container():DisplayObjectContainer{ return (_container); } public static function get constraintCollisionCycles():int{ return (_constraintCollisionCycles); } public static function set damping(_arg1:Number):void{ _damping = _arg1; } public static function step():void{ integrate(); var _local1:int; while (_local1 < _constraintCycles) { satisfyConstraints(); _local1++; }; var _local2:int; while (_local2 < _constraintCollisionCycles) { satisfyConstraints(); checkCollisions(); _local2++; }; } public static function init(_arg1:Number=0.25):void{ timeStep = (_arg1 * _arg1); numGroups = 0; groups = new Array(); force = new Vector(); masslessForce = new Vector(0, 0); damping = 1; _constraintCycles = 0; _constraintCollisionCycles = 1; } public static function get constraintCycles():int{ return (_constraintCycles); } public static function set constraintCollisionCycles(_arg1:int):void{ _constraintCollisionCycles = _arg1; } public static function set constraintCycles(_arg1:int):void{ _constraintCycles = _arg1; } public static function addForce(_arg1:Vector):void{ force.plusEquals(_arg1); } public static function get damping():Number{ return (_damping); } public static function set container(_arg1:DisplayObjectContainer):void{ _container = _arg1; } public static function addGroup(_arg1:Group):void{ groups.push(_arg1); _arg1.isParented = true; numGroups++; _arg1.init(); } public static function removeGroup(_arg1:Group):void{ var _local2:int = groups.indexOf(_arg1); if (_local2 == -1){ return; }; groups.splice(_local2, 1); _arg1.isParented = false; numGroups--; _arg1.cleanup(); } public static function paint():void{ var _local2:Group; var _local1:int; while (_local1 < numGroups) { _local2 = groups[_local1]; _local2.paint(); _local1++; }; } private static function checkCollisions():void{ var _local2:Group; var _local1:int; while (_local1 < numGroups) { _local2 = groups[_local1]; _local2.checkCollisions(); _local1++; }; } private static function integrate():void{ var _local2:Group; var _local1:int; while (_local1 < numGroups) { _local2 = groups[_local1]; _local2.integrate(timeStep); _local1++; }; } private static function satisfyConstraints():void{ var _local2:Group; var _local1:int; while (_local1 < numGroups) { _local2 = groups[_local1]; _local2.satisfyConstraints(); _local1++; }; } public static function addMasslessForce(_arg1:Vector):void{ masslessForce.plusEquals(_arg1); } } }//package org.cove.ape
Section 28
//CircleParticle (org.cove.ape.CircleParticle) package org.cove.ape { public class CircleParticle extends AbstractParticle { private var _radius:Number; public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0){ super(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7); _radius = _arg3; } override public function init():void{ cleanup(); if (displayObject != null){ initDisplay(); } else { sprite.graphics.clear(); sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha); sprite.graphics.beginFill(fillColor, fillAlpha); sprite.graphics.drawCircle(0, 0, radius); sprite.graphics.endFill(); }; paint(); } public function set radius(_arg1:Number):void{ _radius = _arg1; } function getProjection(_arg1:Vector):Interval{ var _local2:Number = samp.dot(_arg1); interval.min = (_local2 - _radius); interval.max = (_local2 + _radius); return (interval); } function getIntervalY():Interval{ interval.min = (curr.y - _radius); interval.max = (curr.y + _radius); return (interval); } public function get radius():Number{ return (_radius); } function getIntervalX():Interval{ interval.min = (curr.x - _radius); interval.max = (curr.x + _radius); return (interval); } override public function paint():void{ sprite.x = curr.x; sprite.y = curr.y; } } }//package org.cove.ape
Section 29
//Collision (org.cove.ape.Collision) package org.cove.ape { import org.cove.ape.*; final class Collision { var vn:Vector; var vt:Vector; function Collision(_arg1:Vector, _arg2:Vector){ this.vn = _arg1; this.vt = _arg2; } } }//package org.cove.ape
Section 30
//CollisionDetector (org.cove.ape.CollisionDetector) package org.cove.ape { import org.cove.ape.*; final class CollisionDetector { private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle):Boolean{ var _local3:Vector; var _local8:Vector; var _local9:Number; var _local10:Vector; var _local11:Number; var _local4:Number = Number.POSITIVE_INFINITY; var _local5:Array = new Array(2); var _local6:int; while (_local6 < 2) { _local8 = _arg1.axes[_local6]; _local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8)); if (_local9 == 0){ return (false); }; if (Math.abs(_local9) < Math.abs(_local4)){ _local3 = _local8; _local4 = _local9; }; _local5[_local6] = _local9; _local6++; }; var _local7:Number = _arg2.radius; if ((((Math.abs(_local5[0]) < _local7)) && ((Math.abs(_local5[1]) < _local7)))){ _local10 = closestVertexOnOBB(_arg2.samp, _arg1); _local3 = _local10.minus(_arg2.samp); _local11 = _local3.magnitude(); _local4 = (_local7 - _local11); if (_local4 > 0){ _local3.divEquals(_local11); } else { return (false); }; }; CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4); return (true); } static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):void{ if (((_arg1.fixed) && (_arg2.fixed))){ return; }; if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){ normVsNorm(_arg1, _arg2); } else { if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){ sampVsNorm(_arg1, _arg2); } else { if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){ sampVsNorm(_arg2, _arg1); } else { if (_arg1.multisample == _arg2.multisample){ sampVsSamp(_arg1, _arg2); } else { normVsNorm(_arg1, _arg2); }; }; }; }; } private static function testIntervals(_arg1:Interval, _arg2:Interval):Number{ if (_arg1.max < _arg2.min){ return (0); }; if (_arg2.max < _arg1.min){ return (0); }; var _local3:Number = (_arg2.max - _arg1.min); var _local4:Number = (_arg2.min - _arg1.max); return (((Math.abs(_local3))<Math.abs(_local4)) ? _local3 : _local4); } private static function normVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{ _arg1.samp.copy(_arg1.curr); _arg2.samp.copy(_arg2.curr); testTypes(_arg1, _arg2); } private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle):Boolean{ var _local3:Number = testIntervals(_arg1.getIntervalX(), _arg2.getIntervalX()); if (_local3 == 0){ return (false); }; var _local4:Number = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY()); if (_local4 == 0){ return (false); }; var _local5:Vector = _arg1.samp.minus(_arg2.samp); var _local6:Number = _local5.magnitude(); var _local7:Number = ((_arg1.radius + _arg2.radius) - _local6); if (_local7 > 0){ _local5.divEquals(_local6); CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local5, _local7); return (true); }; return (false); } private static function testTypes(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{ if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){ return (testOBBvsOBB((_arg1 as RectangleParticle), (_arg2 as RectangleParticle))); }; if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){ return (testCirclevsCircle((_arg1 as CircleParticle), (_arg2 as CircleParticle))); }; if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){ return (testOBBvsCircle((_arg1 as RectangleParticle), (_arg2 as CircleParticle))); }; if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){ return (testOBBvsCircle((_arg2 as RectangleParticle), (_arg1 as CircleParticle))); }; return (false); } private static function sampVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{ var _local3:Number = (1 / (_arg1.multisample + 1)); var _local4:Number = _local3; _arg2.samp.copy(_arg2.curr); var _local5:int; while (_local5 <= _arg1.multisample) { _arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y)))); if (testTypes(_arg1, _arg2)){ return; }; _local4 = (_local4 + _local3); _local5++; }; } private static function closestVertexOnOBB(_arg1:Vector, _arg2:RectangleParticle):Vector{ var _local6:Number; var _local3:Vector = _arg1.minus(_arg2.samp); var _local4:Vector = new Vector(_arg2.samp.x, _arg2.samp.y); var _local5:int; while (_local5 < 2) { _local6 = _local3.dot(_arg2.axes[_local5]); if (_local6 >= 0){ _local6 = _arg2.extents[_local5]; } else { if (_local6 < 0){ _local6 = -(_arg2.extents[_local5]); }; }; _local4.plusEquals(_arg2.axes[_local5].mult(_local6)); _local5++; }; return (_local4); } private static function testOBBvsOBB(_arg1:RectangleParticle, _arg2:RectangleParticle):Boolean{ var _local3:Vector; var _local6:Vector; var _local7:Number; var _local8:Vector; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Boolean; var _local4:Number = Number.POSITIVE_INFINITY; var _local5:int; while (_local5 < 2) { _local6 = _arg1.axes[_local5]; _local7 = testIntervals(_arg1.getProjection(_local6), _arg2.getProjection(_local6)); if (_local7 == 0){ return (false); }; _local8 = _arg2.axes[_local5]; _local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8)); if (_local9 == 0){ return (false); }; _local10 = Math.abs(_local7); _local11 = Math.abs(_local9); if ((((_local10 < Math.abs(_local4))) || ((_local11 < Math.abs(_local4))))){ _local12 = (_local10 < _local11); _local3 = (_local12) ? _local6 : _local8; _local4 = (_local12) ? _local7 : _local9; }; _local5++; }; CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4); return (true); } private static function sampVsSamp(_arg1:AbstractParticle, _arg2:AbstractParticle):void{ var _local3:Number = (1 / (_arg1.multisample + 1)); var _local4:Number = _local3; var _local5:int; while (_local5 <= _arg1.multisample) { _arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y)))); _arg2.samp.setTo((_arg2.prev.x + (_local4 * (_arg2.curr.x - _arg2.prev.x))), (_arg2.prev.y + (_local4 * (_arg2.curr.y - _arg2.prev.y)))); if (testTypes(_arg1, _arg2)){ return; }; _local4 = (_local4 + _local3); _local5++; }; } } }//package org.cove.ape
Section 31
//CollisionResolver (org.cove.ape.CollisionResolver) package org.cove.ape { import org.cove.ape.*; final class CollisionResolver { static function resolveParticleParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Vector, _arg4:Number):void{ _arg1.curr.copy(_arg1.samp); _arg2.curr.copy(_arg2.samp); var _local5:Vector = _arg3.mult(_arg4); var _local6:Number = (_arg1.elasticity + _arg2.elasticity); var _local7:Number = (_arg1.invMass + _arg2.invMass); var _local8:Number = clamp((1 - (_arg1.friction + _arg2.friction)), 0, 1); var _local9:Collision = _arg1.getComponents(_arg3); var _local10:Collision = _arg2.getComponents(_arg3); var _local11:Vector = _local10.vn.mult(((_local6 + 1) * _arg1.invMass)).plus(_local9.vn.mult((_arg2.invMass - (_local6 * _arg1.invMass)))).divEquals(_local7); var _local12:Vector = _local9.vn.mult(((_local6 + 1) * _arg2.invMass)).plus(_local10.vn.mult((_arg1.invMass - (_local6 * _arg2.invMass)))).divEquals(_local7); _local9.vt.multEquals(_local8); _local10.vt.multEquals(_local8); var _local13:Vector = _local5.mult((_arg1.invMass / _local7)); var _local14:Vector = _local5.mult((-(_arg2.invMass) / _local7)); _local11.plusEquals(_local9.vt); _local12.plusEquals(_local10.vt); if (!_arg1.fixed){ _arg1.resolveCollision(_local13, _local11, _arg3, _arg4, -1, _arg2); }; if (!_arg2.fixed){ _arg2.resolveCollision(_local14, _local12, _arg3, _arg4, 1, _arg1); }; } static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ if (_arg1 > _arg3){ return (_arg3); }; if (_arg1 < _arg2){ return (_arg2); }; return (_arg1); } } }//package org.cove.ape
Section 32
//Composite (org.cove.ape.Composite) package org.cove.ape { public class Composite extends AbstractCollection { private var delta:Vector; public function Composite(){ delta = new Vector(); } public function rotateByAngle(_arg1:Number, _arg2:Vector):void{ var _local3:Number = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY); rotateByRadian(_local3, _arg2); } public function rotateByRadian(_arg1:Number, _arg2:Vector):void{ var _local3:AbstractParticle; var _local7:Number; var _local8:Number; var _local4:Array = particles; var _local5:int = _local4.length; var _local6:int; while (_local6 < _local5) { _local3 = _local4[_local6]; _local7 = _local3.center.distance(_arg2); _local8 = (getRelativeAngle(_arg2, _local3.center) + _arg1); _local3.px = ((Math.cos(_local8) * _local7) + _arg2.x); _local3.py = ((Math.sin(_local8) * _local7) + _arg2.y); _local6++; }; } public function get fixed():Boolean{ var _local1:int; while (_local1 < particles.length) { if (!particles[_local1].fixed){ return (false); }; _local1++; }; return (true); } private function getRelativeAngle(_arg1:Vector, _arg2:Vector):Number{ delta.setTo((_arg2.x - _arg1.x), (_arg2.y - _arg1.y)); return (Math.atan2(delta.y, delta.x)); } public function set fixed(_arg1:Boolean):void{ var _local2:int; while (_local2 < particles.length) { particles[_local2].fixed = _arg1; _local2++; }; } } }//package org.cove.ape
Section 33
//Group (org.cove.ape.Group) package org.cove.ape { public class Group extends AbstractCollection { private var _composites:Array; private var _collisionList:Array; private var _collideInternal:Boolean; public function Group(_arg1:Boolean=false){ _composites = new Array(); _collisionList = new Array(); this.collideInternal = _arg1; } public function addCollidableList(_arg1:Array):void{ var _local3:Group; var _local2:int; while (_local2 < _arg1.length) { _local3 = _arg1[_local2]; collisionList.push(_local3); _local2++; }; } function checkCollisions():void{ var _local3:Group; if (collideInternal){ checkCollisionGroupInternal(); }; var _local1:int = collisionList.length; var _local2:int; while (_local2 < _local1) { _local3 = collisionList[_local2]; checkCollisionVsGroup(_local3); _local2++; }; } public function removeComposite(_arg1:Composite):void{ var _local2:int = composites.indexOf(_arg1); if (_local2 == -1){ return; }; composites.splice(_local2, 1); _arg1.isParented = false; _arg1.cleanup(); } override public function cleanup():void{ super.cleanup(); var _local1:int; while (_local1 < composites.length) { composites[_local1].cleanup(); _local1++; }; } public function removeCollidable(_arg1:Group):void{ var _local2:int = collisionList.indexOf(_arg1); if (_local2 == -1){ return; }; collisionList.splice(_local2, 1); } public function addComposite(_arg1:Composite):void{ composites.push(_arg1); _arg1.isParented = true; if (isParented){ _arg1.init(); }; } public function addCollidable(_arg1:Group):void{ collisionList.push(_arg1); } override function integrate(_arg1:Number):void{ var _local4:Composite; super.integrate(_arg1); var _local2:int = _composites.length; var _local3:int; while (_local3 < _local2) { _local4 = _composites[_local3]; _local4.integrate(_arg1); _local3++; }; } public function get composites():Array{ return (_composites); } override public function init():void{ super.init(); var _local1:int; while (_local1 < composites.length) { composites[_local1].init(); _local1++; }; } override public function getAll():Array{ return (particles.concat(constraints).concat(composites)); } public function get collisionList():Array{ return (_collisionList); } private function checkCollisionGroupInternal():void{ var _local3:Composite; var _local4:int; var _local5:Composite; checkInternalCollisions(); var _local1:int = _composites.length; var _local2:int; while (_local2 < _local1) { _local3 = _composites[_local2]; _local3.checkCollisionsVsCollection(this); _local4 = (_local2 + 1); while (_local4 < _local1) { _local5 = _composites[_local4]; _local3.checkCollisionsVsCollection(_local5); _local4++; }; _local2++; }; } override function satisfyConstraints():void{ var _local3:Composite; super.satisfyConstraints(); var _local1:int = _composites.length; var _local2:int; while (_local2 < _local1) { _local3 = _composites[_local2]; _local3.satisfyConstraints(); _local2++; }; } public function get collideInternal():Boolean{ return (_collideInternal); } public function set collideInternal(_arg1:Boolean):void{ _collideInternal = _arg1; } override public function paint():void{ var _local3:Composite; super.paint(); var _local1:int = _composites.length; var _local2:int; while (_local2 < _local1) { _local3 = _composites[_local2]; _local3.paint(); _local2++; }; } private function checkCollisionVsGroup(_arg1:Group):void{ var _local5:Composite; var _local6:int; var _local7:Composite; checkCollisionsVsCollection(_arg1); var _local2:int = _composites.length; var _local3:int = _arg1.composites.length; var _local4:int; while (_local4 < _local2) { _local5 = _composites[_local4]; _local5.checkCollisionsVsCollection(_arg1); _local6 = 0; while (_local6 < _local3) { _local7 = _arg1.composites[_local6]; _local5.checkCollisionsVsCollection(_local7); _local6++; }; _local4++; }; _local6 = 0; while (_local6 < _local3) { _local7 = _arg1.composites[_local6]; checkCollisionsVsCollection(_local7); _local6++; }; } } }//package org.cove.ape
Section 34
//Interval (org.cove.ape.Interval) package org.cove.ape { final class Interval { var min:Number; var max:Number; function Interval(_arg1:Number, _arg2:Number){ this.min = _arg1; this.max = _arg2; } function toString():String{ return (((min + " : ") + max)); } } }//package org.cove.ape
Section 35
//MathUtil (org.cove.ape.MathUtil) package org.cove.ape { final class MathUtil { static var ONE_EIGHTY_OVER_PI:Number = 57.2957795130823; static var PI_OVER_ONE_EIGHTY:Number = 0.0174532925199433; static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ if (_arg1 < _arg2){ return (_arg2); }; if (_arg1 > _arg3){ return (_arg3); }; return (_arg1); } static function sign(_arg1:Number):int{ if (_arg1 < 0){ return (-1); }; return (1); } } }//package org.cove.ape
Section 36
//RectangleParticle (org.cove.ape.RectangleParticle) package org.cove.ape { public class RectangleParticle extends AbstractParticle { private var _axes:Array; private var _radian:Number; private var _extents:Array; public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Boolean=false, _arg7:Number=1, _arg8:Number=0.3, _arg9:Number=0){ super(_arg1, _arg2, _arg6, _arg7, _arg8, _arg9); _extents = new Array((_arg3 / 2), (_arg4 / 2)); _axes = new Array(new Vector(0, 0), new Vector(0, 0)); radian = _arg5; } public function get radian():Number{ return (_radian); } public function set radian(_arg1:Number):void{ _radian = _arg1; setAxes(_arg1); } function get axes():Array{ return (_axes); } public function set angle(_arg1:Number):void{ radian = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY); } function get extents():Array{ return (_extents); } public function set width(_arg1:Number):void{ _extents[0] = (_arg1 / 2); } public function get width():Number{ return ((_extents[0] * 2)); } public function set height(_arg1:Number):void{ _extents[1] = (_arg1 / 2); } override public function init():void{ var _local1:Number; var _local2:Number; cleanup(); if (displayObject != null){ initDisplay(); } else { _local1 = (extents[0] * 2); _local2 = (extents[1] * 2); sprite.graphics.clear(); sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha); sprite.graphics.beginFill(fillColor, fillAlpha); sprite.graphics.drawRect((-(_local1) / 2), (-(_local2) / 2), _local1, _local2); sprite.graphics.endFill(); }; paint(); } public function get height():Number{ return ((_extents[1] * 2)); } public function get angle():Number{ return ((radian * MathUtil.ONE_EIGHTY_OVER_PI)); } function getProjection(_arg1:Vector):Interval{ var _local2:Number = ((extents[0] * Math.abs(_arg1.dot(axes[0]))) + (extents[1] * Math.abs(_arg1.dot(axes[1])))); var _local3:Number = samp.dot(_arg1); interval.min = (_local3 - _local2); interval.max = (_local3 + _local2); return (interval); } override public function paint():void{ sprite.x = curr.x; sprite.y = curr.y; sprite.rotation = angle; } private function setAxes(_arg1:Number):void{ var _local2:Number = Math.sin(_arg1); var _local3:Number = Math.cos(_arg1); axes[0].x = _local3; axes[0].y = _local2; axes[1].x = -(_local2); axes[1].y = _local3; } } }//package org.cove.ape
Section 37
//RimParticle (org.cove.ape.RimParticle) package org.cove.ape { import org.cove.ape.*; class RimParticle { private var maxTorque:Number; var curr:Vector; var prev:Vector; private var av:Number; private var wr:Number; private var sp:Number; function RimParticle(_arg1:Number, _arg2:Number){ curr = new Vector(_arg1, 0); prev = new Vector(0, 0); sp = 0; av = 0; maxTorque = _arg2; wr = _arg1; } function get speed():Number{ return (sp); } function update(_arg1:Number):void{ sp = Math.max(-(maxTorque), Math.min(maxTorque, (sp + av))); var _local2:Number = -(curr.y); var _local3:Number = curr.x; var _local4:Number = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); _local2 = (_local2 / _local4); _local3 = (_local3 / _local4); curr.x = (curr.x + (sp * _local2)); curr.y = (curr.y + (sp * _local3)); var _local5:Number = prev.x; var _local6:Number = prev.y; var _local7:Number = (prev.x = curr.x); var _local8:Number = (prev.y = curr.y); curr.x = (curr.x + (APEngine.damping * (_local7 - _local5))); curr.y = (curr.y + (APEngine.damping * (_local8 - _local6))); var _local9:Number = Math.sqrt(((curr.x * curr.x) + (curr.y * curr.y))); var _local10:Number = ((_local9 - wr) / _local9); curr.x = (curr.x - (curr.x * _local10)); curr.y = (curr.y - (curr.y * _local10)); } function set speed(_arg1:Number):void{ sp = _arg1; } function set angularVelocity(_arg1:Number):void{ av = _arg1; } function get angularVelocity():Number{ return (av); } } }//package org.cove.ape
Section 38
//SpringConstraint (org.cove.ape.SpringConstraint) package org.cove.ape { import flash.display.*; public class SpringConstraint extends AbstractConstraint { private var _collidable:Boolean; private var p1:AbstractParticle; private var p2:AbstractParticle; private var _scp:SpringConstraintParticle; private var _restLength:Number; public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=1, _arg7:Boolean=false){ super(_arg3); this.p1 = _arg1; this.p2 = _arg2; checkParticlesLocation(); _restLength = currLength; setCollidable(_arg4, _arg5, _arg6, _arg7); } public function get fixed():Boolean{ return (((p1.fixed) && (p2.fixed))); } public function get rectScale():Number{ return (scp.rectScale); } public function set rectScale(_arg1:Number):void{ if (scp == null){ return; }; scp.rectScale = _arg1; } public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{ if (collidable){ scp.setDisplay(_arg1, _arg2, _arg3, _arg4); } else { displayObject = _arg1; displayObjectRotation = _arg4; displayObjectOffset = new Vector(_arg2, _arg3); }; } override public function init():void{ cleanup(); if (collidable){ scp.init(); } else { if (displayObject != null){ initDisplay(); }; }; paint(); } function initDisplay():void{ if (collidable){ scp.initDisplay(); } else { displayObject.x = displayObjectOffset.x; displayObject.y = displayObjectOffset.y; displayObject.rotation = displayObjectRotation; sprite.addChild(displayObject); }; } public function get angle():Number{ return ((radian * MathUtil.ONE_EIGHTY_OVER_PI)); } public function get center():Vector{ return (p1.curr.plus(p2.curr).divEquals(2)); } public function set rectHeight(_arg1:Number):void{ if (scp == null){ return; }; scp.rectHeight = _arg1; } public function get restLength():Number{ return (_restLength); } override public function paint():void{ var _local1:Vector; if (collidable){ scp.paint(); } else { if (displayObject != null){ _local1 = center; sprite.x = _local1.x; sprite.y = _local1.y; sprite.rotation = angle; } else { sprite.graphics.clear(); sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha); sprite.graphics.moveTo(p1.px, p1.py); sprite.graphics.lineTo(p2.px, p2.py); }; }; } function get scp():SpringConstraintParticle{ return (_scp); } public function get collidable():Boolean{ return (_collidable); } public function setCollidable(_arg1:Boolean, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{ _collidable = _arg1; _scp = null; if (_collidable){ _scp = new SpringConstraintParticle(p1, p2, this, _arg2, _arg3, _arg4); }; } public function isConnectedTo(_arg1:AbstractParticle):Boolean{ return ((((_arg1 == p1)) || ((_arg1 == p2)))); } public function get rectHeight():Number{ return (scp.rectHeight); } override function resolve():void{ if (((p1.fixed) && (p2.fixed))){ return; }; var _local1:Number = currLength; var _local2:Number = ((_local1 - restLength) / (_local1 * (p1.invMass + p2.invMass))); var _local3:Vector = delta.mult((_local2 * stiffness)); p1.curr.minusEquals(_local3.mult(p1.invMass)); p2.curr.plusEquals(_local3.mult(p2.invMass)); } public function set fixedEndLimit(_arg1:Number):void{ if (scp == null){ return; }; scp.fixedEndLimit = _arg1; } public function get radian():Number{ var _local1:Vector = delta; return (Math.atan2(_local1.y, _local1.x)); } public function set restLength(_arg1:Number):void{ if (_arg1 <= 0){ throw (new ArgumentError("restLength must be greater than 0")); }; _restLength = _arg1; } public function get currLength():Number{ return (p1.curr.distance(p2.curr)); } public function get fixedEndLimit():Number{ return (scp.fixedEndLimit); } private function checkParticlesLocation():void{ if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){ p2.curr.x = (p2.curr.x + 0.0001); }; } function get delta():Vector{ return (p1.curr.minus(p2.curr)); } } }//package org.cove.ape
Section 39
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle) package org.cove.ape { import flash.display.*; import org.cove.ape.*; class SpringConstraintParticle extends RectangleParticle { private var p1:AbstractParticle; private var lambda:Vector; private var p2:AbstractParticle; private var _rectHeight:Number; private var avgVelocity:Vector; private var rca:Vector; private var rcb:Vector; private var _rectScale:Number; private var parent:SpringConstraint; private var scaleToLength:Boolean; private var s:Number; private var _fixedEndLimit:Number; function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:SpringConstraint, _arg4:Number, _arg5:Number, _arg6:Boolean){ super(0, 0, 0, 0, 0, false); this.p1 = _arg1; this.p2 = _arg2; lambda = new Vector(0, 0); avgVelocity = new Vector(0, 0); parent = _arg3; this.rectScale = _arg5; this.rectHeight = _arg4; this.scaleToLength = _arg6; fixedEndLimit = 0; rca = new Vector(); rcb = new Vector(); } private function setCorners(_arg1:RectangleParticle, _arg2:int):void{ var _local3:Number = _arg1.curr.x; var _local4:Number = _arg1.curr.y; var _local5:Array = _arg1.axes; var _local6:Array = _arg1.extents; var _local7:Number = (_local5[0].x * _local6[0]); var _local8:Number = (_local5[0].y * _local6[0]); var _local9:Number = (_local5[1].x * _local6[1]); var _local10:Number = (_local5[1].y * _local6[1]); var _local11:Number = (_local7 - _local9); var _local12:Number = (_local8 - _local10); var _local13:Number = (_local7 + _local9); var _local14:Number = (_local8 + _local10); if (_arg2 == 0){ rca.x = (_local3 - _local13); rca.y = (_local4 - _local14); rcb.x = (_local3 + _local11); rcb.y = (_local4 + _local12); } else { if (_arg2 == 1){ rca.x = (_local3 + _local11); rca.y = (_local4 + _local12); rcb.x = (_local3 + _local13); rcb.y = (_local4 + _local14); } else { if (_arg2 == 2){ rca.x = (_local3 + _local13); rca.y = (_local4 + _local14); rcb.x = (_local3 - _local11); rcb.y = (_local4 - _local12); } else { if (_arg2 == 3){ rca.x = (_local3 - _local11); rca.y = (_local4 - _local12); rcb.x = (_local3 - _local13); rcb.y = (_local4 - _local14); }; }; }; }; } override function get invMass():Number{ if (((p1.fixed) && (p2.fixed))){ return (0); }; return ((1 / ((p1.mass + p2.mass) / 2))); } function get rectScale():Number{ return (_rectScale); } function set rectScale(_arg1:Number):void{ _rectScale = _arg1; } override public function get friction():Number{ return (((p1.friction + p2.friction) / 2)); } override public function init():void{ var _local1:Sprite; var _local2:Number; var _local3:Number; if (displayObject != null){ initDisplay(); } else { _local1 = new Sprite(); parent.sprite.addChild(_local1); _local1.name = "inner"; _local2 = (parent.currLength * rectScale); _local3 = rectHeight; _local1.graphics.clear(); _local1.graphics.lineStyle(parent.lineThickness, parent.lineColor, parent.lineAlpha); _local1.graphics.beginFill(parent.fillColor, parent.fillAlpha); _local1.graphics.drawRect((-(_local2) / 2), (-(_local3) / 2), _local2, _local3); _local1.graphics.endFill(); }; paint(); } override function initDisplay():void{ displayObject.x = displayObjectOffset.x; displayObject.y = displayObjectOffset.y; displayObject.rotation = displayObjectRotation; var _local1:Sprite = new Sprite(); _local1.name = "inner"; _local1.addChild(displayObject); parent.sprite.addChild(_local1); } function set rectHeight(_arg1:Number):void{ _rectHeight = _arg1; } function updatePosition():void{ var _local1:Vector = parent.center; curr.setTo(_local1.x, _local1.y); width = (scaleToLength) ? (parent.currLength * rectScale) : (parent.restLength * rectScale); height = rectHeight; radian = parent.radian; } override public function get velocity():Vector{ var _local1:Vector = p1.velocity; var _local2:Vector = p2.velocity; avgVelocity.setTo(((_local1.x + _local2.x) / 2), ((_local1.y + _local2.y) / 2)); return (avgVelocity); } override public function paint():void{ var _local1:Vector = parent.center; var _local2:Sprite = parent.sprite; if (scaleToLength){ _local2.getChildByName("inner").width = (parent.currLength * rectScale); } else { if (displayObject != null){ _local2.getChildByName("inner").width = (parent.restLength * rectScale); }; }; _local2.x = _local1.x; _local2.y = _local1.y; _local2.rotation = parent.angle; } private function getContactPointParam(_arg1:AbstractParticle):Number{ var _local2:Number; var _local3:Number; var _local4:Array; var _local5:Number; var _local6:int; var _local7:Number; if ((_arg1 is CircleParticle)){ _local2 = closestParamPoint(_arg1.curr); } else { if ((_arg1 is RectangleParticle)){ _local4 = new Array(4); _local5 = Number.POSITIVE_INFINITY; _local6 = 0; while (_local6 < 4) { setCorners((_arg1 as RectangleParticle), _local6); _local7 = closestPtSegmentSegment(); if (_local7 < _local5){ _local5 = _local7; _local3 = _local6; _local4[_local6] = s; }; _local6++; }; _local2 = _local4[_local3]; }; }; return (_local2); } function set fixedEndLimit(_arg1:Number):void{ _fixedEndLimit = _arg1; } private function closestPtSegmentSegment():Number{ var _local8:Number; var _local1:Vector = p1.curr; var _local2:Vector = p2.curr; var _local3:Vector = rca; var _local4:Vector = rcb; var _local5:Vector = _local2.minus(_local1); var _local6:Vector = _local4.minus(_local3); var _local7:Vector = _local1.minus(_local3); var _local9:Number = _local5.dot(_local5); var _local10:Number = _local6.dot(_local6); var _local11:Number = _local6.dot(_local7); var _local12:Number = _local5.dot(_local7); var _local13:Number = _local5.dot(_local6); var _local14:Number = ((_local9 * _local10) - (_local13 * _local13)); if (_local14 != 0){ s = MathUtil.clamp((((_local13 * _local11) - (_local12 * _local10)) / _local14), 0, 1); } else { s = 0.5; }; _local8 = (((_local13 * s) + _local11) / _local10); if (_local8 < 0){ _local8 = 0; s = MathUtil.clamp((-(_local12) / _local9), 0, 1); } else { if (_local8 > 0){ _local8 = 1; s = MathUtil.clamp(((_local13 - _local12) / _local9), 0, 1); }; }; var _local15:Vector = _local1.plus(_local5.mult(s)); var _local16:Vector = _local3.plus(_local6.mult(_local8)); var _local17:Vector = _local15.minus(_local16); return (_local15.minus(_local16).dot(_local17)); } override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{ var _local10:Number; var _local11:AbstractParticle; var _local7:Number = getContactPointParam(_arg6); var _local8:Number = (1 - _local7); var _local9:Number = _local7; if (p1.fixed){ if (_local9 <= fixedEndLimit){ return; }; lambda.setTo((_arg1.x / _local9), (_arg1.y / _local9)); p2.curr.plusEquals(lambda); p2.velocity = _arg2; } else { if (p2.fixed){ if (_local8 <= fixedEndLimit){ return; }; lambda.setTo((_arg1.x / _local8), (_arg1.y / _local8)); p1.curr.plusEquals(lambda); p1.velocity = _arg2; } else { _local10 = ((_local8 * _local8) + (_local9 * _local9)); if (_local10 == 0){ return; }; lambda.setTo((_arg1.x / _local10), (_arg1.y / _local10)); p1.curr.plusEquals(lambda.mult(_local8)); p2.curr.plusEquals(lambda.mult(_local9)); if (_local7 == 0.5){ p1.velocity = _arg2; p2.velocity = _arg2; } else { _local11 = ((_local7)<0.5) ? p1 : p2; _local11.velocity = _arg2; }; }; }; } function get rectHeight():Number{ return (_rectHeight); } function get fixedEndLimit():Number{ return (_fixedEndLimit); } override public function get elasticity():Number{ return (((p1.elasticity + p2.elasticity) / 2)); } override public function get mass():Number{ return (((p1.mass + p2.mass) / 2)); } private function closestParamPoint(_arg1:Vector):Number{ var _local2:Vector = p2.curr.minus(p1.curr); var _local3:Number = (_local2.dot(_arg1.minus(p1.curr)) / _local2.dot(_local2)); return (MathUtil.clamp(_local3, 0, 1)); } } }//package org.cove.ape
Section 40
//Vector (org.cove.ape.Vector) package org.cove.ape { public class Vector { public var x:Number; public var y:Number; public function Vector(_arg1:Number=0, _arg2:Number=0){ x = _arg1; y = _arg2; } public function cross(_arg1:Vector):Number{ return (((x * _arg1.y) - (y * _arg1.x))); } public function magnitude():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function divEquals(_arg1:Number):Vector{ if (_arg1 == 0){ _arg1 = 0.0001; }; x = (x / _arg1); y = (y / _arg1); return (this); } public function times(_arg1:Vector):Vector{ return (new Vector((x * _arg1.x), (y * _arg1.y))); } public function plusEquals(_arg1:Vector):Vector{ x = (x + _arg1.x); y = (y + _arg1.y); return (this); } public function dot(_arg1:Vector):Number{ return (((x * _arg1.x) + (y * _arg1.y))); } public function toString():String{ return (((x + " : ") + y)); } public function normalize():Vector{ var _local1:Number = magnitude(); if (_local1 == 0){ _local1 = 0.0001; }; return (mult((1 / _local1))); } public function minusEquals(_arg1:Vector):Vector{ x = (x - _arg1.x); y = (y - _arg1.y); return (this); } public function copy(_arg1:Vector):void{ x = _arg1.x; y = _arg1.y; } public function multEquals(_arg1:Number):Vector{ x = (x * _arg1); y = (y * _arg1); return (this); } public function minus(_arg1:Vector):Vector{ return (new Vector((x - _arg1.x), (y - _arg1.y))); } public function plus(_arg1:Vector):Vector{ return (new Vector((x + _arg1.x), (y + _arg1.y))); } public function distance(_arg1:Vector):Number{ var _local2:Vector = this.minus(_arg1); return (_local2.magnitude()); } public function setTo(_arg1:Number, _arg2:Number):void{ x = _arg1; y = _arg2; } public function mult(_arg1:Number):Vector{ return (new Vector((x * _arg1), (y * _arg1))); } } }//package org.cove.ape
Section 41
//WheelParticle (org.cove.ape.WheelParticle) package org.cove.ape { public class WheelParticle extends CircleParticle { private var tan:Vector; private var normSlip:Vector; private var orientation:Vector; private var _traction:Number; private var rp:RimParticle; public function WheelParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0, _arg8:Number=1){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7); tan = new Vector(0, 0); normSlip = new Vector(0, 0); rp = new RimParticle(_arg3, 2); this.traction = _arg8; orientation = new Vector(); } public function set angularVelocity(_arg1:Number):void{ rp.angularVelocity = _arg1; } public function get speed():Number{ return (rp.speed); } public function set traction(_arg1:Number):void{ _traction = (1 - _arg1); } override public function update(_arg1:Number):void{ super.update(_arg1); rp.update(_arg1); } public function get angle():Number{ return ((radian * MathUtil.ONE_EIGHTY_OVER_PI)); } private function resolve(_arg1:Vector):void{ tan.setTo(-(rp.curr.y), rp.curr.x); tan = tan.normalize(); var _local2:Vector = tan.mult(rp.speed); var _local3:Vector = velocity.plusEquals(_local2); var _local4:Number = _local3.cross(_arg1); tan.multEquals(_local4); rp.prev.copy(rp.curr.minus(tan)); var _local5:Number = ((1 - _traction) * rp.speed); normSlip.setTo((_local5 * _arg1.y), (_local5 * _arg1.x)); curr.plusEquals(normSlip); rp.speed = (rp.speed * _traction); } override public function paint():void{ sprite.x = curr.x; sprite.y = curr.y; sprite.rotation = angle; } public function set speed(_arg1:Number):void{ rp.speed = _arg1; } public function get traction():Number{ return ((1 - _traction)); } override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{ super.resolveCollision(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); resolve(_arg3.mult(MathUtil.sign((_arg4 * _arg5)))); } override public function init():void{ cleanup(); if (displayObject != null){ initDisplay(); } else { sprite.graphics.clear(); sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha); sprite.graphics.beginFill(fillColor, fillAlpha); sprite.graphics.drawCircle(0, 0, radius); sprite.graphics.endFill(); sprite.graphics.moveTo(-(radius), 0); sprite.graphics.lineTo(radius, 0); sprite.graphics.moveTo(0, -(radius)); sprite.graphics.lineTo(0, radius); }; paint(); } public function get radian():Number{ orientation.setTo(rp.curr.x, rp.curr.y); return ((Math.atan2(orientation.y, orientation.x) + Math.PI)); } public function get angularVelocity():Number{ return (rp.angularVelocity); } } }//package org.cove.ape
Section 42
//Ground (sections.lab.assets.umbrella.Ground) package sections.lab.assets.umbrella { import org.cove.ape.*; public class Ground extends Group { public function Ground(_arg1:Number, _arg2:Number):void{ var _local3:RectangleParticle = new RectangleParticle((_arg1 / 2), (_arg2 + 80), _arg1, 200, 0, true); _local3.setStyle(0, 0xFF, 0, 0xFF0000); _local3.sprite.cacheAsBitmap = true; _local3.elasticity = 0; _local3.friction = 0.7; addParticle(_local3); } } }//package sections.lab.assets.umbrella
Section 43
//SkullDrop (sections.lab.assets.umbrella.SkullDrop) package sections.lab.assets.umbrella { import flash.display.*; import org.cove.ape.*; public class SkullDrop extends Group { private var wheel:WheelParticle; public var bmp:Bitmap; public function SkullDrop(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:BitmapData):void{ bmp = new Bitmap(_arg4); bmp.width = _arg2; bmp.height = (_arg2 * 1.2); bmp.smoothing = true; this.wheel = new WheelParticle(_arg1, -50, ((_arg2 / 2) + 2), false, 0.1); wheel.setStyle(1, 0xFF0000, 1, 0xFF00); wheel.setDisplay(bmp, (-(bmp.width) / 2), (-(bmp.height) / 2)); wheel.elasticity = 0.1; this.addParticle(wheel); } public function destroy():void{ this.removeParticle(this.wheel); this.wheel = null; bmp = null; } } }//package sections.lab.assets.umbrella
Section 44
//Umbrella (sections.lab.assets.umbrella.Umbrella) package sections.lab.assets.umbrella { import flash.events.*; import flash.display.*; import org.cove.ape.*; import gs.*; import flash.media.*; import flash.utils.*; import sections.lab.*; import flash.geom.*; public class Umbrella extends LabSection { public var timer:Timer; public var skullDrops:Array; private var cSkullDrop:SkullDrop; public var skullDropAssetBMPData:BitmapData; public var count:Number;// = 0 public var umbrellaSurface:UmbrellaSurface; public var thunderSoundCh:SoundChannel; public var thunderSound:ThunderSound; public var ground:Ground; public var skullDropAssetMovie:MovieClip; public var whiteBG:MovieClip; private var animatingSkulls:Array; public function Umbrella(){ skullDrops = []; super(); } private function skullOutComplete(_arg1:SkullDrop, _arg2:Boolean=false):void{ if (!_arg2){ this.animatingSkulls.shift(); }; APEngine.removeGroup(_arg1); umbrellaSurface.removeCollidable(_arg1); _arg1.destroy(); _arg1 = null; } private function removeDrop(_arg1:SkullDrop, _arg2:Boolean=false):void{ if (((((_arg1.bmp) && ((_arg1.bmp.y < stage.stageHeight)))) && (!(_arg2)))){ skullOut(_arg1); } else { skullOutComplete(_arg1, true); }; } override protected function standAloneSWF():void{ } override public function transitionIn():void{ this.transitionInComplete(); } override protected function stageResizeHandler(_arg1:Event):void{ this.whiteBG.width = stage.stageWidth; this.whiteBG.height = stage.stageHeight; } override public function resume():void{ if (!this.destroyed){ this.removeEventListener(Event.ENTER_FRAME, runHandler); this.addEventListener(Event.ENTER_FRAME, runHandler, false, 0, true); }; } private function newDrop():void{ if (this.skullDrops.length > 170){ this.removeDrop(this.skullDrops.shift()); }; var _local1:Number = (umbrellaSurface.x - (umbrellaSurface.width / 2)); var _local2:Number = (umbrellaSurface.x + (umbrellaSurface.width / 2)); var _local3:Number = ((Math.random() * (_local2 - _local1)) + _local1); var _local4:Number = ((Math.random() * 9) + 5); var _local5:Number = 1; cSkullDrop = new SkullDrop(_local3, _local4, _local5, this.skullDropAssetBMPData); this.skullDrops.push(cSkullDrop); APEngine.addGroup(cSkullDrop); umbrellaSurface.addCollidable(cSkullDrop); } private function skullOut(_arg1:SkullDrop):void{ this.animatingSkulls.push(_arg1.bmp); TweenLite.to(_arg1.bmp, 0.25, {alpha:0, onComplete:skullOutComplete, onCompleteParams:[_arg1, false]}); } override protected function initialize():void{ super.initialize(); this.skullDropAssetMovie = new SkullDropAsset(); var _local1:Matrix = new Matrix(1, 0, 0, 1, (this.skullDropAssetMovie.width / 2), (this.skullDropAssetMovie.height / 2)); this.skullDropAssetBMPData = new BitmapData(this.skullDropAssetMovie.width, this.skullDropAssetMovie.height, true, 0); this.skullDropAssetBMPData.draw(this.skullDropAssetMovie, _local1); APEngine.init((1 / 2)); APEngine.container = this; APEngine.addMasslessForce(new Vector(0, 3)); umbrellaSurface = new UmbrellaSurface(); APEngine.addGroup(umbrellaSurface); stageResizeHandler(new Event(Event.RESIZE)); this.thunderSound = new ThunderSound(); this.thunderSoundCh = this.thunderSound.play(); if (this.isStandaloneSwf){ this.transitionIn(); }; this.animatingSkulls = []; } override protected function transitionInComplete():void{ super.transitionInComplete(); this.addEventListener(Event.ENTER_FRAME, runHandler, false, 0, true); } override public function pause():void{ this.updateUmbrella(((stage.stageWidth / 2) - 200), (stage.stageHeight / 2), 0.3); this.removeEventListener(Event.ENTER_FRAME, runHandler); } override protected function render():void{ APEngine.step(); APEngine.paint(); this.newDrop(); this.newDrop(); this.updateUmbrella(this.mouseX, this.mouseY); } override public function destroy():void{ var _local3:SkullDrop; super.destroy(); var _local1:Number = 0; while (_local1 < this.animatingSkulls.length) { TweenLite.killTweensOf(this.animatingSkulls[_local1]); _local1++; }; this.animatingSkulls = []; this.removeEventListener(Event.ENTER_FRAME, runHandler); this.cSkullDrop.destroy(); this.cSkullDrop = null; var _local2:Number = 0; while (_local2 < this.skullDrops.length) { _local3 = this.skullDrops[_local2]; this.removeDrop(_local3, true); _local2++; }; APEngine.removeGroup(umbrellaSurface); this.skullDrops = null; this.umbrellaSurface = null; this.skullDropAssetBMPData.dispose(); this.thunderSoundCh.stop(); this.thunderSoundCh = null; this.thunderSound = null; } private function updateUmbrella(_arg1:Number, _arg2:Number, _arg3:Number=0.4):void{ this.umbrellaSurface.setPosition(_arg1, _arg2, _arg3); } private function runHandler(_arg1:Event):void{ this.render(); } } }//package sections.lab.assets.umbrella
Section 45
//UmbrellaSurface (sections.lab.assets.umbrella.UmbrellaSurface) package sections.lab.assets.umbrella { import flash.display.*; import org.cove.ape.*; import gs.*; public class UmbrellaSurface extends Group { private var particle:CircleParticle; public function UmbrellaSurface(_arg1:Number=0, _arg2:Number=0):void{ this.particle = new CircleParticle(_arg1, 500, 100, true); this.setPosition(_arg1, _arg2); this.particle.setStyle(0, 0xFF, 1, 0xFF0000); this.particle.sprite.cacheAsBitmap = true; this.particle.setDisplay(MovieClip(new UmbrellaAsset())); this.particle.elasticity = 0.2; this.particle.friction = 0; addParticle(this.particle); } public function get x():Number{ return (this.particle.px); } public function get y():Number{ return (this.particle.py); } public function setPosition(_arg1:Number, _arg2:Number, _arg3:Number=0.4):void{ var _local4:Number = (_arg1 - this.particle.px); TweenLite.to(this.particle, _arg3, {px:_arg1, py:_arg2}); TweenLite.to(this.particle.sprite, _arg3, {x:_arg1, y:_arg2, rotation:(_local4 / 4)}); } public function get width():Number{ return (this.particle.sprite.width); } } }//package sections.lab.assets.umbrella
Section 46
//LabSection (sections.lab.LabSection) package sections.lab { import gs.*; import gs.easing.*; import sections.*; public class LabSection extends CartelleSection { public var destroyed:Boolean;// = false private var _tintColor:Number;// = 0 override public function destroy():void{ super.destroy(); this.destroyed = true; } public function get tintColor():Number{ return (this._tintColor); } override protected function initialize():void{ super.initialize(); } private function tintComplete():void{ this.transitionInComplete(); } public function set tintColor(_arg1:Number):void{ this._tintColor = _arg1; } override public function transitionIn():void{ TweenFilterLite.to(this, 0, {tint:this.tintColor}); TweenFilterLite.to(this, 1.2, {removeTint:true, onComplete:tintComplete, ease:Quad.easeIn}); } override protected function standAloneSWF():void{ } } }//package sections.lab
Section 47
//MenuEvent (sections.navigation.events.MenuEvent) package sections.navigation.events { import flash.events.*; public class MenuEvent extends Event { public static var CLOSE_COMPLETE:String = "menuCloseComplete"; public static var MENU_UNLOCK:String = "menuUnLock"; public static var OPEN:String = "menuOpen"; public static var MENU_LOCK:String = "menuLock"; public static var OPEN_COMPLETE:String = "menuOpenComplete"; public static var CLOSE:String = "menuClose"; public function MenuEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function clone():Event{ return (new MenuEvent(type, bubbles, cancelable)); } } }//package sections.navigation.events
Section 48
//MenuItemEvent (sections.navigation.events.MenuItemEvent) package sections.navigation.events { import flash.events.*; import sections.navigation.*; public class MenuItemEvent extends Event { public var menuItem:MenuItem; public static var SELECT:String = "menuItemSelect"; public function MenuItemEvent(_arg1:String, _arg2:MenuItem, _arg3:Boolean=false, _arg4:Boolean=false){ this.menuItem = _arg2; super(_arg1, _arg3, _arg4); } override public function clone():Event{ return (new MenuItemEvent(type, this.menuItem, bubbles, cancelable)); } } }//package sections.navigation.events
Section 49
//MenuItem (sections.navigation.MenuItem) package sections.navigation { import cartelle.core.*; import flash.events.*; import flash.display.*; import gs.*; import flash.text.*; import flash.media.*; import sections.navigation.events.*; import cartelle.text.*; public class MenuItem extends View { public var bg:MovieClip; public var contentURL:String; public var index:Number; public var title:String; public var overBG:MovieClip; public var imageClip:MovieClip; public var id:String; public var textBMP:MovieClip; public var abbrev:Boolean;// = false public var color:Number; public var imageMask:MovieClip; public var body:String; private var selected:Boolean;// = false private var tickSound:Sound; public var contentId:String; public var textClips:MovieClip; public var disabled:String; public function disable():void{ this.mouseEnabled = false; } override public function destroy():void{ this.removeEventListener(MouseEvent.ROLL_OUT, mouseOutHandler); this.removeEventListener(MouseEvent.ROLL_OVER, mouseOverHandler); this.removeEventListener(MouseEvent.CLICK, mouseClickHandler); this.image.bitmapData.dispose(); super.destroy(); } public function enable():void{ if (!this.selected){ this.mouseEnabled = true; }; } public function get image():Bitmap{ return (Bitmap(this.imageClip.getChildAt(0))); } public function deselect():void{ this.selected = false; this.mouseEnabled = true; TweenFilterLite.to(this.overBG, 0, {tint:0xFFFFFF, overwrite:false}); } override protected function initialize():void{ var _local2:Number; var _local3:String; var _local4:Array; var _local5:Number; var _local6:String; this.mouseChildren = false; this.buttonMode = true; var _local1:TextFormat = new TextFormat(); _local1.font = FormatManager.getFont("GaramondBold").fontName; this.textClips.titleText.defaultTextFormat = _local1; this.textClips.titleText.embedFonts = true; this.textClips.titleText.autoSize = "left"; this.textClips.titleText.text = this.title.toUpperCase(); _local1.font = FormatManager.getFont("HelvHeavy").fontName; this.textClips.bodyText.defaultTextFormat = _local1; this.textClips.bodyText.embedFonts = true; this.textClips.bodyText.y = (this.textClips.titleText.height + 14); this.textClips.bodyText.height = ((this.textClips.titleText.numLines == 2)) ? 55 : 65; this.textClips.bodyText.text = this.body; if (abbrev){ _local2 = ((this.textClips.titleText.numLines == 2)) ? 4 : 6; _local3 = TextField(this.textClips.bodyText).getLineText(_local2); _local4 = []; _local5 = 0; while (_local5 < _local3.length) { if (_local3.charAt(_local5) == " "){ _local4.push(_local5); }; _local5++; }; _local6 = (_local3.substr(0, _local4[(_local4.length - 2)]) + "... \n"); TextField(this.textClips.bodyText).replaceText(body.indexOf(_local3), (body.indexOf(_local3) + _local3.length), _local6); trace(_local3); }; this.addEventListener(MouseEvent.ROLL_OUT, mouseOutHandler, false, 0, true); this.addEventListener(MouseEvent.ROLL_OVER, mouseOverHandler, false, 0, true); this.addEventListener(MouseEvent.MOUSE_DOWN, mouseClickHandler, false, 0, true); this.tickSound = new TickSound(); } private function doMouseOut():void{ this.textClips.titleText.textColor = 0x212121; this.textClips.bodyText.textColor = 0x7E7E7E; TweenFilterLite.to(this.overBG, 0, {removeTint:true}); } private function doMouseOver():void{ TweenFilterLite.to(this.overBG, 0, {tint:0}); this.textClips.titleText.textColor = 0xFFFFFF; this.textClips.bodyText.textColor = 0xFFFFFF; this.tickSound.play(); } public function select():void{ this.selected = true; this.mouseEnabled = false; this.textClips.titleText.textColor = 0x212121; this.textClips.bodyText.textColor = 0x7E7E7E; TweenFilterLite.to(this.overBG, 0, {tint:0xEEEEEE}); } private function mouseOutHandler(_arg1:MouseEvent):void{ if (this.mouseEnabled){ this.doMouseOut(); }; } private function mouseClickHandler(_arg1:MouseEvent):void{ if (this.disabled != "true"){ dispatchEvent(new MenuItemEvent(MenuItemEvent.SELECT, this)); }; } private function mouseOverHandler(_arg1:MouseEvent):void{ this.doMouseOver(); } public function set image(_arg1:Bitmap):void{ _arg1.pixelSnapping = PixelSnapping.NEVER; this.imageClip.addChild(_arg1); this.imageClip.mask = this.imageMask; } override public function toString():String{ return (this.id); } } }//package sections.navigation
Section 50
//TickSound (sections.navigation.TickSound) package sections.navigation { import flash.media.*; public class TickSound extends Sound { } }//package sections.navigation
Section 51
//CartelleSection (sections.CartelleSection) package sections { import cartelle.loading.*; import cartelle.core.*; import flash.events.*; import flash.display.*; import sections.navigation.*; import sections.navigation.events.*; import cartelle.core.events.*; public class CartelleSection extends Section { public function CartelleSection():void{ } override protected function initialize():void{ trace(("init " + this)); stage.addEventListener(Event.RESIZE, stageResizeHandler, false, 0, true); } protected function transitionOutComplete():void{ dispatchEvent(new SectionEvent(SectionEvent.TRANSITION_OUT_COMPLETE)); } protected function transitionInComplete():void{ dispatchEvent(new SectionEvent(SectionEvent.TRANSITION_IN_COMPLETE)); } override public function destroy():void{ super.destroy(); } public function menuCloseCompleteHandler(_arg1:MenuEvent):void{ } override public function transitionOut():void{ this.visible = false; transitionOutComplete(); } override public function transitionIn():void{ this.visible = true; transitionInComplete(); } public function handleSWFAddress(_arg1:SWFAddressEvent):void{ } override protected function standAloneSWF():void{ stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.frameRate = 30; AssetPackManager.defineDriver("data/global_config.xml", "appInit", this); } public function menuItemSelect(_arg1:MenuItem):void{ } } }//package sections
Section 52
//SkullDropAsset (SkullDropAsset) package { import flash.display.*; public dynamic class SkullDropAsset extends MovieClip { } }//package
Section 53
//SkullDropAssetBMP (SkullDropAssetBMP) package { import flash.display.*; public dynamic class SkullDropAssetBMP extends BitmapData { public function SkullDropAssetBMP(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 54
//SWFAddress (SWFAddress) package { import flash.events.*; import flash.net.*; import flash.utils.*; import flash.external.*; import flash.system.*; import flash.errors.*; public class SWFAddress { public static var onInit:Function; private static var _initializer:Boolean = _initialize(); private static var _availability:Boolean = ExternalInterface.available; private static var _timer:Timer = null; private static var _dispatcher:EventDispatcher = new EventDispatcher(); private static var _strict:Boolean = true; private static var _value:String = ""; public static var onChange:Function; private static var _init:Boolean = false; private static var _initChange:Boolean = false; public function SWFAddress(){ throw (new IllegalOperationError("SWFAddress cannot be instantiated.")); } private static function _strictCheck(_arg1:String, _arg2:Boolean):String{ if (SWFAddress.getStrict()){ if (_arg2){ if (_arg1.substr(0, 1) != "/"){ _arg1 = ("/" + _arg1); }; } else { if (_arg1 == ""){ _arg1 = "/"; }; }; }; return (_arg1); } public static function getTracker():String{ return ((_availability) ? (ExternalInterface.call("SWFAddress.getTracker") as String) : ""); } public static function hasEventListener(_arg1:String):Boolean{ return (_dispatcher.hasEventListener(_arg1)); } private static function _check(_arg1:TimerEvent):void{ if ((((((typeof(SWFAddress["onInit"]) == "function")) || (_dispatcher.hasEventListener("init")))) && (!(_init)))){ SWFAddress._setValueInit(_getValue()); SWFAddress._init = true; }; if ((((typeof(SWFAddress["onChange"]) == "function")) || (_dispatcher.hasEventListener("change")))){ _timer.stop(); SWFAddress._init = true; SWFAddress._setValueInit(_getValue()); }; } private static function _setValue(_arg1:String):void{ if ((((_arg1 == "undefined")) || ((_arg1 == null)))){ _arg1 = ""; }; if ((((SWFAddress._value == _arg1)) && (SWFAddress._init))){ return; }; if (!SWFAddress._initChange){ return; }; SWFAddress._value = _arg1; if (!_init){ SWFAddress._init = true; if ((((typeof(SWFAddress["onInit"]) == "function")) || (_dispatcher.hasEventListener("init")))){ _dispatchEvent(SWFAddressEvent.INIT); }; }; _dispatchEvent(SWFAddressEvent.CHANGE); } public static function getParameterNames():Array{ var _local4:Array; var _local5:Number; var _local1:String = SWFAddress.getValue(); var _local2:Number = _local1.indexOf("?"); var _local3:Array = new Array(); if (_local2 != -1){ _local1 = _local1.substr((_local2 + 1)); if (((!((_local1 == ""))) && (!((_local1.indexOf("=") == -1))))){ _local4 = _local1.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local3.push(_local4[_local5].split("=")[0]); _local5++; }; }; }; return (_local3); } public static function setTitle(_arg1:String):void{ if (_availability){ ExternalInterface.call("SWFAddress.setTitle", _arg1); }; } private static function _getValue():String{ var _local1:String; var _local3:Array; var _local2:String; if (_availability){ _local1 = (ExternalInterface.call("SWFAddress.getValue") as String); _local3 = (ExternalInterface.call("SWFAddress.getIds") as Array); if (_local3 != null){ _local2 = _local3.toString(); }; }; if ((((_local2 == null)) || (!(_availability)))){ _local1 = SWFAddress._value; } else { if ((((_local1 == "undefined")) || ((_local1 == null)))){ _local1 = ""; }; }; return (_strictCheck(((_local1) || ("")), false)); } public static function up():void{ var _local1:String = SWFAddress.getPath(); SWFAddress.setValue(_local1.substr(0, (_local1.lastIndexOf("/", (_local1.length - 2)) + ((_local1.substr((_local1.length - 1)) == "/")) ? 1 : 0))); } public static function resetStatus():void{ if (_availability){ ExternalInterface.call("SWFAddress.resetStatus"); }; } public static function getBaseURL():String{ var _local1:String; if (_availability){ _local1 = String(ExternalInterface.call("SWFAddress.getBaseURL")); }; return (((((((_local1 == null)) || ((_local1 == "null")))) || (!(_availability)))) ? "" : _local1); } public static function getTitle():String{ var _local1:String = (_availability) ? (ExternalInterface.call("SWFAddress.getTitle") as String) : ""; if ((((_local1 == "undefined")) || ((_local1 == null)))){ _local1 = ""; }; return (_local1); } public static function getPath():String{ var _local1:String = SWFAddress.getValue(); if (_local1.indexOf("?") != -1){ return (_local1.split("?")[0]); }; return (_local1); } public static function href(_arg1:String, _arg2:String="_self"):void{ if (((_availability) && ((Capabilities.playerType == "ActiveX")))){ ExternalInterface.call("SWFAddress.href", _arg1, _arg2); return; }; navigateToURL(new URLRequest(_arg1), _arg2); } public static function popup(_arg1:String, _arg2:String="popup", _arg3:String="""", _arg4:String=""):void{ if (((_availability) && ((((Capabilities.playerType == "ActiveX")) || (ExternalInterface.call("asual.util.Browser.isSafari")))))){ ExternalInterface.call("SWFAddress.popup", _arg1, _arg2, _arg3, _arg4); return; }; navigateToURL(new URLRequest((((((((("javascript:popup=window.open(\"" + _arg1) + "\",\"") + _arg2) + "\",") + _arg3) + ");") + _arg4) + ";void(0);")), "_self"); } private static function _initialize():Boolean{ if (_availability){ ExternalInterface.addCallback("getSWFAddressValue", function ():String{ return (_value); }); ExternalInterface.addCallback("setSWFAddressValue", _setValue); }; if (_timer == null){ _timer = new Timer(10); _timer.addEventListener(TimerEvent.TIMER, _check); }; _timer.start(); return (true); } public static function setValue(_arg1:String):void{ if ((((_arg1 == "undefined")) || ((_arg1 == null)))){ _arg1 = ""; }; _arg1 = _strictCheck(_arg1, true); if (SWFAddress._value == _arg1){ return; }; SWFAddress._value = _arg1; if (((_availability) && (SWFAddress._init))){ ExternalInterface.call("SWFAddress.setValue", _arg1); }; _dispatchEvent(SWFAddressEvent.CHANGE); } public static function getValue():String{ return (_strictCheck(((_value) || ("")), false)); } private static function _setValueInit(_arg1:String):void{ SWFAddress._value = _arg1; if (!_init){ _dispatchEvent(SWFAddressEvent.INIT); } else { _dispatchEvent(SWFAddressEvent.CHANGE); }; _initChange = true; } public static function getStrict():Boolean{ var _local1:String; if (_availability){ _local1 = (ExternalInterface.call("SWFAddress.getStrict") as String); }; return (((_local1)==null) ? _strict : (_local1 == "true")); } public static function dispatchEvent(_arg1:Event):Boolean{ return (_dispatcher.dispatchEvent(_arg1)); } private static function _dispatchEvent(_arg1:String):void{ if (_dispatcher.hasEventListener(_arg1)){ _dispatcher.dispatchEvent(new SWFAddressEvent(_arg1)); }; _arg1 = (_arg1.substr(0, 1).toUpperCase() + _arg1.substring(1)); if (typeof(SWFAddress[("on" + _arg1)]) == "function"){ var _local2 = SWFAddress; _local2[("on" + _arg1)](); }; } public static function getQueryString():String{ var _local1:String = SWFAddress.getValue(); var _local2:Number = _local1.indexOf("?"); if (((!((_local2 == -1))) && ((_local2 < _local1.length)))){ return (_local1.substr((_local2 + 1))); }; return (""); } public static function forward():void{ if (_availability){ ExternalInterface.call("SWFAddress.forward"); }; } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2, false); } public static function setStrict(_arg1:Boolean):void{ if (_availability){ ExternalInterface.call("SWFAddress.setStrict", _arg1); }; _strict = _arg1; } public static function setHistory(_arg1:Boolean):void{ if (_availability){ ExternalInterface.call("SWFAddress.setHistory", _arg1); }; } public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function getHistory():Boolean{ return ((_availability) ? (ExternalInterface.call("SWFAddress.getHistory") as Boolean) : false); } public static function back():void{ if (_availability){ ExternalInterface.call("SWFAddress.back"); }; } public static function getStatus():String{ var _local1:String = (_availability) ? (ExternalInterface.call("SWFAddress.getStatus") as String) : ""; if ((((_local1 == "undefined")) || ((_local1 == null)))){ _local1 = ""; }; return (_local1); } public static function getParameter(_arg1:String):String{ var _local4:Array; var _local5:Array; var _local6:Number; var _local2:String = SWFAddress.getValue(); var _local3:Number = _local2.indexOf("?"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 1)); _local4 = _local2.split("&"); _local6 = _local4.length; while (_local6--) { _local5 = _local4[_local6].split("="); if (_local5[0] == _arg1){ return (_local5[1]); }; }; }; return (""); } public static function setStatus(_arg1:String):void{ if (_availability){ ExternalInterface.call("SWFAddress.setStatus", _arg1); }; } public static function go(_arg1:int):void{ if (_availability){ ExternalInterface.call("SWFAddress.go", _arg1); }; } public static function getPathNames():Array{ var _local1:String = SWFAddress.getPath(); var _local2:Array = _local1.split("/"); if ((((_local1.substr(0, 1) == "/")) || ((_local1.length == 0)))){ _local2.splice(0, 1); }; if (_local1.substr((_local1.length - 1), 1) == "/"){ _local2.splice((_local2.length - 1), 1); }; return (_local2); } public static function setTracker(_arg1:String):void{ if (_availability){ ExternalInterface.call("SWFAddress.setTracker", _arg1); }; } } }//package
Section 55
//SWFAddressEvent (SWFAddressEvent) package { import flash.events.*; public class SWFAddressEvent extends Event { private var _pathNames:Array; private var _parameters:Object; private var _path:String; private var _value:String; private var _parametersNames:Array; public static const INIT:String = "init"; public static const CHANGE:String = "change"; public function SWFAddressEvent(_arg1:String){ super(_arg1, false, false); } public function get parameters():Object{ var _local1:int; if (_parameters == null){ _parameters = new Object(); _local1 = 0; while (_local1 < parametersNames.length) { _parameters[parametersNames[_local1]] = SWFAddress.getParameter(parametersNames[_local1]); _local1++; }; }; return (_parameters); } public function get pathNames():Array{ if (_pathNames == null){ _pathNames = SWFAddress.getPathNames(); }; return (_pathNames); } public function get path():String{ if (_path == null){ _path = SWFAddress.getPath(); }; return (_path); } override public function get currentTarget():Object{ return (SWFAddress); } override public function toString():String{ return (formatToString("SWFAddressEvent", "type", "bubbles", "cancelable", "eventPhase", "value", "path", "pathNames", "parameters", "parametersNames")); } public function get parametersNames():Array{ if (_parametersNames == null){ _parametersNames = SWFAddress.getParameterNames(); }; return (_parametersNames); } override public function get target():Object{ return (SWFAddress); } public function get value():String{ if (_value == null){ _value = SWFAddress.getValue(); }; return (_value); } override public function get type():String{ return (super.type); } override public function clone():Event{ return (new SWFAddressEvent(type)); } } }//package
Section 56
//ThunderSound (ThunderSound) package { import flash.media.*; public dynamic class ThunderSound extends Sound { } }//package
Section 57
//UmbrellaAsset (UmbrellaAsset) package { import flash.display.*; public dynamic class UmbrellaAsset extends MovieClip { } }//package

Library Items

Symbol 1 Sound {ThunderSound}
Symbol 2 Bitmap {SkullDropAssetBMP}
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClip {SkullDropAsset}Uses:3
Symbol 5 BitmapUsed by:6
Symbol 6 GraphicUses:5Used by:7
Symbol 7 MovieClip {UmbrellaAsset}Uses:6
Symbol 8 BitmapUsed by:9
Symbol 9 GraphicUses:8Used by:10
Symbol 10 MovieClipUses:9Used by:Timeline

Instance Names

"whiteBG"Frame 1Symbol 10 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.




http://swfchan.com/20/96246/info.shtml
Created: 23/3 -2019 22:59:52 Last modified: 23/3 -2019 22:59:52 Server time: 29/04 -2024 16:12:35