Section 1
//SFCAbstract (com.fingertime.core.loader.SFCAbstract)
package com.fingertime.core.loader {
public class SFCAbstract {
private var achievements:Array;
public var currentScore:int;// = 0
public function SFCAbstract(){
currentScore = 0;
super();
}
public function updateScore(_arg1:int):void{
trace(("updateScore called with value : " + _arg1));
}
public function achievement(_arg1:int):void{
var _local2:Boolean;
var _local3:int;
if (achievements == null){
achievements = new Array();
};
_local2 = false;
_local3 = 0;
while (_local3 < achievements.length) {
if (achievements[_local3] == _arg1){
_local2 = true;
};
_local3++;
};
if (!_local2){
trace(("achievement called with id : " + _arg1));
achievements.push(_arg1);
};
}
}
}//package com.fingertime.core.loader
Section 2
//SFCLoader (com.fingertime.core.loader.SFCLoader)
package com.fingertime.core.loader {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class SFCLoader extends MovieClip {
public var checkLoginOn:Boolean;// = true
public var achievementsOn:Boolean;// = true
public var vAlign:String;// = "bottom"
public var minorVersion:Number;// = 0
public var checkSecurity:Boolean;// = true
public var hAlign:String;// = "center"
public var gatewayUrl:String;// = "http://beta.fingertime.com/amfphp/gateway.php"
public var lowerIsBest:Boolean;// = false
public var highScoresOn:Boolean;// = true
public var achievementDelay:Number;// = 5
public var gameID:Number;
public var checkVersion:Boolean;// = true
public var margin:Number;// = 24
public var majorVersion:Number;// = 9
public var maxMessageBoxSize:Number;// = 265
public static var stage_width:Number;
public static var stage_height:Number;
public static var core;
public function SFCLoader(){
checkLoginOn = true;
checkSecurity = true;
checkVersion = true;
majorVersion = 9;
minorVersion = 0;
gatewayUrl = "http://beta.fingertime.com/amfphp/gateway.php";
achievementsOn = true;
highScoresOn = true;
lowerIsBest = false;
vAlign = "bottom";
hAlign = "center";
margin = 24;
achievementDelay = 5;
maxMessageBoxSize = 265;
super();
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(_arg1:Event):void{
trace("core loader initialised");
removeEventListener(Event.ADDED_TO_STAGE, init);
if (checkLoginOn){
if (checkSecurity){
if (stage.loaderInfo.url.indexOf("fingertime.com") == -1){
navigateToURL(new URLRequest("http://www.fingertime.com"));
};
};
x = (y = 0);
Security.allowDomain("*");
stage_width = stage.stageWidth;
stage_height = stage.stageHeight;
trace(("core = " + core));
if (Security.sandboxType == Security.REMOTE){
initCore();
} else {
core = new SFCAbstract();
};
};
}
public function initCore():void{
core.achievementsOn = achievementsOn;
core.achievementDelay = achievementDelay;
core.checkSecurity = checkSecurity;
core.gameID = gameID;
core.gatewayUrl = gatewayUrl;
core.hAlign = hAlign;
core.vAlign = vAlign;
core.margin = margin;
core.highScoresOn = highScoresOn;
core.lowestIsBest = lowerIsBest;
core.maxMessageBoxSize = maxMessageBoxSize;
core.majorVersion = majorVersion;
core.minorVersion = minorVersion;
core.checkLoginOn = checkLoginOn;
core.init();
}
public static function go(){
return (core);
}
}
}//package com.fingertime.core.loader
Section 3
//mc_17 (CycloneLimited_fla.mc_17)
package CycloneLimited_fla {
import flash.display.*;
public dynamic class mc_17 extends MovieClip {
public function mc_17(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package CycloneLimited_fla
Section 4
//mc_25 (CycloneLimited_fla.mc_25)
package CycloneLimited_fla {
import flash.display.*;
import flash.text.*;
public dynamic class mc_25 extends MovieClip {
public var score_tf:TextField;
}
}//package CycloneLimited_fla
Section 5
//Locale (fl.lang.Locale)
package fl.lang {
import flash.events.*;
import flash.xml.*;
import flash.system.*;
import flash.net.*;
public class Locale extends EventDispatcher {
private static var delayedInstanceArray:Array = new Array();
private static var flaName:String;
private static var currentLang:String;
private static var stringMap:Object = new Object();
private static var xmlDoc:XMLDocument;
private static var xmlLang:String = Capabilities.language;
private static var xmlMap:Object = new Object();
private static var stringMapList:Object = new Object();
private static var callback:Function;
private static var defaultLang:String;
private static var currentXMLMapIndex:Number = -1;
private static var autoReplacement:Boolean = true;
private static var _xmlLoaded:Boolean = false;
public static function get autoReplace():Boolean{
return (autoReplacement);
}
public static function setDefaultLang(_arg1:String):void{
defaultLang = _arg1;
}
public static function initialize():void{
var _local1:String;
_local1 = xmlLang;
if (xmlMap[xmlLang] == undefined){
_local1 = defaultLang;
};
currentXMLMapIndex = 0;
loadXML(_local1);
}
public static function setString(_arg1:String, _arg2:String, _arg3:String):void{
var _local4:Object;
_local4 = stringMapList[_arg2];
if (_local4){
_local4[_arg1] = _arg3;
} else {
_local4 = new Object();
_local4[_arg1] = _arg3;
stringMapList[_arg2] = _local4;
};
}
public static function loadString(_arg1:String):String{
return (stringMap[_arg1]);
}
public static function getDefaultLang():String{
return (defaultLang);
}
private static function parseXLiff(_arg1:XMLNode):void{
if ((((_arg1.childNodes.length > 0)) && ((_arg1.childNodes[0].nodeName == "file")))){
parseFile(_arg1.childNodes[0]);
};
}
public static function loadStringEx(_arg1:String, _arg2:String):String{
var _local3:Object;
_local3 = stringMapList[_arg2];
if (_local3){
return (_local3[_arg1]);
};
return ("");
}
public static function set autoReplace(_arg1:Boolean):void{
autoReplacement = _arg1;
}
private static function parseSource(_arg1:XMLNode):String{
if (_arg1.childNodes.length > 0){
return (_arg1.childNodes[0].nodeValue);
};
return ("");
}
public static function addDelayedInstance(_arg1:Object, _arg2:String){
var _local3:Number;
delayedInstanceArray.push({inst:_arg1, strID:_arg2});
_local3 = delayedInstanceArray.length;
}
private static function onXMLLoad(_arg1:Event){
var _local2:URLLoader;
var _local3:String;
_xmlLoaded = true;
_local2 = (_arg1.target as URLLoader);
_local3 = _local2.data;
xmlDoc = new XMLDocument();
xmlDoc.ignoreWhite = true;
xmlDoc.parseXML(_local3);
stringMap = new Object();
parseStringsXML(xmlDoc);
if (stringMapList[currentLang] == undefined){
stringMapList[currentLang] = stringMap;
};
if (autoReplacement){
assignDelayedInstances();
};
if (callback != null){
callback(true);
};
}
public static function checkXMLStatus():Boolean{
return (_xmlLoaded);
}
public static function setFlaName(_arg1:String):void{
flaName = _arg1;
}
private static function parseStringsXML(_arg1:XMLDocument):void{
if ((((_arg1.childNodes.length > 0)) && ((_arg1.childNodes[0].nodeName == "xliff")))){
parseXLiff(_arg1.childNodes[0]);
};
}
private static function assignDelayedInstances():void{
var _local1:Number;
var _local2:Object;
var _local3:String;
_local1 = 0;
while (_local1 < delayedInstanceArray.length) {
if (delayedInstanceArray[_local1] != undefined){
_local2 = delayedInstanceArray[_local1].inst;
_local3 = delayedInstanceArray[_local1].strID;
_local2.text = loadString(_local3);
};
_local1++;
};
}
public static function get stringIDArray():Array{
var _local1:Array;
var _local2:String;
_local1 = new Array();
for (_local2 in stringMap) {
if (_local2 != ""){
_local1.push(_local2);
};
};
return (_local1);
}
private static function loadXML(_arg1:String){
var _local2:String;
var _local3:URLLoader;
_local2 = xmlMap[_arg1][0];
_local3 = new URLLoader(new URLRequest(_local2));
_local3.addEventListener("complete", onXMLLoad);
}
private static function parseFile(_arg1:XMLNode):void{
if ((((_arg1.childNodes.length > 1)) && ((_arg1.childNodes[1].nodeName == "body")))){
parseBody(_arg1.childNodes[1]);
};
}
private static function parseTransUnit(_arg1:XMLNode):void{
var _local2:String;
var _local3:String;
_local2 = _arg1.attributes.resname;
if ((((((_local2.length > 0)) && ((_arg1.childNodes.length > 0)))) && ((_arg1.childNodes[0].nodeName == "source")))){
_local3 = parseSource(_arg1.childNodes[0]);
if (_local3.length > 0){
stringMap[_local2] = _local3;
};
};
}
public static function setLoadCallback(_arg1:Function){
callback = _arg1;
}
public static function loadLanguageXML(_arg1:String, _arg2:Function=null):void{
var _local3:String;
_local3 = ((_arg1)=="") ? Capabilities.language : _arg1;
if (xmlMap[_local3] == undefined){
_local3 = defaultLang;
};
if (_arg2 != null){
callback = _arg2;
};
if (stringMapList[_arg1] == undefined){
loadXML(_local3);
} else {
stringMap = stringMapList[_local3];
if (callback != null){
callback(true);
};
};
currentLang = _local3;
}
public static function get languageCodeArray():Array{
var _local1:Array;
var _local2:String;
_local1 = new Array();
for (_local2 in xmlMap) {
if (_local2){
_local1.push(_local2);
};
};
return (_local1);
}
private static function parseBody(_arg1:XMLNode):void{
var _local2:Number;
_local2 = 0;
while (_local2 < _arg1.childNodes.length) {
if (_arg1.childNodes[_local2].nodeName == "trans-unit"){
parseTransUnit(_arg1.childNodes[_local2]);
};
_local2++;
};
}
public static function addXMLPath(_arg1:String, _arg2:String):void{
if (xmlMap[_arg1] == undefined){
xmlMap[_arg1] = new Array();
};
xmlMap[_arg1].push(_arg2);
}
}
}//package fl.lang
Section 6
//LivePreviewParent (fl.livepreview.LivePreviewParent)
package fl.livepreview {
import flash.display.*;
import flash.utils.*;
import flash.external.*;
public class LivePreviewParent extends MovieClip {
public var myInstance:DisplayObject;
public function LivePreviewParent(){
super();
try {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
myInstance = getChildAt(0);
onResize(stage.width, stage.height);
if (ExternalInterface.available){
ExternalInterface.addCallback("onResize", onResize);
ExternalInterface.addCallback("onUpdate", onUpdate);
};
} catch(e) {
};
}
private function updateCollection(_arg1:Object, _arg2:String):void{
var _local3:Class;
var _local4:Class;
var _local5:Object;
var _local6:int;
var _local7:Object;
var _local8:Object;
var _local9:*;
_local3 = Class(getDefinitionByName(_arg1.collectionClass));
_local4 = Class(getDefinitionByName(_arg1.collectionItemClass));
_local5 = new (_local3);
_local6 = 0;
while (_local6 < _arg1.collectionArray.length) {
_local7 = new (_local4);
_local8 = _arg1.collectionArray[_local6];
for (_local9 in _local8) {
_local7[_local9] = _local8[_local9];
};
_local5.addItem(_local7);
_local6++;
};
myInstance[_arg2] = (_local5 as _local3);
}
public function onResize(_arg1:Number, _arg2:Number):void{
var setSizeFn:Function;
var width = _arg1;
var height = _arg2;
setSizeFn = null;
try {
setSizeFn = myInstance["setSize"];
} catch(e:Error) {
setSizeFn = null;
};
if (setSizeFn != null){
setSizeFn(width, height);
} else {
myInstance.width = width;
myInstance.height = height;
};
}
public function onUpdate(... _args):void{
var i:int;
var name:String;
var value:*;
var updateArray = _args;
i = 0;
while ((i + 1) < updateArray.length) {
try {
name = String(updateArray[i]);
value = updateArray[(i + 1)];
if ((((typeof(value) == "object")) && (value.__treatAsCollectionSpecialSauce__))){
updateCollection(value, name);
} else {
myInstance[name] = value;
};
} catch(e:Error) {
};
i = (i + 2);
};
}
}
}//package fl.livepreview
Section 7
//Back (fl.motion.easing.Back)
package fl.motion.easing {
public class Back {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 8
//Bounce (fl.motion.easing.Bounce)
package fl.motion.easing {
public class Bounce {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
if (_arg1 < (1 / 2.75)){
return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2));
};
if (_arg1 < (2 / 2.75)){
_arg1 = (_arg1 - (1.5 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2));
};
if (_arg1 < (2.5 / 2.75)){
_arg1 = (_arg1 - (2.25 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2));
};
_arg1 = (_arg1 - (2.625 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 - easeOut((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 < (_arg4 / 2)){
return (((easeIn((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2));
};
return ((((easeOut(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2));
}
}
}//package fl.motion.easing
Section 9
//Circular (fl.motion.easing.Circular)
package fl.motion.easing {
public class Circular {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2));
}
}
}//package fl.motion.easing
Section 10
//Cubic (fl.motion.easing.Cubic)
package fl.motion.easing {
public class Cubic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _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) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 11
//Elastic (fl.motion.easing.Elastic)
package fl.motion.easing {
public class Elastic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) + _arg3) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
--_arg1;
return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 == 2){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * (0.3 * 1.5));
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
};
--_arg1;
return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) * 0.5) + _arg3) + _arg2));
}
}
}//package fl.motion.easing
Section 12
//Exponential (fl.motion.easing.Exponential)
package fl.motion.easing {
public class Exponential {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1 == _arg4)) ? (_arg2 + _arg3) : ((_arg3 * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1 == 0)) ? _arg2 : ((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 == 0){
return (_arg2);
};
if (_arg1 == _arg4){
return ((_arg2 + _arg3));
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2));
};
--_arg1;
return ((((_arg3 / 2) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 13
//Linear (fl.motion.easing.Linear)
package fl.motion.easing {
public class Linear {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
}
}//package fl.motion.easing
Section 14
//Quadratic (fl.motion.easing.Quadratic)
package fl.motion.easing {
public class Quadratic {
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 fl.motion.easing
Section 15
//Quartic (fl.motion.easing.Quartic)
package fl.motion.easing {
public class Quartic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((((_arg3 * _arg1) * _arg1) * _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) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 16
//Quintic (fl.motion.easing.Quintic)
package fl.motion.easing {
public class Quintic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _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) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 17
//Sine (fl.motion.easing.Sine)
package fl.motion.easing {
public class Sine {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2));
}
}
}//package fl.motion.easing
Section 18
//Animator (fl.motion.Animator)
package fl.motion {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class Animator extends EventDispatcher {
private var targetState:Object;
public var transformationPoint:Point;
private var _isPlaying:Boolean;// = false
private var _time:int;// = -1
private var _target:DisplayObject;
public var repeatCount:int;// = 1
private var _lastRenderedTime:int;// = -1
private var playCount:int;// = 0
private var _motion:Motion;
public var orientToPath:Boolean;// = false
public var autoRewind:Boolean;// = false
public var positionMatrix:Matrix;
private static var enterFrameBeacon:MovieClip = new MovieClip();
public function Animator(_arg1:XML=null, _arg2:DisplayObject=null){
orientToPath = false;
autoRewind = false;
repeatCount = 1;
_isPlaying = false;
_lastRenderedTime = -1;
_time = -1;
playCount = 0;
super();
this.motion = new Motion(_arg1);
this.target = _arg2;
}
public function stop():void{
enterFrameBeacon.removeEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
this._isPlaying = false;
this.playCount = 0;
this.rewind();
this.dispatchEvent(new MotionEvent(MotionEvent.MOTION_END));
}
public function get target():DisplayObject{
return (this._target);
}
public function set time(_arg1:int):void{
var _local2:Motion;
var _local3:Keyframe;
var _local4:Boolean;
var _local5:Number;
var _local6:Number;
var _local7:Point;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Matrix;
var _local13:Point;
var _local14:Number;
var _local15:Number;
var _local16:ColorTransform;
var _local17:Number;
var _local18:Number;
var _local19:Number;
if (_arg1 == this._time){
return;
};
_local2 = this.motion;
if (_arg1 > (_local2.duration - 1)){
_arg1 = (_local2.duration - 1);
} else {
if (_arg1 < 0){
_arg1 = 0;
};
};
this._time = _arg1;
this.dispatchEvent(new MotionEvent(MotionEvent.TIME_CHANGE));
_local3 = _local2.getCurrentKeyframe(_arg1);
_local4 = (((_local3.index == this._lastRenderedTime)) && (!(_local3.tweens.length)));
if (_local4){
return;
};
this._target.visible = false;
if (!_local3.blank){
_local5 = _local2.getValue(_arg1, Tweenables.X);
_local6 = _local2.getValue(_arg1, Tweenables.Y);
_local7 = new Point(_local5, _local6);
if (this.positionMatrix){
_local7 = this.positionMatrix.transformPoint(_local7);
};
_local7.x = (_local7.x + this.targetState.x);
_local7.y = (_local7.y + this.targetState.y);
_local8 = (_local2.getValue(_arg1, Tweenables.SCALE_X) * this.targetState.scaleX);
_local9 = (_local2.getValue(_arg1, Tweenables.SCALE_Y) * this.targetState.scaleY);
_local10 = 0;
_local11 = 0;
if (this.orientToPath){
_local17 = _local2.getValue((_arg1 + 1), Tweenables.X);
_local18 = _local2.getValue((_arg1 + 1), Tweenables.Y);
_local19 = (Math.atan2((_local18 - _local6), (_local17 - _local5)) * (180 / Math.PI));
if (!isNaN(_local19)){
_local10 = (_local19 + this.targetState.skewX);
_local11 = (_local19 + this.targetState.skewY);
};
} else {
_local10 = (_local2.getValue(_arg1, Tweenables.SKEW_X) + this.targetState.skewX);
_local11 = (_local2.getValue(_arg1, Tweenables.SKEW_Y) + this.targetState.skewY);
};
_local12 = new Matrix((_local8 * Math.cos((_local11 * (Math.PI / 180)))), (_local8 * Math.sin((_local11 * (Math.PI / 180)))), (-(_local9) * Math.sin((_local10 * (Math.PI / 180)))), (_local9 * Math.cos((_local10 * (Math.PI / 180)))), _local7.x, _local7.y);
_local13 = _local12.transformPoint(this.targetState.transformPointInternal);
_local14 = (_local12.tx - _local13.x);
_local15 = (_local12.ty - _local13.y);
_local12.tx = (_local12.tx + _local14);
_local12.ty = (_local12.ty + _local15);
this._target.rotation = _local11;
this._target.transform.matrix = _local12;
this._target.scaleX = _local8;
this._target.scaleY = _local9;
_local16 = _local2.getColorTransform(_arg1);
if (_local16){
this._target.transform.colorTransform = _local16;
};
this._target.filters = _local2.getFilters(_arg1);
this._target.blendMode = _local3.blendMode;
this._target.cacheAsBitmap = _local3.cacheAsBitmap;
this._target.visible = true;
};
this._lastRenderedTime = this._time;
this.dispatchEvent(new MotionEvent(MotionEvent.MOTION_UPDATE));
}
private function enterFrameHandler(_arg1:Event):void{
this.nextFrame();
}
public function set target(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Point;
if (!_arg1){
return;
};
this._target = _arg1;
this.targetState = {};
this.targetState.scaleX = this._target.scaleX;
this.targetState.scaleY = this._target.scaleY;
this.targetState.skewX = MatrixTransformer.getSkewX(this._target.transform.matrix);
this.targetState.skewY = MatrixTransformer.getSkewY(this._target.transform.matrix);
this.targetState.matrix = this._target.transform.matrix;
_local2 = (this.targetState.bounds = this._target.getBounds(this._target));
if (this.transformationPoint){
_local3 = ((this.transformationPoint.x * _local2.width) + _local2.left);
_local4 = ((this.transformationPoint.y * _local2.height) + _local2.top);
this.targetState.transformPointInternal = new Point(_local3, _local4);
_local5 = this.targetState.matrix.transformPoint(this.targetState.transformPointInternal);
this.targetState.x = _local5.x;
this.targetState.y = _local5.y;
} else {
this.targetState.transformPointInternal = new Point(0, 0);
this.targetState.x = this._target.x;
this.targetState.y = this._target.y;
};
}
public function get isPlaying():Boolean{
return (_isPlaying);
}
public function resume():void{
enterFrameBeacon.addEventListener(Event.ENTER_FRAME, this.enterFrameHandler, false, 0, true);
this._isPlaying = true;
}
private function handleLastFrame():void{
this.playCount++;
if ((((this.repeatCount == 0)) || ((this.playCount < this.repeatCount)))){
this.rewind();
} else {
this.end();
};
}
public function get motion():Motion{
return (this._motion);
}
public function nextFrame():void{
if (this.time >= (this.motion.duration - 1)){
this.handleLastFrame();
} else {
this.time++;
};
}
public function play():void{
if (!this._isPlaying){
enterFrameBeacon.addEventListener(Event.ENTER_FRAME, this.enterFrameHandler, false, 0, true);
this._isPlaying = true;
};
this.playCount = 0;
this.rewind();
this.dispatchEvent(new MotionEvent(MotionEvent.MOTION_START));
}
public function rewind():void{
this.time = 0;
}
public function end():void{
enterFrameBeacon.removeEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
this._isPlaying = false;
this.playCount = 0;
if (this.autoRewind){
this.rewind();
} else {
if (this.time != (this.motion.duration - 1)){
this.time = (this.motion.duration - 1);
};
};
this.dispatchEvent(new MotionEvent(MotionEvent.MOTION_END));
}
public function get time():int{
return (this._time);
}
public function pause():void{
enterFrameBeacon.removeEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
this._isPlaying = false;
}
public function set motion(_arg1:Motion):void{
this._motion = _arg1;
if (((_arg1.source) && (_arg1.source.transformationPoint))){
this.transformationPoint = _arg1.source.transformationPoint.clone();
};
}
public static function fromXMLString(_arg1:String, _arg2:DisplayObject=null):Animator{
return (new Animator(new XML(_arg1), _arg2));
}
}
}//package fl.motion
Section 19
//BezierEase (fl.motion.BezierEase)
package fl.motion {
import flash.geom.*;
public class BezierEase implements ITween {
public var points:Array;
private var firstNode:Point;
private var _target:String;// = ""
private var lastNode:Point;
public function BezierEase(_arg1:XML=null){
_target = "";
super();
this.points = [];
this.parseXML(_arg1);
}
public function set target(_arg1:String):void{
this._target = _arg1;
}
public function get target():String{
return (this._target);
}
public function getValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Array;
var _local7:Number;
if (_arg4 <= 0){
return (NaN);
};
_local5 = (_arg1 / _arg4);
if (_local5 <= 0){
return (_arg2);
};
if (_local5 >= 1){
return ((_arg2 + _arg3));
};
this.firstNode = new Point(0, _arg2);
this.lastNode = new Point(1, (_arg2 + _arg3));
_local6 = [this.firstNode].concat(this.points);
_local6.push(this.lastNode);
_local7 = CustomEase.getYForPercent(_local5, _local6);
return (_local7);
}
private function parseXML(_arg1:XML=null):BezierEase{
var _local2:XMLList;
var _local3:XML;
if (!_arg1){
return (this);
};
if (_arg1.@target.length()){
this.target = _arg1.@target;
};
_local2 = _arg1.elements();
for each (_local3 in _local2) {
this.points.push(new Point(Number(_local3.@x), Number(_local3.@y)));
};
return (this);
}
}
}//package fl.motion
Section 20
//BezierSegment (fl.motion.BezierSegment)
package fl.motion {
import flash.geom.*;
public class BezierSegment {
public var a:Point;
public var c:Point;
public var b:Point;
public var d:Point;
public function BezierSegment(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point){
this.a = _arg1;
this.b = _arg2;
this.c = _arg3;
this.d = _arg4;
}
public function getYForX(_arg1:Number, _arg2:Array=null):Number{
var _local3:Array;
var _local4:Number;
var _local5:Number;
var _local6:Number;
if (this.a.x < this.d.x){
if (_arg1 <= (this.a.x + 1E-16)){
return (this.a.y);
};
if (_arg1 >= (this.d.x - 1E-16)){
return (this.d.y);
};
} else {
if (_arg1 >= (this.a.x + 1E-16)){
return (this.a.y);
};
if (_arg1 <= (this.d.x - 1E-16)){
return (this.d.y);
};
};
if (!_arg2){
_arg2 = getCubicCoefficients(this.a.x, this.b.x, this.c.x, this.d.x);
};
_local3 = getCubicRoots(_arg2[0], _arg2[1], _arg2[2], (_arg2[3] - _arg1));
_local4 = NaN;
if (_local3.length == 0){
_local4 = 0;
} else {
if (_local3.length == 1){
_local4 = _local3[0];
} else {
for each (_local6 in _local3) {
if ((((0 <= _local6)) && ((_local6 <= 1)))){
_local4 = _local6;
break;
};
};
};
};
if (isNaN(_local4)){
return (NaN);
};
_local5 = getSingleValue(_local4, this.a.y, this.b.y, this.c.y, this.d.y);
return (_local5);
}
public function getValue(_arg1:Number):Point{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = this.a.x;
_local3 = (((((_arg1 * _arg1) * (this.d.x - _local2)) + ((3 * (1 - _arg1)) * ((_arg1 * (this.c.x - _local2)) + ((1 - _arg1) * (this.b.x - _local2))))) * _arg1) + _local2);
_local4 = this.a.y;
_local5 = (((((_arg1 * _arg1) * (this.d.y - _local4)) + ((3 * (1 - _arg1)) * ((_arg1 * (this.c.y - _local4)) + ((1 - _arg1) * (this.b.y - _local4))))) * _arg1) + _local4);
return (new Point(_local3, _local5));
}
public static function getCubicCoefficients(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Array{
return ([(((-(_arg1) + (3 * _arg2)) - (3 * _arg3)) + _arg4), (((3 * _arg1) - (6 * _arg2)) + (3 * _arg3)), ((-3 * _arg1) + (3 * _arg2)), _arg1]);
}
public static function getSingleValue(_arg1:Number, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0):Number{
return ((((((_arg1 * _arg1) * (_arg5 - _arg2)) + ((3 * (1 - _arg1)) * ((_arg1 * (_arg4 - _arg2)) + ((1 - _arg1) * (_arg3 - _arg2))))) * _arg1) + _arg2));
}
public static function getCubicRoots(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):Array{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:int;
var _local16:Number;
if (!_arg1){
return (BezierSegment.getQuadraticRoots(_arg2, _arg3, _arg4));
};
if (_arg1 != 1){
_arg2 = (_arg2 / _arg1);
_arg3 = (_arg3 / _arg1);
_arg4 = (_arg4 / _arg1);
};
_local5 = (((_arg2 * _arg2) - (3 * _arg3)) / 9);
_local6 = (((((_arg2 * _arg2) - (3 * _arg3)) / 9) * _local5) * _local5);
_local7 = ((((((2 * _arg2) * _arg2) * _arg2) - ((9 * _arg2) * _arg3)) + (27 * _arg4)) / 54);
_local8 = (_local6 - (_local7 * _local7));
if (_local8 >= 0){
if (!_local5){
return ([0]);
};
_local9 = Math.acos((_local7 / Math.sqrt(_local6)));
_local10 = Math.sqrt(_local5);
_local11 = (((-2 * _local10) * Math.cos((_local9 / 3))) - (_arg2 / 3));
_local12 = (((-2 * _local10) * Math.cos(((_local9 + (2 * Math.PI)) / 3))) - (_arg2 / 3));
_local13 = (((-2 * _local10) * Math.cos(((_local9 + (4 * Math.PI)) / 3))) - (_arg2 / 3));
return ([_local11, _local12, _local13]);
//unresolved jump
};
_local14 = Math.pow((Math.sqrt(-(_local8)) + Math.abs(_local7)), (1 / 3));
_local15 = ((_local7)>0) ? 1 : ((_local7 < 0)) ? -1 : 0;
_local16 = ((-(_local15) * (_local14 + (_local5 / _local14))) - (_arg2 / 3));
return ([_local16]);
}
public static function getQuadraticRoots(_arg1:Number, _arg2:Number, _arg3:Number):Array{
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Number;
_local4 = [];
if (!_arg1){
if (!_arg2){
return ([]);
};
_local4[0] = (-(_arg3) / _arg2);
return (_local4);
};
_local5 = ((_arg2 * _arg2) - ((4 * _arg1) * _arg3));
_local6 = ((_local5)>0) ? 1 : ((_local5 < 0)) ? -1 : 0;
if (_local6 < 0){
return ([]);
};
if (!_local6){
_local4[0] = (-(_arg2) / (2 * _arg1));
} else {
_local4[0] = (_local4[1] = (-(_arg2) / (2 * _arg1)));
_local7 = (Math.sqrt(_local5) / (2 * _arg1));
_local4[0] = (_local4[0] - _local7);
_local4[1] = (_local4[1] + _local7);
};
return (_local4);
}
}
}//package fl.motion
Section 21
//Color (fl.motion.Color)
package fl.motion {
import flash.display.*;
import flash.geom.*;
public class Color extends ColorTransform {
private var _tintMultiplier:Number;// = 0
private var _tintColor:Number;// = 0
public function Color(_arg1:Number=1, _arg2:Number=1, _arg3:Number=1, _arg4:Number=1, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0){
_tintColor = 0;
_tintMultiplier = 0;
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public function setTint(_arg1:uint, _arg2:Number):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
this._tintColor = _arg1;
this._tintMultiplier = _arg2;
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = (1 - _arg2)));
_local3 = ((_arg1 >> 16) & 0xFF);
_local4 = ((_arg1 >> 8) & 0xFF);
_local5 = (_arg1 & 0xFF);
this.redOffset = Math.round((_local3 * _arg2));
this.greenOffset = Math.round((_local4 * _arg2));
this.blueOffset = Math.round((_local5 * _arg2));
}
public function set tintColor(_arg1:uint):void{
this.setTint(_arg1, this.tintMultiplier);
}
public function get brightness():Number{
return ((this.redOffset) ? (1 - this.redMultiplier) : (this.redMultiplier - 1));
}
private function deriveTintColor():uint{
var _local1:Number;
var _local2:uint;
var _local3:uint;
var _local4:uint;
var _local5:uint;
_local1 = (1 / this.tintMultiplier);
_local2 = Math.round((this.redOffset * _local1));
_local3 = Math.round((this.greenOffset * _local1));
_local4 = Math.round((this.blueOffset * _local1));
_local5 = (((_local2 << 16) | (_local3 << 8)) | _local4);
return (_local5);
}
public function get tintMultiplier():Number{
return (this._tintMultiplier);
}
public function get tintColor():uint{
return (this._tintColor);
}
public function set brightness(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (_arg1 > 1){
_arg1 = 1;
} else {
if (_arg1 < -1){
_arg1 = -1;
};
};
_local2 = (1 - Math.abs(_arg1));
_local3 = 0;
if (_arg1 > 0){
_local3 = (_arg1 * 0xFF);
};
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = _local2));
this.redOffset = (this.greenOffset = (this.blueOffset = _local3));
}
public function set tintMultiplier(_arg1:Number):void{
this.setTint(this.tintColor, _arg1);
}
private function parseXML(_arg1:XML=null):Color{
var _local2:XML;
var _local3:XML;
var _local4:String;
var _local5:uint;
if (!_arg1){
return (this);
};
_local2 = _arg1.elements()[0];
if (!_local2){
return (this);
};
for each (_local3 in _local2.attributes()) {
_local4 = _local3.localName();
if (_local4 == "tintColor"){
_local5 = (Number(_local3.toString()) as uint);
this.tintColor = _local5;
} else {
this[_local4] = Number(_local3.toString());
};
};
return (this);
}
public static function interpolateColor(_arg1:uint, _arg2:uint, _arg3:Number):uint{
var _local4:Number;
var _local5:uint;
var _local6:uint;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:uint;
var _local14:uint;
var _local15:uint;
var _local16:uint;
var _local17:uint;
_local4 = (1 - _arg3);
_local5 = ((_arg1 >> 24) & 0xFF);
_local6 = ((_arg1 >> 16) & 0xFF);
_local7 = ((_arg1 >> 8) & 0xFF);
_local8 = (_arg1 & 0xFF);
_local9 = ((_arg2 >> 24) & 0xFF);
_local10 = ((_arg2 >> 16) & 0xFF);
_local11 = ((_arg2 >> 8) & 0xFF);
_local12 = (_arg2 & 0xFF);
_local13 = ((_local5 * _local4) + (_local9 * _arg3));
_local14 = ((_local6 * _local4) + (_local10 * _arg3));
_local15 = ((_local7 * _local4) + (_local11 * _arg3));
_local16 = ((_local8 * _local4) + (_local12 * _arg3));
_local17 = ((((_local13 << 24) | (_local14 << 16)) | (_local15 << 8)) | _local16);
return (_local17);
}
public static function interpolateTransform(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:Number;
var _local5:ColorTransform;
_local4 = (1 - _arg3);
_local5 = new ColorTransform(((_arg1.redMultiplier * _local4) + (_arg2.redMultiplier * _arg3)), ((_arg1.greenMultiplier * _local4) + (_arg2.greenMultiplier * _arg3)), ((_arg1.blueMultiplier * _local4) + (_arg2.blueMultiplier * _arg3)), ((_arg1.alphaMultiplier * _local4) + (_arg2.alphaMultiplier * _arg3)), ((_arg1.redOffset * _local4) + (_arg2.redOffset * _arg3)), ((_arg1.greenOffset * _local4) + (_arg2.greenOffset * _arg3)), ((_arg1.blueOffset * _local4) + (_arg2.blueOffset * _arg3)), ((_arg1.alphaOffset * _local4) + (_arg2.alphaOffset * _arg3)));
return (_local5);
}
public static function fromXML(_arg1:XML):Color{
return (Color(new (Color).parseXML(_arg1)));
}
}
}//package fl.motion
Section 22
//CustomEase (fl.motion.CustomEase)
package fl.motion {
import flash.geom.*;
public class CustomEase implements ITween {
public var points:Array;
private var firstNode:Point;
private var _target:String;// = ""
private var lastNode:Point;
public function CustomEase(_arg1:XML=null){
_target = "";
super();
this.points = [];
this.parseXML(_arg1);
this.firstNode = new Point(0, 0);
this.lastNode = new Point(1, 1);
}
public function set target(_arg1:String):void{
this._target = _arg1;
}
public function get target():String{
return (this._target);
}
public function getValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Array;
var _local7:Number;
if (_arg4 <= 0){
return (NaN);
};
_local5 = (_arg1 / _arg4);
if (_local5 <= 0){
return (_arg2);
};
if (_local5 >= 1){
return ((_arg2 + _arg3));
};
_local6 = [this.firstNode].concat(this.points);
_local6.push(this.lastNode);
_local7 = getYForPercent(_local5, _local6);
return ((_arg2 + (_local7 * _arg3)));
}
private function parseXML(_arg1:XML=null):CustomEase{
var _local2:XMLList;
var _local3:XML;
if (!_arg1){
return (this);
};
if (_arg1.@target.length()){
this.target = _arg1.@target;
};
_local2 = _arg1.elements();
for each (_local3 in _local2) {
this.points.push(new Point(Number(_local3.@x), Number(_local3.@y)));
};
return (this);
}
static function getYForPercent(_arg1:Number, _arg2:Array):Number{
var _local3:BezierSegment;
var _local4:Array;
var _local5:int;
var _local6:BezierSegment;
var _local7:Number;
var _local8:int;
var _local9:BezierSegment;
_local3 = new BezierSegment(_arg2[0], _arg2[1], _arg2[2], _arg2[3]);
_local4 = [_local3];
_local5 = 3;
while (_local5 < (_arg2.length - 3)) {
_local4.push(new BezierSegment(_arg2[_local5], _arg2[(_local5 + 1)], _arg2[(_local5 + 2)], _arg2[(_local5 + 3)]));
_local5 = (_local5 + 3);
};
_local6 = _local3;
if (_arg2.length >= 5){
_local8 = 0;
while (_local8 < _local4.length) {
_local9 = _local4[_local8];
if ((((_local9.a.x <= _arg1)) && ((_arg1 <= _local9.d.x)))){
_local6 = _local9;
break;
};
_local8++;
};
};
_local7 = _local6.getYForX(_arg1);
return (_local7);
}
}
}//package fl.motion
Section 23
//FunctionEase (fl.motion.FunctionEase)
package fl.motion {
import flash.utils.*;
public class FunctionEase implements ITween {
private var _functionName:String;// = ""
public var parameters:Array;// = null
private var _target:String;// = ""
public var easingFunction:Function;// = null
public function FunctionEase(_arg1:XML=null){
_functionName = "";
easingFunction = null;
parameters = null;
_target = "";
super();
this.parseXML(_arg1);
}
public function get functionName():String{
return (this._functionName);
}
public function set functionName(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:String;
var _local5:Class;
_local2 = _arg1.split(".");
_local3 = _local2.pop();
_local4 = _local2.join(".");
_local5 = (getDefinitionByName(_local4) as Class);
if ((_local5[_local3] is Function)){
this.easingFunction = _local5[_local3];
this._functionName = _arg1;
};
}
public function set target(_arg1:String):void{
this._target = _arg1;
}
public function get target():String{
return (this._target);
}
public function getValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Array;
if ((this.parameters is Array)){
_local5 = [_arg1, _arg2, _arg3, _arg4].concat(this.parameters);
return (this.easingFunction.apply(null, _local5));
};
return (this.easingFunction(_arg1, _arg2, _arg3, _arg4));
}
private function parseXML(_arg1:XML=null):FunctionEase{
if (!_arg1){
return (this);
};
if (_arg1.@functionName.length()){
this.functionName = _arg1.@functionName;
};
return (this);
}
}
}//package fl.motion
Section 24
//ITween (fl.motion.ITween)
package fl.motion {
public interface ITween {
function get target():String;
function set target(_arg1:String):void;
function getValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number;
}
}//package fl.motion
Section 25
//Keyframe (fl.motion.Keyframe)
package fl.motion {
import flash.display.*;
import flash.filters.*;
import flash.utils.*;
public class Keyframe {
public var skewX:Number;// = NAN
public var blendMode:String;
public var skewY:Number;// = NAN
public var firstFrame:String;
public var tweenScale:Boolean;// = true
public var cacheAsBitmap:Boolean;// = false
public var rotateTimes:uint;// = 0
public var tweenSync:Boolean;// = false
public var loop:String;
public var scaleX:Number;// = NAN
private var _index:int;// = -1
public var blank:Boolean;// = false
public var tweenSnap:Boolean;// = false
public var scaleY:Number;// = NAN
public var color:Color;
public var rotateDirection:String;// = "auto"
public var orientToPath:Boolean;// = false
public var tweens:Array;
public var label:String;// = ""
public var x:Number;// = NAN
public var y:Number;// = NAN
public var filters:Array;
public function Keyframe(_arg1:XML=null){
_index = -1;
x = NaN;
y = NaN;
scaleX = NaN;
scaleY = NaN;
skewX = NaN;
skewY = NaN;
label = "";
tweenScale = true;
tweenSnap = false;
tweenSync = false;
cacheAsBitmap = false;
blendMode = BlendMode.NORMAL;
rotateDirection = RotateDirection.AUTO;
rotateTimes = 0;
orientToPath = false;
blank = false;
super();
this.tweens = [];
this.filters = [];
this.parseXML(_arg1);
}
public function set index(_arg1:int):void{
this._index = ((_arg1)<0) ? 0 : _arg1;
if (this._index == 0){
this.setDefaults();
};
}
public function getTween(_arg1:String=""):ITween{
var _local2:ITween;
for each (_local2 in this.tweens) {
if ((((((((_local2.target == _arg1)) || ((((_local2.target == "rotation")) && ((((_arg1 == "skewX")) || ((_arg1 == "skewY")))))))) || ((((_local2.target == "position")) && ((((_arg1 == "x")) || ((_arg1 == "y")))))))) || ((((_local2.target == "scale")) && ((((_arg1 == "scaleX")) || ((_arg1 == "scaleY")))))))){
return (_local2);
};
};
return (null);
}
public function setValue(_arg1:String, _arg2:Number):void{
this[_arg1] = _arg2;
}
public function getValue(_arg1:String):Number{
return (Number(this[_arg1]));
}
public function get index():int{
return (this._index);
}
private function setDefaults():void{
if (isNaN(this.x)){
this.x = 0;
};
if (isNaN(this.y)){
this.y = 0;
};
if (isNaN(this.scaleX)){
this.scaleX = 1;
};
if (isNaN(this.scaleY)){
this.scaleY = 1;
};
if (isNaN(this.skewX)){
this.skewX = 0;
};
if (isNaN(this.skewY)){
this.skewY = 0;
};
if (!this.color){
this.color = new Color();
};
}
public function affectsTweenable(_arg1:String=""):Boolean{
return (((((((((((!(_arg1)) || (!(isNaN(this[_arg1]))))) || ((((_arg1 == "color")) && (this.color))))) || ((((_arg1 == "filters")) && (this.filters.length))))) || (this.blank))) || (this.getTween())));
}
private function parseXML(_arg1:XML=null):Keyframe{
var indexString:String;
var indexValue:int;
var tweenableNames:Array;
var tweenableName:String;
var elements:XMLList;
var filtersArray:Array;
var child:XML;
var attribute:XML;
var attributeValue:String;
var name:String;
var tweenChildren:XMLList;
var tweenChild:XML;
var tweenName:String;
var filtersChildren:XMLList;
var filterXML:XML;
var filterName:String;
var filterClassName:String;
var filterClass:Object;
var filterInstance:BitmapFilter;
var filterTypeInfo:XML;
var accessorList:XMLList;
var ratios:Array;
var attrib:XML;
var attribName:String;
var accessor:XML;
var attribType:String;
var attribValue:String;
var uintValue:uint;
var valuesArray:Array;
var xml = _arg1;
if (!xml){
return (this);
};
indexString = xml.@index.toXMLString();
indexValue = parseInt(indexString);
if (indexString){
this.index = indexValue;
} else {
throw (new Error("<Keyframe> is missing the required attribute \"index\"."));
};
if (xml.@label.length()){
this.label = xml.@label;
};
if (xml.@tweenScale.length()){
this.tweenScale = (xml.@tweenScale.toString() == "true");
};
if (xml.@tweenSnap.length()){
this.tweenSnap = (xml.@tweenSnap.toString() == "true");
};
if (xml.@tweenSync.length()){
this.tweenSync = (xml.@tweenSync.toString() == "true");
};
if (xml.@blendMode.length()){
this.blendMode = xml.@blendMode;
};
if (xml.@cacheAsBitmap.length()){
this.cacheAsBitmap = (xml.@cacheAsBitmap.toString() == "true");
};
if (xml.@rotateDirection.length()){
this.rotateDirection = xml.@rotateDirection;
};
if (xml.@rotateTimes.length()){
this.rotateTimes = parseInt(xml.@rotateTimes);
};
if (xml.@orientToPath.length()){
this.orientToPath = (xml.@orientToPath.toString() == "true");
};
if (xml.@blank.length()){
this.blank = (xml.@blank.toString() == "true");
};
tweenableNames = ["x", "y", "scaleX", "scaleY", "rotation", "skewX", "skewY"];
for each (tweenableName in tweenableNames) {
attribute = xml.attribute(tweenableName)[0];
if (!attribute){
} else {
attributeValue = attribute.toString();
if (attributeValue){
this[tweenableName] = Number(attributeValue);
};
};
};
elements = xml.elements();
filtersArray = [];
for each (child in elements) {
name = child.localName();
if (name == "tweens"){
tweenChildren = child.elements();
for each (tweenChild in tweenChildren) {
tweenName = tweenChild.localName();
if (tweenName == "SimpleEase"){
this.tweens.push(new SimpleEase(tweenChild));
} else {
if (tweenName == "CustomEase"){
this.tweens.push(new CustomEase(tweenChild));
} else {
if (tweenName == "BezierEase"){
this.tweens.push(new BezierEase(tweenChild));
} else {
if (tweenName == "FunctionEase"){
this.tweens.push(new FunctionEase(tweenChild));
};
};
};
};
};
} else {
if (name == "filters"){
filtersChildren = child.elements();
for each (filterXML in filtersChildren) {
filterName = filterXML.localName();
filterClassName = ("flash.filters." + filterName);
if (filterName == "AdjustColorFilter"){
} else {
filterClass = getDefinitionByName(filterClassName);
filterInstance = new (filterClass);
filterTypeInfo = describeType(filterInstance);
accessorList = filterTypeInfo.accessor;
ratios = [];
for each (attrib in filterXML.attributes()) {
attribName = attrib.localName();
accessor = accessorList.(@name == attribName)[0];
attribType = accessor.@type;
attribValue = attrib.toString();
if (attribType == "int"){
filterInstance[attribName] = parseInt(attribValue);
} else {
if (attribType == "uint"){
filterInstance[attribName] = (parseInt(attribValue) as uint);
uintValue = (parseInt(attribValue) as uint);
} else {
if (attribType == "Number"){
filterInstance[attribName] = Number(attribValue);
} else {
if (attribType == "Boolean"){
filterInstance[attribName] = (attribValue == "true");
} else {
if (attribType == "Array"){
attribValue = attribValue.substring(1, (attribValue.length - 1));
valuesArray = null;
if ((((attribName == "ratios")) || ((attribName == "colors")))){
valuesArray = splitUint(attribValue);
} else {
if (attribName == "alphas"){
valuesArray = splitNumber(attribValue);
};
};
if (attribName == "ratios"){
ratios = valuesArray;
} else {
if (valuesArray){
filterInstance[attribName] = valuesArray;
};
};
} else {
if (attribType == "String"){
filterInstance[attribName] = attribValue;
};
};
};
};
};
};
};
if (ratios.length){
filterInstance["ratios"] = ratios;
};
filtersArray.push(filterInstance);
};
};
} else {
if (name == "color"){
this.color = Color.fromXML(child);
};
};
};
this.filters = filtersArray;
};
return (this);
}
public function set rotation(_arg1:Number):void{
if (((isNaN(this.skewX)) || (isNaN(this.skewY)))){
this.skewX = _arg1;
} else {
this.skewX = (this.skewX + (_arg1 - this.skewY));
};
this.skewY = _arg1;
}
public function get rotation():Number{
return (this.skewY);
}
private static function splitNumber(_arg1:String):Array{
var _local2:Array;
var _local3:int;
_local2 = _arg1.split(",");
_local3 = 0;
while (_local3 < _local2.length) {
_local2[_local3] = Number(_local2[_local3]);
_local3++;
};
return (_local2);
}
private static function splitUint(_arg1:String):Array{
var _local2:Array;
var _local3:int;
_local2 = _arg1.split(",");
_local3 = 0;
while (_local3 < _local2.length) {
_local2[_local3] = (parseInt(_local2[_local3]) as uint);
_local3++;
};
return (_local2);
}
private static function splitInt(_arg1:String):Array{
var _local2:Array;
var _local3:int;
_local2 = _arg1.split(",");
_local3 = 0;
while (_local3 < _local2.length) {
_local2[_local3] = (parseInt(_local2[_local3]) as int);
_local3++;
};
return (_local2);
}
}
}//package fl.motion
Section 26
//MatrixTransformer (fl.motion.MatrixTransformer)
package fl.motion {
import flash.geom.*;
public class MatrixTransformer {
public static function getSkewY(_arg1:Matrix):Number{
return ((Math.atan2(_arg1.b, _arg1.a) * (180 / Math.PI)));
}
public static function getScaleX(_arg1:Matrix):Number{
return (Math.sqrt(((_arg1.a * _arg1.a) + (_arg1.b * _arg1.b))));
}
public static function getScaleY(_arg1:Matrix):Number{
return (Math.sqrt(((_arg1.c * _arg1.c) + (_arg1.d * _arg1.d))));
}
public static function setSkewXRadians(_arg1:Matrix, _arg2:Number):void{
var _local3:Number;
_local3 = getScaleY(_arg1);
_arg1.c = (-(_local3) * Math.sin(_arg2));
_arg1.d = (_local3 * Math.cos(_arg2));
}
public static function setRotation(_arg1:Matrix, _arg2:Number):void{
setRotationRadians(_arg1, (_arg2 * (Math.PI / 180)));
}
public static function rotateAroundInternalPoint(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Point;
_local5 = new Point(_arg2, _arg3);
_local5 = _arg1.transformPoint(_local5);
_arg1.tx = (_arg1.tx - _local5.x);
_arg1.ty = (_arg1.ty - _local5.y);
_arg1.rotate((_arg4 * (Math.PI / 180)));
_arg1.tx = (_arg1.tx + _local5.x);
_arg1.ty = (_arg1.ty + _local5.y);
}
public static function setSkewX(_arg1:Matrix, _arg2:Number):void{
setSkewXRadians(_arg1, (_arg2 * (Math.PI / 180)));
}
public static function setSkewY(_arg1:Matrix, _arg2:Number):void{
setSkewYRadians(_arg1, (_arg2 * (Math.PI / 180)));
}
public static function setScaleX(_arg1:Matrix, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = getScaleX(_arg1);
if (_local3){
_local4 = (_arg2 / _local3);
_arg1.a = (_arg1.a * _local4);
_arg1.b = (_arg1.b * _local4);
} else {
_local5 = getSkewYRadians(_arg1);
_arg1.a = (Math.cos(_local5) * _arg2);
_arg1.b = (Math.sin(_local5) * _arg2);
};
}
public static function setScaleY(_arg1:Matrix, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = getScaleY(_arg1);
if (_local3){
_local4 = (_arg2 / _local3);
_arg1.c = (_arg1.c * _local4);
_arg1.d = (_arg1.d * _local4);
} else {
_local5 = getSkewXRadians(_arg1);
_arg1.c = (-(Math.sin(_local5)) * _arg2);
_arg1.d = (Math.cos(_local5) * _arg2);
};
}
public static function setRotationRadians(_arg1:Matrix, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
_local3 = getRotationRadians(_arg1);
_local4 = getSkewXRadians(_arg1);
setSkewXRadians(_arg1, ((_local4 + _arg2) - _local3));
setSkewYRadians(_arg1, _arg2);
}
public static function setSkewYRadians(_arg1:Matrix, _arg2:Number):void{
var _local3:Number;
_local3 = getScaleX(_arg1);
_arg1.a = (_local3 * Math.cos(_arg2));
_arg1.b = (_local3 * Math.sin(_arg2));
}
public static function getSkewX(_arg1:Matrix):Number{
return ((Math.atan2(-(_arg1.c), _arg1.d) * (180 / Math.PI)));
}
public static function getSkewYRadians(_arg1:Matrix):Number{
return (Math.atan2(_arg1.b, _arg1.a));
}
public static function getSkewXRadians(_arg1:Matrix):Number{
return (Math.atan2(-(_arg1.c), _arg1.d));
}
public static function getRotation(_arg1:Matrix):Number{
return ((getRotationRadians(_arg1) * (180 / Math.PI)));
}
public static function rotateAroundExternalPoint(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number):void{
_arg1.tx = (_arg1.tx - _arg2);
_arg1.ty = (_arg1.ty - _arg3);
_arg1.rotate((_arg4 * (Math.PI / 180)));
_arg1.tx = (_arg1.tx + _arg2);
_arg1.ty = (_arg1.ty + _arg3);
}
public static function getRotationRadians(_arg1:Matrix):Number{
return (getSkewYRadians(_arg1));
}
public static function matchInternalPointWithExternal(_arg1:Matrix, _arg2:Point, _arg3:Point):void{
var _local4:Point;
var _local5:Number;
var _local6:Number;
_local4 = _arg1.transformPoint(_arg2);
_local5 = (_arg3.x - _local4.x);
_local6 = (_arg3.y - _local4.y);
_arg1.tx = (_arg1.tx + _local5);
_arg1.ty = (_arg1.ty + _local6);
}
}
}//package fl.motion
Section 27
//Motion (fl.motion.Motion)
package fl.motion {
import flash.filters.*;
import flash.geom.*;
import flash.utils.*;
public class Motion {
private var _keyframesCompact:Array;
public var keyframes:Array;
public var source:Source;
private var _duration:int;// = 0
private static var typeCache:Object = {};
public function Motion(_arg1:XML=null){
var _local2:Keyframe;
_duration = 0;
super();
this.keyframes = [];
this.parseXML(_arg1);
if (!this.source){
this.source = new Source();
};
if (this.duration == 0){
_local2 = new Keyframe();
_local2.index = 0;
this.addKeyframe(_local2);
};
}
public function getFilters(_arg1:Number):Array{
var _local2:Array;
var _local3:Keyframe;
var _local4:Array;
var _local5:Number;
var _local6:ITween;
var _local7:Keyframe;
var _local8:Array;
var _local9:Number;
var _local10:Number;
_local2 = null;
_local3 = this.getCurrentKeyframe(_arg1, "filters");
if (((!(_local3)) || (!(_local3.filters.length)))){
return ([]);
};
_local4 = _local3.filters;
_local5 = (_arg1 - _local3.index);
_local6 = ((_local3.getTween("filters")) || (_local3.getTween()));
if ((((_local5 == 0)) || (!(_local6)))){
_local2 = _local4;
} else {
if (_local6){
_local7 = this.getNextKeyframe(_arg1, "filters");
if (((!(_local7)) || (!(_local7.filters.length)))){
_local2 = _local4;
} else {
_local8 = _local7.filters;
_local9 = (_local7.index - _local3.index);
_local10 = _local6.getValue(_local5, 0, 1, _local9);
_local2 = interpolateFilters(_local4, _local8, _local10);
};
};
};
return (_local2);
}
public function getCurrentKeyframe(_arg1:int, _arg2:String=""):Keyframe{
var _local3:int;
var _local4:Keyframe;
if (((((isNaN(_arg1)) || ((_arg1 < 0)))) || ((_arg1 > (this.duration - 1))))){
return (null);
};
_local3 = _arg1;
while (_local3 > 0) {
_local4 = this.keyframes[_local3];
if (((_local4) && (_local4.affectsTweenable(_arg2)))){
return (_local4);
};
_local3--;
};
return (this.keyframes[0]);
}
public function get duration():int{
if (this._duration < this.keyframes.length){
this._duration = this.keyframes.length;
};
return (this._duration);
}
public function get keyframesCompact():Array{
var _local1:Keyframe;
this._keyframesCompact = [];
for each (_local1 in this.keyframes) {
if (_local1){
this._keyframesCompact.push(_local1);
};
};
return (this._keyframesCompact);
}
private function parseXML(_arg1:XML):Motion{
var _local2:XMLList;
var _local3:Number;
var _local4:XML;
var _local5:XML;
if (!_arg1){
return (this);
};
if (_arg1.@duration.length()){
this._duration = parseInt(_arg1.@duration);
};
_local2 = _arg1.elements();
_local3 = 0;
while (_local3 < _local2.length()) {
_local4 = _local2[_local3];
if (_local4.localName() == "source"){
_local5 = _local4.children()[0];
this.source = new Source(_local5);
} else {
if (_local4.localName() == "Keyframe"){
this.addKeyframe(new Keyframe(_local4));
};
};
_local3++;
};
return (this);
}
public function set duration(_arg1:int):void{
if (_arg1 < this.keyframes.length){
_arg1 = this.keyframes.length;
};
this._duration = _arg1;
}
private function indexOutOfRange(_arg1:int):Boolean{
return (((((isNaN(_arg1)) || ((_arg1 < 0)))) || ((_arg1 > (this.duration - 1)))));
}
public function addKeyframe(_arg1:Keyframe):void{
this.keyframes[_arg1.index] = _arg1;
if (this.duration < this.keyframes.length){
this.duration = this.keyframes.length;
};
}
public function setValue(_arg1:int, _arg2:String, _arg3:Number):void{
var _local4:Keyframe;
if (_arg1 == 0){
return;
};
_local4 = this.keyframes[_arg1];
if (!_local4){
_local4 = new Keyframe();
_local4.index = _arg1;
this.addKeyframe(_local4);
};
_local4.setValue(_arg2, _arg3);
}
public function getNextKeyframe(_arg1:int, _arg2:String=""):Keyframe{
var _local3:int;
var _local4:Keyframe;
if (((((isNaN(_arg1)) || ((_arg1 < 0)))) || ((_arg1 > (this.duration - 1))))){
return (null);
};
_local3 = (_arg1 + 1);
while (_local3 < this.keyframes.length) {
_local4 = this.keyframes[_local3];
if (((_local4) && (_local4.affectsTweenable(_arg2)))){
return (_local4);
};
_local3++;
};
return (null);
}
public function getValue(_arg1:Number, _arg2:String):Number{
var _local3:Number;
var _local4:Keyframe;
var _local5:Number;
var _local6:Number;
var _local7:ITween;
var _local8:String;
var _local9:Keyframe;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local3 = NaN;
_local4 = this.getCurrentKeyframe(_arg1, _arg2);
if (((!(_local4)) || (_local4.blank))){
return (NaN);
};
_local5 = _local4.getValue(_arg2);
if (((isNaN(_local5)) && ((_local4.index > 0)))){
_local5 = this.getValue((_local4.index - 1), _arg2);
};
if (isNaN(_local5)){
return (NaN);
};
_local6 = (_arg1 - _local4.index);
if (_local6 == 0){
return (_local5);
};
_local7 = ((_local4.getTween(_arg2)) || (_local4.getTween()));
if (((((!(_local7)) || (((!(_local4.tweenScale)) && ((((_arg2 == Tweenables.SCALE_X)) || ((_arg2 == Tweenables.SCALE_Y)))))))) || ((((_local4.rotateDirection == RotateDirection.NONE)) && ((((((_arg2 == Tweenables.ROTATION)) || ((_arg2 == Tweenables.SKEW_X)))) || ((_arg2 == Tweenables.SKEW_Y)))))))){
return (_local5);
};
_local8 = _arg2;
if (_local7.target == ""){
_local8 = "";
};
_local9 = this.getNextKeyframe(_arg1, _local8);
if (((!(_local9)) || (_local9.blank))){
return (_local5);
};
_local10 = _local9.getValue(_arg2);
if (isNaN(_local10)){
_local10 = _local5;
};
_local11 = (_local10 - _local5);
if ((((((_arg2 == Tweenables.SKEW_X)) || ((_arg2 == Tweenables.SKEW_Y)))) || ((_arg2 == Tweenables.ROTATION)))){
if (_local4.rotateDirection == RotateDirection.AUTO){
_local11 = (_local11 % 360);
if (_local11 > 180){
_local11 = (_local11 - 360);
} else {
if (_local11 < -180){
_local11 = (_local11 + 360);
};
};
} else {
if (_local4.rotateDirection == RotateDirection.CW){
if (_local11 < 0){
_local11 = ((_local11 % 360) + 360);
};
_local11 = (_local11 + (_local4.rotateTimes * 360));
} else {
if (_local11 > 0){
_local11 = ((_local11 % 360) - 360);
};
_local11 = (_local11 - (_local4.rotateTimes * 360));
};
};
};
_local12 = (_local9.index - _local4.index);
_local3 = _local7.getValue(_local6, _local5, _local11, _local12);
return (_local3);
}
public function set keyframesCompact(_arg1:Array):void{
var _local2:Keyframe;
this._keyframesCompact = _arg1.concat();
this.keyframes = [];
for each (_local2 in this._keyframesCompact) {
this.addKeyframe(_local2);
};
}
public function getColorTransform(_arg1:int):ColorTransform{
var _local2:ColorTransform;
var _local3:Keyframe;
var _local4:ColorTransform;
var _local5:Number;
var _local6:ITween;
var _local7:Keyframe;
var _local8:ColorTransform;
var _local9:Number;
var _local10:Number;
_local2 = null;
_local3 = this.getCurrentKeyframe(_arg1, "color");
if (((!(_local3)) || (!(_local3.color)))){
return (null);
};
_local4 = _local3.color;
_local5 = (_arg1 - _local3.index);
_local6 = ((((_local3.getTween("color")) || (_local3.getTween("alpha")))) || (_local3.getTween()));
if ((((_local5 == 0)) || (!(_local6)))){
_local2 = _local4;
} else {
if (_local6){
_local7 = this.getNextKeyframe(_arg1, "color");
if (((!(_local7)) || (!(_local7.color)))){
_local2 = _local4;
} else {
_local8 = _local7.color;
_local9 = (_local7.index - _local3.index);
_local10 = _local6.getValue(_local5, 0, 1, _local9);
_local2 = Color.interpolateTransform(_local4, _local8, _local10);
};
};
};
return (_local2);
}
private static function getTypeInfo(_arg1):XML{
var _local2:String;
_local2 = "";
if ((_arg1 is String)){
_local2 = _arg1;
} else {
_local2 = getQualifiedClassName(_arg1);
};
if ((_local2 in typeCache)){
return (typeCache[_local2]);
};
if ((_arg1 is String)){
_arg1 = getDefinitionByName(_arg1);
};
return ((typeCache[_local2] = describeType(_arg1)));
}
public static function interpolateFilter(_arg1:BitmapFilter, _arg2:BitmapFilter, _arg3:Number):BitmapFilter{
var _local4:Number;
var _local5:BitmapFilter;
var _local6:XML;
var _local7:XMLList;
var _local8:XML;
var _local9:String;
var _local10:String;
var _local11:uint;
var _local12:uint;
var _local13:uint;
var _local14:Array;
var _local15:Array;
var _local16:Array;
var _local17:int;
var _local18:int;
var _local19:int;
var _local20:int;
var _local21:int;
var _local22:Number;
var _local23:uint;
var _local24:Number;
var _local25:int;
var _local26:Number;
var _local27:uint;
var _local28:Number;
var _local29:int;
var _local30:uint;
var _local31:Number;
if (((!(_arg2)) || (!((_arg1["constructor"] == _arg2["constructor"]))))){
return (_arg1);
};
if (_arg3 > 1){
_arg3 = 1;
} else {
if (_arg3 < 0){
_arg3 = 0;
};
};
_local4 = (1 - _arg3);
_local5 = _arg1.clone();
_local6 = getTypeInfo(_arg1);
_local7 = _local6.accessor;
for each (_local8 in _local7) {
_local9 = _local8.@name.toString();
_local10 = _local8.@type;
if ((((_local10 == "Number")) || ((_local10 == "int")))){
_local5[_local9] = ((_arg1[_local9] * _local4) + (_arg2[_local9] * _arg3));
} else {
if (_local10 == "uint"){
switch (_local9){
case "color":
case "highlightColor":
case "shadowColor":
_local11 = _arg1[_local9];
_local12 = _arg2[_local9];
_local13 = Color.interpolateColor(_local11, _local12, _arg3);
_local5[_local9] = _local13;
break;
default:
_local5[_local9] = ((_arg1[_local9] * _local4) + (_arg2[_local9] * _arg3));
break;
};
};
};
};
if ((((_arg1 is GradientGlowFilter)) || ((_arg1 is GradientBevelFilter)))){
_local14 = [];
_local15 = [];
_local16 = [];
_local17 = _arg1["ratios"].length;
_local18 = _arg2["ratios"].length;
_local19 = Math.max(_local17, _local18);
_local20 = 0;
while (_local20 < _local19) {
_local21 = Math.min(_local20, (_local17 - 1));
_local22 = _arg1["ratios"][_local21];
_local23 = _arg1["colors"][_local21];
_local24 = _arg1["alphas"][_local21];
_local25 = Math.min(_local20, (_local18 - 1));
_local26 = _arg2["ratios"][_local25];
_local27 = _arg2["colors"][_local25];
_local28 = _arg2["alphas"][_local25];
_local29 = ((_local22 * _local4) + (_local26 * _arg3));
_local30 = Color.interpolateColor(_local23, _local27, _arg3);
_local31 = ((_local24 * _local4) + (_local28 * _arg3));
_local14[_local20] = _local29;
_local15[_local20] = _local30;
_local16[_local20] = _local31;
_local20++;
};
_local5["colors"] = _local15;
_local5["alphas"] = _local16;
_local5["ratios"] = _local14;
};
return (_local5);
}
public static function interpolateFilters(_arg1:Array, _arg2:Array, _arg3:Number):Array{
var _local4:Array;
var _local5:int;
var _local6:BitmapFilter;
var _local7:BitmapFilter;
var _local8:BitmapFilter;
if (_arg1.length != _arg2.length){
return (null);
};
_local4 = [];
_local5 = 0;
while (_local5 < _arg1.length) {
_local6 = _arg1[_local5];
_local7 = _arg2[_local5];
_local8 = interpolateFilter(_local6, _local7, _arg3);
if (_local8){
_local4.push(_local8);
};
_local5++;
};
return (_local4);
}
public static function fromXMLString(_arg1:String):Motion{
var _local2:XML;
_local2 = new XML(_arg1);
return (new Motion(_local2));
}
}
}//package fl.motion
Section 28
//MotionEvent (fl.motion.MotionEvent)
package fl.motion {
import flash.events.*;
public class MotionEvent extends Event {
public static const MOTION_UPDATE:String = "motionUpdate";
public static const TIME_CHANGE:String = "timeChange";
public static const MOTION_START:String = "motionStart";
public static const MOTION_END:String = "motionEnd";
public function MotionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function clone():Event{
return (new MotionEvent(this.type, this.bubbles, this.cancelable));
}
}
}//package fl.motion
Section 29
//RotateDirection (fl.motion.RotateDirection)
package fl.motion {
public class RotateDirection {
public static const CW:String = "cw";
public static const CCW:String = "ccw";
public static const NONE:String = "none";
public static const AUTO:String = "auto";
}
}//package fl.motion
Section 30
//SimpleEase (fl.motion.SimpleEase)
package fl.motion {
public class SimpleEase implements ITween {
private var _ease:Number;// = 0
private var _target:String;// = ""
public function SimpleEase(_arg1:XML=null){
_ease = 0;
_target = "";
super();
this.parseXML(_arg1);
}
public function set target(_arg1:String):void{
this._target = _arg1;
}
private function parseXML(_arg1:XML=null):SimpleEase{
if (_arg1){
if (_arg1.@ease.length()){
this.ease = Number(_arg1.@ease);
};
};
return (this);
}
public function get ease():Number{
return (this._ease);
}
public function get target():String{
return (this._target);
}
public function getValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (easeQuadPercent(_arg1, _arg2, _arg3, _arg4, this.ease));
}
public function set ease(_arg1:Number):void{
this._ease = ((_arg1 > 1)) ? 1 : ((_arg1 < -1)) ? -1 : (isNaN(_arg1)) ? 0 : _arg1;
}
public static function easeQuadPercent(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
if (_arg4 <= 0){
return (NaN);
};
if (_arg1 <= 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 >= 1){
return ((_arg2 + _arg3));
};
if (!_arg5){
return (((_arg3 * _arg1) + _arg2));
};
if (_arg5 > 1){
_arg5 = 1;
} else {
if (_arg5 < -1){
_arg5 = -1;
};
};
if (_arg5 < 0){
return ((((_arg3 * _arg1) * ((_arg1 * -(_arg5)) + (1 + _arg5))) + _arg2));
};
return ((((_arg3 * _arg1) * (((2 - _arg1) * _arg5) + (1 - _arg5))) + _arg2));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg4 <= 0){
return (NaN);
};
if (_arg1 <= 0){
return (_arg2);
};
if (_arg1 >= _arg4){
return ((_arg2 + _arg3));
};
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
}
}//package fl.motion
Section 31
//Source (fl.motion.Source)
package fl.motion {
import flash.geom.*;
public class Source {
public var instanceName:String;// = ""
public var symbolName:String;// = ""
public var dimensions:Rectangle;
public var scaleX:Number;// = 1
public var skewY:Number;// = 0
public var skewX:Number;// = 0
public var scaleY:Number;// = 1
public var elementType:String;// = ""
public var transformationPoint:Point;
public var linkageID:String;// = ""
public var frameRate:Number;// = NAN
public var x:Number;// = 0
public var y:Number;// = 0
public var rotation:Number;// = 0
public function Source(_arg1:XML=null){
frameRate = NaN;
elementType = "";
symbolName = "";
instanceName = "";
linkageID = "";
x = 0;
y = 0;
scaleX = 1;
scaleY = 1;
skewX = 0;
skewY = 0;
rotation = 0;
super();
this.parseXML(_arg1);
}
private function parseXML(_arg1:XML=null):Source{
var _local2:XMLList;
var _local3:XML;
var _local4:XML;
var _local5:XML;
if (!_arg1){
return (this);
};
if (_arg1.@instanceName){
this.instanceName = String(_arg1.@instanceName);
};
if (_arg1.@symbolName){
this.symbolName = String(_arg1.@symbolName);
};
if (_arg1.@linkageID){
this.linkageID = String(_arg1.@linkageID);
};
if (!isNaN(_arg1.@frameRate)){
this.frameRate = Number(_arg1.@frameRate);
};
_local2 = _arg1.elements();
for each (_local3 in _local2) {
if (_local3.localName() == "transformationPoint"){
_local4 = _local3.children()[0];
this.transformationPoint = new Point(Number(_local4.@x), Number(_local4.@y));
} else {
if (_local3.localName() == "dimensions"){
_local5 = _local3.children()[0];
this.dimensions = new Rectangle(Number(_local5.@left), Number(_local5.@top), Number(_local5.@width), Number(_local5.@height));
};
};
};
return (this);
}
}
}//package fl.motion
Section 32
//Tweenables (fl.motion.Tweenables)
package fl.motion {
public class Tweenables {
public static const SCALE_X:String = "scaleX";
public static const SCALE_Y:String = "scaleY";
public static const SKEW_X:String = "skewX";
public static const SKEW_Y:String = "skewY";
public static const X:String = "x";
public static const Y:String = "y";
public static const ROTATION:String = "rotation";
}
}//package fl.motion
Section 33
//Back (fl.transitions.easing.Back)
package fl.transitions.easing {
public class Back {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2));
}
}
}//package fl.transitions.easing
Section 34
//Bounce (fl.transitions.easing.Bounce)
package fl.transitions.easing {
public class Bounce {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
if (_arg1 < (1 / 2.75)){
return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2));
};
if (_arg1 < (2 / 2.75)){
_arg1 = (_arg1 - (1.5 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2));
};
if (_arg1 < (2.5 / 2.75)){
_arg1 = (_arg1 - (2.25 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2));
};
_arg1 = (_arg1 - (2.625 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 - easeOut((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 < (_arg4 / 2)){
return (((easeIn((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2));
};
return ((((easeOut(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2));
}
}
}//package fl.transitions.easing
Section 35
//Elastic (fl.transitions.easing.Elastic)
package fl.transitions.easing {
public class Elastic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) + _arg3) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
--_arg1;
return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 == 2){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * (0.3 * 1.5));
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
};
--_arg1;
return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) * 0.5) + _arg3) + _arg2));
}
}
}//package fl.transitions.easing
Section 36
//None (fl.transitions.easing.None)
package fl.transitions.easing {
public class None {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
}
}//package fl.transitions.easing
Section 37
//Regular (fl.transitions.easing.Regular)
package fl.transitions.easing {
public class Regular {
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 fl.transitions.easing
Section 38
//Strong (fl.transitions.easing.Strong)
package fl.transitions.easing {
public class Strong {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _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) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package fl.transitions.easing
Section 39
//Blinds (fl.transitions.Blinds)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class Blinds extends Transition {
protected var _numStrips:uint;// = 10
protected var _mask:MovieClip;
protected var _innerMask:MovieClip;
protected var _dimension:uint;// = 0
public function Blinds(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_numStrips = 10;
_dimension = 0;
super(_arg1, _arg2, _arg3);
this._dimension = (_arg2.dimension) ? 1 : 0;
if (_arg2.numStrips){
this._numStrips = _arg2.numStrips;
};
this._initMask();
}
protected function _initMask():void{
var _local1:Rectangle;
this._mask = new MovieClip();
this._mask.visible = false;
this._content.addChild(this._mask);
this._innerMask = new MovieClip();
this._mask.addChild(this._innerMask);
this._innerMask.x = (this._innerMask.y = 50);
if (this._dimension){
this._innerMask.rotation = -90;
};
this._innerMask.graphics.beginFill(0xFF0000);
this.drawBox(this._innerMask, 0, 0, 100, 100);
this._innerMask.graphics.endFill();
_local1 = this._innerBounds;
this._mask.x = _local1.left;
this._mask.y = _local1.top;
this._mask.width = _local1.width;
this._mask.height = _local1.height;
}
override protected function _render(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:MovieClip;
var _local5:Number;
_local2 = (100 / this._numStrips);
_local3 = (_arg1 * _local2);
_local4 = this._innerMask;
_local4.graphics.clear();
_local5 = this._numStrips;
_local4.graphics.beginFill(0xFF0000);
while (_local5--) {
this.drawBox(_local4, -50, ((_local5 * _local2) - 50), 100, _local3);
};
_local4.graphics.endFill();
}
override public function get type():Class{
return (Blinds);
}
override public function cleanUp():void{
this._content.removeChild(this._mask);
this._content.mask = null;
super.cleanUp();
}
override public function start():void{
this._content.mask = this._mask;
super.start();
}
}
}//package fl.transitions
Section 40
//Fade (fl.transitions.Fade)
package fl.transitions {
import flash.display.*;
public class Fade extends Transition {
protected var _alphaFinal:Number;
public function Fade(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
super(_arg1, _arg2, _arg3);
this._alphaFinal = this.manager.contentAppearance.alpha;
}
override protected function _render(_arg1:Number):void{
this._content.alpha = (this._alphaFinal * _arg1);
}
override public function get type():Class{
return (Fade);
}
}
}//package fl.transitions
Section 41
//Fly (fl.transitions.Fly)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class Fly extends Transition {
protected var _xInitial:Number;
protected var _yFinal:Number;
public var className:String;// = "Fly"
protected var _stagePoints:Object;
protected var _yInitial:Number;
protected var _startPoint:Number;// = 4
protected var _xFinal:Number;
public function Fly(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
var _local4:Stage;
var _local5:String;
var _local6:Object;
var _local7:String;
var _local8:Rectangle;
className = "Fly";
_startPoint = 4;
super(_arg1, _arg2, _arg3);
if (_arg2.startPoint){
this._startPoint = _arg2.startPoint;
};
this._xFinal = this.manager.contentAppearance.x;
this._yFinal = this.manager.contentAppearance.y;
_local4 = _arg1.stage;
_local5 = _local4.scaleMode;
_local4.scaleMode = StageScaleMode.SHOW_ALL;
_local6 = (this._stagePoints = {});
_local6[1] = new Point(0, 0);
_local6[2] = new Point(0, 0);
_local6[3] = new Point(_local4.stageWidth, 0);
_local6[4] = new Point(0, 0);
_local6[5] = new Point((_local4.stageWidth / 2), (_local4.stageHeight / 2));
_local6[6] = new Point(_local4.stageWidth, 0);
_local6[7] = new Point(0, _local4.stageHeight);
_local6[8] = new Point(0, _local4.stageHeight);
_local6[9] = new Point(_local4.stageWidth, _local4.stageHeight);
for (_local7 in _local6) {
this._content.parent.globalToLocal(_local6[_local7]);
};
_local8 = this._innerBounds;
_local6[1].x = (_local6[1].x - _local8.right);
_local6[1].y = (_local6[1].y - _local8.bottom);
_local6[2].x = this.manager.contentAppearance.x;
_local6[2].y = (_local6[2].y - _local8.bottom);
_local6[3].x = (_local6[3].x - _local8.left);
_local6[3].y = (_local6[3].y - _local8.bottom);
_local6[4].x = (_local6[4].x - _local8.right);
_local6[4].y = this.manager.contentAppearance.y;
_local6[5].x = (_local6[5].x - ((_local8.right + _local8.left) / 2));
_local6[5].y = (_local6[5].y - ((_local8.bottom + _local8.top) / 2));
_local6[6].x = (_local6[6].x - _local8.left);
_local6[6].y = this.manager.contentAppearance.y;
_local6[7].x = (_local6[7].x - _local8.right);
_local6[7].y = (_local6[7].y - _local8.top);
_local6[8].x = this.manager.contentAppearance.x;
_local6[8].y = (_local6[8].y - _local8.top);
_local6[9].x = (_local6[9].x - _local8.left);
_local6[9].y = (_local6[9].y - _local8.top);
this._xInitial = this._stagePoints[this._startPoint].x;
this._yInitial = this._stagePoints[this._startPoint].y;
_local4.scaleMode = _local5;
}
override protected function _render(_arg1:Number):void{
this._content.x = (this._xFinal + ((this._xInitial - this._xFinal) * (1 - _arg1)));
this._content.y = (this._yFinal + ((this._yInitial - this._yFinal) * (1 - _arg1)));
}
override public function get type():Class{
return (Fly);
}
}
}//package fl.transitions
Section 42
//Iris (fl.transitions.Iris)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class Iris extends Transition {
protected var _minDimension:Number;// = NAN
protected var _shape:String;// = "SQUARE"
protected var _cornerMode:Boolean;// = false
protected var _renderFunction:Function;
protected var _maxDimension:Number;// = NAN
protected var _mask:MovieClip;
protected var _startPoint:uint;// = 5
public static const CIRCLE:String = "CIRCLE";
public static const SQUARE:String = "SQUARE";
public function Iris(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_startPoint = 5;
_cornerMode = false;
_shape = SQUARE;
_maxDimension = NaN;
_minDimension = NaN;
super(_arg1, _arg2, _arg3);
if (_arg2.startPoint){
this._startPoint = _arg2.startPoint;
};
if (_arg2.shape){
this._shape = _arg2.shape;
};
this._maxDimension = Math.max(this._width, this._height);
this._minDimension = Math.min(this._width, this._height);
if ((this._startPoint % 2)){
this._cornerMode = true;
};
if (this._shape == SQUARE){
if (this._cornerMode){
this._renderFunction = this._renderSquareCorner;
} else {
this._renderFunction = this._renderSquareEdge;
};
} else {
if (this._shape == CIRCLE){
this._renderFunction = this._renderCircle;
};
};
this._initMask();
}
protected function _drawHalfCircle(_arg1:MovieClip, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
_local3 = 0;
_local4 = 0;
_arg1.graphics.lineTo(0, -(_arg2));
_arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg2) + _local3), (-(_arg2) + _local4), ((Math.sin((Math.PI / 4)) * _arg2) + _local3), ((-(Math.sin((Math.PI / 4))) * _arg2) + _local4));
_arg1.graphics.curveTo((_arg2 + _local3), ((-(Math.tan((Math.PI / 8))) * _arg2) + _local4), (_arg2 + _local3), _local4);
_arg1.graphics.curveTo((_arg2 + _local3), ((Math.tan((Math.PI / 8)) * _arg2) + _local4), ((Math.sin((Math.PI / 4)) * _arg2) + _local3), ((Math.sin((Math.PI / 4)) * _arg2) + _local4));
_arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg2) + _local3), (_arg2 + _local4), _local3, (_arg2 + _local4));
_arg1.graphics.lineTo(0, 0);
}
protected function _initMask():void{
var _local1:MovieClip;
var _local2:Rectangle;
_local1 = (this._mask = new MovieClip());
_local1.visible = false;
this._content.addChild(_local1);
_local2 = this._innerBounds;
switch (this._startPoint){
case 1:
_local1.x = _local2.left;
_local1.y = _local2.top;
break;
case 4:
_local1.x = _local2.left;
_local1.y = ((_local2.top + _local2.bottom) * 0.5);
break;
case 3:
_local1.rotation = 90;
_local1.x = _local2.right;
_local1.y = _local2.top;
break;
case 2:
_local1.rotation = 90;
_local1.x = ((_local2.left + _local2.right) * 0.5);
_local1.y = _local2.top;
break;
case 9:
_local1.rotation = 180;
_local1.x = _local2.right;
_local1.y = _local2.bottom;
break;
case 6:
_local1.rotation = 180;
_local1.x = _local2.right;
_local1.y = ((_local2.top + _local2.bottom) * 0.5);
break;
case 7:
_local1.rotation = -90;
_local1.x = _local2.left;
_local1.y = _local2.bottom;
break;
case 8:
_local1.rotation = -90;
_local1.x = ((_local2.left + _local2.right) * 0.5);
_local1.y = _local2.bottom;
break;
case 5:
_local1.x = ((_local2.left + _local2.right) * 0.5);
_local1.y = ((_local2.top + _local2.bottom) * 0.5);
break;
};
}
protected function _renderSquareEdge(_arg1:Number):void{
var _local2:MovieClip;
var _local3:uint;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local2 = this._mask;
_local2.graphics.clear();
_local2.graphics.beginFill(0xFF0000);
_local3 = this._startPoint;
_local4 = (_arg1 * this._width);
_local5 = (_arg1 * this._height);
_local6 = (_arg1 * this._maxDimension);
if ((((_local3 == 4)) || ((_local3 == 6)))){
this.drawBox(_local2, 0, (-0.5 * _local5), _local4, _local5);
} else {
if (this._height < this._width){
this.drawBox(_local2, 0, (-0.5 * _local6), _local5, _local4);
} else {
this.drawBox(_local2, 0, (-0.5 * _local6), _local6, _local6);
};
};
_local2.graphics.endFill();
}
protected function _renderSquareCorner(_arg1:Number):void{
var _local2:MovieClip;
var _local3:uint;
var _local4:Number;
var _local5:Number;
_local2 = this._mask;
_local2.graphics.clear();
_local2.graphics.beginFill(0xFF0000);
_local3 = this._startPoint;
_local4 = (_arg1 * this._width);
_local5 = (_arg1 * this._height);
if (_local3 == 5){
this.drawBox(_local2, (-0.5 * _local4), (-0.5 * _local5), _local4, _local5);
} else {
if ((((_local3 == 3)) || ((_local3 == 7)))){
this.drawBox(_local2, 0, 0, _local5, _local4);
} else {
this.drawBox(_local2, 0, 0, _local4, _local5);
};
};
_local2.graphics.endFill();
}
override protected function _render(_arg1:Number):void{
this._renderFunction(_arg1);
}
override public function get type():Class{
return (Iris);
}
override public function cleanUp():void{
this._content.removeChild(this._mask);
this._content.mask = null;
super.cleanUp();
}
protected function _drawQuarterCircle(_arg1:MovieClip, _arg2:Number):void{
var _local3:Number;
var _local4:Number;
_local3 = 0;
_local4 = 0;
_arg1.graphics.lineTo(_arg2, 0);
_arg1.graphics.curveTo((_arg2 + _local3), ((Math.tan((Math.PI / 8)) * _arg2) + _local4), ((Math.sin((Math.PI / 4)) * _arg2) + _local3), ((Math.sin((Math.PI / 4)) * _arg2) + _local4));
_arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg2) + _local3), (_arg2 + _local4), _local3, (_arg2 + _local4));
}
override public function start():void{
this._content.mask = this._mask;
super.start();
}
protected function _renderCircle(_arg1:Number):void{
var _local2:MovieClip;
var _local3:Number;
_local2 = this._mask;
_local2.graphics.clear();
_local2.graphics.beginFill(0xFF0000);
_local3 = 0;
if (this._startPoint == 5){
_local3 = (0.5 * Math.sqrt(((this._width * this._width) + (this._height * this._height))));
this.drawCircle(_local2, 0, 0, (_arg1 * _local3));
} else {
if (this._cornerMode){
_local3 = Math.sqrt(((this._width * this._width) + (this._height * this._height)));
this._drawQuarterCircle(_local2, (_arg1 * _local3));
} else {
if ((((this._startPoint == 4)) || ((this._startPoint == 6)))){
_local3 = Math.sqrt(((this._width * this._width) + ((0.25 * this._height) * this._height)));
} else {
if ((((this._startPoint == 2)) || ((this._startPoint == 8)))){
_local3 = Math.sqrt((((0.25 * this._width) * this._width) + (this._height * this._height)));
};
};
this._drawHalfCircle(_local2, (_arg1 * _local3));
};
};
_local2.graphics.endFill();
}
}
}//package fl.transitions
Section 43
//Photo (fl.transitions.Photo)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class Photo extends Transition {
protected var _alphaFinal:Number;// = 1
protected var _colorControl:ColorTransform;
public function Photo(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_alphaFinal = 1;
super(_arg1, _arg2, _arg3);
this._alphaFinal = this.manager.contentAppearance.alpha;
this._colorControl = new ColorTransform();
}
override protected function _render(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Object;
var _local5:Number;
_local2 = 0.8;
_local3 = 0.9;
_local4 = {};
_local5 = 0;
if (_arg1 <= _local2){
this._colorControl.alphaMultiplier = (this._alphaFinal * (_arg1 / _local2));
} else {
this._colorControl.alphaMultiplier = this._alphaFinal;
if (_arg1 <= _local3){
_local5 = (((_arg1 - _local2) / (_local3 - _local2)) * 0x0100);
} else {
_local5 = ((1 - ((_arg1 - _local3) / (1 - _local3))) * 0x0100);
};
};
_local4.rb = (_local4.gb = (_local4.bb = _local5));
this._colorControl.redOffset = (this._colorControl.greenOffset = (this._colorControl.blueOffset = _local5));
this._content.transform.colorTransform = this._colorControl;
}
override public function get type():Class{
return (Photo);
}
}
}//package fl.transitions
Section 44
//PixelDissolve (fl.transitions.PixelDissolve)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class PixelDissolve extends Transition {
protected var _numSections:uint;// = 1
protected var _ySections:Number;// = 10
protected var _mask:MovieClip;
protected var _xSections:Number;// = 10
protected var _innerMask:MovieClip;
protected var _indices:Array;
public function PixelDissolve(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
var _local4:int;
var _local5:int;
_xSections = 10;
_ySections = 10;
_numSections = 1;
super(_arg1, _arg2, _arg3);
if (_arg2.xSections){
this._xSections = _arg2.xSections;
};
if (_arg2.ySections){
this._ySections = _arg2.ySections;
};
this._numSections = (this._xSections * this._ySections);
this._indices = new Array();
_local4 = this._ySections;
while (_local4--) {
_local5 = this._xSections;
while (_local5--) {
this._indices[((_local4 * this._xSections) + _local5)] = {x:_local5, y:_local4};
};
};
this._shuffleArray(this._indices);
this._initMask();
}
protected function _initMask():void{
var _local1:Rectangle;
this._mask = new MovieClip();
this._mask.visible = false;
this._content.addChild(this._mask);
this._innerMask = new MovieClip();
this._mask.addChild(this._innerMask);
this._innerMask.graphics.beginFill(0xFF0000);
this.drawBox(this._innerMask, 0, 0, 100, 100);
this._innerMask.graphics.endFill();
_local1 = this._innerBounds;
this._mask.x = _local1.left;
this._mask.y = _local1.top;
this._mask.width = (_local1.right - _local1.left);
this._mask.height = (_local1.bottom - _local1.top);
}
override protected function _render(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:MovieClip;
var _local6:Number;
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > 1){
_arg1 = 1;
};
_local2 = (100 / this._xSections);
_local3 = (100 / this._ySections);
_local4 = this._indices;
_local5 = this._innerMask;
_local5.graphics.clear();
_local5.graphics.beginFill(0xFF0000);
_local6 = Math.floor((_arg1 * this._numSections));
while (_local6--) {
this.drawBox(_local5, (_local4[_local6].x * _local2), (_local4[_local6].y * _local3), _local2, _local3);
};
_local5.graphics.endFill();
}
protected function _shuffleArray(_arg1:Array):void{
var _local2:int;
var _local3:int;
var _local4:Object;
_local2 = (_arg1.length - 1);
while (_local2 > 0) {
_local3 = Math.floor((Math.random() * (_local2 + 1)));
if (_local3 == _local2){
} else {
_local4 = _arg1[_local2];
_arg1[_local2] = _arg1[_local3];
_arg1[_local3] = _local4;
};
_local2--;
};
}
override public function get type():Class{
return (PixelDissolve);
}
override public function cleanUp():void{
this._content.removeChild(this._mask);
this._content.mask = null;
super.cleanUp();
}
override public function start():void{
this._content.mask = this._mask;
super.start();
}
}
}//package fl.transitions
Section 45
//Rotate (fl.transitions.Rotate)
package fl.transitions {
import flash.display.*;
public class Rotate extends Transition {
protected var _rotationFinal:Number;// = NAN
protected var _degrees:Number;// = 360
public function Rotate(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_rotationFinal = NaN;
_degrees = 360;
super(_arg1, _arg2, _arg3);
if (isNaN(this._rotationFinal)){
this._rotationFinal = this.manager.contentAppearance.rotation;
};
if (_arg2.degrees){
this._degrees = _arg2.degrees;
};
if ((_arg2.ccw ^ this.direction)){
this._degrees = (this._degrees * -1);
};
}
override protected function _render(_arg1:Number):void{
this._content.rotation = (this._rotationFinal - (this._degrees * (1 - _arg1)));
}
override public function get type():Class{
return (Rotate);
}
}
}//package fl.transitions
Section 46
//Squeeze (fl.transitions.Squeeze)
package fl.transitions {
import flash.display.*;
public class Squeeze extends Transition {
protected var _scaleProp:String;// = "scaleX"
protected var _scaleFinal:Number;// = 1
public function Squeeze(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_scaleProp = "scaleX";
_scaleFinal = 1;
super(_arg1, _arg2, _arg3);
if (_arg2.dimension){
this._scaleProp = "scaleY";
this._scaleFinal = this.manager.contentAppearance.scaleY;
} else {
this._scaleProp = "scaleX";
this._scaleFinal = this.manager.contentAppearance.scaleX;
};
}
override protected function _render(_arg1:Number):void{
if (_arg1 <= 0){
_arg1 = 0;
};
this._content[this._scaleProp] = (_arg1 * this._scaleFinal);
}
override public function get type():Class{
return (Squeeze);
}
}
}//package fl.transitions
Section 47
//Transition (fl.transitions.Transition)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class Transition extends EventDispatcher {
protected var _progress:Number;
public var ID:int;
protected var _twn:Tween;
protected var _direction:uint;// = 0
protected var _content:MovieClip;
protected var _height:Number;// = NAN
protected var _width:Number;// = NAN
protected var _outerBounds:Rectangle;
protected var _easing:Function;
protected var _innerBounds:Rectangle;
protected var _manager:TransitionManager;
protected var _duration:Number;// = 2
public static const IN:uint = 0;
public static const OUT:uint = 1;
public function Transition(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_direction = 0;
_duration = 2;
_width = NaN;
_height = NaN;
super();
this.content = _arg1;
this.direction = _arg2.direction;
this.duration = _arg2.duration;
this.easing = _arg2.easing;
this.manager = _arg3;
this._innerBounds = this.manager._innerBounds;
this._outerBounds = this.manager._outerBounds;
this._width = this.manager._width;
this._height = this.manager._height;
this._resetTween();
}
public function stop():void{
this._twn.fforward();
this._twn.stop();
}
private function _resetTween():void{
if (this._twn){
this._twn.stop();
this._twn.removeEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished);
};
this._twn = new Tween(this, "", this.easing, 0, 1, this.duration, true);
this._twn.stop();
this._twn.prop = "progress";
this._twn.addEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished, false, 0, true);
}
public function onMotionFinished(_arg1:Object):void{
if (this.direction == Transition.OUT){
this.dispatchEvent(new Event("transitionOutDone"));
} else {
this.dispatchEvent(new Event("transitionInDone"));
};
}
public function get duration():Number{
return (this._duration);
}
public function set duration(_arg1:Number):void{
if (_arg1){
this._duration = _arg1;
if (this._twn){
this._twn.duration = _arg1;
};
};
}
public function get easing():Function{
return (this._easing);
}
public function get progress():Number{
return (this._progress);
}
public function get manager():TransitionManager{
return (this._manager);
}
protected function _render(_arg1:Number):void{
}
public function get type():Class{
return (Transition);
}
public function drawCircle(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number):void{
_arg1.graphics.moveTo((_arg2 + _arg4), _arg3);
_arg1.graphics.curveTo((_arg4 + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3));
_arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (_arg4 + _arg3), _arg2, (_arg4 + _arg3));
_arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (_arg4 + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3));
_arg1.graphics.curveTo((-(_arg4) + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), (-(_arg4) + _arg2), _arg3);
_arg1.graphics.curveTo((-(_arg4) + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3));
_arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (-(_arg4) + _arg3), _arg2, (-(_arg4) + _arg3));
_arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (-(_arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3));
_arg1.graphics.curveTo((_arg4 + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), (_arg4 + _arg2), _arg3);
}
public function cleanUp():void{
this.removeEventListener("transitionInDone", this._manager.transitionInDone);
this.removeEventListener("transitionOutDone", this._manager.transitionOutDone);
this.stop();
}
public function set easing(_arg1:Function):void{
this._easing = _arg1;
if (this._twn){
this._twn.func = _arg1;
};
}
public function set manager(_arg1:TransitionManager):void{
if (this._manager){
this.removeEventListener("transitionInDone", this._manager.transitionInDone);
this.removeEventListener("transitionOutDone", this._manager.transitionOutDone);
};
this._manager = _arg1;
this.addEventListener("transitionInDone", this._manager.transitionInDone);
this.addEventListener("transitionOutDone", this._manager.transitionOutDone);
}
public function set progress(_arg1:Number):void{
if (this._progress == _arg1){
return;
};
this._progress = _arg1;
if (this._direction){
this._render((1 - _arg1));
} else {
this._render(_arg1);
};
this.dispatchEvent(new Event("transitionProgress"));
}
public function start():void{
this.content.visible = true;
this._twn.start();
}
public function drawBox(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{
_arg1.graphics.moveTo(_arg2, _arg3);
_arg1.graphics.lineTo((_arg2 + _arg4), _arg3);
_arg1.graphics.lineTo((_arg2 + _arg4), (_arg3 + _arg5));
_arg1.graphics.lineTo(_arg2, (_arg3 + _arg5));
_arg1.graphics.lineTo(_arg2, _arg3);
}
public function set content(_arg1:MovieClip):void{
if (_arg1){
this._content = _arg1;
if (this._twn){
this._twn.obj = _arg1;
};
};
}
private function _noEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public function get content():MovieClip{
return (this._content);
}
public function set direction(_arg1:Number):void{
this._direction = (_arg1) ? 1 : 0;
}
public function get direction():Number{
return (this._direction);
}
}
}//package fl.transitions
Section 48
//TransitionManager (fl.transitions.TransitionManager)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class TransitionManager extends EventDispatcher {
public var _innerBounds:Rectangle;
private var _visualPropList:Object;
private var _triggerEvent:String;
public var className:String;// = "TransitionManager"
public var type:Object;
private var _contentAppearance:Object;
private var _content:MovieClip;
public var _width:Number;// = NAN
public var _height:Number;// = NAN
public var _outerBounds:Rectangle;
private var _transitions:Object;
private static var IDCount:int = 0;
public function TransitionManager(_arg1:MovieClip){
type = TransitionManager;
className = "TransitionManager";
_width = NaN;
_height = NaN;
_visualPropList = {x:null, y:null, scaleX:null, scaleY:null, alpha:null, rotation:null};
super();
this.content = _arg1;
this._transitions = {};
}
public function get content():MovieClip{
return (this._content);
}
public function removeAllTransitions():void{
var _local1:Transition;
for each (_local1 in this._transitions) {
_local1.cleanUp();
this.removeTransition(_local1);
};
}
function transitionInDone(_arg1:Object):void{
var _local2:Boolean;
this.removeTransition(_arg1.target);
if (this.numInTransitions == 0){
_local2 = this._content.visible;
if ((((this._triggerEvent == "hide")) || ((this._triggerEvent == "hideChild")))){
this._content.visible = false;
};
if (_local2){
this.dispatchEvent(new Event("allTransitionsInDone"));
};
};
}
public function get numOutTransitions():Number{
var _local1:Number;
var _local2:Object;
var _local3:Transition;
_local1 = 0;
_local2 = this._transitions;
for each (_local3 in _local2) {
if (_local3.direction){
_local1++;
};
};
return (_local1);
}
public function get contentAppearance():Object{
return (this._contentAppearance);
}
public function saveContentAppearance():void{
var _local1:MovieClip;
var _local2:Object;
var _local3:String;
_local1 = this._content;
if (!this._contentAppearance){
_local2 = (this._contentAppearance = {});
for (_local3 in this._visualPropList) {
_local2[_local3] = _local1[_local3];
};
_local2.colorTransform = _local1.transform.colorTransform;
};
this._innerBounds = _local1.getBounds(_local1);
this._outerBounds = _local1.getBounds(_local1.parent);
this._width = _local1.width;
this._height = _local1.height;
}
public function addTransition(_arg1:Transition):Transition{
_arg1.ID = ++TransitionManager.IDCount;
this._transitions[_arg1.ID] = _arg1;
return (_arg1);
}
public function startTransition(_arg1:Object):Transition{
var _local2:Class;
var _local3:Transition;
this.removeTransition(this.findTransition(_arg1));
_local2 = _arg1.type;
_local3 = new _local2(this._content, _arg1, this);
this.addTransition(_local3);
_local3.start();
return (_local3);
}
function transitionOutDone(_arg1:Object):void{
var _local2:Boolean;
this.removeTransition(_arg1.target);
if (this.numOutTransitions == 0){
this.restoreContentAppearance();
_local2 = this._content.visible;
if (((_local2) && ((((_triggerEvent == "hide")) || ((_triggerEvent == "hideChild")))))){
this._content.visible = false;
};
if (_local2){
this.dispatchEvent(new Event("allTransitionsOutDone"));
};
};
}
public function restoreContentAppearance():void{
var _local1:MovieClip;
var _local2:Object;
var _local3:String;
_local1 = this._content;
_local2 = this._contentAppearance;
for (_local3 in this._visualPropList) {
_local1[_local3] = _local2[_local3];
};
_local1.transform.colorTransform = _local2.colorTransform;
}
public function get numTransitions():Number{
var _local1:Number;
var _local2:Transition;
_local1 = 0;
for each (_local2 in this._transitions) {
_local1++;
};
return (_local1);
}
public function findTransition(_arg1:Object):Transition{
var _local2:Transition;
for each (_local2 in this._transitions) {
if (_local2.type == _arg1.type){
return (_local2);
};
};
return (null);
}
public function set content(_arg1:MovieClip):void{
this._content = _arg1;
this.saveContentAppearance();
}
public function get numInTransitions():Number{
var _local1:Number;
var _local2:Object;
var _local3:Transition;
_local1 = 0;
_local2 = this._transitions;
for each (_local3 in _local2) {
if (!_local3.direction){
_local1++;
};
};
return (_local1);
}
public function removeTransition(_arg1:Transition):Boolean{
if (((((!(_arg1)) || (!(this._transitions)))) || (!(this._transitions[_arg1.ID])))){
return (false);
};
_arg1.cleanUp();
return (delete this._transitions[_arg1.ID]);
}
public function get transitionsList():Object{
return (this._transitions);
}
public static function start(_arg1:MovieClip, _arg2:Object):Transition{
if (!_arg1.__transitionManager){
_arg1.__transitionManager = new TransitionManager(_arg1);
};
if (_arg2.direction == 1){
_arg1.__transitionManager._triggerEvent = "hide";
} else {
_arg1.__transitionManager._triggerEvent = "reveal";
};
return (_arg1.__transitionManager.startTransition(_arg2));
}
}
}//package fl.transitions
Section 49
//Tween (fl.transitions.Tween)
package fl.transitions {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Tween extends EventDispatcher {
private var _position:Number;// = NAN
public var prevTime:Number;// = NAN
public var prevPos:Number;// = NAN
public var isPlaying:Boolean;// = false
public var begin:Number;// = NAN
private var _fps:Number;// = NAN
private var _time:Number;// = NAN
public var change:Number;// = NAN
private var _finish:Number;// = NAN
public var looping:Boolean;// = false
private var _intervalID:uint;// = 0
public var func:Function;
private var _timer:Timer;// = null
private var _startTime:Number;// = NAN
public var prop:String;// = ""
private var _duration:Number;// = NAN
public var obj:Object;// = null
public var useSeconds:Boolean;// = false
protected static var _mc:MovieClip = new MovieClip();
public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){
isPlaying = false;
obj = null;
prop = "";
func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
};
begin = NaN;
change = NaN;
useSeconds = false;
prevTime = NaN;
prevPos = NaN;
looping = false;
_duration = NaN;
_time = NaN;
_fps = NaN;
_position = NaN;
_startTime = NaN;
_intervalID = 0;
_finish = NaN;
_timer = null;
super();
if (!arguments.length){
return;
};
this.obj = _arg1;
this.prop = _arg2;
this.begin = _arg4;
this.position = _arg4;
this.duration = _arg6;
this.useSeconds = _arg7;
if ((_arg3 is Function)){
this.func = _arg3;
};
this.finish = _arg5;
this._timer = new Timer(100);
this.start();
}
public function continueTo(_arg1:Number, _arg2:Number):void{
this.begin = this.position;
this.finish = _arg1;
if (!isNaN(_arg2)){
this.duration = _arg2;
};
this.start();
}
public function stop():void{
this.stopEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position));
}
private function fixTime():void{
if (this.useSeconds){
this._startTime = (getTimer() - (this._time * 1000));
};
}
public function set FPS(_arg1:Number):void{
var _local2:Boolean;
_local2 = this.isPlaying;
this.stopEnterFrame();
this._fps = _arg1;
if (_local2){
this.startEnterFrame();
};
}
public function get finish():Number{
return ((this.begin + this.change));
}
public function get duration():Number{
return (this._duration);
}
protected function startEnterFrame():void{
var _local1:Number;
if (isNaN(this._fps)){
_mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true);
} else {
_local1 = (1000 / this._fps);
this._timer.delay = _local1;
this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true);
this._timer.start();
};
this.isPlaying = true;
}
public function set time(_arg1:Number):void{
this.prevTime = this._time;
if (_arg1 > this.duration){
if (this.looping){
this.rewind((_arg1 - this._duration));
this.update();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position));
} else {
if (this.useSeconds){
this._time = this._duration;
this.update();
};
this.stop();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position));
};
} else {
if (_arg1 < 0){
this.rewind();
this.update();
} else {
this._time = _arg1;
this.update();
};
};
}
protected function stopEnterFrame():void{
if (isNaN(this._fps)){
_mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
} else {
this._timer.stop();
};
this.isPlaying = false;
}
public function getPosition(_arg1:Number=NaN):Number{
if (isNaN(_arg1)){
_arg1 = this._time;
};
return (this.func(_arg1, this.begin, this.change, this._duration));
}
public function set finish(_arg1:Number):void{
this.change = (_arg1 - this.begin);
}
public function set duration(_arg1:Number):void{
this._duration = ((_arg1)<=0) ? Infinity : _arg1;
}
public function setPosition(_arg1:Number):void{
this.prevPos = this._position;
if (this.prop.length){
this.obj[this.prop] = (this._position = _arg1);
};
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position));
}
public function resume():void{
this.fixTime();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position));
}
public function fforward():void{
this.time = this._duration;
this.fixTime();
}
protected function onEnterFrame(_arg1:Event):void{
this.nextFrame();
}
public function get position():Number{
return (this.getPosition(this._time));
}
public function yoyo():void{
this.continueTo(this.begin, this.time);
}
public function nextFrame():void{
if (this.useSeconds){
this.time = ((getTimer() - this._startTime) / 1000);
} else {
this.time = (this._time + 1);
};
}
protected function timerHandler(_arg1:TimerEvent):void{
this.nextFrame();
_arg1.updateAfterEvent();
}
public function get FPS():Number{
return (this._fps);
}
public function rewind(_arg1:Number=0):void{
this._time = _arg1;
this.fixTime();
this.update();
}
public function set position(_arg1:Number):void{
this.setPosition(_arg1);
}
public function get time():Number{
return (this._time);
}
private function update():void{
this.setPosition(this.getPosition(this._time));
}
public function start():void{
this.rewind();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position));
}
public function prevFrame():void{
if (!this.useSeconds){
this.time = (this._time - 1);
};
}
}
}//package fl.transitions
Section 50
//TweenEvent (fl.transitions.TweenEvent)
package fl.transitions {
import flash.events.*;
public class TweenEvent extends Event {
public var time:Number;// = NAN
public var position:Number;// = NAN
public static const MOTION_START:String = "motionStart";
public static const MOTION_STOP:String = "motionStop";
public static const MOTION_LOOP:String = "motionLoop";
public static const MOTION_CHANGE:String = "motionChange";
public static const MOTION_FINISH:String = "motionFinish";
public static const MOTION_RESUME:String = "motionResume";
public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){
time = NaN;
position = NaN;
super(_arg1, _arg4, _arg5);
this.time = _arg2;
this.position = _arg3;
}
override public function clone():Event{
return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable));
}
}
}//package fl.transitions
Section 51
//Wipe (fl.transitions.Wipe)
package fl.transitions {
import flash.display.*;
import flash.geom.*;
public class Wipe extends Transition {
protected var _cornerMode:Boolean;// = false
protected var _mask:MovieClip;
protected var _innerMask:MovieClip;
protected var _startPoint:uint;// = 4
public function Wipe(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_startPoint = 4;
_cornerMode = false;
super(_arg1, _arg2, _arg3);
if (_arg2.startPoint){
this._startPoint = _arg2.startPoint;
};
this._initMask();
}
protected function _initMask():void{
var _local1:Rectangle;
this._mask = new MovieClip();
this._mask.visible = false;
this._content.addChild(this._mask);
this._innerMask = new MovieClip();
this._mask.addChild(this._innerMask);
this._innerMask.x = (this._innerMask.y = 50);
this._innerMask.graphics.beginFill(0xFF0000);
this.drawBox(this._innerMask, -50, -50, 100, 100);
this._innerMask.graphics.endFill();
switch (this._startPoint){
case 3:
case 2:
this._innerMask.rotation = 90;
break;
case 1:
case 4:
case 5:
this._innerMask.rotation = 0;
break;
case 9:
case 6:
this._innerMask.rotation = 180;
break;
case 7:
case 8:
this._innerMask.rotation = -90;
break;
};
if ((this._startPoint % 2)){
this._cornerMode = true;
};
_local1 = this._innerBounds;
this._mask.x = _local1.left;
this._mask.y = _local1.top;
this._mask.width = _local1.width;
this._mask.height = _local1.height;
}
protected function _drawSlant(_arg1:MovieClip, _arg2:Number):void{
_arg1.graphics.moveTo(-50, -50);
if (_arg2 <= 0.5){
_arg1.graphics.lineTo((200 * (_arg2 - 0.25)), -50);
_arg1.graphics.lineTo(-50, (200 * (_arg2 - 0.25)));
} else {
_arg1.graphics.lineTo(50, -50);
_arg1.graphics.lineTo(50, (200 * (_arg2 - 0.75)));
_arg1.graphics.lineTo((200 * (_arg2 - 0.75)), 50);
_arg1.graphics.lineTo(-50, 50);
};
_arg1.graphics.lineTo(-50, -50);
}
override protected function _render(_arg1:Number):void{
this._innerMask.graphics.clear();
this._innerMask.graphics.beginFill(0xFF0000);
if (this._cornerMode){
this._drawSlant(this._innerMask, _arg1);
} else {
this.drawBox(this._innerMask, -50, -50, (_arg1 * 100), 100);
};
this._innerMask.graphics.endFill();
}
override public function get type():Class{
return (Wipe);
}
override public function cleanUp():void{
this._content.removeChild(this._mask);
this._content.mask = null;
super.cleanUp();
}
override public function start():void{
this._content.mask = this._mask;
super.start();
}
}
}//package fl.transitions
Section 52
//Zoom (fl.transitions.Zoom)
package fl.transitions {
import flash.display.*;
public class Zoom extends Transition {
protected var _scaleXFinal:Number;// = 1
protected var _scaleYFinal:Number;// = 1
public function Zoom(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){
_scaleXFinal = 1;
_scaleYFinal = 1;
super(_arg1, _arg2, _arg3);
this._scaleXFinal = this.manager.contentAppearance.scaleX;
this._scaleYFinal = this.manager.contentAppearance.scaleY;
}
override protected function _render(_arg1:Number):void{
if (_arg1 < 0){
_arg1 = 0;
};
this._content.scaleX = (_arg1 * this._scaleXFinal);
this._content.scaleY = (_arg1 * this._scaleYFinal);
}
override public function get type():Class{
return (Zoom);
}
}
}//package fl.transitions
Section 53
//CollisionManager (CollisionManager)
package {
public class CollisionManager {
private var score_manager:ScoreManager;
private var player:Player;
private var laser_array:Array;
private var enemy_array:Array;
private var cyclone_meter:CycloneMeter;
private var particle_manager:ParticleManager;
private var debris_array:Array;
private var object_array:Array;
private var home:Game;
public function CollisionManager(_arg1:Game){
home = _arg1;
player = home.player;
object_array = home.object_array;
enemy_array = home.enemy_array;
laser_array = home.laser_array;
debris_array = home.debris_array;
score_manager = home.score_manager;
particle_manager = home.particle_manager;
cyclone_meter = home.cyclone_meter;
}
public function checkCollisions():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:*;
var _local5:*;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:*;
var _local10:*;
_local1 = enemy_array.length;
_local2 = laser_array.length;
_local3 = debris_array.length;
_local4 = 0;
while (_local4 < _local1) {
_local5 = 0;
while (_local5 < _local2) {
_local6 = (enemy_array[_local4].x - laser_array[_local5].x);
_local7 = (enemy_array[_local4].y - laser_array[_local5].y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
if (_local8 < (enemy_array[_local4].hit_radius + laser_array[_local5].hit_radius)){
if (enemy_array[_local4].health <= 1){
score_manager.total_score = (score_manager.total_score + enemy_array[_local4].points);
score_manager.updateScore();
cyclone_meter.fillBar();
enemy_array[_local4].alive = false;
} else {
enemy_array[_local4].health--;
particle_manager.createSpark(enemy_array[_local4].x, enemy_array[_local4].y, laser_array[_local5].current_angle, 25, enemy_array[_local4].spark_colour, ((Math.random() * 4) + 2));
if (!enemy_array[_local4].hit){
enemy_array[_local4].hit = true;
};
};
laser_array[_local5].alive = false;
//unresolved jump
};
_local5++;
};
_local6 = (enemy_array[_local4].x - player.x);
_local7 = (enemy_array[_local4].y - player.y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
if ((((((((_local8 < (enemy_array[_local4].hit_radius + player.hit_radius))) && (player.alive))) && (!(player.invincible)))) || ((((((_local8 < (enemy_array[_local4].hit_radius + player.hit_radius))) && (player.alive))) && (player.cycloning))))){
if (player.cyclone_velocity < 1){
score_manager.total_lives--;
score_manager.updateLives();
particle_manager.createSpark(player.x, player.y, 0, 360, player.spark_colour, 200);
home.sound_manager.stopThrust();
home.sound_manager.randomExplosion();
enemy_array[_local4].alive = false;
player.alive = false;
} else {
if (enemy_array[_local4].health <= 1){
score_manager.total_score = (score_manager.total_score + enemy_array[_local4].points);
score_manager.updateScore();
enemy_array[_local4].alive = false;
player.cyclone_kills++;
} else {
enemy_array[_local4].health = (enemy_array[_local4].health - 2);
if (!enemy_array[_local4].hit){
enemy_array[_local4].hit = true;
};
};
};
break;
};
_local4++;
};
_local2 = laser_array.length;
_local9 = 0;
while (_local9 < _local3) {
_local10 = 0;
while (_local10 < _local2) {
_local6 = (debris_array[_local9].x - laser_array[_local10].x);
_local7 = (debris_array[_local9].y - laser_array[_local10].y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
if ((((_local8 < (debris_array[_local9].hit_radius + laser_array[_local10].hit_radius))) && ((debris_array[_local9].countdown_timer < 0.5)))){
particle_manager.createSpark(debris_array[_local9].x, debris_array[_local9].y, 0, 360, debris_array[_local9].debris_object.glow_filter.color, 30);
score_manager.newPopup(debris_array[_local9].points, debris_array[_local9].x, debris_array[_local9].y);
score_manager.total_score = (score_manager.total_score + debris_array[_local9].points);
score_manager.updateScore();
home.sound_manager.randomDebris();
laser_array[_local10].alive = false;
debris_array[_local9].alive = false;
player.debris_counter++;
break;
};
_local10++;
};
_local6 = (debris_array[_local9].x - player.x);
_local7 = (debris_array[_local9].y - player.y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
if ((((((((_local8 < (debris_array[_local9].hit_radius + player.hit_radius))) && (player.alive))) && (player.cycloning))) && ((debris_array[_local9].countdown_timer < 0.5)))){
if (player.cyclone_velocity > 1){
particle_manager.createSpark(debris_array[_local9].x, debris_array[_local9].y, 0, 360, debris_array[_local9].debris_object.glow_filter.color, 30);
score_manager.newPopup(debris_array[_local9].points, debris_array[_local9].x, debris_array[_local9].y);
score_manager.total_score = (score_manager.total_score + debris_array[_local9].points);
score_manager.updateScore();
home.sound_manager.randomDebris();
debris_array[_local9].alive = false;
player.debris_counter++;
break;
};
};
_local9++;
};
}
public function destroyObjects():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
_local1 = object_array.length;
_local5 = (_local1 - 1);
while (_local5 >= 0) {
if (!object_array[_local5].alive){
object_array.splice(_local5, 1);
};
_local5--;
};
_local2 = enemy_array.length;
_local6 = (_local2 - 1);
while (_local6 >= 0) {
if (!enemy_array[_local6].alive){
particle_manager.createSpark(enemy_array[_local6].x, enemy_array[_local6].y, 0, 360, enemy_array[_local6].spark_colour, 200);
score_manager.newPopup(enemy_array[_local6].points, enemy_array[_local6].x, enemy_array[_local6].y);
home.sound_manager.randomExplosion();
enemy_array[_local6].explode();
enemy_array.splice(_local6, 1);
};
_local6--;
};
_local3 = laser_array.length;
_local7 = (_local3 - 1);
while (_local7 >= 0) {
if (!laser_array[_local7].alive){
laser_array.splice(_local7, 1);
};
_local7--;
};
_local4 = debris_array.length;
_local8 = (_local4 - 1);
while (_local8 >= 0) {
if (!debris_array[_local8].alive){
debris_array.splice(_local8, 1);
};
_local8--;
};
}
}
}//package
Section 54
//Crosshair (Crosshair)
package {
import flash.display.*;
import flash.geom.*;
public class Crosshair extends Sprite {
private var crosshair_object:Object;
private var source_rectangle:Rectangle;
private var game_screen:BitmapData;
private var rotation_speed:Number;// = 0.8
private var sheet_tile:Object;
private var current_angle:Number;// = 0
private var dest_point:Point;
public var alive:Boolean;// = true
private var home:Game;
public function Crosshair(_arg1:Game){
sheet_tile = new Object();
current_angle = 0;
rotation_speed = 0.8;
alive = true;
super();
home = _arg1;
crosshair_object = home.sprite_sheet_manager.crosshair_object;
game_screen = home.game_screen.screen_data;
}
private function rotate():void{
current_angle = (current_angle + rotation_speed);
if (current_angle >= 360){
current_angle = 0;
};
}
public function render():void{
sheet_tile.no = Math.floor((current_angle / crosshair_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % crosshair_object.total_colums)) * crosshair_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / crosshair_object.total_colums)) * crosshair_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, crosshair_object.tile_width, crosshair_object.tile_height);
dest_point = new Point((this.x - (crosshair_object.tile_width / 2)), (this.y - (crosshair_object.tile_height / 2)));
game_screen.copyPixels(crosshair_object.sprite_sheet, source_rectangle, dest_point);
}
public function update():void{
rotate();
}
}
}//package
Section 55
//CrossVector (CrossVector)
package {
import flash.display.*;
public dynamic class CrossVector extends MovieClip {
}
}//package
Section 56
//CycloneFinish (CycloneFinish)
package {
import flash.media.*;
public dynamic class CycloneFinish extends Sound {
}
}//package
Section 57
//CycloneMeter (CycloneMeter)
package {
import flash.display.*;
import flash.filters.*;
import flash.events.*;
public class CycloneMeter extends MovieClip {
private var friction:Number;// = 0.95
public var bar_fill2:MovieClip;
private var rotation_vel:Number;// = 0
public var swirl:MovieClip;
private var home:Game;
public var bar_fill1:MovieClip;
private var cyclone_meter:Number;// = 100
public function CycloneMeter(_arg1:Game){
cyclone_meter = 100;
rotation_vel = 0;
friction = 0.95;
super();
home = _arg1;
home.addChildAt(this, 1);
this.x = 312.5;
this.y = 35;
this.filters = [new GlowFilter(0xFFFFFF, 0.5, 10, 10)];
this.addEventListener(Event.ENTER_FRAME, slowFill, false, 0, false);
}
public function slowFill(_arg1:Event):void{
if (cyclone_meter < 100){
cyclone_meter = (cyclone_meter + (1 / 20));
};
this.bar_fill1.scaleX = (cyclone_meter / 100);
this.bar_fill2.scaleX = (cyclone_meter / 100);
this.rotation_vel = (this.rotation_vel * friction);
this.swirl.rotation = (this.swirl.rotation + rotation_vel);
}
public function fillBar():void{
if (cyclone_meter < 95){
cyclone_meter = (cyclone_meter + 5);
};
this.bar_fill1.scaleX = (cyclone_meter / 100);
this.bar_fill2.scaleX = (cyclone_meter / 100);
}
public function emptyBar():void{
if (cyclone_meter > 0){
cyclone_meter = (cyclone_meter - 1.3);
};
this.bar_fill1.scaleX = (cyclone_meter / 100);
this.bar_fill2.scaleX = (cyclone_meter / 100);
rotation_vel = (rotation_vel + 2);
this.swirl.rotation = (this.swirl.rotation + rotation_vel);
}
}
}//package
Section 58
//CycloneStart (CycloneStart)
package {
import flash.media.*;
public dynamic class CycloneStart extends Sound {
}
}//package
Section 59
//DavidSans (DavidSans)
package {
import flash.text.*;
public dynamic class DavidSans extends Font {
}
}//package
Section 60
//Debris (Debris)
package {
import flash.display.*;
import flash.geom.*;
public class Debris extends Sprite {
public var points:Number;// = 25
private var timer_counter:Number;// = 0
private var color_transform_rect:Rectangle;
private var color_transform_point:Point;
private var source_rectangle:Rectangle;
private var game_screen:BitmapData;
private var move_speed:Number;
private var rotation_speed:Number;
public var debris_object:Object;
private var color_transform:ColorTransform;
private var sheet_tile:Object;
private var start_countdown:Boolean;// = false
private var dest_point:Point;
private var flicker_counter:Number;// = 0
public var countdown_timer:Number;// = 1
public var spin_angle:Number;// = 0
private var flicker_rate:Number;// = 0.8
private var alive_duration:Number;// = 1
public var alive:Boolean;// = true
public var hit_radius:Number;// = 10
private var move_angle:Number;// = 0
private var home:Game;
private var friction:Number;
private var flicker:Boolean;// = false
public function Debris(_arg1:Game, _arg2:Object, _arg3:BitmapData, _arg4:Number){
sheet_tile = new Object();
move_angle = 0;
color_transform = new ColorTransform();
color_transform_point = new Point();
alive_duration = 1;
timer_counter = 0;
countdown_timer = 1;
flicker = false;
flicker_rate = 0.8;
flicker_counter = 0;
start_countdown = false;
spin_angle = 0;
alive = true;
hit_radius = 10;
points = 25;
super();
home = home;
debris_object = _arg2;
game_screen = _arg3;
move_angle = _arg4;
move_speed = randomize(5, 3);
rotation_speed = randomize(5, -5);
friction = randomize(0.97, 0.95);
color_transform.alphaMultiplier = 0.2;
color_transform_rect = new Rectangle(0, 0, debris_object.tile_width, debris_object.tile_height);
}
private function rotate():void{
rotation_speed = (rotation_speed * friction);
spin_angle = (spin_angle + rotation_speed);
if (spin_angle >= 360){
spin_angle = 0;
};
if (spin_angle < 0){
spin_angle = 360;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * (_arg1 - _arg2)) + _arg2);
return (_local3);
}
public function update():void{
move();
rotate();
flickering();
}
public function render():void{
sheet_tile.no = Math.floor((spin_angle / debris_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % debris_object.total_colums)) * debris_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / debris_object.total_colums)) * debris_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, debris_object.tile_width, debris_object.tile_height);
dest_point = new Point((this.x - (debris_object.tile_width / 2)), (this.y - (debris_object.tile_height / 2)));
if (!flicker){
game_screen.copyPixels(debris_object.sprite_sheet, source_rectangle, dest_point);
} else {
debris_object.temp_data.copyPixels(debris_object.sprite_sheet, source_rectangle, color_transform_point);
debris_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(debris_object.temp_data, color_transform_rect, dest_point);
};
}
private function move():void{
move_speed = (move_speed * friction);
this.x = (this.x + (Math.cos(move_angle) * move_speed));
this.y = (this.y + (Math.sin(move_angle) * move_speed));
if (Math.abs(move_speed) < 0.1){
move_speed = 0;
};
}
private function flickering():void{
if (((alive) && ((countdown_timer <= 0)))){
start_countdown = true;
} else {
countdown_timer = (countdown_timer - (1 / 30));
};
if (start_countdown){
if (timer_counter >= alive_duration){
alive = false;
timer_counter = 0;
flicker = false;
} else {
timer_counter = (timer_counter + (1 / 30));
};
if (flicker_counter >= 1){
if (flicker){
flicker = false;
} else {
flicker = true;
};
flicker_counter = 0;
} else {
flicker_counter = (flicker_counter + flicker_rate);
};
};
}
}
}//package
Section 61
//Debris1 (Debris1)
package {
import flash.media.*;
public dynamic class Debris1 extends Sound {
}
}//package
Section 62
//Debris2 (Debris2)
package {
import flash.media.*;
public dynamic class Debris2 extends Sound {
}
}//package
Section 63
//Die1Sound (Die1Sound)
package {
import flash.media.*;
public dynamic class Die1Sound extends Sound {
}
}//package
Section 64
//Die2Sound (Die2Sound)
package {
import flash.media.*;
public dynamic class Die2Sound extends Sound {
}
}//package
Section 65
//Die3Sound (Die3Sound)
package {
import flash.media.*;
public dynamic class Die3Sound extends Sound {
}
}//package
Section 66
//Die4Sound (Die4Sound)
package {
import flash.media.*;
public dynamic class Die4Sound extends Sound {
}
}//package
Section 67
//Die5Sound (Die5Sound)
package {
import flash.media.*;
public dynamic class Die5Sound extends Sound {
}
}//package
Section 68
//Die6Sound (Die6Sound)
package {
import flash.media.*;
public dynamic class Die6Sound extends Sound {
}
}//package
Section 69
//Die7Sound (Die7Sound)
package {
import flash.media.*;
public dynamic class Die7Sound extends Sound {
}
}//package
Section 70
//Die8Sound (Die8Sound)
package {
import flash.media.*;
public dynamic class Die8Sound extends Sound {
}
}//package
Section 71
//Die9Sound (Die9Sound)
package {
import flash.media.*;
public dynamic class Die9Sound extends Sound {
}
}//package
Section 72
//Drifter (Drifter)
package {
import flash.display.*;
import flash.geom.*;
public class Drifter extends Sprite {
public var points:Number;// = 100
private var laser_object:Object;
private var color_transform_point:Point;
private var source_rectangle:Rectangle;
public var health:Number;// = 8
public var spark_colour:Number;// = 16592173
private var game_screen:BitmapData;
private var move_speed:Number;// = 2
private var rotation_speed:Number;
private var color_transform_rect:Rectangle;
private var color_transform:ColorTransform;
private var target:Point;
private var sheet_tile:Object;
private var drifter_object:Object;
private var spin_angle:Number;// = 0
private var dest_point:Point;
public var hit:Boolean;// = false
public var hit_radius:Number;// = 10
public var alive:Boolean;// = true
private var player:Player;
private var home:Game;
public function Drifter(_arg1:Game){
sheet_tile = new Object();
color_transform = new ColorTransform();
color_transform_point = new Point();
spin_angle = 0;
move_speed = 2;
hit_radius = 10;
alive = true;
points = 100;
health = 8;
hit = false;
spark_colour = 16592173;
super();
home = _arg1;
player = home.player;
drifter_object = home.sprite_sheet_manager.drifter_object;
game_screen = home.game_screen.screen_data;
target = new Point(randomize(600, 25), randomize(425, 25));
rotation_speed = randomize(10, 8);
color_transform.redOffset = 0xFF;
color_transform.greenOffset = 0xFF;
color_transform.blueOffset = 0xFF;
color_transform_rect = new Rectangle(0, 0, drifter_object.tile_width, drifter_object.tile_height);
}
private function rotate():void{
spin_angle = (spin_angle - rotation_speed);
if (spin_angle <= 0){
spin_angle = 359;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg1 - _arg2) + 1)) + _arg2);
return (_local3);
}
public function render():void{
sheet_tile.no = Math.floor((spin_angle / drifter_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % drifter_object.total_colums)) * drifter_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / drifter_object.total_colums)) * drifter_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, drifter_object.tile_width, drifter_object.tile_height);
dest_point = new Point((this.x - (drifter_object.tile_width / 2)), (this.y - (drifter_object.tile_height / 2)));
if (!hit){
game_screen.copyPixels(drifter_object.sprite_sheet, source_rectangle, dest_point);
} else {
drifter_object.temp_data.copyPixels(drifter_object.sprite_sheet, source_rectangle, color_transform_point);
drifter_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(drifter_object.temp_data, color_transform_rect, dest_point);
hit = false;
};
}
public function update():void{
move();
rotate();
}
private function move():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local1 = (target.x - this.x);
_local2 = (target.y - this.y);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
_local4 = Math.atan2(_local2, _local1);
if (_local3 < 1){
target = new Point(randomize(600, 25), randomize(425, 25));
};
this.x = (this.x + (Math.cos(_local4) * move_speed));
this.y = (this.y + (Math.sin(_local4) * move_speed));
}
public function explode():void{
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < 4) {
_local2 = new Debris(home, home.sprite_sheet_manager.drifter_debris, game_screen, (Math.random() * (Math.PI * 2)));
_local2.x = this.x;
_local2.y = this.y;
home.object_array.push(_local2);
home.debris_array.push(_local2);
_local1++;
};
}
}
}//package
Section 73
//DrifterDebris (DrifterDebris)
package {
import flash.display.*;
public dynamic class DrifterDebris extends MovieClip {
}
}//package
Section 74
//DrifterVector (DrifterVector)
package {
import flash.display.*;
public dynamic class DrifterVector extends MovieClip {
}
}//package
Section 75
//Drone (Drone)
package {
import flash.display.*;
import flash.geom.*;
public class Drone extends Sprite {
public var points:Number;// = 50
private var color_transform_rect:Rectangle;
private var color_transform_point:Point;
private var source_rectangle:Rectangle;
public var health:Number;// = 6
private var rotational_accel:Number;
public var spark_colour:Number;// = 16596618
private var game_screen:BitmapData;
private var move_speed:Number;
private var drone_object:Object;
private var rotational_velocity:Number;// = 0
private var color_transform:ColorTransform;
public var current_angle:Number;
private var dest_point:Point;
public var hit:Boolean;// = false
public var hit_radius:Number;// = 15
public var alive:Boolean;// = true
private var player:Player;
private var home:Game;
private var max_rotational_velocity:Number;
public function Drone(_arg1:Game){
color_transform = new ColorTransform();
color_transform_point = new Point();
rotational_velocity = 0;
hit_radius = 15;
alive = true;
points = 50;
health = 6;
hit = false;
spark_colour = 16596618;
super();
home = _arg1;
player = home.player;
drone_object = home.sprite_sheet_manager.drone_object;
game_screen = home.game_screen.screen_data;
move_speed = randomize(2.5, 2);
rotational_accel = ((randomize(3, 2) * Math.PI) / 180);
max_rotational_velocity = ((randomize(6, 4) * Math.PI) / 180);
color_transform.redOffset = 0xFF;
color_transform.greenOffset = 0xFF;
color_transform.blueOffset = 0xFF;
color_transform_rect = new Rectangle(0, 0, drone_object.tile_width, drone_object.tile_height);
}
private function checkVelocitys():void{
if (Math.abs(rotational_velocity) > max_rotational_velocity){
rotational_velocity = (max_rotational_velocity * (Math.abs(max_rotational_velocity) / rotational_velocity));
};
}
public function render():void{
source_rectangle = new Rectangle(0, 0, drone_object.tile_width, drone_object.tile_height);
dest_point = new Point((this.x - (drone_object.tile_width / 2)), (this.y - (drone_object.tile_height / 2)));
if (!hit){
game_screen.copyPixels(drone_object.sprite_sheet, source_rectangle, dest_point);
} else {
drone_object.temp_data.copyPixels(drone_object.sprite_sheet, source_rectangle, color_transform_point);
drone_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(drone_object.temp_data, color_transform_rect, dest_point);
hit = false;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg1 - _arg2) + 1)) + _arg2);
return (_local3);
}
public function update():void{
move();
}
private function move():void{
var _local1:Point;
var _local2:Point;
var _local3:Number;
var _local4:Number;
_local1 = new Point((player.x - this.x), (player.y - this.y));
_local1.normalize(1);
_local2 = new Point(Math.cos(current_angle), Math.sin(current_angle));
_local3 = ((_local1.x * _local2.y) - (_local1.y * _local2.x));
if (_local3 > 0){
rotational_velocity = (rotational_velocity + rotational_accel);
checkVelocitys();
current_angle = (current_angle - rotational_velocity);
} else {
if (_local3 < 0){
rotational_velocity = (rotational_velocity + rotational_accel);
checkVelocitys();
current_angle = (current_angle + rotational_velocity);
};
};
_local4 = ((_local1.x * _local2.x) + (_local1.y * _local2.y));
if (Math.acos(_local4) < rotational_accel){
_local2.x = _local1.x;
_local2.y = _local1.y;
} else {
_local2.x = Math.cos(current_angle);
_local2.y = Math.sin(current_angle);
};
this.x = (this.x + (_local2.x * move_speed));
this.y = (this.y + (_local2.y * move_speed));
}
public function explode():void{
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < 4) {
_local2 = new Debris(home, home.sprite_sheet_manager.drone_debris, game_screen, (Math.random() * (Math.PI * 2)));
_local2.x = this.x;
_local2.y = this.y;
home.object_array.push(_local2);
home.debris_array.push(_local2);
_local1++;
};
}
}
}//package
Section 76
//DroneDebris (DroneDebris)
package {
import flash.display.*;
public dynamic class DroneDebris extends MovieClip {
}
}//package
Section 77
//DroneVector (DroneVector)
package {
import flash.display.*;
public dynamic class DroneVector extends MovieClip {
}
}//package
Section 78
//FpsCounter (FpsCounter)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
public class FpsCounter extends Sprite {
private var text_format:TextFormat;
private var text_field:TextField;
private var frame:int;// = 0
private var fps_timer:Timer;
public function FpsCounter(_arg1:Game){
var _local2:Font;
frame = 0;
super();
_local2 = new DavidSans();
text_format = new TextFormat("David Sans", 8, 0xFFFFFF);
text_format.font = _local2.fontName;
text_field = new TextField();
text_field.width = 20;
text_field.height = 0;
text_field.autoSize = TextFieldAutoSize.LEFT;
text_field.selectable = false;
text_field.defaultTextFormat = text_format;
text_field.embedFonts = true;
text_field.text = "Fps: ??";
fps_timer = new Timer(1000);
fps_timer.addEventListener(TimerEvent.TIMER, updateFps, false, 0, true);
fps_timer.start();
this.x = 574;
this.y = 10;
this.addChild(text_field);
this.addEventListener(Event.ENTER_FRAME, increaseFrame, false, 0, true);
_arg1.addChildAt(this, 0);
}
private function increaseFrame(_arg1:Event):void{
frame++;
}
private function updateFps(_arg1:TimerEvent):void{
text_field.text = ("Fps: " + frame);
frame = 0;
}
}
}//package
Section 79
//Game (Game)
package {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
public class Game extends Sprite {
public var score_manager:ScoreManager;
public var enemy_array:Array;
public var crosshair:Crosshair;
public var particle_manager:ParticleManager;
public var wave_manager:WaveManager;
public var game_screen:GameScreen;
public var object_array:Array;
public var sound_manager:SoundManager;
public var debris_array:Array;
public var game_menu:GameMenu;
public var fps_counter:FpsCounter;
public var collision_manager:CollisionManager;
public var boundries:Object;
public var sprite_sheet_manager:SpriteSheetManager;
public var player:Player;
public var laser_array:Array;
public var cyclone_meter:CycloneMeter;
public function Game(){
object_array = new Array();
laser_array = new Array();
enemy_array = new Array();
debris_array = new Array();
boundries = {left:0, right:stage.stageWidth, top:0, bottom:stage.stageHeight};
super();
game_menu = new GameMenu(this);
game_menu.x = (stage.stageWidth / 2);
game_menu.y = (stage.stageHeight / 2);
game_screen = new GameScreen(this);
sprite_sheet_manager = new SpriteSheetManager(this);
particle_manager = new ParticleManager(this);
sound_manager = new SoundManager(this);
game_screen.renderBackground();
this.addChild(game_menu);
}
public function newCrosshair():void{
crosshair = new Crosshair(this);
crosshair.startDrag(true);
object_array.push(crosshair);
Mouse.hide();
}
public function newPlayer():void{
player = new Player(this);
player.x = (this.stage.stageWidth / 2);
player.y = (this.stage.stageHeight / 2);
object_array.push(player);
}
private function gameLoop(_arg1:Event):void{
wave_manager.manageWaves();
collision_manager.checkCollisions();
collision_manager.destroyObjects();
particle_manager.clearDeadParticles();
score_manager.checkLives();
game_screen.updateObjectInMemory();
particle_manager.updateParticlesInMemory();
game_screen.renderBackground();
particle_manager.renderParticlesInMemory();
game_screen.renderObjectsInMemory();
this.stage.focus = stage;
}
public function newGame():void{
cyclone_meter = new CycloneMeter(this);
newPlayer();
newCrosshair();
wave_manager = new WaveManager(this);
score_manager = new ScoreManager(this);
collision_manager = new CollisionManager(this);
this.addEventListener(Event.ENTER_FRAME, gameLoop, false, 0, false);
}
public function clearGame():void{
object_array = new Array();
laser_array = new Array();
enemy_array = new Array();
debris_array = new Array();
game_screen.clear();
player.alive = true;
removeChild(cyclone_meter);
removeChild(score_manager);
this.removeEventListener(Event.ENTER_FRAME, gameLoop);
}
}
}//package
Section 80
//GameMenu (GameMenu)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class GameMenu extends MovieClip {
public var retry_btn:MovieClip;
public var hyperlink:MovieClip;
public var final_score:MovieClip;
public var fingertime:MovieClip;
public var begin_btn:MovieClip;
private var home:Game;
public function GameMenu(_arg1:Game){
addFrameScript(0, frame1, 9, frame10, 49, frame50, 114, frame115, 122, frame123, 138, frame139, 156, frame157);
home = _arg1;
this.retry_btn.enabled = false;
this.begin_btn.addEventListener(MouseEvent.MOUSE_UP, newGame, false, 0, true);
this.hyperlink.addEventListener(MouseEvent.MOUSE_UP, playerthree, false, 0, true);
this.fingertime.addEventListener(MouseEvent.MOUSE_UP, fingertimer, false, 0, true);
}
function frame157(){
stop();
}
public function fingertimer2(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest("http://www.fingertime.com/cyclone");
navigateToURL(_local2, "_blank");
}
function frame10(){
this.fingertime.buttonMode = true;
}
public function playerthree(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest("http://www.playerthree.com");
navigateToURL(_local2, "_blank");
}
function frame1(){
this.begin_btn.enabled = false;
}
public function endGame(_arg1:Number):void{
this.gotoAndPlay(124);
this.final_score.score_tf.text = ("Final Score: " + String(_arg1));
this.retry_btn.addEventListener(MouseEvent.MOUSE_UP, fingertimer2, false, 0, true);
}
public function fingertimer(_arg1:MouseEvent):void{
var _local2:URLRequest;
_local2 = new URLRequest("http://www.fingertime.com");
navigateToURL(_local2, "_blank");
}
function frame115(){
stop();
}
function frame123(){
stop();
}
public function newGame(_arg1:MouseEvent){
this.begin_btn.enabled = false;
home.newGame();
this.gotoAndPlay(116);
home.sound_manager.level_start_sound.play();
this.begin_btn.removeEventListener(MouseEvent.MOUSE_UP, newGame);
}
function frame139(){
this.retry_btn.enabled = true;
this.retry_btn.buttonMode = true;
}
function frame50(){
this.begin_btn.buttonMode = true;
}
}
}//package
Section 81
//GameScreen (GameScreen)
package {
import flash.display.*;
import flash.geom.*;
public class GameScreen {
public var screen_bitmap:Bitmap;
public var source_rectangle:Rectangle;
public var dest_point:Point;
public var perlin_noise:Object;
public var object_array:Array;
public var background_data:BitmapData;
public var screen_data:BitmapData;
private var home:Game;
public function GameScreen(_arg1:Game){
home = _arg1;
object_array = home.object_array;
background_data = new BitmapData((home.stage.stageWidth * 1.25), (home.stage.stageHeight * 1.25), true, 0);
perlin_noise = new Object();
perlin_noise.base_x = 625;
perlin_noise.base_y = 450;
perlin_noise.octaves = 3;
perlin_noise.seed = 4574357;
perlin_noise.stich = false;
perlin_noise.fractal_noise = false;
perlin_noise.channels = (1 | 4);
perlin_noise.gray_scale = false;
perlin_noise.offsets = [new Point((Math.random() * 800), (Math.random() * 800)), new Point((Math.random() * 800), (Math.random() * 800))];
background_data.perlinNoise(perlin_noise.base_x, perlin_noise.base_y, perlin_noise.octaves, perlin_noise.seed, perlin_noise.stich, perlin_noise.fractal_noise, perlin_noise.channels, perlin_noise.grayscale, perlin_noise.offsets);
background_data.colorTransform(background_data.rect, new ColorTransform(0.5, 0.5, 0.5, 0.6, 0, 0, 0, 0));
screen_data = new BitmapData(home.stage.stageWidth, home.stage.stageHeight, false, 0);
screen_bitmap = new Bitmap(screen_data);
dest_point = new Point();
home.addChildAt(screen_bitmap, 0);
}
public function updateObjectInMemory():void{
var _local1:Number;
var _local2:*;
_local1 = object_array.length;
_local2 = 0;
while (_local2 < _local1) {
object_array[_local2].update();
_local2++;
};
}
public function renderObjectsInMemory():void{
var _local1:Number;
var _local2:*;
screen_data.lock();
_local1 = object_array.length;
_local2 = (_local1 - 1);
while (_local2 >= 0) {
object_array[_local2].render();
_local2--;
};
screen_data.unlock();
}
public function clear():void{
object_array = [];
object_array = home.object_array;
}
public function renderBackground():void{
var _local1:Number;
var _local2:Number;
_local1 = ((home.player == null)) ? 0 : (home.player.x / 625);
_local2 = ((home.player == null)) ? 0 : (home.player.y / 450);
source_rectangle = new Rectangle((_local1 * (background_data.rect.width - 625)), (_local2 * (background_data.rect.height - 450)), background_data.rect.width, background_data.rect.height);
screen_data.copyPixels(background_data, source_rectangle, dest_point);
}
}
}//package
Section 82
//InfoPopup (InfoPopup)
package {
import flash.display.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.text.*;
public class InfoPopup extends Sprite {
private var y_tween:Tween;
private var alpha_tween:Tween;
public var info_tf:TextField;
private var home:Game;
public function InfoPopup(_arg1:Game, _arg2, _arg3:Number, _arg4:Number){
home = _arg1;
this.info_tf.text = String(_arg2);
this.x = _arg3;
this.y = _arg4;
home.addChildAt(this, 2);
alpha_tween = new Tween(this, "alpha", Strong.easeOut, 100, 0, 2, true);
y_tween = new Tween(this, "y", Strong.easeOut, this.y, (this.y - 20), 4, true);
alpha_tween.addEventListener(TweenEvent.MOTION_FINISH, remove, false, 0, true);
}
public function remove(_arg1:TweenEvent):void{
this.parent.removeChild(this);
}
}
}//package
Section 83
//Laser (Laser)
package {
import flash.display.*;
import flash.geom.*;
public class Laser extends Sprite {
private var laser_object:Object;
private var game_screen:BitmapData;
private var move_speed:Number;// = 20
private var player_rectangle:Rectangle;
private var sheet_tile:Object;
public var current_angle:Number;
private var dest_point:Point;
private var boundries:Object;
public var hit_radius:Number;// = 18
public var alive:Boolean;// = true
private var player:Player;
private var home:Game;
public function Laser(_arg1:Game){
sheet_tile = new Object();
move_speed = 20;
hit_radius = 18;
alive = true;
super();
home = _arg1;
player = home.player;
laser_object = home.sprite_sheet_manager.laser_object;
game_screen = home.game_screen.screen_data;
boundries = home.boundries;
current_angle = player.laser_angle;
if (current_angle > 180){
current_angle = (current_angle - 360);
};
if (current_angle < 0){
current_angle = (current_angle + 360);
};
current_angle = (current_angle * (Math.PI / 180));
}
public function render():void{
sheet_tile.no = Math.floor((((current_angle * 180) / Math.PI) / laser_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % laser_object.total_colums)) * laser_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / laser_object.total_colums)) * laser_object.tile_height);
player_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, laser_object.tile_width, laser_object.tile_height);
dest_point = new Point((this.x - (laser_object.tile_width / 2)), (this.y - (laser_object.tile_height / 2)));
game_screen.copyPixels(laser_object.sprite_sheet, player_rectangle, dest_point);
}
public function update():void{
move();
}
private function move():void{
this.x = (this.x + (Math.cos(current_angle) * move_speed));
this.y = (this.y + (Math.sin(current_angle) * move_speed));
if (this.x > (boundries.right + laser_object.tile_width)){
alive = false;
} else {
if (this.x < (boundries.left - laser_object.tile_width)){
alive = false;
};
};
if (this.y > (boundries.bottom + laser_object.tile_height)){
alive = false;
} else {
if (this.y < (boundries.top - laser_object.tile_height)){
alive = false;
};
};
}
}
}//package
Section 84
//LaserSound (LaserSound)
package {
import flash.media.*;
public dynamic class LaserSound extends Sound {
}
}//package
Section 85
//LaserVector (LaserVector)
package {
import flash.display.*;
public dynamic class LaserVector extends MovieClip {
}
}//package
Section 86
//LevelStartSound (LevelStartSound)
package {
import flash.media.*;
public dynamic class LevelStartSound extends Sound {
}
}//package
Section 87
//NewWave (NewWave)
package {
import flash.media.*;
public dynamic class NewWave extends Sound {
}
}//package
Section 88
//ParticleManager (ParticleManager)
package {
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
public class ParticleManager {
private var particle_array:Array;
private var particle;
private var source_rectangle:Rectangle;
private var blur_filter:BlurFilter;
private var dest_point:Point;
private var game_screen:BitmapData;
private var home:Game;
public function ParticleManager(_arg1:Game){
home = _arg1;
game_screen = home.game_screen.screen_data;
particle_array = new Array();
}
public function createSpark(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{
var _local7:*;
_local7 = 0;
while (_local7 < _arg6) {
particle = new SparkParticle(home, _arg1, _arg2, _arg3, _arg4, _arg5);
particle_array.push(particle);
_local7++;
};
}
public function createTrail(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:*;
_local5 = 0;
while (_local5 < _arg4) {
particle = new TrailParticle(home, _arg1, _arg2, _arg3);
particle_array.push(particle);
_local5++;
};
}
public function updateParticlesInMemory():void{
var _local1:Number;
var _local2:*;
_local1 = particle_array.length;
_local2 = 0;
while (_local2 < _local1) {
particle_array[_local2].update();
_local2++;
};
}
public function clearDeadParticles():void{
var _local1:Number;
var _local2:*;
_local1 = particle_array.length;
_local2 = (_local1 - 1);
while (_local2 >= 0) {
if (particle_array[_local2].alive == false){
particle_array.splice(_local2, 1);
};
_local2--;
};
}
public function renderParticlesInMemory():void{
var _local1:Number;
var _local2:*;
game_screen.lock();
_local1 = particle_array.length;
_local2 = 0;
while (_local2 < _local1) {
particle_array[_local2].render();
_local2++;
};
game_screen.unlock();
}
}
}//package
Section 89
//Player (Player)
package {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class Player extends Sprite {
private const left:Number = 37;
private const accuracy_index:Number = 2;
private const right:Number = 40;
private const laser_count_index:Number = 0;
private const a:Number = 65;
private const fire_rate_index:Number = 1;
private const d:Number = 68;
private const s:Number = 83;
private const w:Number = 87;
private const up:Number = 38;
private const down:Number = 39;
private const space:Number = 32;
private var rotation_ease:Number;// = 4
private var color_transform_point:Point;
public var invincible:Boolean;// = false
public var thrust_down:Boolean;// = false
private var space_down:Boolean;// = false
private var source_rectangle:Rectangle;
private var player_object:Object;
public var laser_angle:Number;
private var max_rotation_ease:Number;// = 10
private var bounce:Number;// = -0.9
public var current_angle:Number;// = 0
public var is_cyclone:Boolean;// = false
public var weapon_upgrades:Array;
private var target_angle:Number;// = 0
private var flicker_counter:Number;// = 0
public var hit_radius:Number;// = 10
private var flicker_rate:Number;// = 0.8
private var laser:Laser;
public var alive:Boolean;// = true
public var velocity:Point;
private var home:Game;
private var accel:Number;// = 1
private var s_down:Boolean;// = false
private var friction:Number;// = 0.9
private var timer_counter:Number;// = 0
private var particle_manager:ParticleManager;
private var max_cyclone_speed:Number;// = 70
private var laser_object:Object;
public var debris_counter:Number;// = 0
public var cyclone_kills:Number;// = 0
private var color_transform_rect:Rectangle;
private var cyclone_accel:Number;// = 12
public var current_upgrade:Number;// = 0
private var shoot_delay:Number;// = 1
private var w_down:Boolean;// = false
public var spark_colour:Number;// = 11599166
private var object_array:Array;
public var cyclone_velocity:Number;// = 0
public var cyclone_sound:Boolean;// = false
private var game_screen:BitmapData;
private var sheet_tile:Object;
private var color_transform:ColorTransform;
private var cyclone_friction:Number;// = 0.7
private var d_down:Boolean;// = false
public var cycloning:Boolean;// = false
private var boundries:Object;
private var max_speed:Number;// = 8
private var dest_point:Point;
private var invincible_duration:Number;// = 2
private var a_down:Boolean;// = false
private var laser_array:Array;
private var cyclone_meter:CycloneMeter;
private var flicker:Boolean;// = false
private var mouse_down:Boolean;// = false
public function Player(_arg1:Game){
w_down = false;
a_down = false;
s_down = false;
d_down = false;
space_down = false;
mouse_down = false;
sheet_tile = new Object();
color_transform = new ColorTransform();
color_transform_point = new Point();
friction = 0.9;
bounce = -0.9;
max_speed = 8;
accel = 1;
target_angle = 0;
rotation_ease = 4;
max_rotation_ease = 10;
shoot_delay = 1;
invincible_duration = 2;
timer_counter = 0;
flicker = false;
flicker_rate = 0.8;
flicker_counter = 0;
cyclone_accel = 12;
cyclone_friction = 0.7;
max_cyclone_speed = 70;
cyclone_kills = 0;
debris_counter = 0;
velocity = new Point();
invincible = false;
hit_radius = 10;
alive = true;
current_angle = 0;
current_upgrade = 0;
weapon_upgrades = [[1, 0.12, 7], [1, 0.15, 5], [1, 0.18, 3], [1, 0.2, 1], [1, 0.25, 5], [1, 0.3, 3], [1, 0.35, 1]];
cycloning = false;
is_cyclone = false;
cyclone_velocity = 0;
spark_colour = 11599166;
thrust_down = false;
cyclone_sound = false;
super();
home = _arg1;
player_object = home.sprite_sheet_manager.player_object;
laser_object = home.sprite_sheet_manager.laser_object;
object_array = home.object_array;
laser_array = home.laser_array;
game_screen = home.game_screen.screen_data;
boundries = home.boundries;
particle_manager = home.particle_manager;
cyclone_meter = home.cyclone_meter;
color_transform.alphaMultiplier = 0.2;
color_transform_rect = new Rectangle(0, 0, player_object.tile_width, player_object.tile_height);
home.stage.addEventListener(KeyboardEvent.KEY_DOWN, keysDown, false, 0, false);
home.stage.addEventListener(KeyboardEvent.KEY_UP, keysUp, false, 0, false);
home.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown, false, 0, false);
home.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp, false, 0, false);
}
private function mouseUp(_arg1:Event):void{
mouse_down = false;
}
private function shoot():void{
if (((mouse_down) && (!(cycloning)))){
if (shoot_delay >= 1){
home.sound_manager.laser_sound.play();
switch (weapon_upgrades[current_upgrade][laser_count_index]){
case 1:
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
break;
case 2:
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = ((this.x + (Math.cos(laser.current_angle) * 20)) + (Math.sin(laser.current_angle) * 3.5));
laser.y = ((this.y + (Math.sin(laser.current_angle) * 20)) - (Math.cos(laser.current_angle) * 3.5));
object_array.push(laser);
laser_array.push(laser);
laser = new Laser(home);
laser.x = ((this.x + (Math.cos(laser.current_angle) * 20)) - (Math.sin(laser.current_angle) * 3.5));
laser.y = ((this.y + (Math.sin(laser.current_angle) * 20)) + (Math.cos(laser.current_angle) * 3.5));
object_array.push(laser);
laser_array.push(laser);
break;
case 3:
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
break;
case 4:
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
laser_angle = (((Math.atan2((home.stage.mouseY - this.y), (home.stage.mouseX - this.x)) * 180) / Math.PI) + laserOffset());
laser = new Laser(home);
laser.x = (this.x + (Math.cos(laser.current_angle) * 20));
laser.y = (this.y + (Math.sin(laser.current_angle) * 20));
object_array.push(laser);
laser_array.push(laser);
break;
};
shoot_delay = 0;
} else {
shoot_delay = (shoot_delay + weapon_upgrades[current_upgrade][fire_rate_index]);
};
};
}
private function invincibility():void{
if (invincible){
if (timer_counter >= invincible_duration){
invincible = false;
timer_counter = 0;
flicker = false;
} else {
timer_counter = (timer_counter + (1 / 30));
};
if (flicker_counter >= 1){
if (flicker){
flicker = false;
} else {
flicker = true;
};
flicker_counter = 0;
} else {
flicker_counter = (flicker_counter + flicker_rate);
};
};
}
private function keysDown(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case w:
w_down = true;
break;
case a:
a_down = true;
break;
case s:
s_down = true;
break;
case d:
d_down = true;
break;
case up:
w_down = true;
break;
case left:
a_down = true;
break;
case right:
s_down = true;
break;
case down:
d_down = true;
break;
case space:
space_down = true;
break;
};
}
public function update():void{
move();
rotate();
shoot();
invincibility();
}
private function mouseDown(_arg1:MouseEvent):void{
mouse_down = true;
}
private function laserOffset():Number{
var _local1:Number;
_local1 = ((Math.random() * (weapon_upgrades[current_upgrade][accuracy_index] * 2)) - weapon_upgrades[current_upgrade][accuracy_index]);
return (_local1);
}
private function rotate():void{
var _local1:Number;
var _local2:Number;
if (!cycloning){
if ((((Math.abs(velocity.x) > 0.75)) || ((Math.abs(velocity.y) > 0.75)))){
target_angle = ((Math.atan2(velocity.y, velocity.x) * 180) / Math.PI);
_local1 = (target_angle - current_angle);
if (_local1 > 180){
_local1 = (_local1 - 360);
};
if (_local1 < -180){
_local1 = (_local1 + 360);
};
_local2 = (_local1 / rotation_ease);
if (_local2 > max_rotation_ease){
_local2 = max_rotation_ease;
};
if (_local2 < -(max_rotation_ease)){
_local2 = -(max_rotation_ease);
};
current_angle = (current_angle + _local2);
if (current_angle > 360){
current_angle = (current_angle - 360);
};
if (current_angle < 0){
current_angle = (current_angle + 360);
};
};
};
if (!is_cyclone){
if (space_down){
if (cyclone_meter.bar_fill1.scaleX > 0.2){
is_cyclone = true;
};
};
};
if (((!(space_down)) || ((cyclone_meter.bar_fill1.scaleX <= 0)))){
is_cyclone = false;
};
if (is_cyclone){
cyclone_velocity = (cyclone_velocity + cyclone_accel);
current_angle = (current_angle + cyclone_velocity);
if (cyclone_velocity > max_cyclone_speed){
cyclone_velocity = max_cyclone_speed;
};
if (current_angle >= 360){
current_angle = 0;
};
if (cyclone_meter.bar_fill1.scaleX > 0){
cyclone_meter.emptyBar();
};
friction = 0.99;
hit_radius = 20;
if (space_down){
particle_manager.createTrail(this.x, this.y, this.current_angle, 10);
};
} else {
if (cyclone_velocity > 1){
cyclone_velocity = (cyclone_velocity * cyclone_friction);
current_angle = (current_angle + cyclone_velocity);
if (current_angle >= 360){
current_angle = 0;
};
} else {
friction = 0.9;
hit_radius = 10;
};
};
if (((space_down) && ((cyclone_meter.bar_fill1.scaleX > 0.2)))){
if (!cyclone_sound){
home.sound_manager.startCycloneStart();
cyclone_sound = true;
};
} else {
if (((!(space_down)) || ((cyclone_meter.bar_fill1.scaleX < 0)))){
if (cyclone_sound){
home.sound_manager.stopCycloneStart();
home.sound_manager.cyclone_finish.play();
cyclone_sound = false;
};
};
};
if (!space_down){
cyclone_kills = 0;
};
if (cyclone_velocity > 4){
cycloning = true;
} else {
cycloning = false;
};
}
private function keysUp(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case w:
w_down = false;
break;
case a:
a_down = false;
break;
case s:
s_down = false;
break;
case d:
d_down = false;
break;
case up:
w_down = false;
break;
case left:
a_down = false;
break;
case right:
s_down = false;
break;
case down:
d_down = false;
break;
case space:
space_down = false;
break;
};
}
public function render():void{
sheet_tile.no = Math.floor((current_angle / player_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % player_object.total_colums)) * player_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / player_object.total_colums)) * player_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, player_object.tile_width, player_object.tile_height);
dest_point = new Point((this.x - (player_object.tile_width / 2)), (this.y - (player_object.tile_height / 2)));
if (!flicker){
game_screen.copyPixels(player_object.sprite_sheet, source_rectangle, dest_point);
} else {
player_object.temp_data.copyPixels(player_object.sprite_sheet, source_rectangle, color_transform_point);
player_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(player_object.temp_data, color_transform_rect, dest_point);
};
}
private function move():void{
if (w_down){
velocity.y = (velocity.y - accel);
};
if (a_down){
velocity.x = (velocity.x - accel);
};
if (s_down){
velocity.y = (velocity.y + accel);
};
if (d_down){
velocity.x = (velocity.x + accel);
};
if (velocity.x > max_speed){
velocity.x = max_speed;
} else {
if (velocity.x < -(max_speed)){
velocity.x = -(max_speed);
};
};
if (velocity.y > max_speed){
velocity.y = max_speed;
} else {
if (velocity.y < -(max_speed)){
velocity.y = -(max_speed);
};
};
if (Math.abs(velocity.x) < 0.1){
velocity.x = 0;
};
if (Math.abs(velocity.y) < 0.1){
velocity.y = 0;
};
if (this.x > (boundries.right - player_object.movie_clip.width)){
this.x = (boundries.right - player_object.movie_clip.width);
if (cycloning){
velocity.x = (velocity.x * bounce);
};
} else {
if (this.x < (boundries.left + player_object.movie_clip.width)){
this.x = (boundries.left + player_object.movie_clip.width);
if (cycloning){
velocity.x = (velocity.x * bounce);
};
};
};
if (this.y > (boundries.bottom - player_object.movie_clip.height)){
this.y = (boundries.bottom - player_object.movie_clip.height);
if (cycloning){
velocity.y = (velocity.y * bounce);
};
} else {
if (this.y < (boundries.top + player_object.movie_clip.height)){
this.y = (boundries.top + player_object.movie_clip.height);
if (cycloning){
velocity.y = (velocity.y * bounce);
};
};
};
if (((((((w_down) || (a_down))) || (s_down))) || (d_down))){
particle_manager.createTrail(this.x, this.y, this.current_angle, 10);
if (!thrust_down){
home.sound_manager.startThrust();
thrust_down = true;
};
} else {
if (((((((!(w_down)) && (!(a_down)))) && (!(s_down)))) && (!(d_down)))){
if (thrust_down){
home.sound_manager.stopThrust();
thrust_down = false;
};
};
};
velocity.x = (velocity.x * friction);
velocity.y = (velocity.y * friction);
this.x = (this.x + velocity.x);
this.y = (this.y + velocity.y);
}
}
}//package
Section 90
//PlayerVector (PlayerVector)
package {
import flash.display.*;
public dynamic class PlayerVector extends MovieClip {
}
}//package
Section 91
//PointsPopup (PointsPopup)
package {
import flash.display.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.text.*;
public class PointsPopup extends Sprite {
private var y_tween:Tween;
public var points_tf:TextField;
private var alpha_tween:Tween;
private var home:Game;
public function PointsPopup(_arg1:Game, _arg2:Number, _arg3:Number, _arg4:Number){
home = _arg1;
this.points_tf.text = String(_arg2);
this.x = _arg3;
this.y = _arg4;
home.addChildAt(this, 2);
alpha_tween = new Tween(this, "alpha", Strong.easeOut, 100, 0, 1, true);
y_tween = new Tween(this, "y", Strong.easeOut, this.y, (this.y - 20), 1, true);
alpha_tween.addEventListener(TweenEvent.MOTION_FINISH, remove, false, 0, true);
}
public function remove(_arg1:TweenEvent):void{
this.parent.removeChild(this);
}
}
}//package
Section 92
//ScoreManager (ScoreManager)
package {
import flash.display.*;
import flash.text.*;
import flash.ui.*;
public class ScoreManager extends Sprite {
private var score_field:TextField;
public var upgrade_increment:Number;// = 0
private var wave_field:TextField;
private var lives_format:TextFormat;
private var score_format:TextFormat;
public var total_lives:Number;// = 3
public var points_popup:PointsPopup;
public var delay_counter:Number;// = 0
public var points_needed_upgrade:Number;// = 500
private var object_array:Array;
public var respawn_delay:Number;// = 2
private var lives_field:TextField;
public var end_game:Boolean;// = false
public var total_score:Number;// = 0
public var upgrade_counter:Number;
private var player:Player;
private var home:Game;
private var wave_format:TextFormat;
public function ScoreManager(_arg1:Game){
var _local2:Font;
total_score = 0;
total_lives = 3;
respawn_delay = 2;
delay_counter = 0;
points_needed_upgrade = 500;
upgrade_increment = 0;
upgrade_counter = points_needed_upgrade;
end_game = false;
super();
home = _arg1;
player = home.player;
object_array = home.object_array;
_local2 = new Studio();
score_format = new TextFormat("FFF Estudio Extended", 8, 0xFFFFFF);
score_format.font = _local2.fontName;
score_field = new TextField();
score_field.width = 0;
score_field.height = 0;
score_field.autoSize = TextFieldAutoSize.LEFT;
score_field.selectable = false;
score_field.defaultTextFormat = score_format;
score_field.embedFonts = true;
score_field.text = ("Score: " + String(total_score));
lives_format = new TextFormat("FFF Estudio Extended", 8, 0xFFFFFF);
lives_format.font = _local2.fontName;
lives_field = new TextField();
lives_field.width = 0;
lives_field.height = 0;
lives_field.autoSize = TextFieldAutoSize.LEFT;
lives_field.selectable = false;
lives_field.defaultTextFormat = lives_format;
lives_field.embedFonts = true;
lives_field.text = ("Lives: " + String(total_lives));
lives_field.x = 545;
wave_format = new TextFormat("FFF Estudio Extended", 8, 0xFFFFFF);
wave_format.font = _local2.fontName;
wave_field = new TextField();
wave_field.width = 0;
wave_field.height = 0;
wave_field.autoSize = TextFieldAutoSize.LEFT;
wave_field.selectable = false;
wave_field.defaultTextFormat = lives_format;
wave_field.embedFonts = true;
wave_field.text = ("Wave: " + String((home.wave_manager.current_wave + 1)));
wave_field.x = 545;
wave_field.y = -14;
this.x = 10;
this.y = 25;
this.addChild(score_field);
this.addChild(lives_field);
this.addChild(wave_field);
home.addChildAt(this, 1);
}
public function newPopup(_arg1:Number, _arg2:Number, _arg3:Number):void{
points_popup = new PointsPopup(home, _arg1, _arg2, _arg3);
}
public function updateScore():void{
var _local1:*;
score_field.text = ("Score: " + String(total_score));
if ((((total_score >= upgrade_counter)) && ((player.current_upgrade < (player.weapon_upgrades.length - 1))))){
home.sound_manager.upgrade_sound.play();
player.current_upgrade++;
_local1 = new InfoPopup(home, "Lasers Upgraded!", 312, 120);
upgrade_increment = (upgrade_increment + 500);
upgrade_counter = ((total_score + points_needed_upgrade) + upgrade_increment);
};
}
public function updateWave():void{
wave_field.text = ("Wave: " + String((home.wave_manager.current_wave + 1)));
}
public function updateLives():void{
lives_field.text = ("Lives: " + String(total_lives));
}
public function checkLives():void{
if (((!(player.alive)) && ((total_lives > 0)))){
if (delay_counter >= respawn_delay){
player.x = (this.stage.stageWidth / 2);
player.y = (this.stage.stageHeight / 2);
player.velocity.x = 0;
player.velocity.y = 0;
player.alive = true;
player.invincible = true;
object_array.push(player);
delay_counter = 0;
} else {
delay_counter = (delay_counter + (1 / 30));
};
} else {
if (((!(end_game)) && ((total_lives == 0)))){
home.game_menu.endGame(total_score);
end_game = true;
Mouse.show();
};
};
}
}
}//package
Section 93
//Slicer (Slicer)
package {
import flash.display.*;
import flash.geom.*;
public class Slicer extends Sprite {
public var points:Number;// = 250
private var color_transform_rect:Rectangle;
private var slicer_object:Object;
private var color_transform_point:Point;
private var source_rectangle:Rectangle;
private var movement_angle:Number;
private var delay_counter:Number;// = 0
public var health:Number;// = 14
public var spark_colour:Number;// = 9764019
private var game_screen:BitmapData;
private var move_speed:Number;// = 0
private var color_transform:ColorTransform;
private var sheet_tile:Object;
private var spin_angle:Number;// = 0
private var move_delay:Number;
private var dest_point:Point;
public var hit:Boolean;// = false
private var boundries:Object;
public var hit_radius:Number;// = 15
public var alive:Boolean;// = true
private var player:Player;
private var home:Game;
public function Slicer(_arg1:Game){
sheet_tile = new Object();
color_transform = new ColorTransform();
color_transform_point = new Point();
spin_angle = 0;
move_speed = 0;
delay_counter = 0;
alive = true;
hit_radius = 15;
points = 250;
health = 14;
hit = false;
spark_colour = 9764019;
super();
home = _arg1;
player = home.player;
slicer_object = home.sprite_sheet_manager.slicer_object;
game_screen = home.game_screen.screen_data;
boundries = home.boundries;
move_delay = randomize(2.5, 1.5);
color_transform.redOffset = 0xFF;
color_transform.greenOffset = 0xFF;
color_transform.blueOffset = 0xFF;
color_transform_rect = new Rectangle(0, 0, slicer_object.tile_width, slicer_object.tile_height);
}
private function rotate():void{
spin_angle = (spin_angle + 10);
if (spin_angle >= 360){
spin_angle = 0;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg1 - _arg2) + 1)) + _arg2);
return (_local3);
}
public function render():void{
sheet_tile.no = Math.floor((spin_angle / slicer_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % slicer_object.total_colums)) * slicer_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / slicer_object.total_colums)) * slicer_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, slicer_object.tile_width, slicer_object.tile_height);
dest_point = new Point((this.x - (slicer_object.tile_width / 2)), (this.y - (slicer_object.tile_height / 2)));
if (!hit){
game_screen.copyPixels(slicer_object.sprite_sheet, source_rectangle, dest_point);
} else {
slicer_object.temp_data.copyPixels(slicer_object.sprite_sheet, source_rectangle, color_transform_point);
slicer_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(slicer_object.temp_data, color_transform_rect, dest_point);
hit = false;
};
}
public function update():void{
move();
rotate();
}
private function move():void{
var _local1:Number;
var _local2:Number;
if (delay_counter >= move_delay){
_local1 = (player.x - this.x);
_local2 = (player.y - this.y);
movement_angle = Math.atan2(_local2, _local1);
move_speed = 10;
delay_counter = 0;
} else {
delay_counter = (delay_counter + (1 / 30));
};
this.x = (isNaN(movement_angle)) ? this.x : (this.x + (Math.cos(movement_angle) * move_speed));
this.y = (isNaN(movement_angle)) ? this.y : (this.y + (Math.sin(movement_angle) * move_speed));
if (this.x > (boundries.right - hit_radius)){
this.x = (boundries.right - hit_radius);
move_speed = 0;
} else {
if (this.x < (boundries.left + hit_radius)){
this.x = (boundries.left + hit_radius);
move_speed = 0;
};
};
if (this.y > (boundries.bottom - hit_radius)){
this.y = (boundries.bottom - hit_radius);
move_speed = 0;
} else {
if (this.y < (boundries.top + hit_radius)){
this.y = (boundries.top + hit_radius);
move_speed = 0;
};
};
}
public function explode():void{
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < 6) {
_local2 = new Debris(home, home.sprite_sheet_manager.slicer_debris, game_screen, (Math.random() * (Math.PI * 2)));
_local2.x = this.x;
_local2.y = this.y;
home.object_array.push(_local2);
home.debris_array.push(_local2);
_local1++;
};
}
}
}//package
Section 94
//SlicerDebris (SlicerDebris)
package {
import flash.display.*;
public dynamic class SlicerDebris extends MovieClip {
}
}//package
Section 95
//SlicerVector (SlicerVector)
package {
import flash.display.*;
public dynamic class SlicerVector extends MovieClip {
}
}//package
Section 96
//SoundManager (SoundManager)
package {
import flash.media.*;
public class SoundManager {
public var die_2_sound:Die2Sound;
public var die_4_sound:Die4Sound;
public var die_8_sound:Die8Sound;
public var die_6_sound:Die6Sound;
public var laser_sound:LaserSound;
public var thrust_channel:SoundChannel;
public var cyclone_start_channel:SoundChannel;
public var upgrade_sound:UpgradeSound;
public var cyclone_finish:CycloneFinish;
public var level_start_sound:LevelStartSound;
public var new_wave:NewWave;
public var die_1_sound:Die1Sound;
public var die_3_sound:Die3Sound;
public var die_5_sound:Die5Sound;
public var die_7_sound:Die7Sound;
public var die_9_sound:Die9Sound;
public var cyclone_start:CycloneStart;
private var home:Game;
public var thrust_sound:ThrustSound;
public var debris_1:Debris1;
public var debris_2:Debris2;
public function SoundManager(_arg1:Game){
home = _arg1;
thrust_sound = new ThrustSound();
thrust_channel = new SoundChannel();
laser_sound = new LaserSound();
upgrade_sound = new UpgradeSound();
level_start_sound = new LevelStartSound();
die_1_sound = new Die1Sound();
die_2_sound = new Die2Sound();
die_3_sound = new Die3Sound();
die_4_sound = new Die4Sound();
die_5_sound = new Die5Sound();
die_6_sound = new Die6Sound();
die_7_sound = new Die7Sound();
die_8_sound = new Die8Sound();
die_9_sound = new Die9Sound();
cyclone_start = new CycloneStart();
cyclone_finish = new CycloneFinish();
debris_1 = new Debris1();
debris_2 = new Debris2();
new_wave = new NewWave();
}
public function randomExplosion():void{
var _local1:int;
_local1 = (Math.random() * 9);
switch (_local1){
case 0:
die_1_sound.play();
break;
case 1:
die_2_sound.play();
break;
case 2:
die_3_sound.play();
break;
case 3:
die_4_sound.play();
break;
case 4:
die_5_sound.play();
break;
case 5:
die_6_sound.play();
break;
case 6:
die_7_sound.play();
break;
case 7:
die_8_sound.play();
break;
case 8:
die_9_sound.play();
break;
};
}
public function randomDebris():void{
var _local1:int;
_local1 = (Math.random() * 2);
switch (_local1){
case 0:
debris_1.play();
break;
case 1:
debris_2.play();
break;
};
}
public function stopCycloneStart():void{
cyclone_start_channel.stop();
}
public function startThrust():void{
thrust_channel = thrust_sound.play(0, 9999);
}
public function stopThrust():void{
thrust_channel.stop();
}
public function startCycloneStart():void{
cyclone_start_channel = cyclone_start.play(0, 9999);
}
}
}//package
Section 97
//SparkParticle (SparkParticle)
package {
import flash.display.*;
import flash.geom.*;
public class SparkParticle extends Sprite {
private var particle_direction:Number;
private var particle_life:Number;
private var source_rectangle:Rectangle;
private var particle_speed:Number;
private var particle_friction:Number;
private var particle_colour:Number;
private var colour_red:Number;
private var dest_point:Point;
private var life_counter:Number;
private var particle_spray:Number;
public var alive:Boolean;// = true
private var colour_green:Number;
private var home:Game;
private var colour_blue:Number;
public function SparkParticle(_arg1:Game, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
alive = true;
super();
home = _arg1;
particle_spray = _arg5;
particle_direction = ((((_arg4 * 180) / Math.PI) + offset()) - 180);
particle_life = (Math.random() * 2);
life_counter = 0;
particle_speed = ((Math.random() * 4) + 3);
particle_colour = _arg6;
particle_friction = 0.95;
this.x = (_arg2 + (Math.cos(((particle_direction * Math.PI) / 180)) * 10));
this.y = (_arg3 + (Math.sin(((particle_direction * Math.PI) / 180)) * 10));
}
public function render():void{
source_rectangle = new Rectangle((this.x - 1), (this.y - 1), 2, 2);
home.game_screen.screen_data.fillRect(source_rectangle, particle_colour);
}
public function offset():Number{
var _local1:Number;
_local1 = ((Math.random() * (particle_spray * 2)) - particle_spray);
return (_local1);
}
private function move():void{
particle_speed = (particle_speed * particle_friction);
this.x = (this.x + (Math.cos(((particle_direction * Math.PI) / 180)) * particle_speed));
this.y = (this.y + (Math.sin(((particle_direction * Math.PI) / 180)) * particle_speed));
if (life_counter >= particle_life){
alive = false;
} else {
life_counter = (life_counter + (1 / 30));
};
}
public function update():void{
move();
}
}
}//package
Section 98
//Spinner (Spinner)
package {
import flash.display.*;
import flash.geom.*;
public class Spinner extends Sprite {
public var points:Number;// = 125
private var spinner_object:Object;
private var color_transform_rect:Rectangle;
private var color_transform_point:Point;
private var source_rectangle:Rectangle;
public var health:Number;// = 10
private var rotational_accel:Number;
public var spark_colour:Number;// = 9565439
private var game_screen:BitmapData;
private var object_array:Array;
private var rotational_velocity:Number;// = 0
private var color_transform:ColorTransform;
private var sheet_tile:Object;
private var spin_angle:Number;// = 0
private var move_speed:Number;
public var current_angle:Number;
private var dest_point:Point;
public var hit:Boolean;// = false
public var hit_radius:Number;// = 10
public var alive:Boolean;// = true
private var player:Player;
private var home:Game;
private var enemy_array:Array;
private var max_rotational_velocity:Number;
public function Spinner(_arg1:Game){
sheet_tile = new Object();
color_transform = new ColorTransform();
color_transform_point = new Point();
spin_angle = 0;
rotational_velocity = 0;
hit_radius = 10;
alive = true;
points = 125;
health = 10;
hit = false;
spark_colour = 9565439;
super();
home = _arg1;
player = home.player;
spinner_object = home.sprite_sheet_manager.spinner_object;
game_screen = home.game_screen.screen_data;
object_array = home.object_array;
enemy_array = home.enemy_array;
move_speed = randomize(5, 4);
rotational_accel = ((randomize(6, 4) * Math.PI) / 180);
max_rotational_velocity = ((randomize(10, 8) * Math.PI) / 180);
color_transform.redOffset = 0xFF;
color_transform.greenOffset = 0xFF;
color_transform.blueOffset = 0xFF;
color_transform_rect = new Rectangle(0, 0, spinner_object.tile_width, spinner_object.tile_height);
}
private function checkVelocitys():void{
if (Math.abs(rotational_velocity) > max_rotational_velocity){
rotational_velocity = (max_rotational_velocity * (Math.abs(max_rotational_velocity) / rotational_velocity));
};
}
private function rotate():void{
spin_angle = (spin_angle + (move_speed * 2));
if (spin_angle >= 360){
spin_angle = 0;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg1 - _arg2) + 1)) + _arg2);
return (_local3);
}
public function render():void{
sheet_tile.no = Math.floor((spin_angle / spinner_object.rotation_inc));
sheet_tile.x = (Math.floor((sheet_tile.no % spinner_object.total_colums)) * spinner_object.tile_width);
sheet_tile.y = (Math.floor((sheet_tile.no / spinner_object.total_colums)) * spinner_object.tile_height);
source_rectangle = new Rectangle(sheet_tile.x, sheet_tile.y, spinner_object.tile_width, spinner_object.tile_height);
dest_point = new Point((this.x - (spinner_object.tile_width / 2)), (this.y - (spinner_object.tile_height / 2)));
if (!hit){
game_screen.copyPixels(spinner_object.sprite_sheet, source_rectangle, dest_point);
} else {
spinner_object.temp_data.copyPixels(spinner_object.sprite_sheet, source_rectangle, color_transform_point);
spinner_object.temp_data.colorTransform(color_transform_rect, color_transform);
game_screen.copyPixels(spinner_object.temp_data, color_transform_rect, dest_point);
hit = false;
};
}
public function update():void{
move();
rotate();
}
private function move():void{
var _local1:Point;
var _local2:Point;
var _local3:Number;
var _local4:Number;
_local1 = new Point((player.x - this.x), (player.y - this.y));
_local1.normalize(1);
_local2 = new Point(Math.cos(current_angle), Math.sin(current_angle));
_local3 = ((_local1.x * _local2.y) - (_local1.y * _local2.x));
if (_local3 > 0){
rotational_velocity = (rotational_velocity + rotational_accel);
checkVelocitys();
current_angle = (current_angle - rotational_velocity);
} else {
if (_local3 < 0){
rotational_velocity = (rotational_velocity + rotational_accel);
checkVelocitys();
current_angle = (current_angle + rotational_velocity);
};
};
_local4 = ((_local1.x * _local2.x) + (_local1.y * _local2.y));
if (Math.acos(_local4) < rotational_accel){
_local2.x = _local1.x;
_local2.y = _local1.y;
} else {
_local2.x = Math.cos(current_angle);
_local2.y = Math.sin(current_angle);
};
this.x = (this.x + (_local2.x * move_speed));
this.y = (this.y + (_local2.y * move_speed));
}
public function explode():void{
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < 4) {
_local2 = new Debris(home, home.sprite_sheet_manager.spinner_debris, game_screen, (Math.random() * (Math.PI * 2)));
_local2.x = this.x;
_local2.y = this.y;
home.object_array.push(_local2);
home.debris_array.push(_local2);
_local1++;
};
}
}
}//package
Section 99
//SpinnerDebris (SpinnerDebris)
package {
import flash.display.*;
public dynamic class SpinnerDebris extends MovieClip {
}
}//package
Section 100
//SpinnerVector (SpinnerVector)
package {
import flash.display.*;
public dynamic class SpinnerVector extends MovieClip {
}
}//package
Section 101
//SpriteSheetManager (SpriteSheetManager)
package {
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
public class SpriteSheetManager {
public var drone_debris:Object;
public var crosshair_object:Object;
public var drone_object:Object;
public var drifter_object:Object;
public var drifter_debris:Object;
public var slicer_debris:Object;
public var player_object:Object;
private var home:Sprite;
public var spinner_debris:Object;
public var spinner_object:Object;
public var laser_object:Object;
public var slicer_object:Object;
public function SpriteSheetManager(_arg1:Sprite){
player_object = new Object();
laser_object = new Object();
crosshair_object = new Object();
spinner_object = new Object();
drone_object = new Object();
drifter_object = new Object();
slicer_object = new Object();
drone_debris = new Object();
drifter_debris = new Object();
spinner_debris = new Object();
slicer_debris = new Object();
super();
home = _arg1;
createSpriteSheet(player_object, new PlayerVector(), new GlowFilter(0x99FF00, 0.5, 12, 12, 2), 3, 30, 30);
createSpriteSheet(laser_object, new LaserVector(), new GlowFilter(16501517, 0.8, 12, 12, 2), 3, 15, 15);
createSpriteSheet(crosshair_object, new CrossVector(), new GlowFilter(0xFFFFFF, 0, 12, 12, 3), 3, 30, 30);
createSpriteSheet(spinner_object, new SpinnerVector(), new GlowFilter(431088, 0.8, 12, 12, 2), 3, 30, 30);
createSpriteSheet(drone_object, new DroneVector(), new GlowFilter(14352985, 0.8, 12, 12, 2), 360, 40, 40);
createSpriteSheet(drifter_object, new DrifterVector(), new GlowFilter(0xC70000, 0.7, 10, 10, 2), 3, 30, 30);
createSpriteSheet(slicer_object, new SlicerVector(), new GlowFilter(6486927, 0.8, 12, 12, 2), 3, 35, 35);
createSpriteSheet(drone_debris, new DroneDebris(), new GlowFilter(14352985, 0.8, 12, 12, 2), 3, 35, 35);
createSpriteSheet(drifter_debris, new DrifterDebris(), new GlowFilter(0xC70000, 0.8, 12, 12, 2), 3, 35, 35);
createSpriteSheet(spinner_debris, new SpinnerDebris(), new GlowFilter(431088, 0.8, 12, 12, 2), 3, 35, 35);
createSpriteSheet(slicer_debris, new SlicerDebris(), new GlowFilter(6486927, 0.8, 12, 12, 2), 3, 35, 35);
}
private function createSpriteSheet(_arg1:Object, _arg2:MovieClip, _arg3:GlowFilter, _arg4:Number, _arg5:Number, _arg6:Number):void{
var _local7:*;
var _local8:*;
_arg1.movie_clip = _arg2;
_arg1.glow_filter = _arg3;
_arg1.movie_clip.filters = [_arg3];
_arg1.rotation_inc = _arg4;
_arg1.tile_width = _arg5;
_arg1.tile_height = _arg6;
_arg1.total_tiles = (360 / _arg4);
_arg1.total_colums = 15;
_arg1.total_rows = Math.ceil((_arg1.total_tiles / _arg1.total_colums));
_arg1.sprite_sheet = new BitmapData((_arg5 * _arg1.total_colums), (_arg6 * _arg1.total_rows), true, 0);
_arg1.temp_data = new BitmapData(_arg5, _arg6, true, 0);
_arg1.bitmap = new Bitmap(_arg1.sprite_sheet);
_arg1.source_rectangle = new Rectangle(0, 0, _arg5, _arg6);
_arg1.dest_point = new Point();
_arg1.rotation_matrix = new Matrix();
_arg1.rotation_matrix.translate((_arg5 / 2), (_arg6 / 2));
_local7 = 0;
while (_local7 < _arg1.total_rows) {
_local8 = 0;
while (_local8 < _arg1.total_colums) {
_arg1.dest_point.x = (_local8 * _arg5);
_arg1.dest_point.y = (_local7 * _arg6);
_arg1.temp_data.fillRect(_arg1.source_rectangle, 0);
_arg1.temp_data.draw(_arg1.movie_clip, _arg1.rotation_matrix);
_arg1.sprite_sheet.copyPixels(_arg1.temp_data, _arg1.source_rectangle, _arg1.dest_point);
_arg1.rotation_matrix.translate(((_arg1.tile_width / 2) * -1), ((_arg1.tile_width / 2) * -1));
_arg1.rotation_matrix.rotate(((_arg4 * Math.PI) / 180));
_arg1.rotation_matrix.translate((_arg1.tile_width / 2), (_arg1.tile_width / 2));
_local8++;
};
_local7++;
};
}
}
}//package
Section 102
//Studio (Studio)
package {
import flash.text.*;
public dynamic class Studio extends Font {
}
}//package
Section 103
//ThrustSound (ThrustSound)
package {
import flash.media.*;
public dynamic class ThrustSound extends Sound {
}
}//package
Section 104
//TrailParticle (TrailParticle)
package {
import flash.display.*;
import flash.geom.*;
public class TrailParticle extends Sprite {
private var particle_direction:Number;
private var particle_life:Number;
private var source_rectangle:Rectangle;
private var particle_speed:Number;
private var particle_colour:Number;
private var colour_red:Number;
private var dest_point:Point;
private var life_counter:Number;
private var particle_spray:Number;
public var alive:Boolean;// = true
private var colour_green:Number;
private var home:Game;
private var colour_blue:Number;
public function TrailParticle(_arg1:Game, _arg2:Number, _arg3:Number, _arg4:Number){
alive = true;
super();
home = _arg1;
particle_spray = 30;
particle_direction = ((_arg4 + offset()) - 180);
particle_life = (Math.random() * 0.35);
life_counter = 0;
particle_speed = ((Math.random() * 3) + 0.3);
particle_colour = 0xFFFFFF;
this.x = _arg2;
this.y = _arg3;
}
public function render():void{
source_rectangle = new Rectangle((this.x - 1), (this.y - 1), 2, 2);
home.game_screen.screen_data.fillRect(source_rectangle, particle_colour);
}
public function offset():Number{
var _local1:Number;
_local1 = ((Math.random() * (particle_spray * 2)) - particle_spray);
return (_local1);
}
private function recolour():void{
colour_red = ((particle_colour & 0xFF0000) >> 16);
colour_green = ((particle_colour & 0xFF00) >> 8);
colour_blue = ((particle_colour & 0xFF) >> 0);
if (colour_blue > 20){
colour_blue = (colour_blue * 0.8);
} else {
if (colour_green > 0){
colour_green = (colour_green * 0.7);
};
};
particle_colour = (((colour_red << 16) | (colour_green << 8)) | (colour_blue << 0));
}
private function move():void{
this.x = (this.x + (Math.cos(((particle_direction * Math.PI) / 180)) * particle_speed));
this.y = (this.y + (Math.sin(((particle_direction * Math.PI) / 180)) * particle_speed));
if (life_counter >= particle_life){
alive = false;
} else {
life_counter = (life_counter + (1 / 58));
};
}
public function update():void{
move();
recolour();
}
}
}//package
Section 105
//UpgradeSound (UpgradeSound)
package {
import flash.media.*;
public dynamic class UpgradeSound extends Sound {
}
}//package
Section 106
//WaveManager (WaveManager)
package {
public class WaveManager {
private const name_index:Number = 0;
private const drifter_index:Number = 3;
private const drone_index:Number = 2;
private const spinner_index:Number = 4;
private const slicer_index:Number = 5;
private const sub_wave_index:Number = 1;
private var delay_counter:Number;
private var sub_wave_counter:Number;// = 0
private var object_array:Array;
private var info_popup:InfoPopup;
private var sub_wave_delay:Number;// = 4
private var home:Game;
private var player:Player;
private var enemy_array:Array;
private var pattern_array:Array;
public var current_wave:Number;// = 0
public function WaveManager(_arg1:Game){
current_wave = 0;
sub_wave_delay = 4;
sub_wave_counter = 0;
delay_counter = sub_wave_delay;
pattern_array = [["wave 1", 1, 2, 0, 0, 0], ["wave 2", 1, 2, 1, 0, 0], ["wave 3", 1, 3, 0, 0, 0], ["wave 4", 1, 2, 2, 0, 0], ["wave 5", 1, 0, 4, 0, 0], ["wave 6", 1, 4, 0, 0, 0], ["wave 7", 2, 3, 1, 1, 0], ["wave 8", 2, 3, 0, 2, 0], ["wave 9", 2, 0, 0, 3, 0], ["wave 10", 2, 4, 0, 4, 0], ["wave 11", 0, 0, 0, 0, 0]];
super();
home = _arg1;
player = home.player;
object_array = home.object_array;
enemy_array = home.enemy_array;
info_popup = new InfoPopup(home, ("Wave " + (current_wave + 1)), 312, 100);
}
private function spawnEnemies():void{
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
_local1 = 0;
while (_local1 < pattern_array[current_wave][drone_index]) {
spawnDrone();
_local1++;
};
_local2 = 0;
while (_local2 < pattern_array[current_wave][drifter_index]) {
spawnDrifter();
_local2++;
};
_local3 = 0;
while (_local3 < pattern_array[current_wave][spinner_index]) {
spawnSpinner();
_local3++;
};
_local4 = 0;
while (_local4 < pattern_array[current_wave][slicer_index]) {
spawnSlicer();
_local4++;
};
}
private function randomize(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg1 - _arg2) + 1)) + _arg2);
return (_local3);
}
private function spawnPosition(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = Math.ceil((Math.random() * 2));
switch (_local5){
case 1:
_local6 = randomize(_arg1, _arg2);
break;
case 2:
_local6 = randomize(_arg3, _arg4);
break;
};
return (_local6);
}
private function spawnDrone():void{
var _local1:Drone;
_local1 = new Drone(home);
_local1.x = spawnPosition(-100, -10, 725, 635);
_local1.y = randomize(338, 112);
_local1.current_angle = Math.atan2((player.y - _local1.y), (player.x - _local1.x));
object_array.push(_local1);
enemy_array.push(_local1);
}
private function spawnSpinner():void{
var _local1:Spinner;
_local1 = new Spinner(home);
_local1.x = spawnPosition(-100, -10, 725, 635);
_local1.y = spawnPosition(-100, -10, 550, 460);
_local1.current_angle = Math.atan2((player.y - _local1.y), (player.x - _local1.x));
object_array.push(_local1);
enemy_array.push(_local1);
}
public function manageWaves():void{
if ((((((delay_counter >= sub_wave_delay)) && (!((sub_wave_counter === pattern_array[current_wave][sub_wave_index]))))) && (player.alive))){
spawnEnemies();
delay_counter = 0;
sub_wave_counter++;
} else {
delay_counter = (delay_counter + (1 / 30));
if ((((enemy_array.length == 0)) && ((sub_wave_counter == pattern_array[current_wave][sub_wave_index])))){
if (current_wave < (pattern_array.length - 1)){
home.sound_manager.new_wave.play();
current_wave++;
sub_wave_counter = 0;
delay_counter = 0;
home.score_manager.updateWave();
if (current_wave == 10){
player.alive = false;
home.score_manager.total_lives = 0;
home.particle_manager.createSpark(player.x, player.y, 0, 360, player.spark_colour, 200);
home.sound_manager.stopThrust();
home.sound_manager.randomExplosion();
};
info_popup = new InfoPopup(home, ("Wave " + (current_wave + 1)), 312, 100);
};
};
};
}
private function spawnSlicer():void{
var _local1:Slicer;
_local1 = new Slicer(home);
_local1.x = spawnPosition(70, 10, 615, 555);
_local1.y = spawnPosition(70, 10, 440, 380);
object_array.push(_local1);
enemy_array.push(_local1);
}
private function spawnDrifter():void{
var _local1:Drifter;
_local1 = new Drifter(home);
_local1.x = spawnPosition(-100, -10, 725, 635);
_local1.y = spawnPosition(140, 70, 380, 310);
object_array.push(_local1);
enemy_array.push(_local1);
}
}
}//package