Section 1
//Algorithms (as3.Algorithms)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Algorithms {
public static function insertIntoArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (false);
};
_local3++;
};
_arg2.push(_arg1);
return (true);
}
public static function orderPointsClockwise(_arg1:Array):Array{
var _local2:int;
var _local3:Object;
var _local4:Array;
var _local5:Array;
var _local6:Number;
var _local7:int;
var _local8:int;
_local3 = new Object();
_local3.x = (_local3.y = 0);
_local2 = 0;
while (_local2 < _arg1.length) {
_local3.x = (_local3.x + _arg1[_local2].x);
_local3.y = (_local3.y + _arg1[_local2].y);
_local2++;
};
_local3.x = (_local3.x / _arg1.length);
_local3.y = (_local3.y / _arg1.length);
_local4 = new Array(_arg1.length);
_local2 = 0;
while (_local2 < _arg1.length) {
_local4[_local2] = Math.atan2((_arg1[_local2].y - _local3.y), (_arg1[_local2].x - _local3.x));
_local2++;
};
_local5 = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local6 = Infinity;
_local7 = -1;
_local8 = 0;
while (_local8 < _arg1.length) {
if (((!(isNaN(_local4[_local8]))) && ((_local4[_local8] < _local6)))){
_local7 = _local8;
_local6 = _local4[_local8];
};
_local8++;
};
_local5.push(_arg1[_local7]);
_local4[_local7] = NaN;
_local2++;
};
return (_local5);
}
public static function pointsToShape(_arg1:Array):Array{
var _local2:Array;
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:*;
_local2 = new Array();
_local6 = 0;
_local7 = 0;
while (_local7 < (_arg1.length - 1)) {
_local3 = new Object();
_local4 = (_arg1[(_local7 + 1)].x - _arg1[_local7].x);
_local5 = (_arg1[(_local7 + 1)].y - _arg1[_local7].y);
_local3.length = Math.floor(_pointShapeDistance(_arg1[_local7], _arg1[(_local7 + 1)]));
if (Math.abs(_local4) > (Math.abs(_local5) * 3)){
_local3.dir = ((_local4 > 0)) ? "r" : "l";
} else {
if (Math.abs(_local5) > (Math.abs(_local4) * 3)){
_local3.dir = ((_local5 > 0)) ? "d" : "u";
} else {
_local3.dir = ((_local5 > 0)) ? "d" : "u";
_local3.dir = (_local3.dir + ((_local4 > 0)) ? "r" : "l");
};
};
_local2.push(_local3);
_local6 = Math.max(_local6, _local3.length);
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
if (_local2[_local7].length < (_local6 / 5)){
_local2.splice(_local7, 1);
_local7--;
};
if ((((_local7 > 0)) && ((_local2[_local7].dir == _local2[(_local7 - 1)].dir)))){
_local2[(_local7 - 1)].length = (_local2[(_local7 - 1)].length + _local2[_local7].length);
_local2.splice(_local7, 1);
_local7--;
};
_local7++;
};
_local7 = 0;
while (_local7 < _local2.length) {
switch (_local2[_local7].dir){
case "ur":
_local2[_local7] = "e";
break;
case "dr":
_local2[_local7] = "f";
break;
case "dl":
_local2[_local7] = "g";
break;
case "ul":
_local2[_local7] = "h";
break;
default:
_local2[_local7] = _local2[_local7].dir;
};
_local7++;
};
return (_local2);
}
public static function deform(_arg1:MovieClip, _arg2:Number, _arg3:Number){
var _local4:Matrix;
var _local5:Matrix;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Matrix;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local4 = new Matrix();
_local4.a = 1;
_local4.b = 0;
_local4.c = 0;
_local4.d = 1;
_local5 = new Matrix();
_local5.a = ((1 + (Math.abs(_arg2) * _arg1.deformDist)) - (Math.abs(_arg3) * _arg1.deformDist));
_local5.b = 0;
_local5.c = 0;
_local5.d = ((1 + (Math.abs(_arg3) * _arg1.deformDist)) - (Math.abs(_arg2) * _arg1.deformDist));
_local6 = Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3)));
_local7 = 0;
_local8 = (Boolean(((_arg2 * _arg3) < 0))) ? -1 : 1;
if (_local6){
_local10 = Math.atan2(_arg3, _arg2);
_local11 = Math.floor(((_local10 * 8) / Number((Math.PI * 2))));
_local12 = (_local10 - (((_local11 * Math.PI) * 2) / 8));
_local7 = (_local12 / Number((Math.PI * 0.25)));
if ((_local11 % 2)){
_local7 = (1 - _local7);
};
};
_local9 = new Matrix();
_local9.a = 1;
_local9.b = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.c = ((((_local8 * _local7) * _arg1.maxAngle) * _arg1.deformDist) * _local6);
_local9.d = 1;
_local4.concat(_local5);
_local4.concat(_local9);
_local4.tx = _arg1.transform.matrix.tx;
_local4.ty = _arg1.transform.matrix.ty;
_arg1.transform.matrix = _local4;
}
public static function deformMatrix(_arg1:Matrix, _arg2:Number, _arg3:Number, _arg4:Number=1){
var _local5:Matrix;
var _local6:Number;
var _local7:Matrix;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Matrix;
var _local16:Number;
var _local17:Number;
var _local18:Number;
_local5 = new Matrix();
_local5.a = 1;
_local5.b = 0;
_local5.c = 0;
_local5.d = 1;
_local6 = ((Math.abs(_arg2) - Math.abs(_arg3)) * _arg4);
_local7 = new Matrix();
_local7.a = (1 + _local6);
_local7.b = 0;
_local7.c = 0;
_local7.d = (1 - _local6);
_local8 = (Math.PI * 0.25);
_local9 = ((Math.PI * 2) / 8);
_local10 = (1 / _local9);
_local11 = (Math.sqrt(((_arg2 * _arg2) + (_arg3 * _arg3))) * _arg4);
_local12 = 0;
_local13 = (Boolean(!(((_arg2 <= 0) == (_arg3 <= 0))))) ? -1 : 1;
if (_local11){
_local16 = Math.atan2(_arg3, _arg2);
_local17 = Math.floor((_local16 * _local10));
_local18 = (_local16 - (_local17 * _local9));
_local12 = (_local18 / Number(_local8));
if ((_local17 % 2)){
_local12 = (1 - _local12);
};
};
_local14 = ((_local13)<0) ? ((-(_local12) * _local8) * _local11) : ((_local12 * _local8) * _local11);
_local15 = new Matrix();
_local15.a = 1;
_local15.b = _local14;
_local15.c = _local14;
_local15.d = 1;
_local5.concat(_local7);
_local5.concat(_local15);
_arg1.a = _local5.a;
_arg1.b = _local5.b;
_arg1.c = _local5.c;
_arg1.d = _local5.d;
}
public static function isInArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
return (true);
};
_local3++;
};
return (false);
}
public static function removeFromArray(_arg1, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3] == _arg1){
_arg2.splice(_local3, 1);
return (true);
};
_local3++;
};
return (false);
}
private static function _pointShapeDistance(_arg1:Object, _arg2:Object):Number{
return (Math.sqrt((Math.pow((_arg2.x - _arg1.x), 2) + Math.pow((_arg2.y - _arg1.y), 2))));
}
public static function simplifyPointsList(_arg1:Array):Array{
var _local2:Array;
var _local3:Number;
var _local4:*;
_local2 = new Array();
_local3 = 0;
_local2.push(_arg1[0]);
_local4 = 1;
while (_local4 < (_arg1.length - 1)) {
if ((((Math.abs((_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)]))) >= (Math.PI / 2.5))) || ((Math.abs(_local3) >= (Math.PI / 3))))){
_local2.push(_arg1[_local4]);
_local3 = 0;
} else {
_local3 = (_local3 + (_pointShapeAngle(_arg1[(_local4 + 1)], _arg1[_local4]) - _pointShapeAngle(_arg1[_local4], _arg1[(_local4 - 1)])));
};
_local4++;
};
_local2.push(_arg1[(_arg1.length - 1)]);
return (_local2);
}
private static function _pointShapeAngle(_arg1:Object, _arg2:Object):Number{
return (Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x)));
}
public static function balancePoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:int=1):Array{
var _local8:Array;
var _local9:int;
_local8 = [_arg1, _arg2, _arg3];
_local9 = 0;
while (_local9 < _arg7) {
_local8 = [(_local8[0] + (_arg2 * _arg4)), ((_local8[1] * _arg4) + _local8[2]), ((_arg5 - _local8[0]) * _arg6)];
_local9++;
};
return (_local8);
}
public static function myGetShape(_arg1:Array):String{
var _local2:Array;
var _local3:Number;
var _local4:String;
var _local5:String;
_local2 = simplifyPointsList(_arg1);
_local5 = pointsToShape(_local2).join("");
switch (_local5){
case "d":
return ("|v");
case "u":
return ("|^");
case "ef":
case "hg":
return ("^");
case "dr":
case "lu":
return ("L");
case "ur":
case "ld":
return ("Γ");
case "ldr":
case "lur":
return ("[");
case "ufu":
case "dhd":
return ("N");
default:
return ("");
};
}
public static function updateHand(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Array, _arg5:Array, _arg6:Object){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local7 = (Math.PI * 0.5);
_arg1.x = _arg2;
_arg1.y = _arg3;
_arg4[0] = Geometry.interpolateAngle(_arg4[0], _arg5[0], 0.2);
_arg4[1] = Geometry.interpolateAngle(_arg4[1], _arg5[1], 0.2);
if (_arg5.length >= 3){
_arg4[2] = Geometry.interpolateAngle(_arg4[2], _arg5[2], 0.2);
} else {
_arg4[2] = Geometry.interpolateAngle(_arg4[2], 0, 0.2);
};
if (_arg4[0] > _local7){
_arg4[0] = _local7;
} else {
if (_arg4[0] < -(_local7)){
_arg4[0] = -(_local7);
};
};
if (_arg4[1] > _local7){
_arg4[1] = _local7;
} else {
if (_arg4[1] < -(_local7)){
_arg4[1] = -(_local7);
};
};
_local8 = Math.abs((_arg4[2] / _local7));
if (_arg4[0] < 0){
_arg1.addChildAt(_arg1.thumb_mc, 0);
} else {
_arg1.addChildAt(_arg1.thumb_mc, (_arg1.numChildren - 1));
};
if (_arg4[1] > 0){
_arg1.addChildAt(_arg1.wrist_mc, 0);
} else {
_arg1.addChildAt(_arg1.wrist_mc, (_arg1.numChildren - 1));
};
_local9 = (_arg4[0] / _local7);
_local10 = (_arg4[1] / _local7);
_local11 = Math.abs(_local9);
_local12 = Math.abs(_local10);
_local13 = ((((_local9 * _local10) * _local7) * (1 - _local8)) + (_local8 * _arg4[2]));
_arg1.glove_mc.scaleX = (_arg6.glove.max.x - (((_arg6.glove.max.x - _arg6.glove.min.x) * _local11) * (1 - _local12)));
_arg1.wrist_mc.scaleX = (_arg6.wrist.max.x - (((_arg6.wrist.max.x - _arg6.wrist.min.x) * _local11) * (1 - _local12)));
_arg1.thumb_mc.x = (_arg6.orig.thumbX + (((_arg6.end.thumbX - _arg6.orig.thumbX) * _local11) * (1 - _local12)));
_arg1.glove_mc.scaleY = (_arg6.glove.max.y - (((_arg6.glove.max.y - _arg6.glove.min.y) * _local12) * (1 - _local11)));
_arg1.thumb_mc.scaleY = _arg1.glove_mc.scaleY;
_arg1.wrist_mc.scaleY = (_arg6.wrist.min.y + (((_arg6.wrist.max.y - _arg6.wrist.min.y) * _local12) * (1 - _local11)));
_arg1.wrist_mc.y = (_arg6.orig.wristY + (((_arg6.end.wristY - _arg6.orig.wristY) * _local12) * (1 - _local11)));
_arg1.rotation = (_arg4[2] * Geometry.RAD_TO_DEG);
}
public static function liquidInPolygon(_arg1:Number, _arg2:Array, _arg3:Number, _arg4:Number):Array{
var _local5:Number;
var _local6:Number;
var _local7:Object;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Array;
var _local13:Array;
var _local14:Array;
var _local15:Point;
var _local16:Number;
var _local17:Number;
var _local18:int;
_local5 = -(Infinity);
_local6 = Infinity;
_local8 = 0;
while (_local8 < _arg2.length) {
_local7 = Geometry.rotate(_arg1, _arg2[_local8].x, _arg2[_local8].y);
_arg2[_local8].x = _local7.x;
_arg2[_local8].y = _local7.y;
_local5 = Math.max(_arg2[_local8].y, _local5);
_local6 = Math.min(_arg2[_local8].y, _local6);
_local8++;
};
_local9 = (_arg4 * _arg3);
_local10 = 0;
_local11 = 0;
_local13 = [];
_local14 = [];
_local15 = new Point();
_local16 = Math.abs((_local5 - _local6));
_local17 = ((_local6 + _local5) * 0.5);
_local18 = 50;
do {
_local13 = Geometry.getSidePoints(_arg2, _local17);
_local14 = [];
_local8 = 0;
while (_local8 < _arg2.length) {
if (_arg2[_local8].y >= _local17){
_local14.push(_arg2[_local8]);
};
_local8++;
};
_local12 = _local13.concat(_local14);
_local12 = orderPointsClockwise(_local12);
trace("Algorithm::liquidInPolygon\nYou'll have to fix this later. Try to connect the 'sides' and 'lower' arrays coherently.\nAvoid having to use the orderPointsClockwise() function.");
_local10 = Geometry.polygonArea(_local12);
_local17 = (_local17 - ((_local16 * (_local9 - _local10)) / _arg4));
_local18--;
} while ((((Math.abs((_local10 - _local9)) > Geometry.TOLERANCE)) && ((_local18 > 0))));
_local8 = 0;
while (_local8 < _local12.length) {
_local7 = Geometry.rotate(-(_arg1), _local12[_local8].x, _local12[_local8].y);
_local12[_local8].x = _local7.x;
_local12[_local8].y = _local7.y;
_local8++;
};
return (_local12);
}
public static function hasLabel(_arg1:MovieClip, _arg2:String):Boolean{
var _local3:Array;
var _local4:FrameLabel;
var _local5:int;
_local3 = _arg1.currentLabels;
_local5 = 0;
while (_local5 < _local3.length) {
_local4 = _local3[_local5];
if (_local4.name == _arg2){
return (true);
};
_local5++;
};
return (false);
}
public static function adjustScreen(_arg1:DisplayObject, _arg2:DisplayObject){
var _local3:Stage;
var _local4:Rectangle;
if (!_arg1.stage){
return;
};
_local3 = _arg1.stage;
_local4 = _arg2.getRect(_local3);
if (_local4.width < _local3.stageWidth){
_arg1.scaleX = (_arg1.scaleX * (_local3.stageWidth / _local4.width));
_arg1.scaleY = _arg1.scaleX;
_local4 = _arg2.getRect(_local3);
};
if (_local4.height < _local3.stageHeight){
_arg1.scaleY = (_arg1.scaleY * (_local3.stageHeight / _local4.height));
_arg1.scaleX = _arg1.scaleY;
_local4 = _arg2.getRect(_local3);
};
if (_local4.x > 0){
_arg1.x = (_arg1.x - _local4.x);
_local4 = _arg2.getRect(_local3);
};
if (_local4.y > 0){
_arg1.y = (_arg1.y - _local4.y);
_local4 = _arg2.getRect(_local3);
};
if ((_local4.x + _local4.width) < _local3.stageWidth){
_arg1.x = (_arg1.x + (_local3.stageWidth - (_local4.x + _local4.width)));
_local4 = _arg2.getRect(_local3);
};
if ((_local4.y + _local4.height) < _local3.stageHeight){
_arg1.y = (_arg1.y + (_local3.stageHeight - (_local4.y + _local4.height)));
_local4 = _arg2.getRect(_local3);
};
}
public static function approximatePoint(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * _arg3)));
}
}
}//package as3
Section 2
//Drawing (as3.Drawing)
package as3 {
import flash.display.*;
import flash.geom.*;
import fl.motion.*;
public class Drawing {
public static function drawHeart(_arg1:Graphics, _arg2:Number, _arg3:Number){
var _local4:Number;
var _local5:Number;
var _local6:Object;
var _local7:Object;
var _local8:Object;
var _local9:Object;
var _local10:Object;
var _local11:Object;
var _local12:Object;
var _local13:Object;
var _local14:Object;
var _local15:Object;
_local4 = (_arg3 / 1.5);
_local5 = (_arg2 / 1.5);
_local6 = {x:0, y:1};
_local7 = {x:1, y:0};
_local8 = {x:0, y:-1};
_local9 = {x:1.2, y:-0.5};
_local10 = {x:1, y:-1};
_local11 = {x:0.5, y:-1.2};
_local12 = Geometry.intersectLines(_local7.x, _local7.y, (_local7.x + 1), (_local7.y - 1), _local9.x, _local9.y, _local9.x, (_local9.y + 1));
_local13 = Geometry.intersectLines(_local10.x, _local10.y, (_local10.x + 1), (_local10.y + 1), _local9.x, _local9.y, _local9.x, (_local9.y + 1));
_local14 = Geometry.intersectLines(_local10.x, _local10.y, (_local10.x + 1), (_local10.y + 1), _local11.x, _local11.y, (_local11.x + 1), _local11.y);
_local15 = Geometry.intersectLines(_local8.x, _local8.y, (_local8.x + 1), (_local8.y - 1), _local11.x, _local11.y, (_local11.x + 1), _local11.y);
_arg1.moveTo((_local5 * _local6.x), (_local4 * _local6.y));
_arg1.lineTo((_local5 * _local7.x), (_local4 * _local7.y));
_arg1.curveTo((_local5 * _local12.x), (_local4 * _local12.y), (_local5 * _local9.x), (_local4 * _local9.y));
_arg1.curveTo((_local5 * _local13.x), (_local4 * _local13.y), (_local5 * _local10.x), (_local4 * _local10.y));
_arg1.curveTo((_local5 * _local14.x), (_local4 * _local14.y), (_local5 * _local11.x), (_local4 * _local11.y));
_arg1.curveTo((_local5 * _local15.x), (_local4 * _local15.y), (_local5 * _local8.x), (_local4 * _local8.y));
_arg1.curveTo((-(_local5) * _local15.x), (_local4 * _local15.y), (-(_local5) * _local11.x), (_local4 * _local11.y));
_arg1.curveTo((-(_local5) * _local14.x), (_local4 * _local14.y), (-(_local5) * _local10.x), (_local4 * _local10.y));
_arg1.curveTo((-(_local5) * _local13.x), (_local4 * _local13.y), (-(_local5) * _local9.x), (_local4 * _local9.y));
_arg1.curveTo((-(_local5) * _local12.x), (_local4 * _local12.y), (-(_local5) * _local7.x), (_local4 * _local7.y));
_arg1.lineTo((-(_local5) * _local6.x), (_local4 * _local6.y));
}
public static function drawPolyLine(_arg1:Array, _arg2:Graphics){
var _local3:int;
_local3 = 1;
while (_local3 < _arg1.length) {
_arg2.lineTo(_arg1[_local3].x, _arg1[_local3].y);
_local3++;
};
}
public static function getLinePoint(_arg1:Object, _arg2:Object, _arg3:Object):Object{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg2.y - _arg1.y);
_local6 = Math.atan2(_local5, _local4);
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = Math.atan2(_local8, _local7);
_local10 = Geometry.interpolateAngle(_local6, _local9, 0.5);
return ({x:(_arg2.x + (Math.cos(_local10) * 2)), y:(_arg2.y + (Math.sin(_local10) * 2))});
}
public static function drawPoints(_arg1:Array, _arg2:Graphics){
var _local3:int;
_local3 = 0;
while (_local3 < _arg1.length) {
_arg2.moveTo(_arg1[_local3].x, (_arg1[_local3].y - 0.5));
_arg2.lineTo(_arg1[_local3].x, (_arg1[_local3].y + 0.5));
_local3++;
};
}
public static function drawKick(_arg1:Graphics, _arg2:Graphics, _arg3:Graphics, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:uint=0xFFFFFF, _arg14:uint=0xFFFFFF, _arg15:Number=1, _arg16=1){
var _local17:Number;
var _local18:Point;
var _local19:Number;
var _local20:Point;
var _local21:Point;
var _local22:Point;
var _local23:Point;
var _local24:Point;
var _local25:Point;
var _local26:Point;
var _local27:Point;
var _local28:Matrix;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Point;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
_local17 = 0.85;
_local18 = Geometry.rotatePoint(-(_arg8), new Point((_arg9 - _arg4), (_arg10 - _arg5)), null);
Geometry.rotatePoint(-(_arg8), new Point((_arg9 - _arg4), (_arg10 - _arg5)), null).x = (_local18.x / _arg6);
_local18.y = (_local18.y / _arg7);
_local19 = _local18.length;
_arg14 = Color.interpolateColor(_arg13, _arg14, _arg12);
_local29 = (_arg5 / _arg4);
if (_local19 < _local17){
_local30 = 0.5;
_local31 = (1 / _local17);
_local32 = ((1 - (_local30 * Math.abs(_local18.x))) * _arg11);
_local33 = ((1 - (_local30 * Math.abs(_local18.y))) * _arg11);
_local34 = (((Math.PI * 0.125) * (_local18.y * _local31)) * (-(_local18.x) * _local31));
_local35 = (((Math.PI * 0.125) * (_local18.x * _local31)) * (-(_local18.y) * _local31));
_local28 = new Matrix((_local32 * Math.cos(_local34)), (_local32 * Math.sin(_local34)), (_local33 * Math.sin(_local35)), (_local33 * Math.cos(_local35)));
_local28.tx = _arg9;
_local28.ty = _arg10;
_local36 = new Point(-1, 0);
_local24 = _local28.transformPoint(_local36);
_local36.x = 1;
_local25 = _local28.transformPoint(_local36);
_local36.x = 0;
_local36.y = -2;
_local22 = _local28.transformPoint(_local36);
_local36.y = 1;
_local23 = _local28.transformPoint(_local36);
_local37 = ((2 * Math.SQRT1_2) - 0.5);
_local36.x = -(_local37);
_local36.y = _local37;
_local26 = _local28.transformPoint(_local36);
_local36.x = _local37;
_local27 = _local28.transformPoint(_local36);
_local36.x = ((_local18.x * _arg12) * 0.75);
_local36.y = ((_local18.y * _arg12) * 0.75);
_local21 = _local28.transformPoint(_local36);
_local36.x = (((_local18.x * 0.75) * 2) * _arg12);
_local36.y = ((1 + ((Math.abs((_local18.y * 0.75)) - 1) * _arg12)) * 2);
_local20 = _local28.transformPoint(_local36);
_local28.createGradientBox(_arg11, _arg11, 0, (_local21.x - (_arg11 * 0.5)), (_local21.y - (_arg11 * 0.5)));
_arg1.beginGradientFill(GradientType.RADIAL, [_arg14, _arg13], [_arg16, _arg15], [0, 0xFF], _local28);
_arg1.moveTo(_local24.x, _local24.y);
_arg1.curveTo(_local22.x, _local22.y, _local25.x, _local25.y);
_arg1.curveTo(_local27.x, _local27.y, _local23.x, _local23.y);
_arg1.curveTo(_local26.x, _local26.y, _local24.x, _local24.y);
_arg1.endFill();
_arg2.moveTo(_local24.x, _local24.y);
_arg2.curveTo(_local20.x, _local20.y, _local25.x, _local25.y);
_arg2.curveTo(_local27.x, _local27.y, _local23.x, _local23.y);
_arg2.curveTo(_local26.x, _local26.y, _local24.x, _local24.y);
} else {
_local38 = _local18.x;
_local39 = _local18.y;
_local40 = (_arg8 + Math.atan2(_local39, _local38));
_local41 = ((_local38)<0) ? -1 : 1;
_local38 = Math.cos(_local40);
_local39 = Math.sin(_local40);
_local28 = new Matrix((_arg11 * _local38), (_arg11 * _local39), (_arg11 * -(_local39)), (_arg11 * _local38), _arg9, _arg10);
_local36 = new Point();
_local36.x = 0;
_local36.y = (-1 * _local41);
_local22 = _local28.transformPoint(_local36);
_local36.y = (1 * _local41);
_local23 = _local28.transformPoint(_local36);
_local36.x = 0.5;
_local36.y = (0 * _local41);
_local25 = _local28.transformPoint(_local36);
_local36.x = -0.5;
_local24 = _local28.transformPoint(_local36);
_local36.x = 0.5;
_local36.y = (-0.5 * _local41);
_local26 = _local28.transformPoint(_local36);
_local36.y = (0.5 * _local41);
_local27 = _local28.transformPoint(_local36);
_local36.x = 0.5;
_local36.y = 0;
_local20 = _local28.transformPoint(_local36);
_local36.x = (0.5 * ((_local18.y * 0.5) + 0.5));
_local36.y = ((2 + ((-0.5 - 2) * ((_local18.y * 0.5) + 0.5))) * _local41);
_local21 = _local28.transformPoint(_local36);
_arg3.moveTo(_local22.x, _local22.y);
_arg3.curveTo(_local26.x, _local26.y, _local25.x, _local25.y);
_arg3.curveTo(_local27.x, _local27.y, _local23.x, _local23.y);
_local28.createGradientBox(_arg11, _arg11, 0, (_local20.x - (_arg11 * 0.5)), (_local20.y - (_arg11 * 0.5)));
_arg1.beginGradientFill(GradientType.RADIAL, [_arg14, _arg13], [_arg16, _arg15], [0, 0xFF], _local28);
_arg1.moveTo(_local22.x, _local22.y);
_arg1.curveTo(_local26.x, _local26.y, _local25.x, _local25.y);
_arg1.curveTo(_local27.x, _local27.y, _local23.x, _local23.y);
_arg1.curveTo(_local24.x, _local24.y, _local22.x, _local22.y);
_arg1.endFill();
_arg2.moveTo(_local22.x, _local22.y);
_arg2.curveTo(_local21.x, _local21.y, _local25.x, _local25.y);
_arg2.curveTo(_local27.x, _local27.y, _local23.x, _local23.y);
_arg2.curveTo(_local24.x, _local24.y, _local22.x, _local22.y);
};
}
public static function getLinePoint2(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Object):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local5 = _arg3.x;
_local6 = _arg3.y;
_local9 = (_local5 - _arg2.x);
_local10 = (_local6 - _arg2.y);
_local8 = (((_local9) || (_local10))) ? (1 / Math.sqrt(((_local9 * _local9) + (_local10 * _local10)))) : 0;
_local9 = (_local9 * _local8);
_local10 = (_local10 * _local8);
_local11 = (_arg4.x - _local5);
_local12 = (_arg4.y - _local6);
_local8 = (((_local11) || (_local12))) ? (1 / Math.sqrt(((_local11 * _local11) + (_local12 * _local12)))) : 0;
_local11 = (_local11 * _local8);
_local12 = (_local12 * _local8);
_arg1.x = ((_local5 + _local9) + _local11);
_arg1.y = ((_local6 + _local10) + _local12);
}
public static function drawConnection(_arg1:Graphics, _arg2:Object, _arg3:Object, _arg4:Object, _arg5:Object, _arg6:Number){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Object;
var _local47:Object;
_local7 = _arg2.x;
_local8 = _arg3.x;
_local9 = _arg2.y;
_local10 = _arg3.y;
_local14 = (_arg4) ? (_arg4.x - _local7) : 0;
_local15 = (_arg4) ? (_arg4.y - _local9) : 0;
_local16 = (_arg5) ? (_arg5.x - _local8) : 0;
_local17 = (_arg5) ? (_arg5.y - _local10) : 0;
_local18 = (((_local14) || (_local15))) ? (1 / Math.sqrt(((_local14 * _local14) + (_local15 * _local15)))) : 0;
_local19 = (_local14 * _local18);
_local20 = (_local15 * _local18);
_local18 = (((_local16) || (_local17))) ? (1 / Math.sqrt(((_local16 * _local16) + (_local17 * _local17)))) : 0;
_local21 = (_local16 * _local18);
_local22 = (_local17 * _local18);
_local11 = (_local8 - _local7);
_local12 = (_local10 - _local9);
_local13 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12)));
_local23 = (_arg6 * _local13);
_local24 = (_local19 * _local23);
_local25 = (_local21 * _local23);
_local26 = (_local20 * _local23);
_local27 = (_local22 * _local23);
_local28 = (_local7 + _local24);
_local29 = (_local9 + _local26);
_local30 = (_local7 - _local24);
_local31 = (_local9 - _local26);
_local32 = (_local8 + _local25);
_local33 = (_local10 + _local27);
_local34 = (_local8 - _local25);
_local35 = (_local10 - _local27);
_local36 = (0.5 * (_local7 + _local8));
_local37 = (0.5 * (_local9 + _local10));
_local11 = (_local28 - _local36);
_local12 = (_local29 - _local37);
_local38 = ((_local11 * _local11) + (_local12 * _local12));
_local11 = (_local30 - _local36);
_local12 = (_local31 - _local37);
_local39 = ((_local11 * _local11) + (_local12 * _local12));
_local11 = (_local32 - _local36);
_local12 = (_local33 - _local37);
_local40 = ((_local11 * _local11) + (_local12 * _local12));
_local11 = (_local34 - _local36);
_local12 = (_local35 - _local37);
_local41 = ((_local11 * _local11) + (_local12 * _local12));
if (_local38 < _local39){
_local42 = _local28;
_local43 = _local29;
} else {
_local42 = _local30;
_local43 = _local31;
};
if (_local40 < _local41){
_local44 = _local32;
_local45 = _local33;
} else {
_local44 = _local34;
_local45 = _local35;
};
if (!_arg4){
_arg1.curveTo(_local44, _local45, _local8, _local10);
return;
};
if (!_arg5){
_arg1.curveTo(_local42, _local43, _local8, _local10);
return;
};
_arg1.curveTo(_local42, _local43, ((_local42 + _local44) * 0.5), ((_local43 + _local45) * 0.5));
_arg1.curveTo(_local44, _local45, _local8, _local10);
}
public static function drawSparkle(_arg1:Graphics, _arg2:Number, _arg3:int, _arg4:Number, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0){
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
if (_arg3 < 1){
return;
};
_local14 = ((Math.PI * 2) / _arg3);
_arg1.moveTo(((Math.cos(_arg5) * _arg2) + _arg6), (_arg7 + (Math.sin(_arg5) * _arg2)));
_local15 = 0;
while (_local15 < _arg3) {
_local8 = (Math.cos(((Number((_local15 + 1)) * _local14) + _arg5)) * _arg2);
_local9 = (Math.sin(((Number((_local15 + 1)) * _local14) + _arg5)) * _arg2);
_local10 = ((Math.cos(((Number((_local15 + 0.5)) * _local14) + _arg5)) * _arg2) * _arg4);
_local11 = ((Math.sin(((Number((_local15 + 0.5)) * _local14) + _arg5)) * _arg2) * _arg4);
_local12 = ((Math.cos(((Number((_local15 + 0.25)) * _local14) + _arg5)) * _arg2) * _arg4);
_local13 = ((Math.sin(((Number((_local15 + 0.25)) * _local14) + _arg5)) * _arg2) * _arg4);
_arg1.curveTo((_arg6 + _local12), (_arg7 + _local13), (_arg6 + _local10), (_arg7 + _local11));
_local12 = ((Math.cos(((Number((_local15 + 0.75)) * _local14) + _arg5)) * _arg2) * _arg4);
_local13 = ((Math.sin(((Number((_local15 + 0.75)) * _local14) + _arg5)) * _arg2) * _arg4);
_arg1.curveTo((_arg6 + _local12), (_arg7 + _local13), (_arg6 + _local8), (_arg7 + _local9));
_local15++;
};
}
public static function drawCurvyLine(_arg1:Graphics, _arg2:Object, _arg3:Array, _arg4:Object, _arg5:Number=0.25){
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:Object;
var _local10:Object;
var _local11:Object;
var _local12:Object;
var _local13:Object;
var _local14:Object;
var _local15:Object;
var _local16:Number;
_local7 = _arg3.length;
_local8 = (_local7 - 1);
_local11 = new Object();
_local12 = new Object();
_local16 = (_arg5 * 2);
_local6 = 1;
while (_local6 < _local7) {
_local13 = _arg3[(_local6 - 1)];
_local14 = _arg3[_local6];
if (_local6 < _local8){
getLinePoint2(_local11, _local13, _local14, _arg3[(_local6 + 1)]);
_local9 = _local11;
} else {
_local9 = _arg4;
};
if (_local6 > 1){
getLinePoint2(_local12, _arg3[(_local6 - 2)], _local13, _local14);
_local10 = _local12;
} else {
_local10 = _arg2;
};
if (((!(_local10)) && (!(_local9)))){
_arg1.lineTo(_local14.x, _local14.y);
} else {
if (((!(_local10)) || (!(_local9)))){
drawConnection(_arg1, _local13, _local14, _local10, _local9, _local16);
} else {
drawConnection(_arg1, _local13, _local14, _local10, _local9, _arg5);
};
};
_local6++;
};
}
public static function drawPolygon(_arg1:Array, _arg2:Graphics){
var _local3:int;
_arg2.moveTo(_arg1[0].x, _arg1[0].y);
_local3 = 1;
while (_local3 < _arg1.length) {
_arg2.lineTo(_arg1[_local3].x, _arg1[_local3].y);
_local3++;
};
}
public static function controlPointIntersect(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Object):Object{
var _local5:Object;
var _local6:Object;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local5 = Geometry.intersectLines(_arg1.x, _arg1.y, _arg2.x, _arg2.y, _arg3.x, _arg3.y, _arg4.x, _arg4.y);
if (!_local5){
return (null);
};
_local6 = {x:((_arg2.x + _arg3.x) * 0.5), y:((_arg2.y + _arg3.y) * 0.5)};
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local10 = (_local5.x - _local6.x);
_local11 = (_local5.y - _local6.y);
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
if (_local12 > _local9){
return (null);
};
return ({x:(_local6.x + ((_local5.x - _local6.x) * 0.5)), y:(_local6.y + ((_local5.y - _local6.y) * 0.5))});
}
public static function drawStar(_arg1:Graphics, _arg2:Number, _arg3:uint, _arg4:Number, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0){
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local8 = 0;
if (!_arg3){
return;
};
_local9 = (_arg2 * _arg4);
_local10 = (Math.PI / _arg3);
_local11 = ((-(Math.PI) * 0.5) + _arg5);
_arg3 = (_arg3 << 1);
_local8 = 0;
while (_local8 <= _arg3) {
if ((_local8 % 2)){
_local12 = (_arg6 + (Math.cos(_local11) * _local9));
_local13 = (_arg7 + (Math.sin(_local11) * _local9));
} else {
_local12 = (_arg6 + (Math.cos(_local11) * _arg2));
_local13 = (_arg7 + (Math.sin(_local11) * _arg2));
};
if (!_local8){
_arg1.moveTo(_local12, _local13);
} else {
_arg1.lineTo(_local12, _local13);
};
_local11 = (_local11 + _local10);
_local8++;
};
}
public static function drawClosedCurve(_arg1:Array, _arg2:Graphics):Array{
var _local3:Point;
var _local4:Point;
var _local5:Point;
var _local6:Point;
var _local7:Array;
var _local8:int;
var _local9:Object;
if (_arg1.length < 3){
return ([]);
};
_local7 = new Array();
_arg2.moveTo(_arg1[0].x, _arg1[0].y);
_local8 = 0;
while (_local8 < _arg1.length) {
_local3 = _arg1[_local8];
_local4 = _arg1[(int(((_arg1.length + _local8) - 1)) % _arg1.length)];
_local5 = _arg1[(int((_local8 + 1)) % _arg1.length)];
_local6 = _arg1[(int((_local8 + 2)) % _arg1.length)];
_local9 = controlPointIntersect(_local4, _local3, _local5, _local6);
if (_local9 == null){
_arg2.lineTo(_local5.x, _local5.y);
} else {
_local7.push(_local9);
_arg2.curveTo(_local9.x, _local9.y, _local5.x, _local5.y);
};
_local8++;
};
return (_local7);
}
}
}//package as3
Section 3
//Geometry (as3.Geometry)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Geometry {
public static const DEG_TO_RAD:Number = 0.0174532925199433;
public static const RAD_TO_DEG:Number = 57.2957795130823;
public static const TOLERANCE:Number = 1E-5;
function regularPolygonArea(_arg1:Number, _arg2:int){
var _local3:Number;
var _local4:Number;
if (_arg2 < 3){
return (0);
};
_local3 = ((Math.PI * 2) / _arg2);
_local4 = (Math.sin(_local3) * _arg1);
return ((((_local4 * _arg1) * 0.5) * _arg2));
}
public static function intersectLines(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Boolean=false):Object{
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Object;
var _local19:Boolean;
var _local20:Boolean;
_local10 = (_arg1 - _arg3);
_local11 = (_arg5 - _arg7);
_local12 = (_arg2 - _arg4);
_local13 = (_arg6 - _arg8);
_local14 = ((_arg1 * _arg4) - (_arg2 * _arg3));
_local15 = ((_arg5 * _arg8) - (_arg6 * _arg7));
_local16 = ((_local10 * _local13) - (_local12 * _local11));
if (!_local16){
return (null);
};
_local17 = (1 / _local16);
_local18 = {x:(((_local14 * _local11) - (_local10 * _local15)) * _local17), y:(((_local14 * _local13) - (_local12 * _local15)) * _local17)};
if (_arg9){
_local19 = pointInsideRect(_local18.x, _local18.y, _arg1, _arg2, _arg3, _arg4);
_local20 = pointInsideRect(_local18.x, _local18.y, _arg5, _arg6, _arg7, _arg8);
if (((!(_local19)) || (!(_local20)))){
return (null);
};
};
return (_local18);
}
public static function pointFromEllipse(_arg1:Object, _arg2:Object):Object{
var _local3:Point;
var _local4:Object;
_local3 = new Point();
_local3.x = (_arg1.x + ((_arg1.radius * Math.cos(_arg2.angle)) * _arg2.distance));
_local3.y = (_arg1.y + (((_arg1.radius * _arg1.excentricity) * Math.sin(_arg2.angle)) * _arg2.distance));
_local4 = rotate(_arg1.rotation, _local3.x, _local3.y, _arg1.x, _arg1.y);
return (new Point(_local4.x, _local4.y));
}
public static function polygonArea(_arg1:Array):Number{
var _local2:Point;
var _local3:Point;
var _local4:Number;
if (_arg1.length < 3){
return (0);
};
_local4 = 0;
return (_local4);
}
public static function getEllipse(_arg1:DisplayObject):Object{
var obj:Object;
var rect:Rectangle;
var clip = _arg1;
obj = {};
rect = clip.getRect(clip);
obj.x = clip.x;
obj.y = clip.y;
obj.radius = (-(rect.x) * clip.scaleX);
obj.rotation = ((clip.rotation * Math.PI) / 180);
obj.excentricity = (clip.scaleY / clip.scaleX);
obj.toString = function (){
return ((((((((((("[ x=" + this.x) + ", y=") + this.y) + ", radius=") + this.radius) + ", rotation=") + this.rotation) + ", excentricity=") + this.excentricity) + " ]"));
};
return (obj);
}
public static function pointToEllipse(_arg1:Object, _arg2:Object):Object{
var obj:Object;
var untranslated:Point;
var unrotated:Object;
var unexcentered:Point;
var unscaled:Point;
var point = _arg1;
var ellipse = _arg2;
obj = {};
untranslated = new Point((point.x - ellipse.x), (point.y - ellipse.y));
unrotated = rotate(-(ellipse.rotation), untranslated.x, untranslated.y);
unexcentered = new Point(unrotated.x, (unrotated.y / ellipse.excentricity));
unscaled = new Point((unexcentered.x / ellipse.radius), (unexcentered.y / ellipse.radius));
obj.distance = Math.sqrt(((unscaled.x * unscaled.x) + (unscaled.y * unscaled.y)));
obj.hDist = unscaled.x;
obj.vDist = unscaled.y;
obj.normal = (Math.atan2(unscaled.y, unscaled.x) + ellipse.rotation);
obj.angle = Math.atan2(unscaled.y, unscaled.x);
obj.rotation = ellipse.rotation;
obj.toString = function (){
return ((((((((((((("[ distance=" + obj.distance) + ", normal=") + obj.normal) + ", angle=") + obj.angle) + ", hDist=") + obj.hDist) + ", vDist=") + obj.vDist) + ", rotation=") + obj.rotation) + " ]"));
};
return (obj);
}
public static function getOuterPoints(_arg1:Array):Array{
var _local2:Array;
var _local3:Point;
var _local4:int;
var _local5:Array;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Point;
var _local11:int;
var _local12:Number;
var _local13:Point;
var _local14:int;
var _local15:Number;
var _local16:Number;
_local2 = _arg1.concat();
_local3 = _local2[0];
_local4 = 1;
while (_local4 < _local2.length) {
if (_local2[_local4].y < _local3.y){
_local3 = _local2[_local4];
};
_local4++;
};
_local5 = [_local3];
_local6 = Infinity;
_local8 = 0;
_local9 = 0;
_local10 = _local5[0];
_local11 = _local2.length;
while (1) {
_local12 = (Math.PI * 2);
_local13 = null;
_local4 = 0;
while (_local4 < _local2.length) {
_local7 = Math.atan2((_local2[_local4].y - _local5[(_local5.length - 1)].y), (_local2[_local4].x - _local5[(_local5.length - 1)].x));
_local16 = getLowestPositiveAngle((_local7 - _local8));
if ((((_local16 <= _local12)) && (!((_local2[_local4] == _local5[(_local5.length - 1)]))))){
_local13 = _local2[_local4];
_local12 = _local16;
};
_local4++;
};
if ((((_local13 == null)) || ((((_local13 == _local5[0])) && ((_local5.length > 1)))))){
break;
};
_local15 = _local8;
_local8 = getLowestPositiveAngle(Math.atan2((_local13.y - _local5[(_local5.length - 1)].y), (_local13.x - _local5[(_local5.length - 1)].x)));
_local9 = (_local9 + getLowestPositiveAngle((_local8 - _local15)));
if (_local9 >= (Math.PI * 2)){
break;
};
_local5.push(_local13);
--_local11;
if (!_local11){
trace(("FAILURE: " + (_local9 - (Math.PI * 2))), "\n");
break;
};
};
if ((((_local5.length > 2)) && ((_local5[(_local5.length - 1)] == _local5[1])))){
_local5.pop();
};
return (_local5);
}
public static function getSidePoints(_arg1:Array, _arg2:Number):Array{
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Array;
var _local7:Point;
var _local8:Point;
var _local9:Number;
var _local10:Number;
var _local11:Array;
var _local12:Number;
var _local13:Number;
_local4 = Infinity;
_local5 = -(Infinity);
_local3 = 0;
while (_local3 < _arg1.length) {
if (_arg1[_local3].y < _local4){
_local4 = _arg1[_local3].y;
};
if (_arg1[_local3].y > _local5){
_local5 = _arg1[_local3].y;
};
_local3++;
};
if (_arg2 < _local4){
_arg2 = _local4;
} else {
if (_arg2 > _local5){
_arg2 = _local5;
};
};
_local6 = [];
_local3 = 0;
while (_local3 < _arg1.length) {
_local7 = _arg1[_local3];
_local8 = _arg1[((_local3 + 1) % _arg1.length)];
if ((((((_arg2 <= _local7.y)) && ((_arg2 >= _local8.y)))) || ((((_arg2 >= _local7.y)) && ((_arg2 <= _local8.y)))))){
if (_local8.y == _local7.y){
_local6.push(new Point(_local7.x, _local7.y));
_local6.push(new Point(_local8.x, _local8.y));
} else {
_local12 = ((_arg2 - _local7.y) / (_local8.y - _local7.y));
_local13 = (_local7.x + ((_local8.x - _local7.x) * _local12));
_local6.push(new Point(_local13, _arg2));
};
};
_local3++;
};
_local9 = Infinity;
_local10 = -(Infinity);
_local3 = 0;
while (_local3 < _local6.length) {
_local7 = _local6[_local3];
if (_local7.x < _local9){
_local9 = _local7.x;
};
if (_local7.x > _local10){
_local10 = _local7.x;
};
_local3++;
};
_local11 = [];
_local3 = 0;
while (_local3 < _local6.length) {
if (_local6[_local3].x <= (_local9 + TOLERANCE)){
_local11[0] = _local6[_local3];
};
if (_local6[_local3].x >= (_local10 - TOLERANCE)){
_local11[1] = _local6[_local3];
};
_local3++;
};
return (_local11);
}
public static function projectPointOnLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Object{
var _local7:Object;
var _local8:Object;
_local7 = getNormal(_arg3, _arg4, _arg5, _arg6);
_local8 = intersectLines(_arg1, _arg2, (_arg1 + _local7.x), (_arg2 + _local7.y), _arg3, _arg4, _arg5, _arg6, false);
if (_local8 == null){
throw ("Unexpected error in Geometry::closestPointToLine. Perpendicular lines aren't intersecting!\n");
};
return (_local8);
}
private static function getLowestPositiveAngle(_arg1:Number):Number{
var _local2:Number;
_local2 = _arg1;
while (_local2 < 0) {
_local2 = (_local2 + (Math.PI * 2));
};
while (_local2 >= (Math.PI * 2)) {
_local2 = (_local2 - (Math.PI * 2));
};
return (_local2);
}
public static function generateRegularPolygon(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Number;
var _local5:int;
_local3 = new Array(_arg1);
_local4 = ((Math.PI * 2) / _arg1);
_local5 = 0;
while (_local5 < _arg1) {
_local3[_local5] = new Point();
_local3[_local5].x = (_arg2 * Math.cos((_local5 * _local4)));
_local3[_local5].y = (_arg2 * Math.sin((_local5 * _local4)));
_local5++;
};
return (_local3);
}
public static function triangleArea(_arg1:Point, _arg2:Point, _arg3:Point):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg3.x - _arg1.x);
_local6 = (_arg2.y - _arg1.y);
_local7 = (_arg3.y - _arg1.y);
return ((0.5 * Math.abs(((_local4 * _local7) - (_local5 * _local6)))));
}
public static function pointInsideRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
if (_arg3 < _arg5){
_local7 = _arg3;
_local9 = _arg5;
} else {
_local7 = _arg5;
_local9 = _arg3;
};
if (_arg4 < _arg6){
_local8 = _arg4;
_local10 = _arg6;
} else {
_local8 = _arg6;
_local10 = _arg4;
};
_local11 = 0.0001;
return (!((((((((_arg1 < (_local7 - _local11))) || ((_arg1 > (_local9 + _local11))))) || ((_arg2 < (_local8 - _local11))))) || ((_arg2 > (_local10 + _local11))))));
}
public static function interpolateAngle(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
var _local5:Number;
while (_arg1 < 0) {
_arg1 = (_arg1 + (Math.PI * 2));
};
while (_arg2 < 0) {
_arg2 = (_arg2 + (Math.PI * 2));
};
while (_arg1 >= (Math.PI * 2)) {
_arg1 = (_arg1 - (Math.PI * 2));
};
while (_arg2 >= (Math.PI * 2)) {
_arg2 = (_arg2 - (Math.PI * 2));
};
if (_arg1 > _arg2){
if ((_arg1 - _arg2) > Math.PI){
_arg1 = (_arg1 - (Math.PI * 2));
};
} else {
if ((_arg2 - _arg1) > Math.PI){
_arg2 = (_arg2 - (Math.PI * 2));
};
};
_local5 = (_arg1 + (_arg3 * (_arg2 - _arg1)));
while (_local5 > Math.PI) {
_local5 = (_local5 - (Math.PI * 2));
};
while (_local5 < -(Math.PI)) {
_local5 = (_local5 + (Math.PI * 2));
};
return (_local5);
}
public static function rotate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0, _arg5:Number=0):Object{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local6 = (_arg2 - _arg4);
_local7 = (_arg3 - _arg5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return ({x:((_arg4 + (_local6 * _local8)) - (_local7 * _local9)), y:((_arg5 + (_local6 * _local9)) + (_local7 * _local8))});
}
public static function rotatePoint(_arg1:Number, _arg2:Point, _arg3:Point=null):Point{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if (_arg3 == null){
_local5 = 0;
_local4 = _local5;
} else {
_local4 = _arg3.x;
_local5 = _arg3.y;
};
_local6 = (_arg2.x - _local4);
_local7 = (_arg2.y - _local5);
_local8 = Math.cos(_arg1);
_local9 = Math.sin(_arg1);
return (new Point(((_local4 + (_local6 * _local8)) - (_local7 * _local9)), ((_local5 + (_local6 * _local9)) + (_local7 * _local8))));
}
public static function getNormal(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Object;
_local5 = (_arg1 - _arg3);
_local6 = (_arg2 - _arg4);
_local7 = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
if (!_local7){
return ({x:0, y:0});
};
_local8 = {x:(_local6 / _local7), y:(-(_local5) / _local7)};
return (_local8);
}
public static function intersectPolygons(_arg1:Array, _arg2:Array){
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:Point;
var _local7:Point;
var _local8:Point;
var _local9:Point;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Object;
var _local15:int;
var _local16:int;
_local3 = (_arg1.length - 1);
_local4 = (_arg2.length - 1);
_local5 = [];
if ((((_local3 < 2)) || ((_local4 < 2)))){
return;
};
_local15 = 0;
while (_local15 < _local3) {
_local6 = _arg1[_local15];
_local7 = _arg1[(_local15 + 1)];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local15++;
};
_local6 = _arg1[_local15];
_local7 = _arg1[0];
_local10 = _local6.x;
_local11 = _local6.y;
_local12 = _local7.x;
_local13 = _local7.y;
_local16 = 0;
while (_local16 < _local4) {
_local8 = _arg2[_local16];
_local9 = _arg2[(_local16 + 1)];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
_local16++;
};
_local8 = _arg2[_local16];
_local9 = _arg2[0];
_local14 = intersectLines(_local10, _local11, _local12, _local13, _local8.x, _local8.y, _local9.x, _local9.y, true);
if (_local14){
_local5[_local5.length] = new Point(_local14.x, _local14.y);
};
return (_local5);
}
}
}//package as3
Section 4
//Physics (as3.Physics)
package as3 {
import flash.display.*;
import flash.geom.*;
public class Physics {
public static const ROTATION_PROP:String = "rotation";
public static const Y_PROP:String = "y";
public static const SKEWY_PROP:String = "skewY";
public static const SCALEX_PROP:String = "scaleX";
public static const X_PROP:String = "x";
public static const SCALEY_PROP:String = "scaleY";
public static const SKEWX_PROP:String = "skewX";
public static function attach(_arg1:Array, _arg2:DisplayObject, _arg3:MovieClip, _arg4:Array=null){
var _local5:Point;
var _local6:Point;
_local5 = _arg2.localToGlobal(new Point());
_local6 = _arg3.globalToLocal(_local5);
if (_arg4 == null){
_arg4 = [];
};
_arg1[_arg1.length] = {mc:_arg2, par:_arg3, point:_local6, props:_arg4};
}
public static function updateSkewY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _arg1.hWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.b = _arg4[0];
}
public static function updateElastic(_arg1:Array){
var _local2:int;
var _local3:int;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
updateElasticClip(_arg1[_local2]);
_local2++;
};
}
public static function updateAttached(_arg1:Array){
var _local2:int;
var _local3:int;
var _local4:Object;
var _local5:Point;
var _local6:Point;
var _local7:int;
var _local8:int;
var _local9:Array;
_local3 = _arg1.length;
_local2 = 0;
while (_local2 < _local3) {
_local4 = _arg1[_local2];
if (_local4.mc.parent){
_local5 = _local4.par.localToGlobal(_local4.point);
_local6 = _local4.mc.parent.globalToLocal(_local5);
_local4.mc.x = _local6.x;
_local4.mc.y = _local6.y;
};
_local9 = _local4.props;
_local8 = _local9.length;
_local7 = 0;
while (_local7 < _local8) {
_local4.mc[_local9[_local7]] = _local4.par[_local9[_local7]];
_local7++;
};
_local2++;
};
}
public static function detach(_arg1:Array, _arg2:DisplayObject, _arg3:MovieClip, _arg4:Array=null){
var _local5:int;
var _local6:int;
var _local7:Object;
_local6 = _arg1.length;
_local5 = 0;
while (_local5 < _local6) {
_local7 = _arg1[_local5];
if ((((_local7.mc == _arg2)) && ((_local7.par == _arg3)))){
_arg1.splice(_local5, 1);
return;
};
_local5++;
};
}
public static function verlet(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1, _arg6:Number=1){
var _local7:int;
var _local8:Number;
var _local9:int;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local8 = ((0.5 * _arg5) * _arg5);
_local9 = (_arg6 / _arg5);
_local10 = _arg1[0];
_local11 = _arg1[1];
_local12 = 0;
_local7 = 0;
while (_local7 < _local9) {
_local12 = (_arg4 * (_arg2 - _local10));
_local10 = (_local10 + ((_local11 * _arg5) + (_local12 * _local8)));
_local11 = ((_local11 + (_local12 * _arg5)) * _arg3);
_local7++;
};
_arg1[0] = _local10;
_arg1[1] = _local11;
}
public static function updateSkewX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _arg1.vWeight));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.c = _arg4[0];
}
public static function balancePoint(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int=1){
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
_local6 = _arg1[0];
_local7 = _arg1[1];
_local8 = _arg1[2];
_local9 = 0;
while (_local9 < _arg5) {
_arg1[1] = ((_arg1[1] * _arg2) + _arg1[2]);
_arg1[2] = ((_arg3 - _arg1[0]) * _arg4);
_arg1[0] = (_arg1[0] + (_local7 * _arg2));
_local9++;
};
}
public static function setElastic(_arg1:Array, _arg2:DisplayObjectContainer, _arg3:MovieClip, _arg4:Array, _arg5:Array, _arg6:Array, _arg7:Array, _arg8:Array, _arg9:Array):Object{
var _local10:Array;
var _local11:int;
var _local12:int;
var _local13:String;
var _local14:Point;
var _local15:Rectangle;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
if (!_arg3.parent){
return (null);
};
_local10 = [ROTATION_PROP];
_local12 = _arg4.length;
_local11 = 0;
while (_local11 < _local12) {
_local13 = _arg4[_local11];
_local10[_local11] = [_arg6[_local11], 0, 0];
_local11++;
};
_local14 = _arg3.localToGlobal(new Point());
_local14 = _arg2.globalToLocal(_local14);
_local15 = _arg3.getBounds(_arg3);
_local16 = (_local15.right + _local15.left);
_local17 = (_local15.bottom + _local15.top);
_local18 = ((_local16)<0) ? _local15.left : _local15.right;
_local19 = ((_local17)<0) ? _local15.top : _local15.bottom;
_arg1[_arg1.length] = {clip:_arg3, props:_arg4, position:_local14, values:_local10, topLevel:_arg2, rect:_local15, hWeight:_local18, vWeight:_local19, frictions:_arg5, dests:_arg6, multipliers:_arg7, speeds:_arg8, scales:_arg9};
return (_arg1[(_arg1.length - 1)]);
}
public static function editElastic(_arg1:Array, _arg2:MovieClip, _arg3:String, _arg4:Number){
var _local5:int;
var _local6:int;
_local6 = _arg1.length;
_local5 = 0;
while (_local5 < _local6) {
if (_arg1[_local5].clip == _arg2){
_arg1[_local5].dests[_arg3] = _arg4;
return;
};
_local5++;
};
}
public static function updateScaleX(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.right - _local10.left);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.x - _arg1.position.x)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.a = _arg4[0];
}
public static function updateScaleY(_arg1:Object, _arg2:Point, _arg3:Matrix, _arg4:Array, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number){
var _local10:Rectangle;
var _local11:Number;
_local10 = _arg1.clip.getBounds(_arg1.topLevel);
_local11 = (_local10.bottom - _local10.top);
_arg4[0] = (_arg4[0] + ((-(_arg9) * (_arg2.y - _arg1.position.y)) / _local11));
balancePoint(_arg4, _arg5, _arg6, _arg7, _arg8);
_arg3.d = _arg4[0];
}
public static function updateElasticClip(_arg1:Object){
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:String;
var _local7:Matrix;
_local3 = _arg1.props;
_local4 = _local3.length;
_local5 = _arg1.clip.localToGlobal(new Point());
_local5 = _arg1.topLevel.globalToLocal(_local5);
_local7 = _arg1.clip.transform.matrix;
_local2 = 0;
while (_local2 < _local4) {
_local6 = _local3[_local2];
switch (_local6){
case SKEWX_PROP:
updateSkewX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SKEWY_PROP:
updateSkewY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEX_PROP:
updateScaleX(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
case SCALEY_PROP:
updateScaleY(_arg1, _local5, _local7, _arg1.values[_local2], _arg1.frictions[_local2], _arg1.dests[_local2], _arg1.multipliers[_local2], _arg1.speeds[_local2], _arg1.scales[_local2]);
break;
};
_local2++;
};
_arg1.clip.transform.matrix = _local7;
_arg1.position = _local5;
}
}
}//package as3
Section 5
//_btn1_45 (charolette_fla._btn1_45)
package charolette_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn1_45 extends MovieClip {
public var _txt:TextField;
}
}//package charolette_fla
Section 6
//_btn2_46 (charolette_fla._btn2_46)
package charolette_fla {
import flash.display.*;
public dynamic class _btn2_46 extends MovieClip {
public function _btn2_46(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package charolette_fla
Section 7
//_btn3_47 (charolette_fla._btn3_47)
package charolette_fla {
import flash.display.*;
import flash.text.*;
public dynamic class _btn3_47 extends MovieClip {
public var _txt:TextField;
}
}//package charolette_fla
Section 8
//belly_17 (charolette_fla.belly_17)
package charolette_fla {
import flash.display.*;
public dynamic class belly_17 extends MovieClip {
public var ellipse:MovieClip;
public var kicks:MovieClip;
}
}//package charolette_fla
Section 9
//charolette_1 (charolette_fla.charolette_1)
package charolette_fla {
import flash.display.*;
public dynamic class charolette_1 extends MovieClip {
public var sleeve1:MovieClip;
public var sleeve2:MovieClip;
public var eye1:MovieClip;
public var eye2:MovieClip;
public var front:MovieClip;
public var couch2:MovieClip;
public var bg:MovieClip;
public var medicine:MovieClip;
public var tail:MovieClip;
public var clothes_back:MovieClip;
public var hair2:MovieClip;
public var hair3:MovieClip;
public var hair1:MovieClip;
public var mouth:MovieClip;
public var sleep:MovieClip;
public var pillow:MovieClip;
public var speech:MovieClip;
public var clothes1:MovieClip;
public var clothes2:MovieClip;
public var blush:MovieClip;
public var b1cover:MovieClip;
public var belt:MovieClip;
public var light:MovieClip;
public var arm1:MovieClip;
public var arm2:MovieClip;
public var breast1:MovieClip;
public var breast2:MovieClip;
public var ear1:MovieClip;
public var body:MovieClip;
public var leg1cover:MovieClip;
public var couch:MovieClip;
public var ear2:MovieClip;
public var coffee:MovieClip;
public var table:MovieClip;
public var belly:MovieClip;
public var head:MovieClip;
public var chair_arm:MovieClip;
public var leg1:MovieClip;
public var leg2:MovieClip;
}
}//package charolette_fla
Section 10
//eye1_30 (charolette_fla.eye1_30)
package charolette_fla {
import flash.display.*;
public dynamic class eye1_30 extends MovieClip {
public var pupil:MovieClip;
public function eye1_30(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 17, frame18, 34, frame35);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame18(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame35(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package charolette_fla
Section 11
//eye2_25 (charolette_fla.eye2_25)
package charolette_fla {
import flash.display.*;
public dynamic class eye2_25 extends MovieClip {
public var pupil:MovieClip;
public function eye2_25(){
addFrameScript(1, frame2, 3, frame4, 5, frame6, 7, frame8, 9, frame10, 11, frame12, 17, frame18, 34, frame35);
}
function frame10(){
this.gotoAndPlay(this.currentLabel);
}
function frame18(){
this.gotoAndPlay(this.currentLabel);
}
function frame12(){
this.gotoAndPlay(this.currentLabel);
}
function frame6(){
this.gotoAndPlay(this.currentLabel);
}
function frame8(){
this.gotoAndPlay(this.currentLabel);
}
function frame4(){
this.gotoAndPlay(this.currentLabel);
}
function frame2(){
this.gotoAndPlay(this.currentLabel);
}
function frame35(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package charolette_fla
Section 12
//MainTimeline (charolette_fla.MainTimeline)
package charolette_fla {
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import flash.events.*;
import expansion.*;
import as3.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public const MAX_SIZE:int = 600;
public const ELLIPSE_RADIUS:Number = 50;
public const INV_ELLIPSE_MAX_RADIUS:Number = 0.0222222222222222;
public const BELLY_KICK_FRAME:int = 200;
public const SMALL_SIZE:int = 200;
public const INV_ELLIPSE_RADIUS:Number = 0.02;
public const KICK_DEFORM_SCALE:Number = 0.02;
public const DEG_TO_RAD:Number = 0.0174532925199433;
public const INV_MAX_SIZE:Number = 0.00166666666666667;
public const KICK_RATIO:Number = 0.25;
public const ELLIPSE_MAX_RADIUS:Number = 45;
public const BELT_FRAME:int = 110;
public const B1COVER_FRAME:int = 347;
public const MOUTH_FRAMES:int = 23;
public const GROWTH_SPEED:Number = 0.75;
public const MID_SIZE:int = 400;
public const CLOTHES2_FRAME:int = 80;
public var size:Number;
public var oldMX:Number;
public var oldMY:Number;
public var exp:Expression;
public var origX:Number;
public var PUPIL1_ID:int;
public var origY:Number;
public var blushValue:Number;
public var kickLines:Sprite;
public var CLOTHES_ALPHA:Number;
public var lcd_stolen_bg:MovieClip;
public var K_ITEM:MovieClip;
public var kDark:Graphics;
public var PUPIL2_ID:int;
public var ell:MovieClip;
public var C_STR_VALUE:int;
public var K_STR_VALUE:int;
public var bounds:Rectangle;
public var bellyKicks:Sprite;
public var blushMode:int;
public var KICKS:Array;
public var speech:Speech;
public var _panel:MovieClip;
public var STEAM_CLIP:Sprite;
public var oldY:Number;
public var oldX:Number;
public var STEAM:Array;
public var reset:Boolean;
public var kLines:Graphics;
public var kLight:Graphics;
public var EYE1_ID:int;
public var kickShade:Sprite;
public var currentPhrase:int;
public var charolette:MovieClip;
public var ATTACHED:Array;
public var MOUTH_ID:int;
public var KICKS_ENABLED:Boolean;
public var lcd_stolen_item:MovieClip;
public var growth:Number;
public var zoom:Number;
public var belly:MovieClip;
public var lcd_stolen:String;
public var EYE2_ID:int;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function updateSteam(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:MovieClip;
createSteam();
_local5 = STEAM.length;
_local2 = 0;
while (_local2 < _local5) {
_local6 = STEAM[_local2];
STEAM[_local2].x = (_local6.x + _local6.vX);
_local6.y = (_local6.y + _local6.vY);
_local6.vX = (Math.sin(_local6.phase) * 1);
_local6.phase = (_local6.phase + _local6.frequency);
_local6.alpha = (_local6.life / 50);
_local3 = _local6.mouseX;
_local4 = _local6.mouseY;
if ((((Math.abs(_local4) < 20)) && ((Math.abs(_local3) < 20)))){
_local6.x = (_local6.x - (_local3 * 0.2));
};
_local6.life--;
if (_local6.life < 0){
STEAM.splice(_local2, 1);
_local2--;
_local5--;
_local6.parent.removeChild(_local6);
};
_local2++;
};
}
public function eFrame(_arg1:Event){
var _local2:Boolean;
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:int;
var _local7:Array;
var _local8:Object;
var _local9:int;
var _local10:int;
var _local11:int;
_local2 = Boolean((_panel._nonstop.currentFrame - 1));
_local3 = size;
size = setSize((size + growth));
if (size > _local3){
switch (true){
case (size < 20):
break;
case (size < 60):
exp.setState("awaken");
if (currentPhrase == 0){
currentPhrase++;
speech.say("Oh... I... fell asleep in my chair.");
};
break;
case (size < SMALL_SIZE):
exp.setState("disappointed");
if (currentPhrase == 1){
currentPhrase++;
speech.say("Oh, no! I forgot to take my medicine!");
};
break;
case (((_local3 < SMALL_SIZE)) && ((size >= SMALL_SIZE))):
if (!_local2){
growth = 0;
size = SMALL_SIZE;
};
exp.setState("annoyed");
if (currentPhrase == 2){
currentPhrase++;
speech.say("I wish this pregnancy didn't happen to me every day I forgot to take my medicine.");
};
break;
case (size < 300):
exp.setState("nervous");
blushOn();
if (currentPhrase == 3){
currentPhrase++;
speech.say("Uh-oh... the feeling in my belly...");
};
break;
case (size < MID_SIZE):
exp.setState("pleasure");
if (currentPhrase == 4){
currentPhrase++;
speech.say("It's... getting very big this time.");
};
break;
case (((_local3 < MID_SIZE)) && ((size >= MID_SIZE))):
if (blushMode == 1){
blushOff();
};
if (!_local2){
growth = 0;
size = MID_SIZE;
};
exp.setState("defeated");
if (currentPhrase == 5){
currentPhrase++;
speech.say("I should have grabbed the medicine while I could still move...");
};
break;
case (size < MAX_SIZE):
if (blushMode == 0){
blushOn();
};
exp.setState("enjoy");
if (currentPhrase == 6){
currentPhrase++;
speech.say("Even... bigger? Mmmmm... So... good...");
};
break;
case (size >= MAX_SIZE):
if (blushMode == 1){
blushOff();
};
growth = 0;
size = MAX_SIZE;
exp.setState("over");
if (currentPhrase == 7){
currentPhrase++;
speech.say("I-I think... I'll take the day off... Until my belly gets back to normal.");
};
break;
};
} else {
if (size < _local3){
blushOff();
switch (true){
case (size <= 1):
growth = 0;
size = 1;
exp.setState("sleep");
if (currentPhrase == 9){
currentPhrase++;
speech.say("Finally over... I'm... tired...");
};
break;
case (size < 300):
exp.setState("smaller");
break;
case (size < MAX_SIZE):
exp.setState("revert");
if (currentPhrase == 8){
currentPhrase++;
speech.say("Ah... It's finally getting back to normal.");
};
break;
};
} else {
growth = 0;
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
};
};
charolette.sleep.visible = (exp.state == "sleep");
_local4 = (exp.offset * ((exp.position * 0.5) + 0.5));
_local5 = charolette.mouth.currentLabel;
_local6 = 0;
_local7 = charolette.mouth.currentLabels;
_local9 = _local7.length;
_local10 = 0;
while (_local10 < _local9) {
_local8 = _local7[_local10];
if (_local8.name == _local5){
_local6 = _local8.frame;
};
_local10++;
};
_local11 = Math.round((MOUTH_FRAMES * _local4));
charolette.mouth.gotoAndStop((_local6 + _local11));
charolette.head.rotation = (-3 * _local4);
Physics.updateAttached(ATTACHED);
updateBlush();
panelFrame();
updateClothesAlpha();
if (((K_ITEM) && ((K_ITEM.alpha < 1)))){
K_ITEM.alpha = (K_ITEM.alpha + 0.1);
if (K_ITEM.alpha >= 1){
K_ITEM.alpha = 1;
};
};
}
public function setupExpressions(){
var _local1:Array;
MOUTH_ID = exp.addPart(charolette.mouth);
EYE1_ID = exp.addPart(charolette.eye1, Expression.ANIMATED, true);
EYE2_ID = exp.addPart(charolette.eye2, Expression.ANIMATED, true);
PUPIL1_ID = exp.addPart(charolette.eye1.pupil);
PUPIL2_ID = exp.addPart(charolette.eye2.pupil);
_local1 = [];
exp.addStateAttributes(_local1, false, 0.08, 0.6);
exp.addPartToState(_local1, MOUTH_ID, "breathe");
exp.addPartToState(_local1, EYE1_ID, "closed");
exp.addPartToState(_local1, EYE2_ID, "closed");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 0);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 0);
exp.addState("sleep", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.1, 0.4);
exp.addPartToState(_local1, MOUTH_ID, "small");
exp.addPartToState(_local1, EYE1_ID, "small");
exp.addPartToState(_local1, EYE2_ID, "small");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 0);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 0);
exp.addState("awaken", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.15, 0.6);
exp.addPartToState(_local1, MOUTH_ID, "teeth");
exp.addPartToState(_local1, EYE1_ID, "big");
exp.addPartToState(_local1, EYE2_ID, "big");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 30);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 30);
exp.addState("disappointed", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.15, 0);
exp.addPartToState(_local1, MOUTH_ID, "sad");
exp.addPartToState(_local1, EYE1_ID, "medium");
exp.addPartToState(_local1, EYE2_ID, "medium");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 30);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 30);
exp.addState("annoyed", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.2, 0.3);
exp.addPartToState(_local1, MOUTH_ID, "confused");
exp.addPartToState(_local1, EYE1_ID, "open");
exp.addPartToState(_local1, EYE2_ID, "open");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 12);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 12);
exp.addState("nervous", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.1, 0.6);
exp.addPartToState(_local1, MOUTH_ID, "smile");
exp.addPartToState(_local1, EYE1_ID, "small");
exp.addPartToState(_local1, EYE2_ID, "small");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 12);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 12);
exp.addState("pleasure", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.3, 0.25);
exp.addPartToState(_local1, MOUTH_ID, "happy");
exp.addPartToState(_local1, EYE1_ID, "sad");
exp.addPartToState(_local1, EYE2_ID, "sad");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 12);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 12);
exp.addState("defeated", _local1);
_local1 = [];
exp.addStateAttributes(_local1, false, 0.2, 0.4);
exp.addPartToState(_local1, MOUTH_ID, "small");
exp.addPartToState(_local1, EYE1_ID, "closed");
exp.addPartToState(_local1, EYE2_ID, "closed");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 12);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 12);
exp.addState("enjoy", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.08, 0.7);
exp.addPartToState(_local1, MOUTH_ID, "happy");
exp.addPartToState(_local1, EYE1_ID, "medium");
exp.addPartToState(_local1, EYE2_ID, "medium");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 20);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 20);
exp.addState("over", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.2, 0.25);
exp.addPartToState(_local1, MOUTH_ID, "breathe");
exp.addPartToState(_local1, EYE1_ID, "sad");
exp.addPartToState(_local1, EYE2_ID, "sad");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 20);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 20);
exp.addState("revert", _local1);
_local1 = [];
exp.addStateAttributes(_local1, true, 0.1, 0.25);
exp.addPartToState(_local1, MOUTH_ID, "small");
exp.addPartToState(_local1, EYE1_ID, "medium");
exp.addPartToState(_local1, EYE2_ID, "medium");
exp.addPartToState(_local1, PUPIL1_ID, null, NaN, NaN, 0, 20);
exp.addPartToState(_local1, PUPIL2_ID, null, NaN, NaN, 0, 20);
exp.addState("smaller", _local1);
_local1 = [];
exp.addStateAttributes(_local1, false, 0.3, 0);
exp.addPartToState(_local1, MOUTH_ID, "small");
exp.addPartToState(_local1, EYE1_ID, "open");
exp.addPartToState(_local1, EYE2_ID, "open");
exp.addState("kick", _local1);
_local1 = [];
exp.addStateAttributes(_local1, false, 0.3, 0);
exp.addPartToState(_local1, MOUTH_ID, "smile");
exp.addPartToState(_local1, EYE1_ID, "shut");
exp.addPartToState(_local1, EYE2_ID, "small");
exp.addState("kick2", _local1);
exp.setState("sleep");
exp.activate();
}
public function _panK(){
showClothes(Boolean((CLOTHES_ALPHA < 0.5)));
}
public function dragStage(_arg1:MouseEvent){
charolette.x = (oldX + (stage.mouseX - oldMX));
charolette.y = (oldY + (stage.mouseY - oldMY));
Algorithms.adjustScreen(charolette, charolette.bg);
}
public function zoomIn(_arg1:MouseEvent){
zoom = 0.02;
}
public function blushOff(){
blushMode = 0;
}
function frame1(){
lcd_stolen = new LocalConnection().domain;
if (lcd_stolen.toLowerCase().indexOf("swfchan") != -1){
stop();
lcd_stolen_bg = new MovieClip();
while (numChildren) {
removeChildAt(0);
};
lcd_stolen_bg.graphics.beginFill(0xFFFFFF);
lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
lcd_stolen_bg.graphics.endFill();
lcd_stolen_item = new MovieClip();
lcd_stolen_item.tF = new TextFormat();
lcd_stolen_item.tF.bold = true;
lcd_stolen_item.tF.size = 64;
lcd_stolen_item.tF.color = 0xFF2200;
lcd_stolen_item.tF.font = "Trebuchet MS";
lcd_stolen_item.txt = new TextField();
lcd_stolen_item.txt.defaultTextFormat = lcd_stolen_item.tF;
lcd_stolen_item.txt.text = "swfchan.com";
lcd_stolen_item.txt.width = (lcd_stolen_item.txt.textWidth + 5);
lcd_stolen_item.txt.height = (lcd_stolen_item.txt.textHeight + 5);
lcd_stolen_item.bmp = new Bitmap(new BitmapData((lcd_stolen_item.txt.textWidth + 5), (lcd_stolen_item.txt.textHeight + 5), true, 0));
lcd_stolen_item.bmp.bitmapData.draw(lcd_stolen_item.txt);
lcd_stolen_item.bmp.x = (lcd_stolen_item.bmp.x - (lcd_stolen_item.bmp.width * 0.5));
lcd_stolen_item.bmp.y = (lcd_stolen_item.bmp.y - (lcd_stolen_item.bmp.height * 0.5));
lcd_stolen_item.addChild(lcd_stolen_item.bmp);
delete lcd_stolen_item.txt;
delete lcd_stolen_item.tF;
lcd_stolen_item.x = (Math.random() * stage.stageWidth);
lcd_stolen_item.y = (Math.random() * stage.stageWidth);
lcd_stolen_item.vX = (5 + (Math.random() * 10));
lcd_stolen_item.vY = (5 + (Math.random() * 10));
lcd_stolen_item.vR = (1 + ((Math.random() * 5) * ((Math.random())<0.5) ? -1 : 1));
stage.addChild(lcd_stolen_bg);
stage.addChild(lcd_stolen_item);
stage.addEventListener(Event.RESIZE, function (_arg1:Event){
lcd_stolen_bg.graphics.clear();
lcd_stolen_bg.graphics.beginFill(0xFFFFFF);
lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
lcd_stolen_bg.graphics.endFill();
});
stage.addEventListener(Event.ENTER_FRAME, function (_arg1:Event){
lcd_stolen_item.x = (lcd_stolen_item.x + lcd_stolen_item.vX);
lcd_stolen_item.y = (lcd_stolen_item.y + lcd_stolen_item.vY);
lcd_stolen_item.rotation = (lcd_stolen_item.rotation + lcd_stolen_item.vR);
bounds = lcd_stolen_item.getBounds(stage);
if ((((((bounds.left < 0)) && ((lcd_stolen_item.vX < 0)))) || ((((bounds.right > stage.stageWidth)) && ((lcd_stolen_item.vX > 0)))))){
lcd_stolen_item.vX = -(lcd_stolen_item.vX);
};
if ((((((bounds.top < 0)) && ((lcd_stolen_item.vY < 0)))) || ((((bounds.bottom > stage.stageHeight)) && ((lcd_stolen_item.vY > 0)))))){
lcd_stolen_item.vY = -(lcd_stolen_item.vY);
};
});
return;
};
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
origX = charolette.x;
origY = charolette.y;
size = 1;
growth = 0;
reset = false;
zoom = 0;
exp = new Expression(stage);
ATTACHED = [];
currentPhrase = 0;
speech = new Speech(charolette.speech._txt);
blushValue = 0;
blushMode = 0;
CLOTHES_ALPHA = 1;
Physics.attach(ATTACHED, charolette.mouth, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.eye1, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.eye2, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.ear1, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.ear2, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.blush, charolette.head, ["rotation"]);
Physics.attach(ATTACHED, charolette.hair1, charolette.head);
Physics.attach(ATTACHED, charolette.hair2, charolette.head);
Physics.attach(ATTACHED, charolette.hair3, charolette.hair2);
speech.interruptible = true;
setupExpressions();
resetAll();
stage.addEventListener(Event.ENTER_FRAME, eFrame);
belly = charolette.belly;
ell = belly.ellipse;
kickLines = new Sprite();
bellyKicks = new Sprite();
kickShade = new Sprite();
charolette.belly.addChildAt(kickLines, 0);
charolette.belly.kicks.addChild(bellyKicks);
charolette.belly.kicks.addChild(kickShade);
kLines = kickLines.graphics;
kLight = bellyKicks.graphics;
kDark = kickShade.graphics;
stage.addEventListener(MouseEvent.MOUSE_UP, bellyUp);
belly.addEventListener(MouseEvent.MOUSE_DOWN, bellyDown);
stage.addEventListener(Event.ENTER_FRAME, bellyFrame);
KICKS = [];
KICKS_ENABLED = false;
_panel._info.text = "Interactive pregnant Charolette.\nDrawn, animated and programmed by Doom the wolf.\nhttp://doom-the-wolf.deviantart.com";
_panel._expand.gotoAndStop(1);
_panel._expand._txt.text = "Expand";
_panel._revert.gotoAndStop(1);
_panel._revert._txt.text = "Revert";
_panel._cont.gotoAndStop(1);
_panel._cont_txt.text = "Automatic";
_panel._nonstop.gotoAndStop(1);
_panel._nonstop_txt.text = "Non-stop";
_panel._plus._txt.text = "+";
_panel._minus._txt.text = "-";
_panel._zero._txt.text = "0";
_panel._expand.addEventListener(MouseEvent.MOUSE_DOWN, expand);
_panel._revert.addEventListener(MouseEvent.MOUSE_DOWN, revert);
_panel._cont.addEventListener(MouseEvent.MOUSE_DOWN, invertFrame);
_panel._nonstop.addEventListener(MouseEvent.MOUSE_DOWN, invertFrame);
_panel._plus.addEventListener(MouseEvent.MOUSE_DOWN, zoomIn);
_panel._zero.addEventListener(MouseEvent.MOUSE_DOWN, zoomReset);
_panel._minus.addEventListener(MouseEvent.MOUSE_DOWN, zoomOut);
stage.addEventListener(MouseEvent.MOUSE_UP, panelUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, pickStage);
STEAM = [];
STEAM_CLIP = new Sprite();
stage.addEventListener(Event.ENTER_FRAME, updateSteam);
charolette.addChildAt(STEAM_CLIP, (charolette.getChildIndex(charolette.coffee) + 1));
stage.addEventListener(KeyboardEvent.KEY_DOWN, kSCroll);
K_ITEM = null;
K_STR_VALUE = "K".charCodeAt(0);
C_STR_VALUE = "C".charCodeAt(0);
}
public function zoomOut(_arg1:MouseEvent){
zoom = -0.02;
}
public function expand(_arg1:MouseEvent){
if (growth > 0){
growth = 0;
} else {
if (size < MAX_SIZE){
growth = GROWTH_SPEED;
_panel._expand.gotoAndStop(2);
_panel._revert.gotoAndStop(1);
} else {
reset = true;
};
};
}
public function showClothes(_arg1:Boolean=true){
CLOTHES_ALPHA = Number(_arg1);
}
public function blushOn(){
blushMode = 1;
}
public function blush(){
blushMode = 2;
}
public function kSCroll(_arg1:KeyboardEvent){
if (_arg1.keyCode == K_STR_VALUE){
_scrollK();
} else {
if (_arg1.keyCode == C_STR_VALUE){
_panK();
};
};
}
public function bellyUp(_arg1:MouseEvent){
var _local2:int;
var _local3:int;
_local3 = KICKS.length;
_local2 = 0;
while (_local2 < _local3) {
KICKS[_local2][1] = 0;
_local2++;
};
}
public function zoomReset(_arg1:MouseEvent){
zoom = 0;
charolette.scaleX = (charolette.scaleY = 1);
charolette.x = origX;
charolette.y = origY;
}
public function dropStage(_arg1:MouseEvent){
stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragStage);
stage.removeEventListener(MouseEvent.MOUSE_UP, dropStage);
}
public function pickStage(_arg1:MouseEvent){
if (draggable()){
oldX = charolette.x;
oldY = charolette.y;
oldMX = stage.mouseX;
oldMY = stage.mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragStage);
stage.addEventListener(MouseEvent.MOUSE_UP, dropStage);
};
}
public function updateClothesAlpha(){
var _local1:Number;
_local1 = charolette.clothes1.alpha;
if (_local1 < CLOTHES_ALPHA){
_local1 = (_local1 + 0.1);
if (_local1 > CLOTHES_ALPHA){
_local1 = CLOTHES_ALPHA;
};
} else {
if (_local1 > CLOTHES_ALPHA){
_local1 = (_local1 - 0.1);
if (_local1 < CLOTHES_ALPHA){
_local1 = CLOTHES_ALPHA;
};
};
};
charolette.clothes1.alpha = (charolette.b1cover.alpha = (charolette.leg1cover.alpha = (charolette.clothes2.alpha = (charolette.clothes_back.alpha = (charolette.sleeve1.alpha = (charolette.sleeve2.alpha = (charolette.belt.alpha = _local1)))))));
}
public function bellyFrame(_arg1:Event){
var _local2:Number;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:Array;
var _local7:int;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Matrix;
var _local16:Matrix;
kLines.clear();
kLight.clear();
kDark.clear();
if (!KICKS.length){
return;
};
_local2 = 0;
_local3 = 0;
_local4 = 0;
_local5 = 0;
_local8 = KICKS.length;
_local7 = 0;
for (;_local7 < _local8;_local7++) {
_local6 = KICKS[_local7];
_local2 = _local6[0];
_local3 = _local6[1];
_local4 = _local6[2];
_local5 = _local6[3];
if (_local3){
if (_local2 < 1){
_local2 = (_local2 + 0.2);
};
_local3--;
} else {
if (_local2 > 0){
_local2 = (_local2 - 0.1);
} else {
KICKS.splice(_local7, 1);
_local7--;
_local8--;
_local6 = null;
continue;
};
};
if ((((_local7 < (_local8 - 1))) && ((_local2 > 0)))){
drawKick(_local6[2], _local6[3], _local2);
};
_local6[1] = _local3;
_local6[0] = _local2;
};
if (((!(_local8)) || (!(charolette.belly.hitTestPoint(stage.mouseX, stage.mouseY))))){
Mouse.show();
} else {
Mouse.hide();
};
if (((_local8) && ((_local2 > 0)))){
_local6 = KICKS[(KICKS.length - 1)];
_local9 = belly.mouseX;
_local10 = belly.mouseY;
_local11 = ell.mouseX;
_local12 = ell.mouseY;
_local13 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12)));
_local14 = Math.atan2(_local12, _local11);
_local15 = ell.transform.matrix;
if (_local13 < ELLIPSE_MAX_RADIUS){
_local4 = _local9;
_local6[2] = _local4;
_local5 = _local10;
_local6[3] = _local5;
} else {
_local11 = (Math.cos(_local14) * ELLIPSE_MAX_RADIUS);
_local12 = (Math.sin(_local14) * ELLIPSE_MAX_RADIUS);
_local4 = (((_local15.a * _local11) + (_local15.b * -(_local12))) + _local15.tx);
_local6[2] = _local4;
_local5 = (((_local15.c * -(_local11)) + (_local15.d * _local12)) + _local15.ty);
_local6[3] = _local5;
};
_local16 = belly.transform.matrix;
Algorithms.deformMatrix(_local16, ((_local4 - ell.x) * INV_ELLIPSE_MAX_RADIUS), ((_local5 - ell.y) * INV_ELLIPSE_MAX_RADIUS), ((_local2 * KICK_DEFORM_SCALE) * (1 - (0.5 * (size * INV_MAX_SIZE)))));
belly.transform.matrix = _local16;
drawKick(_local4, _local5, _local2);
};
}
public function setSize(_arg1:Number, _arg2:Boolean=false):Number{
var _local3:Number;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
_local3 = 1;
_arg1 = ((_arg1)>MAX_SIZE) ? MAX_SIZE : _arg1;
if (_arg2){
_local3 = _arg1;
} else {
if ((((charolette.belt.currentFrame <= BELT_FRAME)) && ((charolette.belt.alpha > 0)))){
_arg1 = ((_arg1 < charolette.belt.currentFrame)) ? charolette.belt.currentFrame : _arg1;
_local3 = _arg1;
} else {
if (charolette.belt.alpha > 0){
_local3 = (BELT_FRAME + 1);
};
};
};
_local4 = _arg1;
_local5 = _local3;
charolette.belly.gotoAndStop(_local4);
charolette.breast1.gotoAndStop(_local4);
charolette.breast2.gotoAndStop(_local4);
charolette.clothes1.gotoAndStop(_local4);
charolette.b1cover.gotoAndStop(_local4);
charolette.leg1cover.gotoAndStop(_local4);
charolette.clothes2.gotoAndStop(_local4);
charolette.clothes_back.gotoAndStop(_local4);
charolette.belt.gotoAndStop(_local5);
_local6 = charolette.getChildIndex(charolette.clothes2);
_local7 = charolette.getChildIndex(charolette.breast2);
if ((((charolette.belly.currentFrame <= CLOTHES2_FRAME)) && ((_local6 < _local7)))){
charolette.addChildAt(charolette.clothes2, (_local7 + 2));
} else {
if ((((charolette.belly.currentFrame > CLOTHES2_FRAME)) && ((_local6 > _local7)))){
charolette.addChildAt(charolette.clothes2, (_local7 - 1));
};
};
_local7 = charolette.getChildIndex(charolette.breast1);
_local6 = charolette.getChildIndex(charolette.b1cover);
if ((((charolette.belly.currentFrame <= B1COVER_FRAME)) && ((_local6 < _local7)))){
charolette.addChildAt(charolette.b1cover, (_local7 + 1));
} else {
if ((((charolette.belly.currentFrame > B1COVER_FRAME)) && ((_local6 > _local7)))){
charolette.addChildAt(charolette.b1cover, _local7);
};
};
return (_arg1);
}
public function invertFrame(_arg1:MouseEvent){
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
if (_local2){
_local2.gotoAndStop((3 - _local2.currentFrame));
};
}
public function bellyDown(_arg1:MouseEvent){
if ((((size >= BELLY_KICK_FRAME)) && (KICKS_ENABLED))){
if (Math.random() < 0.33){
if (Math.random() < 0.33){
exp.react("kick", 16);
speech.say("Ooh!");
blush();
} else {
exp.react("kick2", 16);
};
};
KICKS[KICKS.length] = [0, 10, 0, 0];
};
}
public function draggable():Boolean{
var _local1:Number;
var _local2:Number;
_local1 = stage.mouseX;
_local2 = stage.mouseY;
if (((((((((((((((((((((((((((((((charolette.leg1.hitTestPoint(_local1, _local2)) || (charolette.leg2.hitTestPoint(_local1, _local2)))) || (charolette.body.hitTestPoint(_local1, _local2)))) || (charolette.belly.hitTestPoint(_local1, _local2)))) || (charolette.breast1.hitTestPoint(_local1, _local2)))) || (charolette.breast2.hitTestPoint(_local1, _local2)))) || (charolette.arm1.hitTestPoint(_local1, _local2)))) || (charolette.arm2.hitTestPoint(_local1, _local2)))) || (charolette.head.hitTestPoint(_local1, _local2)))) || (charolette.hair1.hitTestPoint(_local1, _local2)))) || (charolette.hair2.hitTestPoint(_local1, _local2)))) || (charolette.tail.hitTestPoint(_local1, _local2)))) || (charolette.ear1.hitTestPoint(_local1, _local2)))) || (charolette.ear2.hitTestPoint(_local1, _local2)))) || (((charolette.clothes1.visible) && (charolette.belt.hitTestPoint(_local1, _local2)))))) || ((_panel.y < (stage.stageHeight - 50))))){
return (false);
};
return (true);
}
public function drawKick(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local4 = (ell.getRect(ell).right * ell.scaleX);
_local5 = (ell.getRect(ell).bottom * ell.scaleY);
_local6 = (Math.max(_local4, _local5) * KICK_RATIO);
kLines.lineStyle(1);
kDark.beginFill(0, 0.15);
Drawing.drawKick(kLight, kDark, kLines, ell.x, ell.y, _local4, _local5, (ell.rotation * DEG_TO_RAD), _arg1, _arg2, (_local6 * _arg3), _arg3, 0xFFFFFF, 16764108, 1, 1);
kDark.endFill();
}
public function createSteam(){
var _local1:MovieClip;
var _local2:Graphics;
var _local3:Matrix;
_local1 = new MovieClip();
_local1.vY = -2;
_local1.vX = 0;
_local1.phase = ((Math.random() * Math.PI) * 2);
_local1.frequency = 0.2;
_local1.life = 50;
_local1.x = (((charolette.coffee.x - 10) + (Math.random() * 4)) - 2);
_local1.y = (charolette.coffee.y - (charolette.coffee.height * 0.5));
_local2 = _local1.graphics;
_local3 = new Matrix();
_local3.createGradientBox(30, 30, 0, -15, -15);
_local2.beginGradientFill(GradientType.RADIAL, [0xFFFFFF, 0xFFFFFF], [0.25, 0], [0, 0xFF], _local3);
_local2.drawCircle(0, 0, 15);
_local2.endFill();
STEAM[STEAM.length] = _local1;
STEAM_CLIP.addChild(_local1);
}
public function updateBlush(){
if (blushMode){
if (blushValue < 1){
blushValue = (blushValue + 0.1);
if (blushValue >= 1){
blushValue = 1;
if (blushMode == 2){
blushMode = 0;
};
};
charolette.blush.alpha = blushValue;
};
} else {
if (blushValue > 0){
blushValue = (blushValue - 0.05);
if (blushValue <= 0){
blushValue = 0;
};
charolette.blush.alpha = blushValue;
};
};
}
public function panelFrame(){
var _local1:TextField;
var _local2:TextField;
if (_panel.hitTestPoint(stage.mouseX, stage.mouseY)){
_panel.y = (_panel.y + (((stage.stageHeight - 100) - _panel.y) * 0.5));
} else {
_panel.y = (_panel.y + ((stage.stageHeight - _panel.y) * 0.5));
};
_local1 = _panel._expand._txt;
if (growth > 0){
_local1.text = "Expanding";
} else {
if (growth < 0){
_local1.text = "Expand";
} else {
if (size < SMALL_SIZE){
_local1.text = "Expand";
} else {
if (size < MID_SIZE){
_local1.text = "Bigger";
} else {
if (size < MAX_SIZE){
_local1.text = "More!";
} else {
_local1.text = "Reset";
};
};
};
};
};
_local2 = _panel._revert._txt;
if (growth < 0){
_local2.text = "Reverting";
} else {
if (canRevert()){
_local2.text = "Revert";
} else {
_local2.text = "---";
};
};
if (zoom){
charolette.scaleX = (charolette.scaleX + zoom);
if (charolette.scaleX > 3){
charolette.scaleX = 3;
};
charolette.scaleY = charolette.scaleX;
Algorithms.adjustScreen(charolette, charolette.bg);
};
}
public function resetAll(){
currentPhrase = 0;
reset = false;
charolette.blush.alpha = 0;
size = setSize(1, true);
exp.endReact();
exp.setState("sleep");
showClothes();
KICKS_ENABLED = false;
if (K_ITEM){
K_ITEM.parent.removeChild(K_ITEM);
};
currentPhrase = 0;
}
public function canRevert(){
return (!((((charolette.belt.currentFrame <= BELT_FRAME)) && ((charolette.belt.alpha > 0)))));
}
public function panelUp(_arg1:MouseEvent){
if (((!((growth == 0))) && ((_panel._cont.currentFrame == 1)))){
growth = 0;
_panel._expand.gotoAndStop(1);
_panel._revert.gotoAndStop(1);
};
if (reset){
resetAll();
};
zoom = 0;
}
public function revert(_arg1:MouseEvent){
if (growth < 0){
growth = 0;
} else {
if ((((size > 1)) && (canRevert()))){
growth = -(GROWTH_SPEED);
_panel._revert.gotoAndStop(2);
_panel._expand.gotoAndStop(1);
};
};
}
public function _scrollK(){
if (!KICKS_ENABLED){
KICKS_ENABLED = true;
if (K_ITEM){
K_ITEM.parent.removeChild(K_ITEM);
};
K_ITEM = new KItem();
charolette.addChildAt(K_ITEM, (charolette.getChildIndex(charolette.coffee) + 1));
K_ITEM.x = (charolette.coffee.x + 10);
K_ITEM.y = (charolette.coffee.y + 100);
K_ITEM.alpha = 0;
};
}
}
}//package charolette_fla
Section 13
//mouth_28 (charolette_fla.mouth_28)
package charolette_fla {
import flash.display.*;
public dynamic class mouth_28 extends MovieClip {
public function mouth_28(){
addFrameScript(23, frame24, 48, frame49, 73, frame74, 98, frame99, 123, frame124, 148, frame149);
}
function frame74(){
this.gotoAndPlay(this.currentLabel);
}
function frame24(){
this.gotoAndPlay(this.currentLabel);
}
function frame99(){
this.gotoAndPlay(this.currentLabel);
}
function frame124(){
this.gotoAndPlay(this.currentLabel);
}
function frame49(){
this.gotoAndPlay(this.currentLabel);
}
function frame149(){
this.gotoAndPlay(this.currentLabel);
}
}
}//package charolette_fla
Section 14
//panel_44 (charolette_fla.panel_44)
package charolette_fla {
import flash.display.*;
import flash.text.*;
public dynamic class panel_44 extends MovieClip {
public var _nonstop:MovieClip;
public var _revert:MovieClip;
public var _cont:MovieClip;
public var _minus:MovieClip;
public var _cont_txt:TextField;
public var _zero:MovieClip;
public var _plus:MovieClip;
public var _info:TextField;
public var _expand:MovieClip;
public var _nonstop_txt:TextField;
}
}//package charolette_fla
Section 15
//speech_42 (charolette_fla.speech_42)
package charolette_fla {
import flash.display.*;
import flash.text.*;
public dynamic class speech_42 extends MovieClip {
public var _txt:TextField;
}
}//package charolette_fla
Section 16
//Expansion (expansion.Expansion)
package expansion {
import flash.display.*;
import flash.events.*;
public class Expansion extends EventDispatcher {
private var _expanding:Array;
private var _sizes:Array;
private var _active:Boolean;
private var _numExpandables:uint;
private var _expandables:Array;
private var _checkPoints:Array;
private var _maxSizes:Array;
private var _stage:Stage;
public function Expansion(_arg1:Stage){
_stage = _arg1;
_active = false;
_numExpandables = 0;
_expandables = [];
_sizes = [];
_maxSizes = [];
_expanding = [];
_checkPoints = [];
if (_arg1 == null){
throw ("ERROR: Stage must not be null.");
};
}
public function set size(_arg1:Number){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setSize(_local2, _arg1);
_local2++;
};
}
public function setSize(_arg1:uint, _arg2:Number){
if (isNaN(_arg2)){
return;
};
_sizes[_arg1] = Math.max(1, Math.min(_arg2, _maxSizes[_arg1]));
_expandables[_arg1].gotoAndStop(Math.floor(_sizes[_arg1]));
}
public function getExpandableID(_arg1:MovieClip):int{
var _local2:int;
while (_local2 < _expandables.length) {
if (_expandables[_local2] == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
private function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Boolean;
var _local5:Array;
var _local6:int;
_local4 = false;
_local5 = [];
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
} else {
_local3 = _sizes[_local2];
_sizes[_local2] = Math.max(1, Math.min(_maxSizes[_local2], (_sizes[_local2] + _expanding[_local2])));
if (_local3 != _sizes[_local2]){
_local4 = true;
_expandables[_local2].gotoAndStop(Math.floor(_sizes[_local2]));
while (_local6 < _checkPoints.length) {
if (_checkPoints[_local6].expandable == _local2){
if ((((((_checkPoints[_local6].direction > 0)) && ((_checkPoints[_local6].size > _local3)))) && ((_checkPoints[_local6].size <= _sizes[_local2])))){
_local5.push(new ExpansionEvent("checkpoint", _expandables[_local2], _checkPoints[_local6].size, _checkPoints[_local6].direction, _checkPoints[_local6].reaction, _checkPoints[_local6].timer));
break;
} else {
if ((((((_checkPoints[_local6].direction < 0)) && ((_checkPoints[_local6].size >= _sizes[_local2])))) && ((_checkPoints[_local6].size < _local3)))){
_local5.push(new ExpansionEvent("checkpoint", _expandables[_local2], _checkPoints[_local6].size, _checkPoints[_local6].direction, _checkPoints[_local6].reaction, _checkPoints[_local6].timer));
break;
};
};
};
_local6++;
};
};
};
_local2++;
};
if (_local4){
dispatchEvent(new Event("sizeChanged"));
_local2 = 0;
while (_local2 < _local5.length) {
dispatchEvent(_local5[_local2]);
_local2++;
};
};
}
public function set maxSize(_arg1:uint){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setMaxSize(_local2, _arg1);
_local2++;
};
}
public function set growth(_arg1:Number){
var _local2:int;
_local2 = 0;
while (_local2 < _expandables.length) {
if (!_expandables[_local2]){
return;
};
setGrowth(_local2, _arg1);
_local2++;
};
}
public function insertExpandable(_arg1:MovieClip, _arg2:int=-1):int{
var _local3:int;
if (_arg1 == null){
return (-1);
};
_local3 = 0;
while (_local3 < _expandables.length) {
if (_expandables[_local3] == _arg1){
if (_arg2 > 0){
_maxSizes[_local3] = _arg2;
} else {
if (!_arg2){
_maxSizes[_local3] = _arg1.totalFrames;
};
};
return (_local3);
};
_local3++;
};
_local3 = 0;
while (_local3 < _expandables.length) {
if (_expandables[_local3] == null){
break;
};
_local3++;
};
_arg1.gotoAndStop(1);
_numExpandables++;
_sizes[_local3] = 1;
_expandables[_local3] = _arg1;
_expanding[_local3] = 0;
if (_arg2 > 0){
_maxSizes[_local3] = _arg2;
} else {
_maxSizes[_local3] = _arg1.totalFrames;
};
return (_local3);
}
public function clearCheckPoint(_arg1:uint, _arg2:int, _arg3:int=1){
var _local4:MovieClip;
var _local5:int;
_local4 = _expandables[_arg1];
if (!_local4){
return;
};
_local5 = 0;
while (_local5 < _checkPoints.length) {
if ((((((_checkPoints[_local5].size == _arg2)) && ((_checkPoints.expandable == _local4)))) && ((_checkPoints[_local5].direction == _arg3)))){
delete _checkPoints[_local5];
_checkPoints.splice(_local5, 1);
return;
};
_local5++;
};
}
public function get numExpandables():uint{
return (_numExpandables);
}
public function removeExpandable(_arg1:MovieClip){
var _local2:int;
while (_local2 < _expandables.length) {
if (_expandables[_local2] == _arg1){
clearCheckPointByID(_local2);
delete _expandables[_local2];
_expandables[_local2] = null;
_sizes[_local2] = 0;
_maxSizes[_local2] = 0;
_expanding[_local2] = 0;
_numExpandables--;
if (_local2 == (_expandables.length - 1)){
_expandables.splice(_local2, 1);
_sizes.splice(_local2, 1);
_maxSizes.splice(_local2, 1);
_expanding.splice(_local2, 1);
};
return;
};
_local2++;
};
}
public function getGrowth(_arg1:uint):Number{
if (_arg1 > _expandables.length){
return (0);
};
return (_expanding[_arg1]);
}
public function setMaxSize(_arg1:uint, _arg2:uint){
if (isNaN(_arg2)){
return;
};
_maxSizes[_arg1] = Math.max(1, Math.min(_expandables[_arg1].totalFrames, _arg2));
if (_sizes[_arg1] > _arg2){
setSize(_arg1, _arg2);
};
}
public function setGrowth(_arg1:uint, _arg2:Number){
if (isNaN(_arg2)){
return;
};
_expanding[_arg1] = _arg2;
}
public function getMaxSize(_arg1:uint):uint{
if (_arg1 > _expandables.length){
return (0);
};
return (_maxSizes[_arg1]);
}
public function getCheckPoint(_arg1:int, _arg2:int, _arg3:int=1):String{
var _local4:MovieClip;
var _local5:int;
_local4 = _expandables[_arg1];
if (!_local4){
return ("");
};
_local5 = 0;
while (_local5 < _checkPoints.length) {
if ((((((_checkPoints[_local5].size == _arg2)) && ((_checkPoints.expandable == _local4)))) && ((_checkPoints[_local5].direction == _arg3)))){
return (_checkPoints[_local5].reaction);
};
_local5++;
};
return ("");
}
private function clearCheckPointByID(_arg1:uint){
var _local2:MovieClip;
var _local3:int;
_local2 = _expandables[_arg1];
if (!_local2){
return;
};
_local3 = 0;
while (_local3 < _checkPoints.length) {
if (_checkPoints.expandable == _local2){
delete _checkPoints[_local3];
_checkPoints.splice(_local3, 1);
_local3--;
};
_local3++;
};
}
public function getExpandable(_arg1:uint):MovieClip{
if (_arg1 > _expandables.length){
return (null);
};
return (_expandables[_arg1]);
}
public function removeExpandableAt(_arg1:uint){
if ((((_arg1 < _expandables.length)) && (!((_expandables[_arg1] == null))))){
clearCheckPointByID(_arg1);
_expandables[_arg1] = null;
_sizes[_arg1] = 0;
_maxSizes[_arg1] = 0;
_expanding[_arg1] = 0;
_numExpandables--;
if (_arg1 == (_expandables.length - 1)){
_expandables.splice(_arg1, 1);
_sizes.splice(_arg1, 1);
_maxSizes.splice(_arg1, 1);
_expanding.splice(_arg1, 1);
};
};
}
public function setCheckPoint(_arg1:uint, _arg2:int, _arg3:int=1, _arg4:String="", _arg5:int=30){
var _local6:MovieClip;
var _local7:int;
_local6 = _expandables[_arg1];
if (!_local6){
return;
};
_local7 = 0;
while (_local7 < _checkPoints.length) {
if ((((((_checkPoints[_local7].size == _arg2)) && ((_checkPoints[_local7].expandable == _arg1)))) && ((_checkPoints[_local7].direction == _arg3)))){
_checkPoints[_local7].reaction = _arg4;
return;
};
_local7++;
};
if (_arg3 < 0){
_arg3 = -1;
} else {
if (_arg3 > 0){
_arg3 = 1;
};
};
_checkPoints.push({size:_arg2, reaction:_arg4, expandable:_arg1, direction:_arg3, timer:_arg5});
}
public function activate(_arg1:Boolean=true){
if (_active == _arg1){
return;
};
_active = _arg1;
if (_active){
_stage.addEventListener("enterFrame", eFrame);
} else {
_stage.removeEventListener("enterFrame", eFrame);
};
}
public function getSize(_arg1:uint):Number{
if (_arg1 > _expandables.length){
return (0);
};
return (_sizes[_arg1]);
}
}
}//package expansion
Section 17
//ExpansionEvent (expansion.ExpansionEvent)
package expansion {
import flash.display.*;
import flash.events.*;
public class ExpansionEvent extends Event {
public var timer:int;
public var size:int;
public var reaction:String;
public var expandable:MovieClip;
public var direction:int;
public function ExpansionEvent(_arg1:String, _arg2:MovieClip, _arg3:int, _arg4:int=1, _arg5:String="", _arg6:int=30){
super(_arg1);
expandable = _arg2;
size = _arg3;
direction = _arg4;
reaction = _arg5;
timer = _arg6;
}
}
}//package expansion
Section 18
//Expression (expansion.Expression)
package expansion {
import flash.display.*;
import flash.events.*;
public class Expression extends EventDispatcher {
private var _position:Number;
private var _state:String;
private var _curState:Array;
private var _states:Array;
private var _active:Boolean;
private var _permanent:Boolean;
private var _offset:Number;
private var _interruptible:Boolean;
private var _eyes:Array;
private var _partBaseValues:Array;
private var _timer:int;
private var _canBlink:Boolean;
private var _partTypes:Array;
private var _expansion:Expansion;
private var _angle:Number;
private var _frequency:Number;
private var _parts:Array;
private var _blinking:Boolean;
private var _savedState:Array;
private var _reactions:Array;
private var _stage:Stage;
public static const ANIMATED:int = 0;
public static const ROTATION_SPEED:int = 2;
public static const X_POS:int = 3;
public static const Y_POS:int = 4;
public static const FRAME:int = 0;
public static const MOVABLE:int = 1;
public static const ROTATION:int = 1;
public function Expression(_arg1:Stage){
_active = false;
_stage = _arg1;
_state = "";
_canBlink = true;
_blinking = false;
_offset = 0;
_frequency = 0;
_angle = 0;
_position = 0;
_curState = [];
_states = [];
_eyes = [];
_parts = [];
_partTypes = [];
_partBaseValues = [];
_savedState = null;
_reactions = [];
_interruptible = true;
_timer = -1;
_permanent = false;
_expansion = null;
if (_arg1 == null){
throw ("ERROR: Stage must not be null.");
};
}
public function get reacting():Boolean{
return (!((_savedState == null)));
}
public function get canBlink():Boolean{
return (_canBlink);
}
public function addPartToState(_arg1:Array, _arg2:int, _arg3:String, _arg4:Number=0, _arg5:Number=1, _arg6:Number=NaN, _arg7:Number=NaN){
var _local8:MovieClip;
if (!_arg1){
return;
};
_local8 = getPartAt(_arg2);
if (!_local8){
throw ("This part is not in the list. Try using addPart() first.");
};
if (_arg1[_arg2]){
delete _arg1[_arg2];
};
_arg1[_arg2] = [];
_arg1[_arg2][FRAME] = _arg3;
if (isNaN(_arg4)){
_arg1[_arg2][ROTATION] = undefined;
} else {
_arg1[_arg2][ROTATION] = _arg4;
};
if (isNaN(_arg5)){
_arg1[_arg2][ROTATION_SPEED] = undefined;
} else {
_arg1[_arg2][ROTATION_SPEED] = _arg5;
};
if (isNaN(_arg6)){
_arg1[_arg2][X_POS] = undefined;
} else {
_arg1[_arg2][X_POS] = _arg6;
};
if (isNaN(_arg7)){
_arg1[_arg2][Y_POS] = undefined;
} else {
_arg1[_arg2][Y_POS] = _arg7;
};
}
public function get state():String{
return (_state);
}
public function get offset():Number{
return (_offset);
}
public function get blinking():Boolean{
return (_blinking);
}
private function _reacting(_arg1:Event){
var _local2:Object;
_local2 = getReaction((_arg1.target as EventDispatcher), _arg1.type);
if (_local2 == null){
throw ("Reaction not found on the list.");
};
react(_local2.state, _local2.timer);
}
public function destroy(){
var _local1:int;
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_local1 = 0;
while (_local1 < _reactions.length) {
_reactions[_local1].hit.removeEventListener(_reactions[_local1].type, _reacting);
delete _reactions[_local1];
_local1++;
};
_reactions = [];
_curState = [];
_states = [];
_parts = [];
_partTypes = [];
_partBaseValues = [];
_savedState = null;
_state = "";
_canBlink = true;
_blinking = false;
_offset = 0;
_frequency = 0;
_angle = 0;
_position = 0;
_timer = -1;
}
public function endReact(){
if (!_savedState){
return;
};
_curState.state = _savedState.state;
_savedState = null;
setState(_curState.state);
_timer = -1;
dispatchEvent(new Event("endreact"));
}
public function removePart(_arg1:MovieClip){
var _local2:int;
var _local3:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
delete _parts[_local2];
delete _partTypes[_local2];
_parts[_local2] = null;
_partTypes[_local2] = 0;
_local3 = 0;
while (_local3 < _eyes.length) {
if (_eyes[_local3] == _local2){
_eyes.splice(_local3, 1);
break;
};
_local3++;
};
if (_local2 == (_parts.length - 1)){
_parts.splice(_local2, 1);
_partTypes.splice(_local2, 1);
};
return;
};
_local2++;
};
}
public function getReaction(_arg1:EventDispatcher, _arg2:String):Object{
var _local3:int;
_local3 = 0;
while (_local3 < _reactions.length) {
if ((((_reactions[_local3].hit == _arg1)) && ((_reactions[_local3].type == _arg2)))){
return (_reactions[_local3]);
};
_local3++;
};
return (null);
}
public function set offset(_arg1:Number){
if (!isNaN(_arg1)){
_offset = _arg1;
};
}
public function get position():Number{
return (_position);
}
private function eFrame(_arg1:Event){
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
if ((((((((Math.random() > 0.99)) && (_canBlink))) && ((_savedState == null)))) && (_eyes.length))){
_local2 = 0;
while (_local2 < _eyes.length) {
_parts[_eyes[_local2]].gotoAndPlay("blink");
_local2++;
};
_blinking = true;
dispatchEvent(new Event("blink"));
};
if (((_blinking) && ((_parts[_eyes[0]].currentLabel == "endblink")))){
_local2 = 0;
while (_local2 < _eyes.length) {
if (((_curState[_eyes[_local2]]) && (_curState[_eyes[_local2]][FRAME]))){
_parts[_eyes[_local2]].gotoAndPlay(_curState[_eyes[_local2]][FRAME]);
};
_local2++;
};
_blinking = false;
dispatchEvent(new Event("endblink"));
};
_local2 = 0;
while (_local2 < _curState.length) {
if (((_curState[_local2]) && (_parts[_local2]))){
if (!isNaN((_curState[_local2][ROTATION] + _curState[_local2][ROTATION_SPEED]))){
_local3 = (_curState[_local2][ROTATION] + _partBaseValues[_local2].rotation);
_local4 = (_local3 - 360);
_local5 = (_local3 + 360);
_local6 = _local3;
_local7 = Math.abs((_local4 - _parts[_local2].rotation));
_local8 = Math.abs((_local5 - _parts[_local2].rotation));
_local9 = Math.abs((_local3 - _parts[_local2].rotation));
if (_local7 <= _local9){
_local6 = _local4;
};
if ((((_local8 <= _local7)) && ((_local8 <= _local9)))){
_local6 = _local5;
};
if (_parts[_local2].rotation < (_local6 - _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation + _curState[_local2][ROTATION_SPEED]);
} else {
if (_parts[_local2].rotation > (_local6 + _curState[_local2][ROTATION_SPEED])){
_parts[_local2].rotation = (_parts[_local2].rotation - _curState[_local2][ROTATION_SPEED]);
} else {
_parts[_local2].rotation = _local3;
};
};
};
if (!isNaN(_curState[_local2][X_POS])){
_local3 = (_curState[_local2][X_POS] + _partBaseValues[_local2].x);
_parts[_local2].x = (_parts[_local2].x + ((_local3 - _parts[_local2].x) * 0.5));
};
if (!isNaN(_curState[_local2][Y_POS])){
_local3 = (_curState[_local2][Y_POS] + _partBaseValues[_local2].y);
_parts[_local2].y = (_parts[_local2].y + ((_local3 - _parts[_local2].y) * 0.5));
};
};
_local2++;
};
_position = Math.sin(_angle);
_angle = (_angle + _frequency);
if (_angle > 500){
_angle = (_angle - ((Math.PI * 2) * (500 / (Math.PI * 2))));
};
if (_savedState){
if (_timer > 0){
_timer--;
} else {
if (_timer == 0){
endReact();
};
};
};
dispatchEvent(new Event("enterFrame"));
}
public function react(_arg1:String, _arg2:int=30){
var _local3:Array;
if (((_savedState) && (!(_interruptible)))){
return;
};
if (((!(_arg1)) || (!(_arg1.length)))){
return;
};
_local3 = null;
if (!_savedState){
_local3 = _curState;
} else {
_local3 = _savedState;
};
_savedState = null;
_timer = _arg2;
setState(_arg1);
if (_local3 != null){
_savedState = _local3;
};
dispatchEvent(new Event("react"));
}
public function removePartAt(_arg1:uint){
var _local2:int;
if ((((_arg1 >= _parts.length)) || ((_parts[_arg1] == null)))){
return;
};
delete _parts[_arg1];
delete _partTypes[_arg1];
_parts[_arg1] = null;
_partTypes[_arg1] = 0;
_local2 = 0;
while (_local2 < _eyes.length) {
if (_eyes[_local2] == _arg1){
_eyes.splice(_local2, 1);
break;
};
_local2++;
};
if (_arg1 == (_parts.length - 1)){
_parts.splice(_arg1, 1);
_partTypes.splice(_arg1, 1);
};
}
public function addPart(_arg1:MovieClip, _arg2:int=0, _arg3:Boolean=false):int{
var _local4:int;
if (!_arg1){
return (-1);
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == _arg1){
_partTypes[_local4] = _arg2;
return (_local4);
};
_local4++;
};
_local4 = 0;
while (_local4 < _parts.length) {
if (_parts[_local4] == null){
break;
};
_local4++;
};
_arg1.stop();
if (_arg3){
_eyes.push(_local4);
};
_parts[_local4] = _arg1;
_partTypes[_local4] = _arg2;
_partBaseValues[_local4] = {x:_arg1.x, y:_arg1.y, scaleX:_arg1.scaleX, scaleY:_arg1.scaleY, rotation:_arg1.rotation};
return (_local4);
}
public function get interruptible():Boolean{
return (_interruptible);
}
public function get curState():Array{
return (_curState);
}
public function getStateByName(_arg1:String):Object{
if (!_states[_arg1]){
return (null);
};
return (_states[_arg1]);
}
public function set frequency(_arg1:Number){
if (!isNaN(_arg1)){
_frequency = _arg1;
};
}
public function getPartID(_arg1:MovieClip):int{
var _local2:int;
_local2 = 0;
while (_local2 < _parts.length) {
if (_parts[_local2] == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function get timer():int{
return (_timer);
}
public function get defaultState():String{
if (!_savedState){
return (_state);
};
return (_savedState.state);
}
public function get angle():Number{
return (_angle);
}
public function set canBlink(_arg1:Boolean){
_canBlink = _arg1;
}
public function reactTo(_arg1:Expansion, _arg2:Boolean=false){
if (_expansion != null){
_expansion.removeEventListener("checkpoint", expansionReaction);
_expansion = null;
};
_permanent = _arg2;
if (!_arg1){
return;
};
_expansion = _arg1;
_arg1.addEventListener("checkpoint", expansionReaction, false, 1, true);
}
public function get frequency():Number{
return (_frequency);
}
private function expansionReaction(_arg1:ExpansionEvent){
if (((!(_arg1.reaction)) || (!(_arg1.reaction.length)))){
return;
};
if (_permanent){
if (reacting){
_savedState.state = _arg1.reaction;
} else {
setState(_arg1.reaction);
};
} else {
react(_arg1.reaction, _arg1.timer);
};
}
public function setState(_arg1:String, _arg2:Boolean=false){
var _local3:Array;
var _local4:int;
var _local5:String;
if (_arg1 == _state){
return;
};
if (_savedState){
if (_arg2){
_savedState.state = _arg1;
};
return;
};
if (!_states[_arg1]){
return;
};
_local3 = _curState;
_curState = [];
_curState.state = (_state = _arg1);
if (_states[_arg1]["canBlink"] != undefined){
_curState.canBlink = (_canBlink = _states[_arg1]["canBlink"]);
};
if (!isNaN(_states[_arg1]["frequency"])){
_curState.frequency = (_frequency = _states[_arg1]["frequency"]);
};
if (!isNaN(_states[_arg1]["offset"])){
_curState.offset = (_offset = _states[_arg1]["offset"]);
};
_blinking = false;
_local4 = 0;
while (_local4 < _states[_arg1].length) {
_curState[_local4] = _states[_arg1][_local4];
_local4++;
};
_local4 = 0;
while (_local4 < _parts.length) {
if (((((!(_states[_arg1][_local4])) || (!(_states[_arg1][_local4][FRAME])))) || (!(_states[_arg1][_local4][FRAME].length)))){
} else {
if ((((_partTypes[_local4] == MOVABLE)) && (_local3[_local4]))){
_local5 = ((_local3[_local4][FRAME] + "2") + _states[_arg1][_local4][FRAME]);
if (((!((_parts[_local4].currentLabel == _states[_arg1][_local4][FRAME]))) && (hasLabel(_parts[_local4], _local5)))){
_parts[_local4].gotoAndPlay(_local5);
} else {
if (_states[_arg1][_local4][FRAME] != _local3[_local4][FRAME]){
_parts[_local4].gotoAndPlay(_states[_arg1][_local4][FRAME]);
throw ((((((("Label " + _local5) + " is missing! in Movieclip #") + _local4) + "(") + _parts[_local4].name) + ")."));
};
};
} else {
if (((_states[_arg1][_local4][FRAME]) && (_states[_arg1][_local4][FRAME].length))){
_parts[_local4].gotoAndPlay(_states[_arg1][_local4][FRAME]);
};
};
};
_local4++;
};
}
public function set interruptible(_arg1:Boolean){
_interruptible = _arg1;
}
public function removeState(_arg1:String){
delete _states[_arg1];
}
public function addStateAttributes(_arg1:Array, _arg2:Boolean, _arg3:Number=NaN, _arg4:Number=NaN){
if (!_arg1){
return;
};
_arg1.canBlink = _arg2;
if (!isNaN(_arg3)){
_arg1.frequency = _arg3;
};
if (!isNaN(_arg4)){
_arg1.offset = _arg4;
};
}
public function removeReaction(_arg1:EventDispatcher, _arg2:String){
var _local3:int;
_local3 = 0;
while (_local3 < _reactions.length) {
if ((((_reactions[_local3].hit == _arg1)) && ((_reactions[_local3].type == _arg2)))){
_reactions[_local3].hit.removeEventListener(_arg2, _reacting);
delete _reactions[_local3];
_reactions.splice(_local3, 1);
return;
};
_local3++;
};
}
public function addState(_arg1:String, _arg2:Array){
var _local3:int;
if (_states[_arg1]){
delete _states[_arg1];
};
_states[_arg1] = new Array();
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg2[_local3]){
_states[_arg1][_local3] = _arg2[_local3].concat();
} else {
_states[_arg1][_local3] = null;
};
_local3++;
};
_states[_arg1].canBlink = _arg2.canBlink;
_states[_arg1].frequency = _arg2.frequency;
_states[_arg1].offset = _arg2.offset;
}
public function addReaction(_arg1:EventDispatcher, _arg2:String, _arg3:String, _arg4:int=30){
var _local5:Object;
_local5 = getReaction(_arg1, _arg2);
if (_local5 != null){
_local5.state = _arg3;
return;
};
_arg1.addEventListener(_arg2, _reacting, false, 2, true);
_reactions.push({hit:_arg1, type:_arg2, state:_arg3, timer:_arg4});
}
public function getBaseValues(_arg1:uint):Object{
var _local2:MovieClip;
_local2 = getPartAt(_arg1);
if (!_local2){
return (null);
};
return (_partBaseValues[_arg1]);
}
public function activate(_arg1:Boolean=true){
if (_active == _arg1){
return;
};
_active = _arg1;
if (_active){
_stage.addEventListener("enterFrame", eFrame);
} else {
_stage.removeEventListener("enterFrame", eFrame);
};
}
public function getPartAt(_arg1:int):MovieClip{
if (_parts[_arg1]){
return (_parts[_arg1]);
};
return (null);
}
public static function hasLabel(_arg1:MovieClip, _arg2:String):Boolean{
var _local3:Array;
var _local4:FrameLabel;
var _local5:int;
_local3 = _arg1.currentLabels;
_local5 = 0;
while (_local5 < _local3.length) {
_local4 = _local3[_local5];
if (_local4.name == _arg2){
return (true);
};
_local5++;
};
return (false);
}
}
}//package expansion
Section 19
//Speech (expansion.Speech)
package expansion {
import flash.display.*;
import flash.text.*;
import flash.events.*;
public class Speech extends EventDispatcher {
private var _contained:Boolean;
private var _textSpeed:int;
private var _checkpoints:Array;
private var _txt:TextField;
private var _events:Array;
private var _interruptible:Boolean;
private var _letter:int;
private var _timer:int;
private var _mouth:MovieClip;
private var _phrase:String;
private var _paused:int;
private var _pauseTime:int;
private var _expansion:Expansion;
private var _interruptionText:String;
private var _pauseCharacter:String;
public function Speech(_arg1:TextField, _arg2:Boolean=true){
_txt = _arg1;
_mouth = null;
_contained = _arg2;
_textSpeed = 1;
_timer = 0;
_letter = 0;
_phrase = "";
_expansion = null;
_events = [];
_checkpoints = [];
if (!_txt){
throw ("ERROR: No TextField object found!");
};
_interruptionText = "--";
_interruptible = false;
_pauseCharacter = "";
_paused = -1;
_pauseTime = 10;
_txt.visible = false;
_txt.text = "";
if (((_contained) && (_txt.parent))){
_txt.parent.visible = _txt.visible;
};
}
public function destroy(){
var _local1:int;
_local1 = 0;
while (_local1 < _events.length) {
_events[_local1].object.removeEventListener(_events[_local1].type, _event);
_local1++;
};
_events = [];
_local1 = 0;
while (_local1 < _checkpoints.length) {
delete _checkpoints[_local1];
_local1++;
};
_checkpoints = [];
listenTo(null);
clearSpeech();
if (((_contained) && (_txt.parent))){
_txt.parent.visible = true;
};
_txt.visible = true;
_txt = null;
}
public function set mouth(_arg1:MovieClip){
_mouth = _arg1;
}
public function get interruptionText():String{
return (_interruptionText);
}
public function clearCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1){
var _local4:int;
_local4 = 0;
while (_local4 < _checkpoints.length) {
if ((((((_checkpoints[_local4].part == _arg1)) && ((_checkpoints[_local4].size == _arg2)))) && ((_checkpoints[_local4].direction == _arg3)))){
_checkpoints.splice(_local4, 1);
return;
};
_local4++;
};
}
public function clearSpeech(){
_letter = 0;
_phrase = "";
_txt.removeEventListener("enterFrame", _speaking);
_txt.text = "";
if (((_contained) && (_txt.parent))){
_txt.parent.visible = false;
};
_txt.visible = false;
}
public function get textSpeed():int{
return (_textSpeed);
}
private function _event(_arg1:Event){
var _local2:Object;
_local2 = getEvent((_arg1.target as EventDispatcher), _arg1.type);
if (!_local2){
return;
};
say(_local2.phrase, _local2.time);
}
public function set interruptionText(_arg1:String){
_interruptionText = _arg1;
}
public function set pauseCharacter(_arg1:String){
_pauseCharacter = _arg1;
}
private function _checkpoint(_arg1:ExpansionEvent){
var _local2:Object;
_local2 = getCheckPoint(_arg1.expandable, _arg1.size, _arg1.direction);
if (!_local2){
return;
};
say(_local2.phrase, _local2.time);
}
public function get position():int{
return (_letter);
}
private function _speaking(_arg1:Event){
var _local2:String;
var _local3:int;
if (_paused > 0){
_paused--;
} else {
if (_letter < _phrase.length){
_local3 = 0;
while ((((_local3 < _textSpeed)) && ((_letter < _phrase.length)))) {
_local2 = _phrase.charAt(_letter++);
if (_local2 == _pauseCharacter){
_paused = _pauseTime;
if (_mouth != null){
_mouth.gotoAndStop("_m");
};
return;
};
_txt.appendText(_local2);
_txt.scrollV = _txt.maxScrollV;
_local3++;
};
if (_mouth != null){
_local2 = _local2.toLowerCase();
if ((((((((((((((((((_local2 == "k")) || ((_local2 == "t")))) || ((_local2 == "y")))) || ((_local2 == "s")))) || ((_local2 == "q")))) || ((_local2 == "d")))) || ((_local2 == "g")))) || ((_local2 == "j")))) || ((_local2 == "z")))){
_local2 = "i";
};
if ((((_local2 == "w")) || ((_local2 == "r")))){
_local2 = "u";
};
if (_local2 == "h"){
_local2 = "a";
};
if ((((_local2 == "l")) || ((_local2 == "d")))){
_local2 = "o";
};
switch (_local2){
case "a":
case "e":
case "i":
case "o":
case "u":
_mouth.gotoAndStop(("_" + _local2));
break;
default:
_mouth.gotoAndStop("_m");
};
};
if (_letter >= _phrase.length){
if (_mouth != null){
_mouth.gotoAndStop("_m");
};
dispatchEvent(new Event("speechFinished"));
};
} else {
if (_timer > 0){
_timer--;
} else {
clearSpeech();
dispatchEvent(new Event("speechCleared"));
};
};
};
}
public function set textSpeed(_arg1:int){
if (_arg1 < 0){
_arg1 = 0;
};
_textSpeed = _arg1;
}
public function get interruptible():Boolean{
return (_interruptible);
}
public function get phrase():String{
return (_phrase);
}
public function listenTo(_arg1:Expansion){
if (_expansion){
_expansion.removeEventListener("checkpoint", _checkpoint);
_expansion = null;
};
if (!_arg1){
return;
};
_expansion = _arg1;
_expansion.addEventListener("checkpoint", _checkpoint, false, 0, true);
}
public function get timer():int{
return (_timer);
}
public function get mouth():MovieClip{
return (_mouth);
}
public function get speaking():Boolean{
return (((_txt.visible) && ((_letter < _phrase.length))));
}
public function get pauseCharacter():String{
return (_pauseCharacter);
}
public function set pauseTime(_arg1:int){
_pauseTime = _arg1;
}
public function getCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1):Object{
var _local4:int;
_local4 = 0;
while (_local4 < _checkpoints.length) {
if ((((((_checkpoints[_local4].part == _arg1)) && ((_checkpoints[_local4].size == _arg2)))) && ((_checkpoints[_local4].direction == _arg3)))){
return (_checkpoints[_local4]);
};
_local4++;
};
return (null);
}
public function get pauseTime():int{
return (_pauseTime);
}
public function get textField():TextField{
return (_txt);
}
public function set contained(_arg1:Boolean){
if (((_contained) && (_txt.parent))){
if (!_arg1){
_txt.parent.visible = true;
} else {
_txt.parent.visible = _txt.visible;
};
};
_contained = _arg1;
}
public function setEvent(_arg1:EventDispatcher, _arg2:String, _arg3:String, _arg4:int=-1){
var _local5:Object;
if (((((!(_arg1)) || (!(_arg2)))) || (!(_arg2.length)))){
return;
};
_local5 = getEvent(_arg1, _arg2);
if (_local5 != null){
_local5.phrase = phrase;
_local5.time = _arg4;
return;
};
_events.push({object:_arg1, type:_arg2, phrase:_arg3, time:_arg4});
_arg1.addEventListener(_arg2, _event, false, 5, true);
}
public function set interruptible(_arg1:Boolean){
_interruptible = _arg1;
}
public function clearEvent(_arg1:EventDispatcher, _arg2:String){
var _local3:int;
_local3 = 0;
while (_local3 < _events.length) {
if ((((_events[_local3].object == _arg1)) && ((_events[_local3].type == _arg2)))){
_arg1.removeEventListener(_arg2, _event);
_events.splice(_local3, 1);
return;
};
_local3++;
};
}
public function get contained():Boolean{
return (_contained);
}
public function setCheckPoint(_arg1:MovieClip, _arg2:int, _arg3:int=1, _arg4:String="", _arg5:int=-1){
var _local6:Object;
if (!_arg1){
return;
};
_local6 = getCheckPoint(_arg1, _arg2, _arg3);
if (_local6 != null){
_local6.phrase = _arg4;
_local6.time = _arg5;
return;
};
_checkpoints.push({part:_arg1, size:_arg2, direction:_arg3, phrase:_arg4, time:_arg5});
}
public function say(_arg1:String, _arg2:int=-1){
var _local3:String;
var _local4:String;
if (((speaking) && (!(_interruptible)))){
return;
};
_paused = -1;
if (!_txt){
throw ("ERROR: No TextField object found!");
};
if (_txt.length > 0){
_local3 = _phrase.charAt((_letter - 1));
_local4 = _phrase.charAt(_letter);
if ((((((((_letter > 0)) && ((_letter < _phrase.length)))) && (isLetter(_local3)))) && (isLetter(_local4)))){
_txt.appendText(_interruptionText);
};
_txt.appendText("\n\n");
_txt.scrollV = _txt.maxScrollV;
};
if (((_contained) && (_txt.parent))){
_txt.parent.visible = true;
};
if (_arg2 < 0){
_arg2 = (_arg1.length + 20);
};
_phrase = _arg1;
_letter = 0;
_timer = _arg2;
_txt.visible = true;
_txt.addEventListener("enterFrame", _speaking);
}
public function getEvent(_arg1:EventDispatcher, _arg2:String):Object{
var _local3:int;
_local3 = 0;
while (_local3 < _events.length) {
if ((((_events[_local3].object == _arg1)) && ((_events[_local3].type == _arg2)))){
return (_events[_local3]);
};
_local3++;
};
return (null);
}
public static function isLetter(_arg1:String){
var _local2:int;
var _local3:Array;
var _local4:int;
_local2 = _arg1.charCodeAt(0);
if ((((_local2 >= "a".charCodeAt(0))) && ((_local2 <= "z".charCodeAt(0))))){
return (true);
};
if ((((_local2 >= "A".charCodeAt(0))) && ((_local2 <= "Z".charCodeAt(0))))){
return (true);
};
if ((((_local2 >= "0".charCodeAt(0))) && ((_local2 <= "9".charCodeAt(0))))){
return (true);
};
_local3 = ["á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "à", "è", "ì", "ò", "ù", "À", "È", "Ì", "Ò", "Ù", "ä", "ë", "ï", "ö", "ü", "Ä", "Ë", "Ï", "Ö", "Ü", "â", "ê", "î", "ô", "û", "Â", "Ê", "Î", "Ô", "Û", "ñ", "Ñ"];
_local4 = 0;
while (_local4 < _local3.length) {
if (_local3[_local4] == _arg1){
return (true);
};
_local4++;
};
return (false);
}
}
}//package expansion
Section 20
//Color (fl.motion.Color)
package fl.motion {
import flash.display.*;
import flash.geom.*;
public class Color extends ColorTransform {
private var _tintMultiplier:Number;// = 0
private var _tintColor:Number;// = 0
public function Color(_arg1:Number=1, _arg2:Number=1, _arg3:Number=1, _arg4:Number=1, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0){
_tintColor = 0;
_tintMultiplier = 0;
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public function setTint(_arg1:uint, _arg2:Number):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
this._tintColor = _arg1;
this._tintMultiplier = _arg2;
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = (1 - _arg2)));
_local3 = ((_arg1 >> 16) & 0xFF);
_local4 = ((_arg1 >> 8) & 0xFF);
_local5 = (_arg1 & 0xFF);
this.redOffset = Math.round((_local3 * _arg2));
this.greenOffset = Math.round((_local4 * _arg2));
this.blueOffset = Math.round((_local5 * _arg2));
}
public function set tintColor(_arg1:uint):void{
this.setTint(_arg1, this.tintMultiplier);
}
public function get brightness():Number{
return ((this.redOffset) ? (1 - this.redMultiplier) : (this.redMultiplier - 1));
}
private function deriveTintColor():uint{
var _local1:Number;
var _local2:uint;
var _local3:uint;
var _local4:uint;
var _local5:uint;
_local1 = (1 / this.tintMultiplier);
_local2 = Math.round((this.redOffset * _local1));
_local3 = Math.round((this.greenOffset * _local1));
_local4 = Math.round((this.blueOffset * _local1));
_local5 = (((_local2 << 16) | (_local3 << 8)) | _local4);
return (_local5);
}
public function get tintMultiplier():Number{
return (this._tintMultiplier);
}
public function get tintColor():uint{
return (this._tintColor);
}
public function set brightness(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (_arg1 > 1){
_arg1 = 1;
} else {
if (_arg1 < -1){
_arg1 = -1;
};
};
_local2 = (1 - Math.abs(_arg1));
_local3 = 0;
if (_arg1 > 0){
_local3 = (_arg1 * 0xFF);
};
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = _local2));
this.redOffset = (this.greenOffset = (this.blueOffset = _local3));
}
public function set tintMultiplier(_arg1:Number):void{
this.setTint(this.tintColor, _arg1);
}
private function parseXML(_arg1:XML=null):Color{
var _local2:XML;
var _local3:XML;
var _local4:String;
var _local5:uint;
if (!_arg1){
return (this);
};
_local2 = _arg1.elements()[0];
if (!_local2){
return (this);
};
for each (_local3 in _local2.attributes()) {
_local4 = _local3.localName();
if (_local4 == "tintColor"){
_local5 = (Number(_local3.toString()) as uint);
this.tintColor = _local5;
} else {
this[_local4] = Number(_local3.toString());
};
};
return (this);
}
public static function interpolateColor(_arg1:uint, _arg2:uint, _arg3:Number):uint{
var _local4:Number;
var _local5:uint;
var _local6:uint;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:uint;
var _local14:uint;
var _local15:uint;
var _local16:uint;
var _local17:uint;
_local4 = (1 - _arg3);
_local5 = ((_arg1 >> 24) & 0xFF);
_local6 = ((_arg1 >> 16) & 0xFF);
_local7 = ((_arg1 >> 8) & 0xFF);
_local8 = (_arg1 & 0xFF);
_local9 = ((_arg2 >> 24) & 0xFF);
_local10 = ((_arg2 >> 16) & 0xFF);
_local11 = ((_arg2 >> 8) & 0xFF);
_local12 = (_arg2 & 0xFF);
_local13 = ((_local5 * _local4) + (_local9 * _arg3));
_local14 = ((_local6 * _local4) + (_local10 * _arg3));
_local15 = ((_local7 * _local4) + (_local11 * _arg3));
_local16 = ((_local8 * _local4) + (_local12 * _arg3));
_local17 = ((((_local13 << 24) | (_local14 << 16)) | (_local15 << 8)) | _local16);
return (_local17);
}
public static function interpolateTransform(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:Number;
var _local5:ColorTransform;
_local4 = (1 - _arg3);
_local5 = new ColorTransform(((_arg1.redMultiplier * _local4) + (_arg2.redMultiplier * _arg3)), ((_arg1.greenMultiplier * _local4) + (_arg2.greenMultiplier * _arg3)), ((_arg1.blueMultiplier * _local4) + (_arg2.blueMultiplier * _arg3)), ((_arg1.alphaMultiplier * _local4) + (_arg2.alphaMultiplier * _arg3)), ((_arg1.redOffset * _local4) + (_arg2.redOffset * _arg3)), ((_arg1.greenOffset * _local4) + (_arg2.greenOffset * _arg3)), ((_arg1.blueOffset * _local4) + (_arg2.blueOffset * _arg3)), ((_arg1.alphaOffset * _local4) + (_arg2.alphaOffset * _arg3)));
return (_local5);
}
public static function fromXML(_arg1:XML):Color{
return (Color(new (Color).parseXML(_arg1)));
}
}
}//package fl.motion
Section 21
//KItem (KItem)
package {
import flash.display.*;
public dynamic class KItem extends MovieClip {
}
}//package