Section 1
//Games (General.Games)
package General {
public class Games {
private var gameOptions:Array;
private var members:Array;
private var gameName:String;// = ""
private var options:Object;
public function Games(members:Array){
options = new Object();
gameOptions = new Array();
super();
this.members = members;
}
public function add(gameName:String, options:Array):void{
if (this.gameName.length == 0){
this.gameName = gameName;
};
this.options[gameName] = new Object();
var i:int;
while (i < options.length) {
this.options[gameName][members[i]] = options[i];
i++;
};
}
public function getGameList(gameName:String):String{
var item:String;
var s:String = "";
var i:int;
for (item in options) {
s = (s + (gameName + ","));
s = (s + (i + ","));
s = (s + (item + ","));
s = (s + (options[item]["title"][0] + "\n"));
i++;
};
return (s);
}
public function getGame():String{
return (this.gameName);
}
public function game(gameName:String, valName:String){
return (options[gameName][valName]);
}
public function setGame(gameName:String):void{
if (options[gameName] == undefined){
} else {
this.gameName = gameName;
};
}
public function option(valName:String){
return (options[gameName][valName]);
}
}
}//package General
Section 2
//HighScores (General.HighScores)
package General {
import flash.net.*;
public class HighScores {
private var sttTime:Date;
private var score:Number;
public var gameMode:String;
private var gameName:String;
public function HighScores(gameName:String, gameMode:String){
sttTime = new Date();
super();
this.gameName = gameName;
this.gameMode = gameMode;
trace(("HighScores gameMode=" + gameMode));
}
private function rotStr(to_enc:String, rot_key:String):String{
var the_res:String = "";
var i:int;
while (i < 4) {
the_res = (the_res + rotChr(to_enc.substr(i, 1), rot_key.substr(i, 1)));
i++;
};
return (the_res);
}
private function encodeBase64(input:String):String{
var chr1:Number;
var chr2:Number;
var chr3:Number;
var enc1:Number;
var enc2:Number;
var enc3:Number;
var enc4:Number;
var output:String = "";
var keyStr:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_:";
var i:int;
while (i < input.length) {
var _temp1 = i;
i = (i + 1);
chr1 = input.charCodeAt(_temp1);
var _temp2 = i;
i = (i + 1);
chr2 = input.charCodeAt(_temp2);
var _temp3 = i;
i = (i + 1);
chr3 = input.charCodeAt(_temp3);
enc1 = (chr1 >> 2);
enc2 = (((chr1 & 3) << 4) | (chr2 >> 4));
enc3 = (((chr2 & 15) << 2) | (chr3 >> 6));
enc4 = (chr3 & 63);
if (isNaN(chr2)){
enc4 = 64;
enc3 = enc4;
} else {
if (isNaN(chr3)){
enc4 = 64;
};
};
output = ((((output + keyStr.charAt(enc1)) + keyStr.charAt(enc2)) + keyStr.charAt(enc3)) + keyStr.charAt(enc4));
};
return (output);
}
private function cleanURL(s:String):String{
s = s.replace(" ", "%20");
return (s);
}
private function keyShuffle(a:String, b:String):String{
var places:int;
var newpos:int;
var temp:String;
var alen:int = a.length;
var aArr:Array = new Array();
var i:int;
while (i < 4) {
aArr[i] = a.substr(i, 1);
i++;
};
var blen:int = b.length;
i = 0;
while (i < 4) {
places = ordOffset(b.substr(i, 1));
newpos = ((i + places) % 4);
if (newpos != i){
temp = aArr[i];
aArr[i] = aArr[newpos];
aArr[newpos] = temp;
};
i++;
};
var c:String = "";
i = 0;
while (i < 4) {
c = (c + aArr[i]);
i++;
};
return (c);
}
private function pad0(n:Number):String{
if (n < 10){
return (("0" + n.toString()));
};
return (n.toString());
}
private function makeScoreStr(sttTime:Date, totElapsed:Number, gameName:String, gameMode:String, score:Number, totalCount:int, rightCount:int):String{
var v:String = "00";
var sep:String = "~";
var s:String = "";
s = (s + fmtTime(sttTime));
s = (s + sep);
s = (s + int((sttTime.getTimezoneOffset() / 60)));
s = (s + sep);
s = (s + (totElapsed / 1000));
s = (s + sep);
s = (s + gameName);
s = (s + sep);
s = (s + gameMode);
s = (s + sep);
s = (s + score.toString());
s = (s + sep);
s = (s + totalCount);
s = (s + sep);
s = (s + rightCount);
s = (s + sep);
s = (s + keyMake(gameMode, score.toString()));
s = encodeBase64(s);
s = (v + s);
return (s);
}
public function setStt():void{
sttTime = new Date();
}
private function keyMake(a:String, b:String):String{
var both:String = (a + b);
var c:String = both.substr(0, 4);
var i = 1;
while (i <= int((both.length / 4))) {
c = rotStr(c, both.substr((i * 4), 4));
i++;
};
c = keyShuffle(c, b);
c = rotStr(c, b);
return (c);
}
private function rotChr(chr1:String, chr2:String):String{
var ord1:int = ordOffset(chr1);
var ord2:int = ordOffset(chr2);
var rotnum:int = (ord1 + ord2);
if (rotnum >= 26){
rotnum = (rotnum - 26);
};
return (String.fromCharCode((rotnum + "a".charCodeAt(0))));
}
public function addMe(newScore:Number, totalCount:int, rightCount:int):void{
score = fmt2(newScore);
trace(score);
var endTime:Date = new Date();
var elapsed:Number = (endTime.valueOf() - sttTime.valueOf());
trace(elapsed);
var s:String = makeScoreStr(sttTime, elapsed, gameName, gameMode, score, totalCount, rightCount);
var outgoing_lc:LocalConnection = new LocalConnection();
outgoing_lc.client = this;
outgoing_lc.send("mathopolis", "methodToExecute", s);
}
private function ordOffset(chr1:String):int{
if (chr1.length == 0){
return (0);
};
var ord1:int = chr1.toLowerCase().charCodeAt(0);
if ((((ord1 >= 48)) && ((ord1 <= 57)))){
ord1 = (ord1 - 48);
};
if ((((ord1 >= 97)) && ((ord1 <= 122)))){
ord1 = (ord1 - 97);
};
if (ord1 > 26){
ord1 = 0;
};
return (ord1);
}
private function fmtTime(t:Date):String{
var s:String = "";
s = (s + t.getFullYear().toString().substr(2, 2));
s = (s + pad0((t.getMonth() + 1)));
s = (s + pad0(t.getDate()));
s = (s + pad0(t.getHours()));
s = (s + pad0(t.getMinutes()));
s = (s + pad0(t.getSeconds()));
return (s);
}
private function fmt2(x:Number):Number{
var x2:Number = (Math.round((x * 100)) / 100);
return (x2);
}
}
}//package General
Section 3
//CircleButton (GUI.CircleButton)
package GUI {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class CircleButton extends GoodSprite {
private var symbolHi:Sprite;
private var radius:int;
private var innerCircle:Shape;
private var downCircle2:Shape;
private var outerCircle:Shape;
private var tb:TextBox;
private var downCircle:Shape;
private var symbolLo:Sprite;
public function CircleButton(radius:int=23):void{
symbolLo = new Sprite();
symbolHi = new Sprite();
super();
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
this.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
this.buttonMode = true;
this.useHandCursor = true;
this.radius = radius;
outerCircle = createGradient(radius, (-(Math.PI) / 6));
this.addChild(outerCircle);
innerCircle = createGradient((radius * 0.85), ((-(Math.PI) / 6) - Math.PI));
this.addChild(innerCircle);
downCircle = createGradient(radius, ((-(Math.PI) / 6) - Math.PI));
downCircle.visible = false;
this.addChild(downCircle);
downCircle2 = createGradient((radius * 0.85), (-(Math.PI) / 6));
downCircle2.visible = false;
this.addChild(downCircle2);
this.addChild(symbolLo);
this.addChild(symbolHi);
symbolLo.visible = true;
symbolHi.visible = false;
tb = new TextBox("Arial", (radius / 2), (radius * 2), 1, "OK", -(radius), (-(radius) / 3));
tb.setFontClr(0xFFFFFF);
tb.setAlign("center");
tb.mouseEnabled = false;
this.addChild(tb);
}
private function createGradient(radius:Number, angle:Number):Shape{
var gradient:Shape = new Shape();
var matrix:Matrix = new Matrix();
matrix.createGradientBox((radius * 2), (radius * 2), angle, -(radius), -(radius));
gradient.graphics.beginGradientFill("linear", [153, 0xFFFFFF], [100, 100], [0, 0xFF], matrix, "pad", "RGB", 0);
gradient.graphics.moveTo(0, 0);
gradient.graphics.drawCircle(0, 0, radius);
gradient.graphics.endFill();
return (gradient);
}
private function onMouseOut(ev:MouseEvent):void{
outerCircle.alpha = 1;
innerCircle.alpha = 1;
downCircle.visible = false;
downCircle2.visible = false;
symbolLo.visible = true;
symbolHi.visible = false;
}
private function onMouseOver(ev:MouseEvent):void{
outerCircle.alpha = 0.4;
symbolLo.visible = false;
symbolHi.visible = true;
}
private function onMouseUp(ev:MouseEvent):void{
downCircle.visible = false;
downCircle2.visible = false;
symbolLo.visible = true;
symbolHi.visible = false;
}
public function setStyle(style:String):void{
this.tb.visible = false;
symbolLo.graphics.clear();
symbolHi.graphics.clear();
switch (style){
case "play":
symbolLo.graphics.lineStyle(3, 0xFFFFFF, 1);
symbolLo.graphics.moveTo((-(radius) * 0.4), (-(radius) * 0.5));
symbolLo.graphics.lineTo((-(radius) * 0.4), (radius * 0.5));
symbolLo.graphics.lineTo((radius * 0.5), 0);
symbolLo.graphics.lineTo((-(radius) * 0.4), (-(radius) * 0.5));
symbolHi.graphics.beginFill(0xFF00FF);
symbolHi.graphics.lineStyle(3, 0xFFFFFF, 1);
symbolHi.graphics.moveTo((-(radius) * 0.4), (-(radius) * 0.5));
symbolHi.graphics.lineTo((-(radius) * 0.4), (radius * 0.5));
symbolHi.graphics.lineTo((radius * 0.5), 0);
symbolHi.graphics.lineTo((-(radius) * 0.4), (-(radius) * 0.5));
symbolHi.graphics.endFill();
break;
};
}
private function onMouseDown(ev:MouseEvent):void{
downCircle.alpha = 0.3;
downCircle.visible = true;
downCircle2.visible = true;
symbolLo.visible = false;
symbolHi.visible = true;
}
public function setText(s:String):void{
tb.text = s;
}
}
}//package GUI
Section 4
//CircleTimer (GUI.CircleTimer)
package GUI {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class CircleTimer extends Sprite {
private var timeShape:Shape;
private var timeStt:int;
public var timingQ:Boolean;// = false
private var Seconds:int;// = 0
public function CircleTimer(){
timeShape = new Shape();
super();
var bg:Shape = new Shape();
bg.graphics.lineStyle(5, 14540287, 1);
bg.graphics.beginFill(15658751);
bg.graphics.moveTo(0, 0);
bg.graphics.drawCircle(0, 0, 35);
bg.graphics.endFill();
addChild(bg);
addChild(timeShape);
}
private function timeLoop(ev:Event):void{
var Pct:Number;
var degrees:Number;
timeShape.graphics.clear();
var Elapsed:Number = ((getTimer() - timeStt) / 1000);
if (Elapsed < Seconds){
Pct = (Elapsed / Seconds);
degrees = Math.min(360, (360 * Pct));
HiGraphics.drawSector(timeShape, 0, 0, 30, (0 - 90), (degrees - 90), 0, 1, 0xFF, true);
} else {
trace("time ends");
timeShape.graphics.beginFill(0x880088);
timeShape.graphics.drawCircle(0, 0, 30);
timeShape.graphics.endFill();
removeEventListener(Event.ENTER_FRAME, timeLoop);
dispatchEvent(new Event("TimesUp"));
};
}
public function start(TheSeconds:int, TheClr:uint):void{
Seconds = TheSeconds;
var Clr:uint = TheClr;
timingQ = true;
timeStt = getTimer();
addEventListener(Event.ENTER_FRAME, timeLoop);
}
}
}//package GUI
Section 5
//Colors (GUI.Colors)
package GUI {
public class Colors {
private var clrs:Array;
private var pts:Array;
private var clrNum:Number;// = 0
public function Colors(){
clrs = [["Red", 0xFF0000], ["Violet", 15631086], ["Orange", 0xFFA500], ["LightSalmon", 16752762], ["SlateBlue", 6970061], ["Yellow", 0xFFFF00], ["Aquamarine", 8388564], ["Pink", 16761035], ["Coral", 16744272], ["Green", 0x8000], ["Black", 0], ["Lime", 0xFF00], ["PaleGreen", 10025880], ["SpringGreen", 65407], ["Teal", 0x8080], ["DarkSeaGreen", 9419919], ["HotPink", 16738740], ["Yellow", 0xFFFF00], ["Blue", 0xFF], ["Aqua", 0xFFFF], ["Gold", 0xFFD700], ["Khaki", 15787660], ["Thistle", 14204888], ["Cyan", 0xFFFF], ["LightBlue", 11393254], ["SkyBlue", 8900331], ["Navy", 128], ["Purple", 0x800080], ["Wheat", 16113331], ["Tan", 13808780], ["AntiqueWhite", 16444375], ["Silver", 0xC0C0C0]];
pts = new Array();
super();
}
public function RGB2Clr(Red:int, Green:int, Blue:int):uint{
return ((((Red << 16) | (Green << 8)) | Blue));
}
public function createRandomGrid(width:int, height:int, ptCount:int):void{
var ptX:Number;
var ptY:Number;
var ptClr:uint;
pts = [];
var i:int;
while (i < ptCount) {
ptX = (Math.random() * width);
ptY = (Math.random() * height);
ptClr = clrs[Maths.randomRange(0, clrs.length)][1];
pts.push([ptX, ptY, ptClr]);
i++;
};
}
public function getClrAt(width:int, height:int):uint{
var dist:Number;
var fact:Number;
var rgb:Array;
var sumClrs:Array = new Array();
var sumClr:Number = 0;
var sumFact:Number = 0;
sumClrs = [0, 0, 0];
var i:int;
while (i < pts.length) {
dist = Maths.dist((pts[i][0] - width), (pts[i][1] - height));
fact = (1 / dist);
rgb = Clr2RGB(pts[i][2]);
sumClrs[0] = (sumClrs[0] + (rgb[0] * fact));
sumClrs[1] = (sumClrs[1] + (rgb[1] * fact));
sumClrs[2] = (sumClrs[2] + (rgb[2] * fact));
sumFact = (sumFact + fact);
i++;
};
var clr:uint = RGB2Clr((sumClrs[0] / sumFact), (sumClrs[1] / sumFact), (sumClrs[2] / sumFact));
return (clr);
}
public function getNext():Number{
clrNum++;
if (clrNum >= clrs.length){
clrNum = 0;
};
return (clrs[clrNum][1]);
}
public function Clr2RGB(clr:uint):Array{
var clrs:Array = [];
clrs.push(((clr >> 16) & 0xFF));
clrs.push(((clr >> 8) & 0xFF));
clrs.push((clr & 0xFF));
return (clrs);
}
public function getLightness():Number{
var clr:uint = clrs[clrNum][1];
var r:uint = (clr >> 16);
var g:uint = ((clr >> 8) & 0xFF);
var b:uint = (clr & 0xFF);
return (((((r + g) + b) / 3) / 0xFF));
}
}
}//package GUI
Section 6
//GoodSprite (GUI.GoodSprite)
package GUI {
import flash.events.*;
import flash.display.*;
public class GoodSprite extends Sprite {
private var shakeStep:Number;// = 0
private var alphaStep:Number;// = 0
private var shakes:Array;
public function GoodSprite(){
shakes = new Array();
super();
}
private function fadeLoop(ev:Event):void{
if (alphaStep < 0){
if (this.alpha > 0){
this.alpha = (this.alpha + alphaStep);
} else {
this.alpha = 0;
this.visible = false;
removeEventListener(Event.ENTER_FRAME, fadeLoop);
};
} else {
if (this.alpha < 1){
this.alpha = (this.alpha + alphaStep);
} else {
this.alpha = 1;
removeEventListener(Event.ENTER_FRAME, fadeLoop);
};
};
}
public function shake():void{
var factor:Number = (3 * Maths.randomRange(1, 2));
this.shakes.push(factor);
this.shakes.push((factor * 2));
var i:int;
while (i < (factor * 2)) {
this.shakes.push(((factor * 2) - i));
i = (i + 2);
};
shakeStep = 0;
addEventListener(Event.ENTER_FRAME, shakeLoop);
}
private function shakeLoop(ev:Event):void{
if (shakeStep < shakes.length){
if ((shakeStep % 2) == 0){
this.x = (this.x - this.shakes[shakeStep]);
} else {
this.x = (this.x + this.shakes[shakeStep]);
};
shakeStep++;
} else {
removeEventListener(Event.ENTER_FRAME, shakeLoop);
};
}
public function fade(alphaStep:Number):void{
this.alphaStep = alphaStep;
this.visible = true;
if (alphaStep < 0){
this.alpha = 1;
} else {
this.alpha = 0;
};
addEventListener(Event.ENTER_FRAME, fadeLoop);
}
}
}//package GUI
Section 7
//Popup (GUI.Popup)
package GUI {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class Popup extends Sprite {
public var OKBtn:CircleButton;
private var appearType:String;// = "pop"
public function Popup(){
super();
trace("new Popup");
var BG:Shape = createGradient(300, (-(Math.PI) * 0.6));
addChild(BG);
var FG:Shape = new Shape();
FG.graphics.beginFill(8947967, 1);
FG.graphics.drawRoundRect(0, 0, 300, 100, 30);
FG.graphics.endFill();
addChild(FG);
OKBtn = new CircleButton();
OKBtn.x = 270;
OKBtn.y = 70;
addChild(OKBtn);
OKBtn.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
public function setAppearType(appearType:String):void{
appearType = this.appearType;
}
public function close():void{
trace("close");
switch (appearType){
case "pop":
parent.removeChild(this);
break;
case "slide":
break;
};
}
private function onMouseDown(ev:MouseEvent):void{
trace("onMouseDown");
this.close();
}
public function open():void{
switch (appearType){
case "pop":
parent.addChild(this);
break;
case "slide":
break;
};
}
private function createGradient(size:Number, angle:Number):Shape{
var gradient:Shape = new Shape();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(size, size, angle, 0, 0);
gradient.graphics.beginGradientFill("linear", [0, 14540287], [100, 100], [0, 0xFF], matrix, "pad", "RGB", 0);
var edge = 5;
gradient.graphics.moveTo(0, 0);
gradient.graphics.drawRoundRect(-(edge), -(edge), (size + (edge * 2)), (100 + (edge * 2)), (30 + edge));
gradient.graphics.endFill();
return (gradient);
}
}
}//package GUI
Section 8
//ScoreBoard (GUI.ScoreBoard)
package GUI {
import flash.display.*;
import flash.geom.*;
public class ScoreBoard extends Sprite {
private var midClr:Number;// = 13421823
private var bg:Sprite;
private var high:int;// = 90
private var brdrClr:Number;// = 13421823
private var scoreLbl:TextBox;
private var wide:int;// = 600
private var score:int;// = 0
private var scoreBox:Sprite;
private var bgShape:Shape;
private var scoreText:TextBox;
public function ScoreBoard(){
bg = new Sprite();
bgShape = new Shape();
scoreBox = new Sprite();
scoreLbl = new TextBox("Arial", 16, 80, 1, "Score", 0, 0);
scoreText = new TextBox("Arial", 20, 80, 1, "0", 0, 22);
super();
bgShape = createGradient((high * 1.2), (Math.PI / 2), brdrClr, midClr);
bg.addChild(bgShape);
addChild(bg);
scoreLbl.setAlign("center");
scoreBox.addChild(scoreLbl);
scoreBox.graphics.beginFill(16777164, 1);
scoreBox.graphics.lineStyle(1, 0x888888, 1);
scoreBox.graphics.drawRect(0, 20, 80, 30);
scoreBox.graphics.endFill();
scoreText.setAlign("center");
scoreBox.addChild(scoreText);
scoreBox.x = 400;
scoreBox.y = 20;
addChild(scoreBox);
}
public function addScore(x:int):void{
score = (score + x);
if (score < 0){
score = 0;
};
scoreText.setText(score.toString());
}
public function getScore():int{
return (score);
}
private function createGradient(radius:Number, angle:Number, borderClr:Number, hiliteClr:Number):Shape{
var gradient:Shape = new Shape();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(radius, radius, angle, 0, 0);
gradient.graphics.beginGradientFill("linear", [0xFFFFFF, hiliteClr, 0xFFFFFF], [100, 100, 100], [0, 136, 0xFF], matrix, "pad", "RGB", 0);
gradient.graphics.lineStyle(2, borderClr, 1);
gradient.graphics.moveTo(0, 0);
gradient.graphics.drawRoundRect(0, 0, wide, high, high, high);
gradient.graphics.endFill();
return (gradient);
}
public function setScore(x:int):void{
score = x;
scoreText.setText(score.toString());
}
}
}//package GUI
Section 9
//TextBox (GUI.TextBox)
package GUI {
import flash.display.*;
import flash.text.*;
public class TextBox extends TextField {
private var tf:TextFormat;
public function TextBox(fontName:String, fontSize:Number, width:Number, lines:Number=1, textNew:String="", xNew:int=0, yNew:int=0):void{
tf = new TextFormat();
super();
this.x = 0;
this.y = 0;
this.width = width;
this.height = (((lines * fontSize) * 1.1) + 6);
this.border = false;
this.multiline = true;
this.wordWrap = true;
this.selectable = false;
this.mouseEnabled = false;
this.blendMode = BlendMode.LAYER;
this.text = textNew;
this.x = xNew;
this.y = yNew;
tf.size = fontSize;
tf.color = 0;
tf.font = fontName;
tf.bold = true;
this.setTextFormat(tf);
this.defaultTextFormat = tf;
}
public function setFontClr(fontClr:Number):void{
tf.color = fontClr;
this.defaultTextFormat = tf;
this.setTextFormat(tf);
}
public function setAlign(align:String):void{
tf.align = align;
this.defaultTextFormat = tf;
this.setTextFormat(tf);
}
public function cleanup():void{
parent.removeChild(this);
}
public function setText(s:String):void{
this.text = s;
}
}
}//package GUI
Section 10
//Ticks (GUI.Ticks)
package GUI {
import flash.display.*;
public class Ticks extends Sprite {
private var maxTicks:int;// = 5
private var ticks:Array;
private var TickImg:Class;
public function Ticks(){
var tick:Bitmap;
TickImg = Ticks_TickImg;
ticks = new Array();
super();
var i:int;
while (i < maxTicks) {
tick = new TickImg();
tick.x = (i * 38);
tick.y = 0;
ticks[i] = tick;
trace(("x=" + tick.x));
i++;
};
i = (maxTicks - 1);
while (i >= 0) {
addChild(ticks[i]);
i--;
};
}
public function showTicks(count:int):void{
var i:int;
while (i < maxTicks) {
if (i < count){
ticks[i].alpha = 1;
} else {
ticks[i].alpha = 0.1;
};
i++;
};
}
public function hideTicks():void{
var i:int;
while (i < maxTicks) {
ticks[i].alpha = 0;
i++;
};
}
}
}//package GUI
Section 11
//Ticks_TickImg (GUI.Ticks_TickImg)
package GUI {
import mx.core.*;
public class Ticks_TickImg extends BitmapAsset {
}
}//package GUI
Section 12
//Tile (GUI.Tile)
package GUI {
import flash.events.*;
import flash.display.*;
public class Tile extends Sprite {
private var size:int;// = 40
public var loClr:uint;// = 16777164
public var hiClr:uint;// = 0xFF
public var tileNum:int;// = 0
public function Tile(size:int){
super();
this.size = size;
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
drawMe(0xCCCCCC, loClr);
}
public function onMouseDown(ev:MouseEvent):void{
dispatchEvent(new Event("TileClick"));
}
public function onMouseOut(ev:MouseEvent):void{
drawMe(0xCCCCCC, loClr);
}
public function setBGClr(clr:uint):void{
loClr = clr;
drawMe(0xCCCCCC, loClr);
}
public function onMouseOver(ev:MouseEvent):void{
drawMe(0xCCCCCC, hiClr);
}
private function drawMe(edgeClr:uint, bgClr:uint):void{
var edgeClr = edgeClr;
var bgClr = bgClr;
var _local4 = this.graphics;
with (_local4) {
clear();
lineStyle(2, edgeClr);
beginFill(bgClr, 35);
moveTo(0, 0);
lineTo(size, 0);
lineTo(size, size);
lineTo(0, size);
lineTo(0, 0);
endFill();
};
}
}
}//package GUI
Section 13
//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.3.0.4852";
public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
super(bitmapData, pixelSnapping, smoothing);
}
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(newWidth:Number, newHeight:Number):void{
width = newWidth;
height = newHeight;
}
public function move(x:Number, y:Number):void{
this.x = x;
this.y = y;
}
}
}//package mx.core
Section 14
//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.3.0.4852";
public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
var bitmapData = bitmapData;
var pixelSnapping = pixelSnapping;
var smoothing = smoothing;
super(bitmapData, pixelSnapping, smoothing);
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 15
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 16
//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(void:Point):Point;
function get name():String;
function set width(flash.display:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(flash.display:String):void;
function set scaleX(flash.display:Number):void;
function set scaleY(flash.display:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(flash.display:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(void:Point):Point;
function get height():Number;
function set blendMode(flash.display:String):void;
function get parent():DisplayObjectContainer;
function getBounds(String:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(flash.display:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(flash.display:Number):void;
function set accessibilityProperties(flash.display:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(flash.display: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(flash.display:Number):void;
function set mask(flash.display:DisplayObject):void;
function getRect(String:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(flash.display:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean;
function set opaqueBackground(flash.display:Object):void;
function set visible(flash.display:Boolean):void;
function get mask():DisplayObject;
function set x(flash.display:Number):void;
function set y(flash.display:Number):void;
function get transform():Transform;
function set filters(flash.display:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(flash.display:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 17
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(C:\autobuild\3.3.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(C:\autobuild\3.3.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(C:\autobuild\3.3.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(C:\autobuild\3.3.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 18
//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 19
//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.3.0.4852";
private static var counter:int = 0;
public function NameUtil(){
super();
}
public static function displayObjectToString(displayObject:DisplayObject):String{
var result:String;
var o:DisplayObject;
var s:String;
var indices:Array;
var displayObject = displayObject;
o = displayObject;
while (o != null) {
if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
break;
};
s = o.name;
if ((o is IRepeaterClient)){
indices = IRepeaterClient(o).instanceIndices;
if (indices){
s = (s + (("[" + indices.join("][")) + "]"));
};
};
result = ((result == null)) ? s : ((s + ".") + result);
o = o.parent;
};
//unresolved jump
var _slot1 = e;
return (result);
}
public static function createUniqueName(object:Object):String{
if (!object){
return (null);
};
var name:String = getQualifiedClassName(object);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
var charCode:int = name.charCodeAt((name.length - 1));
if ((((charCode >= 48)) && ((charCode <= 57)))){
name = (name + "_");
};
return ((name + counter++));
}
}
}//package mx.utils
Section 20
//HiGraphics (HiGraphics)
package {
import flash.display.*;
public class HiGraphics {
public function HiGraphics(){
super();
}
public static function drawSector(destShape:Shape, midX:int, midY:int, size:int, FromDeg:Number, ToDeg:Number, lineCol:uint, lineAlpha:Number=1, fillCol:uint=0, fillQ:Boolean=false):void{
var steps:*;
var i:*;
var radians:*;
var thisX:*;
var thisY:*;
var destShape = destShape;
var midX = midX;
var midY = midY;
var size = size;
var FromDeg = FromDeg;
var ToDeg = ToDeg;
var lineCol = lineCol;
var lineAlpha = lineAlpha;
var fillCol = fillCol;
var fillQ = fillQ;
var _local12 = destShape.graphics;
with (_local12) {
if (fillQ){
beginFill(fillCol, 1);
};
lineStyle(1, lineCol, lineAlpha);
steps = Math.max(1, int(((ToDeg - FromDeg) / 5)));
moveTo(midX, midY);
i = 0;
while (i <= steps) {
radians = ((FromDeg + ((ToDeg - FromDeg) * (i / steps))) / 57.296);
thisX = (midX + (Math.cos(radians) * size));
thisY = (midY + (Math.sin(radians) * size));
lineTo(thisX, thisY);
i++;
};
lineTo(midX, midY);
if (fillQ){
endFill();
};
};
}
public static function drawPipe(destShape:Shape, x0:Number, y0:Number, x1:Number, y1:Number, clr:uint):void{
var j:*;
var dist:*;
var destShape = destShape;
var x0 = x0;
var y0 = y0;
var x1 = x1;
var y1 = y1;
var clr = clr;
var alpha:Array = [1, 0.8, 0.6, 0.4, 0.4, 0.2, 0.4, 0.6, 1];
var size:int = alpha.length;
var i:int;
while (i < size) {
var _local8 = destShape.graphics;
with (_local8) {
j = 0;
while (j < 2) {
if (j == 0){
lineStyle(1, 0xFFFFFF, 1);
} else {
lineStyle(1, clr, alpha[i]);
};
dist = (((size / 2) - (1 / 2)) - i);
if (y0 == y1){
moveTo(x0, (y0 - dist));
lineTo(x1, (y1 - dist));
};
if (x0 == x1){
moveTo((x0 + dist), y0);
lineTo((x1 + dist), y1);
};
j++;
};
};
i = (i + 1);
};
}
public static function drawArrow(destShape:Shape, x0:Number, y0:Number, arrowlen:Number, arrowht:Number, clr:uint):void{
var destShape = destShape;
var x0 = x0;
var y0 = y0;
var arrowlen = arrowlen;
var arrowht = arrowht;
var clr = clr;
var _local8 = destShape.graphics;
with (_local8) {
beginFill(clr, 100);
moveTo(x0, y0);
lineTo((x0 - arrowlen), (y0 + (arrowht / 2)));
lineTo((x0 - arrowlen), (y0 - (arrowht / 2)));
lineTo(x0, y0);
endFill();
};
}
public static function drawPipeCorner(destShape:Shape, x0:Number, y0:Number, fromUDLR:String, toUDLR:String, clr:uint):void{
var j:*;
var dist:*;
var destShape = destShape;
var x0 = x0;
var y0 = y0;
var fromUDLR = fromUDLR;
var toUDLR = toUDLR;
var clr = clr;
var alpha:Array = [1, 0.8, 0.6, 0.4, 0.4, 0.2, 0.4, 0.6, 1];
var size:int = alpha.length;
var radius:int = ((size / 2) - (1 / 2));
var i:int;
while (i < size) {
var _local8 = destShape.graphics;
with (_local8) {
j = 0;
while (j < 2) {
if (j == 0){
lineStyle(1, 0xFFFFFF, 1);
} else {
lineStyle(1, clr, alpha[i]);
};
dist = (((size / 2) - (1 / 2)) - i);
switch (((fromUDLR + ",") + toUDLR)){
case "3,1":
case "0,2":
moveTo((x0 - radius), ((y0 - radius) + i));
lineTo((((x0 + radius) - i) + 1), ((y0 - radius) + i));
moveTo(((x0 + radius) - i), ((y0 - radius) + i));
lineTo(((x0 + radius) - i), ((y0 + radius) + 1));
break;
case "3,0":
case "1,2":
moveTo((x0 - radius), ((y0 - radius) + i));
lineTo((((x0 - radius) + i) + 1), ((y0 - radius) + i));
moveTo(((x0 + radius) - i), (y0 - radius));
lineTo(((x0 + radius) - i), ((y0 + radius) - i));
break;
case "2,1":
case "0,3":
moveTo((x0 + radius), ((y0 - radius) + i));
lineTo(((x0 - radius) + i), ((y0 - radius) + i));
moveTo(((x0 + radius) - i), ((y0 + radius) - i));
lineTo(((x0 + radius) - i), (y0 + radius));
break;
case "2,0":
case "1,3":
moveTo((x0 + radius), ((y0 - radius) + i));
lineTo(((x0 + radius) - i), ((y0 - radius) + i));
moveTo(((x0 + radius) - i), (y0 - radius));
lineTo(((x0 + radius) - i), ((y0 - radius) + i));
break;
};
j++;
};
};
i = (i + 1);
};
}
}
}//package
Section 21
//Main (Main)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import GUI.*;
import General.*;
import flash.utils.*;
public class Main extends Sprite {
private var tiles:Array;
private var playerPosY:Number;// = 0
private var instructText:TextBox;
private var playBtn:CircleButton;
private var PlayerImg:Class;
private var playerPosX:Number;// = 0
private var tileSprite:Sprite;
private var playerImg:Bitmap;
private var mapHeight:Number;// = 0
private var finalY:Number;// = 0
private var userPosition:Number;// = 0
private var finalX:Number;// = 0
private var startX:Number;// = 0
private var startY:Number;// = 0
private var tileWidth:Number;// = 30
private var finalPosition:Number;// = 0
private var games:Games;
private var timer:CircleTimer;
private var route:Array;
private var mapWidth:Number;// = 0
private var compassImg:Bitmap;
private var pathSprite:Shape;
private var gameOverVar:Boolean;// = false
private var highScores:HighScores;
private var clrs:Colors;
private var gamesPopup:Popup;
private var CompassImg:Class;
private var summaryText:TextBox;
private var scoreBoard:ScoreBoard;
private var tileHeight:Number;// = 30
private var ticks:Ticks;
public function Main():void{
PlayerImg = Main_PlayerImg;
playerImg = new PlayerImg();
CompassImg = Main_CompassImg;
compassImg = new CompassImg();
ticks = new Ticks();
playBtn = new CircleButton(40);
summaryText = new TextBox("Arial", 36, 560, 1, "", 40, 220);
instructText = new TextBox("Arial", 20, 300, 10, "", 30, 30);
timer = new CircleTimer();
scoreBoard = new ScoreBoard();
gamesPopup = new Popup();
clrs = new Colors();
tiles = new Array();
tileSprite = new Sprite();
pathSprite = new Shape();
route = new Array();
super();
if (stage){
init();
} else {
addEventListener(Event.ADDED_TO_STAGE, init);
};
}
private function check():void{
trace("check");
trace(((("final:" + finalX) + ",") + finalY));
var userY:Number = int((userPosition / mapWidth));
var userX:Number = (userPosition - (userY * mapWidth));
trace(((("user:" + userX) + ",") + userY));
var decrease:int = int((Maths.dist((userX - finalX), (userY - finalY)) * 2.3));
trace(("decrease:" + decrease));
var currScore:Number = (5 - decrease);
if (currScore < 0){
currScore = 0;
};
var endP:Point = new Point(((startX + (finalX * tileWidth)) + (tileWidth / 2)), ((startY + (finalY * tileHeight)) + (tileHeight / 2)));
pathSprite.graphics.moveTo(endP.x, endP.y);
pathSprite.graphics.beginFill(0xFF0000, 1);
pathSprite.graphics.drawCircle(endP.x, endP.y, 12);
pathSprite.graphics.endFill();
ticks.showTicks(currScore);
ticks.visible = true;
scoreBoard.addScore(currScore);
setTimeout(newRound, 1000);
}
private function init(e:Event=null):void{
removeEventListener(Event.ADDED_TO_STAGE, init);
games = new Games(["title", "moves", "minWidth", "maxWidth", "minHeight", "maxHeight", "neg"]);
games.add("2", [["2 Moves", ""], 2, 10, 15, 6, 10, false]);
games.add("3", [["3 Moves", ""], 3, 10, 15, 6, 10, false]);
games.add("4", [["4 Moves", ""], 4, 10, 15, 6, 10, false]);
games.add("4neg", [["4 Moves incl negatives", ""], 4, 10, 15, 6, 10, true]);
games.add("5", [["5 Moves", ""], 5, 10, 15, 6, 10, false]);
games.add("5neg", [["5 Moves incl negatives", ""], 5, 10, 15, 6, 10, true]);
games.setGame(this.root.loaderInfo.parameters["m"]);
highScores = new HighScores("Direction", games.getGame());
gamesPopup.setAppearType("slide");
gamesPopup.visible = false;
addChild(gamesPopup);
playBtn.x = (stage.stageWidth / 2);
playBtn.y = 160;
playBtn.setStyle("play");
playBtn.addEventListener(MouseEvent.MOUSE_DOWN, newGame);
addChild(playBtn);
scoreBoard.x = 20;
scoreBoard.y = 320;
addChild(scoreBoard);
timer.x = 70;
timer.y = 365;
addChild(timer);
addChild(tileSprite);
addChild(pathSprite);
ticks.x = 210;
ticks.y = 260;
ticks.visible = false;
addChild(ticks);
playerImg.scaleX = 0.6;
playerImg.scaleY = 0.6;
addChild(playerImg);
compassImg.x = 18;
compassImg.y = 200;
addChild(compassImg);
addChild(instructText);
summaryText.setAlign("center");
addChild(summaryText);
clearAll();
}
private function newGame(ev:MouseEvent):void{
highScores.setStt();
clearAll();
gameOverVar = false;
playBtn.fade(-0.1);
scoreBoard.setScore(0);
timer.start(60, 0xFF);
timer.addEventListener("TimesUp", gameOver);
playerImg.visible = true;
instructText.visible = true;
summaryText.visible = false;
newRound();
}
private function tracePath():void{
var tempX:*;
var tempY:*;
var i:*;
var p0:*;
var p1:*;
pathSprite.graphics.clear();
var _local2 = pathSprite.graphics;
with (_local2) {
tempX = playerPosX;
tempY = playerPosY;
lineStyle(2, 0xFF, 100);
i = 0;
while (i < route.length) {
p0 = new Point(((startX + (tempX * tileWidth)) + (tileWidth / 2)), ((startY + (tempY * tileHeight)) + (tileHeight / 2)));
switch (route[i][0]){
case 0:
tempY = (tempY - route[i][1]);
break;
case 1:
tempY = (tempY + route[i][1]);
break;
case 2:
tempX = (tempX - route[i][1]);
break;
case 3:
tempX = (tempX + route[i][1]);
break;
};
p1 = new Point(((startX + (tempX * tileWidth)) + (tileWidth / 2)), ((startY + (tempY * tileHeight)) + (tileHeight / 2)));
HiGraphics.drawPipe(pathSprite, p0.x, p0.y, p1.x, p1.y, 0xFF);
if (i > 0){
HiGraphics.drawPipeCorner(pathSprite, p0.x, p0.y, route[(i - 1)][0], route[i][0], 0xFF);
};
i++;
};
};
}
private function clearTiles():void{
var i:int;
while (i < tiles.length) {
tileSprite.removeChild(tiles[i]);
i++;
};
tiles = [];
}
private function newRound():void{
if (!gameOverVar){
ticks.visible = false;
userPosition = 0;
instructText.setText("");
pathSprite.graphics.clear();
clearTiles();
generate();
};
}
private function clearAll():void{
summaryText.setText("");
clearTiles();
playerImg.visible = false;
instructText.visible = false;
}
private function onTileClick(ev:Event):void{
trace(("ggg=" + ev.currentTarget.tileNum));
userPosition = ev.currentTarget.tileNum;
tracePath();
check();
}
private function gameOver(ev:Event):void{
trace("game over");
gameOverVar = true;
playBtn.fade(0.1);
clearAll();
summaryText.setText(("Total Score: " + scoreBoard.getScore().toString()));
summaryText.visible = true;
highScores.addMe(scoreBoard.getScore(), 0, 0);
}
private function generate():void{
var i:int;
var tile:Tile;
var possible:*;
var found:*;
var direction:*;
var stepCount:int;
var negQ:Boolean;
var dirType:String;
mapWidth = Maths.randomRange(games.option("minWidth"), games.option("maxWidth"));
mapHeight = Maths.randomRange(games.option("minHeight"), games.option("maxHeight"));
playerPosX = Maths.randomRange(0, mapWidth);
playerPosY = Maths.randomRange(0, mapHeight);
var currentTile:Number = Maths.randomRange(1, 7);
startX = (int(((stage.stageWidth / 2) - ((mapWidth * tileWidth) / 2))) + 80);
startY = (int(((stage.stageHeight / 2) - ((mapHeight * tileHeight) / 2))) - 70);
clrs.createRandomGrid(mapWidth, mapHeight, 3);
i = 0;
while (i < (mapWidth * mapHeight)) {
tile = new Tile(30);
tile.x = (startX + ((i % mapWidth) * tileWidth));
tile.y = (startY + (int((i / mapWidth)) * tileHeight));
tile.tileNum = i;
tile.addEventListener("TileClick", onTileClick);
tile.setBGClr(clrs.getClrAt((i % mapWidth), int((i / mapWidth))));
tileSprite.addChild(tile);
tiles[i] = tile;
i++;
};
playerImg.x = (startX + (playerPosX * tileWidth));
playerImg.y = (startY + (playerPosY * tileHeight));
route = new Array();
var moveCount:Number = Maths.randomRange(2, 6);
moveCount = games.option("moves");
var counter:Number = 0;
var tempPosX:Number = playerPosX;
var tempPosY:Number = playerPosY;
var prevDirn = -1;
do {
route[counter] = new Array();
possible = new Array(0, 0, 0, 0);
possible[0] = tempPosY;
possible[1] = ((mapHeight - 1) - tempPosY);
possible[2] = tempPosX;
possible[3] = ((mapWidth - 1) - tempPosX);
switch (prevDirn){
case 0:
case 1:
possible[0] = 0;
possible[1] = 0;
break;
case 2:
case 3:
possible[2] = 0;
possible[3] = 0;
break;
};
found = false;
do {
direction = Maths.randomRange(0, 5);
if (possible[direction] > 0){
found = true;
};
} while (!(found));
prevDirn = direction;
route[counter][0] = direction;
route[counter][1] = Maths.randomRange(1, (possible[direction] + 1));
switch (direction){
case 0:
tempPosY = (tempPosY - route[counter][1]);
break;
case 1:
tempPosY = (tempPosY + route[counter][1]);
break;
case 2:
tempPosX = (tempPosX - route[counter][1]);
break;
case 3:
tempPosX = (tempPosX + route[counter][1]);
break;
};
counter++;
} while (counter < moveCount);
trace(((tempPosX + ",") + tempPosY));
trace((tempPosX + (mapWidth * tempPosY)));
finalPosition = (tempPosX + (mapWidth * tempPosY));
finalX = tempPosX;
finalY = tempPosY;
var dirns:Array = new Array();
dirns["n+"] = ["north", "south", "west", "east"];
dirns["n-"] = ["south", "north", "east", "west"];
var instruct:String = "";
i = 0;
while (i < route.length) {
stepCount = route[i][1];
negQ = false;
if (((games.option("neg")) && ((Math.random() > 0.7)))){
negQ = true;
};
if (negQ){
dirType = "n-";
stepCount = -(stepCount);
} else {
dirType = "n+";
};
instruct = (instruct + stepCount);
if (route[i][1] > 1){
instruct = (instruct + " steps ");
} else {
instruct = (instruct + " step ");
};
instruct = (instruct + dirns[dirType][route[i][0]]);
instruct = (instruct + "<br />");
i++;
};
instructText.htmlText = instruct;
}
}
}//package
Section 22
//Main_CompassImg (Main_CompassImg)
package {
import mx.core.*;
public class Main_CompassImg extends BitmapAsset {
}
}//package
Section 23
//Main_PlayerImg (Main_PlayerImg)
package {
import mx.core.*;
public class Main_PlayerImg extends BitmapAsset {
}
}//package
Section 24
//Maths (Maths)
package {
public class Maths {
public function Maths(){
super();
}
public function sign(n:Number):int{
var i:int = ((n < 0)) ? -1 : 1;
return (i);
}
public static function randomRange(minVal:int, maxVal:int):int{
return ((Math.floor((Math.random() * (maxVal - minVal))) + minVal));
}
public static function fmt(num:Number, digits:int):String{
if (digits <= 0){
return (Math.round(num).toString());
};
var tenToPower:Number = Math.pow(10, digits);
var cropped:String = String((Math.round((num * tenToPower)) / tenToPower));
if (cropped.indexOf(".") == -1){
cropped = (cropped + ".0");
};
var halves:Array = cropped.split(".");
var zerosNeeded:int = (digits - halves[1].length);
var i = 1;
while (i <= zerosNeeded) {
cropped = (cropped + "0");
i++;
};
return (cropped);
}
public static function fmt2(x:Number):String{
var s:String = (Math.round((x * 100)) / 100).toString();
return (s);
}
public static function dist(dx:Number, dy:Number):Number{
return (Math.sqrt(((dx * dx) + (dy * dy))));
}
}
}//package