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