Section 1
//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 2
//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 3
//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 4
//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 5
//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 6
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 7
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 8
//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 9
//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 10
//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 11
//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 12
//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 13
//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 14
//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 15
//Bouncer (Bouncer)
package {
import flash.geom.*;
public class Bouncer {
public var positions:Array;
public var hitTimes:Array;
public var lastPoint:Point;
public var color:int;
public var startTime:int;
public function Bouncer(){
hitTimes = new Array();
positions = new Array();
super();
}
}
}//package
Section 16
//BouncerSprite (BouncerSprite)
package {
import flash.geom.*;
public class BouncerSprite {
public var point:Point;
public var easingFactor:Number;
public var color:int;
public var scale:Number;
}
}//package
Section 17
//ComboField (ComboField)
package {
import flash.text.*;
public class ComboField extends TextField {
private var formatter:TextFormat;
public function ComboField(){
formatter = new TextFormat();
super();
formatter.color = 0xFFFFFF;
formatter.font = "Arial";
formatter.size = 14;
formatter.align = TextFormatAlign.LEFT;
update(0);
}
public function update(_arg1:int):void{
text = ("Max Combo: " + _arg1);
setTextFormat(formatter);
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
textColor = 0xFFFFFF;
x = ((590 - width) / 2);
}
}
}//package
Section 18
//FlexGame (FlexGame)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import mx.core.*;
import flash.utils.*;
import flash.text.*;
import flash.net.*;
public class FlexGame extends Sprite {
private const codeQ:int = 81;
private const doubleWidthPercent:Number = 0.9;
private const msPerFrame:int;
private const minHeight:Number = 138.5;
private const powerMaxY:Number = 490;
private const paddleWidthPercent:Number = 0.8;
private const paddleY:Number = 554;
private const powerMaxX:Number = 30;
private const codeRight:int = 39;
private const pausePowerMax:int = 30;
private const powerAuto:int = 6;
private const powerClear:int = 7;
private const powerTypes:Array;
private const powerScore:int = 4;
private const powerSlow:int = 2;
private const powerSize:int = 12;
private const bouncerHeight:Number = 10;
private const powerBorderWidth:Number = 5;
private const powerTextColor:uint = 0xFFFFFF;
private const codeEscape:int = 27;
private const backgroundColor:uint = 0;
private const powerFix:int = 1;
private const powerColors:Array;
private const livesMax:int = 45;
private const fps:int = 30;
private const demoHeight:Number = 138.5;
private const powerMinX:Number = 10;
private const powerMinY:Number = 100;
private const bouncerColors:Array;
private const bouncerWidth:Number = 10;
private const powerBorders:Array;
private const plusFieldMaxX:Number = 50;
private const plusFieldMaxY:Number = 25;
private const codeSpace:int = 32;
private const barHeight:Number = 3;
private const paddleHeight:Number = 8;
private const barLifeMax:Number = 300;
private const maxAir:int = 90;
private const powerDouble:int = 0;
private const minEase:Number = 0.5;
private const barColors:Array;
private const demoDelay:int = 3;
private const stageWidth:int = 590;
private const maxEase:Number = 0.9;
private const barWidth:int;
private const paddleColors:Array;
private const powerLevel:int = 5;
private const missColors:Array;
private const minAir:int = 60;
private const codeLeft:int = 37;
private const changeGapSmall:int = 300;
private const livesStart:int = 3;
private const demoWidth:Number = 40;
private const powerLife:int = 3;
private const maxHeight:Number = 554;
private const stageHeight:int = 590;
private const counterMax:int = 30000;
private const powerOdds:Number = 0.00333333333333333;
private const changeGapLarge:int = 1800;
private const lifeRectangle:Rectangle;
private const plusFieldMinX:Number = 25;
private const plusFieldMinY:Number = 10;
private const ddy:Number = 0.5;
private var bouncerBitmapData:Array;
private var bouncerSprites:Array;
private var sfxButton:SfxButton;
private var comboField:ComboField;
private var powerSide:Number;
private var portionWidth:Number;
private var playGameButton:Sprite;
private var playing:Boolean;
private var rightIsDown:Boolean;// = false
private var paddleColor:int;// = 0
private var platformRectangle:Rectangle;
private var gapCounter:int;// = 0
private var autoPilot:Boolean;// = false
private var logoSprite:Sprite;
private var scoreFieldAdded:Boolean;// = false
private var gaps:Array;
private var elapsedTime:int;
private var introClass:Class;
private var hasFocus:Boolean;// = true
private var doubleWidth:Number;
private var powerBitmapData:Array;
private var paddleWidth:Number;
private var lastTime:int;
private var getMoreGamesButton:Sprite;
private var thisTime:int;
private var logoClass:Class;
private var maxCombo:int;// = 0
private var paddleBitmapData:Array;
private var demoCounter:int;// = 3
private var doublePaddle:Boolean;// = false
private var currentGap:int;// = 0
private var doubleRectangle:Rectangle;
private var score:int;
private var pausePower:int;// = 0
private var paddlePosition:int;
private var logoDisplayObject:DisplayObject;
private var qIsDown:Boolean;// = false
private var platformFrame:int;
private var bouncers:Array;
private var platformPosition:int;
private var escapeIsDown:Boolean;// = false
private var paddlePoints:Array;
private var plusFields:Array;
private var backgroundPoint:Point;
private var changeGap:int;
private var lives:int;
private var ticker:Ticker;
private var currentPower:int;
private var dBar:int;// = 1
private var stageBitmapData:BitmapData;
private var paddleRectangle:Rectangle;
private var leftWasDown:Boolean;// = false
private var minGap:int;
private var platformPoints:Array;
private var skipper:int;// = 0
private var barPoint:Point;
private var spaceWasDown:Boolean;// = false
private var backgroundBitmapData:BitmapData;
private var escapeWasDown:Boolean;// = false
private var barFrame:int;// = 0
private var rightWasDown:Boolean;// = false
private var movingLeft:Boolean;// = false
private var skip:int;// = 1
private var scoreField:ScoreField;
private var qWasDown:Boolean;// = false
private var level:int;
private var pelLogo:Sprite;
private var spaceIsDown:Boolean;// = false
private var introMovieClip:MovieClipLoaderAsset;
private var missBitmapData:Array;
private var powerNext:Boolean;// = false
private var currentCombo:int;
private var barLife:int;
private var missSprites:Array;
private var lastDirection:int;
private var running:Boolean;// = true
private var multiplier:int;// = 1
private var mouseClicked:Boolean;// = false
private var gameUpdatesButton:Sprite;
private var stageBitmap:Bitmap;
private var leftIsDown:Boolean;// = false
private var backgroundRectangle:Rectangle;
private var numPaddles:int;
private var powerRectangle:Rectangle;
private var barBitmapData:Array;
private var plusText:String;
private var powerUps:Array;
private var counter:int;// = 0
public function FlexGame(){
introClass = FlexGame_introClass;
introMovieClip = MovieClipLoaderAsset(new introClass());
logoClass = FlexGame_logoClass;
logoDisplayObject = new logoClass();
paddleColors = [0x888888, 0x999999, 0xAAAAAA, 0xBBBBBB, 0xCCCCCC, 0xDDDDDD, 0xEEEEEE, 0xFFFFFF];
missColors = [0xFF0000, 0xDD0000, 0xBB0000, 0x990000, 0x770000, 0x550000, 0x330000, 0x110000];
bouncerColors = [16744576, 8454016, 8421631, 16777088, 16744703, 8454143, 0xFFFFFF];
msPerFrame = Math.ceil((1000 / fps));
stageBitmapData = new BitmapData(stageWidth, stageHeight, false, 0);
stageBitmap = new Bitmap(stageBitmapData);
backgroundRectangle = new Rectangle(0, 0, stageWidth, stageHeight);
backgroundPoint = new Point(0, 0);
backgroundBitmapData = new BitmapData(stageWidth, stageHeight, false, backgroundColor);
paddleBitmapData = new Array();
bouncerBitmapData = new Array();
missBitmapData = new Array();
bouncers = new Array();
bouncerSprites = new Array();
missSprites = new Array();
gaps = [90, 60, 45, 30, 22, 20, 18, 15, 12, 10];
scoreField = new ScoreField();
plusFields = new Array();
comboField = new ComboField();
ticker = new Ticker(stageHeight);
sfxButton = new SfxButton();
powerTypes = ["D", "F", "S", "L", "3", "U", "A", "C"];
powerBorders = [0xDDDDDD, 0xDDDDDD, 0xDDDDDD, 0xDDDDDD, 0xEEEEEE, 0xEEEEEE, 0xEEEEEE, 0xEEEEEE, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF];
powerColors = [0, 0, 0x333333, 0x333333, 0x666666, 0x666666, 0x999999, 0x999999, 0xCCCCCC, 0xCCCCCC, 0xFFFFFF, 0xFFFFFF];
barColors = [0xFFFFFF];
barWidth = Math.floor((stageWidth * 0.95));
powerBitmapData = [];
barBitmapData = [];
powerUps = [];
lifeRectangle = new Rectangle(0, 0, paddleHeight, paddleHeight);
super();
addEventListener(Event.ADDED, onAdd);
}
private function prepareBitmaps():void{
var _local1:int;
var _local4:TextField;
var _local5:Array;
var _local6:int;
var _local7:Sprite;
var _local8:BitmapData;
_local1 = 0;
while (_local1 < bouncerColors.length) {
bouncerBitmapData.push(new BitmapData(bouncerWidth, bouncerHeight, false, bouncerColors[_local1]));
_local1++;
};
_local1 = 0;
while (_local1 < paddleColors.length) {
paddleBitmapData.push(new BitmapData(stageWidth, paddleHeight, false, paddleColors[_local1]));
_local1++;
};
_local1 = 0;
while (_local1 < missColors.length) {
missBitmapData.push(new BitmapData(stageWidth, paddleHeight, false, missColors[_local1]));
_local1++;
};
powerSide = 0;
var _local2:TextFormat = new TextFormat();
_local2.color = powerTextColor;
_local2.font = "Arial";
_local2.size = powerSize;
_local2.bold = true;
_local2.align = TextFormatAlign.LEFT;
var _local3:Array = new Array();
_local1 = 0;
while (_local1 < powerTypes.length) {
_local4 = new TextField();
_local4.text = powerTypes[_local1];
_local4.setTextFormat(_local2);
_local4.autoSize = TextFieldAutoSize.LEFT;
_local4.selectable = false;
_local4.textColor = powerTextColor;
if (_local4.width > powerSide){
powerSide = _local4.width;
};
if (_local4.height > powerSide){
powerSide = _local4.height;
};
_local3.push(_local4);
_local1++;
};
powerRectangle = new Rectangle(0, 0, powerSide, powerSide);
_local1 = 0;
while (_local1 < powerTypes.length) {
_local5 = new Array();
_local6 = 0;
while (_local6 < powerColors.length) {
_local7 = new Sprite();
_local7.graphics.lineStyle(powerBorderWidth, powerBorders[_local6]);
_local7.graphics.beginFill(powerColors[_local6]);
_local7.graphics.drawRect(0, 0, powerSide, powerSide);
_local7.graphics.endFill();
_local7.addChild(_local3[_local1]);
_local3[_local1].x = ((powerSide - _local3[_local1].width) / 2);
_local3[_local1].y = ((powerSide - _local3[_local1].height) / 2);
_local8 = new BitmapData(_local7.width, _local7.height, false, powerBorders[_local6]);
_local8.draw(_local7);
_local5.push(_local8);
_local6++;
};
powerBitmapData.push(_local5);
_local1++;
};
_local1 = 0;
while (_local1 < barColors.length) {
barBitmapData.push(new BitmapData(barWidth, barHeight, false, barColors[_local1]));
_local1++;
};
}
private function drawLives():void{
var _local1:int;
var _local2:Point;
var _local3:int;
if (playing){
_local1 = ((lives * paddleHeight) + ((lives - 1) * 5));
_local2 = new Point((scoreField.x + ((scoreField.width - _local1) / 2)), (comboField.y + comboField.height));
_local3 = 0;
while (_local3 < lives) {
stageBitmapData.copyPixels(paddleBitmapData[(paddleColors.length - 1)], lifeRectangle, _local2.add(new Point((_local3 * (5 + paddleHeight)), 0)));
_local3++;
};
};
}
private function drawBouncers():void{
var _local1:int;
while (_local1 < bouncerSprites.length) {
stageBitmapData.copyPixels(bouncerBitmapData[bouncerSprites[_local1].color], new Rectangle(0, 0, (bouncerWidth * bouncerSprites[_local1].scale), (bouncerHeight * bouncerSprites[_local1].scale)), bouncerSprites[_local1].point.add(new Point(((bouncerWidth * (1 - bouncerSprites[_local1].scale)) / 2), ((bouncerHeight * (1 - bouncerSprites[_local1].scale)) / 2))));
if (((((running) && ((pausePower <= 0)))) || ((_local1 < (bouncerSprites.length - bouncers.length))))){
bouncerSprites[_local1].scale = (bouncerSprites[_local1].scale * bouncerSprites[_local1].easingFactor);
};
if ((((Math.floor((bouncerSprites[_local1].scale * bouncerWidth)) == 0)) || ((Math.floor((bouncerSprites[_local1].scale * bouncerHeight)) == 0)))){
bouncerSprites.splice(_local1, 1);
} else {
_local1++;
};
};
}
private function randRange(_arg1:Number, _arg2:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * Math.random())));
}
private function setPositions(_arg1:int):void{
var _local2:int;
this.numPaddles = _arg1;
paddlePosition = 0;
portionWidth = (stageWidth / _arg1);
paddleWidth = (paddleWidthPercent * portionWidth);
doubleWidth = ((doubleWidthPercent * portionWidth) * 2);
paddleRectangle = new Rectangle(0, 0, paddleWidth, paddleHeight);
doubleRectangle = new Rectangle(0, 0, doubleWidth, paddleHeight);
platformRectangle = new Rectangle(0, 0, (paddleWidth - 2), (paddleHeight - 2));
paddlePoints = new Array();
platformPoints = new Array();
_local2 = 0;
while (_local2 < _arg1) {
paddlePoints.push(new Point(((_local2 * portionWidth) + ((portionWidth - paddleWidth) / 2)), paddleY));
platformPoints.push(paddlePoints[(paddlePoints.length - 1)].add(new Point(1, 1)));
_local2++;
};
}
private function onAdd(_arg1:Event):void{
var _local2:Timer;
removeEventListener(Event.ADDED, onAdd);
stage.showDefaultContextMenu = false;
stage.scaleMode = StageScaleMode.EXACT_FIT;
if (securityOk()){
addChild(stageBitmap);
introMovieClip.x = ((stageWidth - 550) / 2);
introMovieClip.y = ((stageHeight - 400) / 2);
addChild(introMovieClip);
introMovieClip.play();
_local2 = new Timer(7267, 1);
_local2.addEventListener("timer", timerHandler);
_local2.start();
};
}
private function timerHandler(_arg1:TimerEvent):void{
removeChild(introMovieClip);
prepareGame();
}
private function drawBar():void{
var _local1:int;
var _local2:Rectangle;
if (barLife > 0){
_local1 = (barWidth * (barLife / barLifeMax));
if (_local1 > 0){
_local2 = new Rectangle(0, 0, _local1, barHeight);
stageBitmapData.copyPixels(barBitmapData[barFrame], _local2, barPoint);
barFrame = (barFrame + dBar);
if (barFrame <= 0){
barFrame = 0;
dBar = 1;
};
if (barFrame >= (barColors.length - 1)){
barFrame = (barColors.length - 1);
dBar = -1;
};
};
};
}
private function checkLose():void{
if (lives <= 0){
startDemo();
};
}
private function updatePowers():void{
var _local2:BouncerSprite;
var _local3:PowerUp;
var _local4:Boolean;
var _local1:int;
while (_local1 < powerUps.length) {
_local2 = new BouncerSprite();
_local2.point = powerUps[_local1].point.add(new Point((2 * (powerSize - bouncerWidth)), (2 * (powerSize - bouncerHeight))));
_local2.scale = 1;
_local2.easingFactor = randRange(minEase, maxEase);
_local2.color = (bouncerColors.length - 1);
bouncerSprites.unshift(_local2);
if (powerUps[_local1].point.y == (paddleY - powerSide)){
_local3 = powerUps.splice(_local1, 1)[0];
if (_local3.position == paddlePosition){
currentPower = _local3.powerType;
_local4 = true;
switch (currentPower){
case powerDouble:
plusText = "Double Paddle!";
doublePaddle = true;
break;
case powerFix:
plusText = "Fixed Paddle!";
platformPosition = randRange(0, numPaddles);
break;
case powerSlow:
plusText = "Slow Down!";
skip = 2;
break;
case powerLife:
_local4 = false;
if (lives < livesMax){
plusText = "Extra Life!";
lives++;
} else {
plusText = "Lives Maxed Out!";
};
break;
case powerScore:
multiplier = 3;
plusText = "Triple Score!";
break;
case powerLevel:
_local4 = false;
plusText = "Instant Level Up!";
levelUp();
break;
case powerAuto:
autoPilot = true;
plusText = "Auto Pilot!";
break;
case powerClear:
_local4 = false;
plusText = "Clear All!";
bouncers.splice(0);
break;
};
if (_local4){
barLife = barLifeMax;
pausePower = pausePowerMax;
};
addPlusField(plusText, paddlePosition);
sfxButton.playPower();
} else {
addMiss(_local3.position);
sfxButton.playFall();
};
} else {
powerUps[_local1].point.y = (powerUps[_local1].point.y + powerUps[_local1].dy);
powerUps[_local1].dy = (powerUps[_local1].dy + ddy);
if (powerUps[_local1].point.y > (paddleY - powerSide)){
powerUps[_local1].point.y = (paddleY - powerSide);
};
_local1++;
};
};
}
private function setInstructionText():void{
ticker.update("Use the left and right arrow keys to move. Press Esc to pause.");
}
private function movePaddleRight():void{
lastDirection = 1;
paddlePosition++;
if (paddlePosition > (numPaddles - 1)){
paddlePosition = (numPaddles - 1);
};
sfxButton.playMove();
}
private function drawPowers():void{
var _local1:int;
while (_local1 < powerUps.length) {
stageBitmapData.copyPixels(powerBitmapData[powerUps[_local1].powerType][powerUps[_local1].frame], powerRectangle, powerUps[_local1].point);
if (powerUps[_local1].frame > 0){
powerUps[_local1].frame--;
};
_local1++;
};
}
private function updateBar():void{
if (barLife > 0){
barLife--;
if (barLife == 0){
sfxButton.playEnd();
pausePower = pausePowerMax;
switch (currentPower){
case powerDouble:
doublePaddle = false;
break;
case powerFix:
platformPosition = -1;
break;
case powerSlow:
skip = 1;
break;
case powerScore:
multiplier = 1;
break;
case powerAuto:
autoPilot = false;
break;
};
};
};
}
private function updatePlusFields():void{
var _local1:int;
while (_local1 < plusFields.length) {
if (plusFields[_local1].lifeStay <= 0){
removeChild(plusFields[_local1]);
plusFields.splice(_local1, 1);
} else {
plusFields[_local1].update();
_local1++;
};
};
}
private function schedulePower():void{
if ((((((Math.random() < powerOdds)) && ((barLife == 0)))) && ((powerUps.length == 0)))){
powerNext = true;
};
}
private function updateBouncers():void{
var _local2:int;
var _local3:int;
var _local4:BouncerSprite;
var _local1:int;
while (_local1 < bouncers.length) {
if ((((bouncers[_local1].hitTimes.length > 0)) && ((bouncers[_local1].hitTimes[0] == (counter - 1))))){
bouncers[_local1].hitTimes.shift();
_local2 = ((numPaddles - bouncers[_local1].hitTimes.length) - 1);
if ((((((_local2 == paddlePosition)) || ((_local2 == platformPosition)))) || (((doublePaddle) && ((_local2 == (paddlePosition + 1))))))){
paddleColor = (paddleColors.length - 1);
if (playing){
_local3 = Math.pow(2, level);
score = (score + (_local3 * multiplier));
plusText = ("+" + (_local3 * multiplier));
currentCombo = (currentCombo + 1);
if (currentCombo > maxCombo){
maxCombo = currentCombo;
};
if (currentCombo > 1){
plusText = (plusText + ("\nCombo x" + currentCombo));
};
addPlusField(plusText, _local2);
};
sfxButton.playPaddle(_local2);
if (((playing) && (powerNext))){
addPower();
};
} else {
bouncers[_local1].positions.splice(0);
addMiss(_local2);
lives--;
sfxButton.playMiss();
currentCombo = 0;
};
};
if (bouncers[_local1].positions.length > 0){
if (counter >= bouncers[_local1].startTime){
_local4 = new BouncerSprite();
if (skipper == 0){
_local4.point = bouncers[_local1].positions.shift();
bouncers[_local1].lastPoint = _local4.point;
} else {
_local4.point = Point.interpolate(bouncers[_local1].positions[0], bouncers[_local1].lastPoint, (skipper / skip));
};
_local4.scale = 1;
_local4.easingFactor = randRange(minEase, maxEase);
_local4.color = bouncers[_local1].color;
bouncerSprites.push(_local4);
};
_local1++;
} else {
bouncers.splice(_local1, 1);
};
};
}
private function onEnterFrame(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
if (hasFocus){
stage.focus = this;
};
thisTime = getTimer();
elapsedTime = (elapsedTime + (thisTime - lastTime));
lastTime = thisTime;
if (elapsedTime >= msPerFrame){
while (elapsedTime >= msPerFrame) {
elapsedTime = (elapsedTime - msPerFrame);
if (playing){
processInput();
} else {
demoInput();
};
if (running){
if (pausePower <= 0){
if (counter < counterMax){
addBouncer();
};
updatePowers();
considerPowers();
updateBouncers();
schedulePower();
updateBar();
if ((skipper % skip) == 0){
counter++;
};
skipper = ((skipper + 1) % skip);
if (bouncers.length == 0){
counter = 0;
};
gapCounter++;
if (playing){
if (gapCounter >= changeGap){
levelUp();
};
scoreField.wantNum = score;
checkLose();
};
} else {
considerPowers();
pausePower--;
};
};
scoreField.update();
comboField.update(maxCombo);
};
updatePlusFields();
drawBackground();
drawBouncers();
drawPowers();
drawMisses();
drawPaddle();
drawLives();
drawBar();
};
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function makeLogo():void{
var _local1:int;
var _local6:TextField;
var _local7:Number;
pelLogo = new Sprite();
var _local2:Array = ["P", "E", "L"];
var _local3:TextFormat = new TextFormat();
_local3.color = 0xFFFFFF;
_local3.font = "Arial";
_local3.size = 48;
_local3.align = TextFormatAlign.LEFT;
var _local4:Array = [];
var _local5:Number = 0;
_local1 = 0;
while (_local1 < _local2.length) {
_local6 = new TextField();
_local6.text = _local2[_local1];
_local6.setTextFormat(_local3);
_local6.autoSize = TextFieldAutoSize.LEFT;
_local6.selectable = false;
_local6.textColor = 0xFFFFFF;
_local4.push(_local6);
if (_local6.width > _local5){
_local5 = _local6.width;
};
if (_local6.height > _local5){
_local5 = _local6.height;
};
_local1++;
};
_local1 = 0;
while (_local1 < _local4.length) {
_local7 = (_local1 * (_local5 + 5));
pelLogo.graphics.lineStyle(3, 0xFFFFFF);
pelLogo.graphics.beginFill(0);
pelLogo.graphics.drawRect(_local7, 0, _local5, _local5);
pelLogo.graphics.endFill();
pelLogo.addChild(_local4[_local1]);
_local4[_local1].x = (_local7 + ((_local5 - _local4[_local1].width) / 2));
_local4[_local1].y = 0;
_local1++;
};
pelLogo.x = ((stageWidth - pelLogo.width) / 2);
pelLogo.y = (((playGameButton.y - pelLogo.height) / 2) + 16);
logoSprite = new Sprite();
logoSprite.addChild(logoDisplayObject);
logoDisplayObject.x = 0;
logoDisplayObject.y = 0;
logoSprite.x = ((stageWidth - logoSprite.width) / 2);
logoSprite.y = (gameUpdatesButton.y + (playGameButton.y - (pelLogo.y + pelLogo.height)));
logoSprite.buttonMode = true;
logoSprite.addEventListener(MouseEvent.CLICK, onGetMoreGames);
}
private function onKeyUp(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case codeEscape:
escapeWasDown = false;
break;
case codeSpace:
spaceWasDown = false;
break;
case codeLeft:
leftWasDown = false;
break;
case codeRight:
rightWasDown = false;
break;
case codeQ:
qWasDown = false;
break;
};
}
private function onKeyDown(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case codeEscape:
if (!escapeWasDown){
escapeIsDown = true;
};
escapeWasDown = true;
break;
case codeSpace:
if (!spaceWasDown){
spaceIsDown = true;
};
spaceWasDown = true;
break;
case codeLeft:
if (!leftWasDown){
leftIsDown = true;
};
leftWasDown = true;
break;
case codeRight:
if (!rightWasDown){
rightIsDown = true;
};
rightWasDown = true;
break;
case codeQ:
if (!qWasDown){
qIsDown = true;
};
qWasDown = true;
break;
};
}
private function processInput():void{
if (movingLeft){
if (demoCounter <= 0){
movePaddleLeft();
demoCounter = demoDelay;
if (paddlePosition == 0){
movingLeft = false;
};
} else {
demoCounter--;
};
} else {
if (escapeIsDown){
running = !(running);
if (running){
setInstructionText();
} else {
ticker.update("Press Esc to resume playing, or press Q to quit.");
};
};
if (running){
if (spaceIsDown){
};
if (!autoPilot){
if (leftIsDown){
movePaddleLeft();
};
if (rightIsDown){
movePaddleRight();
};
} else {
demoCounter = 0;
demoInput();
};
} else {
if (qIsDown){
startDemo();
};
};
};
escapeIsDown = false;
spaceIsDown = false;
leftIsDown = false;
rightIsDown = false;
qIsDown = false;
}
private function onClick(_arg1:MouseEvent):void{
mouseClicked = true;
}
private function drawMisses():void{
var _local1:int;
while (_local1 < missSprites.length) {
stageBitmapData.copyPixels(missBitmapData[missSprites[_local1].color], paddleRectangle, paddlePoints[missSprites[_local1].position]);
missSprites[_local1].color++;
if (missSprites[_local1].color == missColors.length){
missSprites.splice(_local1, 1);
} else {
_local1++;
};
};
}
private function addPower():void{
powerNext = false;
var _local1:int = randRange(0, powerTypes.length);
var _local2:int = randRange(0, numPaddles);
var _local3:Number = ((paddlePoints[_local2].x + (paddleWidth / 2)) + (randSign() * randRange(powerMinX, powerMaxX)));
var _local4:Number = randRange(powerMinY, powerMaxY);
var _local5:Point = new Point(_local3, _local4);
var _local6:PowerUp = new PowerUp(_local1, _local2, _local5, (powerColors.length - 1));
powerUps.push(_local6);
}
private function onGameUpdates(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://ArmorBlog.com/"), "_blank");
}
private function considerPowers():void{
if ((((platformPosition > -1)) && ((platformPosition == paddlePosition)))){
paddlePosition = (paddlePosition + lastDirection);
if (paddlePosition > (numPaddles - 1)){
paddlePosition = (numPaddles - 2);
};
if (paddlePosition < 0){
paddlePosition = 1;
};
};
if (((doublePaddle) && ((paddlePosition > (numPaddles - 2))))){
paddlePosition = (numPaddles - 2);
};
}
private function levelUp():void{
gapCounter = 0;
if (currentGap < (gaps.length - 1)){
currentGap++;
minGap = gaps[currentGap];
level++;
} else {
if (minGap > 2){
changeGap = changeGapLarge;
minGap--;
level++;
};
};
}
private function securityOk():Boolean{
return (true);
}
private function addBouncer():void{
var _local1:int;
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local8:int;
var _local5:Bouncer = new Bouncer();
_local5.color = randRange(0, (bouncerColors.length - 1));
var _local6:int = (counter + fps);
_local5.startTime = _local6;
_local1 = 0;
while (_local1 < numPaddles) {
if (_local1 > 0){
_local6 = (_local6 + randRange(minAir, maxAir));
} else {
_local6 = (_local6 + (randRange(minAir, maxAir) / 2));
};
_local5.hitTimes.push(_local6);
_local1++;
};
var _local7:Boolean;
_local1 = 0;
while (_local1 < bouncers.length) {
_local2 = 0;
while (_local2 < bouncers[_local1].hitTimes.length) {
_local8 = 0;
while (_local8 < _local5.hitTimes.length) {
if (Math.abs((bouncers[_local1].hitTimes[_local2] - _local5.hitTimes[_local8])) < minGap){
_local7 = false;
break;
};
_local8++;
};
_local2++;
};
_local1++;
};
if (_local7){
_local1 = _local5.startTime;
while (_local1 < _local5.hitTimes[0]) {
_local3 = (-(bouncerWidth) + (((_local1 - _local5.startTime) / (_local5.hitTimes[0] - _local5.startTime)) * (bouncerWidth + ((portionWidth - bouncerWidth) / 2))));
_local4 = ((paddleY * Math.pow(((_local1 - _local5.startTime) / (_local5.hitTimes[0] - _local5.startTime)), 2)) - bouncerHeight);
_local5.positions.push(new Point(_local3, _local4));
_local1++;
};
_local1 = 0;
while (_local1 < (numPaddles - 1)) {
_local2 = _local5.hitTimes[_local1];
while (_local2 < _local5.hitTimes[(_local1 + 1)]) {
_local3 = ((((paddleWidth - bouncerWidth) / 2) + (((paddlePoints[(_local1 + 1)].x - paddlePoints[_local1].x) * (_local2 - _local5.hitTimes[_local1])) / (_local5.hitTimes[(_local1 + 1)] - _local5.hitTimes[_local1]))) + paddlePoints[_local1].x);
_local4 = ((paddleY - bouncerHeight) - ((minHeight + (((maxHeight - minHeight) * ((_local5.hitTimes[(_local1 + 1)] - _local5.hitTimes[_local1]) - minAir)) / (maxAir - minAir))) * (1 - Math.pow(((((_local3 - ((paddleWidth - bouncerWidth) / 2)) - paddlePoints[_local1].x) - (portionWidth / 2)) / (portionWidth / 2)), 2))));
_local5.positions.push(new Point(_local3, _local4));
_local2++;
};
_local1++;
};
_local1 = (_local5.hitTimes[0] - _local5.startTime);
while (_local1 >= 0) {
_local3 = ((((numPaddles - 1) * portionWidth) + ((portionWidth - bouncerWidth) / 2)) + (((stageWidth + bouncerWidth) - (((numPaddles - 1) * portionWidth) + ((portionWidth - bouncerWidth) / 2))) * (1 - (_local1 / (_local5.hitTimes[0] - _local5.startTime)))));
_local4 = _local5.positions[_local1].y;
_local5.positions.push(new Point(_local3, _local4));
_local1--;
};
_local5.lastPoint = _local5.positions[0];
bouncers.push(_local5);
};
}
private function addMiss(_arg1:int):void{
var _local2:MissSprite = new MissSprite();
_local2.position = _arg1;
missSprites.push(_local2);
}
private function onGetMoreGames(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://ArmorGames.com/"), "_blank");
}
private function movePaddleLeft():void{
lastDirection = -1;
paddlePosition--;
if (paddlePosition < 0){
paddlePosition = 0;
};
sfxButton.playMove();
}
private function startPlaying():void{
maxCombo = 0;
changeGap = changeGapSmall;
gapCounter = 0;
counter = 0;
playing = true;
running = true;
currentGap = 0;
minGap = gaps[currentGap];
movingLeft = true;
lives = livesStart;
score = 0;
level = 0;
if (!scoreFieldAdded){
scoreFieldAdded = true;
addChild(scoreField);
addChild(comboField);
comboField.y = ((scoreField.y + scoreField.height) - 5);
barPoint = new Point(((stageWidth - barWidth) / 2), (((comboField.y + comboField.height) + paddleHeight) + 5));
};
setInstructionText();
removeChild(playGameButton);
removeChild(getMoreGamesButton);
removeChild(gameUpdatesButton);
removeChild(pelLogo);
removeChild(logoSprite);
startGame();
}
private function startDemo():void{
ticker.update("Copyright scriptedfun.com. All rights reserved.");
playing = false;
running = true;
minGap = gaps[(gaps.length - 1)];
addChild(playGameButton);
addChild(getMoreGamesButton);
addChild(gameUpdatesButton);
addChild(pelLogo);
addChild(logoSprite);
startGame();
}
private function startGame():void{
currentCombo = 0;
pausePower = 0;
autoPilot = false;
powerNext = false;
barLife = 0;
skipper = 0;
skip = 1;
platformPosition = -1;
paddleColor = 0;
lastDirection = 1;
multiplier = 1;
doublePaddle = false;
powerUps.splice(0);
bouncers.splice(0);
}
private function randSign():int{
return (((Math.random() < 0.5)) ? -1 : 1);
}
private function demoInput():void{
var _local1:int;
var _local2:Number;
var _local3:int;
var _local4:Number;
var _local5:int;
if (demoCounter <= 0){
_local1 = paddlePosition;
_local2 = demoHeight;
_local3 = 0;
while (_local3 < bouncers.length) {
if ((((bouncers[_local3].positions.length > 0)) && ((bouncers[_local3].hitTimes.length > 0)))){
_local4 = (paddleY - bouncers[_local3].positions[0].y);
_local5 = (numPaddles - bouncers[_local3].hitTimes.length);
if ((((_local4 < _local2)) && (((((_local5 * portionWidth) + (portionWidth / 2)) - bouncers[_local3].positions[0].x) < demoWidth)))){
_local2 = _local4;
_local1 = _local5;
};
};
_local3++;
};
if (paddlePosition < _local1){
movePaddleRight();
demoCounter = demoDelay;
} else {
if (paddlePosition > _local1){
movePaddleLeft();
demoCounter = demoDelay;
};
};
} else {
demoCounter--;
};
if (((mouseClicked) && (!(playing)))){
mouseClicked = false;
startPlaying();
};
}
private function makeButtons():void{
var _local1:int;
var _local8:TextField;
var _local9:Sprite;
var _local10:Sprite;
var _local2:Array = ["Play Game", "Get More Games", "Game Updates"];
var _local3:TextFormat = new TextFormat();
_local3.color = 0xFFFFFF;
_local3.font = "Arial";
_local3.size = 12;
_local3.align = TextFormatAlign.LEFT;
var _local4:Array = [];
var _local5:Array = [];
var _local6:Number = 0;
var _local7:Number = 0;
_local1 = 0;
while (_local1 < _local2.length) {
_local8 = new TextField();
_local8.text = _local2[_local1];
_local8.setTextFormat(_local3);
_local8.autoSize = TextFieldAutoSize.LEFT;
_local8.selectable = false;
_local8.textColor = 0xFFFFFF;
_local4.push(_local8);
if (_local8.width > _local6){
_local6 = _local8.width;
};
if (_local8.height > _local7){
_local7 = _local8.height;
};
_local1++;
};
_local6 = (_local6 + 10);
_local7 = (_local7 + 10);
_local1 = 0;
while (_local1 < _local4.length) {
_local9 = new Sprite();
_local9.graphics.lineStyle(1, 0xFFFFFF);
_local9.graphics.beginFill(0);
_local9.graphics.drawRect((-(_local6) / 2), (-(_local7) / 2), _local6, _local7);
_local9.graphics.endFill();
_local9.addChild(_local4[_local1]);
_local4[_local1].x = (-(_local4[_local1].width) / 2);
_local4[_local1].y = (-(_local4[_local1].height) / 2);
_local10 = new Sprite();
_local10.graphics.beginFill(0, 0);
_local10.graphics.drawRect(0, 0, _local6, _local7);
_local10.graphics.endFill();
_local10.buttonMode = true;
_local9.addChild(_local10);
_local10.x = (-(_local6) / 2);
_local10.y = (-(_local7) / 2);
_local9.x = (stageWidth / 2);
_local5.push(_local9);
_local1++;
};
playGameButton = _local5[0];
getMoreGamesButton = _local5[1];
gameUpdatesButton = _local5[2];
playGameButton.y = ((stageHeight / 2) - (_local5.length * _local7));
getMoreGamesButton.y = ((playGameButton.y + playGameButton.height) + 10);
gameUpdatesButton.y = ((getMoreGamesButton.y + getMoreGamesButton.height) + 10);
playGameButton.addEventListener(MouseEvent.CLICK, onClick);
getMoreGamesButton.addEventListener(MouseEvent.CLICK, onGetMoreGames);
gameUpdatesButton.addEventListener(MouseEvent.CLICK, onGameUpdates);
}
private function prepareGame():void{
lastTime = getTimer();
thisTime = lastTime;
elapsedTime = 0;
addChild(ticker);
sfxButton.x = ((stageWidth - sfxButton.width) - 21);
sfxButton.y = ((stageHeight - sfxButton.height) - 5);
addChild(sfxButton);
prepareBitmaps();
setPositions(3);
makeButtons();
makeLogo();
startDemo();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
private function drawBackground():void{
stageBitmapData.copyPixels(backgroundBitmapData, backgroundRectangle, backgroundPoint);
}
private function getDomain():String{
var _local1:String = loaderInfo.url;
var _local2:int = (_local1.indexOf("://") + 3);
var _local3:int = _local1.indexOf("/", _local2);
var _local4:String = _local1.substring(_local2, _local3);
var _local5:int = (_local4.lastIndexOf(".") - 1);
var _local6:int = (_local4.lastIndexOf(".", _local5) + 1);
return (_local4.substring(_local6, _local4.length));
}
private function drawPaddle():void{
if (platformPosition > -1){
stageBitmapData.copyPixels(paddleBitmapData[paddleColor], paddleRectangle, paddlePoints[platformPosition]);
stageBitmapData.copyPixels(backgroundBitmapData, platformRectangle, platformPoints[platformPosition]);
};
stageBitmapData.copyPixels(paddleBitmapData[paddleColor], (doublePaddle) ? doubleRectangle : paddleRectangle, paddlePoints[paddlePosition]);
if (paddleColor > 0){
paddleColor--;
};
}
private function addPlusField(_arg1:String, _arg2:int):void{
var _local3:Number = ((paddlePoints[_arg2].x + (randSign() * randRange(plusFieldMinX, plusFieldMaxX))) + (paddleWidth / 2));
var _local4:Number = (paddlePoints[_arg2].y - randRange(plusFieldMinX, plusFieldMaxX));
var _local5:PlusField = new PlusField(_arg1, _local3, _local4);
plusFields.push(_local5);
addChild(_local5);
}
}
}//package
Section 19
//FlexGame_introClass (FlexGame_introClass)
package {
import mx.core.*;
import flash.utils.*;
public class FlexGame_introClass extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function FlexGame_introClass(){
dataClass = FlexGame_introClass_dataClass;
super();
initialWidth = (11000 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 20
//FlexGame_introClass_dataClass (FlexGame_introClass_dataClass)
package {
import mx.core.*;
public class FlexGame_introClass_dataClass extends ByteArrayAsset {
}
}//package
Section 21
//FlexGame_logoClass (FlexGame_logoClass)
package {
import mx.core.*;
public class FlexGame_logoClass extends BitmapAsset {
}
}//package
Section 22
//MissSprite (MissSprite)
package {
public class MissSprite {
public var position:int;
public var color:int;// = 0
}
}//package
Section 23
//PlusField (PlusField)
package {
import flash.text.*;
public class PlusField extends TextField {
public var lifeStay:int;// = 30
public var lifeUp:int;// = 10
public function PlusField(_arg1:String, _arg2:Number, _arg3:Number){
var _local4:TextFormat = new TextFormat();
_local4.color = 0xFFFFFF;
_local4.font = "Arial";
_local4.size = 16;
_local4.align = TextFormatAlign.LEFT;
this.text = _arg1;
setTextFormat(_local4);
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
textColor = 0xFFFFFF;
this.x = _arg2;
this.y = _arg3;
}
public function update():void{
if (lifeUp > 0){
y = (y - lifeUp);
lifeUp--;
} else {
lifeStay--;
};
}
}
}//package
Section 24
//PowerUp (PowerUp)
package {
import flash.geom.*;
public class PowerUp {
public var point:Point;
public var dy:Number;
public var position:int;
public var frame:int;
public var powerType:int;
public function PowerUp(_arg1:int, _arg2:int, _arg3:Point, _arg4:int){
dy = -10;
this.frame = _arg4;
this.powerType = _arg1;
this.position = _arg2;
this.point = _arg3;
}
}
}//package
Section 25
//ScoreField (ScoreField)
package {
import flash.text.*;
public class ScoreField extends TextField {
public var wantNum:Number;// = 0
private var formatter:TextFormat;
private var currentNum:Number;// = 0
public function ScoreField(){
formatter = new TextFormat();
super();
formatter.color = 0xFFFFFF;
formatter.font = "Arial";
formatter.size = 20;
formatter.align = TextFormatAlign.LEFT;
update();
}
public function update():void{
if (Math.abs((wantNum - currentNum)) < 1){
currentNum = wantNum;
} else {
currentNum = (currentNum + (0.1 * (wantNum - currentNum)));
};
var _local1:int = Math.floor(currentNum);
text = ("Score: " + _local1);
setTextFormat(formatter);
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
textColor = 0xFFFFFF;
x = ((590 - width) / 2);
y = 5;
}
}
}//package
Section 26
//SfxButton (SfxButton)
package {
import mx.core.*;
public class SfxButton extends TextButton {
private var powerClass:Class;
public var powerSound:SoundAsset;
private var paddle2Class:Class;
public var fallSound:SoundAsset;
public var paddleSounds:Array;
private var missClass:Class;
private var endClass:Class;
private var moveClass:Class;
private var paddle3Class:Class;
private var paddle1Class:Class;
public var missSound:SoundAsset;
public var endSound:SoundAsset;
private var fallClass:Class;
public var moveSound:SoundAsset;
public function SfxButton(){
missClass = SfxButton_missClass;
moveClass = SfxButton_moveClass;
paddle1Class = SfxButton_paddle1Class;
paddle2Class = SfxButton_paddle2Class;
paddle3Class = SfxButton_paddle3Class;
fallClass = SfxButton_fallClass;
powerClass = SfxButton_powerClass;
endClass = SfxButton_endClass;
fallSound = SoundAsset(new fallClass());
powerSound = SoundAsset(new powerClass());
endSound = SoundAsset(new endClass());
missSound = SoundAsset(new missClass());
moveSound = SoundAsset(new moveClass());
paddleSounds = [SoundAsset(new paddle1Class()), SoundAsset(new paddle2Class()), SoundAsset(new paddle3Class())];
super();
construct("sound");
}
public function playPower():void{
if (isOn){
powerSound.play(25);
};
}
public function playPaddle(_arg1:int):void{
if (isOn){
paddleSounds[_arg1].play(25);
};
}
public function playEnd():void{
if (isOn){
endSound.play(25);
};
}
public function playFall():void{
if (isOn){
fallSound.play(25);
};
}
public function playMiss():void{
if (isOn){
missSound.play(25);
};
}
public function playMove():void{
if (isOn){
moveSound.play(25);
};
}
}
}//package
Section 27
//SfxButton_endClass (SfxButton_endClass)
package {
import mx.core.*;
public class SfxButton_endClass extends SoundAsset {
}
}//package
Section 28
//SfxButton_fallClass (SfxButton_fallClass)
package {
import mx.core.*;
public class SfxButton_fallClass extends SoundAsset {
}
}//package
Section 29
//SfxButton_missClass (SfxButton_missClass)
package {
import mx.core.*;
public class SfxButton_missClass extends SoundAsset {
}
}//package
Section 30
//SfxButton_moveClass (SfxButton_moveClass)
package {
import mx.core.*;
public class SfxButton_moveClass extends SoundAsset {
}
}//package
Section 31
//SfxButton_paddle1Class (SfxButton_paddle1Class)
package {
import mx.core.*;
public class SfxButton_paddle1Class extends SoundAsset {
}
}//package
Section 32
//SfxButton_paddle2Class (SfxButton_paddle2Class)
package {
import mx.core.*;
public class SfxButton_paddle2Class extends SoundAsset {
}
}//package
Section 33
//SfxButton_paddle3Class (SfxButton_paddle3Class)
package {
import mx.core.*;
public class SfxButton_paddle3Class extends SoundAsset {
}
}//package
Section 34
//SfxButton_powerClass (SfxButton_powerClass)
package {
import mx.core.*;
public class SfxButton_powerClass extends SoundAsset {
}
}//package
Section 35
//TextButton (TextButton)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class TextButton extends Sprite {
private var textFormat:TextFormat;
private var sprite:Sprite;
private var textField:TextField;
public var isOn:Boolean;// = true
public function TextButton(){
textFormat = new TextFormat();
textField = new TextField();
sprite = new Sprite();
super();
}
public function onClick(_arg1:MouseEvent):void{
isOn = !(isOn);
textField.backgroundColor = (isOn) ? 0x8000 : 0x800000;
if (isOn){
whenOn();
} else {
whenOff();
};
}
public function whenOff():void{
}
public function construct(_arg1:String):void{
textFormat.align = TextFormatAlign.LEFT;
textFormat.font = "Arial";
textFormat.bold = true;
textFormat.size = 8;
textFormat.color = 0xFFFFFF;
textField.border = true;
textField.borderColor = 0xFFFFFF;
textField.background = true;
textField.backgroundColor = 0x8000;
textField.text = _arg1;
textField.autoSize = TextFieldAutoSize.LEFT;
textField.setTextFormat(textFormat);
textField.x = 0;
textField.y = 0;
addChild(textField);
sprite.graphics.beginFill(0, 0);
sprite.graphics.drawRect(0, 0, textField.width, textField.height);
sprite.graphics.endFill();
sprite.x = 0;
sprite.y = 0;
sprite.buttonMode = true;
addChild(sprite);
sprite.addEventListener(MouseEvent.CLICK, onClick);
}
public function whenOn():void{
}
}
}//package
Section 36
//Ticker (Ticker)
package {
import flash.text.*;
public class Ticker extends TextField {
public var formatter:TextFormat;
private var stageHeight:int;
public function Ticker(_arg1:int){
formatter = new TextFormat();
super();
formatter.color = 0xFFFFFF;
formatter.font = "Arial";
formatter.size = 12;
formatter.align = TextFormatAlign.LEFT;
this.stageHeight = _arg1;
update();
}
public function update(_arg1:String=" "):void{
this.text = _arg1;
setTextFormat(formatter);
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
textColor = 0xFFFFFF;
x = 18;
y = ((stageHeight - height) - 5);
}
}
}//package