Section 1
//Transitions (com.boostworthy.animation.easing.Transitions)
package com.boostworthy.animation.easing {
public final class Transitions {
public static const SINE_OUT:String = "sineOut";
public static const QUAD_IN_AND_OUT:String = "quadInAndOut";
private static const ELASTIC_PERIOD:Number = 400;
public static const QUART_OUT:String = "quartOut";
public static const BOUNCE:String = "bounce";
public static const EXPO_IN:String = "expoIn";
public static const SINE_IN:String = "sineIn";
public static const CUBIC_OUT:String = "cubicOut";
public static const QUINT_OUT:String = "quintOut";
public static const QUAD_IN:String = "quadIn";
public static const QUINT_IN_AND_OUT:String = "quintInAndOut";
public static const ELASTIC_OUT:String = "elasticOut";
public static const LINEAR:String = "linear";
public static const QUART_IN_AND_OUT:String = "quartInAndOut";
public static const QUAD_OUT:String = "quadOut";
public static const QUINT_IN:String = "quintIn";
public static const CUBIC_IN_AND_OUT:String = "cubicInAndOut";
public static const QUART_IN:String = "quartIn";
public static const DEFAULT_TRANSITION:String = "linear";
private static const BACK_OVERSHOOT:Number = 1.70158;
public static const BACK_OUT:String = "backOut";
private static const ELASTIC_AMPLITUDE:Number = undefined;
public static const CUBIC_IN:String = "cubicIn";
public static const ELASTIC_IN_AND_OUT:String = "elasticInAndOut";
public static const EXPO_OUT:String = "expoOut";
public static const BACK_IN_AND_OUT:String = "backInAndOut";
public static const ELASTIC_IN:String = "elasticIn";
public static const EXPO_IN_AND_OUT:String = "expoInAndOut";
public static const BACK_IN:String = "backIn";
public static const SINE_IN_AND_OUT:String = "sineInAndOut";
public static function quadOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function expoOut(_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 expoInAndOut(_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));
}
public static function quintOut(_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 cubicIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function sineIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2) + _arg3));
}
public static function sineOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2));
}
public static function quartOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2));
}
public static function sineInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) / 2) * (Math.cos(((_arg1 / _arg4) * Math.PI)) - 1)) + _arg2));
}
public static function bounce(_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 backInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number = BACK_OVERSHOOT;
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_local5 = (_local5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_local5 + 1) * _arg1) - _local5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_local5 = (_local5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_local5 + 1) * _arg1) + _local5)) + 2)) + _arg2));
}
public static function expoIn(_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 cubicOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2));
}
public static function linear(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function quadIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((_arg3 * _arg1) * _arg1) + _arg2));
}
public static function quintIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function elasticOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local7:Number;
var _local5:Number = ELASTIC_AMPLITUDE;
var _local6:Number = ELASTIC_PERIOD;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_local6){
_local6 = (_arg4 * 0.3);
};
if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){
_local5 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5)));
};
return (((((_local5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) + _arg3) + _arg2));
}
public static function quartInAndOut(_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));
}
public static function quartIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function quadInAndOut(_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));
}
public static function quintInAndOut(_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));
}
public static function elasticIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local7:Number;
var _local5:Number = ELASTIC_AMPLITUDE;
var _local6:Number = ELASTIC_PERIOD;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_local6){
_local6 = (_arg4 * 0.3);
};
if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){
_local5 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5)));
};
--_arg1;
return ((-(((_local5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2));
}
public static function cubicInAndOut(_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));
}
public static function backOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number = BACK_OVERSHOOT;
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_local5 + 1) * _arg1) + _local5)) + 1)) + _arg2));
}
public static function elasticInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local7:Number;
var _local5:Number = ELASTIC_AMPLITUDE;
var _local6:Number = ELASTIC_PERIOD;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 == 2){
return ((_arg2 + _arg3));
};
if (!_local6){
_local6 = (_arg4 * (0.3 * 1.5));
};
if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){
_local5 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_local5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2));
};
--_arg1;
return ((((((_local5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) * 0.5) + _arg3) + _arg2));
}
public static function backIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number = BACK_OVERSHOOT;
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_local5 + 1) * _arg1) - _local5)) + _arg2));
}
}
}//package com.boostworthy.animation.easing
Section 2
//Renderer (com.boostworthy.animation.rendering.Renderer)
package com.boostworthy.animation.rendering {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.boostworthy.utils.logger.*;
import com.boostworthy.core.*;
public class Renderer extends EventDispatcher implements IDisposable {
protected var m_objTimer:Timer;
protected var m_fncOnTimer:Function;
protected var m_objStage:Stage;
protected var m_fncOnEnterFrame:Function;
protected var m_objLog:ILog;
public function Renderer(_arg1:Function, _arg2:Function, _arg3:Number){
if (_arg1 != null){
m_fncOnEnterFrame = _arg1;
m_objStage = Global.stage;
};
if (_arg2 != null){
m_fncOnTimer = _arg2;
m_objTimer = new Timer(_arg3, 0);
m_objTimer.addEventListener(TimerEvent.TIMER, m_fncOnTimer);
};
m_objLog = LogFactory.getInstance().getLog("Renderer");
}
public function start(_arg1:Number):void{
if (_arg1 == RenderMethod.ENTER_FRAME){
startEnterFrame();
} else {
if (_arg1 == RenderMethod.TIMER){
startTimer();
};
};
}
protected function startTimer():void{
m_objTimer.start();
}
public function startAll():void{
startEnterFrame();
startTimer();
}
public function stop(_arg1:Number):void{
if (_arg1 == RenderMethod.ENTER_FRAME){
stopEnterFrame();
} else {
if (_arg1 == RenderMethod.TIMER){
stopTimer();
};
};
}
protected function stopTimer():void{
m_objTimer.stop();
}
public function stopAll():void{
stopEnterFrame();
stopTimer();
}
protected function startEnterFrame():void{
if (!m_objStage){
m_objStage = Global.stage;
};
if (m_objStage){
m_objStage.addEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame);
} else {
m_objLog.warning("startEnterFrame :: Unable to add a listener to the enter frame event because a global stage reference does not exist.");
};
}
protected function stopEnterFrame():void{
if (m_objStage){
m_objStage.removeEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame);
};
}
public function dispose():void{
if (((!((m_fncOnEnterFrame == null))) && (!((m_objStage == null))))){
m_objStage.removeEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame);
};
if (m_objTimer != null){
m_objTimer.removeEventListener(TimerEvent.TIMER, m_fncOnTimer);
};
m_fncOnEnterFrame = null;
m_objTimer = null;
m_fncOnTimer = null;
m_objStage = null;
}
}
}//package com.boostworthy.animation.rendering
Section 3
//RenderMethod (com.boostworthy.animation.rendering.RenderMethod)
package com.boostworthy.animation.rendering {
public final class RenderMethod {
public static const TIMER:uint = 2;
public static const ENTER_FRAME:uint = 1;
}
}//package com.boostworthy.animation.rendering
Section 4
//Action (com.boostworthy.animation.sequence.tweens.Action)
package com.boostworthy.animation.sequence.tweens {
public class Action implements ITween {
protected const PROPERTY:String = "action";
protected var m_aParamsForward:Array;
protected var m_uPreviousFrame:uint;
protected var m_uLastFrame:uint;
protected var m_fncReverse:Function;
protected var m_uFirstFrame:uint;
protected var m_aParamsReverse:Array;
protected var m_fncForward:Function;
public function Action(_arg1:Function, _arg2:Array, _arg3:Function, _arg4:Array, _arg5:uint){
m_fncForward = _arg1;
m_aParamsForward = _arg2;
m_fncReverse = _arg3;
m_aParamsReverse = _arg4;
m_uFirstFrame = _arg5;
m_uLastFrame = _arg5;
m_uPreviousFrame = 1;
}
public function get target():Object{
return (null);
}
public function get property():String{
return (PROPERTY);
}
public function get firstFrame():uint{
return (m_uFirstFrame);
}
public function clone():ITween{
return (new Action(m_fncForward, m_aParamsForward, m_fncReverse, m_aParamsReverse, m_uFirstFrame));
}
public function get lastFrame():uint{
return (m_uLastFrame);
}
public function renderFrame(_arg1:uint):void{
if (_arg1 == m_uFirstFrame){
if (m_uPreviousFrame > _arg1){
m_fncReverse.apply(null, m_aParamsReverse);
} else {
m_fncForward.apply(null, m_aParamsForward);
};
};
m_uPreviousFrame = _arg1;
}
}
}//package com.boostworthy.animation.sequence.tweens
Section 5
//ITween (com.boostworthy.animation.sequence.tweens.ITween)
package com.boostworthy.animation.sequence.tweens {
public interface ITween {
function get target():Object;
function clone():ITween;
function get property():String;
function get lastFrame():uint;
function get firstFrame():uint;
function renderFrame(_arg1:uint):void;
}
}//package com.boostworthy.animation.sequence.tweens
Section 6
//Tween (com.boostworthy.animation.sequence.tweens.Tween)
package com.boostworthy.animation.sequence.tweens {
import com.boostworthy.animation.easing.*;
public class Tween implements ITween {
protected const DEFAULT_TRANSITION:String = "linear";
protected var m_objToTween:Object;
protected var m_strTransition:String;
protected var m_bIsDirty:Boolean;
protected var m_strProperty:String;
protected var m_uFirstFrame:uint;
protected var m_uLastFrame:uint;
protected var m_nTargetValue:Number;
protected var m_nChangeValue:Number;
protected var m_nStartValue:Number;
protected var m_fncTransition:Function;
public function Tween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:uint, _arg5:uint, _arg6:String="linear"){
m_objToTween = _arg1;
m_strProperty = _arg2;
m_nTargetValue = _arg3;
m_uFirstFrame = _arg4;
m_uLastFrame = _arg5;
m_strTransition = _arg6;
m_fncTransition = Transitions[m_strTransition];
}
public function renderFrame(_arg1:uint):void{
var _local2:Number;
if ((((_arg1 < m_uFirstFrame)) && (!(isNaN(m_nStartValue))))){
m_objToTween[m_strProperty] = m_nStartValue;
m_bIsDirty = true;
} else {
if ((((_arg1 >= m_uFirstFrame)) && ((_arg1 <= m_uLastFrame)))){
_local2 = ((_arg1 - m_uFirstFrame) / (m_uLastFrame - m_uFirstFrame));
if (((isNaN(m_nStartValue)) && ((_arg1 == m_uFirstFrame)))){
m_nStartValue = m_objToTween[m_strProperty];
m_nChangeValue = (m_nTargetValue - m_nStartValue);
};
m_objToTween[m_strProperty] = m_fncTransition(_local2, m_nStartValue, m_nChangeValue, 1);
m_bIsDirty = true;
} else {
if ((((_arg1 > m_uLastFrame)) && (m_bIsDirty))){
m_objToTween[m_strProperty] = m_nTargetValue;
m_bIsDirty = false;
};
};
};
}
public function get target():Object{
return (m_objToTween);
}
public function get property():String{
return (m_strProperty);
}
public function get lastFrame():uint{
return (m_uLastFrame);
}
public function clone():ITween{
return (new Tween(m_objToTween, m_strProperty, m_nTargetValue, m_uFirstFrame, m_uLastFrame, m_strTransition));
}
public function get firstFrame():uint{
return (m_uFirstFrame);
}
}
}//package com.boostworthy.animation.sequence.tweens
Section 7
//Timeline (com.boostworthy.animation.sequence.Timeline)
package com.boostworthy.animation.sequence {
import flash.events.*;
import com.boostworthy.animation.sequence.tweens.*;
import com.boostworthy.collections.iterators.*;
import com.boostworthy.animation.rendering.*;
import com.boostworthy.core.*;
import com.boostworthy.animation.*;
import com.boostworthy.events.*;
public class Timeline extends EventDispatcher implements IDisposable {
protected const DEFAULT_LOOP:Boolean = false;
protected const DEFAULT_RENDER_METHOD:uint = 2;
protected const DEFAULT_FRAME_RATE:Number = 60;
protected var m_uFrameRate:uint;
protected var m_uFrame:uint;
protected var m_uRenderMethod:uint;
protected var m_nRefreshRate:Number;
protected var m_objTweenStack:TweenStack;
protected var m_bLoop:Boolean;
protected var m_uLength:uint;
protected var m_objRendererPrev:Renderer;
protected var m_objRendererNext:Renderer;
public function Timeline(_arg1:uint=2, _arg2:Number=60){
init(_arg1, _arg2);
}
protected function computeFrameData(_arg1:uint, _arg2:uint):void{
var _local5:ITween;
var _local3:IIterator = m_objTweenStack.getIterator(IteratorType.ARRAY_REVERSE);
var _local4:int = _arg1;
while (_local4 <= _arg2) {
while (_local3.hasNext()) {
_local5 = (_local3.next() as ITween);
if (!(_local5 is Action)){
_local5.renderFrame(_local4);
};
};
_local3.reset();
_local4++;
};
render();
}
public function prevFrame():void{
setFrame((m_uFrame - 1));
}
protected function onNextFrameEF(_arg1:Event):void{
nextFrame();
}
public function gotoAndPlay(_arg1:uint):void{
stop();
setFrame(_arg1);
play();
}
public function stop():void{
m_objRendererPrev.stop(m_uRenderMethod);
m_objRendererNext.stop(m_uRenderMethod);
dispatchEvent(new AnimationEvent(AnimationEvent.STOP));
}
public function playReverse():void{
stop();
dispatchEvent(new AnimationEvent(AnimationEvent.START));
m_objRendererPrev.start(m_uRenderMethod);
}
public function set loop(_arg1:Boolean):void{
m_bLoop = _arg1;
}
protected function init(_arg1:uint, _arg2:Number):void{
BoostworthyAnimation.log();
setFrameRate(_arg2);
m_uRenderMethod = _arg1;
m_objRendererPrev = new Renderer(onPrevFrameEF, onPrevFrameT, m_nRefreshRate);
m_objRendererNext = new Renderer(onNextFrameEF, onNextFrameT, m_nRefreshRate);
m_objTweenStack = new TweenStack();
m_uFrame = (m_uLength = 1);
loop = DEFAULT_LOOP;
}
public function gotoAndStop(_arg1:uint):void{
stop();
setFrame(_arg1);
}
protected function onPrevFrameT(_arg1:TimerEvent):void{
prevFrame();
_arg1.updateAfterEvent();
}
public function nextFrame():void{
setFrame((m_uFrame + 1));
}
protected function render(_arg1:Boolean=false):void{
var _local2:IIterator = m_objTweenStack.getIterator((_arg1) ? IteratorType.ARRAY_REVERSE : IteratorType.ARRAY_FORWARD);
while (_local2.hasNext()) {
_local2.next().renderFrame(m_uFrame);
};
}
public function get loop():Boolean{
return (m_bLoop);
}
public function get length():Number{
return (m_uLength);
}
public function setFrameRate(_arg1:Number):void{
m_uFrameRate = ((_arg1)>0) ? _arg1 : DEFAULT_FRAME_RATE;
m_nRefreshRate = Math.floor((1000 / m_uFrameRate));
}
public function addTween(_arg1:ITween):void{
var _local2:ITween = _arg1.clone();
m_uLength = ((_local2.lastFrame)>m_uLength) ? _local2.lastFrame : m_uLength;
m_objTweenStack.addElement(_local2);
computeFrameData(_local2.firstFrame, _local2.lastFrame);
}
public function dispose():void{
stop();
m_objRendererPrev.dispose();
m_objRendererNext.dispose();
m_objTweenStack.dispose();
m_uRenderMethod = NaN;
m_uFrameRate = NaN;
m_nRefreshRate = NaN;
m_uFrame = NaN;
m_uLength = NaN;
m_bLoop = false;
}
protected function onNextFrameT(_arg1:TimerEvent):void{
nextFrame();
_arg1.updateAfterEvent();
}
protected function setFrame(_arg1:Number):void{
var _local2:Boolean;
var _local3:Boolean;
if (_arg1 > m_uLength){
if (m_bLoop){
_arg1 = 1;
} else {
_local3 = true;
};
};
if (_arg1 < 1){
if (m_bLoop){
_arg1 = m_uLength;
_local2 = true;
} else {
_local3 = true;
};
};
m_uFrame = Math.min(Math.max(1, _arg1), m_uLength);
if (!_local3){
render(_local2);
};
dispatchEvent(new AnimationEvent(AnimationEvent.CHANGE));
if (_local3){
stop();
dispatchEvent(new AnimationEvent(AnimationEvent.FINISH));
};
}
public function gotoAndPlayReverse(_arg1:uint):void{
stop();
setFrame(_arg1);
playReverse();
}
public function play():void{
stop();
dispatchEvent(new AnimationEvent(AnimationEvent.START));
m_objRendererNext.start(m_uRenderMethod);
}
protected function onPrevFrameEF(_arg1:Event):void{
prevFrame();
}
}
}//package com.boostworthy.animation.sequence
Section 8
//TweenStack (com.boostworthy.animation.sequence.TweenStack)
package com.boostworthy.animation.sequence {
import com.boostworthy.animation.sequence.tweens.*;
import com.boostworthy.collections.iterators.*;
import com.boostworthy.collections.*;
public class TweenStack extends Stack {
override public function addElement(_arg1:Object):void{
var _local7:ITween;
var _local2:ITween = (_arg1 as ITween);
var _local3:Array = new Array();
var _local4:IIterator = getIterator();
while (_local4.hasNext()) {
_local7 = (_local4.next() as ITween);
if ((((_local7.target == _local2.target)) && ((_local7.property == _local2.property)))){
if (_local7.firstFrame > _local2.firstFrame){
_local3.push(_local7.clone());
removeElement(_local7);
};
};
};
super.addElement(_local2);
var _local5:int = _local3.length;
var _local6:int;
while (_local6 < _local5) {
super.addElement(_local3[_local6]);
_local6++;
};
}
}
}//package com.boostworthy.animation.sequence
Section 9
//BoostworthyAnimation (com.boostworthy.animation.BoostworthyAnimation)
package com.boostworthy.animation {
import com.boostworthy.utils.logger.*;
public final class BoostworthyAnimation {
public static const VERSION:String = "2.1";
public static const AUTHOR:String = "Copyright (c) 2007 Ryan Taylor | http://www.boostworthy.com";
public static const NAME:String = "Boostworthy Animation System";
public static const DATE:String = "06.07.2007";
private static var c_bIsLogged:Boolean;
public static function log():void{
if (!c_bIsLogged){
LogFactory.getInstance().getLog(NAME).info(((("Version " + VERSION) + " :: ") + AUTHOR));
c_bIsLogged = true;
};
}
}
}//package com.boostworthy.animation
Section 10
//ForwardArrayIterator (com.boostworthy.collections.iterators.ForwardArrayIterator)
package com.boostworthy.collections.iterators {
public class ForwardArrayIterator implements IIterator {
private var m_aData:Array;
private var m_uIndex:uint;
public function ForwardArrayIterator(_arg1:Array){
m_aData = _arg1;
reset();
}
public function reset():void{
m_uIndex = 0;
}
public function next():Object{
return (m_aData[m_uIndex++]);
}
public function hasNext():Boolean{
return ((m_uIndex < m_aData.length));
}
}
}//package com.boostworthy.collections.iterators
Section 11
//IIterator (com.boostworthy.collections.iterators.IIterator)
package com.boostworthy.collections.iterators {
public interface IIterator {
function next():Object;
function hasNext():Boolean;
function reset():void;
}
}//package com.boostworthy.collections.iterators
Section 12
//IteratorType (com.boostworthy.collections.iterators.IteratorType)
package com.boostworthy.collections.iterators {
public final class IteratorType {
public static const NULL:uint = 1;
public static const ARRAY_REVERSE:uint = 4;
public static const ARRAY_FORWARD:uint = 2;
}
}//package com.boostworthy.collections.iterators
Section 13
//ReverseArrayIterator (com.boostworthy.collections.iterators.ReverseArrayIterator)
package com.boostworthy.collections.iterators {
public class ReverseArrayIterator implements IIterator {
private var m_aData:Array;
private var m_uIndex:uint;
public function ReverseArrayIterator(_arg1:Array){
m_aData = _arg1;
reset();
}
public function reset():void{
m_uIndex = m_aData.length;
}
public function next():Object{
return (m_aData[--m_uIndex]);
}
public function hasNext():Boolean{
return ((m_uIndex > 0));
}
}
}//package com.boostworthy.collections.iterators
Section 14
//HashMap (com.boostworthy.collections.HashMap)
package com.boostworthy.collections {
import com.boostworthy.collections.iterators.*;
import com.boostworthy.core.*;
public class HashMap implements ICollection, IDisposable {
protected var m_aKeys:Array;
protected var m_aValues:Array;
public function HashMap(_arg1:Object=null){
init(_arg1);
}
public function containsKey(_arg1:Object):Boolean{
return (!((searchForKey(_arg1) == Global.NULL_INDEX)));
}
public function remove(_arg1:Object):void{
var _local2:int = searchForKey(_arg1);
if (_local2 != Global.NULL_INDEX){
m_aKeys.splice(_local2, 1);
m_aValues.splice(_local2, 1);
};
}
public function getValueIterator(_arg1:uint=2):IIterator{
if (_arg1 == IteratorType.ARRAY_FORWARD){
return (new ForwardArrayIterator(m_aValues.concat()));
};
if (_arg1 == IteratorType.ARRAY_REVERSE){
return (new ReverseArrayIterator(m_aValues.concat()));
};
return (new ForwardArrayIterator(m_aValues.concat()));
}
public function getIterator(_arg1:uint=2):IIterator{
return (getValueIterator(_arg1));
}
public function putMap(_arg1:Object):void{
var _local2:String;
for (_local2 in _arg1) {
put(_local2, _arg1[_local2]);
};
}
public function put(_arg1:Object, _arg2:Object):void{
remove(_arg1);
m_aKeys.push(_arg1);
m_aValues.push(_arg2);
}
protected function init(_arg1:Object):void{
dispose();
if (_arg1 != null){
putMap(_arg1);
};
}
public function get length():uint{
return (m_aKeys.length);
}
public function get(_arg1:Object):Object{
var _local2:int = searchForKey(_arg1);
if (_local2 != Global.NULL_INDEX){
return (m_aValues[_local2]);
};
return (null);
}
public function getKeyIterator(_arg1:uint=2):IIterator{
if (_arg1 == IteratorType.ARRAY_FORWARD){
return (new ForwardArrayIterator(m_aKeys.concat()));
};
if (_arg1 == IteratorType.ARRAY_REVERSE){
return (new ReverseArrayIterator(m_aKeys.concat()));
};
return (new ForwardArrayIterator(m_aKeys.concat()));
}
public function clone():HashMap{
var _local1:HashMap = new HashMap();
var _local2:int = m_aKeys.length;
var _local3:int;
while (_local3 < _local2) {
_local1.put(m_aKeys[_local3], m_aValues[_local3]);
_local3++;
};
return (_local1);
}
protected function searchForKey(_arg1:Object):int{
var _local2:int = m_aKeys.length;
var _local3:int;
while (_local3 < _local2) {
if (m_aKeys[_local3] === _arg1){
return (_local3);
};
_local3++;
};
return (Global.NULL_INDEX);
}
public function dispose():void{
m_aKeys = new Array();
m_aValues = new Array();
}
}
}//package com.boostworthy.collections
Section 15
//ICollection (com.boostworthy.collections.ICollection)
package com.boostworthy.collections {
import com.boostworthy.collections.iterators.*;
public interface ICollection {
function getIterator(_arg1:uint=2):IIterator;
}
}//package com.boostworthy.collections
Section 16
//Stack (com.boostworthy.collections.Stack)
package com.boostworthy.collections {
import com.boostworthy.collections.iterators.*;
import com.boostworthy.core.*;
public class Stack implements ICollection, IDisposable {
protected var m_aData:Array;
public function Stack(){
dispose();
}
public function getIterator(_arg1:uint=2):IIterator{
if (_arg1 == IteratorType.ARRAY_FORWARD){
return (new ForwardArrayIterator(m_aData.concat()));
};
if (_arg1 == IteratorType.ARRAY_REVERSE){
return (new ReverseArrayIterator(m_aData.concat()));
};
return (new ForwardArrayIterator(m_aData.concat()));
}
private function getElementIndex(_arg1:Object):int{
var _local2:int;
while (_local2 < m_aData.length) {
if (m_aData[_local2] === _arg1){
return (_local2);
};
_local2++;
};
return (Global.NULL_INDEX);
}
public function get length():uint{
return (m_aData.length);
}
public function removeElement(_arg1:Object):void{
var _local2:int = getElementIndex(_arg1);
if (_local2 != Global.NULL_INDEX){
m_aData.splice(_local2, 1);
};
}
public function addElement(_arg1:Object):void{
m_aData.unshift(_arg1);
}
public function dispose():void{
m_aData = new Array();
}
}
}//package com.boostworthy.collections
Section 17
//Global (com.boostworthy.core.Global)
package com.boostworthy.core {
import flash.display.*;
public final class Global {
private static var c_objStage:Stage;
public static var NULL_INDEX:int = -1;
public function Global(){
throw (new Error("ERROR -> Global :: Constructor :: The 'Global' class is not meant to be instantiated."));
}
public static function set stage(_arg1:Stage):void{
c_objStage = _arg1;
}
public static function get stage():Stage{
return (c_objStage);
}
}
}//package com.boostworthy.core
Section 18
//IDisposable (com.boostworthy.core.IDisposable)
package com.boostworthy.core {
public interface IDisposable {
function dispose():void;
}
}//package com.boostworthy.core
Section 19
//AnimationEvent (com.boostworthy.events.AnimationEvent)
package com.boostworthy.events {
import flash.events.*;
public class AnimationEvent extends Event {
protected var m_strProperty:String;
protected var m_objTarget:Object;
public static const CHANGE:String = "animationChange";
public static const STOP:String = "animationStop";
public static const START:String = "animationStart";
public static const FINISH:String = "animationFinish";
public function AnimationEvent(_arg1:String, _arg2:Object=null, _arg3:String=""){
super(_arg1);
m_objTarget = _arg2;
m_strProperty = _arg3;
}
public function get animTarget():Object{
return (m_objTarget);
}
public function get animProperty():String{
return (m_strProperty);
}
}
}//package com.boostworthy.events
Section 20
//ILog (com.boostworthy.utils.logger.ILog)
package com.boostworthy.utils.logger {
public interface ILog {
function getName():String;
function setLevel(_arg1:uint):void;
function debug(_arg1:String):void;
function severe(_arg1:String):void;
function getLevel():uint;
function warning(_arg1:String):void;
function info(_arg1:String):void;
}
}//package com.boostworthy.utils.logger
Section 21
//Log (com.boostworthy.utils.logger.Log)
package com.boostworthy.utils.logger {
public class Log implements ILog {
protected var m_strName:String;
protected var m_uLevel:uint;
public function Log(_arg1:String, _arg2:uint){
init(_arg1, _arg2);
}
protected function output(_arg1:String, _arg2:uint):void{
if (((!((m_uLevel & LogLevel.OFF))) && ((m_uLevel >= _arg2)))){
trace(createOutputMessage(_arg1, _arg2));
};
}
public function getName():String{
return (m_strName);
}
public function setLevel(_arg1:uint):void{
m_uLevel = _arg1;
}
protected function createOutputMessage(_arg1:String, _arg2:uint):String{
return ((((((m_strName + " (") + getLevelName(_arg2)) + ") :: ") + _arg1) + "\n"));
}
public function getLevel():uint{
return (m_uLevel);
}
protected function init(_arg1:String, _arg2:uint):void{
m_strName = _arg1;
m_uLevel = _arg2;
}
protected function getLevelName(_arg1:uint):String{
switch (_arg1){
case LogLevel.OFF:
return ("OFF");
case LogLevel.SEVERE:
return ("SEVERE");
case LogLevel.WARNING:
return ("WARNING");
case LogLevel.INFO:
return ("INFO");
case LogLevel.DEBUG:
return ("DEBUG");
default:
return ("");
};
}
public function debug(_arg1:String):void{
output(_arg1, LogLevel.DEBUG);
}
public function severe(_arg1:String):void{
output(_arg1, LogLevel.SEVERE);
}
public function warning(_arg1:String):void{
output(_arg1, LogLevel.WARNING);
}
public function info(_arg1:String):void{
output(_arg1, LogLevel.INFO);
}
}
}//package com.boostworthy.utils.logger
Section 22
//LogFactory (com.boostworthy.utils.logger.LogFactory)
package com.boostworthy.utils.logger {
import com.boostworthy.collections.iterators.*;
import com.boostworthy.collections.*;
import com.boostworthy.core.*;
public class LogFactory implements IDisposable {
private var m_uLevel:uint;
private var m_objLogHash:HashMap;
private static var c_objInstance:LogFactory;
public function LogFactory(_arg1:SingletonEnforcer){
init();
}
protected function init():void{
m_uLevel = LogSettings.DEFAULT_LOG_LEVEL;
m_objLogHash = new HashMap();
}
public function getLog(_arg1:String):ILog{
if (m_objLogHash.containsKey(_arg1)){
return ((m_objLogHash.get(_arg1) as ILog));
};
m_objLogHash.put(_arg1, new Log(_arg1, m_uLevel));
return ((m_objLogHash.get(_arg1) as ILog));
}
public function setLevel(_arg1:uint):void{
m_uLevel = _arg1;
var _local2:IIterator = m_objLogHash.getValueIterator();
while (_local2.hasNext()) {
_local2.next().setLevel(m_uLevel);
};
}
public function getLevel():uint{
return (m_uLevel);
}
public function dispose():void{
m_objLogHash.dispose();
}
public static function getInstance():LogFactory{
if (c_objInstance == null){
c_objInstance = new LogFactory(new SingletonEnforcer());
};
return (c_objInstance);
}
}
}//package com.boostworthy.utils.logger
class SingletonEnforcer {
private function SingletonEnforcer(){
}
}
Section 23
//LogLevel (com.boostworthy.utils.logger.LogLevel)
package com.boostworthy.utils.logger {
public final class LogLevel {
public static const SEVERE:uint = 2;
public static const INFO:uint = 8;
public static const DEBUG:uint = 16;
public static const WARNING:uint = 4;
public static const OFF:uint = 1;
}
}//package com.boostworthy.utils.logger
Section 24
//LogSettings (com.boostworthy.utils.logger.LogSettings)
package com.boostworthy.utils.logger {
public final class LogSettings {
public static const DEFAULT_LOG_LEVEL:uint = LogLevel.DEBUG;
}
}//package com.boostworthy.utils.logger
Section 25
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent)
package com.kongregate.as3.client.events {
import flash.events.*;
public class KongregateEvent extends Event {
public static const COMPLETE:String = "component_api_available";
public function KongregateEvent(_arg1:String){
super(_arg1);
}
}
}//package com.kongregate.as3.client.events
Section 26
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService)
package com.kongregate.as3.client.services {
import flash.events.*;
public class AbstractShadowService extends EventDispatcher {
protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{
trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4));
}
}
}//package com.kongregate.as3.client.services
Section 27
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow)
package com.kongregate.as3.client.services {
public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices {
private var mode:String;
public function HighScoreServiceShadow(){
mode = "";
}
public function submit(_arg1:Number, _arg2:String=null):void{
alert("IHighScoreServices", "submit", arguments);
}
public function connect():Boolean{
alert("IKongregateServices", "connect");
return (true);
}
public function requestList(_arg1:Function):void{
alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]"));
_arg1({success:false});
}
public function setMode(_arg1:String):void{
alert("IHighScoreServices", "setMode", arguments);
this.mode = _arg1;
}
}
}//package com.kongregate.as3.client.services
Section 28
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices)
package com.kongregate.as3.client.services {
public interface IHighScoreServices {
function setMode(_arg1:String):void;
function submit(_arg1:Number, _arg2:String=null):void;
function requestList(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 29
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices)
package com.kongregate.as3.client.services {
import flash.events.*;
public interface IKongregateServices extends IEventDispatcher {
function getPlayerInfo(_arg1:Function):void;
function connect(_arg1:Number=-1):Boolean;
}
}//package com.kongregate.as3.client.services
Section 30
//IStatServices (com.kongregate.as3.client.services.IStatServices)
package com.kongregate.as3.client.services {
public interface IStatServices {
function submitArray(_arg1:Array):void;
function submit(_arg1:String, _arg2:Number):void;
}
}//package com.kongregate.as3.client.services
Section 31
//IUserServices (com.kongregate.as3.client.services.IUserServices)
package com.kongregate.as3.client.services {
public interface IUserServices {
function getName():String;
function getPlayerInfo(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 32
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow)
package com.kongregate.as3.client.services {
public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices {
public function getName():String{
alert("IKongregateServices", "getName");
return ("Guest");
}
public function connect(_arg1:Number=-1):Boolean{
alert("IKongregateServices", "connect", arguments);
return (true);
}
public function getPlayerInfo(_arg1:Function):void{
alert("IKongregateServices", "getPlayerInfo");
_arg1(new Object());
}
}
}//package com.kongregate.as3.client.services
Section 33
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow)
package com.kongregate.as3.client.services {
public class StatServiceShadow extends AbstractShadowService implements IStatServices {
public function submitArray(_arg1:Array):void{
alert("IStatServices", "submitArray", arguments);
}
public function submit(_arg1:String, _arg2:Number):void{
alert("IStatServices", "submitStat", arguments);
}
}
}//package com.kongregate.as3.client.services
Section 34
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow)
package com.kongregate.as3.client.services {
public class UserServiceShadow extends AbstractShadowService implements IUserServices {
public function getName():String{
alert("UserService", "getName");
return ("Guest");
}
public function getPlayerInfo(_arg1:Function):void{
alert("UserService", "getPlayerInfo");
_arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""});
}
}
}//package com.kongregate.as3.client.services
Section 35
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
public interface IAPIBootstrap {
function init(_arg1:Event=null, _arg2:Stage=null):void;
function hideLog():void;
function showLog(_arg1:int=0):void;
}
}//package com.kongregate.as3.client
Section 36
//KongregateAPI (com.kongregate.as3.client.KongregateAPI)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.kongregate.as3.client.services.*;
import flash.net.*;
import flash.system.*;
import com.kongregate.as3.client.events.*;
import flash.errors.*;
public class KongregateAPI extends Sprite {
private const VERSION:Number = 1;
private var loader:Loader;
private var loadedDomain:ApplicationDomain;
private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
private static var _connected:Boolean;
private static var kUser:IUserServices;
private static var _loaded:Boolean;
private static var kServices:IKongregateServices;
private static var kScores:IHighScoreServices;
private static var mInstance:KongregateAPI;
private static var kStats:IStatServices;
private static var kAPI:IAPIBootstrap;
public function KongregateAPI(){
if (mInstance != null){
throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access."));
};
mInstance = this;
this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
}
public function get loaded():Boolean{
return (_loaded);
}
public function get connected():Boolean{
return (_connected);
}
private function alertConnected(_arg1:TimerEvent=null):void{
var _local2:KongregateEvent;
var _local3:Boolean;
_local2 = new KongregateEvent(KongregateEvent.COMPLETE);
_local3 = this.dispatchEvent(_local2);
}
private function init(_arg1:Event):void{
var _local2:Object;
var _local3:String;
var _local4:URLRequest;
var _local5:LoaderContext;
this.removeEventListener(Event.ADDED_TO_STAGE, init);
_loaded = false;
_connected = false;
_local2 = LoaderInfo(root.loaderInfo).parameters;
_local3 = _local2.api_path;
if (_local3 == null){
trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
createShadowServices();
return;
};
Security.allowDomain("*.kongregate.com");
Security.allowDomain("kongregatetrunk.com");
_local4 = new URLRequest(_local3);
_local5 = new LoaderContext(false);
_local5.applicationDomain = ApplicationDomain.currentDomain;
_local5.securityDomain = SecurityDomain.currentDomain;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(_local4, _local5);
}
public function get api():IAPIBootstrap{
return (kAPI);
}
private function loadComplete(_arg1:Event):void{
getServices();
}
public function get scores():IHighScoreServices{
return (kScores);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
throw (new IOError(("API file not found. " + _arg1)));
}
public function get services():IKongregateServices{
return (kServices);
}
public function get stats():IStatServices{
return (kStats);
}
private function createShadowServices():void{
var _local1:Timer;
trace(">>> Kongregate Shadow Services instantiated for local development..");
kServices = new KongregateServiceShadow();
kScores = new HighScoreServiceShadow();
kStats = new StatServiceShadow();
kUser = new UserServiceShadow();
_local1 = new Timer(200, 1);
_local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected);
_local1.start();
_connected = true;
}
public function get user():IUserServices{
return (kUser);
}
private function getServices():void{
var _local1:ApplicationDomain;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local1 = ApplicationDomain.currentDomain;
kAPI = IAPIBootstrap(loader.getChildAt(0));
this.addChild(loader);
_local2 = _local1.getDefinition(CLASS_SERVICES);
trace(_local2);
kServices = _local2.getInstance();
_local3 = _local1.getDefinition(CLASS_SCORES);
kScores = _local3.getInstance();
_local4 = _local1.getDefinition(CLASS_STATS);
kStats = _local4.getInstance();
_local5 = _local1.getDefinition(CLASS_USER);
kUser = _local5.getInstance();
kServices.connect(VERSION);
_loaded = true;
_connected = true;
alertConnected();
}
public static function getInstance():KongregateAPI{
if (!mInstance){
throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it."));
};
return (mInstance);
}
}
}//package com.kongregate.as3.client
Section 37
//ReflexiveAPI (com.reflexive.ReflexiveAPI)
package com.reflexive {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public class ReflexiveAPI extends Sprite {
private var connected:Boolean;
private var connectionString:String;
private var scoreTimer:Timer;
private var useAPI:Boolean;
private var oldMouseY:Number;
private var lastScore;// = null
private var oldMouseX:Number;
private var updateActivity:Boolean;// = false
private var conn:LocalConnection;
private var activityTimer:Timer;
private static var obj:ReflexiveAPI;
public function ReflexiveAPI(){
addEventListener(Event.ADDED_TO_STAGE, onLoad);
}
private function initConnection():void{
if (useAPI){
if (!connected){
conn.send(connectionString, "initToolbar");
setTimeout(initConnection, 500);
};
};
}
public function setIsActive():void{
if (useAPI){
if (!connected){
setTimeout(setIsActive, 500);
} else {
conn.send(connectionString, "setIsActive", null);
};
};
}
private function onLoad(_arg1:Event):void{
connected = false;
useAPI = (int(root.loaderInfo.parameters.useReflexiveAPI) == 1);
if (useAPI){
connectionString = root.loaderInfo.parameters.connectionString;
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
conn.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
initConnection();
root.addEventListener(Event.ENTER_FRAME, checkActivity);
scoreTimer = new Timer(1000);
scoreTimer.addEventListener(TimerEvent.TIMER, submitScoreHelper);
scoreTimer.start();
activityTimer = new Timer(5000);
activityTimer.addEventListener(TimerEvent.TIMER, sendActivity);
activityTimer.start();
};
}
private function submitScoreHelper(_arg1:TimerEvent):void{
if (((((useAPI) && (connected))) && (!((lastScore == null))))){
conn.send(connectionString, "submitScore", lastScore);
lastScore = null;
};
}
public function submitScore(_arg1):void{
if (useAPI){
lastScore = _arg1;
};
}
private function onAsyncError(_arg1:AsyncErrorEvent):void{
}
private function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "status":
connected = true;
break;
case "error":
break;
};
}
private function checkActivity(_arg1:Event):void{
if (((!((mouseX == oldMouseX))) || (!((mouseY == oldMouseY))))){
oldMouseX = mouseX;
oldMouseY = mouseY;
updateActivity = true;
};
}
private function sendActivity(_arg1:TimerEvent):void{
if (updateActivity){
setIsActive();
};
updateActivity = false;
}
public static function getInstance():ReflexiveAPI{
if (obj == null){
obj = new (ReflexiveAPI);
};
return (obj);
}
}
}//package com.reflexive
Section 38
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.0.0.0";
public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
}
}//package mx.core
Section 39
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 40
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 41
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
var bitmapData = _arg1;
var pixelSnapping = _arg2;
var smoothing = _arg3;
super(bitmapData, pixelSnapping, smoothing);
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 42
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 43
//FontAsset (mx.core.FontAsset)
package mx.core {
import flash.text.*;
public class FontAsset extends Font implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 44
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 45
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 46
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 47
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 48
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 49
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipLoaderAsset(){
var _local1:LoaderContext = new LoaderContext();
_local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in _local1)){
_local1["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, _local1);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(_arg1:Number):void{
if (!initialized){
requestedWidth = _arg1;
} else {
loader.width = _arg1;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(_arg1:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(_arg1);
}
override public function set height(_arg1:Number):void{
if (!initialized){
requestedHeight = _arg1;
} else {
loader.height = _arg1;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 50
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 51
//SoundAsset (mx.core.SoundAsset)
package mx.core {
import flash.media.*;
public class SoundAsset extends Sound implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 52
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 53
//Cursor (Cursor)
package {
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public class Cursor extends Sprite {
public var size:Number;
private var helpers:Helpers;
private var outline:Sprite;
private var outlineGood:Sprite;
private var shape:Sprite;
private var defaultSize:Number;
public var cursorText:TextField;
public var isHighlight:Boolean;// = false
private var outlineBad:Sprite;
public var defaultTextColor:int;// = 6710835
private var outlineSuction:Sprite;
public function Cursor(_arg1:Number){
helpers = new Helpers();
this.defaultSize = _arg1;
mouseChildren = false;
mouseEnabled = false;
outline = new Sprite();
outline.visible = false;
addChild(outline);
outlineGood = new Sprite();
outlineGood.visible = false;
addChild(outlineGood);
cursorText = new TextField();
cursorText.defaultTextFormat = new TextFormat("MyFont", 9, defaultTextColor);
cursorText.autoSize = "center";
cursorText.embedFonts = true;
cursorText.antiAliasType = "advanced";
cursorText.selectable = false;
addChild(cursorText);
shape = new Sprite();
shape.filters = [new BlurFilter(5, 5, 1)];
addChild(shape);
outlineSuction = new Sprite();
outlineSuction.visible = false;
addChild(outlineSuction);
outlineBad = new Sprite();
outlineBad.visible = false;
addChild(outlineBad);
}
private function pulseOutlineGood(_arg1:Number, _arg2:Number):void{
outlineGood.graphics.clear();
outlineGood.graphics.beginFill(16777130, _arg2);
outlineGood.graphics.drawCircle(0, 0, _arg1);
}
private function pulseOutlineBad(_arg1:Number, _arg2:Number):void{
outlineBad.graphics.clear();
outlineBad.graphics.beginFill(0x660000, _arg2);
outlineBad.graphics.drawCircle(0, 0, _arg1);
}
public function pulseNormal():void{
if (!outline.visible){
outline.graphics.clear();
outline.visible = true;
pulseOutline((size + 1), 0.4);
helpers.setTimeout(pulseOutline, 100, (size + 4), 0.2);
helpers.setTimeout(function ():void{
outline.visible = false;
}, 200);
};
}
private function pulseOutline(_arg1:Number, _arg2:Number):void{
outline.graphics.clear();
outline.graphics.lineStyle(2, 11206570, _arg2);
outline.graphics.drawCircle(0, 0, _arg1);
}
public function pulseBad():void{
if (!outlineBad.visible){
outlineBad.graphics.clear();
outlineBad.visible = true;
pulseOutlineBad((size + 2), 0.8);
helpers.setTimeout(pulseOutlineBad, 100, (size + 4), 0.6);
helpers.setTimeout(pulseOutlineBad, 200, (size + 7), 0.4);
helpers.setTimeout(pulseOutlineBad, 300, (size + 10), 0.2);
helpers.setTimeout(function ():void{
outlineBad.visible = false;
}, 400);
};
}
public function pulseGood():void{
if (!outlineGood.visible){
outlineGood.graphics.clear();
outlineGood.visible = true;
pulseOutlineGood((size + 2), 0.8);
helpers.setTimeout(pulseOutlineGood, 50, (size + 4), 0.6);
helpers.setTimeout(pulseOutlineGood, 100, (size + 7), 0.4);
helpers.setTimeout(pulseOutlineGood, 150, (size + 10), 0.2);
helpers.setTimeout(function ():void{
outlineGood.visible = false;
}, 200);
};
}
private function pulseOutlineSuction(_arg1:Number, _arg2:Number):void{
outlineSuction.graphics.clear();
outlineSuction.graphics.beginFill(0xFF00FF, _arg2);
outlineSuction.graphics.drawCircle(0, 0, _arg1);
}
public function pulseSuction():void{
if (!outlineSuction.visible){
outlineSuction.graphics.clear();
outlineSuction.visible = true;
pulseOutlineSuction((size + 2), 0.8);
helpers.setTimeout(pulseOutlineSuction, 100, (size + 4), 0.6);
helpers.setTimeout(pulseOutlineSuction, 200, (size + 7), 0.4);
helpers.setTimeout(pulseOutlineSuction, 300, (size + 10), 0.2);
helpers.setTimeout(function ():void{
outlineSuction.visible = false;
}, 400);
};
}
public function updateCursor(_arg1:Number, _arg2:String):void{
this.size = _arg1;
shape.graphics.clear();
if (isHighlight){
shape.graphics.lineStyle(2, 11206570);
shape.graphics.beginFill(11206570, 0.5);
shape.graphics.drawRoundRect(-(_arg1), -(_arg1), (_arg1 * 2), (_arg1 * 2), (_arg1 / 2), (_arg1 / 2));
} else {
shape.graphics.lineStyle(2, 16777130);
shape.graphics.beginFill(16777130, 0.5);
shape.graphics.drawCircle(0, 0, _arg1);
};
cursorText.text = _arg2;
var _local3:Number = 1;
if (cursorText.length > 3){
_local3 = 0.8;
};
cursorText.scaleX = (_local3 * (_arg1 / defaultSize));
cursorText.scaleY = (_local3 * (_arg1 / defaultSize));
cursorText.x = (-(cursorText.width) / 2);
cursorText.y = (-(cursorText.height) / 2);
}
}
}//package
Section 54
//Helpers (Helpers)
package {
import com.boostworthy.animation.sequence.tweens.*;
import com.boostworthy.animation.sequence.*;
import com.boostworthy.animation.rendering.*;
import com.boostworthy.core.*;
public class Helpers {
public function setTimeout(_arg1:Function, _arg2:int, ... _args):void{
var _local4:int = Math.max(1, int(((_arg2 / 1000) * Global.stage.frameRate)));
var _local5:Timeline = new Timeline(RenderMethod.ENTER_FRAME);
_local5.addTween(new Action(_arg1, _args, null, [], _local4));
_local5.play();
}
}
}//package
Section 55
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.system.*;
import flash.net.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 56
//MusicCatch2 (MusicCatch2)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import com.kongregate.as3.client.*;
import com.boostworthy.animation.sequence.tweens.*;
import com.reflexive.*;
import flash.text.*;
import flash.media.*;
import flash.net.*;
import com.boostworthy.animation.sequence.*;
import com.boostworthy.animation.rendering.*;
import com.boostworthy.animation.easing.*;
import com.boostworthy.core.*;
import flash.ui.*;
import flash.filters.*;
public class MusicCatch2 extends Sprite {
private var testFullScreen:Boolean;// = true
private var powerDownCount:int;// = 0
private var pool:Array;
private var referrer:String;// = "MusicCatch2"
private var proxyURL:String;// = "http://wgextras.gamecentersolution.com/proxy.php"
private var introMovie:MovieClip;
private var activeShapeSet:String;// = "Music"
private var oldVolume:Array;
private var songURL:TextField;
private var stateCounter:int;// = 0
private var allowPause:Boolean;// = true
private var songFile:String;// = ""
private var music1Class:Class;
private var yellowMadnessCount:int;// = 0
private var scoreName:TextField;
private var ba:ByteArray;
private var songTitle:TextField;
private var kongregateAPI:KongregateAPI;
private var sc:SoundChannel;
private var title:TextField;
private var totalShapeCount:int;// = 0
private var so:SharedObject;
private var objTimeline:Timeline;
private var silverClass:Class;
private var powerUpCount:int;// = 0
private var s:Sound;
private var cursorSize:Number;
private var cheatUnlockCode:String;// = "unlock"
private var helpers:Helpers;
private var maxLoaded:Number;// = 0
private var maxCombo:int;// = 1
private var randomizeType:String;// = "Off"
private var bandWidth:int;// = 16
private var score:Number;// = 0
private var yellowMadness:Boolean;// = true
private var songTitles:Array;
private var allowCheating:Boolean;// = false
private var credits:TextField;
private var volumePoints:Array;
private var unlockLevel:int;// = 1
private var progressBar:Sprite;
private var skipFadeOut:Boolean;// = false
private var cursorDefaultSize:Number;// = 10
private var songIndex:int;// = 0
private var mainMenu:TextField;
private var powerDownTime:int;// = 0
private var platinumClass:Class;
private var music2Class:Class;
private var suction:int;// = 0
private var displayTypes:Array;
private var helperParams:Object;
private var scoreText:TextField;
private var patterns:Array;
private var playAreaRed:Sprite;
private var goldClass:Class;
private var shapeSet:String;// = "Music"
private var buttonSound1Class:Class;
private var song:String;// = ""
private var maxRadius:int;// = 15
private var cheatUnlockIndex:int;// = 0
private var displayType:String;// = "Normal"
private var position:int;
private var halfHeight:Number;// = 0
private var songName:TextField;
private var randomizeTypes:Array;
private var rotateDegrees:Number;// = 0
private var songClasses:Array;
private var halfWidth:Number;// = 0
private var cursor:Cursor;
private var skipPulse:Boolean;// = false
private var music3Class:Class;
private var songLoaded:Boolean;// = false
private var cheatLotsOfShapes:Boolean;// = false
private var introMovieTimer:Timer;
private var combo:int;// = 1
private var pattern:String;// = "In & Out"
private var shapeSets:Array;
private var rotationTypes:Array;
private var gameArea:Sprite;
private var recentList:Array;
private var frameCount:int;// = 0
private var buttonSound2Class:Class;
private var introMovieClass:Class;
private var skipGarbage:Boolean;// = false
private var allowsFullScreen:Boolean;// = false
private var downloadURL:String;
private var channelLength:int;// = 0x0100
private var reflexiveAPI:ReflexiveAPI;
private var textContainer:Sprite;
private var noRedsClass:Class;
private var copyright:TextField;
private var rotationType:String;// = "Right"
private var playArea:Sprite;
private var purplePowerCount:int;// = 0
private var shapeCount:int;// = 0
private var maxShapesOnBoard:int;// = 50
private var pause:TextField;
public var myfont:Class;
private var bronzeClass:Class;
public function MusicCatch2(){
pool = [];
so = SharedObject.getLocal((referrer + "_UserData_1"));
helperParams = {};
sc = new SoundChannel();
volumePoints = [];
oldVolume = [];
ba = new ByteArray();
rotationTypes = ["Right", "Left", "Wave", "Breathe", "Fixed"];
patterns = ["In & Out", "Fixed", "Straight", "Radar", "Spiral"];
displayTypes = ["Normal", "Fullscreen"];
randomizeTypes = ["Off", "Surprise Me", "Mix It Up"];
recentList = [];
buttonSound1Class = MusicCatch2_buttonSound1Class;
buttonSound2Class = MusicCatch2_buttonSound2Class;
music1Class = MusicCatch2_music1Class;
music2Class = MusicCatch2_music2Class;
music3Class = MusicCatch2_music3Class;
songTitle = new TextField();
songTitles = ["Leaves in the Wind", "Gentle", "Letting Go", "MP3 from URL"];
songClasses = [music1Class, music2Class, music3Class];
shapeSets = ["Music", "Sky", "Floral", "Abstract", "Random"];
myfont = MusicCatch2_myfont;
noRedsClass = MusicCatch2_noRedsClass;
platinumClass = MusicCatch2_platinumClass;
goldClass = MusicCatch2_goldClass;
silverClass = MusicCatch2_silverClass;
bronzeClass = MusicCatch2_bronzeClass;
introMovieClass = MusicCatch2_introMovieClass;
super();
addEventListener("Preloader Finished", init);
}
public function scaleAroundExternalPoint(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{
_arg1.translate(-(_arg2), -(_arg3));
_arg1.scale(_arg4, _arg5);
_arg1.translate(_arg2, _arg3);
}
private function selectShapeSet(_arg1:MouseEvent):void{
var _local2:Sprite;
playSelectSound();
if (_arg1.target != null){
_local2 = Sprite(_arg1.target);
if (((!((helperParams[_local2.name] == null))) && (!((helperParams[_local2.name][0] == null))))){
shapeSet = helperParams[_local2.name][0];
initShapeSet();
showMainMenu();
};
};
}
private function onButtonMouseOver(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Sprite = Sprite(_arg1.target);
if (helperParams[_local4.name] != null){
if (helperParams[_local4.name][(helperParams[_local4.name].length - 2)] != null){
_local3 = helperParams[_local4.name][(helperParams[_local4.name].length - 2)];
};
if (helperParams[_local4.name][(helperParams[_local4.name].length - 1)] != null){
_local2 = helperParams[_local4.name][(helperParams[_local4.name].length - 1)];
};
};
var _local5:Number = (_local2 / 4);
_local4.graphics.clear();
_local4.graphics.beginFill(_local3, 0.3);
_local4.graphics.drawRoundRect(-(_local5), -(_local5), (_local4.width + (_local5 * 2)), (_local4.height + (_local5 * 2)), 10, 10);
playHoverSound();
}
private function selectSong(_arg1:MouseEvent):void{
var _local2:Sprite;
playSelectSound();
if (_arg1.target != null){
_local2 = Sprite(_arg1.target);
if (((!((helperParams[_local2.name] == null))) && (!((helperParams[_local2.name][0] == null))))){
songIndex = int(helperParams[_local2.name][0]);
loadSongFile(songIndex);
showMainMenu();
};
};
}
private function initShapeSet():void{
if (shapeSet == "Random"){
if (title.visible){
activeShapeSet = "Music";
} else {
activeShapeSet = getRandomShapeSet();
};
} else {
activeShapeSet = shapeSet;
};
}
private function showSelectURL(_arg1:MouseEvent=null):void{
var _local3:int;
clearText();
clearGame();
progressBar.graphics.clear();
maxCombo = 1;
combo = 1;
purplePowerCount = 0;
yellowMadnessCount = 0;
powerUpCount = 0;
powerDownCount = 0;
shapeCount = 0;
totalShapeCount = 0;
yellowMadness = true;
powerDownTime = 0;
suction = 0;
highlightCursor(false);
cursorSize = cursorDefaultSize;
updateCursor();
title.visible = false;
credits.visible = false;
mainMenu.visible = true;
pause.visible = false;
songName.visible = false;
progressBar.visible = false;
scoreText.visible = false;
scoreName.visible = false;
score = 0;
scoreText.text = score.toString();
gameArea.mouseChildren = true;
textContainer.mouseChildren = true;
if (gameArea.alpha < 1){
fadeIn(gameArea, 500);
fadeIn(textContainer, 500);
};
stateCounter++;
showText("Enter the URL of any MP3 Song", 500, 16777164, NaN, 10, 10, 20, null, stateCounter, true);
var _local2:Sprite = new Sprite();
_local2.alpha = 0;
textContainer.addChild(_local2);
songURL = new TextField();
songURL.defaultTextFormat = new TextFormat("MyFont", 18, 0);
songURL.type = TextFieldType.INPUT;
songURL.width = 430;
songURL.height = 30;
songURL.wordWrap = false;
songURL.multiline = false;
if (((!((recentList[0] == null))) && (!((recentList[0]["file"] == null))))){
songURL.text = recentList[0]["file"];
} else {
songURL.text = "";
};
songURL.embedFonts = true;
songURL.antiAliasType = "advanced";
songURL.selectable = true;
songURL.background = true;
songURL.border = true;
songURL.x = 50;
songURL.y = 50;
stage.focus = songURL;
songURL.setSelection(0, songURL.text.length);
_local2.addChild(songURL);
fadeIn(_local2, 500);
showText("Play", 500, 0xFFFFFF, 500, 50, 50, 20, selectSongURL, stateCounter, false, ["url"], true, false, 0xFFFFFF);
if (recentList.length > 0){
showText("- Recently Played -", 500, 16777164, NaN, 100, 100, 20, null, stateCounter, true);
_local3 = 0;
while (_local3 < recentList.length) {
showText(recentList[_local3]["name"], 500, 12307677, 50, (130 + (45 * _local3)), (130 + (45 * _local3)), 16, selectSongURL, stateCounter, false, [recentList[_local3]["file"]]);
showText(recentList[_local3]["file"], 500, 0x666666, 50, (150 + (45 * _local3)), (150 + (45 * _local3)), 12, selectSongURL, stateCounter, false, [recentList[_local3]["file"]]);
_local3++;
};
};
}
public function rotateAroundExternalPoint(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number):void{
_arg1.translate(-(_arg2), -(_arg3));
_arg1.rotate((_arg4 * (Math.PI / 180)));
_arg1.translate(_arg2, _arg3);
}
private function setCursorSize():void{
cursorSize = (cursorDefaultSize + combo);
if (cursorSize < 3){
cursorSize = 3;
} else {
if (cursorSize > 50){
cursorSize = (int(((cursorSize - 50) / 4)) + 50);
};
};
updateCursor();
}
private function addRainDrop(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:String="", _arg5:String="", _arg6:Boolean=true, _arg7:Boolean=false):RainDrop{
var _local9:Point;
var _local11:int;
var _local12:Number;
var _local13:int;
_arg3 = (_arg3 + 0.2);
var _local8:int = (_arg3 * 12);
if (_arg5 == ""){
_arg5 = "normal";
if (_arg3 > 0.5){
_local11 = int((Math.random() * 1200));
if (_local11 < 20){
_arg5 = "powerUp";
} else {
if (_local11 < 40){
_arg5 = "powerDown";
} else {
if ((((_local11 < 42)) && ((suction == 0)))){
_arg5 = "suction";
} else {
if ((((((_local11 == 42)) && (yellowMadness))) && ((suction == 0)))){
_arg5 = "yellowMadness";
yellowMadness = false;
};
};
};
};
};
};
if (_arg4 == ""){
_arg4 = getRandomShape();
};
var _local10:RainDrop = new RainDrop(_arg5, _arg4, pattern, _arg3, maxRadius, stage.stageWidth, stage.stageHeight);
_local10.recycled = _arg7;
if (pattern == "Spiral"){
if (_arg6){
if (_arg1 > halfWidth){
_local10.x = ((_arg1 * 2) - halfWidth);
_local10.y = (stage.stageHeight - _arg2);
} else {
_local10.x = (_arg1 * 2);
_local10.y = _arg2;
};
} else {
_local10.x = _arg1;
_local10.y = _arg2;
};
_local10.fadeVelocity = _local8;
_local10.originalFadeVelocity = _local8;
_local10.yVelocity = 0;
_local10.originalYVelocity = 0;
} else {
if (pattern == "Fixed"){
if (_arg6){
_local9 = playArea.globalToLocal(new Point(cursor.x, cursor.y));
_local10.x = (Math.random() * stage.stageWidth);
_local10.y = (Math.random() * stage.stageHeight);
while (((((((Math.abs((_local9.x - _local10.x)) - cursorSize) - _local10.radius) - 50) <= 0)) && (((((Math.abs((_local9.y - _local10.y)) - cursorSize) - _local10.radius) - 50) <= 0)))) {
_local10.x = (Math.random() * stage.stageWidth);
_local10.y = (Math.random() * stage.stageHeight);
};
} else {
_local10.x = _arg1;
_local10.y = _arg2;
};
_local10.fadeVelocity = _local8;
_local10.originalFadeVelocity = _local8;
_local10.yVelocity = 0;
_local10.originalYVelocity = 0;
} else {
if (pattern == "Radar"){
if (_arg6){
_local9 = playArea.globalToLocal(new Point(cursor.x, cursor.y));
_local12 = (_arg1 + 20);
_local13 = ((frameCount % 60) * 6);
_local10.x = ((_local12 * Math.cos(((Math.PI * _local13) / 180))) + halfWidth);
_local10.y = ((_local12 * Math.sin(((Math.PI * _local13) / 180))) + halfHeight);
if ((((((_local10.type == "powerDown")) && (((((Math.abs((_local9.x - _local10.x)) - cursorSize) - _local10.radius) - 50) <= 0)))) && (((((Math.abs((_local9.y - _local10.y)) - cursorSize) - _local10.radius) - 50) <= 0)))){
_local10.type = "normal";
};
} else {
_local10.x = _arg1;
_local10.y = _arg2;
};
_local10.fadeVelocity = _local8;
_local10.originalFadeVelocity = _local8;
_local10.yVelocity = 0;
_local10.originalYVelocity = 0;
} else {
_local10.x = _arg1;
_local10.y = _arg2;
if (pattern == "Straight"){
_local10.yVelocity = (_local8 / 2);
_local10.originalYVelocity = (_local8 / 2);
} else {
_local10.yVelocity = _local8;
_local10.originalYVelocity = _local8;
};
};
};
};
if (_local10.type == "powerDown"){
playAreaRed.addChild(_local10);
} else {
playArea.addChild(_local10);
};
totalShapeCount++;
return (_local10);
}
private function selectDisplayType(_arg1:MouseEvent):void{
var link:Sprite;
var e = _arg1;
playSelectSound();
if (e.target != null){
link = Sprite(e.target);
if (((!((helperParams[link.name] == null))) && (!((helperParams[link.name][0] == null))))){
displayType = helperParams[link.name][0];
if (displayType == "Fullscreen"){
try {
stage.fullScreenSourceRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
stage.displayState = StageDisplayState.FULL_SCREEN;
} catch(e:Error) {
};
} else {
stage.displayState = StageDisplayState.NORMAL;
};
showMainMenu();
};
};
}
private function addRainDrops():void{
var _local1:int;
var _local2:int = volumePoints.length;
_local1 = 0;
while (_local1 < _local2) {
if (pattern == "Radar"){
if (((((cheatLotsOfShapes) || ((playArea.numChildren < (maxShapesOnBoard * 2))))) || ((volumePoints[_local1][1] > 0.9)))){
addRainDrop(((halfWidth - ((volumePoints[_local1][0] / channelLength) * halfWidth)) + (Math.random() * bandWidth)), 0, volumePoints[_local1][1]);
};
} else {
if (((((cheatLotsOfShapes) || ((playArea.numChildren < maxShapesOnBoard)))) || ((volumePoints[_local1][1] > 0.9)))){
addRainDrop(((halfWidth + ((volumePoints[_local1][0] / channelLength) * halfWidth)) + (Math.random() * bandWidth)), 0, volumePoints[_local1][1]);
addRainDrop(((halfWidth - ((volumePoints[_local1][0] / channelLength) * halfWidth)) + (Math.random() * bandWidth)), 0, volumePoints[_local1][1]);
};
};
_local1++;
};
volumePoints = [];
}
public function cursorFollow(_arg1:MouseEvent):void{
cursor.x = stage.mouseX;
cursor.y = stage.mouseY;
cursor.visible = true;
}
private function saveUserData():void{
try {
so.data.unlockLevel = unlockLevel;
so.data.allowsFullScreen = allowsFullScreen;
so.data.recentList = recentList;
so.flush();
} catch(e:Error) {
};
}
private function getSongName(_arg1:String):String{
return (_arg1.replace(/^.*[\/\\](.*)\.mp3$/i, "$1"));
}
private function badSong():void{
var _local1:int;
while (_local1 < recentList.length) {
if (recentList[_local1]["file"] == songFile){
recentList.splice(_local1, 1);
break;
};
_local1++;
};
saveUserData();
if (!songName.visible){
showMainMenu();
return;
};
clearText();
clearGame();
s = new Sound();
song = "Invalid MP3 song";
songName.text = song;
songFile = "";
credits.visible = false;
mainMenu.visible = false;
pause.visible = false;
stateCounter++;
showText("The MP3 song you selected cannot be loaded.", 1000, 16777164, NaN, 130, NaN, 25, clearPause, stateCounter);
showText("If the problem continues, please select another song.", 1000, 16777164, NaN, 175, NaN, 25, clearPause, stateCounter);
if (unlockLevel >= 6){
showText("Select Another URL", 1000, 0xFFFFFF, NaN, 250, NaN, 40, showSelectURL, stateCounter);
};
showText("Main Menu", 1000, 16764108, NaN, 325, NaN, 40, showMainMenu, stateCounter);
}
private function fadeIn(_arg1:DisplayObject, _arg2:int):void{
var _local3:int = int(((_arg2 / 1000) * stage.frameRate));
_arg1.alpha = 0;
_arg1.visible = true;
var _local4:Timeline = new Timeline(RenderMethod.ENTER_FRAME);
_local4.addTween(new Tween(_arg1, "alpha", 1, 0, _local3, Transitions.CUBIC_OUT));
_local4.play();
}
private function update(_arg1:Event=null):void{
var _local3:Boolean;
var _local4:Matrix;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local2:Boolean;
frameCount++;
if (pause.visible){
if ((((randomizeType == "Mix It Up")) && (((frameCount % 300) == 0)))){
shapeSet = shapeSets[Math.floor((Math.random() * shapeSets.length))];
initShapeSet();
pattern = patterns[Math.floor((Math.random() * patterns.length))];
rotationType = rotationTypes[Math.floor((Math.random() * rotationTypes.length))];
};
processMusic();
_local3 = false;
if ((frameCount % 3) == 0){
if (((((((!((sc == null))) && (!((s == null))))) && (!(isNaN(s.length))))) && ((s.length > 0)))){
_local3 = true;
progressBar.graphics.clear();
progressBar.graphics.beginFill(13421823, 0.8);
progressBar.graphics.drawRect(0, 0, ((stage.stageWidth * sc.position) / s.length), 5);
};
};
if (pattern == "Radar"){
_local3 = true;
};
if (_local3){
addRainDrops();
};
updateRainDrops();
if ((frameCount % 300) == 0){
reflexiveAPI.submitScore(score);
};
_local2 = true;
} else {
if (title.visible){
if ((frameCount % 10) == 0){
addRainDrop((Math.random() * stage.stageWidth), 0, Math.random(), "", "normal");
};
updateRainDrops();
_local2 = true;
};
};
if (_local2){
_local4 = new Matrix();
if (rotationType == "Breathe"){
_local5 = ((frameCount * 2) % 360);
_local6 = ((Math.PI * _local5) / 180);
_local7 = (1 + (Math.sin(_local6) * 0.05));
scaleAroundExternalPoint(_local4, halfWidth, halfHeight, _local7, _local7);
} else {
if (rotationType == "Wave"){
_local8 = ((frameCount * 4) % 360);
_local9 = ((Math.PI * _local8) / 180);
_local10 = 20;
_local11 = (Math.sin(_local9) * _local10);
_local12 = Math.atan2(_local10, halfHeight);
_local13 = (Math.cos(_local9) * _local12);
xShearAroundExternalPoint(_local4, halfWidth, halfHeight, _local13);
_local4.translate(_local11, 0);
} else {
if (rotationType != "Fixed"){
if (rotationType == "Right"){
rotateDegrees = (rotateDegrees + 0.1);
} else {
rotateDegrees = (rotateDegrees - 0.1);
};
};
};
};
rotateAroundExternalPoint(_local4, halfWidth, halfHeight, rotateDegrees);
playArea.transform.matrix = _local4;
playAreaRed.transform.matrix = _local4;
};
}
private function showMainMenu(_arg1:MouseEvent=null):void{
var result:Sprite;
var xPos:Number;
var yPos:Number;
var i:int;
var e = _arg1;
gameArea.mouseChildren = true;
textContainer.mouseChildren = true;
clearText();
clearGame();
if (gameArea.alpha < 1){
fadeIn(gameArea, 1000);
fadeIn(textContainer, 1000);
};
allowPause = true;
title.visible = true;
mainMenu.visible = false;
songName.visible = false;
credits.visible = true;
scoreName.visible = false;
scoreText.visible = false;
progressBar.visible = false;
suction = 0;
powerDownTime = 0;
maxCombo = 1;
combo = 1;
cursorSize = cursorDefaultSize;
updateCursor();
highlightCursor(false);
loadSongFile(songIndex);
initShapeSet();
stateCounter++;
var lockedText = " ? ";
var spacing = 10;
var fontSize = 17;
showText("Play", 0, 0xFFFFFF, NaN, 120, 120, 40, playGame, stateCounter);
yPos = 210;
result = showText("Song:", 0, 0xDDDDDD, 70, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < songTitles.length) {
xPos = ((result.x + result.width) + spacing);
if (randomizeType == "Surprise Me"){
result = showText(songTitles[i], 0, 0x666666, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if ((((i >= unlockLevel)) || ((((i == 3)) && ((unlockLevel < 6)))))){
result = showText(lockedText, 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (songIndex == i){
result = showText(songTitles[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(songTitles[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectSong, stateCounter, true, [i], true, false, 0xFFFFFF);
};
};
};
i = (i + 1);
};
yPos = (yPos + 60);
result = showText("Shapes:", 0, 0xDDDDDD, 53, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < shapeSets.length) {
xPos = ((result.x + result.width) + spacing);
if ((((randomizeType == "Surprise Me")) || ((randomizeType == "Mix It Up")))){
result = showText(shapeSets[i], 0, 0x666666, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (i >= unlockLevel){
result = showText(lockedText, 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (shapeSet == shapeSets[i]){
result = showText(shapeSets[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(shapeSets[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectShapeSet, stateCounter, true, [shapeSets[i]], true, false, 0xFFFFFF);
};
};
};
i = (i + 1);
};
yPos = (yPos + 60);
result = showText("Pattern:", 0, 0xDDDDDD, 45, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < patterns.length) {
xPos = ((result.x + result.width) + spacing);
if ((((randomizeType == "Surprise Me")) || ((randomizeType == "Mix It Up")))){
result = showText(patterns[i], 0, 0x666666, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (i >= unlockLevel){
result = showText(lockedText, 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (pattern == patterns[i]){
result = showText(patterns[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(patterns[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectPattern, stateCounter, true, [patterns[i]], true, false, 0xFFFFFF);
};
};
};
i = (i + 1);
};
yPos = (yPos + 60);
result = showText("Motion:", 0, 0xDDDDDD, 48, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < rotationTypes.length) {
xPos = ((result.x + result.width) + spacing);
if ((((randomizeType == "Surprise Me")) || ((randomizeType == "Mix It Up")))){
result = showText(rotationTypes[i], 0, 0x666666, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (i >= unlockLevel){
result = showText(lockedText, 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (rotationType == rotationTypes[i]){
result = showText(rotationTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(rotationTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectRotationType, stateCounter, true, [rotationTypes[i]], true, false, 0xFFFFFF);
};
};
};
i = (i + 1);
};
if (unlockLevel >= 6){
yPos = (yPos + 60);
result = showText("Randomize:", 0, 0xDDDDDD, 22, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < randomizeTypes.length) {
xPos = ((result.x + result.width) + spacing);
if ((i + 3) >= unlockLevel){
result = showText(lockedText, 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, false);
} else {
if (randomizeType == randomizeTypes[i]){
result = showText(randomizeTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(randomizeTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectRandomizeType, stateCounter, true, [randomizeTypes[i]], true, false, 0xFFFFFF);
};
};
i = (i + 1);
};
};
if (((allowsFullScreen) && ((unlockLevel >= 6)))){
yPos = (yPos + 60);
result = showText("Display:", 0, 0xDDDDDD, 44, yPos, yPos, 20, null, stateCounter, true);
i = 0;
while (i < displayTypes.length) {
xPos = ((result.x + result.width) + spacing);
if (displayType == displayTypes[i]){
result = showText(displayTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, null, stateCounter, true, null, true, true);
} else {
result = showText(displayTypes[i], 0, 0xFFFFFF, xPos, yPos, yPos, fontSize, selectDisplayType, stateCounter, true, [displayTypes[i]], true, false, 0xFFFFFF);
};
i = (i + 1);
};
};
yPos = (stage.stageHeight - 25);
showText("Put this game on your website", 0, 0xAAAAAA, 5, yPos, yPos, 14, function ():void{
navigateToURL(new URLRequest((("http://www.reflexive.com/index.php?PAGE=WebGameForMySite&REFERRER=" + referrer) + "&SOURCE=MainMenu")));
});
yPos = (yPos - 20);
showText("More Games", 0, 0xAAAAAA, 5, yPos, yPos, 14, function ():void{
navigateToURL(new URLRequest((("http://www.reflexive.com/index.php?PAGE=WebGameHome&REFERRER=" + referrer) + "&SOURCE=MainMenu")));
});
}
private function showCredits(_arg1:MouseEvent):void{
var e = _arg1;
clearText();
clearGame();
title.visible = false;
credits.visible = false;
mainMenu.visible = true;
stateCounter++;
helpers.setTimeout(showText, 0, "Developed By:", 3000, 0xFFFFFF, NaN, 150, NaN, 20, null, stateCounter);
helpers.setTimeout(showText, 0, "Reflexive Entertainment", 3000, 16777164, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 0, "www.reflexive.com", 3000, 13434828, NaN, 250, NaN, 30, null, stateCounter);
helpers.setTimeout(showText, 3000, "Programming & Design:", 3000, 0xFFFFFF, NaN, 150, NaN, 20, null, stateCounter);
helpers.setTimeout(showText, 3000, "Isaac Shepard", 3000, 16777164, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 6000, "Graphics:", 3000, 0xFFFFFF, NaN, 120, NaN, 20, null, stateCounter);
helpers.setTimeout(showText, 6000, "Zach Young", 3000, 16777164, NaN, 170, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 9000, "Music:", 3000, 0xFFFFFF, NaN, 150, NaN, 20, null, stateCounter);
var yPos:Number = 200;
var i:int;
while (i < (songTitles.length - 1)) {
helpers.setTimeout(showText, 9000, (("\"" + songTitles[i]) + "\""), 3000, 16777164, NaN, yPos, NaN, 40, null, stateCounter);
yPos = (yPos + 50);
i = (i + 1);
};
helpers.setTimeout(showText, 9000, "from \"Deep Joy\"", 3000, 16777164, NaN, yPos, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 9000, "by Isaac Shepard", 3000, 13434828, NaN, (yPos + 50), NaN, 30, null, stateCounter);
helpers.setTimeout(showText, 12000, "Additional Design & Testing:", 3000, 0xFFFFFF, NaN, 50, NaN, 20, null, stateCounter);
helpers.setTimeout(showText, 12000, "Brian Fisher", 3000, 16777164, NaN, 100, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Simon Hallam", 3000, 16777164, NaN, 150, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Lars Brubaker", 3000, 16777164, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Russell Carroll", 3000, 16777164, NaN, 250, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Zach Young", 3000, 16777164, NaN, 300, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Terri Hardie", 3000, 16777164, NaN, 350, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "John Pangilinan", 3000, 16777164, NaN, 400, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 12000, "Dan Ruskin", 3000, 16777164, NaN, 450, NaN, 40, null, stateCounter);
helpers.setTimeout(function (_arg1:int):void{
if (_arg1 == stateCounter){
showMainMenu();
};
}, 15000, stateCounter);
}
private function songLoadProgress(_arg1:ProgressEvent):void{
if (!songLoaded){
maxLoaded = Math.max(maxLoaded, Math.round(((100 * _arg1.bytesLoaded) / _arg1.bytesTotal)));
songName.text = (("Loading... " + maxLoaded) + "%");
};
}
private function selectRandomizeType(_arg1:MouseEvent):void{
var _local2:Sprite;
playSelectSound();
if (_arg1.target != null){
_local2 = Sprite(_arg1.target);
if (((!((helperParams[_local2.name] == null))) && (!((helperParams[_local2.name][0] == null))))){
randomizeType = helperParams[_local2.name][0];
showMainMenu();
};
};
}
private function processMusic():void{
var volume:Number;
var i:int;
if (SoundMixer.areSoundsInaccessible()){
showPause(null);
showText("Sound Conflict!", 3000, 16737894, NaN, 25, NaN, 14, clearPause, stateCounter);
showText("You have another web page open with Flash that is emitting sound.", 3000, 16737894, NaN, 50, NaN, 14, clearPause, stateCounter);
showText("Please close all other Flash windows and then click 'Resume'.", 3000, 16737894, NaN, 75, NaN, 14, clearPause, stateCounter);
return;
};
try {
SoundMixer.computeSpectrum(ba, true, 0);
i = 0;
while (i < channelLength) {
volume = ba.readFloat();
if (volume > 0.1){
volume = (volume + (0.5 * Math.max(0, (0.5 - volume))));
};
volume = (volume + 0.1);
if ((((volume > 0.3)) && ((((((oldVolume[i] == null)) || ((oldVolume[i] == 0)))) || ((volume > (3 * oldVolume[i]))))))){
volumePoints.push([i, volume]);
};
oldVolume[i] = volume;
i = (i + bandWidth);
};
} catch(e:SecurityError) {
reloadMusicFromError();
return;
};
}
private function showPause(_arg1:MouseEvent=null):void{
if (((!(pause.visible)) || (!(allowPause)))){
return;
};
position = sc.position;
sc.stop();
credits.visible = false;
mainMenu.visible = false;
pause.visible = false;
stateCounter++;
showText("Resume", 1000, 16777164, NaN, 175, NaN, 40, clearPause, stateCounter);
showText("Restart", 1000, 13434879, NaN, 250, NaN, 40, playGame, stateCounter);
showText("End Game", 1000, 16764108, NaN, 325, NaN, 40, showMainMenu, stateCounter);
}
private function selectRotationType(_arg1:MouseEvent):void{
var _local2:Sprite;
playSelectSound();
if (_arg1.target != null){
_local2 = Sprite(_arg1.target);
if (((!((helperParams[_local2.name] == null))) && (!((helperParams[_local2.name][0] == null))))){
rotationType = helperParams[_local2.name][0];
showMainMenu();
};
};
}
private function addToScore(_arg1:Number):void{
score = Math.round((score + _arg1));
scoreText.text = score.toString();
}
private function selectPattern(_arg1:MouseEvent):void{
var _local2:Sprite;
playSelectSound();
if (_arg1.target != null){
_local2 = Sprite(_arg1.target);
if (((!((helperParams[_local2.name] == null))) && (!((helperParams[_local2.name][0] == null))))){
pattern = helperParams[_local2.name][0];
showMainMenu();
};
};
}
private function continuePlayGame():void{
var skip:Sprite;
if ((((((song == "")) || ((songFile == "")))) || ((songTitles[songIndex] == null)))){
showMainMenu();
return;
};
clearText();
clearGame();
stage.focus = stage;
maxCombo = 1;
combo = 1;
purplePowerCount = 0;
yellowMadnessCount = 0;
powerUpCount = 0;
powerDownCount = 0;
shapeCount = 0;
totalShapeCount = 0;
yellowMadness = true;
powerDownTime = 0;
progressBar.graphics.clear();
highlightCursor(false);
cursorSize = cursorDefaultSize;
updateCursor();
title.visible = false;
credits.visible = false;
mainMenu.visible = true;
pause.visible = false;
songName.visible = true;
progressBar.visible = false;
scoreText.visible = false;
scoreName.visible = false;
score = 0;
scoreText.text = score.toString();
initShapeSet();
gameArea.mouseChildren = true;
textContainer.mouseChildren = true;
if (gameArea.alpha < 1){
fadeIn(gameArea, 500);
fadeIn(textContainer, 500);
};
stateCounter++;
skip = showText("[Skip Instructions]", 1000, 0x999999, NaN, 50, 50, 16, startGame, stateCounter, false, null, false, false, 0xFFFFFF, false);
helpers.setTimeout(showText, 0, "Collect the shapes", 3000, 0xFFFFFF, NaN, 150, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 0, "to earn points!", 3000, 0xFFFFFF, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(function (_arg1:int):void{
if (_arg1 == stateCounter){
scoreText.visible = true;
scoreName.visible = true;
};
}, 1500, stateCounter);
helpers.setTimeout(showText, 3000, "Yellow shapes are good!", 2000, 0xFFFF00, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 5000, "Red shapes are bad!", 2000, 0xFF0000, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(showText, 7000, "Purple shapes are POWER!", 2000, 0xFF00FF, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(function (_arg1:int):void{
if (_arg1 == stateCounter){
skip.visible = false;
};
}, 9000, stateCounter);
helpers.setTimeout(showText, 9000, "Get Ready!", 2000, 0xFFFFFF, NaN, 200, NaN, 40, null, stateCounter);
helpers.setTimeout(function (_arg1:int):void{
if (_arg1 == stateCounter){
startGame(null);
};
}, 12000, stateCounter);
}
private function init(_arg1:Event):void{
var e = _arg1;
reflexiveAPI = ReflexiveAPI.getInstance();
addChild(reflexiveAPI);
if (loaderInfo.url.match("kongregate.com")){
kongregateAPI = new KongregateAPI();
addChild(kongregateAPI);
};
loadUserData();
halfWidth = (stage.stageWidth / 2);
halfHeight = (stage.stageHeight / 2);
introMovie = new introMovieClass();
introMovie.x = Math.floor(((stage.stageWidth - introMovie.width) / 2));
introMovie.y = Math.floor(((stage.stageHeight - introMovie.height) / 2));
introMovie.buttonMode = true;
introMovie.addEventListener(MouseEvent.CLICK, function ():void{
navigateToURL(new URLRequest((("http://www.reflexive.com/index.php?PAGE=WebGameHome&REFERRER=" + referrer) + "&SOURCE=IntroMovie")));
});
addChild(introMovie);
introMovieTimer = new Timer(7000, 0);
introMovieTimer.addEventListener(TimerEvent.TIMER, initGame);
introMovieTimer.start();
}
private function clearText():void{
removeChild(textContainer);
textContainer = new Sprite();
addChild(textContainer);
helperParams = {};
}
private function loadUserData():void{
unlockLevel = so.data.unlockLevel;
if (((isNaN(unlockLevel)) || ((unlockLevel <= 0)))){
unlockLevel = 1;
};
allowsFullScreen = so.data.allowsFullScreen;
recentList = so.data.recentList;
if (recentList == null){
recentList = [];
};
}
private function songLoadError(_arg1:IOErrorEvent):void{
badSong();
}
private function initGame(_arg1:TimerEvent):void{
var e = _arg1;
introMovieTimer.stop();
removeChild(introMovie);
Global.stage = stage;
helpers = new Helpers();
Font.registerFont(myfont);
downloadURL = "http://webgames.gamecentersolution.com/DownloadFromWebGame.aspx";
gameArea = new Sprite();
gameArea.alpha = 0;
addChild(gameArea);
clearPlayArea();
cursor = new Cursor(cursorDefaultSize);
addChild(cursor);
cursorSize = cursorDefaultSize;
stage.addEventListener(Event.MOUSE_LEAVE, cursorHide);
stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
cursorHide(null);
Mouse.hide();
updateCursor();
textContainer = new Sprite();
textContainer.alpha = 0;
addChild(textContainer);
title = new TextField();
title.defaultTextFormat = new TextFormat("MyFont", 60, 16777164, true);
title.text = "Music Catch 2";
title.autoSize = "left";
title.embedFonts = true;
title.antiAliasType = "advanced";
title.x = Math.floor(((stage.stageWidth - title.textWidth) / 2));
title.y = 20;
title.selectable = false;
title.visible = false;
title.filters = [new GlowFilter(16777164, 0.5, 30, 30, 2, 1, false, false)];
gameArea.addChild(title);
fadeIn(title, 1000);
credits = new TextField();
credits.defaultTextFormat = new TextFormat("MyFont", 14, 0xAAAAAA);
credits.text = "Credits";
credits.autoSize = "left";
credits.embedFonts = true;
credits.antiAliasType = "advanced";
credits.x = Math.floor(((stage.stageWidth - credits.textWidth) / 2));
credits.y = (stage.stageHeight - 25);
credits.selectable = false;
credits.addEventListener(MouseEvent.CLICK, showCredits);
credits.addEventListener(MouseEvent.MOUSE_OVER, function ():void{
highlightCursor(true);
playHoverSound();
});
credits.addEventListener(MouseEvent.MOUSE_OUT, function ():void{
highlightCursor(false);
});
credits.filters = [new GlowFilter(0xFFFFFF, 0.5, 20, 20, 1.5, 1, false, false)];
gameArea.addChild(credits);
copyright = new TextField();
copyright.defaultTextFormat = new TextFormat("MyFont", 10, 0xAAAAAA);
copyright.text = "© Reflexive.com";
copyright.autoSize = "left";
copyright.embedFonts = true;
copyright.antiAliasType = "advanced";
copyright.x = ((stage.stageWidth - copyright.textWidth) - 8);
copyright.y = (stage.stageHeight - 20);
copyright.selectable = false;
copyright.addEventListener(MouseEvent.CLICK, function ():void{
navigateToURL(new URLRequest((("http://www.reflexive.com/index.php?PAGE=WebGameHome&REFERRER=" + referrer) + "&SOURCE=MainMenuCopyright")));
});
copyright.addEventListener(MouseEvent.MOUSE_OVER, function ():void{
highlightCursor(true);
});
copyright.addEventListener(MouseEvent.MOUSE_OUT, function ():void{
highlightCursor(false);
});
gameArea.addChild(copyright);
mainMenu = new TextField();
mainMenu.defaultTextFormat = new TextFormat("MyFont", 12, 0xAAAAAA);
mainMenu.text = "Main Menu";
mainMenu.autoSize = "left";
mainMenu.embedFonts = true;
mainMenu.antiAliasType = "advanced";
mainMenu.x = 5;
mainMenu.y = (stage.stageHeight - 20);
mainMenu.selectable = false;
mainMenu.visible = false;
mainMenu.addEventListener(MouseEvent.CLICK, showMainMenu);
mainMenu.addEventListener(MouseEvent.MOUSE_OVER, function ():void{
highlightCursor(true);
playHoverSound();
});
mainMenu.addEventListener(MouseEvent.MOUSE_OUT, function ():void{
highlightCursor(false);
});
gameArea.addChild(mainMenu);
pause = new TextField();
pause.defaultTextFormat = new TextFormat("MyFont", 12, 0xAAAAAA);
pause.text = "(P)ause";
pause.autoSize = "left";
pause.embedFonts = true;
pause.antiAliasType = "advanced";
pause.x = 5;
pause.y = (stage.stageHeight - 20);
pause.selectable = false;
pause.visible = false;
pause.addEventListener(MouseEvent.CLICK, showPause);
pause.addEventListener(MouseEvent.MOUSE_OVER, function ():void{
highlightCursor(true);
});
pause.addEventListener(MouseEvent.MOUSE_OUT, function ():void{
highlightCursor(false);
});
gameArea.addChild(pause);
scoreName = new TextField();
scoreName.defaultTextFormat = new TextFormat("MyFont", 20, 0xFFFFFF);
scoreName.text = "Points:";
scoreName.autoSize = "left";
scoreName.embedFonts = true;
scoreName.antiAliasType = "advanced";
scoreName.x = (Math.floor(halfWidth) - 66);
scoreName.y = (stage.stageHeight - 30);
scoreName.selectable = false;
scoreName.visible = false;
scoreName.filters = [new GlowFilter(0xFFFFFF, 0.5, 20, 20, 1.5, 1, false, false)];
gameArea.addChild(scoreName);
scoreText = new TextField();
scoreText.defaultTextFormat = new TextFormat("MyFont", 20, 13434828);
scoreText.text = "0";
scoreText.autoSize = "left";
scoreText.embedFonts = true;
scoreText.antiAliasType = "advanced";
scoreText.x = (Math.floor(halfWidth) + 14);
scoreText.y = (stage.stageHeight - 30);
scoreText.selectable = false;
scoreText.visible = false;
gameArea.addChild(scoreText);
songName = new TextField();
songName.defaultTextFormat = new TextFormat("MyFont", 14, 12307677);
songName.alpha = 0.5;
songName.text = "Loading...";
songName.autoSize = "left";
songName.embedFonts = true;
songName.antiAliasType = "advanced";
songName.x = 5;
songName.y = 5;
songName.selectable = false;
gameArea.addChild(songName);
progressBar = new Sprite();
addChild(progressBar);
showMainMenu();
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
stage.addEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullscreenChange);
}
private function loadSongFile(_arg1:int, _arg2:String=""):void{
var _local3:Class;
s = new Sound();
if (_arg1 == 3){
songLoaded = false;
if (_arg2 != ""){
loadExternalSong(_arg2);
};
} else {
songLoaded = true;
song = songTitles[_arg1];
songName.text = song;
songFile = song;
_local3 = songClasses[_arg1];
s = new (_local3);
};
}
private function highlightCursor(_arg1:Boolean):void{
cursor.isHighlight = _arg1;
updateCursor();
}
private function onFullscreenChange(_arg1:FullScreenEvent):void{
if (_arg1.fullScreen){
displayType = "Fullscreen";
} else {
displayType = "Normal";
};
if (title.visible){
showMainMenu();
};
}
private function playGame(_arg1:MouseEvent=null):void{
var randomSongIndex:int;
var e = _arg1;
playSelectSound();
if (testFullScreen){
testFullScreen = false;
try {
stage.fullScreenSourceRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;
allowsFullScreen = true;
saveUserData();
} catch(e:Error) {
allowsFullScreen = false;
};
};
if (randomizeType == "Surprise Me"){
randomSongIndex = Math.floor((Math.random() * ((songTitles.length - 1) + recentList.length)));
if (randomSongIndex >= (songTitles.length - 1)){
songIndex = 3;
songFile = recentList[randomSongIndex]["file"];
} else {
songIndex = randomSongIndex;
};
shapeSet = shapeSets[Math.floor((Math.random() * shapeSets.length))];
initShapeSet();
pattern = patterns[Math.floor((Math.random() * patterns.length))];
rotationType = rotationTypes[Math.floor((Math.random() * rotationTypes.length))];
};
gameArea.mouseChildren = false;
textContainer.mouseChildren = false;
fadeOut(gameArea, 1500);
fadeOut(textContainer, 1500);
if (songIndex == 3){
if (randomizeType == "Surprise Me"){
helpers.setTimeout(function (_arg1:int, _arg2:String):void{
if (_arg1 == stateCounter){
loadSongFile(songIndex, _arg2);
continuePlayGame();
};
}, 2000, stateCounter, songFile);
} else {
helpers.setTimeout(showSelectURL, 2000);
};
} else {
loadSongFile(songIndex);
helpers.setTimeout(continuePlayGame, 2000);
};
}
private function clearPlayArea():void{
if (playArea != null){
gameArea.removeChild(playArea);
};
if (playAreaRed != null){
gameArea.removeChild(playAreaRed);
};
rotateDegrees = 0;
playArea = new Sprite();
if (((((!((pattern == "Spiral"))) && (!((pattern == "Fixed"))))) && (!((pattern == "Radar"))))){
playArea.graphics.lineStyle(6, 0xFFFFFF, 0.1);
playArea.graphics.lineTo(stage.stageWidth, 0);
playArea.graphics.lineStyle(2, 0xFFFFFF, 0.2);
playArea.graphics.moveTo(0, 0);
playArea.graphics.lineTo(stage.stageWidth, 0);
};
gameArea.addChild(playArea);
playAreaRed = new Sprite();
gameArea.addChild(playAreaRed);
}
private function getMedal(_arg1:int):Sprite{
var _local2:Sprite;
if ((((_arg1 >= 1)) && ((_arg1 <= 4)))){
if (_arg1 == 4){
_local2 = new platinumClass();
} else {
if (_arg1 == 3){
_local2 = new goldClass();
} else {
if (_arg1 == 2){
_local2 = new silverClass();
} else {
_local2 = new bronzeClass();
};
};
};
};
return (_local2);
}
private function fadeOut(_arg1:DisplayObject, _arg2:int):void{
var _local3:int = int(((_arg2 / 1000) * stage.frameRate));
_arg1.alpha = 1;
_arg1.visible = true;
var _local4:Timeline = new Timeline(RenderMethod.ENTER_FRAME);
_local4.addTween(new Tween(_arg1, "alpha", 0, 0, _local3, Transitions.CUBIC_OUT));
_local4.play();
}
private function updateRainDrops():void{
var rd:RainDrop;
var area:Sprite;
var cp:Point;
var i:int;
var origCombo:int;
var origCursorSize:Number;
var type:String;
var xPos:Number;
var yPos:Number;
var count:int;
var k:int;
var newRD:RainDrop;
var m:int;
var pushAmount:int;
var suctionAmount:int;
if (suction > 0){
suction--;
};
var j:int;
while (j <= 1) {
if (j == 0){
area = playArea;
} else {
area = playAreaRed;
};
cp = area.globalToLocal(new Point(cursor.x, cursor.y));
i = (area.numChildren - 1);
while (i >= 0) {
rd = (area.getChildAt(i) as RainDrop);
if ((((((((rd.type == "powerDown")) && (((Math.abs((cp.x - rd.x)) - (0.8 * cursorSize)) <= 0)))) && (((Math.abs((cp.y - rd.y)) - (0.8 * cursorSize)) <= 0)))) || (((((((!((rd.type == "powerDown"))) && (!((rd.type == "collected"))))) && ((((Math.abs((cp.x - rd.x)) - cursorSize) - rd.radius) <= 0)))) && ((((Math.abs((cp.y - rd.y)) - cursorSize) - rd.radius) <= 0)))))){
origCombo = combo;
origCursorSize = cursorSize;
type = rd.type;
collectRainDrop(rd);
if (type == "powerDown"){
count = Math.floor((0.9 * (origCombo - combo)));
k = 0;
while (k < count) {
if (Math.random() > 0.5){
xPos = (((cp.x - origCursorSize) - (Math.random() * 100)) + 20);
} else {
xPos = (((cp.x + origCursorSize) + (Math.random() * 100)) + 20);
};
if ((((((pattern == "Fixed")) || ((pattern == "Radar")))) && ((Math.random() > 0.5)))){
yPos = (((cp.y - origCursorSize) - (Math.random() * 100)) + 20);
} else {
yPos = (((cp.y + origCursorSize) + (Math.random() * 100)) + 20);
};
newRD = addRainDrop(xPos, yPos, 0.7, "", "powerUp", false, true);
newRD.originalCursorX = cp.x;
newRD.originalCursorY = cp.y;
k = (k + 1);
};
} else {
if (type == "yellowMadness"){
powerDownTime = 0;
m = (playArea.numChildren - 1);
while (m >= 0) {
rd = (playArea.getChildAt(m) as RainDrop);
rd.type = "powerUp";
rd.recycled = true;
m = (m - 1);
};
m = (playAreaRed.numChildren - 1);
while (m >= 0) {
rd = (playAreaRed.getChildAt(m) as RainDrop);
rd.type = "powerUp";
rd.recycled = true;
m = (m - 1);
};
};
};
} else {
if (rd.type == "collected"){
if (rd.alpha == 0){
try {
if (skipGarbage){
pool.push(rd);
};
rd.parent.removeChild(rd);
} catch(e:Error) {
};
} else {
rd.x = (rd.x + ((cp.x - rd.x) / 3));
rd.y = (rd.y + ((cp.y - rd.y) / 3));
};
} else {
rd.updateRainDrop();
if ((((powerDownTime > 0)) && (rd.recycled))){
if (powerDownTime == 1){
if (skipGarbage){
pool.push(rd);
};
area.removeChildAt(i);
} else {
pushAmount = 30;
if (powerDownTime < 30){
rd.alpha = (powerDownTime / 30);
pushAmount = (3000 / powerDownTime);
};
rd.x = (rd.x - ((rd.originalCursorX - rd.x) / pushAmount));
rd.y = (rd.y - ((rd.originalCursorY - rd.y) / pushAmount));
rd.yVelocity = 0;
};
};
if ((((suction > 0)) && (!((rd.type == "powerDown"))))){
suctionAmount = 6;
if (suction < 30){
suctionAmount = (180 / suction);
};
rd.x = (rd.x + ((cp.x - rd.x) / suctionAmount));
rd.y = (rd.y + ((cp.y - rd.y) / suctionAmount));
rd.yVelocity = 0;
};
if ((((((((rd.radius < 2)) || ((((((((((rd.pattern == "Spiral")) || ((rd.pattern == "Fixed")))) || ((rd.pattern == "Radar")))) && ((rd.type == "powerDown")))) && ((rd.radius < 5)))))) || ((((rd.pattern == "In & Out")) && ((rd.y < -(rd.radius))))))) || (((((!((rd.pattern == "In & Out"))) && (!((rd.pattern == "Spiral"))))) && ((rd.y > (stage.stageHeight + rd.radius))))))){
if (skipGarbage){
pool.push(rd);
};
area.removeChildAt(i);
};
};
};
i = (i - 1);
};
j = (j + 1);
};
if (powerDownTime > 0){
powerDownTime--;
};
}
private function endGame(_arg1:Event):void{
var medalName:String;
var medal:Sprite;
var noReds:Sprite;
var e = _arg1;
if ((((playArea.numChildren > 0)) || ((playAreaRed.numChildren > 0)))){
allowPause = false;
helpers.setTimeout(endGame, 100, null);
return;
};
suction = 0;
powerDownTime = 0;
allowPause = true;
pause.visible = false;
clearText();
clearGame();
if (loaderInfo.url.match("kongregate.com")){
kongregateAPI.stats.submit(("TotalPlays-" + songTitles[songIndex]), 1);
setTimeout(kongregateAPI.stats.submit, 400, ("MaxCombos-" + songTitles[songIndex]), maxCombo);
setTimeout(kongregateAPI.stats.submit, 800, ("EndCombos-" + songTitles[songIndex]), combo);
setTimeout(kongregateAPI.stats.submit, 1200, ("PowerUpsCollected-" + songTitles[songIndex]), powerUpCount);
setTimeout(kongregateAPI.stats.submit, 1600, ("PowerDownsCollected-" + songTitles[songIndex]), powerDownCount);
setTimeout(kongregateAPI.stats.submit, 2000, ("PurplePowersCollected-" + songTitles[songIndex]), purplePowerCount);
setTimeout(kongregateAPI.stats.submit, 2400, ("YellowMadnessCollected-" + songTitles[songIndex]), yellowMadnessCount);
setTimeout(kongregateAPI.stats.submit, 2800, ("ShapesCollected-" + songTitles[songIndex]), shapeCount);
setTimeout(kongregateAPI.stats.submit, 3200, ("GameCompleted-" + songTitles[songIndex]), 1);
if (powerDownCount == 0){
setTimeout(kongregateAPI.stats.submit, 3600, ("GameCompletedWithoutPowerDown-" + songTitles[songIndex]), 1);
};
setTimeout(kongregateAPI.stats.submit, 4000, ("TotalPowerUps-" + songTitles[songIndex]), powerUpCount);
setTimeout(kongregateAPI.stats.submit, 4400, ("TotalPowerDowns-" + songTitles[songIndex]), powerDownCount);
setTimeout(kongregateAPI.stats.submit, 4800, ("TotalPurplePowers-" + songTitles[songIndex]), purplePowerCount);
setTimeout(kongregateAPI.stats.submit, 5200, ("TotalYellowMadness-" + songTitles[songIndex]), yellowMadnessCount);
setTimeout(kongregateAPI.stats.submit, 5600, ("TotalShapes-" + songTitles[songIndex]), shapeCount);
setTimeout(kongregateAPI.stats.submit, 6000, ("TotalPossibleShapes-" + songTitles[songIndex]), totalShapeCount);
setTimeout(kongregateAPI.stats.submit, 0x1900, "TotalPlays", 1);
setTimeout(kongregateAPI.stats.submit, 6800, "TotalPowerUps", powerUpCount);
setTimeout(kongregateAPI.stats.submit, 7200, "TotalPowerDowns", powerDownCount);
setTimeout(kongregateAPI.stats.submit, 7600, "TotalPurplePowers", purplePowerCount);
setTimeout(kongregateAPI.stats.submit, 8000, "TotalYellowMadness", yellowMadnessCount);
setTimeout(kongregateAPI.stats.submit, 8400, "TotalShapes", shapeCount);
setTimeout(kongregateAPI.stats.submit, 8800, "TotalPossibleShapes", totalShapeCount);
};
var comboBonus:Number = (maxCombo * 1000);
helpers.setTimeout(showText, 0, ("Max Combo: " + maxCombo.toString()), 3000, 6710988, NaN, 150, NaN);
helpers.setTimeout(showText, 0, ("Combo Bonus: " + comboBonus.toString()), 3000, 6710988, NaN, 200, NaN);
var originalCombo:Number = combo;
var sizeBonus:Number = (Math.round(cursorSize) * 1000);
helpers.setTimeout(showText, 3000, ("Size Bonus: " + sizeBonus.toString()), 2000, 10066380, NaN, 200);
maxCombo = 1;
combo = 1;
helpers.setTimeout(cursor.updateCursor, 3200, (cursorSize - ((cursorSize - cursorDefaultSize) / 7)), ("x" + int((originalCombo / 1.2)).toString()));
helpers.setTimeout(cursor.updateCursor, 3300, (cursorSize - ((cursorSize - cursorDefaultSize) / 6)), ("x" + int((originalCombo / 1.5)).toString()));
helpers.setTimeout(cursor.updateCursor, 3400, (cursorSize - ((cursorSize - cursorDefaultSize) / 5)), ("x" + int((originalCombo / 2)).toString()));
helpers.setTimeout(cursor.updateCursor, 3500, (cursorSize - ((cursorSize - cursorDefaultSize) / 4)), ("x" + int((originalCombo / 3)).toString()));
helpers.setTimeout(cursor.updateCursor, 3600, (cursorSize - ((cursorSize - cursorDefaultSize) / 3)), ("x" + int((originalCombo / 4)).toString()));
helpers.setTimeout(cursor.updateCursor, 3700, (cursorSize - ((cursorSize - cursorDefaultSize) / 2)), ("x" + int((originalCombo / 5)).toString()));
helpers.setTimeout(cursor.updateCursor, 3800, (cursorSize - ((cursorSize - cursorDefaultSize) / 1.5)), ("x" + int((originalCombo / 6)).toString()));
helpers.setTimeout(cursor.updateCursor, 3900, (cursorSize - ((cursorSize - cursorDefaultSize) / 1.2)), ("x" + int((originalCombo / 7)).toString()));
cursorSize = cursorDefaultSize;
helpers.setTimeout(cursor.updateCursor, 4000, cursorSize, ("x" + combo.toString()));
addToScore((sizeBonus + comboBonus));
helpers.setTimeout(showText, 5000, ("Total Points: " + Math.round(score).toString()), 3000, 14540287, NaN, 200);
var time = 8000;
if (powerDownCount == 0){
helpers.setTimeout(showText, time, "Super Duper!", 2000, 16751001, NaN, 200, 200);
helpers.setTimeout(showText, time, "You avoided all red shapes!", 2000, 16751001, NaN, 250, 250);
noReds = new noRedsClass();
noReds.width = 50;
noReds.height = 50;
noReds.x = Math.floor((halfWidth - 25));
noReds.y = 310;
noReds.visible = false;
textContainer.addChild(noReds);
helpers.setTimeout(fadeIn, time, noReds, 1000);
helpers.setTimeout(fadeOut, (time + 1500), noReds, 1000);
time = (time + 3000);
};
var medalNumber:int;
var percentShapes:Number = Math.round(((100 * shapeCount) / totalShapeCount));
if (percentShapes > 30){
if (percentShapes > 75){
medalNumber = 4;
medalName = "Platinum";
} else {
if (percentShapes > 60){
medalNumber = 3;
medalName = "Gold";
} else {
if (percentShapes > 40){
medalNumber = 2;
medalName = "Silver";
} else {
medalNumber = 1;
medalName = "Bronze";
};
};
};
helpers.setTimeout(showText, time, "Congratulations!", 3000, 16777164, NaN, 150, 150);
helpers.setTimeout(showText, time, (("You collected " + percentShapes) + "% of the shapes"), 3000, 16777164, NaN, 200, 200);
medal = getMedal(medalNumber);
if (medal != null){
medal.width = 33.3;
medal.height = 50;
medal.x = Math.floor(((stage.stageWidth - 33.3) / 2));
medal.y = 260;
medal.visible = false;
textContainer.addChild(medal);
helpers.setTimeout(fadeIn, time, medal, 1000);
helpers.setTimeout(fadeOut, (time + 2500), medal, 1000);
};
time = (time + 4000);
};
if (loaderInfo.url.match("kongregate.com")){
kongregateAPI.stats.submit("HighScore", score);
kongregateAPI.stats.submit(("HighScore-" + songTitles[songIndex]), score);
};
unlockLevel++;
if (unlockLevel < 4){
songIndex = ((unlockLevel - 1) % songTitles.length);
shapeSet = shapeSets[(unlockLevel - 1)];
initShapeSet();
pattern = patterns[(unlockLevel - 1)];
rotationType = rotationTypes[(unlockLevel - 1)];
helpers.setTimeout(showText, time, "You unlocked more options!", 3000, 16777164, NaN, 80, 80, 40, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Song:", 3000, 16777164, 200, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Shape Set:", 3000, 16777164, 148, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Pattern:", 3000, 16777164, 170, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Motion:", 3000, 16777164, 175, 300, 300, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, songTitles[songIndex], 3000, 0xCCCCCC, 320, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, shapeSet, 3000, 0xCCCCCC, 320, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, pattern, 3000, 0xCCCCCC, 320, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, rotationType, 3000, 0xCCCCCC, 320, 300, 300, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "Continue", 1000, 0xFFFFFF, NaN, 370, 370, 40, playGame);
helpers.setTimeout(showText, time, "Change Options", 1000, 0xFFFFFF, NaN, 450, 450, 20, showMainMenu);
saveUserData();
} else {
if (unlockLevel == 4){
songIndex = 0;
shapeSet = shapeSets[(unlockLevel - 1)];
initShapeSet();
pattern = patterns[(unlockLevel - 1)];
rotationType = rotationTypes[(unlockLevel - 1)];
helpers.setTimeout(showText, time, "You unlocked more options!", 3000, 16777164, NaN, 80, 80, 40, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Shape Set:", 3000, 16777164, 148, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Pattern:", 3000, 16777164, 170, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Motion:", 3000, 16777164, 175, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, shapeSet, 3000, 0xCCCCCC, 320, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, pattern, 3000, 0xCCCCCC, 320, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, rotationType, 3000, 0xCCCCCC, 320, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "Continue", 1000, 0xFFFFFF, NaN, 320, 320, 40, playGame);
helpers.setTimeout(showText, time, "Change Options", 1000, 0xFFFFFF, NaN, 400, 400, 20, showMainMenu);
saveUserData();
} else {
if (unlockLevel == 5){
songIndex = 1;
shapeSet = shapeSets[(unlockLevel - 1)];
initShapeSet();
pattern = patterns[(unlockLevel - 1)];
rotationType = rotationTypes[(unlockLevel - 1)];
helpers.setTimeout(showText, time, "You unlocked more options!", 3000, 16777164, NaN, 80, 80, 40, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Shape Set:", 3000, 16777164, 148, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Pattern:", 3000, 16777164, 170, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Motion:", 3000, 16777164, 175, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, shapeSet, 3000, 0xCCCCCC, 320, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, pattern, 3000, 0xCCCCCC, 320, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, rotationType, 3000, 0xCCCCCC, 320, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "Continue", 1000, 0xFFFFFF, NaN, 370, 370, 40, playGame);
helpers.setTimeout(showText, time, "Change Options", 1000, 0xFFFFFF, NaN, 450, 450, 20, showMainMenu);
saveUserData();
} else {
if (unlockLevel == 6){
if (loaderInfo.url.match("kongregate.com")){
kongregateAPI.stats.submit("GameCompleted", 1);
};
songIndex = 2;
shapeSet = shapeSets[0];
initShapeSet();
pattern = patterns[0];
rotationType = rotationTypes[0];
randomizeType = randomizeTypes[0];
helpers.setTimeout(showText, time, "All options are now unlocked!", 3000, 16777164, NaN, 80, 80, 40, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Song:", 3000, 16777164, 200, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Randomize:", 3000, 16777164, 143, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, "New Randomize:", 3000, 16777164, 143, 250, 250, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, songTitles[(songTitles.length - 1)], 3000, 0xCCCCCC, 320, 150, 150, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, randomizeTypes[1], 3000, 0xCCCCCC, 320, 200, 200, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, randomizeTypes[2], 3000, 0xCCCCCC, 320, 250, 250, 25, null, stateCounter, true);
if (allowsFullScreen){
helpers.setTimeout(showText, time, "New Display Type:", 3000, 16777164, 115, 300, 300, 25, null, stateCounter, true);
helpers.setTimeout(showText, time, displayTypes[1], 3000, 0xCCCCCC, 320, 300, 300, 25, null, stateCounter, true);
};
helpers.setTimeout(showText, time, "Choose Options", 1000, 0xFFFFFF, NaN, 370, 370, 40, showMainMenu);
unlockLevel = 100;
saveUserData();
} else {
helpers.setTimeout(showText, time, "Play Again", 1000, 0xFFFFFF, NaN, 200, 200, 40, playGame);
helpers.setTimeout(showText, time, "Change Options", 1000, 0xFFFFFF, NaN, 270, 270, 20, showMainMenu);
};
};
};
};
if (unlockLevel >= 100){
unlockLevel = 100;
};
helpers.setTimeout(function ():void{
songName.visible = false;
}, time);
purplePowerCount = 0;
yellowMadnessCount = 0;
powerUpCount = 0;
powerDownCount = 0;
shapeCount = 0;
totalShapeCount = 0;
progressBar.graphics.clear();
progressBar.visible = false;
reflexiveAPI.submitScore(score);
}
private function startGame(_arg1:MouseEvent):void{
clearText();
stateCounter++;
stage.focus = stage;
if (!songLoaded){
if (title.visible){
showMainMenu();
} else {
helpers.setTimeout(startGame, 500, _arg1);
};
return;
};
if ((((song.substr(0, 5) == "http:")) || ((s.bytesTotal == 0)))){
badSong();
return;
};
mainMenu.visible = false;
pause.visible = true;
songName.visible = true;
scoreText.visible = true;
scoreName.visible = true;
progressBar.visible = true;
powerDownTime = 0;
suction = 0;
highlightCursor(false);
volumePoints = [];
sc = s.play(0, 0);
sc.addEventListener(Event.SOUND_COMPLETE, endGame);
}
private function getRandomShape():String{
var _local1:Array;
if (shapeSet == "Random"){
activeShapeSet = getRandomShapeSet();
};
if (activeShapeSet == "Sky"){
_local1 = ["star1", "star2", "lightning", "snowflake", "moon"];
} else {
if (activeShapeSet == "Abstract"){
_local1 = ["circle", "heart", "square", "triangle", "spade", "clover", "plus", "butterfly", "asterix", "wreath"];
} else {
if (activeShapeSet == "Music"){
_local1 = ["twoEighths", "twoEighths", "twoEighths", "twoEighths", "eighthNote", "eighthNote", "eighthNote", "sixteenthNote", "sixteenthNote", "bass", "treble", "treble", "treble", "treble", "flat"];
} else {
if (activeShapeSet == "Floral"){
_local1 = ["floral1", "floral2", "floral3", "floral4", "floral5"];
};
};
};
};
return (_local1[Math.floor((Math.random() * _local1.length))]);
}
private function updateCursor():void{
cursor.updateCursor(cursorSize, ("x" + combo.toString()));
}
private function selectSongURL(_arg1:MouseEvent):void{
var link:Sprite;
var e = _arg1;
playSelectSound();
if (e.target != null){
link = Sprite(e.target);
if (((!((helperParams[link.name] == null))) && (!((helperParams[link.name][0] == null))))){
songIndex = 3;
songFile = helperParams[link.name][0];
if (songFile == ""){
showSelectURL();
return;
};
if (songFile == "url"){
songFile = songURL.text;
};
gameArea.mouseChildren = false;
textContainer.mouseChildren = false;
fadeOut(gameArea, 1500);
fadeOut(textContainer, 1500);
helpers.setTimeout(function (_arg1:int, _arg2:String):void{
if (_arg1 == stateCounter){
loadSongFile(songIndex, _arg2);
continuePlayGame();
};
}, 2000, stateCounter, songFile);
};
};
}
private function loadExternalSong(_arg1:String):void{
var request:URLRequest;
var file = _arg1;
file = ("http://" + file.replace(/^[^:]*:\/\//, ""));
songFile = file;
maxLoaded = 0;
song = getSongName(songFile);
songName.text = "Loading... 0%";
try {
s = new Sound();
s.addEventListener(Event.ID3, id3Handler);
s.addEventListener(Event.COMPLETE, songLoadComplete);
s.addEventListener(ProgressEvent.PROGRESS, songLoadProgress);
s.addEventListener(IOErrorEvent.IO_ERROR, songLoadError);
request = new URLRequest(((proxyURL + "?url=") + encodeURIComponent(songFile)));
request.data = new URLVariables("MusicCatch=1");
request.method = URLRequestMethod.POST;
s.load(request, new SoundLoaderContext(1000, true));
} catch(e:Error) {
badSong();
};
}
private function playHoverSound(_arg1:MouseEvent=null):void{
var _local2:Sound = new buttonSound2Class();
_local2.play(0, 1, new SoundTransform(0.5));
}
private function onButtonMouseOut(_arg1:MouseEvent):void{
var _local2:int;
var _local3:Sprite = Sprite(_arg1.target);
if (helperParams[_local3.name] != null){
if (helperParams[_local3.name][(helperParams[_local3.name].length - 1)] != null){
_local2 = helperParams[_local3.name][(helperParams[_local3.name].length - 1)];
};
};
var _local4:Number = (_local2 / 4);
_local3.graphics.clear();
_local3.graphics.beginFill(0xFFFFFF, 0.2);
_local3.graphics.drawRoundRect(-(_local4), -(_local4), (_local3.width + (_local4 * 2)), (_local3.height + (_local4 * 2)), 10, 10);
}
private function fadeOutShape(_arg1:RainDrop):void{
_arg1.type = "collected";
fadeOut(_arg1, 300);
}
private function playSelectSound(_arg1:MouseEvent=null):void{
var _local2:Sound = new buttonSound1Class();
_local2.play(0, 1, new SoundTransform(0.5));
}
private function clearPause(_arg1:MouseEvent):void{
clearText();
highlightCursor(false);
pause.visible = true;
sc = s.play(position, 0);
sc.addEventListener(Event.SOUND_COMPLETE, endGame);
stage.focus = stage;
}
private function id3Handler(_arg1:Event):void{
var _local2:Sound = Sound(_arg1.target);
_local2.removeEventListener(Event.ID3, id3Handler);
var _local3:ID3Info = ID3Info(_local2.id3);
song = "";
if ((((((_local3 == null)) || ((_local3.songName == null)))) || ((_local3.songName == "")))){
song = getSongName(songFile);
} else {
song = _local3.songName.replace(/\.mp3$/i, "");
};
if (((((!((_local3 == null))) && (!((_local3.artist == null))))) && (!((_local3.artist == ""))))){
song = (song + (" - " + _local3.artist));
};
}
public function cursorHide(_arg1:Event):void{
cursor.visible = false;
}
private function showText(_arg1:String, _arg2:int, _arg3:int=0xFFFFFF, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN, _arg7:int=40, _arg8:Function=null, _arg9:Number=NaN, _arg10:Boolean=false, _arg11:Array=null, _arg12:Boolean=false, _arg13:Boolean=false, _arg14:int=0xFFFFFF, _arg15:Boolean=true):Sprite{
var padding:Number;
var text = _arg1;
var duration = _arg2;
var color = _arg3;
var xPos = _arg4;
var yPos = _arg5;
var startYPos = _arg6;
var fontSize = _arg7;
var clickCallback = _arg8;
var state = _arg9;
var keepAround = _arg10;
var params = _arg11;
var showButton = _arg12;
var buttonSelected = _arg13;
var highlightColor = _arg14;
var playSound = _arg15;
if (((!(isNaN(state))) && (!((state == stateCounter))))){
return (null);
};
var frames:int = int(((duration / 1000) * stage.frameRate));
var wrapper:Sprite = new Sprite();
var msg:TextField = new TextField();
msg.autoSize = "left";
msg.defaultTextFormat = new TextFormat("MyFont", fontSize, color);
msg.text = text;
msg.embedFonts = true;
msg.antiAliasType = "advanced";
msg.selectable = false;
msg.filters = [new GlowFilter(color, 0.5, 20, 20, 1.5, 1, false, false)];
wrapper.alpha = 0;
wrapper.addChild(msg);
if (isNaN(xPos)){
xPos = Math.floor(((stage.stageWidth - wrapper.width) / 2));
};
if (isNaN(yPos)){
yPos = Math.floor(((stage.stageHeight - wrapper.height) / 2));
};
if (isNaN(startYPos)){
startYPos = Math.floor(((stage.stageHeight - wrapper.height) / 2));
};
wrapper.x = xPos;
wrapper.y = startYPos;
textContainer.addChild(wrapper);
var objTimeline:Timeline = new Timeline(RenderMethod.ENTER_FRAME);
if (showButton){
padding = (fontSize / 4);
if (buttonSelected){
if (params == null){
params = [];
};
params.push(highlightColor);
params.push(fontSize);
wrapper.graphics.beginFill(0xFFFFFF, 0.4);
wrapper.graphics.lineStyle(2, 0xFFFFFF, 0.6, true);
wrapper.graphics.drawRoundRect(-(padding), -(padding), (wrapper.width + (padding * 2)), (wrapper.height + (padding * 2)), 10, 10);
} else {
if (params == null){
params = [];
};
params.push(highlightColor);
params.push(fontSize);
wrapper.graphics.beginFill(0xFFFFFF, 0.2);
wrapper.graphics.drawRoundRect(-(padding), -(padding), (wrapper.width + (padding * 2)), (wrapper.height + (padding * 2)), 10, 10);
if (((!((clickCallback == null))) && (playSound))){
wrapper.addEventListener(MouseEvent.MOUSE_OVER, onButtonMouseOver);
wrapper.addEventListener(MouseEvent.MOUSE_OUT, onButtonMouseOut);
};
};
};
if (clickCallback != null){
wrapper.mouseChildren = false;
wrapper.addEventListener(MouseEvent.CLICK, clickCallback);
wrapper.addEventListener(MouseEvent.MOUSE_OVER, function ():void{
highlightCursor(true);
});
wrapper.addEventListener(MouseEvent.MOUSE_OUT, function ():void{
highlightCursor(false);
});
if (((!(showButton)) && (playSound))){
wrapper.addEventListener(MouseEvent.MOUSE_OVER, playHoverSound);
};
};
if (((!((clickCallback == null))) || (keepAround))){
objTimeline.addTween(new Tween(wrapper, "alpha", 1, 0, frames, Transitions.CUBIC_OUT));
objTimeline.addTween(new Tween(wrapper, "y", yPos, 0, frames, Transitions.ELASTIC_OUT));
} else {
objTimeline.addTween(new Tween(wrapper, "alpha", 1, 0, int((frames / 2)), Transitions.CUBIC_OUT));
objTimeline.addTween(new Tween(wrapper, "y", yPos, 0, int((frames / 2)), Transitions.ELASTIC_OUT));
objTimeline.addTween(new Tween(wrapper, "alpha", 0, int((frames / 2)), frames, Transitions.CUBIC_IN));
objTimeline.addTween(new Tween(wrapper, "y", stage.stageHeight, int((frames / 2)), frames, Transitions.ELASTIC_IN));
objTimeline.addTween(new Action(textContainer.removeChild, [wrapper], null, [], (frames + 1)));
};
objTimeline.play();
if (params != null){
helperParams[wrapper.name] = params;
};
return (wrapper);
}
private function reportKeyDown(_arg1:KeyboardEvent):void{
if (((!(allowCheating)) && ((_arg1.charCode == cheatUnlockCode.charCodeAt(cheatUnlockIndex))))){
cheatUnlockIndex++;
if (cheatUnlockIndex >= cheatUnlockCode.length){
allowCheating = true;
};
} else {
cheatUnlockIndex = 0;
};
if ((((((((_arg1.charCode == 80)) || ((_arg1.charCode == 112)))) || ((_arg1.charCode == 27)))) || ((_arg1.charCode == 32)))){
showPause();
};
if (((title.visible) && (allowCheating))){
if (_arg1.charCode == 48){
cheatLotsOfShapes = !(cheatLotsOfShapes);
} else {
if (_arg1.charCode == 49){
unlockLevel = 1;
saveUserData();
showMainMenu();
} else {
if (_arg1.charCode == 50){
unlockLevel = 2;
saveUserData();
showMainMenu();
} else {
if (_arg1.charCode == 51){
unlockLevel = 3;
saveUserData();
showMainMenu();
} else {
if (_arg1.charCode == 52){
unlockLevel = 4;
saveUserData();
showMainMenu();
} else {
if (_arg1.charCode == 53){
unlockLevel = 5;
saveUserData();
showMainMenu();
} else {
if (_arg1.charCode == 54){
unlockLevel = 100;
saveUserData();
showMainMenu();
};
};
};
};
};
};
};
};
if (allowCheating){
if (_arg1.charCode == 43){
reloadMusicFromError(true);
} else {
if (_arg1.charCode == 102){
skipFadeOut = !(skipFadeOut);
if (skipFadeOut){
playSelectSound();
};
} else {
if (_arg1.charCode == 103){
skipGarbage = !(skipGarbage);
if (skipGarbage){
playSelectSound();
};
} else {
if (_arg1.charCode == 112){
skipPulse = !(skipPulse);
if (skipPulse){
playSelectSound();
};
} else {
if (_arg1.charCode == 97){
combo = (combo + 10);
cursor.pulseGood();
setCursorSize();
};
};
};
};
};
};
}
public function xShearAroundExternalPoint(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number):void{
_arg1.translate(-(_arg2), -(_arg3));
var _local5:Matrix = new Matrix();
_local5.c = Math.tan(_arg4);
_arg1.concat(_local5);
_arg1.translate(_arg2, _arg3);
}
private function reloadMusicFromError(_arg1:Boolean=false):void{
var fastFoward = _arg1;
if (pause.visible){
position = sc.position;
if (fastFoward){
position = (position + 1000);
};
try {
sc.stop();
loadSongFile(songIndex);
sc = s.play(position, 0);
sc.addEventListener(Event.SOUND_COMPLETE, endGame);
} catch(e:Error) {
badSong();
};
};
}
private function getRandomShapeSet():String{
var _local1:Array = ["Sky", "Music", "Abstract", "Floral"];
return (_local1[Math.floor((Math.random() * _local1.length))]);
}
private function clearGame():void{
if (sc != null){
sc.stop();
};
clearPlayArea();
frameCount = 0;
}
private function collectRainDrop(_arg1:RainDrop):void{
var textList:Array;
var yPos:Number;
var rd = _arg1;
var amount:Number = Math.max(1, (maxRadius - rd.size));
if (rd.type == "powerUp"){
powerUpCount++;
combo++;
if (combo > maxCombo){
maxCombo = combo;
};
if (!skipPulse){
cursor.pulseGood();
};
setCursorSize();
if (!rd.recycled){
textList = ["Yeah!", "Great!", "Good job!", "Super!", "Woohoo!", "Fabulous!", "Excellent!", "Wow!", "Amazing!", "Superb!", "Terrific!", "Fantastic!", "Splendid!", "Wonderful!", "Yes!", "Unbelievable!", "Outstanding!", "Remarkable!", "Woot!"];
yPos = (100 + (Math.random() * 200));
showText(textList[Math.floor((Math.random() * textList.length))], 500, 0xCCCC00, 50, yPos, (yPos + 50), 30);
};
} else {
if (rd.type == "powerDown"){
powerDownCount++;
combo = Math.ceil((combo / 2));
if (!skipPulse){
cursor.pulseBad();
};
setCursorSize();
if (!rd.recycled){
textList = ["Oops!", "Uh oh!", "Ouch!", "Oh no!", "Zowee!", "Yikes!", "Bummer!", "Shucks!", "Too bad!", "Zing!", "Kapow!"];
yPos = (100 + (Math.random() * 200));
showText(textList[Math.floor((Math.random() * textList.length))], 500, 0xCC0000, (stage.stageWidth - 200), yPos, (yPos + 50), 30);
};
powerDownTime = 60;
} else {
if (rd.type == "suction"){
purplePowerCount++;
if (!skipPulse){
cursor.pulseSuction();
};
showText("Purple Power!", 2000, 0xFF00FF, NaN, 50, NaN, 30);
suction = 100;
} else {
if (rd.type == "yellowMadness"){
yellowMadnessCount++;
if (!skipPulse){
cursor.pulseSuction();
};
showText("Yellow Madness!", 2000, 0xFFFF00, NaN, 90, NaN, 30);
} else {
if (!skipPulse){
cursor.pulseNormal();
};
if (skipFadeOut){
rd.parent.removeChild(rd);
} else {
fadeOutShape(rd);
};
};
};
};
};
shapeCount++;
addToScore((amount * combo));
try {
if (rd.type != "collected"){
rd.parent.removeChild(rd);
};
} catch(e:Error) {
};
}
private function songLoadComplete(_arg1:Event):void{
var _local2:int;
songLoaded = true;
s.removeEventListener(Event.COMPLETE, songLoadComplete);
s.removeEventListener(ProgressEvent.PROGRESS, songLoadProgress);
songTitle.text = song;
songName.text = song;
if (song.substr(0, 5) == "http:"){
badSong();
return;
};
_local2 = 0;
while (_local2 < recentList.length) {
if (recentList[_local2]["name"] == song){
recentList.splice(_local2, 1);
break;
};
_local2++;
};
recentList.unshift({name:song, file:songFile});
recentList = recentList.slice(0, 10);
saveUserData();
}
}
}//package
Section 57
//MusicCatch2_bronzeClass (MusicCatch2_bronzeClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_bronzeClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_bronzeClass(){
dataClass = MusicCatch2_bronzeClass_dataClass;
super();
initialWidth = (1200 / 20);
initialHeight = (1800 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 58
//MusicCatch2_bronzeClass_dataClass (MusicCatch2_bronzeClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_bronzeClass_dataClass extends ByteArrayAsset {
}
}//package
Section 59
//MusicCatch2_buttonSound1Class (MusicCatch2_buttonSound1Class)
package {
import mx.core.*;
public class MusicCatch2_buttonSound1Class extends SoundAsset {
}
}//package
Section 60
//MusicCatch2_buttonSound2Class (MusicCatch2_buttonSound2Class)
package {
import mx.core.*;
public class MusicCatch2_buttonSound2Class extends SoundAsset {
}
}//package
Section 61
//MusicCatch2_goldClass (MusicCatch2_goldClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_goldClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_goldClass(){
dataClass = MusicCatch2_goldClass_dataClass;
super();
initialWidth = (1200 / 20);
initialHeight = (1800 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 62
//MusicCatch2_goldClass_dataClass (MusicCatch2_goldClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_goldClass_dataClass extends ByteArrayAsset {
}
}//package
Section 63
//MusicCatch2_introMovieClass (MusicCatch2_introMovieClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_introMovieClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_introMovieClass(){
dataClass = MusicCatch2_introMovieClass_dataClass;
super();
initialWidth = (10660 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 64
//MusicCatch2_introMovieClass_dataClass (MusicCatch2_introMovieClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_introMovieClass_dataClass extends ByteArrayAsset {
}
}//package
Section 65
//MusicCatch2_music1Class (MusicCatch2_music1Class)
package {
import mx.core.*;
public class MusicCatch2_music1Class extends SoundAsset {
}
}//package
Section 66
//MusicCatch2_music2Class (MusicCatch2_music2Class)
package {
import mx.core.*;
public class MusicCatch2_music2Class extends SoundAsset {
}
}//package
Section 67
//MusicCatch2_music3Class (MusicCatch2_music3Class)
package {
import mx.core.*;
public class MusicCatch2_music3Class extends SoundAsset {
}
}//package
Section 68
//MusicCatch2_myfont (MusicCatch2_myfont)
package {
import mx.core.*;
public class MusicCatch2_myfont extends FontAsset {
}
}//package
Section 69
//MusicCatch2_noRedsClass (MusicCatch2_noRedsClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_noRedsClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_noRedsClass(){
dataClass = MusicCatch2_noRedsClass_dataClass;
super();
initialWidth = (2100 / 20);
initialHeight = (2400 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 70
//MusicCatch2_noRedsClass_dataClass (MusicCatch2_noRedsClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_noRedsClass_dataClass extends ByteArrayAsset {
}
}//package
Section 71
//MusicCatch2_platinumClass (MusicCatch2_platinumClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_platinumClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_platinumClass(){
dataClass = MusicCatch2_platinumClass_dataClass;
super();
initialWidth = (1200 / 20);
initialHeight = (1800 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 72
//MusicCatch2_platinumClass_dataClass (MusicCatch2_platinumClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_platinumClass_dataClass extends ByteArrayAsset {
}
}//package
Section 73
//MusicCatch2_silverClass (MusicCatch2_silverClass)
package {
import mx.core.*;
import flash.utils.*;
public class MusicCatch2_silverClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function MusicCatch2_silverClass(){
dataClass = MusicCatch2_silverClass_dataClass;
super();
initialWidth = (1600 / 20);
initialHeight = (2520 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 74
//MusicCatch2_silverClass_dataClass (MusicCatch2_silverClass_dataClass)
package {
import mx.core.*;
public class MusicCatch2_silverClass_dataClass extends ByteArrayAsset {
}
}//package
Section 75
//Preloader (Preloader)
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public dynamic class Preloader extends MovieClip {
private var realHeight:int;// = 600
private var realWidth:int;// = 600
private var logo:Bitmap;
private var gameName:String;// = "MusicCatch2"
private var LogoClass:Class;
private var logoBG:Bitmap;
private var logoHeight:int;// = 68
private var logoMask:Sprite;
private var logoWidth:int;// = 150
public function Preloader(){
LogoClass = Preloader_LogoClass;
super();
stop();
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{
});
MochiBot.track(this, "38e5e6a6");
init();
}
private function start(_arg1:TimerEvent=null):void{
var _local3:DisplayObject;
nextFrame();
var _local2:Class = Class(getDefinitionByName(gameName));
if (_local2){
_local3 = new (_local2);
addChild(_local3);
_local3.dispatchEvent(new Event("Preloader Finished"));
};
}
private function showLoader(_arg1:Number):void{
var _local2:Number = Math.round((logoWidth * _arg1));
logoMask.graphics.clear();
logoMask.graphics.beginFill(0xFFFFFF, 1);
logoMask.graphics.drawRect(0, 39, logoWidth, (logoHeight - 39));
logoMask.graphics.beginFill(0xFFFFFF, 1);
logoMask.graphics.drawRect(0, 0, _local2, 38);
logoMask.graphics.endFill();
}
public function init():void{
logoBG = new LogoClass();
logoBG.alpha = 0.3;
logoBG.x = Math.floor(((realWidth - logoWidth) / 2));
logoBG.y = Math.floor(((realHeight - logoHeight) / 2));
addChild(logoBG);
logoMask = new Sprite();
logoMask.x = Math.floor(((realWidth - logoWidth) / 2));
logoMask.y = Math.floor(((realHeight - logoHeight) / 2));
addChild(logoMask);
logo = new LogoClass();
logo.mask = logoMask;
logo.x = Math.floor(((realWidth - logoWidth) / 2));
logo.y = Math.floor(((realHeight - logoHeight) / 2));
addChild(logo);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(_arg1:Event):void{
var _local2:Timer;
var _local3:Number;
graphics.clear();
if (framesLoaded == totalFrames){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
_local2 = new Timer(100, 10);
_local2.addEventListener(TimerEvent.TIMER, fadeOut);
_local2.addEventListener(TimerEvent.TIMER_COMPLETE, start);
_local2.start();
removeChild(logoBG);
} else {
_local3 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
showLoader(_local3);
};
}
private function fadeOut(_arg1:TimerEvent):void{
var _local2:Timer = (_arg1.currentTarget as Timer);
logo.alpha = ((10 - _local2.currentCount) / 10);
}
}
}//package
Section 76
//Preloader_LogoClass (Preloader_LogoClass)
package {
import mx.core.*;
public class Preloader_LogoClass extends BitmapAsset {
}
}//package
Section 77
//RainDrop (RainDrop)
package {
import flash.display.*;
import flash.geom.*;
public class RainDrop extends Sprite {
public var fadeVelocity:Number;// = 0
public var size:Number;
private var stageHeight:Number;
private var defaultRadius:Number;// = 30
private var gravity:Number;
public var pattern:String;
private var scaleFactor:Number;// = 2
public var radius:Number;
private var phase:Number;// = 0
public var maxRadius:Number;
public var shape:String;
public var originalYVelocity:Number;// = 0
private var spiralForce:Number;// = 1
private var stageWidth:Number;
public var originalFadeVelocity:Number;// = 0
public var dead:Boolean;// = false
public var originalCursorX:Number;// = 0
public var originalCursorY:Number;// = 0
public var yVelocity:Number;// = 0
public var recycled:Boolean;// = false
public var type:String;
public function RainDrop(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number){
var _local8:Bitmap;
super();
this.type = _arg1;
this.shape = _arg2;
this.pattern = _arg3;
this.stageWidth = _arg6;
this.stageHeight = _arg7;
this.size = _arg4;
this.maxRadius = _arg5;
radius = (_arg4 * _arg5);
_local8 = new (ShapeAssets[_arg2]);
_local8.x = -30;
_local8.y = -30;
_local8.smoothing = true;
addChild(_local8);
scaleX = 0;
scaleY = 0;
if (_arg3 == "In & Out"){
gravity = -0.2;
} else {
if (_arg3 == "Spiral"){
gravity = -0.15;
} else {
if (_arg3 == "Fixed"){
gravity = -0.1;
} else {
if (_arg3 == "Radar"){
gravity = -0.3;
} else {
gravity = 0.05;
};
};
};
};
phase = Math.random();
spiralForce = ((Math.random() * 10) + 1);
}
public function updateRainDrop():void{
var _local3:Number;
var _local4:int;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local1:Number = (stageWidth / 2);
var _local2:Number = (stageHeight / 2);
if (pattern == "In & Out"){
_local3 = ((originalYVelocity == 0)) ? 1 : (yVelocity / originalYVelocity);
} else {
if ((((((pattern == "Spiral")) || ((pattern == "Fixed")))) || ((pattern == "Radar")))){
_local3 = ((originalFadeVelocity == 0)) ? 1 : (fadeVelocity / originalFadeVelocity);
} else {
_local3 = ((_local2 - y) / _local2);
};
};
_local3 = Math.min(1, Math.max(-1, _local3));
radius = (size * maxRadius);
radius = ((radius / 2) + ((radius / 2) * _local3));
var _local5:Number = 50;
if (type == "powerUp"){
if (((((((!((pattern == "Spiral"))) && (!((pattern == "Fixed"))))) && (!((pattern == "Radar"))))) || ((_local3 > 0)))){
radius = Math.max(5, radius);
};
if ((((((pattern == "In & Out")) && ((_local3 < 0)))) && ((y < _local5)))){
_local4 = ((0x111100 | ((Math.max(0, y) * 3) << 16)) | ((Math.max(0, y) * 3) << 8));
} else {
if (((((!((pattern == "Spiral"))) && (!((pattern == "In & Out"))))) && ((y > (stageHeight - _local5))))){
_local4 = ((0x111100 | ((Math.max(0, (stageHeight - y)) * 3) << 16)) | ((Math.max(0, (stageHeight - y)) * 3) << 8));
} else {
_local4 = 0xDDDD00;
};
};
} else {
if (type == "powerDown"){
if (((((((!((pattern == "Spiral"))) && (!((pattern == "Fixed"))))) && (!((pattern == "Radar"))))) || ((_local3 > 0)))){
radius = Math.max(5, radius);
};
if ((((((pattern == "In & Out")) && ((_local3 < 0)))) && ((y < _local5)))){
_local4 = (0x110000 | ((Math.max(0, y) * 3) << 16));
} else {
if (((((!((pattern == "Spiral"))) && (!((pattern == "In & Out"))))) && ((y > (stageHeight - _local5))))){
_local4 = (0x110000 | ((Math.max(0, (stageHeight - y)) * 3) << 16));
} else {
_local4 = 0xDD0000;
};
};
} else {
if (type == "suction"){
if (((((!((pattern == "Spiral"))) && (!((pattern == "Fixed"))))) && (!((pattern == "Radar"))))){
if (_local3 > 0){
radius = Math.max(5, radius);
};
};
if ((((((pattern == "In & Out")) && ((_local3 < 0)))) && ((y < _local5)))){
_local4 = ((0 | ((Math.max(0, y) * 3) << 16)) | (Math.max(0, y) * 3));
} else {
if (((((!((pattern == "Spiral"))) && (!((pattern == "In & Out"))))) && ((y > (stageHeight - _local5))))){
_local4 = ((0 | ((Math.max(0, (stageHeight - y)) * 3) << 16)) | (Math.max(0, (stageHeight - y)) * 3));
} else {
_local4 = 0xFF00FF;
};
};
} else {
if (type == "yellowMadness"){
if (((((((!((pattern == "Spiral"))) && (!((pattern == "Fixed"))))) && (!((pattern == "Radar"))))) || ((_local3 > 0)))){
radius = Math.max(5, radius);
};
_local4 = (Math.random() * 0xFFFFFF);
} else {
_local4 = ((0x1111 | ((110 + (_local3 * 110)) << 8)) | Math.min(0xFF, (size * 180)));
};
};
};
};
scaleX = (scaleFactor * (radius / defaultRadius));
scaleY = (scaleFactor * (radius / defaultRadius));
if (type != "collected"){
transform.colorTransform = new ColorTransform(0, 0, 0, 1, ((_local4 >> 16) & 0xFF), ((_local4 >> 8) & 0xFF), (_local4 & 0xFF), 0);
};
var _local6:Number = (Math.random() * 3);
if (x < _local1){
rotation = (rotation + _local6);
} else {
rotation = (rotation - _local6);
};
if ((((((pattern == "Spiral")) || ((pattern == "Fixed")))) || ((pattern == "Radar")))){
fadeVelocity = (fadeVelocity + gravity);
} else {
y = (y + yVelocity);
yVelocity = (yVelocity + gravity);
};
if (pattern == "In & Out"){
if (_local3 < 0){
if (x < _local1){
x = (x - (2 * _local3));
} else {
x = (x + (2 * _local3));
};
};
} else {
if (pattern == "Spiral"){
_local7 = (x - _local1);
_local8 = (y - _local2);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local10 = Math.atan2(_local8, _local7);
if (_local9 >= 10){
_local9 = (_local9 - ((_local9 / stageWidth) * spiralForce));
_local10 = (_local10 + 0.03);
x = ((Math.cos(_local10) * _local9) + _local1);
y = ((Math.sin(_local10) * _local9) + _local2);
};
};
};
}
}
}//package
Section 78
//ShapeAssets (ShapeAssets)
package {
public class ShapeAssets {
public static var moon:Class = ShapeAssets_moon;
public static var triangle:Class = ShapeAssets_triangle;
public static var plus:Class = ShapeAssets_plus;
public static var square:Class = ShapeAssets_square;
public static var floral2:Class = ShapeAssets_floral2;
public static var floral3:Class = ShapeAssets_floral3;
public static var floral5:Class = ShapeAssets_floral5;
public static var floral1:Class = ShapeAssets_floral1;
public static var spade:Class = ShapeAssets_spade;
public static var star1:Class = ShapeAssets_star1;
public static var floral4:Class = ShapeAssets_floral4;
public static var asterix:Class = ShapeAssets_asterix;
public static var star2:Class = ShapeAssets_star2;
public static var clover:Class = ShapeAssets_clover;
public static var heart:Class = ShapeAssets_heart;
public static var sixteenthNote:Class = ShapeAssets_sixteenthNote;
public static var eighthNote:Class = ShapeAssets_eighthNote;
public static var circle:Class = ShapeAssets_circle;
public static var lightning:Class = ShapeAssets_lightning;
public static var snowflake:Class = ShapeAssets_snowflake;
public static var treble:Class = ShapeAssets_treble;
public static var bass:Class = ShapeAssets_bass;
public static var wreath:Class = ShapeAssets_wreath;
public static var twoEighths:Class = ShapeAssets_twoEighths;
public static var butterfly:Class = ShapeAssets_butterfly;
public static var flat:Class = ShapeAssets_flat;
}
}//package
Section 79
//ShapeAssets_asterix (ShapeAssets_asterix)
package {
import mx.core.*;
public class ShapeAssets_asterix extends BitmapAsset {
}
}//package
Section 80
//ShapeAssets_bass (ShapeAssets_bass)
package {
import mx.core.*;
public class ShapeAssets_bass extends BitmapAsset {
}
}//package
Section 81
//ShapeAssets_butterfly (ShapeAssets_butterfly)
package {
import mx.core.*;
public class ShapeAssets_butterfly extends BitmapAsset {
}
}//package
Section 82
//ShapeAssets_circle (ShapeAssets_circle)
package {
import mx.core.*;
public class ShapeAssets_circle extends BitmapAsset {
}
}//package
Section 83
//ShapeAssets_clover (ShapeAssets_clover)
package {
import mx.core.*;
public class ShapeAssets_clover extends BitmapAsset {
}
}//package
Section 84
//ShapeAssets_eighthNote (ShapeAssets_eighthNote)
package {
import mx.core.*;
public class ShapeAssets_eighthNote extends BitmapAsset {
}
}//package
Section 85
//ShapeAssets_flat (ShapeAssets_flat)
package {
import mx.core.*;
public class ShapeAssets_flat extends BitmapAsset {
}
}//package
Section 86
//ShapeAssets_floral1 (ShapeAssets_floral1)
package {
import mx.core.*;
public class ShapeAssets_floral1 extends BitmapAsset {
}
}//package
Section 87
//ShapeAssets_floral2 (ShapeAssets_floral2)
package {
import mx.core.*;
public class ShapeAssets_floral2 extends BitmapAsset {
}
}//package
Section 88
//ShapeAssets_floral3 (ShapeAssets_floral3)
package {
import mx.core.*;
public class ShapeAssets_floral3 extends BitmapAsset {
}
}//package
Section 89
//ShapeAssets_floral4 (ShapeAssets_floral4)
package {
import mx.core.*;
public class ShapeAssets_floral4 extends BitmapAsset {
}
}//package
Section 90
//ShapeAssets_floral5 (ShapeAssets_floral5)
package {
import mx.core.*;
public class ShapeAssets_floral5 extends BitmapAsset {
}
}//package
Section 91
//ShapeAssets_heart (ShapeAssets_heart)
package {
import mx.core.*;
public class ShapeAssets_heart extends BitmapAsset {
}
}//package
Section 92
//ShapeAssets_lightning (ShapeAssets_lightning)
package {
import mx.core.*;
public class ShapeAssets_lightning extends BitmapAsset {
}
}//package
Section 93
//ShapeAssets_moon (ShapeAssets_moon)
package {
import mx.core.*;
public class ShapeAssets_moon extends BitmapAsset {
}
}//package
Section 94
//ShapeAssets_plus (ShapeAssets_plus)
package {
import mx.core.*;
public class ShapeAssets_plus extends BitmapAsset {
}
}//package
Section 95
//ShapeAssets_sixteenthNote (ShapeAssets_sixteenthNote)
package {
import mx.core.*;
public class ShapeAssets_sixteenthNote extends BitmapAsset {
}
}//package
Section 96
//ShapeAssets_snowflake (ShapeAssets_snowflake)
package {
import mx.core.*;
public class ShapeAssets_snowflake extends BitmapAsset {
}
}//package
Section 97
//ShapeAssets_spade (ShapeAssets_spade)
package {
import mx.core.*;
public class ShapeAssets_spade extends BitmapAsset {
}
}//package
Section 98
//ShapeAssets_square (ShapeAssets_square)
package {
import mx.core.*;
public class ShapeAssets_square extends BitmapAsset {
}
}//package
Section 99
//ShapeAssets_star1 (ShapeAssets_star1)
package {
import mx.core.*;
public class ShapeAssets_star1 extends BitmapAsset {
}
}//package
Section 100
//ShapeAssets_star2 (ShapeAssets_star2)
package {
import mx.core.*;
public class ShapeAssets_star2 extends BitmapAsset {
}
}//package
Section 101
//ShapeAssets_treble (ShapeAssets_treble)
package {
import mx.core.*;
public class ShapeAssets_treble extends BitmapAsset {
}
}//package
Section 102
//ShapeAssets_triangle (ShapeAssets_triangle)
package {
import mx.core.*;
public class ShapeAssets_triangle extends BitmapAsset {
}
}//package
Section 103
//ShapeAssets_twoEighths (ShapeAssets_twoEighths)
package {
import mx.core.*;
public class ShapeAssets_twoEighths extends BitmapAsset {
}
}//package
Section 104
//ShapeAssets_wreath (ShapeAssets_wreath)
package {
import mx.core.*;
public class ShapeAssets_wreath extends BitmapAsset {
}
}//package