STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228131
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/46012679?noj=FRM46012679-16DC" width="1" height="1"></div>

border-services.swf

This is the info page for
Flash #116756

(Click the ID number above for more basic data on this flash file.)


Text
$

BORDER     POLICE

North American

Border Patrol

Outpost

Mexican Border Patrol

XXXPTS

Mexico - USA

Beware of rough terrain.

New Immigrant

Pickup

apartadero

parar
descansar
unidad

Play More Games

Opened in External Window.

Play More Games

QUALITY

QUALITY

SOUND

SOUND

You will be returned to the level editor upon closing this screen.

You can have multiple tracks saved on your profile via cookies, so that way you
can resume working on them later. Here you can load an already saved track and
resume editing it.

Choose a slot to load a track from.

or

You can have multiple tracks saved on your profile via cookies, so that way you
can resume working on them later.

Choose a slot to save the track under.

Enter your friends export code here, and when done click the import button to
view it in the level editor. If you change your mind and dont want to import,
you can click the cancel button instead.

Here is your  export code, you can give your friend this code and they can try
out your custom made levels.

Items

Items

Track Obstacles

Track Obstacles

Border Services

We'll get you to a better place, just let us do the driving.

Back To Level Select

Back To Level Select

Try Level Again

Try Level Again

Pause

Pause

Quit

Quit

<p align="center"><font face="Freshman" size="54" color="#ffcc00" letterSpacing="3.000000" kerning="0">Time Elapsed: 000 min. 000 sec.</font></p>

<p align="center"><font face="Freshman" size="54" color="#ffcc00" letterSpacing="3.000000" kerning="0">Best Time: 000 min. 000 sec.</font></p>

Editor Mode:

Press The 'Home' Key to view editor instructions.

Current Size: 88888888888px

Back to How to Play

Back to How to Play

Controls

Controls

Gameplay Basics

Gameplay Basics

Back to Main Menu

Back to Main Menu

How to Play

How to Play

Game Options

Game Options

Track Editor

Track Editor

Music Credits

Music Credits

Free Games for your Site

Free Games for your Site

Play Game

Play Game

i6.com presents:

<p align="right"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="0"><b>Score: 000000000pts</b></font></p>

1

2

3

4

5

6

Go back to the games main menu.

<p align="center"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="0"><b>Score: 000000000pts</b></font></p>

Music Volume

Sound Effects Volume

Learn the basics of gameplay.

Learn The games control scheme.

Go BAck to the main how to play screen.

Balance Right - Right Arrow Key or D Key
Balance Left - Left Arrow Key or A Key
Acceleration - Up Arrow Key or W Key
Reverse - Down Arrow Key or S Key

Get your truck, and the immigrants inside of it
to the end of each track without tipping over.

Be wary of various obstacles along the way and
things that may make your journey difficult.

From Newgrounds.com
killerjoe666
TheGimpsta
RadProductions1221

Editor Instructions

You can export levels created in the editor for friends to play, using the export button in the bottom left.
Once exported, they can be imported by other players using the import button in the top center.
You can move any object, by clicking and dragging it somewhere.
Object Scaling/Rotating:
When you have a object ( Non-Geonode ) selected:
Use the Up/Down directional keys to scale it to size, and the Right/Left directional keys to rotate it.
Camera Panning:
When you have no object select, or a Geonode selected:
Use the Up/Down/Left/Right directional keys to move the camera.
Camera zooming:
You can press Shift+Up/Down to zoom in and zoom out.

Press the 'Home ' Key to close the instructions.

Try your level out and
make sure it works
like you want. When
your done you can
export it and get the
data array to give to
a friend.

Try the attempted level again.

Awwww, you tipped your Truck over, you
can try again , or return to the main menu.

Continue playing onto the next level.

Go back to the level select menu.

Continue

Continue

<p align="center"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="1"><b>Time Elapsed: 000 min. 000 sec.</b></font></p>

<p align="center"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="0"><b>Score: 000000000pts</b></font></p>

<p align="center"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="1"><b>Time Elapsed: 000 min. 000 sec.</b></font></p>

<p align="center"><font face="Freshman" size="50" color="#ffcc00" letterSpacing="3.000000" kerning="0"><b>Score: 000000000pts</b></font></p>

You have completed all the levels, you can
go back and play them again, or build your
own using the track editor.

http://www.flashkit.com/loops/Ethnic/Latin/Me_canse-arlette-10366/index.php
http://www.flashkit.com/loops/Ethnic/Latin/Fiesta_-BBMnet-5853/index.php
http://www.flashkit.com/loops/Ethnic/Latin/El_Gato-George_S-7324/index.php
http://www.flashkit.com/loops/Ethnic/Latin/CONGAS_P-DAFILEMA-2461/index.php
http://www.flashkit.com/loops/Ethnic/Latin/Brassie-Osnoff-3571/index.php
http://www.flashkit.com/loops/Ethnic/Latin/audiolab-Audiolab-3509/index.php

ActionScript [AS3]

Section 1
//CoinTextBase_184 (BorderServices_Fixed_fla.CoinTextBase_184) package BorderServices_Fixed_fla { import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.net.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class CoinTextBase_184 extends MovieClip { public var textTF:TextField; public function CoinTextBase_184(){ addFrameScript(0, frame1); } function frame1(){ if (MovieClip(parent).amount){ textTF.text = (MovieClip(parent).amount + "Pts"); }; } } }//package BorderServices_Fixed_fla
Section 2
//EditorInstructionsMc_125 (BorderServices_Fixed_fla.EditorInstructionsMc_125) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class EditorInstructionsMc_125 extends MovieClip { public function EditorInstructionsMc_125(){ addFrameScript(0, frame1); } function frame1(){ visible = (mouseEnabled = (mouseChildren = false)); } } }//package BorderServices_Fixed_fla
Section 3
//FullAnimation_19 (BorderServices_Fixed_fla.FullAnimation_19) package BorderServices_Fixed_fla { import flash.display.*; import com.sound.*; public dynamic class FullAnimation_19 extends MovieClip { public var main:MovieClip; public var fargroundMc:MovieClip; public var immigrants:MovieClip; public function FullAnimation_19(){ addFrameScript(0, frame1, 37, frame38, 65, frame66, 69, frame70, 110, frame111, 139, frame140, 182, frame183, 234, frame235, 247, frame248, 287, frame288, 414, frame415, 416, frame417, 495, frame496); } function frame140(){ SoundManager.playSound(BushEffectA, "soundEffect", {category:"intro"}); } function frame111(){ SoundManager.playSound(BushEffectB, "soundEffect", {category:"intro"}); } function frame288(){ SoundManager.playSound(MenuMusic, "backgroundMusic", {transition:3000}); } function frame70(){ SoundManager.playSound(BushEffectB, "soundEffect", {category:"intro"}); } function frame235(){ SoundManager.playSound(BushEffectA, "soundEffect", {volume:3, category:"intro"}); } function frame248(){ SoundManager.playSound(TruckLandEffect, "soundEffect", {category:"intro"}); } function frame1(){ } function frame66(){ SoundManager.playSound(CarHornEffect, "soundEffect", {category:"intro"}); } function frame38(){ SoundManager.playSound(EngineEffect, "loopedSoundEffect", {category:"intro"}); } function frame496(){ SoundManager.disposeOfCategory("intro"); MovieClip(root).gotoAndStop("Main Menu"); } function frame415(){ SoundManager.playSound(EngineRevEffect, "soundEffect", {category:"intro"}); } function frame417(){ SoundManager.playSound(EngineRevEffect, "soundEffect", {volume:0.5, category:"intro"}); } function frame183(){ SoundManager.playSound(BushEffectA, "soundEffect", {category:"intro"}); } } }//package BorderServices_Fixed_fla
Section 4
//i6LOADER_2 (BorderServices_Fixed_fla.i6LOADER_2) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class i6LOADER_2 extends MovieClip { public var bar:MovieClip; public function i6LOADER_2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 5
//ImmigrantHead_26 (BorderServices_Fixed_fla.ImmigrantHead_26) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class ImmigrantHead_26 extends MovieClip { public function ImmigrantHead_26(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 6
//IntroLeafFlushSpawner_24 (BorderServices_Fixed_fla.IntroLeafFlushSpawner_24) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class IntroLeafFlushSpawner_24 extends MovieClip { public var n:MovieClip; public function IntroLeafFlushSpawner_24(){ addFrameScript(0, frame1); } function frame1(){ if (!parent){ return; }; n = new IntroLeafFlush(); n.x = x; n.y = y; n.rotation = rotation; n.scaleX = scaleX; n.scaleY = scaleY; n.transform = transform; parent.addChild(n); stop(); parent.removeChild(this); } } }//package BorderServices_Fixed_fla
Section 7
//Level_Background_91 (BorderServices_Fixed_fla.Level_Background_91) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class Level_Background_91 extends MovieClip { public function Level_Background_91(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 8
//Level_Midground_90 (BorderServices_Fixed_fla.Level_Midground_90) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class Level_Midground_90 extends MovieClip { public function Level_Midground_90(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 9
//TruckBase_23 (BorderServices_Fixed_fla.TruckBase_23) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class TruckBase_23 extends MovieClip { public function TruckBase_23(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 10
//TruckBase_30 (BorderServices_Fixed_fla.TruckBase_30) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class TruckBase_30 extends MovieClip { public function TruckBase_30(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 11
//TruckBase_32 (BorderServices_Fixed_fla.TruckBase_32) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class TruckBase_32 extends MovieClip { public var immigrants:MovieClip; public var main:MovieClip; public function TruckBase_32(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 12
//TruckImmigrants_31 (BorderServices_Fixed_fla.TruckImmigrants_31) package BorderServices_Fixed_fla { import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.net.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class TruckImmigrants_31 extends MovieClip { public function TruckImmigrants_31(){ addFrameScript(0, frame1, 1, frame2, 4, frame5, 7, frame8, 11, frame12, 12, frame13, 15, frame16, 18, frame19, 20, frame21, 23, frame24); } function frame16(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (MovieClip(parent.parent).holdLeft){ gotoAndPlay((currentFrame - 1)); }; } function frame21(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; MovieClip(parent.parent).bobbles--; if (MovieClip(parent.parent).bobbleHeads){ gotoAndPlay("Loop"); }; } function frame1(){ stop(); } function frame2(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (!MovieClip(parent.parent).bobbleHeads){ gotoAndPlay(1); }; } function frame24(){ gotoAndPlay(1); } function frame5(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (MovieClip(parent.parent).holdRightSmall){ gotoAndPlay((currentFrame - 1)); } else { if (MovieClip(parent.parent).smallBobble){ gotoAndPlay("Small A"); }; }; } function frame8(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (MovieClip(parent.parent).holdRight){ gotoAndPlay((currentFrame - 1)); }; } function frame19(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (!MovieClip(parent.parent).bobbleHeads){ gotoAndPlay(1); }; } function frame12(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; MovieClip(parent.parent).bobbles--; if (!MovieClip(parent.parent).bobbleHeads){ gotoAndPlay(1); }; } function frame13(){ if (!parent.parent){ return; }; if ((parent.parent is MovieClip) == false){ return; }; if (MovieClip(parent.parent).holdLeftSmall){ gotoAndPlay((currentFrame - 1)); } else { if (MovieClip(parent.parent).smallBobble){ gotoAndPlay("Small B"); }; }; } } }//package BorderServices_Fixed_fla
Section 13
//White_92 (BorderServices_Fixed_fla.White_92) package BorderServices_Fixed_fla { import flash.display.*; public dynamic class White_92 extends MovieClip { public function White_92(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package BorderServices_Fixed_fla
Section 14
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { b2internal var m_p:b2Vec2; public function b2CircleShape(_arg1:Number=0){ m_p = new b2Vec2(); super(); m_type = e_circleShape; m_radius = _arg1; } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local9:Number; var _local5:b2Vec2 = b2Math.MulX(_arg3, m_p); var _local6:Number = -((b2Math.Dot(_arg1, _local5) - _arg2)); if (_local6 < (-(m_radius) + Number.MIN_VALUE)){ return (0); }; if (_local6 > m_radius){ _arg4.SetV(_local5); return (((Math.PI * m_radius) * m_radius)); }; var _local7:Number = (m_radius * m_radius); var _local8:Number = (_local6 * _local6); _local9 = ((_local7 * (Math.asin((_local6 / m_radius)) + (Math.PI / 2))) + (_local6 * Math.sqrt((_local7 - _local8)))); var _local10:Number = (((-2 / 3) * Math.pow((_local7 - _local8), 1.5)) / _local9); _arg4.x = (_local5.x + (_arg1.x * _local10)); _arg4.y = (_local5.y + (_arg1.y * _local10)); return (_local9); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetRadius():Number{ return (m_radius); } override public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; super.Set(_arg1); if ((_arg1 is b2CircleShape)){ _local2 = (_arg1 as b2CircleShape); m_p.SetV(_local2.m_p); }; } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = (((_arg2 * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_p); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_p.x * m_p.x) + (m_p.y * m_p.y)))); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local8:Number; var _local4:b2Mat22 = _arg3.R; var _local5:Number = (_arg3.position.x + ((_local4.col1.x * m_p.x) + (_local4.col2.x * m_p.y))); var _local6:Number = (_arg3.position.y + ((_local4.col1.y * m_p.x) + (_local4.col2.y * m_p.y))); var _local7:Number = (_arg2.p1.x - _local5); _local8 = (_arg2.p1.y - _local6); var _local9:Number = (((_local7 * _local7) + (_local8 * _local8)) - (m_radius * m_radius)); var _local10:Number = (_arg2.p2.x - _arg2.p1.x); var _local11:Number = (_arg2.p2.y - _arg2.p1.y); var _local12:Number = ((_local7 * _local10) + (_local8 * _local11)); var _local13:Number = ((_local10 * _local10) + (_local11 * _local11)); var _local14:Number = ((_local12 * _local12) - (_local13 * _local9)); if ((((_local14 < 0)) || ((_local13 < Number.MIN_VALUE)))){ return (false); }; var _local15:Number = -((_local12 + Math.sqrt(_local14))); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local13))))){ _local15 = (_local15 / _local13); _arg1.fraction = _local15; _arg1.normal.x = (_local7 + (_local15 * _local10)); _arg1.normal.y = (_local8 + (_local15 * _local11)); _arg1.normal.Normalize(); return (true); }; return (false); } public function SetLocalPosition(_arg1:b2Vec2):void{ m_p.SetV(_arg1); } public function SetRadius(_arg1:Number):void{ m_radius = _arg1; } override public function Copy():b2Shape{ var _local1:b2Shape = new b2CircleShape(); _local1.Set(this); return (_local1); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } public function GetLocalPosition():b2Vec2{ return (m_p); } } }//package Box2D.Collision.Shapes
Section 15
//b2EdgeShape (Box2D.Collision.Shapes.b2EdgeShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeShape extends b2Shape { b2internal var m_normal:b2Vec2; b2internal var m_cornerConvex1:Boolean; b2internal var m_cornerConvex2:Boolean; b2internal var m_cornerDir1:b2Vec2; b2internal var m_v1:b2Vec2; b2internal var m_v2:b2Vec2; private var s_supportVec:b2Vec2; b2internal var m_coreV1:b2Vec2; b2internal var m_coreV2:b2Vec2; b2internal var m_cornerDir2:b2Vec2; b2internal var m_nextEdge:b2EdgeShape; b2internal var m_direction:b2Vec2; b2internal var m_prevEdge:b2EdgeShape; b2internal var m_length:Number; public function b2EdgeShape(_arg1:b2Vec2, _arg2:b2Vec2){ s_supportVec = new b2Vec2(); m_v1 = new b2Vec2(); m_v2 = new b2Vec2(); m_coreV1 = new b2Vec2(); m_coreV2 = new b2Vec2(); m_normal = new b2Vec2(); m_direction = new b2Vec2(); m_cornerDir1 = new b2Vec2(); m_cornerDir2 = new b2Vec2(); super(); m_type = e_edgeShape; m_prevEdge = null; m_nextEdge = null; m_v1 = _arg1; m_v2 = _arg2; m_direction.Set((m_v2.x - m_v1.x), (m_v2.y - m_v1.y)); m_length = m_direction.Normalize(); m_normal.Set(m_direction.y, -(m_direction.x)); m_coreV1.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x - m_direction.x)) + m_v1.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y - m_direction.y)) + m_v1.y)); m_coreV2.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x + m_direction.x)) + m_v2.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y + m_direction.y)) + m_v2.y)); m_cornerDir1 = m_normal; m_cornerDir2.Set(-(m_normal.x), -(m_normal.y)); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local5:b2Vec2 = new b2Vec2((_arg1.x * _arg2), (_arg1.y * _arg2)); var _local6:b2Vec2 = b2Math.MulX(_arg3, m_v1); var _local7:b2Vec2 = b2Math.MulX(_arg3, m_v2); var _local8:Number = (b2Math.Dot(_arg1, _local6) - _arg2); var _local9:Number = (b2Math.Dot(_arg1, _local7) - _arg2); if (_local8 > 0){ if (_local9 > 0){ return (0); }; _local6.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local6.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); } else { if (_local9 > 0){ _local7.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local7.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); }; }; _arg4.x = (((_local5.x + _local6.x) + _local7.x) / 3); _arg4.y = (((_local5.y + _local6.y) + _local7.y) / 3); return ((0.5 * (((_local6.x - _local5.x) * (_local7.y - _local5.y)) - ((_local6.y - _local5.y) * (_local7.x - _local5.x))))); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local3:b2Mat22 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_v1.x) + (_local3.col2.x * m_v1.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_v1.x) + (_local3.col2.y * m_v1.y))); _local6 = (_arg2.position.x + ((_local3.col1.x * m_v2.x) + (_local3.col2.x * m_v2.y))); _local7 = (_arg2.position.y + ((_local3.col1.y * m_v2.x) + (_local3.col2.y * m_v2.y))); if (_local4 < _local6){ _arg1.lowerBound.x = _local4; _arg1.upperBound.x = _local6; } else { _arg1.lowerBound.x = _local6; _arg1.upperBound.x = _local4; }; if (_local5 < _local7){ _arg1.lowerBound.y = _local5; _arg1.upperBound.y = _local7; } else { _arg1.lowerBound.y = _local7; _arg1.upperBound.y = _local5; }; } public function GetCorner1Vector():b2Vec2{ return (m_cornerDir1); } public function GetCorner2Vector():b2Vec2{ return (m_cornerDir2); } public function GetDirectionVector():b2Vec2{ return (m_direction); } public function GetCoreVertex1():b2Vec2{ return (m_coreV1); } public function GetCoreVertex2():b2Vec2{ return (m_coreV2); } public function GetFirstVertex(_arg1:b2Transform):b2Vec2{ var _local2:b2Mat22 = _arg1.R; return (new b2Vec2((_arg1.position.x + ((_local2.col1.x * m_coreV1.x) + (_local2.col2.x * m_coreV1.y))), (_arg1.position.y + ((_local2.col1.y * m_coreV1.x) + (_local2.col2.y * m_coreV1.y))))); } public function GetNormalVector():b2Vec2{ return (m_normal); } public function GetNextEdge():b2EdgeShape{ return (m_nextEdge); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local4:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local5:Number = (_arg2.p2.x - _arg2.p1.x); var _local6:Number = (_arg2.p2.y - _arg2.p1.y); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_v1.x) + (_local4.col2.x * m_v1.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_v1.x) + (_local4.col2.y * m_v1.y))); var _local9:Number = ((_arg3.position.y + ((_local4.col1.y * m_v2.x) + (_local4.col2.y * m_v2.y))) - _local8); var _local10:Number = -(((_arg3.position.x + ((_local4.col1.x * m_v2.x) + (_local4.col2.x * m_v2.y))) - _local7)); var _local11:Number = (100 * Number.MIN_VALUE); var _local12:Number = -(((_local5 * _local9) + (_local6 * _local10))); if (_local12 > _local11){ _local13 = (_arg2.p1.x - _local7); _local14 = (_arg2.p1.y - _local8); _local15 = ((_local13 * _local9) + (_local14 * _local10)); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local12))))){ _local16 = ((-(_local5) * _local14) + (_local6 * _local13)); if (((((-(_local11) * _local12) <= _local16)) && ((_local16 <= (_local12 * (1 + _local11)))))){ _local15 = (_local15 / _local12); _arg1.fraction = _local15; _local17 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _arg1.normal.x = (_local9 / _local17); _arg1.normal.y = (_local10 / _local17); return (true); }; }; }; return (false); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = 0; _arg1.center.SetV(m_v1); _arg1.I = 0; } public function Corner1IsConvex():Boolean{ return (m_cornerConvex1); } public function Corner2IsConvex():Boolean{ return (m_cornerConvex2); } public function Support(_arg1:b2Transform, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV1.x) + (_local4.col2.x * m_coreV1.y))); var _local6:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV1.x) + (_local4.col2.y * m_coreV1.y))); var _local7:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV2.x) + (_local4.col2.x * m_coreV2.y))); var _local8:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV2.x) + (_local4.col2.y * m_coreV2.y))); if (((_local5 * _arg2) + (_local6 * _arg3)) > ((_local7 * _arg2) + (_local8 * _arg3))){ s_supportVec.x = _local5; s_supportVec.y = _local6; } else { s_supportVec.x = _local7; s_supportVec.y = _local8; }; return (s_supportVec); } b2internal function SetNextEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_nextEdge = _arg1; m_coreV2 = _arg2; m_cornerDir2 = _arg3; m_cornerConvex2 = _arg4; } public function GetPrevEdge():b2EdgeShape{ return (m_prevEdge); } public function GetVertex1():b2Vec2{ return (m_v1); } public function GetVertex2():b2Vec2{ return (m_v2); } b2internal function SetPrevEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_prevEdge = _arg1; m_coreV1 = _arg2; m_cornerDir1 = _arg3; m_cornerConvex1 = _arg4; } public function GetLength():Number{ return (m_length); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } } }//package Box2D.Collision.Shapes
Section 16
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 17
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { b2internal var m_vertexCount:int; b2internal var m_vertices:Array; b2internal var m_centroid:b2Vec2; b2internal var m_normals:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonShape(){ m_type = e_polygonShape; m_centroid = new b2Vec2(); m_vertices = new Array(); m_normals = new Array(); } override public function Set(_arg1:b2Shape):void{ var _local2:b2PolygonShape; var _local3:int; super.Set(_arg1); if ((_arg1 is b2PolygonShape)){ _local2 = (_arg1 as b2PolygonShape); m_centroid.SetV(_local2.m_centroid); m_vertexCount = _local2.m_vertexCount; Reserve(m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_local2.m_vertices[_local3]); m_normals[_local3].SetV(_local2.m_normals[_local3]); _local3++; }; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local10:Number; var _local11:Number; var _local3:b2Mat22 = _arg2.R; var _local4:b2Vec2 = m_vertices[0]; var _local5:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local6:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); var _local7:Number = _local5; var _local8:Number = _local6; var _local9 = 1; while (_local9 < m_vertexCount) { _local4 = m_vertices[_local9]; _local10 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local11 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _local5 = ((_local5 < _local10)) ? _local5 : _local10; _local6 = ((_local6 < _local11)) ? _local6 : _local11; _local7 = ((_local7 > _local10)) ? _local7 : _local10; _local8 = ((_local8 > _local11)) ? _local8 : _local11; _local9++; }; _arg1.lowerBound.x = (_local5 - m_radius); _arg1.lowerBound.y = (_local6 - m_radius); _arg1.upperBound.x = (_local7 + m_radius); _arg1.upperBound.y = (_local8 + m_radius); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local12:int; var _local22:b2Vec2; var _local23:Boolean; var _local24:b2MassData; var _local25:Number; var _local5:b2Vec2 = b2Math.MulTMV(_arg3.R, _arg1); var _local6:Number = (_arg2 - b2Math.Dot(_arg1, _arg3.position)); var _local7:Array = new Array(); var _local8:int; var _local9 = -1; var _local10 = -1; var _local11:Boolean; _local12 = 0; while (_local12 < m_vertexCount) { _local7[_local12] = (b2Math.Dot(_local5, m_vertices[_local12]) - _local6); _local23 = (_local7[_local12] < -(Number.MIN_VALUE)); if (_local12 > 0){ if (_local23){ if (!_local11){ _local9 = (_local12 - 1); _local8++; }; } else { if (_local11){ _local10 = (_local12 - 1); _local8++; }; }; }; _local11 = _local23; _local12++; }; switch (_local8){ case 0: if (_local11){ _local24 = new b2MassData(); ComputeMass(_local24, 1); _arg4.SetV(b2Math.MulX(_arg3, _local24.center)); return (_local24.mass); }; return (0); case 1: if (_local9 == -1){ _local9 = (m_vertexCount - 1); } else { _local10 = (m_vertexCount - 1); }; break; }; var _local13:int = ((_local9 + 1) % m_vertexCount); var _local14:int = ((_local10 + 1) % m_vertexCount); var _local15:Number = ((0 - _local7[_local9]) / (_local7[_local13] - _local7[_local9])); var _local16:Number = ((0 - _local7[_local10]) / (_local7[_local14] - _local7[_local10])); var _local17:b2Vec2 = new b2Vec2(((m_vertices[_local9].x * (1 - _local15)) + (m_vertices[_local13].x * _local15)), ((m_vertices[_local9].y * (1 - _local15)) + (m_vertices[_local13].y * _local15))); var _local18:b2Vec2 = new b2Vec2(((m_vertices[_local10].x * (1 - _local16)) + (m_vertices[_local14].x * _local16)), ((m_vertices[_local10].y * (1 - _local16)) + (m_vertices[_local14].y * _local16))); var _local19:Number = 0; var _local20:b2Vec2 = new b2Vec2(); var _local21:b2Vec2 = m_vertices[_local13]; _local12 = _local13; while (_local12 != _local14) { _local12 = ((_local12 + 1) % m_vertexCount); if (_local12 == _local14){ _local22 = _local18; } else { _local22 = m_vertices[_local12]; }; _local25 = (0.5 * (((_local21.x - _local17.x) * (_local22.y - _local17.y)) - ((_local21.y - _local17.y) * (_local22.x - _local17.x)))); _local19 = (_local19 + _local25); _local20.x = (_local20.x + ((_local25 * ((_local17.x + _local21.x) + _local22.x)) / 3)); _local20.y = (_local20.y + ((_local25 * ((_local17.y + _local21.y) + _local22.y)) / 3)); _local21 = _local22; }; _local20.Multiply((1 / _local19)); _arg4.SetV(b2Math.MulX(_arg3, _local20)); return (_local19); } public function GetVertices():Array{ return (m_vertices); } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid = _arg3; var _local5:b2Transform = new b2Transform(); _local5.position = _arg3; _local5.R.Set(_arg4); var _local6:int; while (_local6 < m_vertexCount) { m_vertices[_local6] = b2Math.MulX(_local5, m_vertices[_local6]); m_normals[_local6] = b2Math.MulMV(_local5.R, m_normals[_local6]); _local6++; }; } override public function Copy():b2Shape{ var _local1:b2PolygonShape = new b2PolygonShape(); _local1.Set(this); return (_local1); } public function SetAsBox(_arg1:Number, _arg2:Number):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid.SetZero(); } private function Reserve(_arg1:int):void{ var _local2:int = m_vertices.length; while (_local2 < _arg1) { m_vertices[_local2] = new b2Vec2(); m_normals[_local2] = new b2Vec2(); _local2++; }; } public function GetNormals():Array{ return (m_normals); } public function SetAsArray(_arg1:Array, _arg2:Number=0):void{ var _local4:b2Vec2; var _local3:Array = new Array(); for each (_local4 in _arg1) { _local3.push(_local4); }; SetAsVector(_local3, _arg2); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local6:Number; var _local7:Number; var _local8:b2Mat22; var _local9:b2Vec2; var _local18:Number; var _local19:Number; var _local4:Number = 0; var _local5:Number = _arg2.maxFraction; _local6 = (_arg2.p1.x - _arg3.position.x); _local7 = (_arg2.p1.y - _arg3.position.y); _local8 = _arg3.R; var _local10:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local11:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); _local6 = (_arg2.p2.x - _arg3.position.x); _local7 = (_arg2.p2.y - _arg3.position.y); _local8 = _arg3.R; var _local12:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local13:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); var _local14:Number = (_local12 - _local10); var _local15:Number = (_local13 - _local11); var _local16 = -1; var _local17:int; while (_local17 < m_vertexCount) { _local9 = m_vertices[_local17]; _local6 = (_local9.x - _local10); _local7 = (_local9.y - _local11); _local9 = m_normals[_local17]; _local18 = ((_local9.x * _local6) + (_local9.y * _local7)); _local19 = ((_local9.x * _local14) + (_local9.y * _local15)); if (_local19 == 0){ if (_local18 < 0){ return (false); }; } else { if ((((_local19 < 0)) && ((_local18 < (_local4 * _local19))))){ _local4 = (_local18 / _local19); _local16 = _local17; } else { if ((((_local19 > 0)) && ((_local18 < (_local5 * _local19))))){ _local5 = (_local18 / _local19); }; }; }; if (_local5 < (_local4 - Number.MIN_VALUE)){ return (false); }; _local17++; }; if (_local16 >= 0){ _arg1.fraction = _local4; _local8 = _arg3.R; _local9 = m_normals[_local16]; _arg1.normal.x = ((_local8.col1.x * _local9.x) + (_local8.col2.x * _local9.y)); _arg1.normal.y = ((_local8.col1.y * _local9.x) + (_local8.col2.y * _local9.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ var _local11:b2Vec2; var _local12:b2Vec2; 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; if (m_vertexCount == 2){ _arg1.center.x = (0.5 * (m_vertices[0].x + m_vertices[1].x)); _arg1.center.y = (0.5 * (m_vertices[0].y + m_vertices[1].y)); _arg1.mass = 0; _arg1.I = 0; return; }; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = 0; var _local9:Number = (1 / 3); var _local10:int; while (_local10 < m_vertexCount) { _local11 = m_vertices[_local10]; _local12 = (((_local10 + 1) < m_vertexCount)) ? m_vertices[int((_local10 + 1))] : m_vertices[0]; _local13 = (_local11.x - _local7); _local14 = (_local11.y - _local8); _local15 = (_local12.x - _local7); _local16 = (_local12.y - _local8); _local17 = ((_local13 * _local16) - (_local14 * _local15)); _local18 = (0.5 * _local17); _local5 = (_local5 + _local18); _local3 = (_local3 + ((_local18 * _local9) * ((_local7 + _local11.x) + _local12.x))); _local4 = (_local4 + ((_local18 * _local9) * ((_local8 + _local11.y) + _local12.y))); _local19 = _local7; _local20 = _local8; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = _local16; _local25 = ((_local9 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local26 = ((_local9 * ((0.25 * (((_local22 * _local22) + (_local24 * _local22)) + (_local24 * _local24))) + ((_local20 * _local22) + (_local20 * _local24)))) + ((0.5 * _local20) * _local20)); _local6 = (_local6 + (_local17 * (_local25 + _local26))); _local10++; }; _arg1.mass = (_arg2 * _local5); _local3 = (_local3 * (1 / _local5)); _local4 = (_local4 * (1 / _local5)); _arg1.center.Set(_local3, _local4); _arg1.I = (_arg2 * _local6); } public function SetAsEdge(_arg1:b2Vec2, _arg2:b2Vec2):void{ m_vertexCount = 2; Reserve(2); m_vertices[0].SetV(_arg1); m_vertices[1].SetV(_arg2); m_centroid.x = (0.5 * (_arg1.x + _arg2.x)); m_centroid.y = (0.5 * (_arg1.y + _arg2.y)); m_normals[0] = b2Math.CrossVF(b2Math.SubtractVV(_arg2, _arg1), 1); m_normals[0].Normalize(); m_normals[1].x = -(m_normals[0].x); m_normals[1].y = -(m_normals[0].y); } public function GetVertexCount():int{ return (m_vertexCount); } private function Validate():Boolean{ return (false); } public function SetAsVector(_arg1:Array, _arg2:Number=0):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:b2Vec2; if (_arg2 == 0){ _arg2 = _arg1.length; }; b2Settings.b2Assert((2 <= _arg2)); m_vertexCount = _arg2; Reserve(_arg2); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_arg1[_local3]); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = b2Math.SubtractVV(m_vertices[_local5], m_vertices[_local4]); b2Settings.b2Assert((_local6.LengthSquared() > Number.MIN_VALUE)); m_normals[_local3].SetV(b2Math.CrossVF(_local6, 1)); m_normals[_local3].Normalize(); _local3++; }; m_centroid = ComputeCentroid(m_vertices, m_vertexCount); } public function GetSupport(_arg1:b2Vec2):int{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } b2internal static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; 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:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((_arg3 + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } public static function AsVector(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsVector(_arg1, _arg2); return (_local3); } public static function AsArray(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsArray(_arg1, _arg2); return (_local3); } public static function AsBox(_arg1:Number, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsBox(_arg1, _arg2); return (_local3); } public static function AsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):b2PolygonShape{ var _local5:b2PolygonShape = new (b2PolygonShape); _local5.SetAsOrientedBox(_arg1, _arg2, _arg3, _arg4); return (_local5); } public static function ComputeCentroid(_arg1:Array, _arg2:uint):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function AsEdge(_arg1:b2Vec2, _arg2:b2Vec2):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsEdge(_arg1, _arg2); return (_local3); } } }//package Box2D.Collision.Shapes
Section 18
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Shape { b2internal var m_radius:Number; b2internal var m_type:int; b2internal static const e_polygonShape:int = 1; public static const e_hitCollide:int = 1; public static const e_missCollide:int = 0; b2internal static const e_edgeShape:int = 2; b2internal static const e_shapeTypeCount:int = 3; b2internal static const e_unknownShape:int = -1; b2internal static const e_circleShape:int = 0; public static const e_startsInsideCollide:int = -1; public function b2Shape(){ m_type = e_unknownShape; m_radius = b2Settings.b2_linearSlop; } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ return (false); } public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ return (0); } public function Set(_arg1:b2Shape):void{ m_radius = _arg1.m_radius; } public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ } public function GetType():int{ return (m_type); } public function Copy():b2Shape{ return (null); } public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ } public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } public static function TestOverlap(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Shape, _arg4:b2Transform):Boolean{ var _local5:b2DistanceInput = new b2DistanceInput(); _local5.proxyA = new b2DistanceProxy(); _local5.proxyA.Set(_arg1); _local5.proxyB = new b2DistanceProxy(); _local5.proxyB.Set(_arg3); _local5.transformA = _arg2; _local5.transformB = _arg4; _local5.useRadii = true; var _local6:b2SimplexCache = new b2SimplexCache(); _local6.count = 0; var _local7:b2DistanceOutput = new b2DistanceOutput(); b2Distance.Distance(_local7, _local6, _local5); return ((_local7.distance < (10 * Number.MIN_VALUE))); } } }//package Box2D.Collision.Shapes
Section 19
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function Contains(_arg1:b2AABB):Boolean{ var _local2:Boolean; _local2 = ((_local2) && ((lowerBound.x <= _arg1.lowerBound.x))); _local2 = ((_local2) && ((lowerBound.y <= _arg1.lowerBound.y))); _local2 = ((_local2) && ((_arg1.upperBound.x <= upperBound.x))); _local2 = ((_local2) && ((_arg1.upperBound.y <= upperBound.y))); return (_local2); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local3:Number = -(Number.MAX_VALUE); var _local4:Number = Number.MAX_VALUE; var _local5:Number = _arg2.p1.x; var _local6:Number = _arg2.p1.y; var _local7:Number = (_arg2.p2.x - _arg2.p1.x); var _local8:Number = (_arg2.p2.y - _arg2.p1.y); var _local9:Number = Math.abs(_local7); var _local10:Number = Math.abs(_local8); _local11 = _arg1.normal; if (_local9 < Number.MIN_VALUE){ if ((((_local5 < lowerBound.x)) || ((upperBound.x < _local5)))){ return (false); }; } else { _local12 = (1 / _local7); _local13 = ((lowerBound.x - _local5) * _local12); _local14 = ((upperBound.x - _local5) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.x = _local16; _local11.y = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; if (_local10 < Number.MIN_VALUE){ if ((((_local6 < lowerBound.y)) || ((upperBound.y < _local6)))){ return (false); }; } else { _local12 = (1 / _local8); _local13 = ((lowerBound.y - _local6) * _local12); _local14 = ((upperBound.y - _local6) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.y = _local16; _local11.x = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; _arg1.fraction = _local3; return (true); } public function GetCenter():b2Vec2{ return (new b2Vec2(((lowerBound.x + upperBound.x) / 2), ((lowerBound.y + upperBound.y) / 2))); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } public function TestOverlap(_arg1:b2AABB):Boolean{ var _local2:Number = (_arg1.lowerBound.x - upperBound.x); var _local3:Number = (_arg1.lowerBound.y - upperBound.y); var _local4:Number = (lowerBound.x - _arg1.upperBound.x); var _local5:Number = (lowerBound.y - _arg1.upperBound.y); if ((((_local2 > 0)) || ((_local3 > 0)))){ return (false); }; if ((((_local4 > 0)) || ((_local5 > 0)))){ return (false); }; return (true); } public function GetExtents():b2Vec2{ return (new b2Vec2(((upperBound.x - lowerBound.x) / 2), ((upperBound.y - lowerBound.y) / 2))); } public function Combine(_arg1:b2AABB, _arg2:b2AABB):void{ lowerBound.x = Math.min(_arg1.lowerBound.x, _arg2.lowerBound.x); lowerBound.y = Math.min(_arg1.lowerBound.y, _arg2.lowerBound.y); upperBound.x = Math.max(_arg1.upperBound.x, _arg2.upperBound.x); upperBound.y = Math.max(_arg1.upperBound.y, _arg2.upperBound.y); } public static function Combine(_arg1:b2AABB, _arg2:b2AABB):b2AABB{ var _local3:b2AABB = new (b2AABB); _local3.Combine(_arg1, _arg2); return (_local3); } } }//package Box2D.Collision
Section 20
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); private static var s_v12:b2Vec2 = new b2Vec2(); private static var s_v11:b2Vec2 = new b2Vec2(); private static var s_edgeBO:Array = new Array(1); private static var s_tangent2:b2Vec2 = new b2Vec2(); private static var s_planePoint:b2Vec2 = new b2Vec2(); private static var s_localTangent:b2Vec2 = new b2Vec2(); private static var s_clipPoints1:Array = MakeClipPointVector(); private static var s_clipPoints2:Array = MakeClipPointVector(); private static var s_localNormal:b2Vec2 = new b2Vec2(); private static var s_edgeAO:Array = new Array(1); private static var s_tangent:b2Vec2 = new b2Vec2(); private static var s_normal:b2Vec2 = new b2Vec2(); private static var s_incidentEdge:Array = MakeClipPointVector(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2Transform, _arg3:int, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; var _local8:b2Vec2 = _local5.v; _local9 = (((_arg3.x * _local7.x) + (_arg3.y * _local7.y)) - _arg4); var _local10:Number = (((_arg3.x * _local8.x) + (_arg3.y * _local8.y)) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); _arg1[_temp1].Set(_arg2[0]); }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _arg1[_temp2].Set(_arg2[1]); }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } private static function MakeClipPointVector():Array{ var _local1:Array = new Array(2); _local1[0] = new ClipVertex(); _local1[1] = new ClipVertex(); return (_local1); } public static function CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2Mat22; var _local7:b2Vec2; _arg1.m_pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_p; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_p; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = (_arg2.m_radius + _arg4.m_radius); if (_local14 > (_local15 * _local15)){ return; }; _arg1.m_type = b2Manifold.e_circles; _arg1.m_localPoint.SetV(_arg2.m_p); _arg1.m_localPlaneNormal.SetZero(); _arg1.m_pointCount = 1; _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:int, _arg5:b2PolygonShape, _arg6:b2Transform):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local31:Number; var _local32:Number; var _local33:Number; _arg1.m_pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_p; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = (_arg2.m_radius + _arg4.m_radius); var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local31 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local31 > _local20){ return; }; if (_local31 > _local19){ _local19 = _local31; _local18 = _local24; }; _local24++; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; var _local27:b2Vec2 = _local22[_local25]; var _local28:b2Vec2 = _local22[_local26]; if (_local19 < Number.MIN_VALUE){ _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.SetV(_local23[_local18]); _arg1.m_localPoint.x = (0.5 * (_local27.x + _local28.x)); _arg1.m_localPoint.y = (0.5 * (_local27.y + _local28.y)); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; return; }; var _local29:Number = (((_local15 - _local27.x) * (_local28.x - _local27.x)) + ((_local16 - _local27.y) * (_local28.y - _local27.y))); var _local30:Number = (((_local15 - _local28.x) * (_local27.x - _local28.x)) + ((_local16 - _local28.y) * (_local27.y - _local28.y))); if (_local29 <= 0){ if ((((_local15 - _local27.x) * (_local15 - _local27.x)) + ((_local16 - _local27.y) * (_local16 - _local27.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local27.x); _arg1.m_localPlaneNormal.y = (_local16 - _local27.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local27); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { if (_local30 <= 0){ if ((((_local15 - _local28.x) * (_local15 - _local28.x)) + ((_local16 - _local28.y) * (_local16 - _local28.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local28.x); _arg1.m_localPlaneNormal.y = (_local16 - _local28.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local28); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { _local32 = (0.5 * (_local27.x + _local28.x)); _local33 = (0.5 * (_local27.y + _local28.y)); _local19 = (((_local15 - _local32) * _local23[_local25].x) + ((_local16 - _local33) * _local23[_local25].y)); if (_local19 > _local20){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = _local23[_local25].x; _arg1.m_localPlaneNormal.y = _local23[_local25].y; _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.Set(_local32, _local33); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; }; }; } public static function CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):void{ var _local6:ClipVertex; var _local12:b2PolygonShape; var _local13:b2PolygonShape; var _local14:b2Transform; var _local15:b2Transform; var _local16:int; var _local17:uint; var _local20:b2Mat22; var _local25:b2Vec2; var _local39:int; var _local42:Number; var _local43:b2ManifoldPoint; var _local44:Number; var _local45:Number; _arg1.m_pointCount = 0; var _local7:Number = (_arg2.m_radius + _arg4.m_radius); var _local8:int; s_edgeAO[0] = _local8; var _local9:Number = FindMaxSeparation(s_edgeAO, _arg2, _arg3, _arg4, _arg5); _local8 = s_edgeAO[0]; if (_local9 > _local7){ return; }; var _local10:int; s_edgeBO[0] = _local10; var _local11:Number = FindMaxSeparation(s_edgeBO, _arg4, _arg5, _arg2, _arg3); _local10 = s_edgeBO[0]; if (_local11 > _local7){ return; }; var _local18:Number = 0.98; var _local19:Number = 0.001; if (_local11 > ((_local18 * _local9) + _local19)){ _local12 = _arg4; _local13 = _arg2; _local14 = _arg5; _local15 = _arg3; _local16 = _local10; _arg1.m_type = b2Manifold.e_faceB; _local17 = 1; } else { _local12 = _arg2; _local13 = _arg4; _local14 = _arg3; _local15 = _arg5; _local16 = _local8; _arg1.m_type = b2Manifold.e_faceA; _local17 = 0; }; var _local21:Array = s_incidentEdge; FindIncidentEdge(_local21, _local12, _local14, _local16, _local13, _local15); var _local22:int = _local12.m_vertexCount; var _local23:Array = _local12.m_vertices; var _local24:b2Vec2 = _local23[_local16]; if ((_local16 + 1) < _local22){ _local25 = _local23[int((_local16 + 1))]; } else { _local25 = _local23[0]; }; var _local26:b2Vec2 = s_localTangent; _local26.Set((_local25.x - _local24.x), (_local25.y - _local24.y)); _local26.Normalize(); var _local27:b2Vec2 = s_localNormal; _local27.x = _local26.y; _local27.y = -(_local26.x); var _local28:b2Vec2 = s_planePoint; _local28.Set((0.5 * (_local24.x + _local25.x)), (0.5 * (_local24.y + _local25.y))); var _local29:b2Vec2 = s_tangent; _local20 = _local14.R; _local29.x = ((_local20.col1.x * _local26.x) + (_local20.col2.x * _local26.y)); _local29.y = ((_local20.col1.y * _local26.x) + (_local20.col2.y * _local26.y)); var _local30:b2Vec2 = s_tangent2; _local30.x = -(_local29.x); _local30.y = -(_local29.y); var _local31:b2Vec2 = s_normal; _local31.x = _local29.y; _local31.y = -(_local29.x); var _local32:b2Vec2 = s_v11; var _local33:b2Vec2 = s_v12; _local32.x = (_local14.position.x + ((_local20.col1.x * _local24.x) + (_local20.col2.x * _local24.y))); _local32.y = (_local14.position.y + ((_local20.col1.y * _local24.x) + (_local20.col2.y * _local24.y))); _local33.x = (_local14.position.x + ((_local20.col1.x * _local25.x) + (_local20.col2.x * _local25.y))); _local33.y = (_local14.position.y + ((_local20.col1.y * _local25.x) + (_local20.col2.y * _local25.y))); var _local34:Number = ((_local31.x * _local32.x) + (_local31.y * _local32.y)); var _local35:Number = (((-(_local29.x) * _local32.x) - (_local29.y * _local32.y)) + _local7); var _local36:Number = (((_local29.x * _local33.x) + (_local29.y * _local33.y)) + _local7); var _local37:Array = s_clipPoints1; var _local38:Array = s_clipPoints2; _local39 = ClipSegmentToLine(_local37, _local21, _local30, _local35); if (_local39 < 2){ return; }; _local39 = ClipSegmentToLine(_local38, _local37, _local29, _local36); if (_local39 < 2){ return; }; _arg1.m_localPlaneNormal.SetV(_local27); _arg1.m_localPoint.SetV(_local28); var _local40:int; var _local41:int; while (_local41 < b2Settings.b2_maxManifoldPoints) { _local6 = _local38[_local41]; _local42 = (((_local31.x * _local6.v.x) + (_local31.y * _local6.v.y)) - _local34); if (_local42 <= _local7){ _local43 = _arg1.m_points[_local40]; _local20 = _local15.R; _local44 = (_local6.v.x - _local15.position.x); _local45 = (_local6.v.y - _local15.position.y); _local43.m_localPoint.x = ((_local44 * _local20.col1.x) + (_local45 * _local20.col1.y)); _local43.m_localPoint.y = ((_local44 * _local20.col2.x) + (_local45 * _local20.col2.y)); _local43.m_id.Set(_local6.id); _local43.m_id.features.flip = _local17; _local40++; }; _local41++; }; _arg1.m_pointCount = _local40; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } } }//package Box2D.Collision
Section 21
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { import Box2D.Common.*; public class b2ContactID { b2internal var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 22
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 23
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var b2_gjkIters:int; private static var b2_gjkMaxIters:int; private static var s_saveB:Array = new Array(3); private static var s_simplex:b2Simplex = new b2Simplex(); private static var b2_gjkCalls:int; private static var s_saveA:Array = new Array(3); public static function Distance(_arg1:b2DistanceOutput, _arg2:b2SimplexCache, _arg3:b2DistanceInput):void{ var _local17:int; var _local18:b2Vec2; var _local20:b2Vec2; var _local21:b2SimplexVertex; var _local22:Boolean; var _local23:Number; var _local24:Number; var _local25:b2Vec2; b2_gjkCalls++; var _local4:b2DistanceProxy = _arg3.proxyA; var _local5:b2DistanceProxy = _arg3.proxyB; var _local6:b2Transform = _arg3.transformA; var _local7:b2Transform = _arg3.transformB; var _local8:b2Simplex = s_simplex; _local8.ReadCache(_arg2, _local4, _local6, _local5, _local7); var _local9:Array = _local8.m_vertices; var _local10 = 20; var _local11:Array = s_saveA; var _local12:Array = s_saveB; var _local13:int; var _local14:b2Vec2 = _local8.GetClosestPoint(); var _local15:Number = _local14.LengthSquared(); var _local16:Number = _local15; var _local19:int; while (_local19 < _local10) { _local13 = _local8.m_count; _local17 = 0; while (_local17 < _local13) { _local11[_local17] = _local9[_local17].indexA; _local12[_local17] = _local9[_local17].indexB; _local17++; }; switch (_local8.m_count){ case 1: break; case 2: _local8.Solve2(); break; case 3: _local8.Solve3(); break; default: b2Settings.b2Assert(false); }; if (_local8.m_count == 3){ break; }; _local18 = _local8.GetClosestPoint(); _local16 = _local18.LengthSquared(); if (_local16 > _local15){ }; _local15 = _local16; _local20 = _local8.GetSearchDirection(); if (_local20.LengthSquared() < (Number.MIN_VALUE * Number.MIN_VALUE)){ break; }; _local21 = _local9[_local8.m_count]; _local21.indexA = _local4.GetSupport(b2Math.MulTMV(_local6.R, _local20.GetNegative())); _local21.wA = b2Math.MulX(_local6, _local4.GetVertex(_local21.indexA)); _local21.indexB = _local5.GetSupport(b2Math.MulTMV(_local7.R, _local20)); _local21.wB = b2Math.MulX(_local7, _local5.GetVertex(_local21.indexB)); _local21.w = b2Math.SubtractVV(_local21.wB, _local21.wA); _local19++; b2_gjkIters++; _local22 = false; _local17 = 0; while (_local17 < _local13) { if ((((_local21.indexA == _local11[_local17])) && ((_local21.indexB == _local12[_local17])))){ _local22 = true; break; }; _local17++; }; if (_local22){ break; }; _local8.m_count++; }; b2_gjkMaxIters = b2Math.Max(b2_gjkMaxIters, _local19); _local8.GetWitnessPoints(_arg1.pointA, _arg1.pointB); _arg1.distance = b2Math.SubtractVV(_arg1.pointA, _arg1.pointB).Length(); _arg1.iterations = _local19; _local8.WriteCache(_arg2); if (_arg3.useRadii){ _local23 = _local4.m_radius; _local24 = _local5.m_radius; if ((((_arg1.distance > (_local23 + _local24))) && ((_arg1.distance > Number.MIN_VALUE)))){ _arg1.distance = (_arg1.distance - (_local23 + _local24)); _local25 = b2Math.SubtractVV(_arg1.pointB, _arg1.pointA); _local25.Normalize(); _arg1.pointA.x = (_arg1.pointA.x + (_local23 * _local25.x)); _arg1.pointA.y = (_arg1.pointA.y + (_local23 * _local25.y)); _arg1.pointB.x = (_arg1.pointB.x - (_local24 * _local25.x)); _arg1.pointB.y = (_arg1.pointB.y - (_local24 * _local25.y)); } else { _local18 = new b2Vec2(); _local18.x = (0.5 * (_arg1.pointA.x + _arg1.pointB.x)); _local18.y = (0.5 * (_arg1.pointA.y + _arg1.pointB.y)); _arg1.pointA.x = (_arg1.pointB.x = _local18.x); _arg1.pointA.y = (_arg1.pointB.y = _local18.y); _arg1.distance = 0; }; }; } } }//package Box2D.Collision
Section 24
//b2DistanceInput (Box2D.Collision.b2DistanceInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var transformA:b2Transform; public var transformB:b2Transform; public var useRadii:Boolean; } }//package Box2D.Collision
Section 25
//b2DistanceOutput (Box2D.Collision.b2DistanceOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceOutput { public var pointA:b2Vec2; public var distance:Number; public var iterations:int; public var pointB:b2Vec2; public function b2DistanceOutput(){ pointA = new b2Vec2(); pointB = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 26
//b2DistanceProxy (Box2D.Collision.b2DistanceProxy) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2DistanceProxy { public var m_radius:Number; public var m_vertices:Array; public var m_count:int; public function GetVertex(_arg1:int):b2Vec2{ b2Settings.b2Assert((((0 <= _arg1)) && ((_arg1 < m_count)))); return (m_vertices[_arg1]); } public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; var _local3:b2PolygonShape; switch (_arg1.GetType()){ case b2Shape.e_circleShape: _local2 = (_arg1 as b2CircleShape); m_vertices = new Array(1, true); m_vertices[0] = _local2.m_p; m_count = 1; m_radius = _local2.m_radius; break; case b2Shape.e_polygonShape: _local3 = (_arg1 as b2PolygonShape); m_vertices = _local3.m_vertices; m_count = _local3.m_vertexCount; m_radius = _local3.m_radius; break; default: b2Settings.b2Assert(false); }; } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } public function GetVertexCount():int{ return (m_count); } public function GetSupport(_arg1:b2Vec2):Number{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } } }//package Box2D.Collision
Section 27
//b2DynamicTree (Box2D.Collision.b2DynamicTree) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DynamicTree { private var m_insertionCount:int; private var m_root:b2DynamicTreeNode; private var m_freeList:b2DynamicTreeNode; private var m_path:uint; public function b2DynamicTree(){ m_root = null; m_freeList = null; m_path = 0; m_insertionCount = 0; } private function RemoveLeaf(_arg1:b2DynamicTreeNode):void{ var _local4:b2DynamicTreeNode; var _local5:b2AABB; if (_arg1 == m_root){ m_root = null; return; }; var _local2:b2DynamicTreeNode = _arg1.parent; var _local3:b2DynamicTreeNode = _local2.parent; if (_local2.child1 == _arg1){ _local4 = _local2.child2; } else { _local4 = _local2.child1; }; if (_local3){ if (_local3.child1 == _local2){ _local3.child1 = _local4; } else { _local3.child2 = _local4; }; _local4.parent = _local3; FreeNode(_local2); while (_local3) { _local5 = _local3.aabb; _local3.aabb = b2AABB.Combine(_local3.child1.aabb, _local3.child2.aabb); if (_local5.Contains(_local3.aabb)){ break; }; _local3 = _local3.parent; }; } else { m_root = _local4; _local4.parent = null; FreeNode(_local2); }; } public function GetFatAABB(_arg1:b2DynamicTreeNode):b2AABB{ return (_arg1.aabb); } public function Query(_arg1:Function, _arg2:b2AABB):void{ var _local5:b2DynamicTreeNode; var _local6:Boolean; if (m_root == null){ return; }; var _local3:Array = new Array(); var _local4:int; var _temp1 = _local4; _local4 = (_local4 + 1); var _local7 = _temp1; _local3[_local7] = m_root; while (_local4 > 0) { --_local4; _local5 = _local3[_local4]; if (_local5.aabb.TestOverlap(_arg2)){ if (_local5.IsLeaf()){ _local6 = _arg1(_local5); if (!_local6){ return; }; } else { var _temp2 = _local4; _local4 = (_local4 + 1); var _local8 = _temp2; _local3[_local8] = _local5.child1; var _temp3 = _local4; _local4 = (_local4 + 1); var _local9 = _temp3; _local3[_local9] = _local5.child2; }; }; }; } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ var _local3:b2Vec2; var _local9:b2AABB; var _local10:Number; var _local11:Number; var _local14:b2DynamicTreeNode; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:Number; var _local18:b2RayCastInput; if (m_root == null){ return; }; _local3 = _arg2.p1; var _local4:b2Vec2 = _arg2.p2; var _local5:b2Vec2 = b2Math.SubtractVV(_local3, _local4); _local5.Normalize(); var _local6:b2Vec2 = b2Math.CrossFV(1, _local5); var _local7:b2Vec2 = b2Math.AbsV(_local6); var _local8:Number = _arg2.maxFraction; _local9 = new b2AABB(); _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); var _local12:Array = new Array(); var _local13:int; var _temp1 = _local13; _local13 = (_local13 + 1); var _local19 = _temp1; _local12[_local19] = m_root; while (_local13 > 0) { --_local13; _local14 = _local12[_local13]; if (_local14.aabb.TestOverlap(_local9) == false){ } else { _local15 = _local14.aabb.GetCenter(); _local16 = _local14.aabb.GetExtents(); _local17 = ((Math.abs(((_local6.x * (_local3.x - _local15.x)) + (_local6.y * (_local3.y - _local15.y)))) - (_local7.x * _local16.x)) - (_local7.y * _local16.y)); if (_local17 > 0){ } else { if (_local14.IsLeaf()){ _local18 = new b2RayCastInput(); _local18.p1 = _arg2.p1; _local18.p2 = _arg2.p2; _local18.maxFraction = _arg2.maxFraction; _local8 = _arg1(_local18, _local14); if (_local8 == 0){ return; }; _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); } else { var _temp2 = _local13; _local13 = (_local13 + 1); var _local20 = _temp2; _local12[_local20] = _local14.child1; var _temp3 = _local13; _local13 = (_local13 + 1); var _local21 = _temp3; _local12[_local21] = _local14.child2; }; }; }; }; } public function GetUserData(_arg1:b2DynamicTreeNode){ return (_arg1.userData); } private function FreeNode(_arg1:b2DynamicTreeNode):void{ _arg1.parent = m_freeList; m_freeList = _arg1; } public function Rebalance(_arg1:int):void{ var _local3:b2DynamicTreeNode; var _local4:uint; if (m_root == null){ return; }; var _local2:int; while (_local2 < _arg1) { _local3 = m_root; _local4 = 0; while (_local3.IsLeaf() == false) { _local3 = (((m_path >> _local4) & 1)) ? _local3.child2 : _local3.child1; _local4 = ((_local4 + 1) & 31); }; m_path++; RemoveLeaf(_local3); InsertLeaf(_local3); _local2++; }; } public function CreateProxy(_arg1:b2AABB, _arg2):b2DynamicTreeNode{ var _local3:b2DynamicTreeNode; var _local4:Number; var _local5:Number; _local3 = AllocateNode(); _local4 = b2Settings.b2_aabbExtension; _local5 = b2Settings.b2_aabbExtension; _local3.aabb.lowerBound.x = (_arg1.lowerBound.x - _local4); _local3.aabb.lowerBound.y = (_arg1.lowerBound.y - _local5); _local3.aabb.upperBound.x = (_arg1.upperBound.x + _local4); _local3.aabb.upperBound.y = (_arg1.upperBound.y + _local5); _local3.userData = _arg2; InsertLeaf(_local3); return (_local3); } public function DestroyProxy(_arg1:b2DynamicTreeNode):void{ RemoveLeaf(_arg1); FreeNode(_arg1); } private function InsertLeaf(_arg1:b2DynamicTreeNode):void{ var _local6:*; var _local7:*; var _local8:*; var _local9:*; m_insertionCount++; if (m_root == null){ m_root = _arg1; m_root.parent = null; return; }; var _local2:b2Vec2 = _arg1.aabb.GetCenter(); var _local3:b2DynamicTreeNode = m_root; if (_local3.IsLeaf() == false){ do { _local6 = _local3.child1; _local7 = _local3.child2; _local8 = (Math.abs((((_local6.aabb.lowerBound.x + _local6.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local6.aabb.lowerBound.y + _local6.aabb.upperBound.y) / 2) - _local2.y))); _local9 = (Math.abs((((_local7.aabb.lowerBound.x + _local7.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local7.aabb.lowerBound.y + _local7.aabb.upperBound.y) / 2) - _local2.y))); if (_local8 < _local9){ _local3 = _local6; } else { _local3 = _local7; }; } while (_local3.IsLeaf() == false); }; var _local4:b2DynamicTreeNode = _local3.parent; var _local5:b2DynamicTreeNode = AllocateNode(); _local5.parent = _local4; _local5.userData = null; _local5.aabb.Combine(_arg1.aabb, _local3.aabb); if (_local4){ if (_local3.parent.child1 == _local3){ _local4.child1 = _local5; } else { _local4.child2 = _local5; }; _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; do { } while (!(_local4.aabb.Contains(_local5.aabb))); } else { _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; m_root = _local5; }; } public function MoveProxy(_arg1:b2DynamicTreeNode, _arg2:b2AABB, _arg3:b2Vec2):Boolean{ var _local4:Number; var _local5:Number; b2Settings.b2Assert(_arg1.IsLeaf()); if (_arg1.aabb.Contains(_arg2)){ return (false); }; RemoveLeaf(_arg1); _local4 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.x > 0)) ? _arg3.x : -(_arg3.x))); _local5 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.y > 0)) ? _arg3.y : -(_arg3.y))); _arg1.aabb.lowerBound.x = (_arg2.lowerBound.x - _local4); _arg1.aabb.lowerBound.y = (_arg2.lowerBound.y - _local5); _arg1.aabb.upperBound.x = (_arg2.upperBound.x + _local4); _arg1.aabb.upperBound.y = (_arg2.upperBound.y + _local5); InsertLeaf(_arg1); return (true); } private function AllocateNode():b2DynamicTreeNode{ var _local1:b2DynamicTreeNode; if (m_freeList){ _local1 = m_freeList; m_freeList = _local1.parent; _local1.parent = null; _local1.child1 = null; _local1.child2 = null; return (_local1); }; return (new b2DynamicTreeNode()); } } }//package Box2D.Collision
Section 28
//b2DynamicTreeBroadPhase (Box2D.Collision.b2DynamicTreeBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DynamicTreeBroadPhase implements IBroadPhase { private var m_moveBuffer:Array; private var m_tree:b2DynamicTree; private var m_pairBuffer:Array; private var m_pairCount:int;// = 0 private var m_proxyCount:int; public function b2DynamicTreeBroadPhase(){ m_tree = new b2DynamicTree(); m_moveBuffer = new Array(); m_pairBuffer = new Array(); super(); } public function Validate():void{ } private function UnBufferMove(_arg1:b2DynamicTreeNode):void{ var _local2:int = m_moveBuffer.indexOf(_arg1); m_moveBuffer.splice(_local2, 1); } private function BufferMove(_arg1:b2DynamicTreeNode):void{ m_moveBuffer[m_moveBuffer.length] = _arg1; } private function ComparePairs(_arg1:b2DynamicTreePair, _arg2:b2DynamicTreePair):int{ return (0); } public function GetProxyCount():int{ return (m_proxyCount); } public function GetFatAABB(_arg1):b2AABB{ return (m_tree.GetFatAABB(_arg1)); } public function Query(_arg1:Function, _arg2:b2AABB):void{ m_tree.Query(_arg1, _arg2); } public function Rebalance(_arg1:int):void{ m_tree.Rebalance(_arg1); } public function TestOverlap(_arg1, _arg2):Boolean{ var _local3:b2AABB = m_tree.GetFatAABB(_arg1); var _local4:b2AABB = m_tree.GetFatAABB(_arg2); return (_local3.TestOverlap(_local4)); } public function UpdatePairs(_arg1:Function):void{ var queryProxy:b2DynamicTreeNode; var i:int; var fatAABB:b2AABB; var primaryPair:b2DynamicTreePair; var userDataA:*; var userDataB:*; var pair:b2DynamicTreePair; var callback = _arg1; m_pairCount = 0; for each (queryProxy in m_moveBuffer) { var QueryCallback:Function = function (_arg1:b2DynamicTreeNode):Boolean{ if (_arg1 == queryProxy){ return (true); }; if (m_pairCount == m_pairBuffer.length){ m_pairBuffer[m_pairCount] = new b2DynamicTreePair(); }; var _local2:b2DynamicTreePair = m_pairBuffer[m_pairCount]; _local2.proxyA = ((_arg1 < queryProxy)) ? _arg1 : queryProxy; _local2.proxyB = ((_arg1 >= queryProxy)) ? _arg1 : queryProxy; m_pairCount++; return (true); }; fatAABB = m_tree.GetFatAABB(queryProxy); m_tree.Query(QueryCallback, fatAABB); }; m_moveBuffer.length = 0; i = 0; while (i < m_pairCount) { primaryPair = m_pairBuffer[i]; userDataA = m_tree.GetUserData(primaryPair.proxyA); userDataB = m_tree.GetUserData(primaryPair.proxyB); callback(userDataA, userDataB); i = (i + 1); while (i < m_pairCount) { pair = m_pairBuffer[i]; if (((!((pair.proxyA == primaryPair.proxyA))) || (!((pair.proxyB == primaryPair.proxyB))))){ break; }; i = (i + 1); }; }; } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ m_tree.RayCast(_arg1, _arg2); } public function CreateProxy(_arg1:b2AABB, _arg2){ var _local3:b2DynamicTreeNode = m_tree.CreateProxy(_arg1, _arg2); m_proxyCount++; BufferMove(_local3); return (_local3); } public function GetUserData(_arg1){ return (m_tree.GetUserData(_arg1)); } public function DestroyProxy(_arg1):void{ UnBufferMove(_arg1); m_proxyCount--; m_tree.DestroyProxy(_arg1); } public function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void{ var _local4:Boolean = m_tree.MoveProxy(_arg1, _arg2, _arg3); if (_local4){ BufferMove(_arg1); }; } } }//package Box2D.Collision
Section 29
//b2DynamicTreeNode (Box2D.Collision.b2DynamicTreeNode) package Box2D.Collision { public class b2DynamicTreeNode { public var aabb:b2AABB; public var parent:b2DynamicTreeNode; public var userData; public var child2:b2DynamicTreeNode; public var child1:b2DynamicTreeNode; public function b2DynamicTreeNode(){ aabb = new b2AABB(); super(); } public function IsLeaf():Boolean{ return ((child1 == null)); } } }//package Box2D.Collision
Section 30
//b2DynamicTreePair (Box2D.Collision.b2DynamicTreePair) package Box2D.Collision { public class b2DynamicTreePair { public var proxyA:b2DynamicTreeNode; public var proxyB:b2DynamicTreeNode; } }//package Box2D.Collision
Section 31
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var m_pointCount:int;// = 0 public var m_localPlaneNormal:b2Vec2; public var m_type:int; public var m_points:Array; public var m_localPoint:b2Vec2; public static const e_circles:int = 1; public static const e_faceA:int = 2; public static const e_faceB:int = 4; public function b2Manifold(){ m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2ManifoldPoint(); _local1++; }; m_localPlaneNormal = new b2Vec2(); m_localPoint = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ m_pointCount = _arg1.m_pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (m_points[_local2] as b2ManifoldPoint).Set(_arg1.m_points[_local2]); _local2++; }; m_localPlaneNormal.SetV(_arg1.m_localPlaneNormal); m_localPoint.SetV(_arg1.m_localPoint); m_type = _arg1.m_type; } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (m_points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; m_localPlaneNormal.SetZero(); m_localPoint.SetZero(); m_type = 0; m_pointCount = 0; } public function Copy():b2Manifold{ var _local1:b2Manifold = new b2Manifold(); _local1.Set(this); return (_local1); } } }//package Box2D.Collision
Section 32
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var m_localPoint:b2Vec2; public var m_tangentImpulse:Number; public var m_normalImpulse:Number; public var m_id:b2ContactID; public function b2ManifoldPoint(){ m_localPoint = new b2Vec2(); m_id = new b2ContactID(); super(); Reset(); } public function Set(_arg1:b2ManifoldPoint):void{ m_localPoint.SetV(_arg1.m_localPoint); m_normalImpulse = _arg1.m_normalImpulse; m_tangentImpulse = _arg1.m_tangentImpulse; m_id.Set(_arg1.m_id); } public function Reset():void{ m_localPoint.SetZero(); m_normalImpulse = 0; m_tangentImpulse = 0; m_id.key = 0; } } }//package Box2D.Collision
Section 33
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 34
//b2RayCastInput (Box2D.Collision.b2RayCastInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastInput { public var p1:b2Vec2; public var maxFraction:Number; public var p2:b2Vec2; public function b2RayCastInput(_arg1:b2Vec2=null, _arg2:b2Vec2=null, _arg3:Number=1){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); if (_arg1){ this.p1.SetV(_arg1); }; if (_arg2){ this.p2.SetV(_arg2); }; this.maxFraction = _arg3; } } }//package Box2D.Collision
Section 35
//b2RayCastOutput (Box2D.Collision.b2RayCastOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastOutput { public var fraction:Number; public var normal:b2Vec2; public function b2RayCastOutput(){ normal = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 36
//b2SeparationFunction (Box2D.Collision.b2SeparationFunction) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; class b2SeparationFunction { public var m_proxyA:b2DistanceProxy; public var m_proxyB:b2DistanceProxy; public var m_type:int; public var m_axis:b2Vec2; public var m_localPoint:b2Vec2; public static const e_faceA:int = 2; public static const e_faceB:int = 4; public static const e_points:int = 1; function b2SeparationFunction(){ m_localPoint = new b2Vec2(); m_axis = new b2Vec2(); super(); } public function Initialize(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Mat22; var _local20:b2Vec2; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:b2Vec2; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; m_proxyA = _arg2; m_proxyB = _arg4; var _local6:int = _arg1.count; b2Settings.b2Assert((((0 < _local6)) && ((_local6 < 3)))); if (_local6 == 1){ m_type = e_points; _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); m_axis.x = (_local15 - _local13); m_axis.y = (_local16 - _local14); m_axis.Normalize(); } else { if (_arg1.indexB[0] == _arg1.indexB[1]){ m_type = e_faceA; _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); m_localPoint.x = (0.5 * (_local8.x + _local9.x)); m_localPoint.y = (0.5 * (_local8.y + _local9.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { if (_arg1.indexA[0] == _arg1.indexA[0]){ m_type = e_faceB; _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); m_localPoint.x = (0.5 * (_local11.x + _local12.x)); m_localPoint.y = (0.5 * (_local11.y + _local12.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local23 = b2Math.MulX(_arg3, _local7); _local24 = b2Math.MulMV(_arg3.R, b2Math.SubtractVV(_local9, _local8)); _local25 = b2Math.MulX(_arg5, _local10); _local26 = b2Math.MulMV(_arg5.R, b2Math.SubtractVV(_local12, _local11)); _local27 = ((_local24.x * _local24.x) + (_local24.y * _local24.y)); _local28 = ((_local26.x * _local26.x) + (_local26.y * _local26.y)); _local29 = b2Math.SubtractVV(_local26, _local24); _local30 = ((_local24.x * _local29.x) + (_local24.y * _local29.y)); _local31 = ((_local26.x * _local29.x) + (_local26.y * _local29.y)); _local32 = ((_local24.x * _local26.x) + (_local24.y * _local26.y)); _local33 = ((_local27 * _local28) - (_local32 * _local32)); _local21 = 0; if (_local33 != 0){ _local21 = b2Math.Clamp((((_local32 * _local31) - (_local30 * _local28)) / _local33), 0, 1); }; _local34 = (((_local32 * _local21) + _local31) / _local28); if (_local34 < 0){ _local34 = 0; _local21 = b2Math.Clamp(((_local32 - _local30) / _local27), 0, 1); }; _local7 = new b2Vec2(); _local7.x = (_local8.x + (_local21 * (_local9.x - _local8.x))); _local7.y = (_local8.y + (_local21 * (_local9.y - _local8.y))); _local10 = new b2Vec2(); _local10.x = (_local11.x + (_local21 * (_local12.x - _local11.x))); _local10.y = (_local11.y + (_local21 * (_local12.y - _local11.y))); if ((((_local21 == 0)) || ((_local21 == 1)))){ m_type = e_faceB; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_axis.Normalize(); m_localPoint = _local10; _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { m_type = e_faceA; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_localPoint = _local7; _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; }; }; }; }; } public function Evaluate(_arg1:b2Transform, _arg2:b2Transform):Number{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:b2Vec2; switch (m_type){ case e_points: _local3 = b2Math.MulTMV(_arg1.R, m_axis); _local4 = b2Math.MulTMV(_arg2.R, m_axis.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local6 = m_proxyB.GetSupportVertex(_local4); _local7 = b2Math.MulX(_arg1, _local5); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * m_axis.x) + ((_local8.y - _local7.y) * m_axis.y)); return (_local9); case e_faceA: _local10 = b2Math.MulMV(_arg1.R, m_axis); _local7 = b2Math.MulX(_arg1, m_localPoint); _local4 = b2Math.MulTMV(_arg2.R, _local10.GetNegative()); _local6 = m_proxyB.GetSupportVertex(_local4); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * _local10.x) + ((_local8.y - _local7.y) * _local10.y)); return (_local9); case e_faceB: _local10 = b2Math.MulMV(_arg2.R, m_axis); _local8 = b2Math.MulX(_arg2, m_localPoint); _local3 = b2Math.MulTMV(_arg1.R, _local10.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local7 = b2Math.MulX(_arg1, _local5); _local9 = (((_local7.x - _local8.x) * _local10.x) + ((_local7.y - _local8.y) * _local10.y)); return (_local9); default: b2Settings.b2Assert(false); return (0); }; } } }//package Box2D.Collision
Section 37
//b2Simplex (Box2D.Collision.b2Simplex) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; class b2Simplex { public var m_v1:b2SimplexVertex; public var m_v2:b2SimplexVertex; public var m_v3:b2SimplexVertex; public var m_vertices:Array; public var m_count:int; function b2Simplex(){ m_v1 = new b2SimplexVertex(); m_v2 = new b2SimplexVertex(); m_v3 = new b2SimplexVertex(); m_vertices = new Array(3); super(); m_vertices[0] = m_v1; m_vertices[1] = m_v2; m_vertices[2] = m_v3; } public function GetSearchDirection():b2Vec2{ var _local1:b2Vec2; var _local2:Number; switch (m_count){ case 1: return (m_v1.w.GetNegative()); case 2: _local1 = b2Math.SubtractVV(m_v2.w, m_v1.w); _local2 = b2Math.CrossVV(_local1, m_v1.w.GetNegative()); if (_local2 > 0){ return (b2Math.CrossFV(1, _local1)); }; return (b2Math.CrossVF(_local1, 1)); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } public function WriteCache(_arg1:b2SimplexCache):void{ _arg1.metric = GetMetric(); _arg1.count = uint(m_count); var _local2:Array = m_vertices; var _local3:int; while (_local3 < m_count) { _arg1.indexA[_local3] = uint(_local2[_local3].indexA); _arg1.indexB[_local3] = uint(_local2[_local3].indexB); _local3++; }; } public function GetMetric():Number{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (0); case 1: return (0); case 2: return (b2Math.SubtractVV(m_v1.w, m_v2.w).Length()); case 3: return (b2Math.CrossVV(b2Math.SubtractVV(m_v2.w, m_v1.w), b2Math.SubtractVV(m_v3.w, m_v1.w))); default: b2Settings.b2Assert(false); return (0); }; } public function ReadCache(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local6:b2Vec2; var _local7:b2Vec2; var _local10:b2SimplexVertex; var _local11:Number; var _local12:Number; b2Settings.b2Assert((((0 <= _arg1.count)) && ((_arg1.count <= 3)))); m_count = _arg1.count; var _local8:Array = m_vertices; var _local9:int; while (_local9 < m_count) { _local10 = _local8[_local9]; _local10.indexA = _arg1.indexA[_local9]; _local10.indexB = _arg1.indexB[_local9]; _local6 = _arg2.GetVertex(_local10.indexA); _local7 = _arg4.GetVertex(_local10.indexB); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local7); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); _local10.a = 0; _local9++; }; if (m_count > 1){ _local11 = _arg1.metric; _local12 = GetMetric(); if ((((((_local12 < (0.5 * _local11))) || (((2 * _local11) < _local12)))) || ((_local12 < Number.MIN_VALUE)))){ m_count = 0; }; }; if (m_count == 0){ _local10 = _local8[0]; _local10.indexA = 0; _local10.indexB = 0; _local6 = _arg2.GetVertex(0); _local7 = _arg4.GetVertex(0); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local7); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); m_count = 1; }; } public function GetWitnessPoints(_arg1:b2Vec2, _arg2:b2Vec2):void{ switch (m_count){ case 0: b2Settings.b2Assert(false); break; case 1: _arg1.SetV(m_v1.wA); _arg2.SetV(m_v1.wB); break; case 2: _arg1.x = ((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)); _arg1.y = ((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)); _arg2.x = ((m_v1.a * m_v1.wB.x) + (m_v2.a * m_v2.wB.x)); _arg2.y = ((m_v1.a * m_v1.wB.y) + (m_v2.a * m_v2.wB.y)); break; case 3: _arg2.x = (_arg1.x = (((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)) + (m_v3.a * m_v3.wA.x))); _arg2.y = (_arg1.y = (((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)) + (m_v3.a * m_v3.wA.y))); break; default: b2Settings.b2Assert(false); break; }; } public function Solve2():void{ var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local4:Number = -(((_local1.x * _local3.x) + (_local1.y * _local3.y))); if (_local4 <= 0){ m_v1.a = 1; m_count = 1; return; }; var _local5:Number = ((_local2.x * _local3.x) + (_local2.y * _local3.y)); if (_local5 <= 0){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; var _local6:Number = (1 / (_local5 + _local4)); m_v1.a = (_local5 * _local6); m_v2.a = (_local4 * _local6); m_count = 2; } public function Solve3():void{ var _local24:Number; var _local25:Number; var _local26:Number; var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = m_v3.w; var _local4:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local5:Number = b2Math.Dot(_local1, _local4); var _local6:Number = b2Math.Dot(_local2, _local4); var _local7:Number = _local6; var _local8:Number = -(_local5); var _local9:b2Vec2 = b2Math.SubtractVV(_local3, _local1); var _local10:Number = b2Math.Dot(_local1, _local9); var _local11:Number = b2Math.Dot(_local3, _local9); var _local12:Number = _local11; var _local13:Number = -(_local10); var _local14:b2Vec2 = b2Math.SubtractVV(_local3, _local2); var _local15:Number = b2Math.Dot(_local2, _local14); var _local16:Number = b2Math.Dot(_local3, _local14); var _local17:Number = _local16; var _local18:Number = -(_local15); var _local19:Number = b2Math.CrossVV(_local4, _local9); var _local20:Number = (_local19 * b2Math.CrossVV(_local2, _local3)); var _local21:Number = (_local19 * b2Math.CrossVV(_local3, _local1)); var _local22:Number = (_local19 * b2Math.CrossVV(_local1, _local2)); if ((((_local8 <= 0)) && ((_local13 <= 0)))){ m_v1.a = 1; m_count = 1; return; }; if ((((((_local7 > 0)) && ((_local8 > 0)))) && ((_local22 <= 0)))){ _local24 = (1 / (_local7 + _local8)); m_v1.a = (_local7 * _local24); m_v2.a = (_local8 * _local24); m_count = 2; return; }; if ((((((_local12 > 0)) && ((_local13 > 0)))) && ((_local21 <= 0)))){ _local25 = (1 / (_local12 + _local13)); m_v1.a = (_local12 * _local25); m_v3.a = (_local13 * _local25); m_count = 2; m_v2.Set(m_v3); return; }; if ((((_local7 <= 0)) && ((_local18 <= 0)))){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; if ((((_local12 <= 0)) && ((_local17 <= 0)))){ m_v3.a = 1; m_count = 1; m_v1.Set(m_v3); return; }; if ((((((_local17 > 0)) && ((_local18 > 0)))) && ((_local20 <= 0)))){ _local26 = (1 / (_local17 + _local18)); m_v2.a = (_local17 * _local26); m_v3.a = (_local18 * _local26); m_count = 2; m_v1.Set(m_v3); return; }; var _local23:Number = (1 / ((_local20 + _local21) + _local22)); m_v1.a = (_local20 * _local23); m_v2.a = (_local21 * _local23); m_v3.a = (_local22 * _local23); m_count = 3; } public function GetClosestPoint():b2Vec2{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (new b2Vec2()); case 1: return (m_v1.w); case 2: return (new b2Vec2(((m_v1.a * m_v1.w.x) + (m_v2.a * m_v2.w.x)), ((m_v1.a * m_v1.w.y) + (m_v2.a * m_v2.w.y)))); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } } }//package Box2D.Collision
Section 38
//b2SimplexCache (Box2D.Collision.b2SimplexCache) package Box2D.Collision { public class b2SimplexCache { public var metric:Number; public var count:uint; public var indexB:Array; public var indexA:Array; public function b2SimplexCache(){ indexA = new Array(3); indexB = new Array(3); super(); } } }//package Box2D.Collision
Section 39
//b2SimplexVertex (Box2D.Collision.b2SimplexVertex) package Box2D.Collision { import Box2D.Common.Math.*; class b2SimplexVertex { public var a:Number; public var wA:b2Vec2; public var wB:b2Vec2; public var indexA:int; public var indexB:int; public var w:b2Vec2; public function Set(_arg1:b2SimplexVertex):void{ wA.SetV(_arg1.wA); wB.SetV(_arg1.wB); w.SetV(_arg1.w); a = _arg1.a; indexA = _arg1.indexA; indexB = _arg1.indexB; } } }//package Box2D.Collision
Section 40
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { private static var b2_toiCalls:int = 0; private static var s_xfA:b2Transform = new b2Transform(); private static var s_distanceInput:b2DistanceInput = new b2DistanceInput(); private static var s_xfB:b2Transform = new b2Transform(); private static var s_distanceOutput:b2DistanceOutput = new b2DistanceOutput(); private static var b2_toiMaxRootIters:int = 0; private static var s_cache:b2SimplexCache = new b2SimplexCache(); private static var b2_toiRootIters:int = 0; private static var b2_toiIters:int = 0; private static var b2_toiMaxIters:int = 0; private static var s_fcn:b2SeparationFunction = new b2SeparationFunction(); public static function TimeOfImpact(_arg1:b2TOIInput):Number{ var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; b2_toiCalls++; var _local2:b2DistanceProxy = _arg1.proxyA; var _local3:b2DistanceProxy = _arg1.proxyB; var _local4:b2Sweep = _arg1.sweepA; var _local5:b2Sweep = _arg1.sweepB; b2Settings.b2Assert((_local4.t0 == _local5.t0)); b2Settings.b2Assert(((1 - _local4.t0) > Number.MIN_VALUE)); var _local6:Number = (_local2.m_radius + _local3.m_radius); var _local7:Number = _arg1.tolerance; var _local8:Number = 0; var _local9 = 1000; var _local10:int; var _local11:Number = 0; s_cache.count = 0; s_distanceInput.useRadii = false; while (true) { _local4.GetTransform(s_xfA, _local8); _local5.GetTransform(s_xfB, _local8); s_distanceInput.proxyA = _local2; s_distanceInput.proxyB = _local3; s_distanceInput.transformA = s_xfA; s_distanceInput.transformB = s_xfB; b2Distance.Distance(s_distanceOutput, s_cache, s_distanceInput); if (s_distanceOutput.distance <= 0){ _local8 = 1; break; }; s_fcn.Initialize(s_cache, _local2, s_xfA, _local3, s_xfB); _local12 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local12 <= 0){ _local8 = 1; break; }; if (_local10 == 0){ if (_local12 > _local6){ _local11 = b2Math.Max((_local6 - _local7), (0.75 * _local6)); } else { _local11 = b2Math.Max((_local12 - _local7), (0.02 * _local6)); }; }; if ((_local12 - _local11) < (0.5 * _local7)){ if (_local10 == 0){ _local8 = 1; break; }; break; }; _local13 = _local8; _local14 = _local8; _local15 = 1; _local16 = _local12; _local4.GetTransform(s_xfA, _local15); _local5.GetTransform(s_xfB, _local15); _local17 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local17 >= _local11){ _local8 = 1; break; }; _local18 = 0; while (true) { if ((_local18 & 1)){ _local19 = (_local14 + (((_local11 - _local16) * (_local15 - _local14)) / (_local17 - _local16))); } else { _local19 = (0.5 * (_local14 + _local15)); }; _local4.GetTransform(s_xfA, _local19); _local5.GetTransform(s_xfB, _local19); _local20 = s_fcn.Evaluate(s_xfA, s_xfB); if (b2Math.Abs((_local20 - _local11)) < (0.025 * _local7)){ _local13 = _local19; break; }; if (_local20 > _local11){ _local14 = _local19; _local16 = _local20; } else { _local15 = _local19; _local17 = _local20; }; _local18++; b2_toiRootIters++; if (_local18 == 50){ break; }; }; b2_toiMaxRootIters = b2Math.Max(b2_toiMaxRootIters, _local18); if (_local13 < ((1 + (100 * Number.MIN_VALUE)) * _local8)){ break; }; _local8 = _local13; _local10++; b2_toiIters++; if (_local10 == _local9){ break; }; }; b2_toiMaxIters = b2Math.Max(b2_toiMaxIters, _local10); return (_local8); } } }//package Box2D.Collision
Section 41
//b2TOIInput (Box2D.Collision.b2TOIInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2TOIInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var sweepA:b2Sweep; public var sweepB:b2Sweep; public var tolerance:Number; public function b2TOIInput(){ proxyA = new b2DistanceProxy(); proxyB = new b2DistanceProxy(); sweepA = new b2Sweep(); sweepB = new b2Sweep(); super(); } } }//package Box2D.Collision
Section 42
//b2WorldManifold (Box2D.Collision.b2WorldManifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2WorldManifold { public var m_normal:b2Vec2; public var m_points:Array; public function b2WorldManifold(){ m_normal = new b2Vec2(); super(); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2Manifold, _arg2:b2Transform, _arg3:Number, _arg4:b2Transform, _arg5:Number):void{ var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; 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; if (_arg1.m_pointCount == 0){ return; }; switch (_arg1.m_type){ case b2Manifold.e_circles: _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local15 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local16 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_points[0].m_localPoint; _local17 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local18 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local21 = ((_local19 * _local19) + (_local20 * _local20)); if (_local21 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local26 = Math.sqrt(_local21); m_normal.x = (_local19 / _local26); m_normal.y = (_local20 / _local26); } else { m_normal.x = 1; m_normal.y = 0; }; _local22 = (_local15 + (_arg3 * m_normal.x)); _local23 = (_local16 + (_arg3 * m_normal.y)); _local24 = (_local17 - (_arg5 * m_normal.x)); _local25 = (_local18 - (_arg5 * m_normal.y)); m_points[0].x = (0.5 * (_local22 + _local24)); m_points[0].y = (0.5 * (_local23 + _local25)); break; case b2Manifold.e_faceA: _local8 = _arg2.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = _local9; m_normal.y = _local10; _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg4.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local10)); _local6++; }; break; case b2Manifold.e_faceB: _local8 = _arg4.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = -(_local9); m_normal.y = -(_local10); _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg2.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local10)); _local6++; }; break; }; } } }//package Box2D.Collision
Section 43
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:ClipVertex):void{ v.SetV(_arg1.v); id.Set(_arg1.id); } } }//package Box2D.Collision
Section 44
//Features (Box2D.Collision.Features) package Box2D.Collision { import Box2D.Common.*; public class Features { b2internal var _referenceEdge:int; b2internal var _incidentEdge:int; b2internal var _flip:int; b2internal var _incidentVertex:int; b2internal var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 45
//IBroadPhase (Box2D.Collision.IBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public interface IBroadPhase { function GetFatAABB(_arg1):b2AABB; function Query(_arg1:Function, _arg2:b2AABB):void; function Rebalance(_arg1:int):void; function GetUserData(_arg1); function UpdatePairs(_arg1:Function):void; function CreateProxy(_arg1:b2AABB, _arg2); function DestroyProxy(_arg1):void; function TestOverlap(_arg1, _arg2):Boolean; function Validate():void; function GetProxyCount():int; function RayCast(_arg1:Function, _arg2:b2RayCastInput):void; function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void; } }//package Box2D.Collision
Section 46
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(){ col1 = new b2Vec2(); col2 = new b2Vec2(); super(); col1.x = (col2.y = 1); } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ var _local1:b2Mat22 = new b2Mat22(); _local1.SetM(this); return (_local1); } public function GetInverse(_arg1:b2Mat22):b2Mat22{ var _local3:Number; var _local6:Number; var _local2:Number = col1.x; _local3 = col2.x; var _local4:Number = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); if (_local6 != 0){ _local6 = (1 / _local6); }; _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public static function FromAngle(_arg1:Number):b2Mat22{ var _local2:b2Mat22 = new (b2Mat22); _local2.Set(_arg1); return (_local2); } public static function FromVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Mat22{ var _local3:b2Mat22 = new (b2Mat22); _local3.SetVV(_arg1, _arg2); return (_local3); } } }//package Box2D.Common.Math
Section 47
//b2Mat33 (Box2D.Common.Math.b2Mat33) package Box2D.Common.Math { public class b2Mat33 { public var col1:b2Vec3; public var col2:b2Vec3; public var col3:b2Vec3; public function b2Mat33(_arg1:b2Vec3=null, _arg2:b2Vec3=null, _arg3:b2Vec3=null){ col1 = new b2Vec3(); col2 = new b2Vec3(); col3 = new b2Vec3(); super(); if (((((!(_arg1)) && (!(_arg2)))) && (!(_arg3)))){ col1.SetZero(); col2.SetZero(); col3.SetZero(); } else { col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 1; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 1; } public function Solve22(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local6:Number; _local4 = col1.x; var _local5:Number = col2.x; _local6 = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function SetZero():void{ col1.x = 0; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 0; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 0; } public function SetM(_arg1:b2Mat33):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); col3.SetV(_arg1.col3); } public function AddM(_arg1:b2Mat33):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col1.z = (col1.z + _arg1.col1.z); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); col2.z = (col2.z + _arg1.col2.z); col3.x = (col3.x + _arg1.col3.x); col3.y = (col3.y + _arg1.col3.y); col3.z = (col3.z + _arg1.col3.z); } public function SetVVV(_arg1:b2Vec3, _arg2:b2Vec3, _arg3:b2Vec3):void{ col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); } public function Copy():b2Mat33{ return (new b2Mat33(col1, col2, col3)); } public function Solve33(_arg1:b2Vec3, _arg2:Number, _arg3:Number, _arg4:Number):b2Vec3{ var _local5:Number = col1.x; var _local6:Number = col1.y; var _local7:Number = col1.z; var _local8:Number = col2.x; var _local9:Number = col2.y; var _local10:Number = col2.z; var _local11:Number = col3.x; var _local12:Number = col3.y; var _local13:Number = col3.z; var _local14:Number = (((_local5 * ((_local9 * _local13) - (_local10 * _local12))) + (_local6 * ((_local10 * _local11) - (_local8 * _local13)))) + (_local7 * ((_local8 * _local12) - (_local9 * _local11)))); if (_local14 != 0){ _local14 = (1 / _local14); }; _arg1.x = (_local14 * (((_arg2 * ((_local9 * _local13) - (_local10 * _local12))) + (_arg3 * ((_local10 * _local11) - (_local8 * _local13)))) + (_arg4 * ((_local8 * _local12) - (_local9 * _local11))))); _arg1.y = (_local14 * (((_local5 * ((_arg3 * _local13) - (_arg4 * _local12))) + (_local6 * ((_arg4 * _local11) - (_arg2 * _local13)))) + (_local7 * ((_arg2 * _local12) - (_arg3 * _local11))))); _arg1.z = (_local14 * (((_local5 * ((_local9 * _arg4) - (_local10 * _arg3))) + (_local6 * ((_local10 * _arg2) - (_local8 * _arg4)))) + (_local7 * ((_local8 * _arg3) - (_local9 * _arg2))))); return (_arg1); } } }//package Box2D.Common.Math
Section 48
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Transform_identity:b2Transform = new b2Transform(b2Vec2_zero, b2Mat22_identity); public static const b2Mat22_identity:b2Mat22 = b2Mat22.FromVV(new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = b2Mat22.FromVV(AbsV(_arg1.col1), AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(MulMV(_arg1, _arg2.col1), MulMV(_arg1, _arg2.col2)); return (_local3); } public static function NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } public static function CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Max(_arg1.x, _arg2.x), Max(_arg1.y, _arg2.y)); return (_local3); } public static function AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(Abs(_arg1.x), Abs(_arg1.y)); return (_local2); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col1), Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col2), Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = b2Mat22.FromVV(_local3, _local4); return (_local5); } public static function DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (((_arg1 < _arg2)) ? _arg2 : ((_arg1 > _arg3)) ? _arg3 : _arg1); } public static function MulXT(_arg1:b2Transform, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function Random():Number{ return (((Math.random() * 2) - 1)); } public static function MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Min(_arg1.x, _arg2.x), Min(_arg1.y, _arg2.y)); return (_local3); } public static function CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg2, _arg1.col1), Dot(_arg2, _arg1.col2)); return (_local3); } public static function Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (MaxV(_arg2, MinV(_arg1, _arg3))); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function MulX(_arg1:b2Transform, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } } }//package Box2D.Common.Math
Section 49
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function Set(_arg1:b2Sweep):void{ localCenter.SetV(_arg1.localCenter); c0.SetV(_arg1.c0); c.SetV(_arg1.c); a0 = _arg1.a0; a = _arg1.a; t0 = _arg1.t0; } public function Copy():b2Sweep{ var _local1:b2Sweep = new b2Sweep(); _local1.localCenter.SetV(localCenter); _local1.c0.SetV(c0); _local1.c.SetV(c); _local1.a0 = a0; _local1.a = a; _local1.t0 = t0; return (_local1); } public function GetTransform(_arg1:b2Transform, _arg2:Number):void{ _arg1.position.x = (((1 - _arg2) * c0.x) + (_arg2 * c.x)); _arg1.position.y = (((1 - _arg2) * c0.y) + (_arg2 * c.y)); var _local3:Number = (((1 - _arg2) * a0) + (_arg2 * a)); _arg1.R.Set(_local3); var _local4:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local4.col1.x * localCenter.x) + (_local4.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local4.col1.y * localCenter.x) + (_local4.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 50
//b2Transform (Box2D.Common.Math.b2Transform) package Box2D.Common.Math { public class b2Transform { public var position:b2Vec2; public var R:b2Mat22; public function b2Transform(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2Transform):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } public function GetAngle():Number{ return (Math.atan2(R.col1.y, R.col1.x)); } } }//package Box2D.Common.Math
Section 51
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function NegativeSelf():void{ x = -(x); y = -(y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function GetNegative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.Dot(this, _arg1.col1); y = b2Math.Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.IsValid(x)) && (b2Math.IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 52
//b2Vec3 (Box2D.Common.Math.b2Vec3) package Box2D.Common.Math { public class b2Vec3 { public var x:Number; public var y:Number; public var z:Number; public function b2Vec3(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function NegativeSelf():void{ x = -(x); y = -(y); z = -(z); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function Add(_arg1:b2Vec3):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function SetZero():void{ x = (y = (z = 0)); } public function GetNegative():b2Vec3{ return (new b2Vec3(-(x), -(y), -(z))); } public function SetV(_arg1:b2Vec3):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public function Copy():b2Vec3{ return (new b2Vec3(x, y, z)); } public function Subtract(_arg1:b2Vec3):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } } }//package Box2D.Common.Math
Section 53
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function get color():uint{ return ((((_r << 16) | (_g << 8)) | _b)); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 54
//b2internal (Box2D.Common.b2internal) package Box2D.Common { public namespace b2internal = "http://www.box2d.org/ns/b2internal"; }//package Box2D.Common
Section 55
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { public class b2Settings { public static const b2_polygonRadius:Number = (2 * b2_linearSlop); public static const b2_pi:Number = 3.14159265358979; public static const b2_aabbExtension:Number = 0.1; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_maxTranslationSquared:Number = 4; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_maxRotation:Number = 1.5707963267949; public static const b2_maxRotationSquared:Number = 2.46740110027234; public static const b2_angularSleepTolerance:Number = 0.0349065850398866; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxTOIJointsPerIsland:int = 32; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const b2_velocityThreshold:Number = 1; public static const USHRT_MAX:int = 0xFFFF; public static const VERSION:String = "2.1alpha"; public static const b2_toiSlop:Number = 0.04; public static const b2_maxTranslation:Number = 2; public static const b2_aabbMultiplier:Number = 2; public static const b2_maxLinearCorrection:Number = 0.2; public static function b2MixFriction(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt((_arg1 * _arg2))); } public static function b2MixRestitution(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2Assert(_arg1:Boolean):void{ if (!_arg1){ throw ("Assertion Failed"); }; } } }//package Box2D.Common
Section 56
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollideCircles(m_manifold, (m_fixtureA.GetShape() as b2CircleShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2CircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 57
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { b2internal var m_prev:b2Contact; b2internal var m_next:b2Contact; b2internal var m_oldManifold:b2Manifold; b2internal var m_manifold:b2Manifold; b2internal var m_fixtureB:b2Fixture; b2internal var m_fixtureA:b2Fixture; b2internal var m_nodeA:b2ContactEdge; b2internal var m_flags:uint; b2internal var m_toi:Number; b2internal var m_nodeB:b2ContactEdge; b2internal static var e_sensorFlag:uint = 1; private static var s_input:b2TOIInput = new b2TOIInput(); b2internal static var e_touchingFlag:uint = 16; b2internal static var e_enabledFlag:uint = 32; b2internal static var e_continuousFlag:uint = 2; b2internal static var e_toiFlag:uint = 8; b2internal static var e_islandFlag:uint = 4; b2internal static var e_filterFlag:uint = 64; public function b2Contact(){ m_nodeA = new b2ContactEdge(); m_nodeB = new b2ContactEdge(); m_manifold = new b2Manifold(); m_oldManifold = new b2Manifold(); super(); } public function IsContinuous():Boolean{ return (((m_flags & e_continuousFlag) == e_continuousFlag)); } public function GetNext():b2Contact{ return (m_next); } public function FlagForFiltering():void{ m_flags = (m_flags | e_filterFlag); } public function IsEnabled():Boolean{ return (((m_flags & e_enabledFlag) == e_enabledFlag)); } public function SetSensor(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_sensorFlag); } else { m_flags = (m_flags & ~(e_sensorFlag)); }; } public function SetEnabled(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_enabledFlag); } else { m_flags = (m_flags & ~(e_enabledFlag)); }; } public function IsSensor():Boolean{ return (((m_flags & e_sensorFlag) == e_sensorFlag)); } public function GetManifold():b2Manifold{ return (m_manifold); } b2internal function Update(_arg1:b2ContactListener):void{ var _local8:b2Shape; var _local9:b2Shape; var _local10:b2Transform; var _local11:b2Transform; var _local12:int; var _local13:b2ManifoldPoint; var _local14:b2ContactID; var _local15:int; var _local16:b2ManifoldPoint; var _local2:b2Manifold = m_oldManifold; m_oldManifold = m_manifold; m_manifold = _local2; m_flags = (m_flags | e_enabledFlag); var _local3:Boolean; var _local4 = ((m_flags & e_touchingFlag) == e_touchingFlag); var _local5:b2Body = m_fixtureA.m_body; var _local6:b2Body = m_fixtureB.m_body; var _local7:Boolean = m_fixtureA.m_aabb.TestOverlap(m_fixtureB.m_aabb); if ((m_flags & e_sensorFlag)){ if (_local7){ _local8 = m_fixtureA.GetShape(); _local9 = m_fixtureB.GetShape(); _local10 = _local5.GetTransform(); _local11 = _local6.GetTransform(); _local3 = b2Shape.TestOverlap(_local8, _local10, _local9, _local11); }; m_manifold.m_pointCount = 0; } else { if (((((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || (_local5.IsBullet()))) || (!((_local6.GetType() == b2Body.b2_dynamicBody))))) || (_local6.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); } else { m_flags = (m_flags & ~(e_continuousFlag)); }; if (_local7){ Evaluate(); _local3 = (m_manifold.m_pointCount > 0); _local12 = 0; while (_local12 < m_manifold.m_pointCount) { _local13 = m_manifold.m_points[_local12]; _local13.m_normalImpulse = 0; _local13.m_tangentImpulse = 0; _local14 = _local13.m_id; _local15 = 0; while (_local15 < m_oldManifold.m_pointCount) { _local16 = m_oldManifold.m_points[_local15]; if (_local16.m_id.key == _local14.key){ _local13.m_normalImpulse = _local16.m_normalImpulse; _local13.m_tangentImpulse = _local16.m_tangentImpulse; break; }; _local15++; }; _local12++; }; } else { m_manifold.m_pointCount = 0; }; if (_local3 != _local4){ _local5.SetAwake(true); _local6.SetAwake(true); }; }; if (_local3){ m_flags = (m_flags | e_touchingFlag); } else { m_flags = (m_flags & ~(e_touchingFlag)); }; if ((((_local4 == false)) && ((_local3 == true)))){ _arg1.BeginContact(this); }; if ((((_local4 == true)) && ((_local3 == false)))){ _arg1.EndContact(this); }; if ((m_flags & e_sensorFlag) == 0){ _arg1.PreSolve(this, m_oldManifold); }; } public function GetWorldManifold(_arg1:b2WorldManifold):void{ var _local2:b2Body = m_fixtureA.GetBody(); var _local3:b2Body = m_fixtureB.GetBody(); var _local4:b2Shape = m_fixtureA.GetShape(); var _local5:b2Shape = m_fixtureB.GetShape(); _arg1.Initialize(m_manifold, _local2.GetTransform(), _local4.m_radius, _local3.GetTransform(), _local5.m_radius); } public function IsTouching():Boolean{ return (((m_flags & e_touchingFlag) == e_touchingFlag)); } public function GetFixtureA():b2Fixture{ return (m_fixtureA); } public function GetFixtureB():b2Fixture{ return (m_fixtureB); } b2internal function Reset(_arg1:b2Fixture=null, _arg2:b2Fixture=null):void{ m_flags = e_enabledFlag; if (((!(_arg1)) || (!(_arg2)))){ m_fixtureA = null; m_fixtureB = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_sensorFlag); }; var _local3:b2Body = _arg1.GetBody(); var _local4:b2Body = _arg2.GetBody(); if (((((((!((_local3.GetType() == b2Body.b2_dynamicBody))) || (_local3.IsBullet()))) || (!((_local4.GetType() == b2Body.b2_dynamicBody))))) || (_local4.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); }; m_fixtureA = _arg1; m_fixtureB = _arg2; m_manifold.m_pointCount = 0; m_prev = null; m_next = null; m_nodeA.contact = null; m_nodeA.prev = null; m_nodeA.next = null; m_nodeA.other = null; m_nodeB.contact = null; m_nodeB.prev = null; m_nodeB.next = null; m_nodeB.other = null; } b2internal function ComputeTOI(_arg1:b2Sweep, _arg2:b2Sweep):Number{ s_input.proxyA.Set(m_fixtureA.GetShape()); s_input.proxyB.Set(m_fixtureB.GetShape()); s_input.sweepA = _arg1; s_input.sweepB = _arg2; s_input.tolerance = b2Settings.b2_linearSlop; return (b2TimeOfImpact.TimeOfImpact(s_input)); } b2internal function Evaluate():void{ } } }//package Box2D.Dynamics.Contacts
Section 58
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var type:int; public var normalMass:b2Mat22; public var K:b2Mat22; public var manifold:b2Manifold; public var radius:Number; public var bodyA:b2Body; public var bodyB:b2Body; public var points:Array; public var localPoint:b2Vec2; public var pointCount:int; public var normal:b2Vec2; public var restitution:Number; public var localPlaneNormal:b2Vec2; public var friction:Number; public function b2ContactConstraint(){ localPlaneNormal = new b2Vec2(); localPoint = new b2Vec2(); normal = new b2Vec2(); normalMass = new b2Mat22(); K = new b2Mat22(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 59
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var localPoint:b2Vec2; public var normalImpulse:Number; public var rA:b2Vec2; public var rB:b2Vec2; public var tangentImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var normalMass:Number; public var velocityBias:Number; public function b2ContactConstraintPoint(){ localPoint = new b2Vec2(); rA = new b2Vec2(); rB = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 60
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 61
//b2ContactFactory (Box2D.Dynamics.Contacts.b2ContactFactory) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2ContactFactory { private var m_allocator; private var m_registers:Array; public function b2ContactFactory(_arg1){ m_allocator = _arg1; InitializeRegisters(); } b2internal function InitializeRegisters():void{ var _local2:int; m_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { m_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { m_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); AddType(b2EdgeAndCircleContact.Create, b2EdgeAndCircleContact.Destroy, b2Shape.e_edgeShape, b2Shape.e_circleShape); AddType(b2PolyAndEdgeContact.Create, b2PolyAndEdgeContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_edgeShape); } public function Destroy(_arg1:b2Contact):void{ if (_arg1.m_manifold.m_pointCount > 0){ _arg1.m_fixtureA.m_body.SetAwake(true); _arg1.m_fixtureB.m_body.SetAwake(true); }; var _local2:int = _arg1.m_fixtureA.GetType(); var _local3:int = _arg1.m_fixtureB.GetType(); var _local4:b2ContactRegister = m_registers[_local2][_local3]; _local4.poolCount++; _arg1.m_next = _local4.pool; _local4.pool = _arg1; var _local5:Function = _local4.destroyFcn; _local5(_arg1, m_allocator); } b2internal function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ m_registers[_arg3][_arg4].createFcn = _arg1; m_registers[_arg3][_arg4].destroyFcn = _arg2; m_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ m_registers[_arg4][_arg3].createFcn = _arg1; m_registers[_arg4][_arg3].destroyFcn = _arg2; m_registers[_arg4][_arg3].primary = false; }; } public function Create(_arg1:b2Fixture, _arg2:b2Fixture):b2Contact{ var _local6:b2Contact; var _local3:int = _arg1.GetType(); var _local4:int = _arg2.GetType(); var _local5:b2ContactRegister = m_registers[_local3][_local4]; if (_local5.pool){ _local6 = _local5.pool; _local5.pool = _local6.m_next; _local5.poolCount--; _local6.Reset(_arg1, _arg2); return (_local6); }; var _local7:Function = _local5.createFcn; if (_local7 != null){ if (_local5.primary){ _local6 = _local7(m_allocator); _local6.Reset(_arg1, _arg2); return (_local6); }; _local6 = _local7(m_allocator); _local6.Reset(_arg2, _arg1); return (_local6); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 62
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var poolCount:int; public var createFcn:Function; public var destroyFcn:Function; public var pool:b2Contact; } }//package Box2D.Dynamics.Contacts
Section 63
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2ContactSolver { private var m_constraintCount:int; b2internal var m_constraints:Array; private var m_allocator; private var m_step:b2TimeStep; private static var s_psm:b2PositionSolverManifold = new b2PositionSolverManifold(); private static var s_worldManifold:b2WorldManifold = new b2WorldManifold(); public function b2ContactSolver(){ m_step = new b2TimeStep(); m_constraints = new Array(); super(); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; 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:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.bodyA; _local8 = _local6.bodyB; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.rA.x * _local22) - (_local20.rA.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.rB.x * _local22) - (_local20.rB.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2ContactConstraint; var _local5:b2Body; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:int; var _local13:b2ContactConstraintPoint; var _local14:b2Vec2; 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 _local2:Number = 0; var _local3:int; while (_local3 < m_constraintCount) { _local4 = m_constraints[_local3]; _local5 = _local4.bodyA; _local6 = _local4.bodyB; _local7 = (_local5.m_mass * _local5.m_invMass); _local8 = (_local5.m_mass * _local5.m_invI); _local9 = (_local6.m_mass * _local6.m_invMass); _local10 = (_local6.m_mass * _local6.m_invI); s_psm.Initialize(_local4); _local11 = s_psm.m_normal; _local12 = 0; while (_local12 < _local4.pointCount) { _local13 = _local4.points[_local12]; _local14 = s_psm.m_points[_local12]; _local15 = s_psm.m_separations[_local12]; _local16 = (_local14.x - _local5.m_sweep.c.x); _local17 = (_local14.y - _local5.m_sweep.c.y); _local18 = (_local14.x - _local6.m_sweep.c.x); _local19 = (_local14.y - _local6.m_sweep.c.y); _local2 = ((_local2 < _local15)) ? _local2 : _local15; _local20 = b2Math.Clamp((_arg1 * (_local15 + b2Settings.b2_linearSlop)), -(b2Settings.b2_maxLinearCorrection), 0); _local21 = (-(_local13.equalizedMass) * _local20); _local22 = (_local21 * _local11.x); _local23 = (_local21 * _local11.y); _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local7 * _local22)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local7 * _local23)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local8 * ((_local16 * _local23) - (_local17 * _local22)))); _local5.SynchronizeTransform(); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local9 * _local22)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local9 * _local23)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local10 * ((_local18 * _local23) - (_local19 * _local22)))); _local6.SynchronizeTransform(); _local12++; }; _local3++; }; return ((_local2 > (-1.5 * b2Settings.b2_linearSlop))); } public function Initialize(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4):void{ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:b2Fixture; var _local10:b2Fixture; var _local11:b2Shape; var _local12:b2Shape; var _local13:Number; var _local14:Number; var _local15:b2Body; var _local16:b2Body; var _local17:b2Manifold; 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:b2ContactConstraint; var _local29:uint; var _local30:b2ManifoldPoint; var _local31:b2ContactConstraintPoint; 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:Number; var _local47:Number; var _local48:b2ContactConstraintPoint; var _local49:b2ContactConstraintPoint; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local58:Number; var _local59:Number; var _local60:Number; var _local61:Number; m_step.Set(_arg1); m_allocator = _arg4; m_constraintCount = _arg3; while (m_constraints.length < m_constraintCount) { m_constraints[m_constraints.length] = new b2ContactConstraint(); }; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local9 = _local5.m_fixtureA; _local10 = _local5.m_fixtureB; _local11 = _local9.m_shape; _local12 = _local10.m_shape; _local13 = _local11.m_radius; _local14 = _local12.m_radius; _local15 = _local9.m_body; _local16 = _local10.m_body; _local17 = _local5.GetManifold(); _local18 = b2Settings.b2MixFriction(_local9.GetFriction(), _local10.GetFriction()); _local19 = b2Settings.b2MixRestitution(_local9.GetRestitution(), _local10.GetRestitution()); _local20 = _local15.m_linearVelocity.x; _local21 = _local15.m_linearVelocity.y; _local22 = _local16.m_linearVelocity.x; _local23 = _local16.m_linearVelocity.y; _local24 = _local15.m_angularVelocity; _local25 = _local16.m_angularVelocity; b2Settings.b2Assert((_local17.m_pointCount > 0)); s_worldManifold.Initialize(_local17, _local15.m_xf, _local13, _local16.m_xf, _local14); _local26 = s_worldManifold.m_normal.x; _local27 = s_worldManifold.m_normal.y; _local28 = m_constraints[_local6]; _local28.bodyA = _local15; _local28.bodyB = _local16; _local28.manifold = _local17; _local28.normal.x = _local26; _local28.normal.y = _local27; _local28.pointCount = _local17.m_pointCount; _local28.friction = _local18; _local28.restitution = _local19; _local28.localPlaneNormal.x = _local17.m_localPlaneNormal.x; _local28.localPlaneNormal.y = _local17.m_localPlaneNormal.y; _local28.localPoint.x = _local17.m_localPoint.x; _local28.localPoint.y = _local17.m_localPoint.y; _local28.radius = (_local13 + _local14); _local28.type = _local17.m_type; _local29 = 0; while (_local29 < _local28.pointCount) { _local30 = _local17.m_points[_local29]; _local31 = _local28.points[_local29]; _local31.normalImpulse = _local30.m_normalImpulse; _local31.tangentImpulse = _local30.m_tangentImpulse; _local31.localPoint.SetV(_local30.m_localPoint); _local32 = (_local31.rA.x = (s_worldManifold.m_points[_local29].x - _local15.m_sweep.c.x)); _local33 = (_local31.rA.y = (s_worldManifold.m_points[_local29].y - _local15.m_sweep.c.y)); _local34 = (_local31.rB.x = (s_worldManifold.m_points[_local29].x - _local16.m_sweep.c.x)); _local35 = (_local31.rB.y = (s_worldManifold.m_points[_local29].y - _local16.m_sweep.c.y)); _local36 = ((_local32 * _local27) - (_local33 * _local26)); _local37 = ((_local34 * _local27) - (_local35 * _local26)); _local36 = (_local36 * _local36); _local37 = (_local37 * _local37); _local38 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local36)) + (_local16.m_invI * _local37)); _local31.normalMass = (1 / _local38); _local39 = ((_local15.m_mass * _local15.m_invMass) + (_local16.m_mass * _local16.m_invMass)); _local39 = (_local39 + (((_local15.m_mass * _local15.m_invI) * _local36) + ((_local16.m_mass * _local16.m_invI) * _local37))); _local31.equalizedMass = (1 / _local39); _local40 = _local27; _local41 = -(_local26); _local42 = ((_local32 * _local41) - (_local33 * _local40)); _local43 = ((_local34 * _local41) - (_local35 * _local40)); _local42 = (_local42 * _local42); _local43 = (_local43 * _local43); _local44 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local42)) + (_local16.m_invI * _local43)); _local31.tangentMass = (1 / _local44); _local31.velocityBias = 0; _local45 = (((_local22 + (-(_local25) * _local35)) - _local20) - (-(_local24) * _local33)); _local46 = (((_local23 + (_local25 * _local34)) - _local21) - (_local24 * _local32)); _local47 = ((_local28.normal.x * _local45) + (_local28.normal.y * _local46)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local31.velocityBias = (_local31.velocityBias + (-(_local28.restitution) * _local47)); }; _local29++; }; if (_local28.pointCount == 2){ _local48 = _local28.points[0]; _local49 = _local28.points[1]; _local50 = _local15.m_invMass; _local51 = _local15.m_invI; _local52 = _local16.m_invMass; _local53 = _local16.m_invI; _local54 = ((_local48.rA.x * _local27) - (_local48.rA.y * _local26)); _local55 = ((_local48.rB.x * _local27) - (_local48.rB.y * _local26)); _local56 = ((_local49.rA.x * _local27) - (_local49.rA.y * _local26)); _local57 = ((_local49.rB.x * _local27) - (_local49.rB.y * _local26)); _local58 = (((_local50 + _local52) + ((_local51 * _local54) * _local54)) + ((_local53 * _local55) * _local55)); _local59 = (((_local50 + _local52) + ((_local51 * _local56) * _local56)) + ((_local53 * _local57) * _local57)); _local60 = (((_local50 + _local52) + ((_local51 * _local54) * _local56)) + ((_local53 * _local55) * _local57)); _local61 = 100; if ((_local58 * _local58) < (_local61 * ((_local58 * _local59) - (_local60 * _local60)))){ _local28.K.col1.Set(_local58, _local60); _local28.K.col2.Set(_local60, _local59); _local28.K.GetInverse(_local28.normalMass); } else { _local28.pointCount = 1; }; }; _local6++; }; } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:b2Mat22; var _local23:b2Vec2; var _local25:b2ContactConstraint; var _local26:b2Body; var _local27:b2Body; var _local28:Number; var _local29:Number; var _local30:b2Vec2; var _local31:b2Vec2; 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:int; var _local43:b2ContactConstraintPoint; var _local44:b2ContactConstraintPoint; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:Number; var _local49:Number; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local24:int; while (_local24 < m_constraintCount) { _local25 = m_constraints[_local24]; _local26 = _local25.bodyA; _local27 = _local25.bodyB; _local28 = _local26.m_angularVelocity; _local29 = _local27.m_angularVelocity; _local30 = _local26.m_linearVelocity; _local31 = _local27.m_linearVelocity; _local32 = _local26.m_invMass; _local33 = _local26.m_invI; _local34 = _local27.m_invMass; _local35 = _local27.m_invI; _local36 = _local25.normal.x; _local37 = _local25.normal.y; _local38 = _local37; _local39 = -(_local36); _local40 = _local25.friction; _local1 = 0; while (_local1 < _local25.pointCount) { _local2 = _local25.points[_local1]; _local7 = (((_local31.x - (_local29 * _local2.rB.y)) - _local30.x) + (_local28 * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local10 = ((_local7 * _local38) + (_local8 * _local39)); _local11 = (_local2.tangentMass * -(_local10)); _local12 = (_local40 * _local2.normalImpulse); _local13 = b2Math.Clamp((_local2.tangentImpulse + _local11), -(_local12), _local12); _local11 = (_local13 - _local2.tangentImpulse); _local14 = (_local11 * _local38); _local15 = (_local11 * _local39); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.tangentImpulse = _local13; _local1++; }; _local42 = _local25.pointCount; if (_local25.pointCount == 1){ _local2 = _local25.points[0]; _local7 = (((_local31.x + (-(_local29) * _local2.rB.y)) - _local30.x) - (-(_local28) * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local9 = ((_local7 * _local36) + (_local8 * _local37)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local13 = (_local2.normalImpulse + _local11); _local13 = ((_local13 > 0)) ? _local13 : 0; _local11 = (_local13 - _local2.normalImpulse); _local14 = (_local11 * _local36); _local15 = (_local11 * _local37); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.normalImpulse = _local13; } else { _local43 = _local25.points[0]; _local44 = _local25.points[1]; _local45 = _local43.normalImpulse; _local46 = _local44.normalImpulse; _local47 = (((_local31.x - (_local29 * _local43.rB.y)) - _local30.x) + (_local28 * _local43.rA.y)); _local48 = (((_local31.y + (_local29 * _local43.rB.x)) - _local30.y) - (_local28 * _local43.rA.x)); _local49 = (((_local31.x - (_local29 * _local44.rB.y)) - _local30.x) + (_local28 * _local44.rA.y)); _local50 = (((_local31.y + (_local29 * _local44.rB.x)) - _local30.y) - (_local28 * _local44.rA.x)); _local51 = ((_local47 * _local36) + (_local48 * _local37)); _local52 = ((_local49 * _local36) + (_local50 * _local37)); _local53 = (_local51 - _local43.velocityBias); _local54 = (_local52 - _local44.velocityBias); _local22 = _local25.K; _local53 = (_local53 - ((_local22.col1.x * _local45) + (_local22.col2.x * _local46))); _local54 = (_local54 - ((_local22.col1.y * _local45) + (_local22.col2.y * _local46))); _local55 = 0.001; while (true) { _local22 = _local25.normalMass; _local56 = -(((_local22.col1.x * _local53) + (_local22.col2.x * _local54))); _local57 = -(((_local22.col1.y * _local53) + (_local22.col2.y * _local54))); if ((((_local56 >= 0)) && ((_local57 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = (-(_local43.normalMass) * _local53); _local57 = 0; _local51 = 0; _local52 = ((_local25.K.col1.y * _local56) + _local54); if ((((_local56 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = (-(_local44.normalMass) * _local54); _local51 = ((_local25.K.col2.x * _local57) + _local53); _local52 = 0; if ((((_local57 >= 0)) && ((_local51 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = 0; _local51 = _local53; _local52 = _local54; if ((((_local51 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; break; }; }; _local26.m_angularVelocity = _local28; _local27.m_angularVelocity = _local29; _local24++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.m_points[_local4]; _local6 = _local2.points[_local4]; _local5.m_normalImpulse = _local6.normalImpulse; _local5.m_tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 64
//b2EdgeAndCircleContact (Box2D.Dynamics.Contacts.b2EdgeAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2EdgeAndCircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollideEdgeAndCircle(m_manifold, (m_fixtureA.GetShape() as b2EdgeShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } private function b2CollideEdgeAndCircle(_arg1:b2Manifold, _arg2:b2EdgeShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2EdgeAndCircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 65
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.m_body; var _local2:b2Body = m_fixtureB.m_body; b2Collision.CollidePolygonAndCircle(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_circleShape)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndCircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 66
//b2PolyAndEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndEdgeContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndEdgeContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollidePolyAndEdge(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2EdgeShape), _local2.m_xf); } private function b2CollidePolyAndEdge(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2EdgeShape, _arg5:b2Transform):void{ } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_edgeShape)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndEdgeContact)); } } }//package Box2D.Dynamics.Contacts
Section 67
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollidePolygons(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2PolygonShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolygonContact)); } } }//package Box2D.Dynamics.Contacts
Section 68
//b2PositionSolverManifold (Box2D.Dynamics.Contacts.b2PositionSolverManifold) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; class b2PositionSolverManifold { public var m_points:Array; public var m_normal:b2Vec2; public var m_separations:Array; private static var circlePointA:b2Vec2 = new b2Vec2(); private static var circlePointB:b2Vec2 = new b2Vec2(); function b2PositionSolverManifold(){ m_normal = new b2Vec2(); m_separations = new Array(b2Settings.b2_maxManifoldPoints); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2ContactConstraint):void{ var _local2:int; var _local3:Number; var _local4:Number; var _local5:b2Mat22; var _local6:b2Vec2; 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; b2Settings.b2Assert((_arg1.pointCount > 0)); switch (_arg1.type){ case b2Manifold.e_circles: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local9 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local10 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.points[0].localPoint; _local11 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local12 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local16 = Math.sqrt(_local15); m_normal.x = (_local13 / _local16); m_normal.y = (_local14 / _local16); } else { m_normal.x = 1; m_normal.y = 0; }; m_points[0].x = (0.5 * (_local9 + _local11)); m_points[0].y = (0.5 * (_local10 + _local12)); m_separations[0] = (((_local13 * m_normal.x) + (_local14 * m_normal.y)) - _arg1.radius); break; case b2Manifold.e_faceA: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].x = _local3; m_points[_local2].y = _local4; _local2++; }; break; case b2Manifold.e_faceB: _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyA.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].Set(_local3, _local4); _local2++; }; m_normal.x = (m_normal.x * -1); m_normal.y = (m_normal.y * -1); break; }; } } }//package Box2D.Dynamics.Contacts
Section 69
//b2Controller (Box2D.Dynamics.Controllers.b2Controller) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Controller { b2internal var m_world:b2World; b2internal var m_prev:b2Controller; b2internal var m_next:b2Controller; protected var m_bodyList:b2ControllerEdge; protected var m_bodyCount:int; public function AddBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = new b2ControllerEdge(); _local2.controller = this; _local2.body = _arg1; _local2.nextBody = m_bodyList; _local2.prevBody = null; m_bodyList = _local2; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2; }; m_bodyCount++; _local2.nextController = _arg1.m_controllerList; _local2.prevController = null; _arg1.m_controllerList = _local2; if (_local2.nextController){ _local2.nextController.prevController = _local2; }; _arg1.m_controllerCount++; } public function Draw(_arg1:b2DebugDraw):void{ } public function RemoveBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = _arg1.m_controllerList; while (((_local2) && (!((_local2.controller == this))))) { _local2 = _local2.nextController; }; if (_local2.prevBody){ _local2.prevBody.nextBody = _local2.nextBody; }; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2.prevBody; }; if (_local2.nextController){ _local2.nextController.prevController = _local2.prevController; }; if (_local2.prevController){ _local2.prevController.nextController = _local2.nextController; }; if (m_bodyList == _local2){ m_bodyList = _local2.nextBody; }; if (_arg1.m_controllerList == _local2){ _arg1.m_controllerList = _local2.nextController; }; _arg1.m_controllerCount--; m_bodyCount--; } public function GetNext():b2Controller{ return (m_next); } public function Clear():void{ while (m_bodyList) { RemoveBody(m_bodyList.body); }; } public function Step(_arg1:b2TimeStep):void{ } public function GetBodyList():b2ControllerEdge{ return (m_bodyList); } public function GetWorld():b2World{ return (m_world); } } }//package Box2D.Dynamics.Controllers
Section 70
//b2ControllerEdge (Box2D.Dynamics.Controllers.b2ControllerEdge) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; public class b2ControllerEdge { public var body:b2Body; public var nextBody:b2ControllerEdge; public var nextController:b2ControllerEdge; public var prevBody:b2ControllerEdge; public var prevController:b2ControllerEdge; public var controller:b2Controller; } }//package Box2D.Dynamics.Controllers
Section 71
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_length:Number; private var m_mass:Number; private var m_bias:Number; private var m_gamma:Number; private var m_u:b2Vec2; private var m_impulse:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetLength(_arg1:Number):void{ m_length = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local7:Number; var _local9:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = ((_local13)!=0) ? (1 / _local13) : 0; if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (_arg1.dt * (_local16 + (_arg1.dt * _local17))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (_local13 + m_gamma); m_mass = ((m_mass)!=0) ? (1 / m_mass) : 0; }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } public function GetLength():Number{ return (m_length); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u.x), ((_arg1 * m_impulse) * m_u.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (((_local4.m_sweep.c.x + _local8) - _local3.m_sweep.c.x) - _local5); var _local11:Number = (((_local4.m_sweep.c.y + _local9) - _local3.m_sweep.c.y) - _local6); var _local12:Number = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local12); _local11 = (_local11 / _local12); var _local13:Number = (_local12 - m_length); _local13 = b2Math.Clamp(_local13, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local14:Number = (-(m_mass) * _local13); m_u.Set(_local10, _local11); var _local15:Number = (_local14 * m_u.x); var _local16:Number = (_local14 * m_u.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local5 * _local16) - (_local6 * _local15)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local15)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local16)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((b2Math.Abs(_local13) < b2Settings.b2_linearSlop)); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } public function GetDampingRatio():Number{ return (m_dampingRatio); } } }//package Box2D.Dynamics.Joints
Section 72
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchorB:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 73
//b2FrictionJoint (Box2D.Dynamics.Joints.b2FrictionJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2FrictionJoint extends b2Joint { private var m_maxTorque:Number; private var m_angularImpulse:Number; public var m_linearMass:b2Mat22; private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; public var m_angularMass:Number; private var m_maxForce:Number; private var m_linearImpulse:b2Vec2; public function b2FrictionJoint(_arg1:b2FrictionJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_linearMass = new b2Mat22(); m_linearImpulse = new b2Vec2(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_linearMass.SetZero(); m_angularMass = 0; m_linearImpulse.SetZero(); m_angularImpulse = 0; m_maxForce = _arg1.maxForce; m_maxTorque = _arg1.maxTorque; } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local10:Number; var _local12:Number; var _local13:Number; var _local14:b2Mat22; var _local15:b2Vec2; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; _local10 = _local4.m_invMass; var _local11:Number = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; _local14 = new b2Mat22(); _local14.col1.x = (_local10 + _local11); _local14.col2.x = 0; _local14.col1.y = 0; _local14.col2.y = (_local10 + _local11); _local14.col1.x = (_local14.col1.x + ((_local12 * _local7) * _local7)); _local14.col2.x = (_local14.col2.x + ((-(_local12) * _local6) * _local7)); _local14.col1.y = (_local14.col1.y + ((-(_local12) * _local6) * _local7)); _local14.col2.y = (_local14.col2.y + ((_local12 * _local6) * _local6)); _local14.col1.x = (_local14.col1.x + ((_local13 * _local9) * _local9)); _local14.col2.x = (_local14.col2.x + ((-(_local13) * _local8) * _local9)); _local14.col1.y = (_local14.col1.y + ((-(_local13) * _local8) * _local9)); _local14.col2.y = (_local14.col2.y + ((_local13 * _local8) * _local8)); _local14.GetInverse(m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > 0){ m_angularMass = (1 / m_angularMass); }; if (_arg1.warmStarting){ m_linearImpulse.x = (m_linearImpulse.x * _arg1.dtRatio); m_linearImpulse.y = (m_linearImpulse.y * _arg1.dtRatio); m_angularImpulse = (m_angularImpulse * _arg1.dtRatio); _local15 = m_linearImpulse; _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * _local15.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * _local15.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * _local15.y) - (_local7 * _local15.x)) + m_angularImpulse))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * _local15.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * _local15.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * _local15.y) - (_local9 * _local15.x)) + m_angularImpulse))); } else { m_linearImpulse.SetZero(); m_angularImpulse = 0; }; } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_angularImpulse)); } public function SetMaxTorque(_arg1:Number):void{ m_maxTorque = _arg1; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } public function GetMaxTorque():Number{ return (m_maxTorque); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local18:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local19:Number = (_local9 - _local7); var _local20:Number = (-(m_angularMass) * _local19); var _local21:Number = m_angularImpulse; _local18 = (_arg1.dt * m_maxTorque); m_angularImpulse = b2Math.Clamp((m_angularImpulse + _local20), -(_local18), _local18); _local20 = (m_angularImpulse - _local21); _local7 = (_local7 - (_local12 * _local20)); _local9 = (_local9 + (_local13 * _local20)); var _local22:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local23:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local24:b2Vec2 = b2Math.MulMV(m_linearMass, new b2Vec2(-(_local22), -(_local23))); var _local25:b2Vec2 = m_linearImpulse.Copy(); m_linearImpulse.Add(_local24); _local18 = (_arg1.dt * m_maxForce); if (m_linearImpulse.LengthSquared() > (_local18 * _local18)){ m_linearImpulse.Normalize(); m_linearImpulse.Multiply(_local18); }; _local24 = b2Math.SubtractVV(m_linearImpulse, _local25); _local6.x = (_local6.x - (_local10 * _local24.x)); _local6.y = (_local6.y - (_local10 * _local24.y)); _local7 = (_local7 - (_local12 * ((_local14 * _local24.y) - (_local15 * _local24.x)))); _local8.x = (_local8.x + (_local11 * _local24.x)); _local8.y = (_local8.y + (_local11 * _local24.y)); _local9 = (_local9 + (_local13 * ((_local16 * _local24.y) - (_local17 * _local24.x)))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_linearImpulse.x), (_arg1 * m_linearImpulse.y))); } public function GetMaxForce():Number{ return (m_maxForce); } } }//package Box2D.Dynamics.Joints
Section 74
//b2FrictionJointDef (Box2D.Dynamics.Joints.b2FrictionJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2FrictionJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var maxTorque:Number; public var maxForce:Number; public var localAnchorB:b2Vec2; public function b2FrictionJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_frictionJoint; maxForce = 0; maxTorque = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); } } }//package Box2D.Dynamics.Joints
Section 75
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { private var m_ground2:b2Body; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_ratio:Number; private var m_mass:Number; private var m_impulse:Number; private var m_prismatic2:b2PrismaticJoint; private var m_ground1:b2Body; private var m_revolute1:b2RevoluteJoint; private var m_revolute2:b2RevoluteJoint; private var m_prismatic1:b2PrismaticJoint; private var m_constant:Number; private var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.GetBodyA(); m_bodyA = _arg1.joint1.GetBodyB(); if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.GetBodyA(); m_bodyB = _arg1.joint2.GetBodyB(); if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_impulse = 0; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; _local4 = m_bodyA; var _local5:b2Body = m_bodyB; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angularA = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linearA.Set(-(_local6), -(_local7)); m_J.angularA = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angularB = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linearB.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angularB = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = ((_local14 > 0)) ? (1 / _local14) : 0; if (_arg1.warmStarting){ _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * m_impulse) * m_J.linearA.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * m_impulse) * m_J.linearA.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * m_impulse) * m_J.angularA)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * m_impulse) * m_J.linearB.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * m_impulse) * m_J.linearB.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * m_impulse) * m_J.angularB)); } else { m_impulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = (-(m_mass) * _local4); m_impulse = (m_impulse + _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local5) * m_J.linearA.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local5) * m_J.linearA.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local5) * m_J.angularA)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local5) * m_J.linearB.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local5) * m_J.linearB.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local5) * m_J.angularB)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function SetRatio(_arg1:Number):void{ m_ratio = _arg1; } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_J.linearB.x), ((_arg1 * m_impulse) * m_J.linearB.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local5:Number; var _local6:Number; var _local2:Number = 0; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; if (m_revolute1){ _local5 = m_revolute1.GetJointAngle(); } else { _local5 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local6 = m_revolute2.GetJointAngle(); } else { _local6 = m_prismatic2.GetJointTranslation(); }; var _local7:Number = (m_constant - (_local5 + (m_ratio * _local6))); var _local8:Number = (-(m_mass) * _local7); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local8) * m_J.linearA.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local8) * m_J.linearA.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local8) * m_J.angularA)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local4.m_invMass * _local8) * m_J.linearB.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local4.m_invMass * _local8) * m_J.linearB.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local4.m_invI * _local8) * m_J.angularB)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((_local2 < b2Settings.b2_linearSlop)); } override public function GetReactionTorque(_arg1:Number):Number{ var _local2:b2Mat22 = m_bodyB.m_xf.R; var _local3:Number = (m_localAnchor1.x - m_bodyB.m_sweep.localCenter.x); var _local4:Number = (m_localAnchor1.y - m_bodyB.m_sweep.localCenter.y); var _local5:Number = ((_local2.col1.x * _local3) + (_local2.col2.x * _local4)); _local4 = ((_local2.col1.y * _local3) + (_local2.col2.y * _local4)); _local3 = _local5; var _local6:Number = (m_impulse * m_J.linearB.x); var _local7:Number = (m_impulse * m_J.linearB.y); return ((_arg1 * (((m_impulse * m_J.angularB) - (_local3 * _local7)) + (_local4 * _local6)))); } public function GetRatio():Number{ return (m_ratio); } } }//package Box2D.Dynamics.Joints
Section 76
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 77
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var angularB:Number; public var linearA:b2Vec2; public var linearB:b2Vec2; public var angularA:Number; public function b2Jacobian(){ linearA = new b2Vec2(); linearB = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linearA.SetV(_arg1); angularA = _arg2; linearB.SetV(_arg3); angularB = _arg4; } public function SetZero():void{ linearA.SetZero(); angularA = 0; linearB.SetZero(); angularB = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linearA.x * _arg1.x) + (linearA.y * _arg1.y)) + (angularA * _arg2)) + ((linearB.x * _arg3.x) + (linearB.y * _arg3.y))) + (angularB * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 78
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Joint { b2internal var m_islandFlag:Boolean; b2internal var m_prev:b2Joint; b2internal var m_invMassA:Number; b2internal var m_localCenterA:b2Vec2; b2internal var m_type:int; b2internal var m_bodyA:b2Body; b2internal var m_bodyB:b2Body; b2internal var m_edgeA:b2JointEdge; b2internal var m_edgeB:b2JointEdge; b2internal var m_next:b2Joint; private var m_userData; b2internal var m_invMassB:Number; b2internal var m_localCenterB:b2Vec2; b2internal var m_invIB:Number; b2internal var m_collideConnected:Boolean; b2internal var m_invIA:Number; b2internal static const e_prismaticJoint:int = 2; b2internal static const e_weldJoint:int = 8; b2internal static const e_equalLimits:int = 3; b2internal static const e_frictionJoint:int = 9; b2internal static const e_lineJoint:int = 7; b2internal static const e_gearJoint:int = 6; b2internal static const e_atUpperLimit:int = 2; b2internal static const e_atLowerLimit:int = 1; b2internal static const e_revoluteJoint:int = 1; b2internal static const e_inactiveLimit:int = 0; b2internal static const e_pulleyJoint:int = 4; b2internal static const e_unknownJoint:int = 0; b2internal static const e_distanceJoint:int = 3; b2internal static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_edgeA = new b2JointEdge(); m_edgeB = new b2JointEdge(); m_localCenterA = new b2Vec2(); m_localCenterB = new b2Vec2(); super(); b2Settings.b2Assert(!((_arg1.bodyA == _arg1.bodyB))); m_type = _arg1.type; m_prev = null; m_next = null; m_bodyA = _arg1.bodyA; m_bodyB = _arg1.bodyB; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetBodyB():b2Body{ return (m_bodyB); } public function GetNext():b2Joint{ return (m_next); } public function GetAnchorA():b2Vec2{ return (null); } public function GetType():int{ return (m_type); } public function GetAnchorB():b2Vec2{ return (null); } public function GetBodyA():b2Body{ return (m_bodyA); } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (false); } public function IsActive():Boolean{ return (((m_bodyA.IsActive()) && (m_bodyB.IsActive()))); } public function SetUserData(_arg1):void{ m_userData = _arg1; } b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function FinalizeVelocityConstraints():void{ } b2internal static function Destroy(_arg1:b2Joint, _arg2):void{ } b2internal static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; case e_lineJoint: _local3 = new b2LineJoint((_arg1 as b2LineJointDef)); break; case e_weldJoint: _local3 = new b2WeldJoint((_arg1 as b2WeldJointDef)); break; case e_frictionJoint: _local3 = new b2FrictionJoint((_arg1 as b2FrictionJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 79
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var bodyB:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var bodyA:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; bodyA = null; bodyB = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 80
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 81
//b2LineJoint (Box2D.Dynamics.Joints.b2LineJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2LineJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_impulse:b2Vec2; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat22; public function b2LineJoint(_arg1:b2LineJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat22(); m_impulse = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:b2Vec2; var _local19:b2Vec2; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local13 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local14 = (m_motorMass * (m_motorSpeed - _local13)); _local15 = m_motorImpulse; _local16 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local14), -(_local16), _local16); _local14 = (m_motorImpulse - _local15); _local8 = (_local14 * m_axis.x); _local9 = (_local14 * m_axis.y); _local10 = (_local14 * m_a1); _local11 = (_local14 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local17 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local18 = m_impulse.Copy(); _local19 = m_K.Solve(new b2Vec2(), -(_local12), -(_local17)); m_impulse.Add(_local19); if (m_limitState == e_atLowerLimit){ m_impulse.y = b2Math.Max(m_impulse.y, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.y = b2Math.Min(m_impulse.y, 0); }; }; _local20 = (-(_local12) - ((m_impulse.y - _local18.y) * m_K.col2.x)); if (m_K.col1.x != 0){ _local21 = ((_local20 / m_K.col1.x) + _local18.x); } else { _local21 = _local18.x; }; m_impulse.x = _local21; _local19.x = (m_impulse.x - _local18.x); _local19.y = (m_impulse.y - _local18.y); _local8 = ((_local19.x * m_perp.x) + (_local19.y * m_axis.x)); _local9 = ((_local19.x * m_perp.y) + (_local19.y * m_axis.y)); _local10 = ((_local19.x * m_s1) + (_local19.y * m_a1)); _local11 = ((_local19.x * m_s2) + (_local19.y * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { if (m_K.col1.x != 0){ _local22 = (-(_local12) / m_K.col1.x); } else { _local22 = 0; }; m_impulse.x = (m_impulse.x + _local22); _local8 = (_local22 * m_perp.x); _local9 = (_local22 * m_perp.y); _local10 = (_local22 * m_s1); _local11 = (_local22 * m_s2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local34 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local34, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local34); _local18 = true; } else { if (_local34 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local34 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local34); _local18 = true; } else { if (_local34 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local34 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local34 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec2 = new b2Vec2(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = 0; if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve(_local28, -(_local29), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local35 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); if (_local35 != 0){ _local36 = (-(_local29) / _local35); } else { _local36 = 0; }; _local28.x = _local36; _local28.y = 0; }; var _local30:Number = ((_local28.x * m_perp.x) + (_local28.y * m_axis.x)); var _local31:Number = ((_local28.x * m_perp.y) + (_local28.y * m_axis.y)); var _local32:Number = ((_local28.x * m_s1) + (_local28.y * m_a1)); var _local33:Number = ((_local28.x * m_s2) + (_local28.y * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local30)); _local6.y = (_local6.y - (m_invMassA * _local31)); _local7 = (_local7 - (m_invIA * _local32)); _local8.x = (_local8.x + (m_invMassB * _local30)); _local8.y = (_local8.y + (m_invMassB * _local31)); _local9 = (_local9 + (m_invIB * _local33)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); m_motorMass = ((m_motorMass > Number.MIN_VALUE)) ? (1 / m_motorMass) : 0; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.y = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.y = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.y = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y)); _local21 = ((m_impulse.x * m_s1) + ((m_motorImpulse + m_impulse.y) * m_a1)); _local22 = ((m_impulse.x * m_s2) + ((m_motorImpulse + m_impulse.y) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetMaxMotorForce():Number{ return (m_maxMotorForce); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 82
//b2LineJointDef (Box2D.Dynamics.Joints.b2LineJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2LineJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var upperTranslation:Number; public var enableMotor:Boolean; public var localAxisA:b2Vec2; public var enableLimit:Boolean; public var motorSpeed:Number; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2LineJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_lineJoint; localAxisA.Set(1, 0); enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); } } }//package Box2D.Dynamics.Joints
Section 83
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K2:b2Mat22; private var K1:b2Mat22; private var m_beta:Number; private var K:b2Mat22; private var m_target:b2Vec2; private var m_gamma:Number; private var m_mass:b2Mat22; private var m_impulse:b2Vec2; private var m_localAnchor:b2Vec2; private var m_C:b2Vec2; private var m_maxForce:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local4:b2Mat22; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_bodyB.m_xf.position.x); var _local3:Number = (m_target.y - m_bodyB.m_xf.position.y); _local4 = m_bodyB.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_beta = 0; m_gamma = 0; } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function SetTarget(_arg1:b2Vec2):void{ if (m_bodyB.IsAwake() == false){ m_bodyB.SetAwake(true); }; m_target = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local7:b2Mat22; var _local11:Number; var _local12:Number; var _local2:b2Body = m_bodyB; var _local3:Number = _local2.GetMass(); var _local4:Number = ((2 * Math.PI) * m_frequencyHz); var _local5:Number = (((2 * _local3) * m_dampingRatio) * _local4); var _local6:Number = ((_local3 * _local4) * _local4); m_gamma = (_arg1.dt * (_local5 + (_arg1.dt * _local6))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_beta = ((_arg1.dt * _local6) * m_gamma); _local7 = _local2.m_xf.R; var _local8:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local10:Number = ((_local7.col1.x * _local8) + (_local7.col2.x * _local9)); _local9 = ((_local7.col1.y * _local8) + (_local7.col2.y * _local9)); _local8 = _local10; _local11 = _local2.m_invMass; _local12 = _local2.m_invI; K1.col1.x = _local11; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local11; K2.col1.x = ((_local12 * _local9) * _local9); K2.col2.x = ((-(_local12) * _local8) * _local9); K2.col1.y = ((-(_local12) * _local8) * _local9); K2.col2.y = ((_local12 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.GetInverse(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local8) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local9) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local11 * m_impulse.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local11 * m_impulse.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * ((_local8 * m_impulse.y) - (_local9 * m_impulse.x)))); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor)); } override public function GetAnchorA():b2Vec2{ return (m_target); } public function GetTarget():b2Vec2{ return (m_target); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_bodyB; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + (m_beta * m_C.x)) + (m_gamma * m_impulse.x)); _local5 = ((_local9 + (m_beta * m_C.y)) + (m_gamma * m_impulse.y)); var _local10:Number = -(((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = -(((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = (_arg1.dt * m_maxForce); if (m_impulse.LengthSquared() > (_local14 * _local14)){ m_impulse.Multiply((_local14 / m_impulse.Length())); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local10)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local11)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local11) - (_local7 * _local10)))); } public function GetMaxForce():Number{ return (m_maxForce); } public function GetDampingRatio():Number{ return (m_dampingRatio); } } }//package Box2D.Dynamics.Joints
Section 84
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; } } }//package Box2D.Dynamics.Joints
Section 85
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_refAngle:Number; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat33; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat33(); m_impulse = new b2Vec3(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Vec3; var _local20:b2Vec3; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local14 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local15 = (m_motorMass * (m_motorSpeed - _local14)); _local16 = m_motorImpulse; _local17 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local15), -(_local17), _local17); _local15 = (m_motorImpulse - _local16); _local8 = (_local15 * m_axis.x); _local9 = (_local15 * m_axis.y); _local10 = (_local15 * m_a1); _local11 = (_local15 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); var _local13:Number = (_local7 - _local5); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local19 = m_impulse.Copy(); _local20 = m_K.Solve33(new b2Vec3(), -(_local12), -(_local13), -(_local18)); m_impulse.Add(_local20); if (m_limitState == e_atLowerLimit){ m_impulse.z = b2Math.Max(m_impulse.z, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.z = b2Math.Min(m_impulse.z, 0); }; }; _local21 = (-(_local12) - ((m_impulse.z - _local19.z) * m_K.col3.x)); _local22 = (-(_local13) - ((m_impulse.z - _local19.z) * m_K.col3.y)); _local23 = m_K.Solve22(new b2Vec2(), _local21, _local22); m_K.Solve22(new b2Vec2(), _local21, _local22).x = (_local23.x + _local19.x); _local23.y = (_local23.y + _local19.y); m_impulse.x = _local23.x; m_impulse.y = _local23.y; _local20.x = (m_impulse.x - _local19.x); _local20.y = (m_impulse.y - _local19.y); _local20.z = (m_impulse.z - _local19.z); _local8 = ((_local20.x * m_perp.x) + (_local20.z * m_axis.x)); _local9 = ((_local20.x * m_perp.y) + (_local20.z * m_axis.y)); _local10 = (((_local20.x * m_s1) + _local20.y) + (_local20.z * m_a1)); _local11 = (((_local20.x * m_s2) + _local20.y) + (_local20.z * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { _local24 = m_K.Solve22(new b2Vec2(), -(_local12), -(_local13)); m_impulse.x = (m_impulse.x + _local24.x); m_impulse.y = (m_impulse.y + _local24.y); _local8 = (_local24.x * m_perp.x); _local9 = (_local24.x * m_perp.y); _local10 = ((_local24.x * m_s1) + _local24.y); _local11 = ((_local24.x * m_s2) + _local24.y); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:b2Vec2; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local35 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local35, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local35); _local18 = true; } else { if (_local35 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local35 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local35); _local18 = true; } else { if (_local35 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local35 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local35 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec3 = new b2Vec3(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); var _local30:Number = ((_local9 - _local7) - m_refAngle); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = b2Math.Abs(_local30); if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = ((_local14 * m_s1) + (_local15 * m_s2)); m_K.col1.z = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local14 + _local15); m_K.col2.z = ((_local14 * m_a1) + (_local15 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve33(_local28, -(_local29), -(_local30), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local36 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); _local37 = ((_local14 * m_s1) + (_local15 * m_s2)); _local38 = (_local14 + _local15); m_K.col1.Set(_local36, _local37, 0); m_K.col2.Set(_local37, _local38, 0); _local39 = m_K.Solve22(new b2Vec2(), -(_local29), -(_local30)); _local28.x = _local39.x; _local28.y = _local39.y; _local28.z = 0; }; var _local31:Number = ((_local28.x * m_perp.x) + (_local28.z * m_axis.x)); var _local32:Number = ((_local28.x * m_perp.y) + (_local28.z * m_axis.y)); var _local33:Number = (((_local28.x * m_s1) + _local28.y) + (_local28.z * m_a1)); var _local34:Number = (((_local28.x * m_s2) + _local28.y) + (_local28.z * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local31)); _local6.y = (_local6.y - (m_invMassA * _local32)); _local7 = (_local7 - (m_invIA * _local33)); _local8.x = (_local8.x + (m_invMassB * _local31)); _local8.y = (_local8.y + (m_invMassB * _local32)); _local9 = (_local9 + (m_invIB * _local34)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); if (m_motorMass > Number.MIN_VALUE){ m_motorMass = (1 / m_motorMass); }; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = ((_local16 * m_s1) + (_local17 * m_s2)); m_K.col1.z = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local16 + _local17); m_K.col2.z = ((_local16 * m_a1) + (_local17 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.z = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.z = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y)); _local21 = (((m_impulse.x * m_s1) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a1)); _local22 = (((m_impulse.x * m_s2) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 86
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var motorSpeed:Number; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public var upperTranslation:Number; public var lowerTranslation:Number; public var localAxisA:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public function b2PrismaticJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxisA.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 87
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { private var m_limitState1:int; private var m_limitState2:int; private var m_ground:b2Body; private var m_maxLength2:Number; private var m_maxLength1:Number; private var m_impulse:Number; private var m_constant:Number; private var m_state:int; private var m_ratio:Number; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_limitMass1:Number; private var m_limitMass2:Number; private var m_pulleyMass:Number; private var m_limitImpulse1:Number; private var m_limitImpulse2:Number; private var m_u1:b2Vec2; private var m_u2:b2Vec2; b2internal static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_bodyA.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchorA.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchorA.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchorB.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchorB.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_ratio = _arg1.ratio; m_constant = (_arg1.lengthA + (m_ratio * _arg1.lengthB)); m_maxLength1 = b2Math.Min(_arg1.maxLengthA, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.Min(_arg1.maxLengthB, ((m_constant - b2_minPulleyLength) / m_ratio)); m_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; } public function GetGroundAnchorB():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } public function GetGroundAnchorA():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u2.x), ((_arg1 * m_impulse) * m_u2.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2Mat22; 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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local5:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local6:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local7:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local8:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local24:Number = 0; if (m_state == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u1.Set((_local13 - _local5), (_local14 - _local6)); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local17 = m_u1.Length(); _local18 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local17)); } else { m_u1.SetZero(); }; if (_local18 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local18)); } else { m_u2.SetZero(); }; _local19 = ((m_constant - _local17) - (m_ratio * _local18)); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_pulleyMass) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local15 = ((-(m_ratio) * _local20) * m_u2.x); _local16 = ((-(m_ratio) * _local20) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); m_u1.Set((_local13 - _local5), (_local14 - _local6)); _local17 = m_u1.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local17)); m_u1.y = (m_u1.y * (1 / _local17)); } else { m_u1.SetZero(); }; _local19 = (m_maxLength1 - _local17); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass1) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local2.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local18 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local18)); m_u2.y = (m_u2.y * (1 / _local18)); } else { m_u2.SetZero(); }; _local19 = (m_maxLength2 - _local18); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass2) * _local19); _local15 = (-(_local20) * m_u2.x); _local16 = (-(_local20) * m_u2.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local3.SynchronizeTransform(); }; return ((_local24 < b2Settings.b2_linearSlop)); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local6:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_bodyA; _local3 = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_impulse = 0; } else { m_state = e_atUpperLimit; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitImpulse1 = 0; } else { m_limitState1 = e_atUpperLimit; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitImpulse2 = 0; } else { m_limitState2 = e_atUpperLimit; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); m_limitImpulse1 = (m_limitImpulse1 * _arg1.dtRatio); m_limitImpulse2 = (m_limitImpulse2 * _arg1.dtRatio); _local23 = ((-(m_impulse) - m_limitImpulse1) * m_u1.x); _local24 = ((-(m_impulse) - m_limitImpulse1) * m_u1.y); _local25 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.x); _local26 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2 = m_bodyB.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; 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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = (m_pulleyMass * -(_local18)); _local20 = m_impulse; m_impulse = b2Math.Max(0, (m_impulse + _local19)); _local19 = (m_impulse - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local16 = ((-(m_ratio) * _local19) * m_u2.x); _local17 = ((-(m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = (-(m_limitMass1) * _local18); _local20 = m_limitImpulse1; m_limitImpulse1 = b2Math.Max(0, (m_limitImpulse1 + _local19)); _local19 = (m_limitImpulse1 - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = (-(m_limitMass2) * _local18); _local20 = m_limitImpulse2; m_limitImpulse2 = b2Math.Max(0, (m_limitImpulse2 + _local19)); _local19 = (m_limitImpulse2 - _local20); _local16 = (-(_local19) * m_u2.x); _local17 = (-(_local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_bodyA.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } } }//package Box2D.Dynamics.Joints
Section 88
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var groundAnchorA:b2Vec2; public var groundAnchorB:b2Vec2; public var localAnchorB:b2Vec2; public var ratio:Number; public var maxLengthA:Number; public var lengthA:Number; public var lengthB:Number; public var maxLengthB:Number; public function b2PulleyJointDef(){ groundAnchorA = new b2Vec2(); groundAnchorB = new b2Vec2(); localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchorA.Set(-1, 1); groundAnchorB.Set(1, 1); localAnchorA.Set(-1, 0); localAnchorB.Set(1, 0); lengthA = 0; maxLengthA = 0; lengthB = 0; maxLengthB = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ bodyA = _arg1; bodyB = _arg2; groundAnchorA.SetV(_arg3); groundAnchorB.SetV(_arg4); localAnchorA = bodyA.GetLocalPoint(_arg5); localAnchorB = bodyB.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); lengthA = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); lengthB = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (lengthA + (ratio * lengthB)); maxLengthA = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLengthB = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 89
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { private var m_mass:b2Mat33; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_limitState:int; private var m_motorMass:Number; private var reduced:b2Vec2; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; private var m_motorImpulse:Number; private var impulse2:b2Vec2; private var impulse3:b2Vec3; private var m_enableMotor:Boolean; private var m_referenceAngle:Number; private var m_upperAngle:Number; private var m_motorSpeed:Number; private var m_lowerAngle:Number; private var m_maxMotorTorque:Number; private static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); impulse3 = new b2Vec3(); impulse2 = new b2Vec2(); reduced = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10: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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local11:b2Vec2 = _local2.m_linearVelocity; var _local12:Number = _local2.m_angularVelocity; var _local13:b2Vec2 = _local3.m_linearVelocity; var _local14:Number = _local3.m_angularVelocity; var _local15:Number = _local2.m_invMass; var _local16:Number = _local3.m_invMass; var _local17:Number = _local2.m_invI; var _local18:Number = _local3.m_invI; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local19 = ((_local14 - _local12) - m_motorSpeed); _local20 = (m_motorMass * -(_local19)); _local21 = m_motorImpulse; _local22 = (_arg1.dt * m_maxMotorTorque); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local20), -(_local22), _local22); _local20 = (m_motorImpulse - _local21); _local12 = (_local12 - (_local17 * _local20)); _local14 = (_local14 + (_local18 * _local20)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local23 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local24 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); _local25 = (_local14 - _local12); m_mass.Solve33(impulse3, -(_local23), -(_local24), -(_local25)); if (m_limitState == e_equalLimits){ m_impulse.Add(impulse3); } else { if (m_limitState == e_atLowerLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 < 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; } else { if (m_limitState == e_atUpperLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 > 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; }; }; }; _local11.x = (_local11.x - (_local15 * impulse3.x)); _local11.y = (_local11.y - (_local15 * impulse3.y)); _local12 = (_local12 - (_local17 * (((_local7 * impulse3.y) - (_local8 * impulse3.x)) + impulse3.z))); _local13.x = (_local13.x + (_local16 * impulse3.x)); _local13.y = (_local13.y + (_local16 * impulse3.y)); _local14 = (_local14 + (_local18 * (((_local9 * impulse3.y) - (_local10 * impulse3.x)) + impulse3.z))); } else { _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local26 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local27 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); m_mass.Solve22(impulse2, -(_local26), -(_local27)); m_impulse.x = (m_impulse.x + impulse2.x); m_impulse.y = (m_impulse.y + impulse2.y); _local11.x = (_local11.x - (_local15 * impulse2.x)); _local11.y = (_local11.y - (_local15 * impulse2.y)); _local12 = (_local12 - (_local17 * ((_local7 * impulse2.y) - (_local8 * impulse2.x)))); _local13.x = (_local13.x + (_local16 * impulse2.x)); _local13.y = (_local13.y + (_local16 * impulse2.y)); _local14 = (_local14 + (_local18 * ((_local9 * impulse2.y) - (_local10 * impulse2.x)))); }; _local2.m_linearVelocity.SetV(_local11); _local2.m_angularVelocity = _local12; _local3.m_linearVelocity.SetV(_local13); _local3.m_angularVelocity = _local14; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local5:b2Body = m_bodyA; var _local6:b2Body = m_bodyB; var _local7:Number = 0; var _local8:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local6.m_sweep.a - _local5.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local3 = b2Math.Clamp((_local25 - m_lowerAngle), -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); _local7 = b2Math.Abs(_local3); } else { if (m_limitState == e_atLowerLimit){ _local3 = (_local25 - m_lowerAngle); _local7 = -(_local3); _local3 = b2Math.Clamp((_local3 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local3); } else { if (m_limitState == e_atUpperLimit){ _local3 = (_local25 - m_upperAngle); _local7 = _local3; _local3 = b2Math.Clamp((_local3 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); }; }; }; _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * _local26)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * _local26)); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); }; _local4 = _local5.m_xf.R; var _local12:Number = (m_localAnchor1.x - _local5.m_sweep.localCenter.x); var _local13:Number = (m_localAnchor1.y - _local5.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local12) + (_local4.col2.x * _local13)); _local13 = ((_local4.col1.y * _local12) + (_local4.col2.y * _local13)); _local12 = _local9; _local4 = _local6.m_xf.R; var _local14:Number = (m_localAnchor2.x - _local6.m_sweep.localCenter.x); var _local15:Number = (m_localAnchor2.y - _local6.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local14) + (_local4.col2.x * _local15)); _local15 = ((_local4.col1.y * _local14) + (_local4.col2.y * _local15)); _local14 = _local9; var _local16:Number = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); var _local17:Number = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); var _local18:Number = ((_local16 * _local16) + (_local17 * _local17)); var _local19:Number = Math.sqrt(_local18); _local8 = _local19; var _local20:Number = _local5.m_invMass; var _local21:Number = _local6.m_invMass; var _local22:Number = _local5.m_invI; var _local23:Number = _local6.m_invI; var _local24:Number = (10 * b2Settings.b2_linearSlop); if (_local18 > (_local24 * _local24)){ _local27 = (_local16 / _local19); _local28 = (_local17 / _local19); _local29 = (_local20 + _local21); _local30 = (1 / _local29); _local10 = (_local30 * -(_local16)); _local11 = (_local30 * -(_local17)); _local31 = 0.5; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - ((_local31 * _local20) * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - ((_local31 * _local20) * _local11)); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + ((_local31 * _local21) * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + ((_local31 * _local21) * _local11)); _local16 = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); _local17 = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); }; K1.col1.x = (_local20 + _local21); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local20 + _local21); K2.col1.x = ((_local22 * _local13) * _local13); K2.col2.x = ((-(_local22) * _local12) * _local13); K2.col1.y = ((-(_local22) * _local12) * _local13); K2.col2.y = ((_local22 * _local12) * _local12); K3.col1.x = ((_local23 * _local15) * _local15); K3.col2.x = ((-(_local23) * _local14) * _local15); K3.col1.y = ((-(_local23) * _local14) * _local15); K3.col2.y = ((_local23 * _local14) * _local14); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local10 = tImpulse.x; _local11 = tImpulse.y; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local5.m_invMass * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local5.m_invMass * _local11)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * ((_local12 * _local11) - (_local13 * _local10)))); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local6.m_invMass * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local6.m_invMass * _local11)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * ((_local14 * _local11) - (_local15 * _local10)))); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); return ((((_local8 <= b2Settings.b2_linearSlop)) && ((_local7 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_bodyB.m_sweep.a - m_bodyA.m_sweep.a) - m_referenceAngle)); } public function GetJointSpeed():Number{ return ((m_bodyB.m_angularVelocity - m_bodyA.m_angularVelocity)); } public function GetMotorTorque():Number{ return (m_maxMotorTorque); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_bodyA; _local3 = m_bodyB; if (((m_enableMotor) || (m_enableLimit))){ }; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorImpulse = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_impulse.z = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_impulse.z = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local15 = m_impulse.x; _local16 = m_impulse.y; _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local10 * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local10 * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local12 * ((((_local6 * _local16) - (_local7 * _local15)) + m_motorImpulse) + m_impulse.z))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * ((((_local8 * _local16) - (_local9 * _local15)) + m_motorImpulse) + m_impulse.z))); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 90
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public var motorSpeed:Number; public var upperAngle:Number; public var lowerAngle:Number; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchorA.Set(0, 0); localAnchorB.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 91
//b2WeldJoint (Box2D.Dynamics.Joints.b2WeldJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2WeldJoint extends b2Joint { private var m_impulse:b2Vec3; private var m_referenceAngle:Number; private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; private var m_mass:b2Mat33; public function b2WeldJoint(_arg1:b2WeldJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_mass = new b2Mat33(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local18:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local19:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local20:Number = (_local9 - _local7); var _local21:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local21, -(_local18), -(_local19), -(_local20)); m_impulse.Add(_local21); _local6.x = (_local6.x - (_local10 * _local21.x)); _local6.y = (_local6.y - (_local10 * _local21.y)); _local7 = (_local7 - (_local12 * (((_local14 * _local21.y) - (_local15 * _local21.x)) + _local21.z))); _local8.x = (_local8.x + (_local11 * _local21.x)); _local8.y = (_local8.y + (_local11 * _local21.y)); _local9 = (_local9 + (_local13 * (((_local16 * _local21.y) - (_local17 * _local21.x)) + _local21.z))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; var _local8:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; var _local14:Number = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); var _local15:Number = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local16:Number = ((_local5.m_sweep.a - _local4.m_sweep.a) - m_referenceAngle); var _local17:Number = (10 * b2Settings.b2_linearSlop); var _local18:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); var _local19:Number = b2Math.Abs(_local16); if (_local18 > _local17){ _local12 = (_local12 * 1); _local13 = (_local13 * 1); }; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); var _local20:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local20, -(_local14), -(_local15), -(_local16)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x - (_local10 * _local20.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y - (_local10 * _local20.y)); _local4.m_sweep.a = (_local4.m_sweep.a - (_local12 * (((_local6 * _local20.y) - (_local7 * _local20.x)) + _local20.z))); _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_local11 * _local20.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_local11 * _local20.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_local13 * (((_local8 * _local20.y) - (_local9 * _local20.x)) + _local20.z))); _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local18 <= b2Settings.b2_linearSlop)) && ((_local19 <= b2Settings.b2_angularSlop)))); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; _local10 = _local4.m_invMass; _local11 = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_impulse.z = (m_impulse.z * _arg1.dtRatio); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * m_impulse.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * m_impulse.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * m_impulse.y) - (_local7 * m_impulse.x)) + m_impulse.z))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * m_impulse.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * m_impulse.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * m_impulse.y) - (_local9 * m_impulse.x)) + m_impulse.z))); } else { m_impulse.SetZero(); }; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } } }//package Box2D.Dynamics.Joints
Section 92
//b2WeldJointDef (Box2D.Dynamics.Joints.b2WeldJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2WeldJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public function b2WeldJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_weldJoint; referenceAngle = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 93
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Body { b2internal var m_xf:b2Transform; b2internal var m_controllerCount:int; b2internal var m_contactList:b2ContactEdge; b2internal var m_invI:Number; b2internal var m_fixtureCount:int; b2internal var m_torque:Number; b2internal var m_angularVelocity:Number; b2internal var m_flags:uint; b2internal var m_linearVelocity:b2Vec2; b2internal var m_world:b2World; b2internal var m_inertiaScale:Number; b2internal var m_controllerList:b2ControllerEdge; b2internal var m_fixtureList:b2Fixture; b2internal var m_mass:Number; b2internal var m_next:b2Body; b2internal var m_force:b2Vec2; b2internal var m_sweep:b2Sweep; private var m_userData; b2internal var m_invMass:Number; b2internal var m_prev:b2Body; b2internal var m_linearDamping:Number; b2internal var m_type:int; b2internal var m_angularDamping:Number; b2internal var m_islandIndex:int; b2internal var m_jointList:b2JointEdge; b2internal var m_sleepTime:Number; b2internal var m_I:Number; b2internal static var e_fixedRotationFlag:uint = 16; public static var b2_kinematicBody:uint = 1; b2internal static var e_bulletFlag:uint = 8; b2internal static var e_activeFlag:uint = 32; b2internal static var e_allowSleepFlag:uint = 4; b2internal static var e_awakeFlag:uint = 2; public static var b2_dynamicBody:uint = 2; b2internal static var e_islandFlag:uint = 1; private static var s_xf1:b2Transform = new b2Transform(); public static var b2_staticBody:uint = 0; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2Transform(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.bullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.awake){ m_flags = (m_flags | e_awakeFlag); }; if (_arg1.active){ m_flags = (m_flags | e_activeFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetZero(); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_controllerList = null; m_contactList = null; m_controllerCount = 0; m_prev = null; m_next = null; m_linearVelocity.SetV(_arg1.linearVelocity); m_angularVelocity = _arg1.angularVelocity; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_sleepTime = 0; m_type = _arg1.type; if (m_type == b2_dynamicBody){ m_mass = 1; m_invMass = 1; } else { m_mass = 0; m_invMass = 0; }; m_I = 0; m_invI = 0; m_inertiaScale = _arg1.inertiaScale; m_userData = _arg1.userData; m_fixtureList = null; m_fixtureCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ if (m_type == b2_staticBody){ return; }; m_linearVelocity.SetV(_arg1); } public function ResetMassData():void{ var _local4:b2MassData; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_sweep.localCenter.SetZero(); if ((((m_type == b2_staticBody)) || ((m_type == b2_kinematicBody)))){ return; }; var _local1:b2Vec2 = b2Vec2.Make(0, 0); var _local2:b2Fixture = m_fixtureList; while (_local2) { if (_local2.m_density == 0){ } else { _local4 = _local2.GetMassData(); m_mass = (m_mass + _local4.mass); _local1.x = (_local1.x + (_local4.center.x * _local4.mass)); _local1.y = (_local1.y + (_local4.center.y * _local4.mass)); m_I = (m_I + _local4.I); }; _local2 = _local2.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local1.x = (_local1.x * m_invMass); _local1.y = (_local1.y * m_invMass); } else { m_mass = 1; m_invMass = 1; }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local1.x * _local1.x) + (_local1.y * _local1.y)))); m_I = (m_I * m_inertiaScale); b2Settings.b2Assert((m_I > 0)); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; var _local3:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_local1); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local3.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local3.x))); } public function GetMassData(_arg1:b2MassData):void{ _arg1.mass = m_mass; _arg1.I = m_I; _arg1.center.SetV(m_sweep.localCenter); } public function Merge(_arg1:b2Body):void{ var _local2:b2Fixture; var _local3:b2Body; var _local4:b2Body; var _local11:b2Fixture; _local2 = _arg1.m_fixtureList; while (_local2) { _local11 = _local2.m_next; _arg1.m_fixtureCount--; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = _local4; _local2 = _local11; }; _local3.m_fixtureCount = 0; _local3 = this; _local4 = _arg1; var _local5:b2Vec2 = _local3.GetWorldCenter(); var _local6:b2Vec2 = _local4.GetWorldCenter(); var _local7:b2Vec2 = _local3.GetLinearVelocity().Copy(); var _local8:b2Vec2 = _local4.GetLinearVelocity().Copy(); var _local9:Number = _local3.GetAngularVelocity(); var _local10:Number = _local4.GetAngularVelocity(); _local3.ResetMassData(); SynchronizeFixtures(); } b2internal function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function SetMassData(_arg1:b2MassData):void{ b2Settings.b2Assert((m_world.IsLocked() == false)); if (m_world.IsLocked() == true){ return; }; if (m_type != b2_dynamicBody){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass <= 0){ m_mass = 1; }; m_invMass = (1 / m_mass); if ((((_arg1.I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (_arg1.I - (m_mass * ((_arg1.center.x * _arg1.center.x) + (_arg1.center.y * _arg1.center.y)))); m_invI = (1 / m_I); }; var _local2:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_arg1.center); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local2.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local2.x))); } public function GetDefinition():b2BodyDef{ var _local1:b2BodyDef = new b2BodyDef(); _local1.type = GetType(); _local1.allowSleep = ((m_flags & e_allowSleepFlag) == e_allowSleepFlag); _local1.angle = GetAngle(); _local1.angularDamping = m_angularDamping; _local1.angularVelocity = m_angularVelocity; _local1.fixedRotation = ((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag); _local1.bullet = ((m_flags & e_bulletFlag) == e_bulletFlag); _local1.awake = ((m_flags & e_awakeFlag) == e_awakeFlag); _local1.linearDamping = m_linearDamping; _local1.linearVelocity.SetV(GetLinearVelocity()); _local1.position = GetPosition(); _local1.userData = GetUserData(); return (_local1); } public function GetControllerList():b2ControllerEdge{ return (m_controllerList); } public function GetFixtureList():b2Fixture{ return (m_fixtureList); } public function SetAngularVelocity(_arg1:Number):void{ if (m_type == b2_staticBody){ return; }; m_angularVelocity = _arg1; } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function CreateFixture(_arg1:b2FixtureDef):b2Fixture{ var _local3:IBroadPhase; if (m_world.IsLocked() == true){ return (null); }; var _local2:b2Fixture = new b2Fixture(); _local2.Create(this, m_xf, _arg1); if ((m_flags & e_activeFlag)){ _local3 = m_world.m_contactManager.m_broadPhase; _local2.CreateProxy(_local3, m_xf); }; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = this; if (_local2.m_density > 0){ ResetMassData(); }; m_world.m_flags = (m_world.m_flags | b2World.e_newFixture); return (_local2); } public function SetTransform(_arg1:b2Transform):void{ SetPositionAndAngle(_arg1.position, _arg1.GetAngle()); } public function IsAwake():Boolean{ return (((m_flags & e_awakeFlag) == e_awakeFlag)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulMV(m_xf.R, _arg1)); } b2internal function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetAwake(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_awakeFlag); m_sleepTime = 0; } else { m_flags = (m_flags & ~(e_awakeFlag)); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; }; } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulTMV(m_xf.R, _arg1)); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function CreateFixture2(_arg1:b2Shape, _arg2:Number=0):b2Fixture{ var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = _arg1; _local3.density = _arg2; return (CreateFixture(_local3)); } public function GetLinearDamping():Number{ return (m_linearDamping); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetPosition(_arg1:b2Vec2):void{ SetPositionAndAngle(_arg1, GetAngle()); } private function connectEdges(_arg1:b2EdgeShape, _arg2:b2EdgeShape, _arg3:Number):Number{ var _local4:Number = Math.atan2(_arg2.GetDirectionVector().y, _arg2.GetDirectionVector().x); var _local5:Number = Math.tan(((_local4 - _arg3) * 0.5)); var _local6:b2Vec2 = b2Math.MulFV(_local5, _arg2.GetDirectionVector()); _local6 = b2Math.SubtractVV(_local6, _arg2.GetNormalVector()); _local6 = b2Math.MulFV(b2Settings.b2_toiSlop, _local6); _local6 = b2Math.AddVV(_local6, _arg2.GetVertex1()); var _local7:b2Vec2 = b2Math.AddVV(_arg1.GetDirectionVector(), _arg2.GetDirectionVector()); _local7.Normalize(); var _local8 = (b2Math.Dot(_arg1.GetDirectionVector(), _arg2.GetNormalVector()) > 0); _arg1.SetNextEdge(_arg2, _local6, _local7, _local8); _arg2.SetPrevEdge(_arg1, _local6, _local7, _local8); return (_local4); } public function GetType():uint{ return (m_type); } public function GetAngularDamping():Number{ return (m_angularDamping); } public function SetType(_arg1:uint):void{ if (m_type == _arg1){ return; }; m_type = _arg1; ResetMassData(); if (m_type == b2_staticBody){ m_linearVelocity.SetZero(); m_angularVelocity = 0; }; SetAwake(true); m_force.SetZero(); m_torque = 0; var _local2:b2ContactEdge = m_contactList; while (_local2) { _local2.contact.FlagForFiltering(); _local2 = _local2.next; }; } public function SetAngularDamping(_arg1:Number):void{ m_angularDamping = _arg1; } public function GetInertia():Number{ return (m_I); } public function SetAngle(_arg1:Number):void{ SetPositionAndAngle(GetPosition(), _arg1); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulXT(m_xf, _arg1)); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetContactList():b2ContactEdge{ return (m_contactList); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function DestroyFixture(_arg1:b2Fixture):void{ var _local6:b2Contact; var _local7:b2Fixture; var _local8:b2Fixture; var _local9:IBroadPhase; if (m_world.IsLocked() == true){ return; }; var _local2:b2Fixture = m_fixtureList; var _local3:b2Fixture; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_fixtureList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; var _local5:b2ContactEdge = m_contactList; while (_local5) { _local6 = _local5.contact; _local5 = _local5.next; _local7 = _local6.GetFixtureA(); _local8 = _local6.GetFixtureB(); if ((((_arg1 == _local7)) || ((_arg1 == _local8)))){ m_world.m_contactManager.Destroy(_local6); }; }; if ((m_flags & e_activeFlag)){ _local9 = m_world.m_contactManager.m_broadPhase; _arg1.DestroyProxy(_local9); }; _arg1.Destroy(); _arg1.m_body = null; _arg1.m_next = null; m_fixtureCount--; ResetMassData(); } public function IsSleepingAllowed():Boolean{ return (((m_flags & e_allowSleepFlag) == e_allowSleepFlag)); } public function GetTransform():b2Transform{ return (m_xf); } b2internal function SynchronizeFixtures():void{ var _local4:b2Fixture; var _local1:b2Transform = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local4 = m_fixtureList; while (_local4) { _local4.Synchronize(_local5, _local1, m_xf); _local4 = _local4.m_next; }; } public function SetSleepingAllowed(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); SetAwake(true); }; } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function SetPositionAndAngle(_arg1:b2Vec2, _arg2:Number):void{ var _local3:b2Fixture; if (m_world.IsLocked() == true){ return; }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.Synchronize(_local6, m_xf, m_xf); _local3 = _local3.m_next; }; m_world.m_contactManager.FindNewContacts(); } public function IsFixedRotation():Boolean{ return (((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag)); } public function SetActive(_arg1:Boolean):void{ var _local2:IBroadPhase; var _local3:b2Fixture; var _local4:b2ContactEdge; var _local5:b2ContactEdge; if (_arg1 == IsActive()){ return; }; if (_arg1){ m_flags = (m_flags | e_activeFlag); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.CreateProxy(_local2, m_xf); _local3 = _local3.m_next; }; } else { m_flags = (m_flags & ~(e_activeFlag)); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.DestroyProxy(_local2); _local3 = _local3.m_next; }; _local4 = m_contactList; while (_local4) { _local5 = _local4; _local4 = _local4.next; m_world.m_contactManager.Destroy(_local5.contact); }; m_contactList = null; }; } public function IsActive():Boolean{ return (((m_flags & e_activeFlag) == e_activeFlag)); } b2internal function ShouldCollide(_arg1:b2Body):Boolean{ if (((!((m_type == b2_dynamicBody))) && (!((_arg1.m_type == b2_dynamicBody))))){ return (false); }; var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ if (_local2.joint.m_collideConnected == false){ return (false); }; }; _local2 = _local2.next; }; return (true); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function SetFixedRotation(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_fixedRotationFlag); } else { m_flags = (m_flags & ~(e_fixedRotationFlag)); }; ResetMassData(); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function Split(_arg1:Function):b2Body{ var _local7:b2Fixture; var _local13:b2Fixture; var _local2:b2Vec2 = GetLinearVelocity().Copy(); var _local3:Number = GetAngularVelocity(); var _local4:b2Vec2 = GetWorldCenter(); var _local5:b2Body = this; var _local6:b2Body = m_world.CreateBody(GetDefinition()); var _local8:b2Fixture = _local5.m_fixtureList; while (_local8) { if (_arg1(_local8)){ _local13 = _local8.m_next; if (_local7){ _local7.m_next = _local13; } else { _local5.m_fixtureList = _local13; }; _local5.m_fixtureCount--; _local8.m_next = _local6.m_fixtureList; _local6.m_fixtureList = _local8; _local6.m_fixtureCount++; _local8.m_body = _local6; _local8 = _local13; } else { _local7 = _local8; _local8 = _local8.m_next; }; }; _local5.ResetMassData(); _local6.ResetMassData(); var _local9:b2Vec2 = _local5.GetWorldCenter(); var _local10:b2Vec2 = _local6.GetWorldCenter(); var _local11:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local9, _local4))); var _local12:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local10, _local4))); _local5.SetLinearVelocity(_local11); _local6.SetLinearVelocity(_local12); _local5.SetAngularVelocity(_local3); _local6.SetAngularVelocity(_local3); _local5.SynchronizeFixtures(); _local6.SynchronizeFixtures(); return (_local6); } public function SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } public function GetWorld():b2World{ return (m_world); } public function ApplyTorque(_arg1:Number):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_torque = (m_torque + _arg1); } } }//package Box2D.Dynamics
Section 94
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var bullet:Boolean; public var awake:Boolean; public var active:Boolean; public var allowSleep:Boolean; public var angle:Number; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var angularVelocity:Number; public var linearVelocity:b2Vec2; public var position:b2Vec2; public var inertiaScale:Number; public var type:uint; public function b2BodyDef(){ position = new b2Vec2(); linearVelocity = new b2Vec2(); super(); userData = null; position.Set(0, 0); angle = 0; linearVelocity.Set(0, 0); angularVelocity = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; awake = true; fixedRotation = false; bullet = false; type = b2Body.b2_staticBody; active = true; inertiaScale = 1; } } }//package Box2D.Dynamics
Section 95
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactFilter { b2internal static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Fixture, _arg2:b2Fixture):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } public function RayCollide(_arg1, _arg2:b2Fixture):Boolean{ if (!_arg1){ return (true); }; return (ShouldCollide((_arg1 as b2Fixture), _arg2)); } } }//package Box2D.Dynamics
Section 96
//b2ContactImpulse (Box2D.Dynamics.b2ContactImpulse) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactImpulse { public var tangentImpulses:Array; public var normalImpulses:Array; public function b2ContactImpulse(){ normalImpulses = new Array(b2Settings.b2_maxManifoldPoints); tangentImpulses = new Array(b2Settings.b2_maxManifoldPoints); super(); } } }//package Box2D.Dynamics
Section 97
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactListener { b2internal static var b2_defaultListener:b2ContactListener = new (b2ContactListener); ; public function PreSolve(_arg1:b2Contact, _arg2:b2Manifold):void{ } public function EndContact(_arg1:b2Contact):void{ } public function PostSolve(_arg1:b2Contact, _arg2:b2ContactImpulse):void{ } public function BeginContact(_arg1:b2Contact):void{ } } }//package Box2D.Dynamics
Section 98
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactManager { b2internal var m_world:b2World; b2internal var m_contactCount:int; b2internal var m_contactFactory:b2ContactFactory; b2internal var m_contactFilter:b2ContactFilter; b2internal var m_broadPhase:IBroadPhase; b2internal var m_contactList:b2Contact; b2internal var m_contactListener:b2ContactListener; b2internal var m_allocator; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_world = null; m_contactCount = 0; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = b2ContactListener.b2_defaultListener; m_contactFactory = new b2ContactFactory(m_allocator); m_broadPhase = new b2DynamicTreeBroadPhase(); } public function FindNewContacts():void{ m_broadPhase.UpdatePairs(AddPair); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Fixture = _arg1.GetFixtureA(); var _local3:b2Fixture = _arg1.GetFixtureB(); var _local4:b2Body = _local2.GetBody(); var _local5:b2Body = _local3.GetBody(); if (_arg1.IsTouching()){ m_contactListener.EndContact(_arg1); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; if (_arg1.m_nodeA.prev){ _arg1.m_nodeA.prev.next = _arg1.m_nodeA.next; }; if (_arg1.m_nodeA.next){ _arg1.m_nodeA.next.prev = _arg1.m_nodeA.prev; }; if (_arg1.m_nodeA == _local4.m_contactList){ _local4.m_contactList = _arg1.m_nodeA.next; }; if (_arg1.m_nodeB.prev){ _arg1.m_nodeB.prev.next = _arg1.m_nodeB.next; }; if (_arg1.m_nodeB.next){ _arg1.m_nodeB.next.prev = _arg1.m_nodeB.prev; }; if (_arg1.m_nodeB == _local5.m_contactList){ _local5.m_contactList = _arg1.m_nodeB.next; }; m_contactFactory.Destroy(_arg1); m_contactCount--; } public function AddPair(_arg1, _arg2):void{ var _local9:b2Fixture; var _local10:b2Fixture; var _local3:b2Fixture = (_arg1 as b2Fixture); var _local4:b2Fixture = (_arg2 as b2Fixture); var _local5:b2Body = _local3.GetBody(); var _local6:b2Body = _local4.GetBody(); if (_local5 == _local6){ return; }; var _local7:b2ContactEdge = _local6.GetContactList(); while (_local7) { if (_local7.other == _local5){ _local9 = _local7.contact.GetFixtureA(); _local10 = _local7.contact.GetFixtureB(); if ((((_local9 == _local3)) && ((_local10 == _local4)))){ return; }; if ((((_local9 == _local4)) && ((_local10 == _local3)))){ return; }; }; _local7 = _local7.next; }; if (_local6.ShouldCollide(_local5) == false){ return; }; if (m_contactFilter.ShouldCollide(_local3, _local4) == false){ return; }; var _local8:b2Contact = m_contactFactory.Create(_local3, _local4); _local3 = _local8.GetFixtureA(); _local4 = _local8.GetFixtureB(); _local5 = _local3.m_body; _local6 = _local4.m_body; _local8.m_prev = null; _local8.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local8; }; m_world.m_contactList = _local8; _local8.m_nodeA.contact = _local8; _local8.m_nodeA.other = _local6; _local8.m_nodeA.prev = null; _local8.m_nodeA.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local8.m_nodeA; }; _local5.m_contactList = _local8.m_nodeA; _local8.m_nodeB.contact = _local8; _local8.m_nodeB.other = _local5; _local8.m_nodeB.prev = null; _local8.m_nodeB.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local8.m_nodeB; }; _local6.m_contactList = _local8.m_nodeB; m_world.m_contactCount++; } public function Collide():void{ var _local2:b2Fixture; var _local3:b2Fixture; var _local4:b2Body; var _local5:b2Body; var _local6:*; var _local7:*; var _local8:Boolean; var _local9:b2Contact; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.GetFixtureA(); _local3 = _local1.GetFixtureB(); _local4 = _local2.GetBody(); _local5 = _local3.GetBody(); if ((((_local4.IsAwake() == false)) && ((_local5.IsAwake() == false)))){ _local1 = _local1.GetNext(); } else { if ((_local1.m_flags & b2Contact.e_filterFlag)){ if (_local5.ShouldCollide(_local4) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; if (m_contactFilter.ShouldCollide(_local2, _local3) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; _local1.m_flags = (_local1.m_flags & ~(b2Contact.e_filterFlag)); }; _local6 = _local2.m_proxy; _local7 = _local3.m_proxy; _local8 = m_broadPhase.TestOverlap(_local6, _local7); if (_local8 == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); } else { _local1.Update(m_contactListener); _local1 = _local1.GetNext(); }; }; }; } } }//package Box2D.Dynamics
Section 99
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2DebugDraw { private var m_xformScale:Number;// = 1 private var m_fillAlpha:Number;// = 1 private var m_alpha:Number;// = 1 private var m_lineThickness:Number;// = 1 private var m_drawFlags:uint; b2internal var m_sprite:Sprite; private var m_drawScale:Number;// = 1 public static var e_centerOfMassBit:uint = 16; public static var e_shapeBit:uint = 1; public static var e_aabbBit:uint = 4; public static var e_controllerBit:uint = 32; public static var e_pairBit:uint = 8; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetDrawScale(_arg1:Number):void{ m_drawScale = _arg1; } public function GetFillAlpha():Number{ return (m_fillAlpha); } public function GetAlpha():Number{ return (m_alpha); } public function GetLineThickness():Number{ return (m_lineThickness); } public function GetDrawScale():Number{ return (m_drawScale); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function GetSprite():Sprite{ return (m_sprite); } public function GetXFormScale():Number{ return (m_xformScale); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function SetSprite(_arg1:Sprite):void{ m_sprite = _arg1; } public function DrawTransform(_arg1:b2Transform):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function SetXFormScale(_arg1:Number):void{ m_xformScale = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function SetFillAlpha(_arg1:Number):void{ m_fillAlpha = _arg1; } public function SetAlpha(_arg1:Number):void{ m_alpha = _arg1; } public function SetLineThickness(_arg1:Number):void{ m_lineThickness = _arg1; } } }//package Box2D.Dynamics
Section 100
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeFixture(_arg1:b2Fixture):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 101
//b2FilterData (Box2D.Dynamics.b2FilterData) package Box2D.Dynamics { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Dynamics
Section 102
//b2Fixture (Box2D.Dynamics.b2Fixture) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Fixture { b2internal var m_next:b2Fixture; b2internal var m_shape:b2Shape; b2internal var m_restitution:Number; b2internal var m_friction:Number; b2internal var m_proxy; b2internal var m_filter:b2FilterData; b2internal var m_density:Number; private var m_massData:b2MassData; b2internal var m_isSensor:Boolean; b2internal var m_userData; b2internal var m_aabb:b2AABB; b2internal var m_body:b2Body; public function b2Fixture(){ m_filter = new b2FilterData(); super(); m_aabb = new b2AABB(); m_userData = null; m_body = null; m_next = null; m_shape = null; m_density = 0; m_friction = 0; m_restitution = 0; } public function TestPoint(_arg1:b2Vec2):Boolean{ return (m_shape.TestPoint(m_body.GetTransform(), _arg1)); } public function SetDensity(_arg1:Number):void{ m_density = _arg1; } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetNext():b2Fixture{ return (m_next); } public function GetShape():b2Shape{ return (m_shape); } public function GetFriction():Number{ return (m_friction); } public function GetDensity():Number{ return (m_density); } public function GetMassData(_arg1:b2MassData=null):b2MassData{ if (_arg1 == null){ _arg1 = new b2MassData(); }; m_shape.ComputeMass(_arg1, m_density); return (_arg1); } public function GetAABB():b2AABB{ return (m_aabb); } public function GetType():int{ return (m_shape.GetType()); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } b2internal function Destroy():void{ m_shape = null; } public function GetRestitution():Number{ return (m_restitution); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } b2internal function Create(_arg1:b2Body, _arg2:b2Transform, _arg3:b2FixtureDef):void{ m_userData = _arg3.userData; m_friction = _arg3.friction; m_restitution = _arg3.restitution; m_body = _arg1; m_next = null; m_filter = _arg3.filter.Copy(); m_isSensor = _arg3.isSensor; m_shape = _arg3.shape.Copy(); m_density = _arg3.density; } public function IsSensor():Boolean{ return (m_isSensor); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ return (m_shape.RayCast(_arg1, _arg2, m_body.GetTransform())); } public function GetUserData(){ return (m_userData); } b2internal function Synchronize(_arg1:IBroadPhase, _arg2:b2Transform, _arg3:b2Transform):void{ if (!m_proxy){ return; }; var _local4:b2AABB = new b2AABB(); var _local5:b2AABB = new b2AABB(); m_shape.ComputeAABB(_local4, _arg2); m_shape.ComputeAABB(_local5, _arg3); m_aabb.Combine(_local4, _local5); var _local6:b2Vec2 = b2Math.SubtractVV(_arg3.position, _arg2.position); _arg1.MoveProxy(m_proxy, m_aabb, _local6); } b2internal function CreateProxy(_arg1:IBroadPhase, _arg2:b2Transform):void{ m_shape.ComputeAABB(m_aabb, _arg2); m_proxy = _arg1.CreateProxy(m_aabb, this); } public function SetFilterData(_arg1:b2FilterData):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; m_filter = _arg1.Copy(); if (m_body){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.FlagForFiltering(); }; _local2 = _local2.next; }; } b2internal function DestroyProxy(_arg1:IBroadPhase):void{ if (m_proxy == null){ return; }; _arg1.DestroyProxy(m_proxy); m_proxy = null; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody():b2Body{ return (m_body); } public function SetSensor(_arg1:Boolean):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; if (m_isSensor == _arg1){ return; }; m_isSensor = _arg1; if (m_body == null){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.SetSensor(((_local4.IsSensor()) || (_local5.IsSensor()))); }; _local2 = _local2.next; }; } } }//package Box2D.Dynamics
Section 103
//b2FixtureDef (Box2D.Dynamics.b2FixtureDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2FixtureDef { public var shape:b2Shape; public var isSensor:Boolean; public var density:Number; public var restitution:Number; public var userData; public var filter:b2FilterData; public var friction:Number; public function b2FixtureDef(){ filter = new b2FilterData(); super(); shape = null; userData = null; friction = 0.2; restitution = 0; density = 0; filter.categoryBits = 1; filter.maskBits = 0xFFFF; filter.groupIndex = 0; isSensor = false; } } }//package Box2D.Dynamics
Section 104
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Island { private var m_contactSolver:b2ContactSolver; private var m_listener:b2ContactListener; private var m_bodyCapacity:int; b2internal var m_bodies:Array; b2internal var m_bodyCount:int; b2internal var m_jointCapacity:int; b2internal var m_contactCount:int; b2internal var m_contacts:Array; b2internal var m_contactCapacity:int; b2internal var m_jointCount:int; private var m_allocator; b2internal var m_joints:Array; private static var s_impulse:b2ContactImpulse = new b2ContactImpulse(); public function b2Island(){ m_bodies = new Array(); m_contacts = new Array(); m_joints = new Array(); } public function AddBody(_arg1:b2Body):void{ _arg1.m_islandIndex = m_bodyCount; var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local3:b2Contact; var _local4:b2ContactConstraint; var _local5:int; if (m_listener == null){ return; }; var _local2:int; while (_local2 < m_contactCount) { _local3 = m_contacts[_local2]; _local4 = _arg1[_local2]; _local5 = 0; while (_local5 < _local4.pointCount) { s_impulse.normalImpulses[_local5] = _local4.points[_local5].normalImpulse; s_impulse.tangentImpulses[_local5] = _local4.points[_local5].tangentImpulse; _local5++; }; m_listener.PostSolve(_local3, s_impulse); _local2++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Boolean; var _local13:Boolean; var _local14:Boolean; var _local15:Number; var _local16:Number; var _local17:Number; _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() != b2Body.b2_dynamicBody){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_linearVelocity.Multiply(b2Math.Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); }; _local4++; }; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local8:b2ContactSolver = m_contactSolver; _local8.InitVelocityConstraints(_arg1); _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.InitVelocityConstraints(_arg1); _local4++; }; _local4 = 0; while (_local4 < _arg1.velocityIterations) { _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.SolveVelocityConstraints(_arg1); _local5++; }; _local8.SolveVelocityConstraints(); _local4++; }; _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.FinalizeVelocityConstraints(); _local4++; }; _local8.FinalizeVelocityConstraints(); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local9 = (_arg1.dt * _local6.m_linearVelocity.x); _local10 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local9 * _local9) + (_local10 * _local10)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local11 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local11) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local4++; }; _local4 = 0; while (_local4 < _arg1.positionIterations) { _local12 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local14 = _local7.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = ((_local13) && (_local14)); _local5++; }; if (((_local12) && (_local13))){ break; }; _local4++; }; Report(_local8.m_constraints); if (_arg3){ _local15 = Number.MAX_VALUE; _local16 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local17 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local15 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local17)))) || ((b2Math.Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local16)))){ _local6.m_sleepTime = 0; _local15 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local15 = b2Math.Min(_local15, _local6.m_sleepTime); }; }; _local4++; }; if (_local15 >= b2Settings.b2_timeToSleep){ _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; _local6.SetAwake(false); _local4++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:int; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local4:b2ContactSolver = m_contactSolver; _local2 = 0; while (_local2 < m_jointCount) { m_joints[_local2].InitVelocityConstraints(_arg1); _local2++; }; _local2 = 0; while (_local2 < _arg1.velocityIterations) { _local4.SolveVelocityConstraints(); _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].SolveVelocityConstraints(_arg1); _local3++; }; _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local6 = m_bodies[_local2]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local7 = (_arg1.dt * _local6.m_linearVelocity.x); _local8 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local7 * _local7) + (_local8 * _local8)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local9 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local9) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local2++; }; var _local5:Number = 0.75; _local2 = 0; while (_local2 < _arg1.positionIterations) { _local10 = _local4.SolvePositionConstraints(_local5); _local11 = true; _local3 = 0; while (_local3 < m_jointCount) { _local12 = m_joints[_local3].SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = ((_local11) && (_local12)); _local3++; }; if (((_local10) && (_local11))){ break; }; _local2++; }; Report(_local4.m_constraints); } public function Initialize(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener, _arg6:b2ContactSolver):void{ var _local7:int; m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_contactSolver = _arg6; _local7 = m_bodies.length; while (_local7 < _arg1) { m_bodies[_local7] = null; _local7++; }; _local7 = m_contacts.length; while (_local7 < _arg2) { m_contacts[_local7] = null; _local7++; }; _local7 = m_joints.length; while (_local7 < _arg3) { m_joints[_local7] = null; _local7++; }; } } }//package Box2D.Dynamics
Section 105
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var inv_dt:Number; public var dt:Number; public var velocityIterations:int; public var dtRatio:Number; public var positionIterations:int; public function Set(_arg1:b2TimeStep):void{ dt = _arg1.dt; inv_dt = _arg1.inv_dt; positionIterations = _arg1.positionIterations; velocityIterations = _arg1.velocityIterations; warmStarting = _arg1.warmStarting; } } }//package Box2D.Dynamics
Section 106
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2World { private var m_inv_dt0:Number; private var m_contactSolver:b2ContactSolver; private var m_controllerList:b2Controller; b2internal var m_contactList:b2Contact; private var m_controllerCount:int; private var m_allowSleep:Boolean; private var m_island:b2Island; b2internal var m_flags:int; private var m_jointCount:int; private var m_bodyCount:int; private var s_stack:Array; private var m_destructionListener:b2DestructionListener; b2internal var m_groundBody:b2Body; b2internal var m_contactCount:int; private var m_debugDraw:b2DebugDraw; b2internal var m_bodyList:b2Body; private var m_jointList:b2Joint; private var m_gravity:b2Vec2; b2internal var m_contactManager:b2ContactManager; public static const e_newFixture:int = 1; public static const e_locked:int = 2; private static var s_timestep:b2TimeStep = new b2TimeStep(); private static var s_queue:Array = new Array(); private static var s_timestep2:b2TimeStep = new b2TimeStep(); private static var s_backupA:b2Sweep = new b2Sweep(); private static var m_continuousPhysics:Boolean; private static var m_warmStarting:Boolean; private static var s_xf:b2Transform = new b2Transform(); private static var s_backupB:b2Sweep = new b2Sweep(); private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public function b2World(_arg1:b2Vec2, _arg2:Boolean){ s_stack = new Array(); m_contactManager = new b2ContactManager(); m_contactSolver = new b2ContactSolver(); m_island = new b2Island(); super(); m_destructionListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_controllerList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_controllerCount = 0; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg2; m_gravity = _arg1; m_inv_dt0 = 0; m_contactManager.m_world = this; var _local3:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local3); } b2internal function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.GetBodyA(); var _local3:b2Body = _arg1.GetBodyB(); var _local4:b2Transform = _local2.m_xf; var _local5:b2Transform = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchorA(); var _local9:b2Vec2 = _arg1.GetAnchorB(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchorA(); _local13 = _local11.GetGroundAnchorB(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function RayCastAll(_arg1:b2Vec2, _arg2:b2Vec2):Array{ var result:Array; var RayCastAllWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastAllWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result[result.length] = _arg1; return (1); }; result = new Array(); RayCast(RayCastAllWrapper, point1, point2); return (result); } public function QueryAABB(_arg1:Function, _arg2:b2AABB):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var aabb = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ return (callback(broadPhase.GetUserData(_arg1))); }; broadPhase = m_contactManager.m_broadPhase; broadPhase.Query(WorldQueryWrapper, aabb); } public function GetJointCount():int{ return (m_jointCount); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_contactManager.m_broadPhase.GetProxyCount()); } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Fixture; var _local5:b2Shape; var _local6:b2Joint; var _local7:IBroadPhase; var _local11:b2Transform; var _local16:b2Controller; var _local17:b2Contact; var _local18:b2Fixture; var _local19:b2Fixture; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2AABB; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Vec2 = new b2Vec2(); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; var _local15:b2Color = new b2Color(0, 0, 0); if ((_local1 & b2DebugDraw.e_shapeBit)){ _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetFixtureList(); while (_local4) { _local5 = _local4.GetShape(); if (_local3.IsActive() == false){ _local15.Set(0.5, 0.5, 0.3); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_staticBody){ _local15.Set(0.5, 0.9, 0.5); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_kinematicBody){ _local15.Set(0.5, 0.5, 0.9); DrawShape(_local5, _local11, _local15); } else { if (_local3.IsAwake() == false){ _local15.Set(0.6, 0.6, 0.6); DrawShape(_local5, _local11, _local15); } else { _local15.Set(0.9, 0.7, 0.7); DrawShape(_local5, _local11, _local15); }; }; }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local6 = m_jointList; while (_local6) { DrawJoint(_local6); _local6 = _local6.m_next; }; }; if ((_local1 & b2DebugDraw.e_controllerBit)){ _local16 = m_controllerList; while (_local16) { _local16.Draw(m_debugDraw); _local16 = _local16.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local15.Set(0.3, 0.9, 0.9); _local17 = m_contactManager.m_contactList; while (_local17) { _local18 = _local17.GetFixtureA(); _local19 = _local17.GetFixtureB(); _local20 = _local18.GetAABB().GetCenter(); _local21 = _local19.GetAABB().GetCenter(); m_debugDraw.DrawSegment(_local20, _local21, _local15); _local17 = _local17.GetNext(); }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local7 = m_contactManager.m_broadPhase; _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; _local3 = m_bodyList; while (_local3) { if (_local3.IsActive() == false){ } else { _local4 = _local3.GetFixtureList(); while (_local4) { _local22 = _local7.GetFatAABB(_local4.m_proxy); _local14[0].Set(_local22.lowerBound.x, _local22.lowerBound.y); _local14[1].Set(_local22.upperBound.x, _local22.lowerBound.y); _local14[2].Set(_local22.upperBound.x, _local22.upperBound.y); _local14[3].Set(_local22.lowerBound.x, _local22.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local15); _local4 = _local4.GetNext(); }; }; _local3 = _local3.GetNext(); }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawTransform(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local6:b2JointEdge; var _local7:b2ControllerEdge; var _local8:b2ContactEdge; var _local9:b2Fixture; if (IsLocked() == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local6 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local6.joint); }; DestroyJoint(_local6.joint); }; var _local3:b2ControllerEdge = _arg1.m_controllerList; while (_local3) { _local7 = _local3; _local3 = _local3.nextController; _local7.controller.RemoveBody(_arg1); }; var _local4:b2ContactEdge = _arg1.m_contactList; while (_local4) { _local8 = _local4; _local4 = _local4.next; m_contactManager.Destroy(_local8.contact); }; _arg1.m_contactList = null; var _local5:b2Fixture = _arg1.m_fixtureList; while (_local5) { _local9 = _local5; _local5 = _local5.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeFixture(_local9); }; _local9.DestroyProxy(m_contactManager.m_broadPhase); _local9.Destroy(); }; _arg1.m_fixtureList = null; _arg1.m_fixtureCount = 0; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } b2internal function DrawShape(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Color):void{ var _local4:b2CircleShape; var _local5:b2Vec2; var _local6:Number; var _local7:b2Vec2; var _local8:int; var _local9:b2PolygonShape; var _local10:int; var _local11:Array; var _local12:Array; var _local13:b2EdgeShape; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local4 = (_arg1 as b2CircleShape); _local5 = b2Math.MulX(_arg2, _local4.m_p); _local6 = _local4.m_radius; _local7 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local5, _local6, _local7, _arg3); break; case b2Shape.e_polygonShape: _local9 = (_arg1 as b2PolygonShape); _local10 = _local9.GetVertexCount(); _local11 = _local9.GetVertices(); _local12 = new Array(_local10); _local8 = 0; while (_local8 < _local10) { _local12[_local8] = b2Math.MulX(_arg2, _local11[_local8]); _local8++; }; m_debugDraw.DrawSolidPolygon(_local12, _local10, _arg3); break; case b2Shape.e_edgeShape: _local13 = (_arg1 as b2EdgeShape); m_debugDraw.DrawSegment(b2Math.MulX(_arg2, _local13.GetVertex1()), b2Math.MulX(_arg2, _local13.GetVertex2()), _arg3); break; }; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DestroyController(_arg1:b2Controller):void{ _arg1.Clear(); if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1 == m_controllerList){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } b2internal function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local10:int; var _local11:int; var _local12:b2Body; var _local13:b2ContactEdge; var _local14:b2JointEdge; var _local3:b2Controller = m_controllerList; while (_local3) { _local3.Step(_arg1); _local3 = _local3.m_next; }; var _local4:b2Island = m_island; _local4.Initialize(m_bodyCount, m_contactCount, m_jointCount, null, m_contactManager.m_contactListener, m_contactSolver); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local5:b2Contact = m_contactList; while (_local5) { _local5.m_flags = (_local5.m_flags & ~(b2Contact.e_islandFlag)); _local5 = _local5.m_next; }; var _local6:b2Joint = m_jointList; while (_local6) { _local6.m_islandFlag = false; _local6 = _local6.m_next; }; var _local7:int = m_bodyCount; var _local8:Array = s_stack; var _local9:b2Body = m_bodyList; while (_local9) { if ((_local9.m_flags & b2Body.e_islandFlag)){ } else { if ((((_local9.IsAwake() == false)) || ((_local9.IsActive() == false)))){ } else { if (_local9.GetType() == b2Body.b2_staticBody){ } else { _local4.Clear(); _local10 = 0; var _temp1 = _local10; _local10 = (_local10 + 1); var _local15 = _temp1; _local8[_local15] = _local9; _local9.m_flags = (_local9.m_flags | b2Body.e_islandFlag); while (_local10 > 0) { --_local10; _local2 = _local8[_local10]; _local4.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local13 = _local2.m_contactList; while (_local13) { if ((_local13.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local13.contact.IsSensor() == true)) || ((_local13.contact.IsEnabled() == false)))) || ((_local13.contact.IsTouching() == false)))){ } else { _local4.AddContact(_local13.contact); _local13.contact.m_flags = (_local13.contact.m_flags | b2Contact.e_islandFlag); _local12 = _local13.other; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local10; _local10 = (_local10 + 1); var _local16 = _temp2; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local13 = _local13.next; }; _local14 = _local2.m_jointList; while (_local14) { if (_local14.joint.m_islandFlag == true){ } else { _local12 = _local14.other; if (_local12.IsActive() == false){ } else { _local4.AddJoint(_local14.joint); _local14.joint.m_islandFlag = true; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local10; _local10 = (_local10 + 1); _local16 = _temp3; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local14 = _local14.next; }; }; }; _local4.Solve(_arg1, m_gravity, m_allowSleep); _local11 = 0; while (_local11 < _local4.m_bodyCount) { _local2 = _local4.m_bodies[_local11]; if (_local2.GetType() == b2Body.b2_staticBody){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local11++; }; }; }; }; _local9 = _local9.m_next; }; _local11 = 0; while (_local11 < _local8.length) { if (!_local8[_local11]){ break; }; _local8[_local11] = null; _local11++; }; _local2 = m_bodyList; while (_local2) { if ((((_local2.IsAwake() == false)) || ((_local2.IsActive() == false)))){ } else { if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local2.SynchronizeFixtures(); }; }; _local2 = _local2.m_next; }; m_contactManager.FindNewContacts(); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactManager.m_contactFilter = _arg1; } b2internal function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Fixture; var _local4:b2Fixture; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Joint; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:int; var _local17:b2TimeStep; var _local18:int; var _local19:Number; var _local20:Number; var _local21:b2JointEdge; var _local22:b2Body; var _local9:b2Island = m_island; _local9.Initialize(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, b2Settings.b2_maxTOIJointsPerIsland, null, m_contactManager.m_contactListener, m_contactSolver); var _local10:Array = s_queue; _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; _local8 = m_jointList; while (_local8) { _local8.m_islandFlag = false; _local8 = _local8.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((((((_local11.IsSensor() == true)) || ((_local11.IsEnabled() == false)))) || ((_local11.IsContinuous() == false)))){ } else { _local19 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local19 = _local11.m_toi; } else { _local3 = _local11.m_fixtureA; _local4 = _local11.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || ((_local5.IsAwake() == false)))) && (((!((_local6.GetType() == b2Body.b2_dynamicBody))) || ((_local6.IsAwake() == false)))))){ continue; }; _local20 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local20 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local20); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local20 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local20); }; }; _local19 = _local11.ComputeTOI(_local5.m_sweep, _local6.m_sweep); b2Settings.b2Assert((((0 <= _local19)) && ((_local19 <= 1)))); if ((((_local19 > 0)) && ((_local19 < 1)))){ _local19 = (((1 - _local19) * _local20) + _local19); if (_local19 > 1){ _local19 = 1; }; }; _local11.m_toi = _local19; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local19)) && ((_local19 < _local13)))){ _local12 = _local11; _local13 = _local19; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_fixtureA; _local4 = _local12.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; s_backupA.Set(_local5.m_sweep); s_backupB.Set(_local6.m_sweep); _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactManager.m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if ((((_local12.IsSensor() == true)) || ((_local12.IsEnabled() == false)))){ _local5.m_sweep.Set(s_backupA); _local6.m_sweep.Set(s_backupB); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); } else { if (_local12.IsTouching() == false){ } else { _local14 = _local5; if (_local14.GetType() != b2Body.b2_dynamicBody){ _local14 = _local6; }; _local9.Clear(); _local15 = 0; _local16 = 0; var _temp1 = _local16; _local16 = (_local16 + 1); _local10[(_local15 + _temp1)] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local16 > 0) { var _temp2 = _local15; _local15 = (_local15 + 1); _local2 = _local10[_temp2]; _local16--; _local9.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local9.m_contactCount == _local9.m_contactCapacity){ break; }; if ((_local7.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local7.contact.IsSensor() == true)) || ((_local7.contact.IsEnabled() == false)))) || ((_local7.contact.IsTouching() == false)))){ } else { _local9.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local22 = _local7.other; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; _local7 = _local7.next; }; _local21 = _local2.m_jointList; while (_local21) { if (_local9.m_jointCount == _local9.m_jointCapacity){ } else { if (_local21.joint.m_islandFlag == true){ } else { _local22 = _local21.other; if (_local22.IsActive() == false){ } else { _local9.AddJoint(_local21.joint); _local21.joint.m_islandFlag = true; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; }; _local21 = _local21.next; }; }; }; _local17 = s_timestep; _local17.warmStarting = false; _local17.dt = ((1 - _local13) * _arg1.dt); _local17.inv_dt = (1 / _local17.dt); _local17.dtRatio = 0; _local17.velocityIterations = _arg1.velocityIterations; _local17.positionIterations = _arg1.positionIterations; _local9.SolveTOI(_local17); _local18 = 0; while (_local18 < _local9.m_bodyCount) { _local2 = _local9.m_bodies[_local18]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if (_local2.IsAwake() == false){ } else { if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local2.SynchronizeFixtures(); _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local18++; }; _local18 = 0; while (_local18 < _local9.m_contactCount) { _local11 = _local9.m_contacts[_local18]; _local9.m_contacts[_local18].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local18++; }; _local18 = 0; while (_local18 < _local9.m_jointCount) { _local8 = _local9.m_joints[_local18]; _local8.m_islandFlag = false; _local18++; }; m_contactManager.FindNewContacts(); }; }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetContactCount():int{ return (m_contactCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetGravity():b2Vec2{ return (m_gravity); } public function RayCastOne(_arg1:b2Vec2, _arg2:b2Vec2):b2Fixture{ var result:b2Fixture; var RayCastOneWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastOneWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result = _arg1; return (_arg4); }; RayCast(RayCastOneWrapper, point1, point2); return (result); } public function Validate():void{ m_contactManager.m_broadPhase.Validate(); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function QueryPoint(_arg1:Function, _arg2:b2Vec2):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var p = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (_local2.TestPoint(p)){ return (callback(_local2)); }; return (true); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set((p.x - b2Settings.b2_linearSlop), (p.y - b2Settings.b2_linearSlop)); aabb.upperBound.Set((p.x + b2Settings.b2_linearSlop), (p.y + b2Settings.b2_linearSlop)); broadPhase.Query(WorldQueryWrapper, aabb); } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local5:b2ContactEdge; var _local2:b2Joint = b2Joint.Create(_arg1, null); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_edgeA.joint = _local2; _local2.m_edgeA.other = _local2.m_bodyB; _local2.m_edgeA.prev = null; _local2.m_edgeA.next = _local2.m_bodyA.m_jointList; if (_local2.m_bodyA.m_jointList){ _local2.m_bodyA.m_jointList.prev = _local2.m_edgeA; }; _local2.m_bodyA.m_jointList = _local2.m_edgeA; _local2.m_edgeB.joint = _local2; _local2.m_edgeB.other = _local2.m_bodyA; _local2.m_edgeB.prev = null; _local2.m_edgeB.next = _local2.m_bodyB.m_jointList; if (_local2.m_bodyB.m_jointList){ _local2.m_bodyB.m_jointList.prev = _local2.m_edgeB; }; _local2.m_bodyB.m_jointList = _local2.m_edgeB; var _local3:b2Body = _arg1.bodyA; var _local4:b2Body = _arg1.bodyB; if (_arg1.collideConnected == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; return (_local2); } public function GetContactList():b2Contact{ return (m_contactList); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2ContactEdge; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_bodyA; var _local4:b2Body = _arg1.m_bodyB; _local3.SetAwake(true); _local4.SetAwake(true); if (_arg1.m_edgeA.prev){ _arg1.m_edgeA.prev.next = _arg1.m_edgeA.next; }; if (_arg1.m_edgeA.next){ _arg1.m_edgeA.next.prev = _arg1.m_edgeA.prev; }; if (_arg1.m_edgeA == _local3.m_jointList){ _local3.m_jointList = _arg1.m_edgeA.next; }; _arg1.m_edgeA.prev = null; _arg1.m_edgeA.next = null; if (_arg1.m_edgeB.prev){ _arg1.m_edgeB.prev.next = _arg1.m_edgeB.next; }; if (_arg1.m_edgeB.next){ _arg1.m_edgeB.next.prev = _arg1.m_edgeB.prev; }; if (_arg1.m_edgeB == _local4.m_jointList){ _local4.m_jointList = _arg1.m_edgeB.next; }; _arg1.m_edgeB.prev = null; _arg1.m_edgeB.next = null; b2Joint.Destroy(_arg1, null); m_jointCount--; if (_local2 == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactManager.m_contactListener = _arg1; } public function CreateController(_arg1:b2Controller):b2Controller{ if (_arg1.m_world != this){ throw (new Error("Controller can only be a member of one world")); }; _arg1.m_next = m_controllerList; _arg1.m_prev = null; if (m_controllerList){ m_controllerList.m_prev = _arg1; }; m_controllerList = _arg1; m_controllerCount++; _arg1.m_world = this; return (_arg1); } public function QueryShape(_arg1:Function, _arg2:b2Shape, _arg3:b2Transform=null):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var shape = _arg2; var transform = _arg3; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (b2Shape.TestOverlap(shape, transform, _local2.GetShape(), _local2.GetBody().GetTransform())){ return (callback(_local2)); }; return (true); }; if (transform == null){ transform = new b2Transform(); transform.SetIdentity(); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); shape.ComputeAABB(aabb, transform); broadPhase.Query(WorldQueryWrapper, aabb); } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (IsLocked() == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function RemoveController(_arg1:b2Controller):void{ if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (m_controllerList == _arg1){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function RayCast(_arg1:Function, _arg2:b2Vec2, _arg3:b2Vec2):void{ var broadPhase:IBroadPhase; var output:b2RayCastOutput; var RayCastWrapper:Function; var callback = _arg1; var point1 = _arg2; var point2 = _arg3; RayCastWrapper = function (_arg1:b2RayCastInput, _arg2):Number{ var _local6:Number; var _local7:b2Vec2; var _local3:* = broadPhase.GetUserData(_arg2); var _local4:b2Fixture = (_local3 as b2Fixture); var _local5:Boolean = _local4.RayCast(output, _arg1); if (_local5){ _local6 = output.fraction; _local7 = new b2Vec2((((1 - _local6) * point1.x) + (_local6 * point2.x)), (((1 - _local6) * point1.y) + (_local6 * point2.y))); return (callback(_local4, _local7, output.normal, _local6)); }; return (_arg1.maxFraction); }; broadPhase = m_contactManager.m_broadPhase; output = new b2RayCastOutput(); var input:b2RayCastInput = new b2RayCastInput(point1, point2); broadPhase.RayCast(RayCastWrapper, input); } public function Step(_arg1:Number, _arg2:int, _arg3:int):void{ if ((m_flags & e_newFixture)){ m_contactManager.FindNewContacts(); m_flags = (m_flags & ~(e_newFixture)); }; m_flags = (m_flags | e_locked); var _local4:b2TimeStep = s_timestep2; _local4.dt = _arg1; _local4.velocityIterations = _arg2; _local4.positionIterations = _arg3; if (_arg1 > 0){ _local4.inv_dt = (1 / _arg1); } else { _local4.inv_dt = 0; }; _local4.dtRatio = (m_inv_dt0 * _arg1); _local4.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local4.dt > 0){ Solve(_local4); }; if (((m_continuousPhysics) && ((_local4.dt > 0)))){ SolveTOI(_local4); }; if (_local4.dt > 0){ m_inv_dt0 = _local4.inv_dt; }; m_flags = (m_flags & ~(e_locked)); } public function IsLocked():Boolean{ return (((m_flags & e_locked) > 0)); } public function ClearForces():void{ var _local1:b2Body = m_bodyList; while (_local1) { _local1.m_force.SetZero(); _local1.m_torque = 0; _local1 = _local1.m_next; }; } public function GetBodyCount():int{ return (m_bodyCount); } public function SetBroadPhase(_arg1:IBroadPhase):void{ var _local4:b2Fixture; var _local2:IBroadPhase = m_contactManager.m_broadPhase; m_contactManager.m_broadPhase = _arg1; var _local3:b2Body = m_bodyList; while (_local3) { _local4 = _local3.m_fixtureList; while (_local4) { _local4.m_proxy = _arg1.CreateProxy(_local2.GetFatAABB(_local4.m_proxy), _local4); _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; } public function AddController(_arg1:b2Controller):b2Controller{ _arg1.m_next = m_controllerList; _arg1.m_prev = null; m_controllerList = _arg1; _arg1.m_world = this; m_controllerCount++; return (_arg1); } } }//package Box2D.Dynamics
Section 107
//BackToHowToPlay (com.buttons.BackToHowToPlay) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class BackToHowToPlay extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "How to Play"; } } }//package com.buttons
Section 108
//BackToLevelSelect (com.buttons.BackToLevelSelect) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class BackToLevelSelect extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Level Select"; } } }//package com.buttons
Section 109
//BackToMainMenu (com.buttons.BackToMainMenu) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class BackToMainMenu extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Main Menu"; } } }//package com.buttons
Section 110
//FreeGamesForYourSite (com.buttons.FreeGamesForYourSite) package com.buttons { import flash.events.*; import com.*; import flash.net.*; public class FreeGamesForYourSite extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); clickCallback = clickButton; } public function clickButton(_arg1:Event=null):void{ navigateToURL(new URLRequest("http://www.i6.com/freegamesforyoursite.php?utm_source=games&utm_medium=borderservicesfgfys"), "blank"); } } }//package com.buttons
Section 111
//GameOptions (com.buttons.GameOptions) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class GameOptions extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Game Options"; } } }//package com.buttons
Section 112
//HowToPlay (com.buttons.HowToPlay) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class HowToPlay extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "How to Play"; } } }//package com.buttons
Section 113
//LevelSelect (com.buttons.LevelSelect) package com.buttons { import com.*; public class LevelSelect extends GameButton { public var level:Number;// = 1 } }//package com.buttons
Section 114
//MusicCredits (com.buttons.MusicCredits) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class MusicCredits extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = (root as MovieClip); destination = "Music Credits"; } } }//package com.buttons
Section 115
//PlayGame (com.buttons.PlayGame) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class PlayGame extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Level Select"; } } }//package com.buttons
Section 116
//PlayMoreGames (com.buttons.PlayMoreGames) package com.buttons { import flash.events.*; import com.*; import flash.net.*; public class PlayMoreGames extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); clickCallback = clickButton; } private function clickButton(_arg1:Event=null):void{ navigateToURL(new URLRequest("http://www.i6.com/new-games.php?utm_source=games&utm_medium=borderservicespmg"), "blank"); } } }//package com.buttons
Section 117
//QualityButton (com.buttons.QualityButton) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class QualityButton extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); clickCallback = click; } public function click(_arg1:Event=null):void{ var _local2:Array = [StageQuality.LOW, StageQuality.MEDIUM, StageQuality.HIGH, StageQuality.BEST]; var _local3:Number = _local2.indexOf(stage.quality); if (_local3 >= (_local2.length - 1)){ _local3 = 0; }; stage.quality = _local2[(_local3 + 1)]; } } }//package com.buttons
Section 118
//SoundButton (com.buttons.SoundButton) package com.buttons { import flash.events.*; import com.sound.*; import com.*; public class SoundButton extends GameButton { public function SoundButton():void{ clickCallback = click; } public function click(_arg1:Event=null){ SoundManager.toggleSound(); } } }//package com.buttons
Section 119
//TextFieldButton (com.buttons.TextFieldButton) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class TextFieldButton extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = name; } } }//package com.buttons
Section 120
//TrackEditor (com.buttons.TrackEditor) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class TrackEditor extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Track Editor"; } } }//package com.buttons
Section 121
//TryAgainButton (com.buttons.TryAgainButton) package com.buttons { import flash.display.*; import flash.events.*; import com.*; public class TryAgainButton extends GameButton { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); target = MovieClip(root); destination = "Gameplay"; } } }//package com.buttons
Section 122
//DataTracer (com.debug.DataTracer) package com.debug { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.utils.*; public class DataTracer extends Sprite { private var _traces:Array; public static const TIME_SET:Number = 1000; private static var _enabled:Boolean = false; private static var dataTracer:DataTracer; public function DataTracer():void{ _traces = new Array(); super(); this.addEventListener(Event.ENTER_FRAME, event_enterFrame); } private function event_enterFrame(_arg1:Event):void{ var _local3:Object; var _local4:Number; var _local5:Rectangle; var _local6:TextLineMetrics; if (_enabled == false){ return; }; graphics.clear(); var _local2:Array = new Array(); for each (_local3 in _traces) { _local4 = ((getTimer() - _local3.time) / _local3.duration); _local3.field.y = (_local3.field.y + (((_local2.length * _local3.field.height) - _local3.field.y) / 5)); _local5 = _local3.field.getBounds(this); _local6 = TextField(_local3.field).getLineMetrics(0); graphics.beginFill(0, 0.5); graphics.drawRect((_local3.field.x - 5), ((_local6.descent - 3) + _local3.field.y), (_local6.width + 10), (_local6.height + 6)); graphics.endFill(); if (_local4 > 1){ _local3.field.x = (_local3.field.x + (((-(_local6.width) - 10) - _local3.field.x) / 5)); //unresolved if removeChild(_local3.field); } else { _local2.push(_local3); }; }; _traces = _local2; } private function traceData(_arg1:String, _arg2:Number=1000):void{ var _local3:Object = {time:getTimer(), duration:_arg2, text:_arg1, field:new TextField()}; _local3.field.text = _arg1; _local3.field.y = (_traces.length * 25); _local3.field.x = 5; _local3.field.setTextFormat(new TextFormat("Tahoma", 11, 0xFFFFFF, true)); _local3.field.width = 600; _local3.field.height = 25; _local3.field.mouseEnabled = false; _local3.field.selectable = false; dataTracer.addChild(_local3.field); _traces.push(_local3); } public static function traceData(_arg1:String, _arg2:Number=3000):void{ trace(_arg1); if (!_enabled){ return; }; dataTracer.traceData(_arg1, _arg2); } public static function get enabled():Boolean{ return (_enabled); } public static function initDataTracer(_arg1:MovieClip):void{ dataTracer = new (DataTracer); dataTracer.mouseEnabled = false; dataTracer.mouseChildren = false; _enabled = true; MovieClip(_arg1).stage.addChild(dataTracer); traceData("Initiating the Data Tracer"); } public static function disable():void{ _enabled = false; if (dataTracer != null){ dataTracer.parent.removeChild(dataTracer); dataTracer = null; }; } } }//package com.debug
Section 123
//GameEvent (com.events.GameEvent) package com.events { import flash.events.*; public class GameEvent extends Event { private var _data:Object; public function GameEvent(_arg1:String, _arg2:Object=null, _arg3:Boolean=false, _arg4:Boolean=false){ super(_arg1, _arg3, _arg4); _data = _arg2; } public function get data():Object{ return (_data); } override public function toString():String{ return (formatToString("GameEvent", "data", "type", "bubbles", "cancelable", "eventPhase")); } override public function clone():Event{ return (new GameEvent(type, _data, bubbles, cancelable)); } public function dispose():void{ _data = null; } } }//package com.events
Section 124
//GarageAnimation (com.micc.GarageAnimation) package com.micc { import flash.display.*; import flash.events.*; public class GarageAnimation extends MovieClip { public var rootMc:DocumentClass; public function GarageAnimation(_arg1:DocumentClass){ addFrameScript(11, frame12, 47, frame48); this.rootMc = _arg1; DocumentClass.transitionAnimation = this; this.addEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage); } private function event_removedFromStage(_arg1:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage); DocumentClass.transitionAnimation = null; } function frame48(){ MovieClip(rootMc).isTransitioning = false; stop(); parent.removeChild(this); } function frame12(){ MovieClip(rootMc).gotoAndStop(MovieClip(rootMc).destination); } } }//package com.micc
Section 125
//Instantiantor (com.micc.Instantiantor) package com.micc { import flash.events.*; import flash.utils.*; public class Instantiantor { private static var _classCount:Object = new Object(); private static var _limits:Object = new Object(); public static function newInstance(_arg1:Class, ... _args):Object{ var _local7:Object; var _local8:String; var _local9:*; var _local10:Boolean; var _local3:String = getQualifiedClassName(_arg1); var _local4:Number = NaN; if (_limits[_local3] != null){ _local4 = _limits[_local3]; if (_classCount[_local3]){ if (_classCount[_local3] >= _local4){ return (null); }; }; }; if (!_classCount[_local3]){ _classCount[_local3] = 1; } else { var _local11 = _classCount; var _local12 = _local3; var _local13 = (_local11[_local12] + 1); _local11[_local12] = _local13; }; var _local5:Object = new (_arg1); var _local6:Number = 0; while (_local6 < _args.length) { _local7 = _args[_local6]; for (_local8 in _local7) { _local9 = _local7[_local8]; if (_local8 == "position"){ _local5.x = _local7.position.x; _local5.y = _local7.position.y; continue; } else { if (_local8 == "parent"){ _local7.parent.addChild(_local5); continue; }; }; if (_local5.hasOwnProperty(_local8)){ if ((_local5[_local8] is Function)){ if (_local7[_local8].length > 0){ _local5[_local8].apply(_local5, _local7[_local8]); } else { _local5[_local8].call(_local5); }; } else { _local5[_local8] = _local7[_local8]; }; } else { _local10 = false; if ((_local5 is EventDispatcher)){ if ((_local9 is Function)){ _local5.addEventListener(_local8, _local9, false, 0, true); _local10 = true; } else { if ((_local9 is String)){ if (_local5.hasOwnProperty(_local9)){ if ((_local5[_local9] is Function)){ _local5.addEventListener(_local8, _local5[_local9], false, 0, true); _local10 = true; }; }; }; }; }; if (!_local10){ _local5[_local8] = _local9; }; }; }; _local6++; }; return (_local5); } public static function setClassLimit(_arg1:Class, _arg2:Number):void{ var _local3:String = getQualifiedClassName(_arg1); _limits[_local3] = _arg2; } } }//package com.micc
Section 126
//Stream (com.micc.Stream) package com.micc { public class Stream { private var _types:Array; private var _content:Array; private var _readIndex:Number;// = 0 public function Stream(_arg1:Array):void{ _content = new Array(); _types = new Array(); super(); _content = _arg1; } public function get isAtBeginning():Boolean{ return ((_readIndex == 0)); } public function write(_arg1):void{ _types.push(typeof(_arg1)); _content.push(_arg1); } public function readString():String{ _readIndex++; return (String(_content[(_readIndex - 1)])); } public function readNumber():Number{ _readIndex++; return (Number(_content[(_readIndex - 1)])); } public function reset():void{ _readIndex = 0; } public function readBoolean():Boolean{ _readIndex++; return ((((_content[(_readIndex - 1)] == true)) || ((_content[(_readIndex - 1)] == "true")))); } public function get isAtEnd():Boolean{ return ((_readIndex == (_content.length - 1))); } public function skip():void{ _readIndex++; } } }//package com.micc
Section 127
//Time (com.micc.Time) package com.micc { import flash.utils.*; public class Time { private var _timeoutStart:Number;// = 0 private var _endTime:Number;// = NAN private var _startTime:Number; private var _timeoutDuration:Number;// = 0 public function Time():void{ _startTime = getTimer(); } public function get seconds():Number{ return ((Math.floor((currentElapsedTime / 1000)) % 60)); } public function stop():void{ _endTime = getTimer(); } public function endTimeout():void{ var _local1:Number = (getTimer() - _timeoutStart); _timeoutDuration = (_timeoutDuration + _local1); } public function get totalElaspedTime():Number{ if (!isNaN(_endTime)){ return ((_endTime - _startTime)); }; return ((getTimer() - _startTime)); } public function get timeoutDuration():Number{ return (_timeoutDuration); } public function get currentElapsedTime():Number{ return ((totalElaspedTime - _timeoutDuration)); } public function get minutes():Number{ return ((Math.floor((currentElapsedTime / 60000)) % 60)); } public function get milliseconds():Number{ return (Math.floor((currentElapsedTime % 1000))); } public function startTimeout():void{ _timeoutStart = getTimer(); } public static function createTime(_arg1:Number):Time{ var _local2:Time = new (Time); _local2._endTime = _arg1; _local2._startTime = 0; return (_local2); } public static function convertMillisecondsToMinutes(_arg1:Number):Number{ return ((convertMillisecondsToSeconds(_arg1) / 60)); } public static function convertMillisecondsToSeconds(_arg1:Number):Number{ return ((_arg1 / 1000)); } } }//package com.micc
Section 128
//Box (com.objects.gameplay.shapes.Box) package com.objects.gameplay.shapes { import com.objects.gameplay.*; public class Box extends HelperShape { public function Box():void{ type = "box"; } } }//package com.objects.gameplay.shapes
Section 129
//Circle (com.objects.gameplay.shapes.Circle) package com.objects.gameplay.shapes { import com.objects.gameplay.*; public class Circle extends HelperShape { public function Circle(){ type = "circle"; } } }//package com.objects.gameplay.shapes
Section 130
//NormalCar (com.objects.gameplay.special.cars.NormalCar) package com.objects.gameplay.special.cars { import flash.events.*; import com.objects.gameplay.special.*; public class NormalCar extends Car { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); create({density:1, friction:1}); } } }//package com.objects.gameplay.special.cars
Section 131
//PoliceCar (com.objects.gameplay.special.cars.PoliceCar) package com.objects.gameplay.special.cars { import flash.events.*; import com.objects.gameplay.special.*; public class PoliceCar extends Car { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); create({density:1, friction:1, restitution:0}); } } }//package com.objects.gameplay.special.cars
Section 132
//Bandit (com.objects.gameplay.special.Bandit) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import flash.events.*; import com.sound.*; import com.objects.gameplay.*; public class Bandit extends WorldObject { public var body:b2Body; public var velocity:Object; public function Bandit(){ velocity = {x:0, y:0}; super(); addFrameScript(0, frame1); } override protected function event_removedFromStage(_arg1:Event):void{ super.event_removedFromStage(_arg1); DocumentClass(root).bandits.splice(DocumentClass(root).bandits.indexOf(this), 1); } public function handleCollision(_arg1:b2Contact):void{ new b2Contact(); var _local2:b2Body = _arg1.GetFixtureA().GetBody(); var _local3:b2Body = _arg1.GetFixtureB().GetBody(); if ((((((((_local2.GetUserData() is Truck)) || ((_local2.GetUserData().parent is Truck)))) || ((_local3.GetUserData() is Truck)))) || ((_local3.GetUserData().parent is Truck)))){ hit(); SoundManager.playSound(GruntEffect, SoundType.SOUND_EFFECT); }; } public function hit():void{ if (!body){ return; }; velocity = {x:10, y:-10}; body.SetPositionAndAngle(new b2Vec2(-300, -300), 0); DocumentClass.addDeadBody(body); body = null; gotoAndStop(2); this.addEventListener(Event.ENTER_FRAME, event_enterFrame, false, 0, true); } override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2FixtureDef; super.event_addedToStage(_arg1); _local2 = new b2FixtureDef(); _local2.shape = new b2PolygonShape(); b2PolygonShape(_local2.shape).SetAsBox((width / 120), (height / 60)); _local2.friction = 2; _local2.isSensor = true; var _local3:b2BodyDef = new b2BodyDef(); _local3.userData = this; _local3.fixedRotation = true; _local3.position = new b2Vec2((x / 30), (y / 30)); _local3.angle = (rotation * (Math.PI / 180)); body = DocumentClass(root).world.CreateBody(_local3); body.CreateFixture(_local2); DocumentClass(root).bandits.push(this); } private function event_enterFrame(_arg1:Event):void{ velocity.y = (velocity.y + 1); rotation = (Math.atan2(velocity.y, velocity.x) / (Math.PI / 180)); x = (x + velocity.x); y = (y + velocity.y); if (getBounds(stage).y > 450){ parent.removeChild(this); }; } function frame1(){ stop(); } } }//package com.objects.gameplay.special
Section 133
//Boost (com.objects.gameplay.special.Boost) package com.objects.gameplay.special { import flash.display.*; import flash.events.*; public class Boost extends MovieClip { public function Boost(){ if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; } private function event_addedToStage(_arg1:Event):void{ if (_arg1){ removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); }; this.addEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage, false, 0, true); DocumentClass(root).boosts.push(this); } private function event_removedFromStage(_arg1:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage); DocumentClass(root).boosts.splice(DocumentClass(root).boosts.indexOf(this), 1); } } }//package com.objects.gameplay.special
Section 134
//BrokenBridge (com.objects.gameplay.special.BrokenBridge) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.geom.*; import com.objects.gameplay.*; import com.objects.gameplay.shapes.*; public class BrokenBridge extends WorldObject { public var helper:Box; override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2BodyDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.position = new b2Vec2((x / 30), (y / 30)); _local2.angle = (rotation * (Math.PI / 180)); _local2.userData = this; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); var _local4:Rectangle = helper.getBounds(helper); b2PolygonShape(_local3.shape).SetAsOrientedBox((((_local4.width * helper.scaleX) * scaleX) / 60), (((_local4.height * helper.scaleY) * scaleY) / 60), new b2Vec2(((helper.x * scaleX) / 30), ((helper.y * scaleY) / 30)), (helper.rotation * (Math.PI / 180))); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local2); _local5.CreateFixture(_local3); } } }//package com.objects.gameplay.special
Section 135
//Car (com.objects.gameplay.special.Car) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import com.objects.gameplay.*; public class Car extends WorldObject { public function create(_arg1:Object=null):void{ var _local2:b2BodyDef; var _local5:Object; var _local6:b2FixtureDef; var _local7:Number; var _local8:Number; var _local9:String; if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.userData = this; _local2.angle = (rotation * (Math.PI / 180)); _local2.position = new b2Vec2((x / 30), (y / 30)); var _local3:b2Body = DocumentClass(root).world.CreateBody(_local2); var _local4:Number = 0; while (_local4 < numChildren) { _local5 = getChildAt(_local4); if (!(_local5 is HelperShape)){ } else { _local6 = new b2FixtureDef(); if (_local5.type == "circle"){ _local6.shape = new b2CircleShape((_local5.width / 60)); b2CircleShape(_local6.shape).SetLocalPosition(new b2Vec2((_local5.x / 30), (_local5.y / 30))); } else { if (_local5.type == "box"){ _local6.shape = new b2PolygonShape(); _local7 = ((_local5.getBounds(_local5).width * _local5.scaleX) / 60); _local8 = ((_local5.getBounds(_local5).height * _local5.scaleY) / 60); b2PolygonShape(_local6.shape).SetAsOrientedBox(_local7, _local8, new b2Vec2((_local5.x / 30), (_local5.y / 30)), ((_local5.rotation * Math.PI) / 180)); }; }; if (_arg1){ for (_local9 in _arg1) { if (_local6.hasOwnProperty(_local9)){ _local6[_local9] = _arg1[_local9]; } else { if (_local6.shape.hasOwnProperty(_local9)){ _local6.shape[_local9] = _arg1[_local9]; }; }; }; }; if (!activePhysics){ _local6.density = 0; }; _local5.visible = false; _local3.CreateFixture(_local6); }; _local4++; }; } } }//package com.objects.gameplay.special
Section 136
//Coin (com.objects.gameplay.special.Coin) package com.objects.gameplay.special { import flash.display.*; import flash.events.*; public class Coin extends MovieClip { public var coinMc:MovieClip; public function Coin():void{ if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; } private function event_addedToStage(_arg1:Event):void{ if (_arg1){ removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); }; this.addEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage, false, 0, true); DocumentClass(root).coins.push(this); } private function event_removedFromStage(_arg1:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage); DocumentClass(root).coins.splice(DocumentClass(root).coins.indexOf(this), 1); } } }//package com.objects.gameplay.special
Section 137
//CrashedPlane (com.objects.gameplay.special.CrashedPlane) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.geom.*; import com.objects.gameplay.*; import com.objects.gameplay.shapes.*; public class CrashedPlane extends WorldObject { public var helper:Box; public function CrashedPlane(){ super(0); } override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2BodyDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.position = new b2Vec2((x / 30), (y / 30)); _local2.angle = (rotation * (Math.PI / 180)); _local2.userData = this; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); var _local4:Rectangle = helper.getBounds(helper); b2PolygonShape(_local3.shape).SetAsOrientedBox((((_local4.width * helper.scaleX) * scaleX) / 60), (((_local4.height * helper.scaleY) * scaleY) / 60), new b2Vec2(((helper.x * scaleX) / 30), ((helper.y * scaleY) / 30)), (helper.rotation * (Math.PI / 180))); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local2); _local5.CreateFixture(_local3); } } }//package com.objects.gameplay.special
Section 138
//Crate (com.objects.gameplay.special.Crate) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.geom.*; import com.objects.gameplay.*; public class Crate extends WorldObject { public function Crate(){ this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); } override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2BodyDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.position = new b2Vec2((x / 30), (y / 30)); _local2.angle = (rotation * (Math.PI / 180)); _local2.userData = this; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); var _local4:Rectangle = getChildAt(0).getBounds(this); b2PolygonShape(_local3.shape).SetAsBox(((_local4.width * scaleX) / 60), ((_local4.height * scaleY) / 60)); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local2); _local5.CreateFixture(_local3); } } }//package com.objects.gameplay.special
Section 139
//Immigrant (com.objects.gameplay.special.Immigrant) package com.objects.gameplay.special { import flash.events.*; import com.objects.gameplay.*; public class Immigrant extends WorldObject { override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); DocumentClass(root).immigrants.push(this); } override protected function event_removedFromStage(_arg1:Event):void{ super.event_removedFromStage(_arg1); DocumentClass(root).immigrants.splice(DocumentClass(root).immigrants.indexOf(this), 1); } } }//package com.objects.gameplay.special
Section 140
//LookoutPostA (com.objects.gameplay.special.LookoutPostA) package com.objects.gameplay.special { import flash.events.*; import com.objects.gameplay.*; public class LookoutPostA extends WorldObject { public function LookoutPostA(){ super(1); } override protected function event_addedToStage(_arg1:Event):void{ super.event_addedToStage(_arg1); if (!collidable){ return; }; } } }//package com.objects.gameplay.special
Section 141
//LookoutPostB (com.objects.gameplay.special.LookoutPostB) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.geom.*; import com.objects.gameplay.*; import com.objects.gameplay.shapes.*; public class LookoutPostB extends WorldObject { public var helper2:Box; public var helper:Box; override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2BodyDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.position = new b2Vec2((x / 30), (y / 30)); _local2.angle = (rotation * (Math.PI / 180)); _local2.userData = this; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); var _local4:Rectangle = helper.getBounds(helper); b2PolygonShape(_local3.shape).SetAsOrientedBox((((_local4.width * helper.scaleX) * scaleX) / 60), (((_local4.height * helper.scaleY) * scaleY) / 60), new b2Vec2(((helper.x * scaleX) / 30), ((helper.y * scaleY) / 30)), (helper.rotation * (Math.PI / 180))); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local2); _local5.CreateFixture(_local3); _local4 = helper2.getBounds(helper2); b2PolygonShape(_local3.shape).SetAsOrientedBox((((_local4.width * helper2.scaleX) * scaleX) / 60), (((_local4.height * helper2.scaleY) * scaleY) / 60), new b2Vec2(((helper2.x * scaleX) / 30), ((helper2.y * scaleY) / 30)), (helper2.rotation * (Math.PI / 180))); _local5.CreateFixture(_local3); } } }//package com.objects.gameplay.special
Section 142
//Plank (com.objects.gameplay.special.Plank) package com.objects.gameplay.special { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.geom.*; import com.objects.gameplay.*; import com.objects.gameplay.shapes.*; public class Plank extends WorldObject { public var helper:Box; override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2BodyDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2BodyDef(); _local2.position = new b2Vec2((x / 30), (y / 30)); _local2.angle = (rotation * (Math.PI / 180)); _local2.userData = this; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); if (activePhysics){ _local3.density = 0.1; }; var _local4:Rectangle = getChildAt(0).getBounds(this); b2PolygonShape(_local3.shape).SetAsBox(((_local4.width * scaleX) / 60), ((_local4.height * scaleY) / 60)); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local2); _local5.CreateFixture(_local3); } } }//package com.objects.gameplay.special
Section 143
//Wheel (com.objects.gameplay.special.Wheel) package com.objects.gameplay.special { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import com.objects.gameplay.*; public class Wheel extends WorldObject { public var leftWheel:MovieClip; override protected function event_addedToStage(_arg1:Event):void{ var _local2:b2FixtureDef; super.event_addedToStage(_arg1); if (!collidable){ return; }; _local2 = new b2FixtureDef(); _local2.shape = new b2CircleShape((width / 60)); if (activePhysics){ _local2.density = 1; }; _local2.restitution = 0.7; _local2.friction = 1; var _local3:b2BodyDef = new b2BodyDef(); _local3.position = new b2Vec2((x / 30), (y / 30)); _local3.userData = this; var _local4:b2Body = DocumentClass(root).world.CreateBody(_local3); _local4.CreateFixture(_local2); } } }//package com.objects.gameplay.special
Section 144
//FinishLine (com.objects.gameplay.FinishLine) package com.objects.gameplay { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import flash.events.*; import com.debug.*; import com.objects.gameplay.shapes.*; import com.states.*; public class FinishLine extends MovieClip { public var endWall:Box; public function FinishLine(){ addFrameScript(0, frame1); this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage); } private function event_addedToStage(_arg1:Event):void{ var _local3:b2FixtureDef; removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); DataTracer.traceData("End Wall Starting"); var _local2:Sprite = this.endWall; _local3 = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsBox((_local2.width / 60), (_local2.height / 60)); _local3.density = 0; _local3.restitution = 0; var _local4:b2BodyDef = new b2BodyDef(); _local4.userData = _local2; _local4.position = new b2Vec2(((x + _local2.x) / 30), ((y + _local2.y) / 30)); var _local5:b2Body = DocumentClass(root).world.CreateBody(_local4); _local5.CreateFixture(_local3); DataTracer.traceData((((("End Wall Created (" + _local4.position.x) + "-") + (_local4.position.x * 30)) + " )")); } public function handleCollision(_arg1:b2Contact):void{ if (!root){ return; }; var _local2:DisplayObject = _arg1.GetFixtureA().GetBody().GetUserData(); var _local3:DisplayObject = _arg1.GetFixtureB().GetBody().GetUserData(); var _local4:Truck = Gameplay(DocumentClass(root).activeGameState).player; _local4.baseBody.SetLinearVelocity(new b2Vec2()); _local4.leftWheelBody.SetLinearVelocity(new b2Vec2()); _local4.rightWheelBody.SetLinearVelocity(new b2Vec2()); _local4.leftWheelBody.SetAngularVelocity(0); _local4.rightWheelBody.SetAngularVelocity(0); if ((((((((_local4 == _local2)) || (_local4.contains(_local2)))) || ((_local4 == _local3)))) || (_local4.contains(_local3)))){ Gameplay(DocumentClass(root).activeGameState).event_levelComplete(null); }; } function frame1(){ stop(); } } }//package com.objects.gameplay
Section 145
//GameContactListener (com.objects.gameplay.GameContactListener) package com.objects.gameplay { import Box2D.Dynamics.*; import Box2D.Dynamics.Contacts.*; public class GameContactListener extends b2ContactListener { override public function EndContact(_arg1:b2Contact):void{ super.EndContact(_arg1); var _local2:b2Body = _arg1.GetFixtureA().GetBody(); var _local3:b2Body = _arg1.GetFixtureB().GetBody(); if (_local2.GetUserData()){ if (_local2.GetUserData().parent.hasOwnProperty("handleEndCollision")){ _local2.GetUserData().parent.handleEndCollision(_arg1); } else { if (_local2.GetUserData().hasOwnProperty("handleEndCollision")){ _local2.GetUserData().handleEndCollision(_arg1); }; }; }; if (_local3.GetUserData()){ if (_local3.GetUserData().parent.hasOwnProperty("handleEndCollision")){ _local3.GetUserData().parent.handleEndCollision(_arg1); } else { if (_local3.GetUserData().hasOwnProperty("handleEndCollision")){ _local3.GetUserData().handleEndCollision(_arg1); }; }; }; } override public function BeginContact(_arg1:b2Contact):void{ super.BeginContact(_arg1); var _local2:b2Body = _arg1.GetFixtureA().GetBody(); var _local3:b2Body = _arg1.GetFixtureB().GetBody(); if (_local2.GetUserData()){ if (_local2.GetUserData().parent.hasOwnProperty("handleCollision")){ _local2.GetUserData().parent.handleCollision(_arg1); } else { if (_local2.GetUserData().hasOwnProperty("handleCollision")){ _local2.GetUserData().handleCollision(_arg1); }; }; }; if (_local3.GetUserData()){ if (_local3.GetUserData().parent.hasOwnProperty("handleCollision")){ _local3.GetUserData().parent.handleCollision(_arg1); } else { if (_local3.GetUserData().hasOwnProperty("handleCollision")){ _local3.GetUserData().handleCollision(_arg1); }; }; }; } } }//package com.objects.gameplay
Section 146
//HelperShape (com.objects.gameplay.HelperShape) package com.objects.gameplay { import flash.display.*; public class HelperShape extends Sprite { public var type:String;// = "" public function HelperShape(){ visible = false; } } }//package com.objects.gameplay
Section 147
//Levels (com.objects.gameplay.Levels) package com.objects.gameplay { public class Levels { public static const ALL_LEVELS:Array = [LEVEL_1, LEVEL_2, LEVEL_3, LEVEL_4, LEVEL_5, LEVEL_6]; public static const LEVEL_1:Array = "78,0,300,false,200,300,false,366.7,313.1,false,486.5,338,false,553.8,362.8,false,628.7,400.1,false,681.1,432.4,false,795.9,457.3,false,918.1,467.2,false,985.5,499.5,false,1030.4,546.7,false,1095.2,591.5,false,1157.6,596.4,false,1197.5,603.9,false,1299.8,586.5,false,1419.6,576.6,false,1506.9,596.4,false,1669.1,516.9,false,1746.4,499.5,false,1826.3,502,false,1871.2,509.5,false,1928.5,516.9,false,1971,497,false,2050.8,452.3,false,2098.2,439.9,false,2155.6,427.4,false,2225.4,425,false,2295.3,429.9,false,2377.6,434.9,false,2507.4,462.2,false,2567.2,474.7,false,2614.6,494.5,false,2672,504.5,false,2771.8,469.7,false,2834.2,427.4,false,2894.1,400.1,false,2953.9,380.2,false,3096.2,357.9,false,3136.1,338,false,3191,318.1,false,3255.8,298.2,false,3345.6,290.8,false,3408,260.9,false,3535.3,241.1,false,3625.1,236.1,false,3752.3,236.1,false,3842.2,248.5,false,3927,298.2,false,3961.9,323.1,false,4031.8,367.8,false,4091.7,377.7,false,4169,382.7,false,4231.4,387.7,false,4283.8,420,false,4373.6,477.1,false,4485.8,519.4,false,4610.6,536.8,false,4675.5,554.2,false,4732.8,574.1,false,4760.3,601.4,false,4880,616.3,false,4937.4,621.3,false,5047.2,636.2,false,5107.1,661,false,5184.4,688.4,false,5314.1,676,false,5483.8,628.7,false,5598.6,593.9,false,5705.8,579,false,5810.6,564.1,false,5907.9,556.7,false,6122.5,554.2,false,6192.4,571.6,false,6352,564.1,false,6499.2,526.8,false,6589,509.5,false,6686.3,497,false,7086.3,497,false,39,Police Car,864.9,443.9,1,9,false,true,0,Coin,392.55,275,1,0,,,0,Coin,482.35,291.6,1,0,,,0,Coin,555.55,321.4,1,0,,,0,Coin,645.35,364.5,1,0,,,0,Coin,785.1,400.95,1,0,,,0,Coin,904.85,391,1,0,,,0,Coin,994.65,420.8,1,0,,,0,Coin,1270.8,550.05,1,0,,,0,Coin,1363.9,540.1,1,0,,,0,Coin,1430.45,540.1,1,42,,,0,Coin,1723.2,444,1,0,,,0,Coin,1829.65,450.65,1,0,,,0,Coin,1912.8,463.9,1,0,,,0,Coin,2395.15,381.05,1,0,,,0,Coin,2498.3,404.25,1,0,,,0,Coin,2581.45,417.5,1,0,,,0,Coin,2994,298.2,1,0,,,0,Coin,3070.5,291.6,1,0,,,0,Coin,3293.4,235.25,1,0,,,0,Coin,3483,198.8,1,0,,,0,Coin,3599.45,182.25,1,0,,,0,Coin,3715.85,188.85,1,0,,,0,Coin,3782.4,195.5,1,75,,,0,Coin,4048.5,311.45,1,0,,,0,Coin,4118.35,324.7,1,0,,,0,Coin,4201.5,328.05,1,0,,,0,Coin,4853.55,523.55,1,0,,,0,Coin,4913.45,533.5,1,0,,,0,Coin,5019.9,566.6,1,0,,,0,Coin,5229.5,636.2,1,0,,,0,Coin,5335.95,619.65,1,0,,,0,Coin,5482.3,573.25,1,0,,,0,Coin,5595.4,553.35,1,0,,,0,Bandit,4534.25,503.65,1,15,,,0,Bandit,2791.2,427.35,1,-27,,,0,Bandit,2179.05,407.6,1,0,,,0,Bandit,2259.1,404.2,1,0,,,0,Bandit,1127.75,569.75,1,0,,,0".split(","); public static const LEVEL_2:Array = "69,0,300,false,200,300,false,335.3,298.2,false,562.8,306.1,false,654.6,318.1,false,818.3,337.9,false,1029.9,381.7,false,1165.6,413.5,false,1261.4,445.3,false,1429,489,false,1688.5,560.6,false,1772.3,576.5,false,1844.2,588.4,false,1960,596.4,false,2235.4,616.3,false,2379.1,620.3,false,2526.8,608.4,false,2690.5,596.4,false,2858.1,560.6,false,3205.4,465.2,false,3393,417.5,false,3572.7,405.6,false,3772.2,397.6,false,3939.9,401.6,false,4099.6,413.5,false,4159.4,417.5,false,4331.1,421.5,false,4434.9,401.6,false,4494.8,365.8,false,4602.5,294.2,false,4634.5,278.3,false,4690.4,258.4,false,4818.1,238.6,false,4917.9,238.6,false,5005.7,254.5,false,5141.4,278.3,false,5225.3,310.1,false,5289.1,349.9,false,5361,397.6,false,5520.7,465.2,false,5712.3,485.1,false,5820,524.9,false,5871.9,556.7,false,5911.9,596.4,false,6059.5,687.9,false,6059.6,688,false,6151.3,711.7,false,6362.9,727.6,false,6363,727.7,false,6422.8,719.7,false,6562.5,703.8,false,6686.2,656.1,false,6766.1,580.5,false,6853.9,540.8,false,6949.7,520.9,false,7001.6,516.9,false,7121.3,485.1,false,7221.1,409.5,false,7257.1,389.7,false,7408.7,365.8,false,7560.4,338,false,7644.3,286.3,false,7744.1,210.7,false,7823.9,182.9,false,7927.7,182.9,false,7995.5,174.9,false,8103.3,143.1,false,8203.1,135.2,false,8603.1,135.2,false,23,Crashed Plane,2303.3,528.85,1,0,false,true,0,Police Car,1173.6000000000001,393.75,1,15,false,true,0,Plank,1068.75,381.8,0.6000000000000001,-9,false,true,0,Coin,401.5,238.15,1,0,true,true,0,Coin,487.40000000000003,245.05,1,0,true,true,0,Coin,570.95,256.65000000000003,1,0,true,true,0,Coin,661.45,268.2,1,0,true,true,0,Coin,751.95,277.45,1,0,true,true,0,Coin,842.45,289,1,0,true,true,0,Coin,1225.4,330.6,1,0,true,true,0,Coin,1304.25,330.6,1,0,true,true,0,Coin,1376.25,339.85,1,0,true,true,0,Coin,1434.25,351.40000000000003,1,0,true,true,0,Coin,1499.25,372.20000000000005,1,0,true,true,0,Coin,2439.2000000000003,467,1,0,true,true,0,Coin,2497.2000000000003,455.45000000000005,1,0,true,true,0,Coin,2569.15,462.40000000000003,1,0,true,true,0,Coin,2624.8500000000004,480.85,1,0,true,true,0,Coin,3472,369.90000000000003,1,0,true,true,0,Coin,3550.9,353.70000000000005,1,0,true,true,0,Coin,3611.25,349.1,1,0,true,true,0,Coin,3678.55,351.40000000000003,1,0,true,true,0,Coin,3738.9,358.35,1,0,true,true,0".split(","); public static const LEVEL_3:Array = "44,0,300,false,200,300,false,364.1,342.4,false,563.6,333.2,false,648.7,377.3,false,837.2,388.4,false,942.5,449.2,false,1108.9,456.5,false,1190.2,519.1,false,1293.7,526.5,false,1441.5,500.7,false,1533.9,508.1,false,1633.7,559.6,false,1700.3,655.3,false,1837,692.2,false,1959,681.1,false,2110.5,648,false,2302.7,688.5,false,2561.5,692.2,false,2894.2,684.8,false,3079,607.5,false,3197.2,603.8,false,3297.1,530.3,false,3448.6,519.1,false,3485.6,467.6,false,3592.7,456.5,false,3733.2,360.8,false,3851.5,368.2,false,4017.8,423.4,false,4213.7,419.7,false,4306.1,482.3,false,4405.9,497,false,4446.6,526.5,false,4531.6,489.7,false,4646.2,522.8,false,4709,489.7,false,4794,537.5,false,4890.1,474.9,false,4953,515.4,false,5030.6,482.3,false,5089.7,530.2,false,5137.8,519.1,false,5267.2,500.7,false,5667.2,500.7,false,23,Police Car,1214.2,486.3,1,18,true,true,0,Lookout Post B,2587.4,636.95,1,0,false,true,0,Bandit,2028.6000000000001,649.7,1,0,,,0,Bandit,1493.15,482.95000000000005,1,6,,,0,Bandit,3142.25,584.95,1,0,,,0,Bandit,3336.75,505.95000000000005,1,0,,,0,Bandit,3398.15,502.15000000000003,1,0,,,0,Coin,3222.9,517.45,1,0,,,0,Coin,3521,406.55,1,0,,,0,Coin,2686.75,539.1,1,0,,,0,Coin,2616.4,537.8000000000001,1,0,,,0,Coin,3009.2000000000003,570.95,1,0,,,0,Coin,2901.7000000000003,621.95,1,0,,,0,Coin,1349.75,469,1,0,,,0,Coin,1008.2,407.85,1,0,,,0,Coin,401.75,290.6,1,0,,,0,Coin,504.1,290.6,1,0,,,0,Coin,690.9000000000001,332.65000000000003,1,0,,,0,Coin,785.5500000000001,344.1,1,0,,,0,Coin,2185.25,604.1,1,0,,,0,Coin,2281.2000000000003,593.9,1,0,,,0,Coin,2235.15,588.85,1,0,,,0,Lookout Post A,2635.4500000000003,515.45,1,0,false,true,1".split(","); public static const LEVEL_4:Array = "157,0,300,false,200,300,false,317.9,299.6,false,419.1,336.5,false,561.7,347.9,false,657.2,346.5,false,725.6,320.9,false,819.7,315.2,false,885.3,313.8,false,928.1,285.4,false,979.4,288.3,false,1023.6,264.1,false,1102,271.2,false,1183.3,261.3,false,1254.6,264.1,false,1311.6,254.2,false,1394.3,264.1,false,1482.7,251.3,false,1575.3,267,false,1649.5,247.1,false,1739.3,262.7,false,1794.9,242.8,false,1971.8,234.3,false,1991.6,434.5,false,2087.1,430.3,false,2199.7,448.7,false,2235.4,434.5,false,2288.1,437.4,false,2363.7,390.5,false,2429.3,400.4,false,2517.7,387.7,false,2631.7,389.1,false,2772.9,394.8,false,2911.1,350.7,false,2999.5,347.9,false,3060.8,312.4,false,3176.3,292.5,false,3234.8,252.8,false,3374.5,258.4,false,3484.3,285.4,false,3558.4,373.5,false,3629.7,394.8,false,3733.7,411.8,false,3890.6,418.9,false,3984.7,374.9,false,4078.7,366.4,false,4178.5,315.2,false,4304,309.6,false,4413.8,302.4,false,4566.3,309.5,false,4650.4,309.5,false,4731.7,296.8,false,4800.1,320.9,false,4885.7,366.4,false,4927,434.5,false,5021.1,484.2,false,5116.7,491.3,false,5200.8,525.4,false,5216.4,562.3,false,5296.3,592.1,false,5363.3,595,false,5438.8,593.6,false,5551.5,568,false,5637,559.5,false,5709.7,538.2,false,5799.5,541,false,5886.5,572.3,false,5953.5,599.3,false,6081.8,602.1,false,6481.8,602.1,false,6537.6,596.4,false,6555.5,579.5,false,6567.5,561.6,false,6583.5,554.6,false,6614.4,549.7,false,6648.3,547.7,false,6666.3,539.7,false,6676.3,516.9,false,6683.3,504.9,false,6701.2,492,false,6732.2,485.1,false,6760.1,482.1,false,6767.1,482.1,false,6811,473.2,false,6848.9,453.3,false,6864.9,447.3,false,6898.8,443.3,false,6927.8,441.3,false,6948.7,443.3,false,6973.7,452.3,false,6991.6,463.2,false,7003.6,472.2,false,7065.5,475.1,false,7125.4,453.3,false,7145.3,449.3,false,7171.3,450.3,false,7210.2,468.2,false,7226.1,483.1,false,7237.1,501,false,7243.1,521.9,false,7259.1,556.7,false,7278,574.6,false,7295,582.5,false,7331.9,590.4,false,7356.9,606.3,false,7381.8,624.2,false,7410.8,619.3,false,7494.6,627.2,false,7525.5,637.2,false,7568.4,625.2,false,7604.4,631.2,false,7614.3,635.2,false,7645.3,646.1,false,7729.1,639.1,false,7761,638.2,false,7785,649.1,false,7796,653.1,false,7871.8,614.3,false,7933.7,652.1,false,8002.6,616.3,false,8067.4,660,false,8123.3,616.3,false,8184.2,642.1,false,8254,604.4,false,8315.9,631.2,false,8380.8,633.2,false,8445.6,637.2,false,8516.5,641.1,false,8561.4,631.2,false,8588.3,614.3,false,8600.3,600.4,false,8608.3,585.5,false,8615.3,571.5,false,8626.3,561.6,false,8652.2,555.6,false,8672.2,554.6,false,8702.1,555.6,false,8729,555.6,false,8765,555.6,false,8801.9,570.6,false,8839.8,589.4,false,8885.7,606.3,false,8938.6,629.2,false,8963.6,636.2,false,9015.5,654.1,false,9050.4,662,false,9084.3,659,false,9134.2,654.1,false,9161.2,622.2,false,9203.1,614.3,false,9253.9,591.4,false,9304.8,572.5,false,9376.7,571.5,false,9442.6,545.7,false,9536.4,535.8,false,9585.3,533.8,false,9985.3,533.8,false,29,Coin,743.45,258.45,1,0,false,false,0,Coin,823.3,248.5,1,0,false,false,0,Coin,898.15,243.55,1,0,false,false,0,Coin,987.95,238.55,1,0,false,false,0,Coin,1222.5,218.7,1,0,false,false,0,Coin,1362.2,203.8,1,0,false,false,0,Coin,1551.8,218.7,1,0,false,false,0,Coin,1721.5,213.7,1,24,false,false,0,Coin,2265.4,382.7,1,0,false,false,0,Coin,2719.45,333,1,0,false,false,0,Coin,2644.6,313.15,1,0,false,false,0,Coin,2934,298.2,1,0,false,false,0,Coin,3278.3,203.8,1,0,false,false,0,Coin,4016.8,313.15,1,0,false,false,0,Coin,4111.65,273.35,1,0,false,false,0,Coin,4245.45,247.4,1,0,false,false,0,Coin,4290.25,265.45,1,0,false,false,0,Coin,5204.4,457.25,1,0,false,false,0,Coin,5274.25,467.2,1,0,false,false,0,Coin,5349.1,492.05,1,0,false,false,0,Coin,5409,521.9,1,0,false,false,0,Coin,6022.75,541.75,1,0,false,false,0,Lookout Post B,4436,258.35,1,0,false,true,0,Bandit,5079.65,467.2,1,0,false,false,0,Bandit,1841.95,220.1,1,0,false,false,0,Bandit,1912.8,217.25,1,0,false,false,0,Bandit,3809.35,391.9,1,0,false,false,0,Bandit,5756.75,515.5,1,0,false,false,0,Broken Bridge,2090.45,301.55,0.9000000000000002,-6,false,true,1".split(","); public static const LEVEL_5:Array = "316,0,300,false,200,300,false,276.4,296.2,false,295.4,281.3,false,319.3,262.4,false,357.2,251.5,false,371.2,250.5,false,399.2,252.5,false,427.1,250.5,false,446.1,240.5,false,457,226.6,false,479,205.7,false,500.9,193.8,false,501,193.8,false,512.9,190.8,false,533.9,189.8,false,541.9,189.8,false,572.8,185.9,false,600.7,180.9,false,623.7,166,false,658.6,158,false,706.5,158,false,741.4,141.1,false,926.1,90.4,false,957,78.5,false,991.9,84.5,false,1015.9,91.4,false,1050.8,84.5,false,1075.8,79.5,false,1088.7,82.5,false,1107.7,91.4,false,1137.6,101.4,false,1162.6,99.4,false,1173.6,93.4,false,1190.5,85.5,false,1227.5,80.5,false,1243.4,84.5,false,1262.4,93.4,false,1274.4,98.4,false,1317.3,101.9,false,1372.2,79.5,false,1392.1,72,false,1419.6,77,false,1439.5,84.5,false,1459.5,94.4,false,1479.5,101.9,false,1494.4,101.9,false,1531.8,87,false,1569.3,84.5,false,1599.2,96.9,false,1616.7,106.8,false,1641.6,106.8,false,1674.1,94.4,false,1714,84.5,false,1743.9,91.9,false,1786.3,109.3,false,1836.2,111.8,false,1871.2,99.4,false,1891.1,77,false,1898.6,67.1,false,1953.5,39.7,false,2033.3,34.8,false,2080.7,37.3,false,2123.1,57.1,false,2163.1,39.7,false,2227.9,59.6,false,2265.4,47.2,false,2305.3,67.1,false,2335.2,47.2,false,2395.1,67.1,false,2430,39.7,false,2469.9,77,false,2504.9,47.2,false,2539.8,72,false,2562.2,47.2,false,2607.2,37.3,false,2654.6,54.6,false,2689.5,77,false,2712,109.3,false,2734.4,151.6,false,2744.4,181.4,false,2776.8,221.2,false,2826.7,236.1,false,2866.6,248.5,false,2919,246,false,2956.5,233.6,false,2976.4,226.1,false,3031.3,221.2,false,3066.2,231.1,false,3098.7,248.5,false,3113.6,280.8,false,3136.1,320.6,false,3158.5,350.4,false,3208.5,390,false,3275.8,417.3,false,3348.1,427.4,false,3393,427.4,false,3452.9,422.5,false,3515.3,420,false,3602.6,422.5,false,3719.9,417.5,false,3804.7,415,false,3869.6,417.5,false,3966.9,405.1,false,4034.2,385.2,false,4081.6,365.3,false,4106.6,328,false,4119.1,305.6,false,4139,288.3,false,4303.7,283.3,false,4356.1,260.9,false,4396,246,false,4435.9,233.6,false,4800.2,116.8,false,4855.1,111.8,false,4892.5,131.7,false,4949.9,139.1,false,4977.3,111.8,false,4999.8,77,false,5037.2,62.1,false,5069.6,57.1,false,5114.6,77,false,5134.5,101.9,false,5176.9,106.8,false,5209.4,106.8,false,5234.3,99.4,false,5274.2,84.5,false,5301.7,84.5,false,5326.6,114.3,false,5331.6,131.7,false,5344.1,173.9,false,5364,206.2,false,5386.5,231.1,false,5436.4,243.5,false,5473.8,246,false,5526.2,246,false,5566.1,238.6,false,5628.5,213.7,false,5658.4,193.8,false,5683.4,173.9,false,5720.8,161.5,false,5793.2,164,false,5828.1,181.4,false,5875.5,193.8,false,5900.4,186.4,false,5922.9,171.5,false,5952.8,151.6,false,5992.7,129.2,false,6022.7,126.7,false,6057.6,124.2,false,6095,116.8,false,6115,101.9,false,6137.5,82,false,6217.3,57.1,false,6232.3,59.6,false,6244.7,72,false,6264.7,89.4,false,6287.1,111.8,false,6309.6,121.8,false,6369.5,139.1,false,6394.4,144.1,false,6429.3,146.6,false,6464.3,141.6,false,6489.2,129.2,false,6529.1,111.8,false,6541.6,96.9,false,6564.1,77,false,6601.5,74.5,false,6628.9,109.3,false,6646.4,129.2,false,6703.8,154.1,false,6733.7,161.5,false,6788.6,159,false,6826,146.6,false,6858.5,116.8,false,6888.4,87,false,6925.8,67.1,false,6938.3,77,false,6968.2,116.8,false,6988.2,136.7,false,7030.6,151.6,false,7055.6,159,false,7100.5,161.5,false,7130.4,169,false,7162.9,186.4,false,7180.3,206.2,false,7192.8,233.6,false,7212.8,263.4,false,7252.7,293.2,false,7285.1,300.7,false,7419.8,298.2,false,7489.7,285.8,false,7539.6,265.9,false,7552.1,258.4,false,7599.5,248.5,false,7689.3,246,false,7714.2,228.6,false,7729.2,216.2,false,7776.6,203.7,false,7834,188.8,false,7853.9,154,false,7936.3,149.1,false,7953.7,149.1,false,7998.6,139.1,false,8008.6,131.7,false,8051,114.3,false,8118.4,106.8,false,9046.5,104.3,false,9096.4,104.3,false,9118.9,99.4,false,9173.8,96.9,false,9201.2,91.9,false,9236.2,77,false,9258.6,64.6,false,9283.6,52.1,false,9316,34.8,false,9350.9,24.8,false,9378.4,22.3,false,9405.8,27.3,false,9438.2,39.7,false,9473.2,49.7,false,9498.1,54.6,false,9563,79.5,false,10029.5,263.4,false,10096.9,293.2,false,10136.8,328,false,10164.3,360.3,false,10209.2,402.6,false,10256.6,422.4,false,10301.5,429.9,false,10341.4,422.4,false,10421.2,402.6,false,10481.1,380.2,false,10526,365.3,false,10603.4,370.3,false,10698.2,365.3,false,10768,367.8,false,10855.4,377.7,false,10937.7,370.3,false,10980.1,352.9,false,10997.6,342.9,false,11040,320.6,false,11079.9,310.6,false,11129.8,303.2,false,11167.2,303.2,false,11207.1,303.2,false,11239.6,303.2,false,11304.4,303.2,false,11316.9,298.2,false,11341.9,288.3,false,11391.7,263.4,false,11429.1,233.6,false,11481.5,218.7,false,11528.9,218.7,false,11621.3,233.6,false,11663.7,251,false,11693.6,270.9,false,11721.1,283.3,false,11793.4,295.7,false,11843.3,288.3,false,11863.3,278.3,false,11880.7,265.9,false,11915.7,246,false,11938.1,241,false,11990.5,243.5,false,12030.4,263.4,false,12055.4,293.2,false,12115.2,335.5,false,12152.7,367.8,false,12205.1,387.7,false,12252.5,385.2,false,12282.4,380.2,false,12312.3,380.2,false,12402.2,380.2,false,12437.1,397.6,false,12529.4,429.9,false,12621.8,439.8,false,12646.7,439.8,false,12699.1,427.4,false,12806.4,432.4,false,12866.3,449.8,false,12911.2,469.6,false,12986,499.5,false,13048.4,509.4,false,13098.3,492,false,13138.2,464.7,false,13180.6,442.3,false,13218,424.9,false,13240.5,392.6,false,13270.4,387.6,false,13337.8,382.7,false,13377.7,365.3,false,13412.6,350.4,false,13442.6,345.4,false,13512.4,347.9,false,13532.4,345.4,false,13569.8,323.1,false,13589.8,308.2,false,13624.7,295.7,false,13677.1,288.3,false,13776.9,285.8,false,13809.3,280.8,false,13844.3,270.9,false,13859.2,263.4,false,13939.1,260.9,false,13984,263.4,false,14023.9,265.9,false,14081.3,270.9,false,14131.2,298.2,false,14208.5,308.2,false,14211,305.7,false,14245.9,290.8,false,14283.4,278.3,false,14328.3,283.3,false,14817.2,268.4,false,15217.2,268.4,false,0".split(","); public static const LEVEL_6:Array = "184,0,300,false,200,300,false,298.4,292.2,false,350.3,271.4,false,400.2,236.6,false,474,227.6,false,541.9,229.6,false,598.8,236.6,false,629.7,247.5,false,651.6,265.4,false,677.6,267.4,false,693.6,261.4,false,706.5,257.4,false,733.5,242.5,false,771.4,245.5,false,794.4,256.4,false,821.3,265.4,false,852.2,264.4,false,876.2,242.5,false,897.2,229.6,false,919.1,227.6,false,932.1,227.6,false,958,232.6,false,990,243.5,false,1003.9,250.5,false,1024.9,258.4,false,1059.8,265.4,false,1098.7,262.4,false,1123.7,249.5,false,1144.6,234.6,false,1189.5,228.6,false,1212.5,230.6,false,1238.4,238.6,false,1270.4,252.5,false,1288.3,260.4,false,1327.2,263.4,false,1367.2,267.4,false,1398.1,277.3,false,1425.1,291.2,false,1456,295.2,false,1501.9,307.2,false,1524.9,321.1,false,1552.8,351.9,false,1571.7,385.7,false,1598.7,385.7,false,1650.6,385.7,false,1745.4,397.6,false,1803.3,387.6,false,1843.2,361.8,false,1881.1,395.6,false,1917,361.9,false,1963.9,397.6,false,2010.9,363.8,false,2035.8,398.6,false,2103.7,378.7,false,2170.5,370.7,false,2229.4,337.9,false,2273.3,317.1,false,2375.1,295.2,false,2433,267.4,false,2467.9,224.6,false,2516.8,219.7,false,2566.7,220.7,false,2622.6,158,false,2666.5,142.1,false,2743.4,134.2,false,2779.3,95.4,false,2831.2,78.5,false,2862.1,69.6,false,2891.1,38.7,false,2947.9,43.7,false,2988.9,8.9,false,3060.7,-1,false,3125.5,-3,false,3188.4,7,false,3241.3,25.8,false,3309.2,19.9,false,3370,42.7,false,3418.9,67.6,false,3437.9,100.4,false,3491.8,100.4,false,3528.7,114.3,false,3551.7,129.2,false,3570.6,160,false,3623.5,164,false,3709.3,177.9,false,3785.2,160,false,3866,132.2,false,3918.9,113.3,false,3995.8,111.3,false,4446.8,110.3,false,4443.8,352,false,4603.5,347.9,false,4699.3,345.9,false,4876.1,342,false,5139.3,336.9,false,5299.1,311.1,false,5323,290.2,false,5359.9,270.3,false,5387.9,227.6,false,5420.8,203.7,false,5458.7,181.9,false,5527.6,170.9,false,5598.5,181.9,false,5693.3,210.7,false,5738.2,259.4,false,5809,302.1,false,5894.9,322,false,6017.6,324,false,6110.4,303.1,false,6153.3,284.2,false,6210.2,262.4,false,6271.1,268.3,false,6311,294.2,false,6357.9,340.9,false,6389.9,368.7,false,6454.7,376.7,false,6521.6,378.7,false,6611.4,403.6,false,6647.3,437.4,false,6675.2,461.2,false,6719.1,469.2,false,6820.9,470.2,false,6899.8,430.4,false,6949.7,411.5,false,6996.6,409.5,false,7039.5,390.6,false,7096.4,382.7,false,7557.4,386.7,false,7646.3,386.7,false,7692.2,399.6,false,7748,422.4,false,7803.9,440.3,false,7833.9,470.2,false,7876.8,501,false,7983.6,550.7,false,8076.4,585.5,false,8127.3,580.5,false,8179.2,564.6,false,8211.1,552.7,false,8261,575.5,false,8306,586.3,false,8366.8,579.5,false,8406.7,561.6,false,8436.6,534.8,false,8478.5,518.9,false,8544.4,513.9,false,8594.3,470.2,false,8645.2,444.3,false,8720,438.4,false,8822.8,433.4,false,8913.6,432.4,false,8964.6,415.5,false,8988.5,391.6,false,9008.5,367.8,false,9048.4,356.8,false,9091.3,349.9,false,9114.3,347.9,false,9151.2,342.9,false,9169.2,319.1,false,9204.1,301.2,false,9220.1,297.2,false,9267,288.3,false,9307.9,288.3,false,9366.7,302.2,false,9406.7,306.2,false,9431.6,325.1,false,9497.5,285.3,false,9529.4,328,false,9545.4,297.2,false,9581.3,339,false,9605.2,303.2,false,9631.2,332,false,9650.2,305.2,false,9689.1,303.2,false,9711,331,false,9759.9,364.8,false,9818.8,373.8,false,9889.6,388.7,false,9927.6,416.5,false,10039.3,435.4,false,10368.7,439.4,false,10858.7,427.4,false,11258.7,427.4,false,73,Lookout Post B,7422.75,322.1,1,0,false,true,0,Crashed Plane,10189.05,344.95,1,0,false,true,0,Coin,10211.7,318.1,1,0,,,0,Coin,10155.55,341.7,1,0,,,0,Coin,10101.9,379,1,0,,,0,Coin,10040.8,401.35,1,3,,,0,Coin,8899.35,390.2,1,0,,,0,Coin,8819.5,388.95,1,0,,,0,Coin,8750.9,391.4,1,-12,,,0,Coin,8679.8,402.6,1,0,,,0,Coin,8346.75,535.55,1,0,,,0,Coin,8288.15,525.6,1,0,,,0,Coin,8217,492.05,1,0,,,0,Coin,8147.15,526.85,1,0,,,0,Coin,8086.05,538.05,1,0,,,0,Coin,7519.7,241.1,1,0,,,0,Coin,7442.3,238.6,1,0,,,0,Coin,7370,241.1,1,0,,,0,Coin,7320.1,283.35,1,0,,,0,Coin,7273.95,321.85,1,-6,,,0,Coin,6589.1,349.15,1,0,,,0,Coin,6653.95,382.7,1,0,,,0,Coin,6721.3,427.45,1,0,,,0,Coin,6323.35,264.7,1,0,,,0,Coin,6263.45,223.7,1,0,,,0,Coin,6191.1,216.25,1,0,,,0,Coin,6127.5,247.3,1,0,,,0,Coin,6075.1,267.15,1,0,,,0,Coin,5325.4,227.4,1,0,,,0,Coin,5380.25,178.95,1,0,,,0,Coin,5441.4,142.9,1,0,,,0,Coin,5532.45,136.7,1,0,,,0,Coin,4453.4,58.4,1,0,,,0,Coin,4533.25,42.25,1,0,,,0,Coin,4621.8,24.8,1,0,,,0,Coin,4705.4,1.25,1,0,,,0,Coin,3499.1,64.6,1,0,,,0,Coin,3586.45,110.6,1,0,,,0,Coin,3264.6,-24.85,1,0,,,0,Coin,3386.85,0,1,0,,,0,Coin,2128.15,318.1,1,0,,,0,Coin,2331.5,243.55,1,-3,,,0,Coin,2804.3,19.85,1,0,,,0,Coin,1617.95,334.25,1,0,,,0,Coin,1561.8,275.85,1,0,,,0,Coin,1488.15,247.25,1,0,,,0,Coin,1405.8,231.1,1,0,,,0,Coin,1319.75,207.5,1,0,,,0,Coin,1237.45,185.15,1,0,,,0,Coin,501.5,177.65,1,0,,,0,Coin,637.45,193.85,1,0,,,0,Coin,758.45,196.3,1,0,,,0,Coin,921.9,182.65,1,0,,,0,Bandit,441.6,211.2,1,0,,,0,Bandit,1067.85,244.75,1,0,,,0,Bandit,1748.95,374.05,1,0,,,0,Bandit,2528.6,197.55,1,0,,,0,Bandit,2710.7,116.8,1,0,,,0,Bandit,3028.8,-16.15,1,0,,,0,Bandit,3742.4,149.1,1,-12,,,0,Bandit,3814.7,126.8,1,-15,,,0,Bandit,4191.5,90.7,1,0,,,0,Bandit,4255.1,88.2,1,0,,,0,Bandit,4318.7,88.2,1,0,,,0,Bandit,5957.85,300.7,1,0,,,0,Bandit,6484.3,355.35,1,0,,,0,Bandit,7139.15,362.8,1,0,,,0,Bandit,7186.6,364.05,1,0,,,0,Bandit,7242.7,362.8,1,0,,,0,Bandit,8512.6,494.55,1,0,,,0,Bandit,9856.15,359.25,1,6,,,0,Broken Bridge,4577.6,198.85,1,0,false,true,1,Lookout Post A,7462.65,203.75,1,0,false,true,1".split(","); } }//package com.objects.gameplay
Section 148
//Truck (com.objects.gameplay.Truck) package com.objects.gameplay { import flash.display.*; import com.micc.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import com.sound.*; import flash.geom.*; import com.*; import com.debug.*; import com.objects.gameplay.shapes.*; import com.objects.gameplay.special.*; import com.states.*; public class Truck extends MovieClip { public var baseTopBody:b2Body; private var _damage:Number;// = 0 public var baseBody:b2Body; public var leftWheel:MovieClip; public var trailerJoint:Circle; public var rightWheel:MovieClip; public var numCoins:Number;// = 0 public var baseMain:Box; private var dustTimer:Number;// = 3 public var bobbles:Number;// = 0 public var numImmigrants:Number;// = 7 public var leftJoint:b2RevoluteJoint; public var baseTop:Box; public var leftAxel:b2PrismaticJoint; public var speed:Number; public var baseTopShape:b2Fixture; public var rightJoint:b2RevoluteJoint; public var base:MovieClip; public var numBoxes:Number;// = 0 public var axel2:Box; public var leftWheelBody:b2Body; public var baseBack:Box; public var axel1:Box; public var balance:Number;// = 100 public var baseFront:Box; private var _frontGround:Number;// = 0 public var rightWheelBody:b2Body; public var axelA:b2Body; public var axelB:b2Body; public var rightAxel:b2PrismaticJoint; private var _backGround:Number;// = 0 private var _extraGround:Number;// = 0 public function get baseMc():MovieClip{ return (this.base); } public function handleInput():void{ var _local1:Number = 3; if (((Key.isDown("left")) && ((baseBody.GetAngularVelocity() > -(_local1))))){ if (_backGround){ baseBody.SetAngularVelocity(Math.max((baseBody.GetAngularVelocity() - 1), -(_local1))); } else { baseBody.SetAngularVelocity(Math.max((baseBody.GetAngularVelocity() - 0.25), -(_local1))); }; } else { if (((Key.isDown("right")) && ((baseBody.GetAngularVelocity() < _local1)))){ if (_frontGround){ baseBody.SetAngularVelocity(Math.min((baseBody.GetAngularVelocity() + 0.5), _local1)); } else { baseBody.SetAngularVelocity(Math.min((baseBody.GetAngularVelocity() + 0.125), _local1)); }; }; }; var _local2:Number = 300; leftAxel.SetMaxMotorForce(300); rightAxel.SetMaxMotorForce(300); leftAxel.SetMotorSpeed(((leftAxel.GetMotorSpeed() - (10 * leftAxel.GetJointTranslation())) * 0.6)); rightAxel.SetMotorSpeed(((rightAxel.GetMotorSpeed() - (10 * rightAxel.GetJointTranslation())) * 0.6)); var _local3:Number = Math.max(Math.min(Math.abs((base.rotation / 90)), 1), 0.1); if (Key.isDown("up")){ leftAxel.SetMotorSpeed(((leftAxel.GetMotorSpeed() - (10 * leftAxel.GetJointTranslation())) * 0.9)); rightWheelBody.SetAngularVelocity((25 * (1 - _local3))); leftWheelBody.SetAngularVelocity((25 * (1 - _local3))); } else { if (Key.isDown("down")){ rightAxel.SetMotorSpeed(((rightAxel.GetMotorSpeed() - (10 * rightAxel.GetJointTranslation())) * 0.9)); leftWheelBody.SetAngularVelocity((-25 * (1 - _local3))); rightWheelBody.SetAngularVelocity((-25 * (1 - _local3))); }; }; speed = baseBody.GetLinearVelocity().Length(); var _local4:Number = (1 - Math.abs((speed / 10))); _local4 = Math.max(Math.min(_local4, 1), 0.1); if (((Key.wasToggled("up")) && (!(SoundManager.isSoundPlaying("engineRev"))))){ SoundManager.playSound(EngineRevEffect, SoundType.SOUND_EFFECT, {id:"engineRev", volume:_local4}); }; var _local5:Number = (0.4 * (1 - Math.abs((speed / 10)))); _local5 = Math.max(Math.min(_local4, 0.7), 0.05); if (((((Key.isDown("down")) && (!(SoundManager.isSoundPlaying("brake"))))) && ((baseBody.GetLinearVelocity().x > 0)))){ SoundManager.playSound(BrakeEffect, SoundType.LOOPED_EFFECT, {id:"brake", volume:_local5, category:"gameplay"}); } else { if (((((Key.isDown("down")) && (SoundManager.isSoundPlaying("brake")))) && ((baseBody.GetLinearVelocity().x > 0)))){ SoundManager.getSound("brake").baseVolume = _local5; if (_local5 <= 0.05){ SoundManager.getSound("brake").dispose(); }; } else { if (((((!(Key.isDown("down"))) || ((baseBody.GetLinearVelocity().x <= 0)))) && (SoundManager.isSoundPlaying("brake")))){ SoundManager.getSound("brake").dispose(); }; }; }; if (Key.isDown("up")){ dustTimer--; if (dustTimer < 0){ dustTimer = 3; Instantiantor.newInstance(DustEffect, {position:leftWheelBody.GetUserData(), parent:this.parent}); }; }; var _local6:MovieClip = base.immigrants; base.immigrants.play(); if (speed > 4){ bobbles = 8; }; if (speed >= 8){ bobbles = 16; }; } public function get baseWidth():Number{ return ((this.baseMain.width / 60)); } public function get baseHeight():Number{ return ((this.baseMain.height / 60)); } public function get realX():Number{ return ((baseBody.GetPosition().x * 30)); } public function get world():b2World{ return (DocumentClass(root).world); } public function setupAxels():void{ var _local1:Sprite = this.axel1; var _local2:Sprite = this.axel2; var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsBox((_local1.width / 60), (_local1.height / 60)); _local3.density = 1; var _local4:b2BodyDef = new b2BodyDef(); _local4.userData = _local1; _local4.type = b2Body.b2_dynamicBody; _local4.position = new b2Vec2(((x + _local1.x) / 30), ((y + _local1.y) / 30)); axelA = DocumentClass(root).world.CreateBody(_local4); axelA.CreateFixture(_local3); var _local5:b2PrismaticJointDef = new b2PrismaticJointDef(); _local5.Initialize(baseBody, axelA, axelA.GetWorldCenter(), new b2Vec2(0, 1)); _local5.lowerTranslation = (-5 / 30); _local5.upperTranslation = (10 / 30); _local5.enableLimit = true; _local5.enableMotor = true; leftAxel = (DocumentClass(root).world.CreateJoint(_local5) as b2PrismaticJoint); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsBox((_local2.width / 60), (_local2.height / 60)); _local4.userData = _local2; _local4.type = b2Body.b2_dynamicBody; _local4.position = new b2Vec2(((x + _local2.x) / 30), ((y + _local2.y) / 30)); axelB = DocumentClass(root).world.CreateBody(_local4); axelB.CreateFixture(_local3); _local5.Initialize(baseBody, axelB, axelB.GetWorldCenter(), new b2Vec2(0, 1)); _local5.lowerTranslation = (-5 / 30); _local5.upperTranslation = (10 / 30); _local5.enableLimit = true; _local5.enableMotor = true; rightAxel = (DocumentClass(root).world.CreateJoint(_local5) as b2PrismaticJoint); } public function get isReady():Boolean{ return (((((((((leftWheelBody) && (rightWheelBody))) && (baseBody))) && (leftJoint))) && (rightJoint))); } public function get holdRight():Boolean{ return ((((speed >= 10)) && (Key.isDown("down")))); } private function setupJoints():void{ setupAxels(); var _local1:b2RevoluteJointDef = new b2RevoluteJointDef(); _local1.Initialize(axelA, leftWheelBody, leftWheelBody.GetWorldCenter()); leftJoint = (world.CreateJoint(_local1) as b2RevoluteJoint); var _local2:b2RevoluteJointDef = new b2RevoluteJointDef(); _local2.Initialize(axelB, rightWheelBody, rightWheelBody.GetWorldCenter()); rightJoint = (world.CreateJoint(_local2) as b2RevoluteJoint); x = (y = 0); } public function get radius():Number{ return ((leftWheelMc.width / 60)); } public function get rightWheelMc():MovieClip{ return (this.rightWheel); } public function dispose():void{ DocumentClass.instance.world.DestroyJoint(leftAxel); DocumentClass.instance.world.DestroyJoint(leftJoint); DocumentClass.instance.world.DestroyJoint(rightAxel); DocumentClass.instance.world.DestroyJoint(rightJoint); baseBody = null; leftWheelBody = null; rightWheelBody = null; baseTop = null; leftJoint = null; rightJoint = null; leftAxel = null; rightAxel = null; } public function update():void{ if (!root){ return; }; if (((!((MovieClip(root).currentLabel == "Gameplay"))) && (!((MovieClip(root).currentLabel == "Test Track"))))){ return; }; if (((((!(rightWheelBody)) || (!(leftWheelBody)))) || (!(baseBody)))){ return; }; handleCoins(); handleInput(); handleFlipOver(); handleBoosts(); handleTruckDamage(); } public function get leftWheelMc():MovieClip{ return (this.leftWheel); } private function handleFlipOver():void{ var _local1:Boolean = (((_frontGround <= 0)) && ((_backGround <= 0))); var _local2 = (baseBody.GetLinearVelocity().Length() < 1); var _local3 = (_extraGround >= 2); var _local4 = (baseBody.GetLinearVelocity().y < 1); } public function get bobbleHeads():Boolean{ return ((bobbles > 0)); } public function get holdLeftSmall():Boolean{ return ((((((speed > 5)) && ((speed < 10)))) && (Key.isDown("up")))); } private function setupBaseBody():void{ baseMc.gotoAndStop(DocumentClass(root).truckIndex); var _local1:b2Vec2 = new b2Vec2(((x + base.x) / 30), ((y + base.y) / 30)); var _local2:b2BodyDef = new b2BodyDef(); _local2.userData = baseMc; _local2.type = b2Body.b2_dynamicBody; _local2.position = _local1; _local2.allowSleep = false; baseBody = world.CreateBody(_local2); var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsOrientedBox(baseWidth, baseHeight, new b2Vec2(((baseMain.x - base.x) / 30), ((baseMain.y - base.y) / 30)), 0); _local3.density = 2; _local3.friction = 0.5; _local3.restitution = 0; _local3.filter.groupIndex = -1; baseBody.CreateFixture(_local3); var _local4:Rectangle = this.baseTop.getBounds(this.baseTop); var _local5:Number = ((_local4.width * this.baseTop.scaleX) / 60); var _local6:Number = ((_local4.height * this.baseTop.scaleY) / 60); var _local7:Number = (baseTop.rotation * (Math.PI / 180)); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsOrientedBox(_local5, _local6, new b2Vec2(((baseTop.x - base.x) / 30), ((baseTop.y - base.y) / 30)), _local7); baseTopShape = baseBody.CreateFixture(_local3); _local4 = this.baseBack.getBounds(this.baseBack); _local5 = ((_local4.width * this.baseBack.scaleX) / 60); _local6 = ((_local4.height * this.baseBack.scaleY) / 60); _local7 = (baseTop.rotation * (Math.PI / 180)); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsOrientedBox(_local5, _local6, new b2Vec2(((baseBack.x - base.x) / 30), ((baseBack.y - base.y) / 30)), _local7); baseBody.CreateFixture(_local3); _local4 = this.baseFront.getBounds(this.baseFront); _local5 = ((_local4.width * this.baseFront.scaleX) / 60); _local6 = ((_local4.height * this.baseFront.scaleY) / 60); _local7 = (baseTop.rotation * (Math.PI / 180)); _local3.shape = new b2PolygonShape(); b2PolygonShape(_local3.shape).SetAsOrientedBox(_local5, _local6, new b2Vec2(((baseFront.x - base.x) / 30), ((baseFront.y - base.y) / 30)), _local7); baseBody.CreateFixture(_local3); } private function setupWheels():void{ var _local1:b2BodyDef; var _local2:b2Shape; _local1 = new b2BodyDef(); _local1.type = b2Body.b2_dynamicBody; _local1.userData = leftWheelMc; _local1.position = leftPosition; _local1.allowSleep = false; leftWheelBody = world.CreateBody(_local1); var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = new b2CircleShape(radius); _local3.restitution = 0; _local3.density = 2; _local3.friction = 1000; _local3.filter.groupIndex = -1; leftWheelBody.CreateFixture(_local3); _local1 = new b2BodyDef(); _local1.type = b2Body.b2_dynamicBody; _local1.userData = rightWheelMc; _local1.position = rightPosition; _local1.allowSleep = false; rightWheelBody = world.CreateBody(_local1); rightWheelBody.CreateFixture(_local3); } public function get leftPosition():b2Vec2{ return (new b2Vec2(((leftWheelMc.x + x) / 30), ((leftWheelMc.y + y) / 30))); } public function get realRotation():Number{ return ((baseBody.GetUserData().rotation * 30)); } public function get rightPosition():b2Vec2{ return (new b2Vec2(((rightWheelMc.x + x) / 30), ((rightWheelMc.y + y) / 30))); } public function handleCoins():void{ var _local1:Coin; var _local2:Number; var _local3:Number; for each (_local1 in DocumentClass(root).coins) { if (_local1.currentFrame != 1){ } else { if (!_local1.hitTestObject(baseMc)){ } else { _local2 = (Math.atan2((_local1.y - baseMc.y), (_local1.x - baseMc.x)) / (Math.PI / 180)); _local3 = Math.abs((rotation - _local2)); Instantiantor.newInstance(CoinText, {x:_local1.x, y:_local1.y, amount:10, parent:_local1.parent}); Gameplay(DocumentClass(root).activeGameState).score = (Gameplay(DocumentClass(root).activeGameState).score + 10); _local1.play(); SoundManager.playSound(CoinCollect, SoundType.SOUND_EFFECT, {volume:0.5}); }; }; }; } public function handleCollision(_arg1:b2Contact){ var _local11:b2Vec2; var _local12:Number; if (!root){ return; }; var _local2:b2Body = _arg1.GetFixtureA().GetBody(); var _local3:b2Body = _arg1.GetFixtureB().GetBody(); var _local4:Boolean = (((_arg1.GetFixtureA() == baseTopShape)) || ((_arg1.GetFixtureB() == baseTopShape))); var _local5:Boolean = (((this.base.rotation > 145)) || ((((this.base.rotation > -180)) && ((this.base.rotation < -110))))); if (((_local4) && (_local5))){ MovieClip(root).startTransition("Game Over"); }; _local4 = (((((((_local2 == leftWheelBody)) || ((_local3 == rightWheelBody)))) || ((_local2 == leftWheelBody)))) || ((_local3 == rightWheelBody))); var _local6:b2Body = _local2; if ((((_local3 == leftWheelBody)) || ((_local3 == rightWheelBody)))){ _local6 = _local3; }; var _local7:Number = 1; if (_local4){ _local7 = 0.4; } else { _extraGround++; }; var _local8:b2Manifold = (_arg1.GetManifold() as b2Manifold); var _local9:Number = ((_local6.GetLinearVelocity().x * _local8.m_localPlaneNormal.x) + (_local6.GetLinearVelocity().y * _local8.m_localPlaneNormal.y)); var _local10:Number = Math.max(Math.min((_local9 / 20), 1), 0); if (_local6 == leftWheelBody){ _backGround++; } else { if (_local6 == rightWheelBody){ _frontGround++; }; }; if (!_local4){ return; }; _local5 = (_local6.GetLinearVelocity().y > 6); if (((_local4) && (_local5))){ _local11 = (_arg1.GetManifold().m_points[0] as b2ManifoldPoint).m_localPoint.Copy(); _local11.Add(_local6.GetPosition()); Instantiantor.newInstance(SmokeEffect, {x:(_local11.x * 30), y:(_local11.y * 30), parent:this.parent}); _local12 = (_local10 * 0.6); SoundManager.playSound(TruckLandEffect, SoundType.SOUND_EFFECT, {volume:_local12}); }; } public function handleEndCollision(_arg1:b2Contact){ if (!root){ return; }; var _local2:b2Body = _arg1.GetFixtureA().GetBody(); var _local3:b2Body = _arg1.GetFixtureB().GetBody(); var _local4:Boolean = (((((((_local2 == leftWheelBody)) || ((_local3 == rightWheelBody)))) || ((_local2 == leftWheelBody)))) || ((_local3 == rightWheelBody))); if (!_local4){ _extraGround--; _extraGround = Math.max(_extraGround, 0); return; }; var _local5:b2Body = _local2; if ((((_local3 == leftWheelBody)) || ((_local3 == rightWheelBody)))){ _local5 = _local3; }; if (_local5 == leftWheelBody){ _backGround--; } else { if (_local5 == rightWheelBody){ _backGround--; }; }; _backGround = Math.max(_backGround, 0); _frontGround = Math.max(_frontGround, 0); } public function get holdRightSmall():Boolean{ return ((((((speed > 5)) && ((speed < 10)))) && (Key.isDown("down")))); } public function get smallBobble():Boolean{ return ((bobbles <= 8)); } private function handleTruckDamage():void{ _damage = Math.max((_damage - 0.5), 0); var _local1:Number = 1; if (_damage > 90){ _local1 = 4; } else { if (_damage > 60){ _local1 = 3; } else { if (_damage > 30){ _local1 = 2; } else { if (_damage < 50){ _local1 = 1; }; }; }; }; if (base.main.currentFrame != _local1){ base.main.gotoAndStop(_local1); }; if (_damage > 100){ MovieClip(root).startTransition("Game Over"); }; } public function get realY():Number{ return ((baseBody.GetPosition().y * 30)); } public function setup():void{ setupBaseBody(); setupWheels(); setupJoints(); DataTracer.traceData("Truck Setup Successfull!"); SoundManager.playSound(EngineEffect, SoundType.LOOPED_EFFECT, {id:"engine", category:"gameplay", volume:2}); } public function get holdLeft():Boolean{ return ((((speed >= 10)) && (Key.isDown("up")))); } public function handleBoosts():void{ var _local1:Boost; var _local2:Number; var _local3:Point; var _local4:Number; for each (_local1 in DocumentClass(root).boosts) { if (!_local1.hitTestObject(baseMc)){ return; }; _local2 = (_local1.rotation * (Math.PI / 180)); _local3 = new Point(Math.cos(_local2), Math.sin(_local2)); _local4 = 10; _local3.normalize((_local4 / 30)); baseBody.ApplyForce(new b2Vec2(_local3.x, _local3.y), baseBody.GetWorldCenter()); }; } } }//package com.objects.gameplay
Section 149
//WorldObject (com.objects.gameplay.WorldObject) package com.objects.gameplay { import flash.display.*; import flash.events.*; public class WorldObject extends MovieClip { public var layer:Number;// = 0 public var collidable:Boolean;// = true public var activePhysics:Boolean;// = false public function WorldObject(_arg1:Number=0):void{ layer = _arg1; if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; } protected function event_removedFromStage(_arg1:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage); } protected function event_addedToStage(_arg1:Event):void{ if (_arg1){ this.removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); }; this.addEventListener(Event.REMOVED_FROM_STAGE, event_removedFromStage, false, 0, true); } } }//package com.objects.gameplay
Section 150
//TrackEditor (com.objects.TrackEditor) package com.objects { import fl.controls.*; import flash.display.*; import flash.events.*; import fl.data.*; import flash.geom.*; import flash.text.*; import com.*; import com.debug.*; public class TrackEditor extends TrackDrawer { public var exportButton:Button; public var j1; public var focusTarget:MovieClip;// = null public var fargroundMc:MovieClip; public var physicsText:TextField; private var _interfaceSprite:Sprite; public var modeComboBox:ComboBox; public var collProp1:Object; public var collObj1:DataProvider; public var modeBox:ComboBox; private var _madeChanges:Boolean;// = false public var selectedNode:MovieClip; public var midgroundMc:MovieClip; public var importButton:Button; public var clearLevelButton:Button; public var itemObj1:SimpleCollectionItem; public var collProps1:Array; public var cursor:MovieClip; public var truck:MovieClip; public var quitButton:Button; public var i1:int; public var testLevelButton:Button; public var levelSizeText:TextField; public var backgroundMc:MovieClip; public var displayRectMc:MovieClip; public static const STARTING_POINT:Point = new Point(0, 300); public static const SPACE_WIDTH:Number = 16; public function TrackEditor(){ truck = new Truck_Placeholder(); modeBox = new ComboBox(); physicsText = new TextField(); _interfaceSprite = new Sprite(); super(); __setProp_modeComboBox_TrackEditor_Interface_0(); __setProp_testLevelButton_TrackEditor_Buttons_0(); __setProp_clearLevelButton_TrackEditor_Buttons_0(); __setProp_quitButton_TrackEditor_Buttons_0(); __setProp_exportButton_TrackEditor_Buttons_0(); __setProp_importButton_TrackEditor_Buttons_0(); } public function buildFromArray(_arg1:Array):void{ var _local9:Number; var _local10:Number; var _local11:Boolean; var _local12:Number; var _local13:String; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Boolean; var _local19:Boolean; var _local20:Number; event_clearLevel(null); var _local2:Stream = new Stream(_arg1); var _local3:Number = _local2.readNumber(); var _local4:Number = 2; var _local5:Number = 0; while (_local5 < _local3) { _local9 = _local2.readNumber(); _local10 = _local2.readNumber(); _local11 = _local2.readBoolean(); if (_local5 >= 2){ createNode(_local9, _local10); }; _local5++; }; var _local6:Number = (_local4 + (_local3 * 2)); var _local7:Number = _local2.readNumber(); var _local8:MovieClip; backObjects = new Array(); frontObjects = new Array(); _local5 = 0; while (_local5 < _local7) { _local12 = 8; _local13 = _local2.readString(); _local14 = _local2.readNumber(); _local15 = _local2.readNumber(); _local16 = _local2.readNumber(); _local17 = _local2.readNumber(); _local18 = _local2.readBoolean(); _local19 = _local2.readBoolean(); _local20 = _local2.readNumber(); _local8 = createItem(_local14, _local15, _local13); createItem(_local14, _local15, _local13).scaleX = (_local8.scaleY = _local16); _local8.rotation = _local17; _local8.activePhysics = _local18; _local8.collidable = _local19; _local8.layer = _local20; if (_local8.layer == 1){ if (frontContainer.contains(_local8)){ frontContainer.removeChild(_local8); }; if (!backContainer.contains(_local8)){ backContainer.addChild(_local8); }; frontObjects.splice(frontObjects.indexOf(_local8), 1); backObjects.push(_local8); }; _local5++; }; _madeChanges = false; selectedNode = null; mustRedraw = true; } private function handleInput():void{ var _local3:MovieClip; var _local4:Object; var _local5:Number; var _local6:Number; if (focusTarget){ if (!focusTarget.parent){ focusTarget = null; }; }; if (!focusTarget){ stage.focus = stage; }; var _local1:Boolean; if (selectedNode){ if (selectedNode.type == "node"){ _local1 = true; }; }; if (Key.isDown("home")){ MovieClip(root).instructionsMc.visible = (MovieClip(root).instructionsMc.mouseEnabled = (MovieClip(root).instructionsMc.mouseChildren = !(MovieClip(root).instructionsMc.visible))); Key.releaseKey("home"); }; if (((!(selectedNode)) || (_local1))){ if (Key.isDown("left")){ masterContainer.x = (masterContainer.x + 15); } else { if (Key.isDown("right")){ masterContainer.x = (masterContainer.x - 15); }; }; if (!Key.isDown("shift")){ if (Key.isDown("up")){ masterContainer.y = (masterContainer.y + 15); } else { if (Key.isDown("down")){ masterContainer.y = (masterContainer.y - 15); }; }; } else { if (Key.isDown("up")){ masterContainer.scaleX = (masterContainer.scaleY = Math.max(Math.min((masterContainer.scaleX + 0.03), 1.2), 0.2)); } else { if (Key.isDown("down")){ masterContainer.scaleX = (masterContainer.scaleY = Math.max(Math.min((masterContainer.scaleX - 0.03), 1.2), 0.2)); }; }; }; cursor.scaleX = (cursor.scaleY = masterContainer.scaleX); }; var _local2:String = modeBox.text; cursor.visible = Key.isDown("n"); if (cursor.visible){ if (cursor.currentLabel != _local2){ cursor.gotoAndStop(_local2); }; }; if (selectedNode != null){ if (Key.isDown("p")){ selectedNode.activePhysics = !(selectedNode.activePhysics); Key.releaseKey("p"); }; if (Key.isDown("c")){ selectedNode.collidable = !(selectedNode.collidable); Key.releaseKey("c"); }; if (Key.isDown("s")){ if (selectedNode.starter != null){ selectedNode.starter = !(selectedNode.starter); }; Key.releaseKey("s"); }; if (Key.isDown("l")){ if (selectedNode.layer == 0){ selectedNode.layer = 1; backObjects.push(selectedNode); frontObjects.splice(frontObjects.indexOf(selectedNode)); selectedNode.parent.removeChild(selectedNode); backContainer.addChild(selectedNode); } else { selectedNode.layer = 0; frontObjects.push(selectedNode); backObjects.splice(frontObjects.indexOf(selectedNode)); selectedNode.parent.removeChild(selectedNode); frontContainer.addChild(selectedNode); }; Key.releaseKey("l"); }; if (((Key.isDown("d")) && (selectedNode.hasOwnProperty("collidable")))){ _local3 = selectedNode; _local4 = createItem(masterContainer.mouseX, masterContainer.mouseY, _local3.type); createItem(masterContainer.mouseX, masterContainer.mouseY, _local3.type).scaleX = (_local4.scaleY = _local3.scaleX); _local4.rotation = _local3.rotation; _local4.activePhysics = _local3.activePhysics; _local4.collidable = _local3.collidable; Key.releaseKey("d"); _madeChanges = true; }; if (selectedNode.type != "node"){ _local5 = selectedNode.rotation; _local6 = selectedNode.scaleX; if (Key.isDown("left")){ selectedNode.rotation = (selectedNode.rotation - 3); }; if (Key.isDown("right")){ selectedNode.rotation = (selectedNode.rotation + 3); }; if (((Key.isDown("up")) && (selectedNode.hasOwnProperty("collidable")))){ selectedNode.scaleX = (selectedNode.scaleX + 0.1); }; if (((Key.isDown("down")) && (selectedNode.hasOwnProperty("collidable")))){ selectedNode.scaleX = (selectedNode.scaleX - 0.1); }; selectedNode.scaleY = (selectedNode.scaleX = Math.min(Math.max(0.5, selectedNode.scaleX), 2)); if (((!((selectedNode.rotation == _local5))) || (!((selectedNode.scaleX == _local6))))){ _madeChanges = true; }; }; if (((Key.isDown("delete")) && (selectedNode))){ if (selectedNode.parent){ selectedNode.parent.removeChild(selectedNode); }; if (selectedNode.isNode){ groundNodes.splice(groundNodes.indexOf(selectedNode), 1); } else { objects.splice(objects.indexOf(selectedNode), 1); }; if (selectedNode.type == "node"){ mustRedraw = true; }; selectedNode = null; _madeChanges = true; }; }; } private function event_clearLevel(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Sprite; if (groundNodes.length > 2){ _local2 = 2; while (_local2 < groundNodes.length) { _local3 = groundNodes[_local2]; if (!_local3){ } else { if (!_local3.parent){ } else { _local3.parent.removeChild(_local3); }; }; _local2++; }; }; if (objects.length > 0){ _local2 = 0; while (_local2 < objects.length) { _local3 = objects[_local2]; if (!_local3){ } else { if (!_local3.parent){ } else { _local3.parent.removeChild(_local3); }; }; _local2++; }; }; groundNodes = [groundNodes[0], groundNodes[1]]; frontObjects = new Array(); backObjects = new Array(); _madeChanges = true; selectedNode = null; _interfaceSprite.graphics.clear(); } private function event_exportLevel(_arg1:MouseEvent):void{ var _local2:Array = exportToArray(); var _local3:MovieClip = new ExportMc(); _local3.x = 275; _local3.y = 200; _local3.code = _local2.join(","); DocumentClass(root).addChild(_local3); focusTarget = _local3; } private function handleSelectedNodeBox():void{ var _local1:Rectangle; var _local2:Point; var _local3:Number; var _local4:Rectangle; if (!_madeChanges){ return; }; _madeChanges = false; _interfaceSprite.graphics.clear(); if (selectedNode){ physicsText.visible = selectedNode.hasOwnProperty("collidable"); _local1 = selectedNode.getBounds(groundContainer); _local1.inflate(3, 3); _interfaceSprite.graphics.endFill(); _interfaceSprite.graphics.lineStyle(1, 0xFF00); _interfaceSprite.graphics.drawRect(_local1.x, _local1.y, _local1.width, _local1.height); if (selectedNode.hasOwnProperty("collidable")){ physicsText.text = (((("Physics: " + (selectedNode.activePhysics) ? "On" : "Off") + "\n") + "Collisions: ") + (selectedNode.collidable) ? "On" : "Off"); _local2 = physicsText.parent.globalToLocal(selectedNode.localToGlobal(new Point())); physicsText.x = (_local2.x + ((_local1.width / 2) * selectedNode.parent.scaleX)); physicsText.y = _local2.y; _local4 = physicsText.getBounds(masterContainer); _interfaceSprite.graphics.lineStyle(); _interfaceSprite.graphics.beginFill(0xFFFFFF, 0.4); _interfaceSprite.graphics.drawRect((_local4.x - 3), (_local4.y - 3), (_local4.width + 6), (_local4.height + 6)); _interfaceSprite.graphics.endFill(); }; } else { physicsText.visible = false; }; } override public function initGameState():void{ var _local5:Number; super.initGameState(); physicsText.text = "Physics Enabled"; physicsText.visible = false; physicsText.mouseEnabled = false; physicsText.width = 70; physicsText.height = 40; physicsText.multiline = true; physicsText.setTextFormat(new TextFormat("Verdana", 9, 0)); physicsText.textColor = 0xFFFFFF; addChild(physicsText); cursor = new Object_Placeholder(); stage.addChild(cursor); cursor.mouseEnabled = (cursor.mouseChildren = false); cursor.alpha = 0.5; cursor.startDrag(true); trace("Building Track"); initDisplayHiearchy(displayRectMc); masterContainer.addChild(_interfaceSprite); modeBox.dropdownWidth = ComboBox(modeComboBox).dropdownWidth; modeBox.width = ComboBox(modeComboBox).width; modeBox.x = ComboBox(modeComboBox).x; modeBox.y = ComboBox(modeComboBox).y; modeBox.dropdownWidth = (modeBox.width - 25); removeChild(ComboBox(modeComboBox)); var _local1:MovieClip = new Object_Placeholder(); var _local2:Array = new Array(); var _local3:Array = new Array(); var _local4:Number = 0; while (_local4 < _local1.totalFrames) { _local5 = _local2.indexOf(_local1.currentLabel); if (_local5 != -1){ _local1.gotoAndStop((_local4 + 1)); } else { _local2.push(_local1.currentLabel); _local3.push({label:_local1.currentLabel, data:("Item " + _local4)}); _local1.gotoAndStop((_local4 + 1)); }; _local4++; }; modeBox.dataProvider = new DataProvider(_local3); addChild(modeBox); groundRect.mouseEnabled = (textureRect.mouseEnabled = (groundContainer.mouseEnabled = false)); createNode(STARTING_POINT.x, STARTING_POINT.y); createNode((STARTING_POINT.x + 200), STARTING_POINT.y); truck.x = (STARTING_POINT.x + 100); truck.y = (STARTING_POINT.y - (truck.height / 2)); frontContainer.addChild(truck); clearLevelButton.addEventListener(MouseEvent.CLICK, event_clearLevel, false, 0, true); exportButton.addEventListener(MouseEvent.CLICK, event_exportLevel, false, 0, true); importButton.addEventListener(MouseEvent.CLICK, event_importLevel, false, 0, true); testLevelButton.addEventListener(MouseEvent.CLICK, event_testLevel, false, 0, true); quitButton.addEventListener(MouseEvent.CLICK, event_quit, false, 0, true); displayRectMc.addEventListener(MouseEvent.CLICK, event_mouseClick, false, 0, true); if (DocumentClass(root).trackArray){ buildFromArray(DocumentClass(root).trackArray); }; } private function event_mouseUpNode(_arg1:MouseEvent):void{ Sprite(_arg1.currentTarget).stopDrag(); cursor.startDrag(true); if (_arg1.currentTarget.type == "node"){ mustRedraw = true; } else { _madeChanges = true; }; } public function createNode(_arg1:Number, _arg2:Number, _arg3:Number=-1):void{ var _local4:MovieClip = new MovieClip(); _local4.graphics.beginFill(0xFF0000); _local4.graphics.drawCircle(0, 0, 5); _local4.graphics.endFill(); _local4.x = _arg1; _local4.y = _arg2; _local4.starter = false; _local4.type = "node"; _local4.isNode = true; _local4.addEventListener(MouseEvent.MOUSE_DOWN, event_mouseDownNode, false, 0, true); _local4.addEventListener(MouseEvent.MOUSE_UP, event_mouseUpNode, false, 0, true); if (_arg3 == -1){ groundNodes.push(_local4); } else { groundNodes.splice(_arg3, 0, _local4); }; selectedNode = _local4; groundContainer.addChild(_local4); mustRedraw = true; _madeChanges = true; } public function get objects():Array{ return ([].concat(frontObjects).concat(backObjects)); } private function event_mouseDownNode(_arg1:MouseEvent):void{ var _local2:MovieClip = MovieClip(_arg1.currentTarget); if (groundNodes.indexOf(_local2) <= 1){ if (objects.indexOf(_local2) <= -1){ return; }; }; selectedNode = _local2; Sprite(_arg1.currentTarget).startDrag(); if (selectedNode.type == "node"){ mustRedraw = true; } else { _madeChanges = true; }; } function __setProp_modeComboBox_TrackEditor_Interface_0(){ try { modeComboBox["componentInspectorSetting"] = true; } catch(e:Error) { }; collObj1 = new DataProvider(); collProps1 = []; i1 = 0; while (i1 < collProps1.length) { itemObj1 = new SimpleCollectionItem(); collProp1 = collProps1[i1]; for (j1 in collProp1) { itemObj1[j1] = collProp1[j1]; }; collObj1.addItem(itemObj1); i1++; }; modeComboBox.dataProvider = collObj1; modeComboBox.editable = true; modeComboBox.enabled = true; modeComboBox.prompt = ""; modeComboBox.restrict = ""; modeComboBox.rowCount = 10; modeComboBox.visible = true; try { modeComboBox["componentInspectorSetting"] = false; } catch(e:Error) { }; } private function event_saveLevel(_arg1:MouseEvent):void{ var _local2:MovieClip = new SaveCustomLevelMc(); _local2.x = 275; _local2.y = 200; _local2.trackArray = exportToArray(); MovieClip(root).addChild(_local2); } public function iterateRemoval(_arg1:DisplayObjectContainer):void{ var _local2:DisplayObject; while (_arg1.numChildren > 0) { _local2 = _arg1.getChildAt(0); if ((_local2 is DisplayObjectContainer)){ iterateRemoval((_local2 as DisplayObjectContainer)); }; _arg1.removeChildAt(0); }; } private function event_testLevel(_arg1:MouseEvent):void{ exportToArray(); truck = null; selectedNode = null; DocumentClass(root).startTransition("Test Track"); } override public function dispose():void{ super.dispose(); } private function handleScenery():void{ } private function event_importLevel(_arg1:MouseEvent):void{ var _local2:MovieClip = new ImportMc(); _local2.x = 275; _local2.y = 200; DocumentClass(root).addChild(_local2); focusTarget = _local2; } public function createItem(_arg1:Number, _arg2:Number, _arg3:String):MovieClip{ var _local4:MovieClip = new Object_Placeholder(); _local4.x = _arg1; _local4.y = _arg2; _local4.type = _arg3; if (((((((!((_arg3 == "Immigrant"))) && (!((_arg3 == "Bandit"))))) && (!((_arg3 == "Coin"))))) && (!((_arg3 == "Boost"))))){ _local4.activePhysics = false; _local4.collidable = true; }; _local4.layer = 0; switch (_arg3){ case "Lookout Post A": _local4.layer = 1; break; }; _local4.isNode = true; _local4.gotoAndStop(_arg3); _local4.addEventListener(MouseEvent.MOUSE_DOWN, event_mouseDownNode, false, 0, true); _local4.addEventListener(MouseEvent.MOUSE_UP, event_mouseUpNode, false, 0, true); frontObjects.push(_local4); selectedNode = _local4; _madeChanges = true; groundContainer.addChild(_local4); return (_local4); } private function event_mouseClick(_arg1:MouseEvent):void{ var _local3:Boolean; var _local4:Array; var _local5:Number; var _local6:MovieClip; var _local7:Number; if (focusTarget){ if (!focusTarget.parent){ focusTarget = null; }; }; if (!focusTarget){ stage.focus = stage; }; if (!Key.isDown("n")){ _local3 = false; _local4 = new Array().concat(groundNodes).concat(objects); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5]; if (_local6.hitTestPoint(groundContainer.mouseX, groundContainer.mouseY, false)){ _local3 = true; break; }; _local5++; }; if (!_local3){ selectedNode = null; _interfaceSprite.graphics.clear(); _madeChanges = false; }; return; }; var _local2:String = modeBox.text; switch (_local2){ case "Geoformation": _local7 = -1; if (groundContainer.mouseX < groundNodes[(groundNodes.length - 1)].x){ _local7 = 0; _local5 = 0; while (_local5 < groundNodes.length) { _local7 = _local5; if (groundNodes[_local5].x > groundContainer.mouseX){ break; }; _local5++; }; }; createNode(groundContainer.mouseX, groundContainer.mouseY, _local7); break; default: createItem(frontContainer.mouseX, frontContainer.mouseY, _local2); break; }; } public function exportToArray():Array{ var _local1:Array = [(groundNodes.length + 1)]; var _local2:Number = 0; while (_local2 < groundNodes.length) { _local1.push((Math.floor((groundNodes[_local2].x * 10)) / 10)); _local1.push((Math.floor((groundNodes[_local2].y * 10)) / 10)); _local1.push(groundNodes[_local2].starter); _local2++; }; _local1.push((Math.floor(((groundNodes[(groundNodes.length - 1)].x + 400) * 10)) / 10)); _local1.push((Math.floor((groundNodes[(groundNodes.length - 1)].y * 10)) / 10)); _local1.push(false); trace(DocumentClass(root).trackArray); DataTracer.traceData(("Num Objects: " + objects.length)); _local1.push(objects.length); _local2 = 0; while (_local2 < objects.length) { _local1.push(objects[_local2].currentLabel); _local1.push(objects[_local2].x); _local1.push(objects[_local2].y); _local1.push(objects[_local2].scaleX); _local1.push(objects[_local2].rotation); _local1.push(objects[_local2].activePhysics); _local1.push(objects[_local2].collidable); _local1.push(objects[_local2].layer); _local2++; }; DocumentClass(root).trackArray = _local1; trace(_local1); return (_local1); } function __setProp_exportButton_TrackEditor_Buttons_0(){ try { exportButton["componentInspectorSetting"] = true; } catch(e:Error) { }; exportButton.emphasized = false; exportButton.enabled = true; exportButton.label = "Export"; exportButton.labelPlacement = "right"; exportButton.selected = false; exportButton.toggle = false; exportButton.visible = true; try { exportButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_importButton_TrackEditor_Buttons_0(){ try { importButton["componentInspectorSetting"] = true; } catch(e:Error) { }; importButton.emphasized = false; importButton.enabled = true; importButton.label = "Import"; importButton.labelPlacement = "right"; importButton.selected = false; importButton.toggle = false; importButton.visible = true; try { importButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } override public function update():void{ super.update(); if (((((((!(masterContainer)) || (!(backContainer)))) || (!(frontContainer)))) || (!(parent)))){ return; }; handleInput(); if (groundNodes.length <= 1){ return; }; handleScenery(); handleDrawing(groundNodes); handleSelectedNodeBox(); this.levelSizeText.text = (("Current Size: " + groundRect.width) + "px"); } private function event_loadLevel(_arg1:MouseEvent):void{ var _local2:MovieClip = new LoadCustomLevelMc(); _local2.x = 275; _local2.y = 200; MovieClip(root).addChild(_local2); } private function event_quit(_arg1:MouseEvent):void{ dispose(); DocumentClass(root).startTransition("Main Menu"); DocumentClass(root).activeGameState = null; DocumentClass(root).trackArray = null; } function __setProp_clearLevelButton_TrackEditor_Buttons_0(){ try { clearLevelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; clearLevelButton.emphasized = false; clearLevelButton.enabled = true; clearLevelButton.label = "Reset"; clearLevelButton.labelPlacement = "right"; clearLevelButton.selected = false; clearLevelButton.toggle = false; clearLevelButton.visible = true; try { clearLevelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_testLevelButton_TrackEditor_Buttons_0(){ try { testLevelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; testLevelButton.emphasized = false; testLevelButton.enabled = true; testLevelButton.label = "Run"; testLevelButton.labelPlacement = "right"; testLevelButton.selected = false; testLevelButton.toggle = false; testLevelButton.visible = true; try { testLevelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_quitButton_TrackEditor_Buttons_0(){ try { quitButton["componentInspectorSetting"] = true; } catch(e:Error) { }; quitButton.emphasized = false; quitButton.enabled = true; quitButton.label = "Quit"; quitButton.labelPlacement = "right"; quitButton.selected = false; quitButton.toggle = false; quitButton.visible = true; try { quitButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } } }//package com.objects
Section 151
//SoundInstance (com.sound.SoundInstance) package com.sound { import flash.events.*; import com.events.*; import flash.media.*; public class SoundInstance extends EventDispatcher { private var _totalLoopCount:Number;// = 0 private var _position:Number; private var _status:SoundStatus; private var _type:String; private var _personalVolume:Number;// = 1 private var _sound:Sound; private var _transitionVolume:Number;// = 1 private var _id:String;// = "" private var _channel:SoundChannel;// = null private var _soundClass:Class; private var _categoryVolume:Number;// = 1 private var _category:String;// = "" private var _baseVolume:Number;// = 1 private var _originalVolume:Number;// = 1 public function SoundInstance(_arg1:String, _arg2:Class, _arg3:Number, _arg4:Number, _arg5:String):void{ _category = _arg5; _soundClass = _arg2; _originalVolume = _arg4; _baseVolume = _arg4; _categoryVolume = getCategoryVolume(_arg5); _totalLoopCount = _arg3; _type = _arg1; _status = SoundStatus.PLAYING; _sound = new (_arg2); _channel = Sound(_sound).play(0, _arg3, new SoundTransform(((baseVolume * categoryVolume) * extraVolume))); if (_arg3 != Number.MAX_VALUE){ _channel.addEventListener(Event.SOUND_COMPLETE, event_soundComplete, false, 0, true); }; } public function stop():void{ _status = SoundStatus.STOPPED; if (_channel){ _channel.stop(); }; _position = 0; } private function event_soundComplete(_arg1:Event):void{ this.dispatchEvent(new GameEvent(Event.SOUND_COMPLETE, this)); _status = SoundStatus.COMPLETED; _soundClass = null; _channel = null; } public function get channel():SoundChannel{ return (_channel); } public function restart():void{ _channel = Sound(new _soundClass()).play(0, totalLoopCount, new SoundTransform(originalVolume)); } public function set baseVolume(_arg1:Number):void{ _baseVolume = _arg1; if (_channel){ _channel.soundTransform = new SoundTransform((((_baseVolume * categoryVolume) * extraVolume) * transitionVolume)); }; } public function get id():String{ return (_id); } public function set transitionVolume(_arg1:Number):void{ _transitionVolume = _arg1; baseVolume = baseVolume; } public function dispose():void{ this.dispatchEvent(new GameEvent(Event.SOUND_COMPLETE, this)); SoundManager.disposeSongReference(this); stop(); _soundClass = null; _channel = null; } public function get soundClass():Class{ return (_soundClass); } public function resume():void{ _channel = Sound(new _soundClass()).play(_position, totalLoopCount, new SoundTransform(originalVolume)); _status = SoundStatus.PLAYING; } public function set id(_arg1:String):void{ _id = _arg1; } public function get categoryVolume():Number{ return (_categoryVolume); } public function get type():String{ return (_type); } private function get extraVolume():Number{ if (type != SoundType.BACKGROUND_MUSIC){ return (((SoundManager.soundsEnabled) ? SoundManager.globalVolume : 0 * (SoundManager.soundEffectsEnabled) ? SoundManager.soundEffectsVolume : 0)); //unresolved jump }; return (((SoundManager.soundsEnabled) ? SoundManager.globalVolume : 0 * (SoundManager.musicEnabled) ? SoundManager.musicVolume : 0)); } public function get originalVolume():Number{ return (_originalVolume); } public function get transitionVolume():Number{ return (_transitionVolume); } public function get baseVolume():Number{ return (_baseVolume); } public function set currentVolume(_arg1:Number):void{ _baseVolume = (_arg1 / ((categoryVolume * SoundManager.globalVolume) * transitionVolume)); if (_channel){ _channel.soundTransform = new SoundTransform(_arg1); }; } public function get totalLoopCount():Number{ return (_totalLoopCount); } public function set categoryVolume(_arg1:Number):void{ _categoryVolume = _arg1; if (_channel){ _channel.soundTransform = new SoundTransform((((baseVolume * categoryVolume) * extraVolume) * transitionVolume)); }; } public function get status():SoundStatus{ return (_status); } public function get currentVolume():Number{ return ((((_baseVolume * categoryVolume) * extraVolume) * transitionVolume)); } public function pause():void{ _status = SoundStatus.PAUSED; _position = _channel.position; if (_channel){ _channel.stop(); }; } public function get category():String{ return (_category); } private static function getCategoryVolume(_arg1:String):Number{ var _local2:Object = SoundManager.getCategoryData(_arg1); if (!_local2){ return (1); }; if (!_local2.volume){ return (1); }; return (_local2.volume); } } }//package com.sound
Section 152
//SoundManager (com.sound.SoundManager) package com.sound { import flash.events.*; import com.events.*; import flash.utils.*; public class SoundManager extends EventDispatcher { private static var _soundEffectsVolume:Number = 1; private static var _soundEffectsEnabled:Boolean = true; private static var _totalOverallSongCount:Number = 0; private static var _idObject:Object = new Object(); private static var _currentSoundCount:Number = 0; private static var _categoryData:Object = new Object(); private static var _transitionDuration:Number = 0; private static var _eventHandler:EventDispatcher = new EventDispatcher(); private static var _transitionStart:Number = 0; private static var _musicEnabled:Boolean = true; private static var _musicVolume:Number = 1; private static var _currentBkgMusic:SoundInstance = null; private static var _soundsEnabled:Boolean = true; private static var _nextBkgMusic:SoundInstance = null; private static var _globalVolume:Number = 1; private static function updateAllSounds():void{ var _local1:String; var _local2:SoundInstance; for (_local1 in _idObject) { _local2 = SoundInstance(_idObject[_local1]); _local2.baseVolume = _local2.baseVolume; }; } public static function updateSoundManager():void{ if (!_currentBkgMusic){ return; }; if (!_nextBkgMusic){ return; }; var _local1:Number = (getTimer() - _transitionStart); var _local2:Number = (_local1 / _transitionDuration); _local2 = Math.max(Math.min(_local2, 1), 0); _currentBkgMusic.transitionVolume = (1 - _local2); _nextBkgMusic.transitionVolume = _local2; if (_local2 >= 1){ _currentBkgMusic.dispose(); _currentBkgMusic = _nextBkgMusic; _nextBkgMusic = null; }; } private static function event_soundComplete(_arg1:GameEvent):void{ var _local2:SoundInstance = SoundInstance(_arg1.data); _idObject[_local2.id] = null; delete _idObject[_local2.id]; } public static function toggleSound():void{ _soundsEnabled = !(_soundsEnabled); updateAllSounds(); } public static function playStoppedSounds():void{ var _local1:String; var _local2:SoundInstance; for (_local1 in _idObject) { _local2 = SoundInstance(_idObject[_local1]); _currentSoundCount++; if (_local2.type != SoundType.SOUND_EFFECT){ _local2.resume(); }; }; } public static function setGlobalVolume(_arg1:Number):void{ var _local2:String; var _local3:SoundInstance; _globalVolume = _arg1; for (_local2 in _idObject) { _local3 = SoundInstance(_idObject[_local2]); _local3.baseVolume = _local3.baseVolume; }; } public static function get currentSoundCount():Number{ return (_currentSoundCount); } public static function set soundEffectsEnabled(_arg1:Boolean):void{ _soundEffectsEnabled = _arg1; updateAllSounds(); } public static function get musicVolume():Number{ return (_musicVolume); } public static function get globalVolume():Number{ return (_globalVolume); } public static function stopSound(_arg1:String):void{ if (!_idObject.hasOwnProperty(_arg1)){ return; }; var _local2:SoundInstance = SoundInstance(_idObject[_arg1]); if (_local2.status == SoundStatus.STOPPED){ return; }; _local2.stop(); _currentSoundCount--; } public static function stopBackgroundMusic():void{ if (_currentBkgMusic){ _currentBkgMusic.dispose(); }; if (_nextBkgMusic){ _nextBkgMusic.dispose(); }; _currentBkgMusic = null; _nextBkgMusic = null; } public static function set musicEnabled(_arg1:Boolean):void{ _musicEnabled = _arg1; updateAllSounds(); } public static function setCategoryVolume(_arg1:String, _arg2:Number):void{ var _local3:String; var _local4:SoundInstance; for (_local3 in _idObject) { _local4 = SoundInstance(_idObject[_local3]); if (_local4.category != _arg1){ } else { _local4.categoryVolume = _arg2; _local4.baseVolume = _local4.baseVolume; }; }; if (!_categoryData[_arg1]){ _categoryData[_arg1] = {}; }; _categoryData[_arg1].volume = _arg2; } public static function playSound(_arg1:Class, _arg2:String, _arg3:Object=null):SoundInstance{ var _local7:String; var _local4:Number = 1; if ((((_arg2 == SoundType.BACKGROUND_MUSIC)) || ((_arg2 == SoundType.LOOPED_EFFECT)))){ _local4 = 10000; } else { if (_arg3){ if (_arg3.loops){ _local4 = _arg3.loops; } else { if (_arg3.numLoops){ _local4 = _arg3.numLoops; } else { if (_arg3.playCount){ _local4 = _arg3.playCount; } else { if (_arg3.repeat){ _local4 = _arg3.repeat; } else { if (_arg3.repeats){ _local4 = _arg3.repeats; }; }; }; }; }; }; }; var _local5:Number = 1; var _local6 = ""; if (_arg3){ if (_arg3.volume){ _local5 = _arg3.volume; } else { if (_arg3.volumn){ _local5 = _arg3.volumn; }; }; if (_arg3.id){ _local6 = _arg3.id; }; if (_arg3.category){ _local7 = _arg3.category; }; }; if (_arg2 == SoundType.BACKGROUND_MUSIC){ if (_currentBkgMusic){ if (_currentBkgMusic.soundClass == _arg1){ return (null); }; }; }; var _local8:SoundInstance = new SoundInstance(_arg2, _arg1, _local4, _local5, _local7); if (_local4 != 10000){ _local8.addEventListener(Event.SOUND_COMPLETE, event_soundComplete, false, 0, true); }; if (_arg2 == SoundType.BACKGROUND_MUSIC){ if (_currentBkgMusic){ _nextBkgMusic = _local8; } else { _currentBkgMusic = _local8; }; if (_arg3){ if (_arg3.transition){ _transitionDuration = _arg3.transition; } else { if (_arg3.transitionTime){ _transitionDuration = _arg3.transitionTime; } else { if (_arg3.transitionDuration){ _transitionDuration = _arg3.transitionDuration; } else { _transitionDuration = NaN; }; }; }; if (!isNaN(_transitionDuration)){ if (_transitionDuration > 0){ _transitionStart = getTimer(); } else { if (_currentBkgMusic){ _currentBkgMusic.dispose(); }; _currentBkgMusic = _local8; _nextBkgMusic = null; }; } else { if (_currentBkgMusic){ _currentBkgMusic.dispose(); }; _currentBkgMusic = _local8; _nextBkgMusic = null; }; }; }; _currentSoundCount++; _totalOverallSongCount++; var _local9:Number = _totalOverallSongCount; if (_local6 == ""){ _local6 = ("sound" + _local9); }; _local8.id = _local6; _idObject[_local6] = _local8; return (_local8); } public static function getCategoryData(_arg1:String):Object{ return (_categoryData[_arg1]); } public static function dispatchEvent(_arg1:Event):void{ _eventHandler.dispatchEvent(_arg1); } public static function set globalVolume(_arg1:Number):void{ _globalVolume = _arg1; updateAllSounds(); } public static function set musicVolume(_arg1:Number):void{ _musicVolume = _arg1; updateAllSounds(); } public static function set soundsEnabled(_arg1:Boolean):void{ _soundsEnabled = _arg1; updateAllSounds(); } public static function stopSoundCategory(_arg1:String):void{ var _local2:String; var _local3:SoundInstance; for (_local2 in _idObject) { _local3 = SoundInstance(_idObject[_local2]); if (_local3.status == SoundStatus.STOPPED){ return; }; if (_local3.category != _arg1){ } else { _local3.stop(); _currentSoundCount--; }; }; } public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventHandler.removeEventListener(_arg1, _arg2, _arg3); } public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _eventHandler.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function disposeSongReference(_arg1:SoundInstance):void{ _idObject[_arg1.id] = null; delete _idObject[_arg1.id]; } public static function getSound(_arg1:String):SoundInstance{ return (_idObject[_arg1]); } public static function set soundEffectsVolume(_arg1:Number):void{ _soundEffectsVolume = _arg1; updateAllSounds(); } public static function get musicEnabled():Boolean{ return (_musicEnabled); } public static function get soundsEnabled():Boolean{ return (_soundsEnabled); } public static function stopAllSounds():void{ var _local1:String; for (_local1 in _idObject) { stopSound(_local1); }; } public static function get soundEffectsEnabled():Boolean{ return (_soundEffectsEnabled); } public static function isSoundPlaying(_arg1:String):Boolean{ if (_idObject[_arg1] == null){ return (false); }; if (_idObject[_arg1] == undefined){ return (false); }; return (true); } public static function get soundEffectsVolume():Number{ return (_soundEffectsVolume); } public static function disposeOfCategory(_arg1:String):void{ var _local2:String; var _local3:SoundInstance; for (_local2 in _idObject) { _local3 = SoundInstance(_idObject[_local2]); if (_local3.status == SoundStatus.STOPPED){ return; }; if (_local3.category != _arg1){ } else { _local3.dispose(); _currentSoundCount--; }; }; } } }//package com.sound
Section 153
//SoundStatus (com.sound.SoundStatus) package com.sound { public class SoundStatus { private var _status:String;// = "" public static const PLAYING:SoundStatus = new SoundStatus("playing"); ; public static const COMPLETED:SoundStatus = new SoundStatus("completed"); ; public static const STOPPED:SoundStatus = new SoundStatus("stopped"); ; public static const PAUSED:SoundStatus = new SoundStatus("paused"); ; public function SoundStatus(_arg1:String){ _status = _arg1; } public function get status():String{ return (_status); } public function set status(_arg1:String):void{ _status = _arg1; } } }//package com.sound
Section 154
//SoundType (com.sound.SoundType) package com.sound { public class SoundType { public static const SOUND_EFFECT:String = "soundEffect"; public static const BACKGROUND_MUSIC:String = "backgroundMusic"; public static const LOOPED_EFFECT:String = "loopedSoundEffect"; } }//package com.sound
Section 155
//Gameplay (com.states.Gameplay) package com.states { import flash.display.*; import com.micc.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import flash.events.*; import com.sound.*; import flash.geom.*; import flash.text.*; import com.*; import com.objects.gameplay.*; import com.debug.*; import com.objects.gameplay.special.*; import com.objects.gameplay.special.cars.*; public class Gameplay extends TrackDrawer { public var timeElapsedText:TextField; public var completeX:Number;// = INF public var pauseButton:SimpleButton; private var dbgSprite:Sprite; public var number:Number;// = -1 public var bestTime:Time; public var fargroundMc:MovieClip; public var groundBody:b2Body; public var bestTimeText:TextField; public var quitButton:SimpleButton; public var backgroundMc:MovieClip; public var ending:Boolean;// = false public var score:Number;// = 0 public var best:Number;// = -1 public var paused:Boolean;// = false public var player:Truck;// = null public var displayRectMc:MovieClip; public function Gameplay(){ dbgSprite = new Sprite(); super(); addFrameScript(4, frame5); } public function event_levelComplete(_arg1:Event):void{ var _local3:Number; DocumentClass(root).gameplayTime.stop(); if (DocumentClass(root).currentLabel == "Gameplay"){ _local3 = DocumentClass(root).savedData.data[("level" + number)]; if (_local3){ DocumentClass(root).savedData.data[("level" + number)] = Math.max(_local3, DocumentClass(root).gameplayTime.currentElapsedTime); } else { DocumentClass(root).savedData.data[("level" + number)] = DocumentClass(root).gameplayTime.currentElapsedTime; }; if (DocumentClass(root).level == DocumentClass(root).unlocked){ DocumentClass(root).unlocked++; }; DocumentClass(root).score = (DocumentClass(root).score + score); DocumentClass(root).savedData.data.unlocked = DocumentClass(root).unlocked; DocumentClass(root).savedData.data.score = DocumentClass(root).score; DocumentClass(root).savedData.flush(); }; dispose(); var _local2 = "Level Results"; if (DocumentClass(root).currentLabel != "Gameplay"){ _local2 = "Track Editor"; } else { if (DocumentClass(root).level >= 6){ _local2 = "Final Level Results"; }; }; DocumentClass(root).startTransition(_local2); } override public function initGameState():void{ var _local2:Sprite; var _local4:Number; super.initGameState(); super.initDisplayHiearchy(displayRectMc); var _local1:b2Vec2 = new b2Vec2(0, 35); DocumentClass(root).world = new b2World(_local1, true); trace("Creating the World"); _local2 = new Sprite(); masterContainer.addChild(_local2); var _local3:b2DebugDraw = new b2DebugDraw(); _local2.addChild(dbgSprite); Instantiantor.newInstance(b2DebugDraw, {SetSprite:[_local2], SetDrawScale:[30], SetAlpha:[1], SetFillAlpha:[0.5], SetLineThickness:[1], SetFlags:[(b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit)]}); pauseButton.addEventListener("click", event_togglePause); quitButton.addEventListener("click", event_quit); DocumentClass(root).world.SetContactListener(DocumentClass(root).worldContactListener); DocumentClass(root).world.SetDebugDraw(_local3); if (DocumentClass(root).currentLabel == "Gameplay"){ number = DocumentClass(root).level; _local4 = DocumentClass(root).savedData.data[("level" + number)]; if (_local4){ best = _local4; bestTime = Time.createTime(best); }; }; } private function manageBox2D():void{ var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Boolean; var _local1:b2World = DocumentClass(root).world; if (((!((DocumentClass(root).currentLabel == "Gameplay"))) && (!((DocumentClass(root).currentLabel == "Test Track"))))){ if (_local1){ if (_local1.GetBodyCount() > 0){ _local3 = _local1.GetBodyList(); while (_local3) { _local1.DestroyBody(_local3); _local3 = _local3.GetNext(); }; }; }; return; }; if (!_local1){ return; }; if (!player){ return; }; if (!player.isReady){ return; }; _local1.Step((1 / 33), 10, 10); var _local2:Number = (Math.PI / 180); _local3 = _local1.GetBodyList(); while (_local3) { if ((((_local3.GetUserData() is MovieClip)) || ((_local3.GetUserData() is Sprite)))){ _local4 = (_local3.GetPosition().x * 30); _local5 = (_local3.GetPosition().y * 30); _local6 = (_local3.GetAngle() / _local2); if (((((isNaN(_local4)) || (isNaN(_local5)))) || (isNaN(_local6)))){ _local7 = false; } else { if ((_local3.GetUserData().parent is Truck)){ _local6 = (_local6 % 360); }; _local3.GetUserData().x = _local4; _local3.GetUserData().y = _local5; _local3.GetUserData().rotation = _local6; }; }; _local3 = _local3.GetNext(); }; if (DocumentClass.hasDeadBodies){ DocumentClass.removeAllDeadBodies(DocumentClass(root).world); }; if (!player){ return; }; if (!player.base){ return; }; player.update(); handleBackgroundScrolling(); handleCamera(); } private function event_quit(_arg1:Event):void{ dispose(); DocumentClass(root).trackArray = null; DocumentClass(root).startTransition("Main Menu"); } private function event_togglePause(_arg1:Event):void{ if (paused){ DocumentClass(root).gameplayTime.endTimeout(); } else { DocumentClass(root).gameplayTime.startTimeout(); }; paused = !(paused); } override public function dispose():void{ if (DocumentClass(root).activeGameState != this){ return; }; SoundManager.disposeOfCategory("gameplay"); var _local1:b2Body = DocumentClass(root).world.GetBodyList(); while (_local1) { DocumentClass(root).world.DestroyBody(_local1); _local1 = DocumentClass(root).world.GetBodyList(); }; DocumentClass(root).world.SetContactListener(null); super.dispose(); if (player){ player.dispose(); }; player = null; DocumentClass(root).activeGameState = null; } private function handleBackgroundScrolling():void{ var _local1:Number = player.baseBody.GetUserData().x; var _local2:MovieClip = this.fargroundMc; var _local3:Number = (_local2.width - 550); var _local4:Number = (_local1 / groundRect.width); _local2.x = (-(_local3) * _local4); handleCamera(); } private function handleCamera():void{ var _local1:Number = player.baseBody.GetUserData().x; var _local2:Number = 550; var _local3:Number = 400; var _local4:Number = (_local2 / 2); var _local5:Number = (_local3 / 2); var _local6:Number = 0; var _local7:Number = Math.min((-(_local1) + (_local2 / 2)), _local6); var _local8:Number = (-(player.base.y) + (_local3 / 2)); masterContainer.x = (masterContainer.x + ((_local7 - masterContainer.x) / 3)); masterContainer.y = (masterContainer.y + ((_local8 - masterContainer.y) / 3)); masterContainer.x = Math.max(Math.min(masterContainer.x, 0), (-(groundRect.width) + 550)); } function frame5(){ stop(); setup(); } public function event_gameOver(_arg1:Event):void{ dispose(); DocumentClass(root).startTransition("Game Over"); } private function setupTelephonePoles():void{ var _local6:DisplayObject; var _local7:MovieClip; var _local8:Number; var _local9:Object; var _local10:Object; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Point; var _local15:Point; var _local1:Number = 400; var _local2:Number = 20; var _local3:Number = 50; var _local4:Number = _local3; var _local5:Number = (Math.PI / 180); while ((_local4 + _local1) < groundRect.width) { _local7 = new TelephonePole(); _local7.x = _local4; _local8 = 0; while (_local8 < (groundNodes.length - 1)) { _local9 = groundNodes[_local8]; _local10 = groundNodes[(_local8 + 1)]; if ((((_local9.x > _local4)) || ((_local10.x < _local4)))){ } else { _local11 = (_local10.x - _local9.x); _local12 = ((_local4 - _local9.x) / _local11); _local12 = Math.max(Math.min(_local12, 1), 0); _local13 = (_local10.y - _local9.y); _local7.y = ((_local9.y + (_local13 * _local12)) + _local2); }; _local8++; }; backContainer.addChild(_local7); if (_local6){ _local14 = masterContainer.globalToLocal(_local6.localToGlobal(new Point(0, 0))); _local15 = masterContainer.globalToLocal(_local7.left.localToGlobal(new Point(0, 0))); _local7.left.graphics.lineStyle(2, 0, 0.25); _local7.left.graphics.moveTo(0, 0); _local7.left.graphics.lineTo((_local14.x - _local15.x), (_local14.y - _local15.y)); _local7.left.graphics.moveTo(0, 3); _local7.left.graphics.lineTo((_local14.x - _local15.x), ((_local14.y - _local15.y) + 3)); _local6.visible = false; }; Sprite(_local7.left).getChildAt(0).visible = false; _local6 = _local7.right; _local4 = (_local4 + _local1); }; } override public function update():void{ if (!parent){ return; }; super.update(); if (paused){ return; }; if (player){ player.update(); if (player.base.x >= completeX){ event_levelComplete(null); return; }; }; manageBox2D(); } public function setup():void{ var _local7:Point; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Boolean; var _local20:Array; var _local21:String; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Boolean; var _local27:Boolean; var _local28:Number; var _local29:DisplayObjectContainer; var _local1:b2World = DocumentClass(root).world; if (!_local1){ initGameState(); }; var _local2:Array = DocumentClass(root).trackArray; var _local3:Stream = new Stream(_local2); var _local4:Number = _local3.readNumber(); var _local5:b2FixtureDef = (Instantiantor.newInstance(b2FixtureDef, {shape:new b2PolygonShape(), density:0, friction:50, restitution:0}) as b2FixtureDef); var _local6:b2BodyDef = new b2BodyDef(); groundBody = _local1.CreateBody(_local6); var _local8:Number = 3; var _local9:Number = 0; while (_local9 < _local4) { _local17 = _local3.readNumber(); _local18 = (_local3.readNumber() + 1); _local19 = _local3.readBoolean(); groundNodes.push({x:_local17, y:_local18, starter:_local19}); if ((((_local9 > 0)) && (!(_local19)))){ _local20 = [new b2Vec2((_local7.x / 30), (_local7.y / 30)), new b2Vec2((_local17 / 30), (_local18 / 30)), new b2Vec2((_local17 / 30), (800 / 30)), new b2Vec2((_local7.x / 30), (800 / 30))]; b2PolygonShape(_local5.shape).SetAsArray(_local20, 4); groundBody.CreateFixture(_local5); }; _local7 = new Point(_local17, _local18); _local9++; }; var _local10:b2BodyDef = new b2BodyDef(); _local10.position = new b2Vec2(((groundNodes[0].x - 15) / 30), (groundNodes[0].y / 30)); var _local11:b2FixtureDef = new b2FixtureDef(); _local11.shape = new b2PolygonShape(); b2PolygonShape(_local11.shape).SetAsBox(1, (500 / 30)); _local1.CreateBody(_local10).CreateFixture(_local11); mustRedraw = true; handleDrawing(groundNodes); var _local12:Number = _local3.readNumber(); var _local13:MovieClip; _local8 = 8; _local9 = 0; while (_local9 < _local12) { _local21 = _local3.readString(); _local22 = _local3.readNumber(); _local23 = _local3.readNumber(); _local24 = _local3.readNumber(); _local25 = _local3.readNumber(); _local26 = _local3.readBoolean(); _local27 = _local3.readBoolean(); _local28 = _local3.readNumber(); _local29 = backContainer; if (_local28 == 0){ _local29 = frontContainer; }; switch (_local21){ case "Coin": _local13 = new Coin(); break; case "Police Car": _local13 = new PoliceCar(); break; case "Immigrant": _local13 = new Immigrant(); break; case "Bandit": _local13 = new Bandit(); break; case "Wheel": _local13 = new Wheel(); break; case "Crate": _local13 = new Crate(); break; case "Boost": _local13 = new Boost(); break; case "Broken Bridge": _local13 = new BrokenBridge(); break; case "Crashed Plane": _local13 = new CrashedPlane(); break; case "Lookout Post A": _local13 = new LookoutPostA(); break; case "Lookout Post B": _local13 = new LookoutPostB(); break; case "Plank": _local13 = new Plank(); break; }; _local13.x = _local22; _local13.y = _local23; _local13.scaleX = (_local13.scaleY = _local24); _local13.rotation = _local25; if (_local27){ _local13.collidable = _local27; _local13.activePhysics = _local26; }; _local29.addChild(_local13); _local9++; }; setupTelephonePoles(); _local14 = (groundNodes[(groundNodes.length - 2)].x + 150); _local15 = groundNodes[(groundNodes.length - 1)].y; _local16 = ((((DocumentClass(root).currentLabel == "Gameplay")) && ((DocumentClass(root).level >= 6)))) ? 2 : 1; Instantiantor.newInstance(FinishLine, {x:_local14, y:_local15, parent:frontContainer, gotoAndStop:[_local16]}); completeX = _local14; _local14 = (groundNodes[0].x + 100); _local15 = (groundNodes[0].y + 2); Instantiantor.newInstance(StartSign, {x:_local14, y:_local15, parent:backContainer}); _local14 = (groundNodes[0].x + 100); _local15 = (groundNodes[0].y - 45); player = (Instantiantor.newInstance(Truck, {x:_local14, y:_local15, parent:backContainer}, {setup:[]}) as Truck); DocumentClass(root).gameplayTime = new Time(); DataTracer.traceData((("Overall Size: " + groundRect.width) + "px")); } } }//package com.states
Section 156
//GameButton (com.GameButton) package com { import flash.display.*; import flash.events.*; import com.sound.*; public class GameButton extends SimpleButton { private var _destination:Object;// = null private var _overCallback:Function;// = null private var _clickCallback:Function;// = null private var _outCallback:Function;// = null private var _target:MovieClip;// = null public function GameButton():void{ if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; } public function get destination():Object{ return (_destination); } public function get target():MovieClip{ return (_target); } public function set clickCallback(_arg1:Function):void{ _clickCallback = _arg1; } public function set destination(_arg1:Object):void{ _destination = _arg1; } public function set target(_arg1:MovieClip):void{ _target = _arg1; } private function event_click(_arg1:MouseEvent):void{ if (((destination) && (target))){ if (target == root){ DocumentClass(root).startTransition(destination); } else { target.gotoAndStop(destination); }; }; if (clickCallback != null){ clickCallback(); }; } public function set outCallback(_arg1:Function):void{ _outCallback = _arg1; } protected function event_addedToStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); this.addEventListener(MouseEvent.CLICK, event_click, false, 0, true); this.addEventListener(MouseEvent.MOUSE_OVER, event_mouseOver, false, 0, true); this.addEventListener(MouseEvent.MOUSE_OUT, event_mouseOut, false, 0, true); } public function get clickCallback():Function{ return (_clickCallback); } public function set overCallback(_arg1:Function):void{ _overCallback = _arg1; } public function get outCallback():Function{ return (_outCallback); } private function event_mouseOut(_arg1:MouseEvent):void{ if (outCallback != null){ outCallback(); }; } public function get overCallback():Function{ return (_overCallback); } private function event_mouseOver(_arg1:MouseEvent):void{ SoundManager.playSound(ButtonOverEffect, SoundType.SOUND_EFFECT, {category:"interface", volume:0.1}); if (overCallback != null){ overCallback(); }; } } }//package com
Section 157
//Key (com.Key) package com { import flash.display.*; import flash.events.*; import flash.ui.*; public class Key extends EventDispatcher { private static var _switchDictionary:Object = new Object(); private static var _keys:Array = new Array(0x0100); private static var _subsituteKeys:Array = new Array(0x0100); private static var _eventObject:EventDispatcher = new EventDispatcher(); private static var _keys2:Array = new Array(0x0100); public static function dispatchEvent(_arg1:Event):Boolean{ return (_eventObject.dispatchEvent(_arg1)); } public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventObject.removeEventListener(_arg1, _arg2, _arg3); } public static function setEventListeners(_arg1:Stage):void{ _arg1.addEventListener(KeyboardEvent.KEY_DOWN, event_keyDown); _arg1.addEventListener(KeyboardEvent.KEY_UP, event_keyUp); } public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _eventObject.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function releaseKey(_arg1:Object):void{ var _local2:Number = 0; if (!isNaN(new Number(_arg1))){ _local2 = Number(_arg1); } else { _local2 = stringToKeyCode(String(_arg1)); }; _keys[_local2] = false; } public static function setupSubsituteKeys(_arg1:Object, _arg2:Array):void{ var _local3:Number; if ((_arg1 is String)){ _local3 = stringToKeyCode(String(_arg1)); } else { _local3 = Number(_arg1); }; _subsituteKeys[_local3] = _arg2; } public static function stringToKeyCode(_arg1:String):Number{ _arg1 = _arg1.toLowerCase(); var _local2 = "abcdefghijklmnopqrstuvwxyz"; if (_switchDictionary[_arg1] != null){ return (_switchDictionary[_arg1]); }; switch (_arg1){ case "a": case "b": case "c": case "d": case "e": case "f": case "g": case "h": case "i": case "j": case "k": case "l": case "m": case "n": case "o": case "p": case "q": case "r": case "s": case "t": case "u": case "v": case "w": case "x": case "y": case "z": _switchDictionary[_arg1] = (65 + _local2.indexOf(_arg1)); break; case "up": _switchDictionary[_arg1] = Keyboard.UP; break; case "down": _switchDictionary[_arg1] = Keyboard.DOWN; break; case "left": _switchDictionary[_arg1] = Keyboard.LEFT; break; case "right": _switchDictionary[_arg1] = Keyboard.RIGHT; break; case "shift": _switchDictionary[_arg1] = Keyboard.SHIFT; break; case "control": _switchDictionary[_arg1] = Keyboard.CONTROL; break; case "space": _switchDictionary[_arg1] = Keyboard.SPACE; break; case "enter": _switchDictionary[_arg1] = Keyboard.ENTER; break; case "delete": _switchDictionary[_arg1] = Keyboard.DELETE; break; case "home": _switchDictionary[_arg1] = Keyboard.HOME; break; case "1": _switchDictionary[_arg1] = Keyboard.NUMPAD_1; break; case "2": _switchDictionary[_arg1] = Keyboard.NUMPAD_2; break; case "3": _switchDictionary[_arg1] = Keyboard.NUMPAD_3; break; case "4": _switchDictionary[_arg1] = Keyboard.NUMPAD_4; break; case "5": _switchDictionary[_arg1] = Keyboard.NUMPAD_5; break; case "6": _switchDictionary[_arg1] = Keyboard.NUMPAD_6; break; case "7": _switchDictionary[_arg1] = Keyboard.NUMPAD_7; break; case "8": _switchDictionary[_arg1] = Keyboard.NUMPAD_8; break; case "9": _switchDictionary[_arg1] = Keyboard.NUMPAD_9; break; case "0": _switchDictionary[_arg1] = Keyboard.NUMPAD_0; break; default: throw (new Error((("That Key is not supported [" + _arg1) + "]"))); }; return (stringToKeyCode(_arg1)); } public static function areKeysUp(_arg1:Array):Boolean{ var _local2:Object; for each (_local2 in _arg1) { if (!isUp(_local2)){ return (false); }; }; return (true); } public static function isUp(_arg1:Object):Boolean{ return ((isDown(_arg1) == false)); } public static function wasToggled(_arg1:Object):Boolean{ var _local2:Number = 0; if (!isNaN(new Number(_arg1))){ _local2 = Number(_arg1); } else { _local2 = stringToKeyCode(String(_arg1)); }; if (((!((_subsituteKeys[_local2] == null))) && (!((_keys2[_local2] == true))))){ return (wereKeysToggled(_subsituteKeys[_local2])); }; var _local3 = (_keys2[_local2] == true); return (_local3); } public static function areKeysDown(_arg1:Array):Boolean{ var _local2:Object; for each (_local2 in _arg1) { if (!isDown(_local2)){ return (false); }; }; return (true); } public static function isDown(_arg1:Object):Boolean{ var _local2:Number = 0; if (!isNaN(new Number(_arg1))){ _local2 = Number(_arg1); } else { _local2 = stringToKeyCode(String(_arg1)); }; if (((!((_subsituteKeys[_local2] == null))) && (!((_keys[_local2] == true))))){ return (areKeysDown(_subsituteKeys[_local2])); }; return ((_keys[_local2] == true)); } public static function removeAllSubsituteKeys():void{ _subsituteKeys = new Array(0x0100); } private static function event_keyUp(_arg1:KeyboardEvent):void{ _keys[_arg1.keyCode] = false; _keys2[_arg1.keyCode] = false; dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, _arg1.keyCode)); } public static function removeSubsituteKeys(_arg1:Number):void{ _subsituteKeys[_arg1] = null; } public static function wereKeysToggled(_arg1:Array):Boolean{ var _local2:Object; for each (_local2 in _arg1) { if (!wasToggled(_local2)){ return (false); }; }; return (true); } private static function event_keyDown(_arg1:KeyboardEvent):void{ _keys2[_arg1.keyCode] = !((_keys[_arg1.keyCode] == true)); _keys[_arg1.keyCode] = true; dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, _arg1.keyCode)); } } }//package com
Section 158
//Stream (com.Stream) package com { public class Stream { private var _content:Array; private var _readIndex:Number;// = 0 public function Stream(_arg1:Array):void{ _content = new Array(); super(); _content = _arg1; } public function get isAtBeginning():Boolean{ return ((_readIndex == 0)); } public function readBoolean():Boolean{ _readIndex++; return ((((_content[(_readIndex - 1)] == true)) || ((_content[(_readIndex - 1)] == "true")))); } public function readNumber():Number{ _readIndex++; return (Number(_content[(_readIndex - 1)])); } public function readString():String{ _readIndex++; return (String(_content[(_readIndex - 1)])); } public function get isAtEnd():Boolean{ return ((_readIndex == (_content.length - 1))); } public function write(_arg1:Object):void{ _content.push(_arg1); } } }//package com
Section 159
//TrackDrawer (com.TrackDrawer) package com { import flash.display.*; public class TrackDrawer extends GameState { public var masterContainer:Sprite; public var groundRect:Sprite; public var frontContainer:Sprite; public var textureRect:Sprite; public var backContainer:Sprite; public var groundNodes:Array; public var frontObjects:Array; public var backObjects:Array; public var groundContainer:Sprite; private var _mustRedraw:Boolean;// = true public static const MINIMAL_LOW_DEPTH:Number = 1000; public function TrackDrawer(){ groundRect = new Sprite(); textureRect = new Sprite(); frontContainer = new Sprite(); groundContainer = new Sprite(); backContainer = new Sprite(); masterContainer = new Sprite(); frontObjects = new Array(); backObjects = new Array(); groundNodes = new Array(); super(); } public function set mustRedraw(_arg1:Boolean):void{ _mustRedraw = _arg1; } public function initDisplayHiearchy(_arg1:MovieClip):void{ textureRect.blendMode = BlendMode.OVERLAY; textureRect.alpha = 0.5; groundContainer.addChild(groundRect); groundContainer.addChild(textureRect); masterContainer.addChild(backContainer); masterContainer.addChild(groundContainer); masterContainer.addChild(frontContainer); masterContainer.y = -(_arg1.y); _arg1.addChild(masterContainer); } public function handleDrawing(_arg1:Array):void{ var _local10:Array; if (!_mustRedraw){ return; }; groundRect.graphics.clear(); textureRect.graphics.clear(); var _local2:Object = _arg1[0]; var _local3:* = _arg1[(_arg1.length - 1)]; var _local4:Object = _arg1[0]; var _local5:Array = [_local4]; var _local6:Array = new Array(); var _local7:Number = 1; while (_local7 < _arg1.length) { _local4 = _arg1[_local7]; if (!_local4.starter){ _local5.push(_local4); } else { _local6.push(_local5); _local5 = [_local4]; }; _local7++; }; if (_local5.length > 1){ _local6.push(_local5); }; _local5 = [_local4]; var _local8:BitmapData = new Dirt(195, 195); var _local9:uint = 8480579; groundRect.graphics.beginFill(_local9); textureRect.graphics.beginBitmapFill(_local8); for each (_local10 in _local6) { drawShape(_local10, groundRect.graphics); }; for each (_local10 in _local6) { drawShape(_local10, textureRect.graphics); }; textureRect.graphics.endFill(); groundRect.graphics.endFill(); } public function get mustRedraw():Boolean{ return (_mustRedraw); } override public function dispose():void{ super.dispose(); if (masterContainer){ if (masterContainer.parent){ masterContainer.parent.removeChild(masterContainer); }; } else { return; }; groundContainer.removeChild(groundRect); groundContainer.removeChild(textureRect); masterContainer = null; groundRect = (textureRect = null); frontObjects = new Array(); backObjects = new Array(); groundNodes = new Array(); } public function drawShape(_arg1:Array, _arg2:Graphics):void{ var _local4:Object; _arg2.moveTo(_arg1[0].x, _arg1[0].y); var _local3:Number = MINIMAL_LOW_DEPTH; var _local5:Number = 1; while (_local5 < _arg1.length) { _arg2.lineTo(_arg1[_local5].x, _arg1[_local5].y); _local4 = _arg1[_local5]; _local5++; }; _arg2.lineTo(_local4.x, MINIMAL_LOW_DEPTH); _arg2.lineTo(_arg1[0].x, MINIMAL_LOW_DEPTH); _arg2.lineTo(_arg1[0].x, _arg1[0].y); } } }//package com
Section 160
//BaseScrollPane (fl.containers.BaseScrollPane) package fl.containers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import flash.geom.*; import fl.events.*; public class BaseScrollPane extends UIComponent { protected var defaultLineScrollSize:Number;// = 4 protected var _maxHorizontalScrollPosition:Number;// = 0 protected var vScrollBar:Boolean; protected var disabledOverlay:Shape; protected var hScrollBar:Boolean; protected var availableWidth:Number; protected var _verticalPageScrollSize:Number;// = 0 protected var vOffset:Number;// = 0 protected var _verticalScrollBar:ScrollBar; protected var useFixedHorizontalScrolling:Boolean;// = false protected var contentWidth:Number;// = 0 protected var contentHeight:Number;// = 0 protected var _horizontalPageScrollSize:Number;// = 0 protected var background:DisplayObject; protected var _useBitmpScrolling:Boolean;// = false protected var contentPadding:Number;// = 0 protected var availableHeight:Number; protected var _horizontalScrollBar:ScrollBar; protected var contentScrollRect:Rectangle; protected var _horizontalScrollPolicy:String; protected var _verticalScrollPolicy:String; protected static const SCROLL_BAR_STYLES:Object = {upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {repeatDelay:500, repeatInterval:35, skin:"ScrollPane_upSkin", contentPadding:0, disabledAlpha:0.5}; public function BaseScrollPane(){ contentWidth = 0; contentHeight = 0; contentPadding = 0; vOffset = 0; _maxHorizontalScrollPosition = 0; _horizontalPageScrollSize = 0; _verticalPageScrollSize = 0; defaultLineScrollSize = 4; useFixedHorizontalScrolling = false; _useBitmpScrolling = false; super(); } protected function handleWheel(_arg1:MouseEvent):void{ if (((((!(enabled)) || (!(_verticalScrollBar.visible)))) || ((contentHeight <= availableHeight)))){ return; }; _verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * verticalLineScrollSize)); setVerticalScrollPosition(_verticalScrollBar.scrollPosition); dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _arg1.delta, horizontalScrollPosition)); } public function get verticalScrollPosition():Number{ return (_verticalScrollBar.scrollPosition); } protected function drawDisabledOverlay():void{ if (enabled){ if (contains(disabledOverlay)){ removeChild(disabledOverlay); }; } else { disabledOverlay.x = (disabledOverlay.y = contentPadding); disabledOverlay.width = availableWidth; disabledOverlay.height = availableHeight; disabledOverlay.alpha = (getStyleValue("disabledAlpha") as Number); addChild(disabledOverlay); }; } public function set verticalScrollPosition(_arg1:Number):void{ drawNow(); _verticalScrollBar.scrollPosition = _arg1; setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); } protected function setContentSize(_arg1:Number, _arg2:Number):void{ if ((((((contentWidth == _arg1)) || (useFixedHorizontalScrolling))) && ((contentHeight == _arg2)))){ return; }; contentWidth = _arg1; contentHeight = _arg2; invalidate(InvalidationType.SIZE); } public function get horizontalScrollPosition():Number{ return (_horizontalScrollBar.scrollPosition); } public function get horizontalScrollBar():ScrollBar{ return (_horizontalScrollBar); } override public function set enabled(_arg1:Boolean):void{ if (enabled == _arg1){ return; }; _verticalScrollBar.enabled = _arg1; _horizontalScrollBar.enabled = _arg1; super.enabled = _arg1; } public function get verticalLineScrollSize():Number{ return (_verticalScrollBar.lineScrollSize); } public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } protected function calculateAvailableSize():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = ScrollBar.WIDTH; _local2 = (contentPadding = Number(getStyleValue("contentPadding"))); _local3 = ((height - (2 * _local2)) - vOffset); vScrollBar = (((_verticalScrollPolicy == ScrollPolicy.ON)) || ((((_verticalScrollPolicy == ScrollPolicy.AUTO)) && ((contentHeight > _local3))))); _local4 = ((width - (vScrollBar) ? _local1 : 0) - (2 * _local2)); _local5 = (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - _local4); hScrollBar = (((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_local5 > 0))))); if (hScrollBar){ _local3 = (_local3 - _local1); }; if (((((((hScrollBar) && (!(vScrollBar)))) && ((_verticalScrollPolicy == ScrollPolicy.AUTO)))) && ((contentHeight > _local3)))){ vScrollBar = true; _local4 = (_local4 - _local1); }; availableHeight = (_local3 + vOffset); availableWidth = _local4; } public function get maxVerticalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentHeight - availableHeight))); } public function set horizontalScrollPosition(_arg1:Number):void{ drawNow(); _horizontalScrollBar.scrollPosition = _arg1; setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); } public function get horizontalLineScrollSize():Number{ return (_horizontalScrollBar.lineScrollSize); } public function set verticalPageScrollSize(_arg1:Number):void{ _verticalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } public function get verticalScrollPolicy():String{ return (_verticalScrollPolicy); } protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function get useBitmapScrolling():Boolean{ return (_useBitmpScrolling); } protected function handleScroll(_arg1:ScrollEvent):void{ if (_arg1.target == _verticalScrollBar){ setVerticalScrollPosition(_arg1.position); } else { setHorizontalScrollPosition(_arg1.position); }; } public function set verticalLineScrollSize(_arg1:Number):void{ _verticalScrollBar.lineScrollSize = _arg1; } public function get verticalScrollBar():ScrollBar{ return (_verticalScrollBar); } protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function set horizontalPageScrollSize(_arg1:Number):void{ _horizontalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STATE)){ drawLayout(); }; updateChildren(); super.draw(); } public function set horizontalScrollPolicy(_arg1:String):void{ _horizontalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } override protected function configUI():void{ var _local1:Graphics; super.configUI(); contentScrollRect = new Rectangle(0, 0, 85, 85); _verticalScrollBar = new ScrollBar(); _verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _verticalScrollBar.visible = false; _verticalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_verticalScrollBar); copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); _horizontalScrollBar = new ScrollBar(); _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL; _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _horizontalScrollBar.visible = false; _horizontalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_horizontalScrollBar); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); disabledOverlay = new Shape(); _local1 = disabledOverlay.graphics; _local1.beginFill(0xFFFFFF); _local1.drawRect(0, 0, width, height); _local1.endFill(); addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true); } protected function calculateContentWidth():void{ } public function get verticalPageScrollSize():Number{ if (isNaN(availableHeight)){ drawNow(); }; return (((((_verticalPageScrollSize == 0)) && (!(isNaN(availableHeight))))) ? availableHeight : _verticalPageScrollSize); } protected function drawLayout():void{ calculateAvailableSize(); calculateContentWidth(); background.width = width; background.height = height; if (vScrollBar){ _verticalScrollBar.visible = true; _verticalScrollBar.x = ((width - ScrollBar.WIDTH) - contentPadding); _verticalScrollBar.y = contentPadding; _verticalScrollBar.height = availableHeight; } else { _verticalScrollBar.visible = false; }; _verticalScrollBar.setScrollProperties(availableHeight, 0, (contentHeight - availableHeight), verticalPageScrollSize); setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); if (hScrollBar){ _horizontalScrollBar.visible = true; _horizontalScrollBar.x = contentPadding; _horizontalScrollBar.y = ((height - ScrollBar.WIDTH) - contentPadding); _horizontalScrollBar.width = availableWidth; } else { _horizontalScrollBar.visible = false; }; _horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), horizontalPageScrollSize); setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); drawDisabledOverlay(); } protected function drawBackground():void{ var _local1:DisplayObject; _local1 = background; background = getDisplayObjectInstance(getStyleValue("skin")); background.width = width; background.height = height; addChildAt(background, 0); if (((!((_local1 == null))) && (!((_local1 == background))))){ removeChild(_local1); }; } public function set horizontalLineScrollSize(_arg1:Number):void{ _horizontalScrollBar.lineScrollSize = _arg1; } public function get horizontalPageScrollSize():Number{ if (isNaN(availableWidth)){ drawNow(); }; return (((((_horizontalPageScrollSize == 0)) && (!(isNaN(availableWidth))))) ? availableWidth : _horizontalPageScrollSize); } public function get maxHorizontalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentWidth - availableWidth))); } protected function setStyles():void{ copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); } protected function updateChildren():void{ _verticalScrollBar.enabled = (_horizontalScrollBar.enabled = enabled); _verticalScrollBar.drawNow(); _horizontalScrollBar.drawNow(); } public function set verticalScrollPolicy(_arg1:String):void{ _verticalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } public function set useBitmapScrolling(_arg1:Boolean):void{ _useBitmpScrolling = _arg1; invalidate(InvalidationType.STATE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.containers
Section 161
//CellRenderer (fl.controls.listClasses.CellRenderer) package fl.controls.listClasses { import fl.controls.*; import flash.events.*; public class CellRenderer extends LabelButton implements ICellRenderer { protected var _data:Object; protected var _listData:ListData; private static var defaultStyles:Object = {upSkin:"CellRenderer_upSkin", downSkin:"CellRenderer_downSkin", overSkin:"CellRenderer_overSkin", disabledSkin:"CellRenderer_disabledSkin", selectedDisabledSkin:"CellRenderer_selectedDisabledSkin", selectedUpSkin:"CellRenderer_selectedUpSkin", selectedDownSkin:"CellRenderer_selectedDownSkin", selectedOverSkin:"CellRenderer_selectedOverSkin", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5}; public function CellRenderer():void{ toggle = true; focusEnabled = false; } override protected function toggleSelected(_arg1:MouseEvent):void{ } override public function get selected():Boolean{ return (super.selected); } public function set listData(_arg1:ListData):void{ _listData = _arg1; label = _listData.label; setStyle("icon", _listData.icon); } override public function set selected(_arg1:Boolean):void{ super.selected = _arg1; } public function set data(_arg1:Object):void{ _data = _arg1; } public function get listData():ListData{ return (_listData); } override public function setSize(_arg1:Number, _arg2:Number):void{ super.setSize(_arg1, _arg2); } override protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = 0; if (icon != null){ icon.x = _local1; icon.y = Math.round(((height - icon.height) >> 1)); _local2 = (icon.width + _local1); }; if (label.length > 0){ textField.visible = true; _local3 = Math.max(0, ((width - _local2) - (_local1 * 2))); textField.width = _local3; textField.height = (textField.textHeight + 4); textField.x = (_local2 + _local1); textField.y = Math.round(((height - textField.height) >> 1)); } else { textField.visible = false; }; background.width = width; background.height = height; } public function get data():Object{ return (_data); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls.listClasses
Section 162
//ICellRenderer (fl.controls.listClasses.ICellRenderer) package fl.controls.listClasses { public interface ICellRenderer { function setSize(_arg1:Number, _arg2:Number):void; function get listData():ListData; function get data():Object; function setMouseState(_arg1:String):void; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function set data(_arg1:Object):void; function set selected(_arg1:Boolean):void; function set listData(_arg1:ListData):void; function get selected():Boolean; } }//package fl.controls.listClasses
Section 163
//ListData (fl.controls.listClasses.ListData) package fl.controls.listClasses { import fl.core.*; public class ListData { protected var _index:uint; protected var _owner:UIComponent; protected var _label:String; protected var _icon:Object;// = null protected var _row:uint; protected var _column:uint; public function ListData(_arg1:String, _arg2:Object, _arg3:UIComponent, _arg4:uint, _arg5:uint, _arg6:uint=0){ _icon = null; super(); _label = _arg1; _icon = _arg2; _owner = _arg3; _index = _arg4; _row = _arg5; _column = _arg6; } public function get owner():UIComponent{ return (_owner); } public function get label():String{ return (_label); } public function get row():uint{ return (_row); } public function get index():uint{ return (_index); } public function get icon():Object{ return (_icon); } public function get column():uint{ return (_column); } } }//package fl.controls.listClasses
Section 164
//BaseButton (fl.controls.BaseButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.events.*; import flash.utils.*; public class BaseButton extends UIComponent { protected var _selected:Boolean;// = false private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean;// = false protected var _autoRepeat:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 165
//Button (fl.controls.Button) package fl.controls { import fl.core.*; import flash.display.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean;// = false private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function Button(){ _emphasized = false; super(); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 166
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 167
//CheckBox (fl.controls.CheckBox) package fl.controls { import flash.display.*; public class CheckBox extends LabelButton { private static var defaultStyles:Object = {icon:null, upIcon:"CheckBox_upIcon", downIcon:"CheckBox_downIcon", overIcon:"CheckBox_overIcon", disabledIcon:"CheckBox_disabledIcon", selectedDisabledIcon:"CheckBox_selectedDisabledIcon", focusRectSkin:null, focusRectPadding:null, selectedUpIcon:"CheckBox_selectedUpIcon", selectedDownIcon:"CheckBox_selectedDownIcon", selectedOverIcon:"CheckBox_selectedOverIcon", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5}; public static var createAccessibilityImplementation:Function; override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = (background.x - _local2); uiFocusRect.y = (background.y - _local2); uiFocusRect.width = (background.width + (_local2 << 1)); uiFocusRect.height = (background.height + (_local2 << 1)); }; } override public function get autoRepeat():Boolean{ return (false); } override public function set autoRepeat(_arg1:Boolean):void{ } override public function set toggle(_arg1:Boolean):void{ throw (new Error("Warning: You cannot change a CheckBox's toggle.")); } override public function get toggle():Boolean{ return (true); } override protected function configUI():void{ var _local1:Shape; var _local2:Graphics; super.configUI(); super.toggle = true; _local1 = new Shape(); _local2 = _local1.graphics; _local2.beginFill(0, 0); _local2.drawRect(0, 0, 100, 100); _local2.endFill(); background = (_local1 as DisplayObject); addChildAt(background, 0); } override protected function drawLayout():void{ var _local1:Number; super.drawLayout(); _local1 = Number(getStyleValue("textPadding")); switch (_labelPlacement){ case ButtonLabelPlacement.RIGHT: icon.x = _local1; textField.x = (icon.x + (icon.width + _local1)); background.width = ((textField.x + textField.width) + _local1); background.height = (Math.max(textField.height, icon.height) + (_local1 * 2)); break; case ButtonLabelPlacement.LEFT: icon.x = ((width - icon.width) - _local1); textField.x = (((width - icon.width) - (_local1 * 2)) - textField.width); background.width = ((textField.width + icon.width) + (_local1 * 3)); background.height = (Math.max(textField.height, icon.height) + (_local1 * 2)); break; case ButtonLabelPlacement.TOP: case ButtonLabelPlacement.BOTTOM: background.width = (Math.max(textField.width, icon.width) + (_local1 * 2)); background.height = ((textField.height + icon.height) + (_local1 * 3)); break; }; background.x = Math.min((icon.x - _local1), (textField.x - _local1)); background.y = Math.min((icon.y - _local1), (textField.y - _local1)); } override protected function drawBackground():void{ } override protected function initializeAccessibility():void{ if (CheckBox.createAccessibilityImplementation != null){ CheckBox.createAccessibilityImplementation(this); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 168
//ColorPicker (fl.controls.ColorPicker) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import flash.geom.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class ColorPicker extends UIComponent implements IFocusManagerComponent { protected var paletteBG:DisplayObject; protected var customColors:Array; protected var palette:Sprite; protected var isOpen:Boolean;// = false protected var swatchButton:BaseButton; protected var selectedSwatch:Sprite; protected var textFieldBG:DisplayObject; protected var colorWell:DisplayObject; protected var rollOverColor:int;// = -1 protected var colorHash:Object; protected var swatchSelectedSkin:DisplayObject; protected var _showTextField:Boolean;// = true protected var currRowIndex:int; protected var doOpen:Boolean;// = false protected var currColIndex:int; protected var swatchMap:Array; protected var _selectedColor:uint; protected var _editable:Boolean;// = true public var textField:TextField; protected var swatches:Sprite; protected static const SWATCH_STYLES:Object = {disabledSkin:"swatchSkin", downSkin:"swatchSkin", overSkin:"swatchSkin", upSkin:"swatchSkin"}; protected static const POPUP_BUTTON_STYLES:Object = {disabledSkin:"disabledSkin", downSkin:"downSkin", overSkin:"overSkin", upSkin:"upSkin"}; public static var defaultColors:Array; private static var defaultStyles:Object = {upSkin:"ColorPicker_upSkin", disabledSkin:"ColorPicker_disabledSkin", overSkin:"ColorPicker_overSkin", downSkin:"ColorPicker_downSkin", colorWell:"ColorPicker_colorWell", swatchSkin:"ColorPicker_swatchSkin", swatchSelectedSkin:"ColorPicker_swatchSelectedSkin", swatchWidth:10, swatchHeight:10, columnCount:18, swatchPadding:1, textFieldSkin:"ColorPicker_textFieldSkin", textFieldWidth:null, textFieldHeight:null, textPadding:3, background:"ColorPicker_backgroundSkin", backgroundPadding:5, textFormat:null, focusRectSkin:null, focusRectPadding:null, embedFonts:false}; public function ColorPicker(){ rollOverColor = -1; _editable = true; _showTextField = true; isOpen = false; doOpen = false; super(); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } protected function drawSwatchHighlight():void{ var _local1:Object; var _local2:Number; cleanUpSelected(); _local1 = getStyleValue("swatchSelectedSkin"); _local2 = (getStyleValue("swatchPadding") as Number); if (_local1 != null){ swatchSelectedSkin = getDisplayObjectInstance(_local1); swatchSelectedSkin.x = 0; swatchSelectedSkin.y = 0; swatchSelectedSkin.width = ((getStyleValue("swatchWidth") as Number) + 2); swatchSelectedSkin.height = ((getStyleValue("swatchHeight") as Number) + 2); }; } protected function setColorWellColor(_arg1:ColorTransform):void{ if (!colorWell){ return; }; colorWell.transform.colorTransform = _arg1; } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } public function open():void{ var _local1:IFocusManager; if (!_enabled){ return; }; doOpen = true; _local1 = focusManager; if (_local1){ _local1.defaultButtonEnabled = false; }; invalidate(InvalidationType.STATE); } protected function setTextEditable():void{ if (!showTextField){ return; }; textField.type = (editable) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = editable; } protected function createSwatch(_arg1:uint):Sprite{ var _local2:Sprite; var _local3:BaseButton; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Graphics; _local2 = new Sprite(); _local3 = new BaseButton(); _local3.focusEnabled = false; _local4 = (getStyleValue("swatchWidth") as Number); _local5 = (getStyleValue("swatchHeight") as Number); _local3.setSize(_local4, _local5); _local3.transform.colorTransform = new ColorTransform(0, 0, 0, 1, (_arg1 >> 16), ((_arg1 >> 8) & 0xFF), (_arg1 & 0xFF), 0); copyStylesToChild(_local3, SWATCH_STYLES); _local3.mouseEnabled = false; _local3.drawNow(); _local3.name = "color"; _local2.addChild(_local3); _local6 = (getStyleValue("swatchPadding") as Number); _local7 = _local2.graphics; _local7.beginFill(0); _local7.drawRect(-(_local6), -(_local6), (_local4 + (_local6 * 2)), (_local5 + (_local6 * 2))); _local7.endFill(); _local2.addEventListener(MouseEvent.CLICK, onSwatchClick, false, 0, true); _local2.addEventListener(MouseEvent.MOUSE_OVER, onSwatchOver, false, 0, true); _local2.addEventListener(MouseEvent.MOUSE_OUT, onSwatchOut, false, 0, true); return (_local2); } protected function onSwatchOut(_arg1:MouseEvent):void{ var _local2:ColorTransform; _local2 = _arg1.target.transform.colorTransform; dispatchEvent(new ColorPickerEvent(ColorPickerEvent.ITEM_ROLL_OUT, _local2.color)); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:ColorTransform; var _local3:Sprite; switch (_arg1.keyCode){ case Keyboard.SHIFT: case Keyboard.CONTROL: return; }; if (_arg1.ctrlKey){ switch (_arg1.keyCode){ case Keyboard.DOWN: open(); break; case Keyboard.UP: close(); break; }; return; }; if (!isOpen){ switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.LEFT: case Keyboard.RIGHT: case Keyboard.SPACE: open(); return; }; }; textField.maxChars = ((((_arg1.keyCode == "#".charCodeAt(0))) || ((textField.text.indexOf("#") > -1)))) ? 7 : 6; switch (_arg1.keyCode){ case Keyboard.TAB: _local3 = findSwatch(_selectedColor); setSwatchHighlight(_local3); return; case Keyboard.HOME: currColIndex = (currRowIndex = 0); break; case Keyboard.END: currColIndex = (swatchMap[(swatchMap.length - 1)].length - 1); currRowIndex = (swatchMap.length - 1); break; case Keyboard.PAGE_DOWN: currRowIndex = (swatchMap.length - 1); break; case Keyboard.PAGE_UP: currRowIndex = 0; break; case Keyboard.ESCAPE: if (isOpen){ selectedColor = _selectedColor; }; close(); return; case Keyboard.ENTER: return; case Keyboard.UP: currRowIndex = Math.max(-1, (currRowIndex - 1)); if (currRowIndex == -1){ currRowIndex = (swatchMap.length - 1); }; break; case Keyboard.DOWN: currRowIndex = Math.min(swatchMap.length, (currRowIndex + 1)); if (currRowIndex == swatchMap.length){ currRowIndex = 0; }; break; case Keyboard.RIGHT: currColIndex = Math.min(swatchMap[currRowIndex].length, (currColIndex + 1)); if (currColIndex == swatchMap[currRowIndex].length){ currColIndex = 0; currRowIndex = Math.min(swatchMap.length, (currRowIndex + 1)); if (currRowIndex == swatchMap.length){ currRowIndex = 0; }; }; break; case Keyboard.LEFT: currColIndex = Math.max(-1, (currColIndex - 1)); if (currColIndex == -1){ currColIndex = (swatchMap[currRowIndex].length - 1); currRowIndex = Math.max(-1, (currRowIndex - 1)); if (currRowIndex == -1){ currRowIndex = (swatchMap.length - 1); }; }; break; default: return; }; _local2 = swatchMap[currRowIndex][currColIndex].getChildByName("color").transform.colorTransform; rollOverColor = _local2.color; setColorWellColor(_local2); setSwatchHighlight(swatchMap[currRowIndex][currColIndex]); setColorText(_local2.color); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ super.focusInHandler(_arg1); setIMEMode(true); } protected function onStageClick(_arg1:MouseEvent):void{ if (((!(contains((_arg1.target as DisplayObject)))) && (!(palette.contains((_arg1.target as DisplayObject)))))){ selectedColor = _selectedColor; close(); }; } protected function onSwatchOver(_arg1:MouseEvent):void{ var _local2:BaseButton; var _local3:ColorTransform; _local2 = (_arg1.target.getChildByName("color") as BaseButton); _local3 = _local2.transform.colorTransform; setColorWellColor(_local3); setSwatchHighlight((_arg1.target as Sprite)); setColorText(_local3.color); dispatchEvent(new ColorPickerEvent(ColorPickerEvent.ITEM_ROLL_OVER, _local3.color)); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; if (!_arg1){ close(); }; swatchButton.enabled = _arg1; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ var _local2:uint; var _local3:ColorTransform; var _local4:String; var _local5:Sprite; if (!isOpen){ return; }; _local3 = new ColorTransform(); if (((editable) && (showTextField))){ _local4 = textField.text; if (_local4.indexOf("#") > -1){ _local4 = _local4.replace(/^\s+|\s+$/g, ""); _local4 = _local4.replace(/#/g, ""); }; _local2 = parseInt(_local4, 16); _local5 = findSwatch(_local2); setSwatchHighlight(_local5); _local3.color = _local2; setColorWellColor(_local3); } else { _local2 = rollOverColor; _local3.color = _local2; }; if (_arg1.keyCode != Keyboard.ENTER){ return; }; dispatchEvent(new ColorPickerEvent(ColorPickerEvent.ENTER, _local2)); _selectedColor = rollOverColor; setColorText(_local3.color); rollOverColor = _local3.color; dispatchEvent(new ColorPickerEvent(ColorPickerEvent.CHANGE, selectedColor)); close(); } protected function drawBG():void{ var _local1:Object; var _local2:Number; _local1 = getStyleValue("background"); if (_local1 != null){ paletteBG = (getDisplayObjectInstance(_local1) as Sprite); }; if (paletteBG == null){ return; }; _local2 = Number(getStyleValue("backgroundPadding")); paletteBG.width = (Math.max((showTextField) ? textFieldBG.width : 0, swatches.width) + (_local2 * 2)); paletteBG.height = ((swatches.y + swatches.height) + _local2); palette.addChildAt(paletteBG, 0); } protected function positionTextField():void{ var _local1:Number; var _local2:Number; if (!showTextField){ return; }; _local1 = (getStyleValue("backgroundPadding") as Number); _local2 = (getStyleValue("textPadding") as Number); textFieldBG.x = (paletteBG.x + _local1); textFieldBG.y = (paletteBG.y + _local1); textField.x = (textFieldBG.x + _local2); textField.y = (textFieldBG.y + _local2); } protected function setEmbedFonts():void{ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function set showTextField(_arg1:Boolean):void{ invalidate(InvalidationType.STYLES); _showTextField = _arg1; } protected function addStageListener(_arg1:Event=null):void{ stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false, 0, true); } protected function drawPalette():void{ if (isOpen){ stage.removeChild(palette); }; palette = new Sprite(); drawTextField(); drawSwatches(); drawBG(); } protected function showPalette():void{ var _local1:Sprite; if (isOpen){ positionPalette(); return; }; addEventListener(Event.ENTER_FRAME, addCloseListener, false, 0, true); stage.addChild(palette); isOpen = true; positionPalette(); dispatchEvent(new Event(Event.OPEN)); stage.focus = textField; _local1 = selectedSwatch; if (_local1 == null){ _local1 = findSwatch(_selectedColor); }; setSwatchHighlight(_local1); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; invalidate(InvalidationType.STATE); } public function set colors(_arg1:Array):void{ customColors = _arg1; invalidate(InvalidationType.DATA); } protected function drawTextField():void{ var _local1:Number; var _local2:Number; var _local3:Object; var _local4:TextFormat; var _local5:TextFormat; if (!showTextField){ return; }; _local1 = (getStyleValue("backgroundPadding") as Number); _local2 = (getStyleValue("textPadding") as Number); textFieldBG = getDisplayObjectInstance(getStyleValue("textFieldSkin")); if (textFieldBG != null){ palette.addChild(textFieldBG); textFieldBG.x = (textFieldBG.y = _local1); }; _local3 = UIComponent.getStyleDefinition(); _local4 = (enabled) ? (_local3.defaultTextFormat as TextFormat) : (_local3.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local4); _local5 = (getStyleValue("textFormat") as TextFormat); if (_local5 != null){ textField.setTextFormat(_local5); } else { _local5 = _local4; }; textField.defaultTextFormat = _local5; setEmbedFonts(); textField.restrict = "A-Fa-f0-9#"; textField.maxChars = 6; palette.addChild(textField); textField.text = " #888888 "; textField.height = (textField.textHeight + 3); textField.width = (textField.textWidth + 3); textField.text = ""; textField.x = (textField.y = (_local1 + _local2)); textFieldBG.width = (textField.width + (_local2 * 2)); textFieldBG.height = (textField.height + (_local2 * 2)); setTextEditable(); } protected function setColorText(_arg1:uint):void{ if (textField == null){ return; }; textField.text = ("#" + colorToString(_arg1)); } protected function colorToString(_arg1:uint):String{ var _local2:String; _local2 = _arg1.toString(16); while (_local2.length < 6) { _local2 = ("0" + _local2); }; return (_local2); } public function get imeMode():String{ return (_imeMode); } public function set selectedColor(_arg1:uint):void{ var _local2:ColorTransform; if (!_enabled){ return; }; _selectedColor = _arg1; rollOverColor = -1; currColIndex = (currRowIndex = 0); _local2 = new ColorTransform(); _local2.color = _arg1; setColorWellColor(_local2); invalidate(InvalidationType.DATA); } override protected function focusOutHandler(_arg1:FocusEvent):void{ if (_arg1.relatedObject == textField){ setFocus(); return; }; if (isOpen){ close(); }; super.focusOutHandler(_arg1); setIMEMode(false); } protected function onPopupButtonClick(_arg1:MouseEvent):void{ if (isOpen){ close(); } else { open(); }; } protected function positionPalette():void{ var _local1:Point; var _local2:Number; _local1 = swatchButton.localToGlobal(new Point(0, 0)); _local2 = (getStyleValue("backgroundPadding") as Number); if ((_local1.x + palette.width) > stage.stageWidth){ palette.x = ((_local1.x - palette.width) << 0); } else { palette.x = (((_local1.x + swatchButton.width) + _local2) << 0); }; palette.y = (Math.max(0, Math.min(_local1.y, (stage.stageHeight - palette.height))) << 0); } public function get hexValue():String{ if (colorWell == null){ return (colorToString(0)); }; return (colorToString(colorWell.transform.colorTransform.color)); } override public function get enabled():Boolean{ return (super.enabled); } protected function setSwatchHighlight(_arg1:Sprite):void{ var _local2:Number; var _local3:*; if (_arg1 == null){ if (palette.contains(swatchSelectedSkin)){ palette.removeChild(swatchSelectedSkin); }; return; } else { if (((!(palette.contains(swatchSelectedSkin))) && ((colors.length > 0)))){ palette.addChild(swatchSelectedSkin); } else { if (!colors.length){ return; }; }; }; _local2 = (getStyleValue("swatchPadding") as Number); palette.setChildIndex(swatchSelectedSkin, (palette.numChildren - 1)); swatchSelectedSkin.x = ((swatches.x + _arg1.x) - 1); swatchSelectedSkin.y = ((swatches.y + _arg1.y) - 1); _local3 = _arg1.getChildByName("color").transform.colorTransform.color; currColIndex = colorHash[_local3].col; currRowIndex = colorHash[_local3].row; } protected function onSwatchClick(_arg1:MouseEvent):void{ var _local2:ColorTransform; _local2 = _arg1.target.getChildByName("color").transform.colorTransform; _selectedColor = _local2.color; dispatchEvent(new ColorPickerEvent(ColorPickerEvent.CHANGE, selectedColor)); close(); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.DATA)){ setStyles(); drawPalette(); setEmbedFonts(); invalidate(InvalidationType.DATA, false); invalidate(InvalidationType.STYLES, false); }; if (isInvalid(InvalidationType.DATA)){ drawSwatchHighlight(); setColorDisplay(); }; if (isInvalid(InvalidationType.STATE)){ setTextEditable(); if (doOpen){ doOpen = false; showPalette(); }; colorWell.visible = enabled; }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ swatchButton.setSize(width, height); swatchButton.drawNow(); colorWell.width = width; colorWell.height = height; }; super.draw(); } protected function drawSwatches():void{ var _local1:Number; var _local2:Number; var _local3:uint; var _local4:uint; var _local5:Number; var _local6:Number; var _local7:uint; var _local8:int; var _local9:uint; var _local10:Sprite; _local1 = (getStyleValue("backgroundPadding") as Number); _local2 = (showTextField) ? ((textFieldBG.y + textFieldBG.height) + _local1) : _local1; swatches = new Sprite(); palette.addChild(swatches); swatches.x = _local1; swatches.y = _local2; _local3 = (getStyleValue("columnCount") as uint); _local4 = (getStyleValue("swatchPadding") as uint); _local5 = (getStyleValue("swatchWidth") as Number); _local6 = (getStyleValue("swatchHeight") as Number); colorHash = {}; swatchMap = []; _local7 = Math.min(0x0400, colors.length); _local8 = -1; _local9 = 0; while (_local9 < _local7) { _local10 = createSwatch(colors[_local9]); _local10.x = ((_local5 + _local4) * (_local9 % _local3)); if (_local10.x == 0){ swatchMap.push([_local10]); _local8++; } else { swatchMap[_local8].push(_local10); }; colorHash[colors[_local9]] = {swatch:_local10, row:_local8, col:(swatchMap[_local8].length - 1)}; _local10.y = (Math.floor((_local9 / _local3)) * (_local6 + _local4)); swatches.addChild(_local10); _local9++; }; } override protected function configUI():void{ var _local1:uint; super.configUI(); tabChildren = false; if (_slot1.defaultColors == null){ _slot1.defaultColors = []; _local1 = 0; while (_local1 < 216) { _slot1.defaultColors.push(((((((((_local1 / 6) % 3) << 0) + (((_local1 / 108) << 0) * 3)) * 51) << 16) | (((_local1 % 6) * 51) << 8)) | ((((_local1 / 18) << 0) % 6) * 51))); _local1++; }; }; colorHash = {}; swatchMap = []; textField = new TextField(); textField.tabEnabled = false; swatchButton = new BaseButton(); swatchButton.focusEnabled = false; swatchButton.useHandCursor = false; swatchButton.autoRepeat = false; swatchButton.setSize(25, 25); swatchButton.addEventListener(MouseEvent.CLICK, onPopupButtonClick, false, 0, true); addChild(swatchButton); palette = new Sprite(); palette.tabChildren = false; palette.cacheAsBitmap = true; } public function get showTextField():Boolean{ return (_showTextField); } public function get colors():Array{ return (((customColors)!=null) ? customColors : _slot1.defaultColors); } protected function findSwatch(_arg1:uint):Sprite{ var _local2:Object; if (!swatchMap.length){ return (null); }; _local2 = colorHash[_arg1]; if (_local2 != null){ return (_local2.swatch); }; return (null); } protected function setColorDisplay():void{ var _local1:ColorTransform; var _local2:Sprite; if (!swatchMap.length){ return; }; _local1 = new ColorTransform(0, 0, 0, 1, (_selectedColor >> 16), ((_selectedColor >> 8) & 0xFF), (_selectedColor & 0xFF), 0); setColorWellColor(_local1); setColorText(_selectedColor); _local2 = findSwatch(_selectedColor); setSwatchHighlight(_local2); if (((swatchMap.length) && ((colorHash[_selectedColor] == undefined)))){ cleanUpSelected(); }; } protected function cleanUpSelected():void{ if (((swatchSelectedSkin) && (palette.contains(swatchSelectedSkin)))){ palette.removeChild(swatchSelectedSkin); }; } public function get selectedColor():uint{ if (colorWell == null){ return (0); }; return (colorWell.transform.colorTransform.color); } private function addCloseListener(_arg1:Event){ removeEventListener(Event.ENTER_FRAME, addCloseListener); if (!isOpen){ return; }; addStageListener(); } protected function removeStageListener(_arg1:Event=null):void{ stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false); } protected function setStyles():void{ var _local1:DisplayObject; var _local2:Object; _local1 = colorWell; _local2 = getStyleValue("colorWell"); if (_local2 != null){ colorWell = (getDisplayObjectInstance(_local2) as DisplayObject); }; addChildAt(colorWell, getChildIndex(swatchButton)); copyStylesToChild(swatchButton, POPUP_BUTTON_STYLES); swatchButton.drawNow(); if (((((!((_local1 == null))) && (contains(_local1)))) && (!((_local1 == colorWell))))){ removeChild(_local1); }; } public function close():void{ var _local1:IFocusManager; if (isOpen){ stage.removeChild(palette); isOpen = false; dispatchEvent(new Event(Event.CLOSE)); }; _local1 = focusManager; if (_local1){ _local1.defaultButtonEnabled = true; }; removeStageListener(); cleanUpSelected(); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 169
//ComboBox (fl.controls.ComboBox) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.data.*; import fl.managers.*; import flash.geom.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class ComboBox extends UIComponent implements IFocusManagerComponent { protected var _dropdownWidth:Number; protected var highlightedCell:int;// = -1 protected var _prompt:String; protected var isOpen:Boolean;// = false protected var list:List; protected var _rowCount:uint;// = 5 protected var currentIndex:int; protected var isKeyDown:Boolean;// = false protected var _labels:Array; protected var background:BaseButton; protected var inputField:TextInput; protected var listOverIndex:uint; protected var editableValue:String; protected var _editable:Boolean;// = false private var collectionItemImport:SimpleCollectionItem; protected static const BACKGROUND_STYLES:Object = {overSkin:"overSkin", downSkin:"downSkin", upSkin:"upSkin", disabledSkin:"disabledSkin", repeatInterval:"repeatInterval"}; protected static const LIST_STYLES:Object = {upSkin:"comboListUpSkin", overSkin:"comboListOverSkin", downSkin:"comobListDownSkin", disabledSkin:"comboListDisabledSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval", textFormat:"textFormat", disabledAlpha:"disabledAlpha", skin:"listSkin"}; private static var defaultStyles:Object = {upSkin:"ComboBox_upSkin", downSkin:"ComboBox_downSkin", overSkin:"ComboBox_overSkin", disabledSkin:"ComboBox_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, buttonWidth:24, disabledAlpha:null, listSkin:null}; public static var createAccessibilityImplementation:Function; public function ComboBox(){ _rowCount = 5; _editable = false; isOpen = false; highlightedCell = -1; isKeyDown = false; super(); } protected function drawList():void{ list.rowCount = Math.max(0, Math.min(_rowCount, list.dataProvider.length)); } public function set imeMode(_arg1:String):void{ inputField.imeMode = _arg1; } public function get dropdown():List{ return (list); } public function get dropdownWidth():Number{ return (list.width); } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (list.sortItemsOn(_arg1, _arg2)); } protected function onEnter(_arg1:ComponentEvent):void{ _arg1.stopPropagation(); } public function removeItemAt(_arg1:uint):void{ list.removeItemAt(_arg1); invalidate(InvalidationType.DATA); } public function open():void{ currentIndex = selectedIndex; if (((isOpen) || ((length == 0)))){ return; }; dispatchEvent(new Event(Event.OPEN)); isOpen = true; addEventListener(Event.ENTER_FRAME, addCloseListener, false, 0, true); positionList(); list.scrollToSelected(); stage.addChild(list); } public function get selectedItem():Object{ return (list.selectedItem); } public function set text(_arg1:String):void{ if (!editable){ return; }; inputField.text = _arg1; } public function get labelField():String{ return (list.labelField); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; var _local3:uint; var _local4:Number; var _local5:int; isKeyDown = true; if (_arg1.ctrlKey){ switch (_arg1.keyCode){ case Keyboard.UP: if (highlightedCell > -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); break; case Keyboard.DOWN: open(); break; }; return; }; _arg1.stopPropagation(); _local2 = Math.max(((calculateAvailableHeight() / list.rowHeight) << 0), 1); _local3 = selectedIndex; _local4 = ((highlightedCell)==-1) ? selectedIndex : highlightedCell; _local5 = -1; switch (_arg1.keyCode){ case Keyboard.SPACE: if (isOpen){ close(); } else { open(); }; return; case Keyboard.ESCAPE: if (isOpen){ if (highlightedCell > -1){ selectedIndex = selectedIndex; }; close(); }; return; case Keyboard.UP: _local5 = Math.max(0, (_local4 - 1)); break; case Keyboard.DOWN: _local5 = Math.min((length - 1), (_local4 + 1)); break; case Keyboard.PAGE_UP: _local5 = Math.max((_local4 - _local2), 0); break; case Keyboard.PAGE_DOWN: _local5 = Math.min((_local4 + _local2), (length - 1)); break; case Keyboard.HOME: _local5 = 0; break; case Keyboard.END: _local5 = (length - 1); break; case Keyboard.ENTER: if (((_editable) && ((highlightedCell == -1)))){ editableValue = inputField.text; selectedIndex = -1; } else { if (((isOpen) && ((highlightedCell > -1)))){ editableValue = null; selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; }; dispatchEvent(new ComponentEvent(ComponentEvent.ENTER)); close(); return; default: if (editable){ break; }; _local5 = list.getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), _local4); break; }; if (_local5 > -1){ if (isOpen){ highlightCell(_local5); inputField.text = list.itemToLabel(getItemAt(_local5)); } else { highlightCell(); selectedIndex = _local5; dispatchEvent(new Event(Event.CHANGE)); }; }; } public function set dropdownWidth(_arg1:Number):void{ _dropdownWidth = _arg1; invalidate(InvalidationType.SIZE); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ super.focusInHandler(_arg1); if (editable){ stage.focus = inputField.textField; }; } protected function onStageClick(_arg1:MouseEvent):void{ if (!isOpen){ return; }; if (((!(contains((_arg1.target as DisplayObject)))) && (!(list.contains((_arg1.target as DisplayObject)))))){ if (highlightedCell != -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; } protected function handleDataChange(_arg1:DataChangeEvent):void{ invalidate(InvalidationType.DATA); } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ isKeyDown = false; } protected function onListItemUp(_arg1:MouseEvent):void{ var _local2:*; stage.removeEventListener(MouseEvent.MOUSE_UP, onListItemUp); if (((!((_arg1.target is ICellRenderer))) || (!(list.contains((_arg1.target as DisplayObject)))))){ return; }; editableValue = null; _local2 = selectedIndex; selectedIndex = _arg1.target.listData.index; if (_local2 != selectedIndex){ dispatchEvent(new Event(Event.CHANGE)); }; close(); } public function removeAll():void{ list.removeAll(); inputField.text = ""; invalidate(InvalidationType.DATA); } public function set selectedItem(_arg1:Object):void{ list.selectedItem = _arg1; invalidate(InvalidationType.SELECTED); } protected function highlightCell(_arg1:int=-1):void{ var _local2:ICellRenderer; if (highlightedCell > -1){ _local2 = list.itemToCellRenderer(getItemAt(highlightedCell)); if (_local2 != null){ _local2.setMouseState("up"); }; }; if (_arg1 == -1){ return; }; list.scrollToIndex(_arg1); list.drawNow(); _local2 = list.itemToCellRenderer(getItemAt(_arg1)); if (_local2 != null){ _local2.setMouseState("over"); highlightedCell = _arg1; }; } public function itemToLabel(_arg1:Object):String{ if (_arg1 == null){ return (""); }; return (list.itemToLabel(_arg1)); } public function addItemAt(_arg1:Object, _arg2:uint):void{ list.addItemAt(_arg1, _arg2); invalidate(InvalidationType.DATA); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (list.replaceItemAt(_arg1, _arg2)); } protected function showPrompt():void{ inputField.text = _prompt; } public function set rowCount(_arg1:uint):void{ _rowCount = _arg1; invalidate(InvalidationType.SIZE); } public function get restrict():String{ return (inputField.restrict); } protected function setEmbedFonts():void{ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ inputField.textField.embedFonts = _local1; }; } public function sortItems(... _args){ return (list.sortItems.apply(list, _args)); } public function set labelField(_arg1:String):void{ list.labelField = _arg1; invalidate(InvalidationType.DATA); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; drawTextField(); } public function set prompt(_arg1:String):void{ if (_arg1 == ""){ _prompt = null; } else { _prompt = _arg1; }; invalidate(InvalidationType.STATE); } public function get length():int{ return (list.length); } protected function drawTextField():void{ inputField.setStyle("upSkin", ""); inputField.setStyle("disabledSkin", ""); inputField.enabled = enabled; inputField.editable = _editable; inputField.textField.selectable = ((enabled) && (_editable)); inputField.mouseEnabled = (inputField.mouseChildren = ((enabled) && (_editable))); inputField.focusEnabled = false; if (_editable){ inputField.addEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus, false, 0, true); inputField.addEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut, false, 0, true); } else { inputField.removeEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus); inputField.removeEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut); }; } protected function onInputFieldFocusOut(_arg1:FocusEvent):void{ inputField.removeEventListener(ComponentEvent.ENTER, onEnter); selectedIndex = selectedIndex; } protected function passEvent(_arg1:Event):void{ dispatchEvent(_arg1); } public function get imeMode():String{ return (inputField.imeMode); } public function get labelFunction():Function{ return (list.labelFunction); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return ((list.height - (_local1 * 2))); } public function get selectedIndex():int{ return (list.selectedIndex); } override protected function focusOutHandler(_arg1:FocusEvent):void{ isKeyDown = false; if (isOpen){ if (((!(_arg1.relatedObject)) || (!(list.contains(_arg1.relatedObject))))){ if (((!((highlightedCell == -1))) && (!((highlightedCell == selectedIndex))))){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; }; super.focusOutHandler(_arg1); } public function get selectedLabel():String{ if (editableValue != null){ return (editableValue); }; if (selectedIndex == -1){ return (null); }; return (itemToLabel(selectedItem)); } public function get text():String{ return (inputField.text); } protected function onListChange(_arg1:Event):void{ editableValue = null; dispatchEvent(_arg1); invalidate(InvalidationType.SELECTED); if (isKeyDown){ return; }; close(); } protected function onToggleListVisibility(_arg1:MouseEvent):void{ _arg1.stopPropagation(); dispatchEvent(_arg1); if (isOpen){ close(); } else { open(); stage.addEventListener(MouseEvent.MOUSE_UP, onListItemUp, false, 0, true); }; } override protected function draw():void{ var _local1:*; _local1 = selectedIndex; if ((((_local1 == -1)) && (((((!((prompt == null))) || (editable))) || ((length == 0)))))){ _local1 = Math.max(-1, Math.min(_local1, (length - 1))); } else { editableValue = null; _local1 = Math.max(0, Math.min(_local1, (length - 1))); }; if (list.selectedIndex != _local1){ list.selectedIndex = _local1; invalidate(InvalidationType.SELECTED, false); }; if (isInvalid(InvalidationType.STYLES)){ setStyles(); setEmbedFonts(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.STATE)){ drawTextFormat(); drawLayout(); invalidate(InvalidationType.DATA); }; if (isInvalid(InvalidationType.DATA)){ drawList(); invalidate(InvalidationType.SELECTED, true); }; if (isInvalid(InvalidationType.SELECTED)){ if ((((_local1 == -1)) && (!((editableValue == null))))){ inputField.text = editableValue; } else { if (_local1 > -1){ if (length > 0){ inputField.horizontalScrollPosition = 0; inputField.text = itemToLabel(list.selectedItem); }; } else { if ((((_local1 == -1)) && (!((_prompt == null))))){ showPrompt(); } else { inputField.text = ""; }; }; }; if (((((editable) && ((selectedIndex > -1)))) && ((stage.focus == inputField.textField)))){ inputField.setSelection(0, inputField.length); }; }; drawTextField(); super.draw(); } public function addItem(_arg1:Object):void{ list.addItem(_arg1); invalidate(InvalidationType.DATA); } public function get rowCount():uint{ return (_rowCount); } override protected function configUI():void{ super.configUI(); background = new BaseButton(); background.focusEnabled = false; copyStylesToChild(background, BACKGROUND_STYLES); background.addEventListener(MouseEvent.MOUSE_DOWN, onToggleListVisibility, false, 0, true); addChild(background); inputField = new TextInput(); inputField.focusTarget = (this as IFocusManagerComponent); inputField.focusEnabled = false; inputField.addEventListener(Event.CHANGE, onTextInput, false, 0, true); addChild(inputField); list = new List(); list.focusEnabled = false; copyStylesToChild(list, LIST_STYLES); list.addEventListener(Event.CHANGE, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_CLICK, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OUT, passEvent, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OVER, passEvent, false, 0, true); list.verticalScrollBar.addEventListener(Event.SCROLL, passEvent, false, 0, true); } protected function positionList():void{ var _local1:Point; _local1 = localToGlobal(new Point(0, 0)); list.x = _local1.x; if (((_local1.y + height) + list.height) > stage.stageHeight){ list.y = (_local1.y - list.height); } else { list.y = (_local1.y + height); }; } public function get value():String{ var _local1:Object; if (editableValue != null){ return (editableValue); }; _local1 = selectedItem; if (((!(_editable)) && (!((_local1.data == null))))){ return (_local1.data); }; return (itemToLabel(_local1)); } public function get prompt():String{ return (_prompt); } public function set dataProvider(_arg1:DataProvider):void{ _arg1.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); list.dataProvider = _arg1; invalidate(InvalidationType.DATA); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; if (!_editable){ return; }; inputField.restrict = _arg1; } protected function onTextInput(_arg1:Event):void{ _arg1.stopPropagation(); if (!_editable){ return; }; editableValue = inputField.text; selectedIndex = -1; dispatchEvent(new Event(Event.CHANGE)); } protected function onInputFieldFocus(_arg1:FocusEvent):void{ inputField.addEventListener(ComponentEvent.ENTER, onEnter, false, 0, true); close(); } public function getItemAt(_arg1:uint):Object{ return (list.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (ComboBox.createAccessibilityImplementation != null){ ComboBox.createAccessibilityImplementation(this); }; } protected function drawLayout():void{ var _local1:Number; var _local2:Number; _local1 = (getStyleValue("buttonWidth") as Number); _local2 = (getStyleValue("textPadding") as Number); background.setSize(width, height); inputField.x = (inputField.y = _local2); inputField.setSize(((width - _local1) - _local2), (height - _local2)); list.width = (isNaN(_dropdownWidth)) ? width : _dropdownWidth; background.enabled = enabled; background.drawNow(); } public function removeItem(_arg1:Object):Object{ return (list.removeItem(_arg1)); } private function addCloseListener(_arg1:Event){ removeEventListener(Event.ENTER_FRAME, addCloseListener); if (!isOpen){ return; }; stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false, 0, true); } public function get dataProvider():DataProvider{ return (list.dataProvider); } public function get textField():TextInput{ return (inputField); } protected function setStyles():void{ copyStylesToChild(background, BACKGROUND_STYLES); copyStylesToChild(list, LIST_STYLES); } public function set labelFunction(_arg1:Function):void{ list.labelFunction = _arg1; invalidate(InvalidationType.DATA); } protected function drawTextFormat():void{ var _local1:TextFormat; _local1 = (getStyleValue((_enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local1 == null){ _local1 = new TextFormat(); }; inputField.textField.defaultTextFormat = _local1; inputField.textField.setTextFormat(_local1); setEmbedFonts(); } public function set selectedIndex(_arg1:int):void{ list.selectedIndex = _arg1; highlightCell(); invalidate(InvalidationType.SELECTED); } public function close():void{ highlightCell(); highlightedCell = -1; if (!isOpen){ return; }; dispatchEvent(new Event(Event.CLOSE)); stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStageClick); isOpen = false; stage.removeChild(list); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, List.getStyleDefinition())); } } }//package fl.controls
Section 170
//LabelButton (fl.controls.LabelButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _labelPlacement:String;// = "right" protected var _toggle:Boolean;// = false protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String;// = "center" public var textField:TextField; protected var _label:String;// = "Label" private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 171
//List (fl.controls.List) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import flash.geom.*; import flash.utils.*; import flash.ui.*; public class List extends SelectableList implements IFocusManagerComponent { protected var _labelField:String;// = "label" protected var _rowHeight:Number;// = 20 protected var _cellRenderer:Object; protected var _iconField:String;// = "icon" protected var _labelFunction:Function; protected var _iconFunction:Function; private static var defaultStyles:Object = {focusRectSkin:null, focusRectPadding:null}; public static var createAccessibilityImplementation:Function; public function List(){ _rowHeight = 20; _labelField = "label"; _iconField = "icon"; super(); } public function get iconField():String{ return (_iconField); } protected function doKeySelection(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{ var _local4:Boolean; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; _local4 = false; if (_arg2){ _local6 = []; _local7 = lastCaretIndex; _local8 = _arg1; if (_local7 == -1){ _local7 = ((caretIndex)!=-1) ? caretIndex : _arg1; }; if (_local7 > _local8){ _local8 = _local7; _local7 = _arg1; }; _local5 = _local7; while (_local5 <= _local8) { _local6.push(_local5); _local5++; }; selectedIndices = _local6; caretIndex = _arg1; _local4 = true; } else { selectedIndex = _arg1; caretIndex = (lastCaretIndex = _arg1); _local4 = true; }; if (_local4){ dispatchEvent(new Event(Event.CHANGE)); }; invalidate(InvalidationType.DATA); } override protected function drawList():void{ var _local1:Rectangle; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:ICellRenderer; var _local7:Dictionary; var _local8:Dictionary; var _local9:Boolean; var _local10:String; var _local11:Object; var _local12:Sprite; var _local13:String; listHolder.x = (listHolder.y = contentPadding); _local1 = listHolder.scrollRect; _local1.x = _horizontalScrollPosition; _local1.y = (Math.floor(_verticalScrollPosition) % rowHeight); listHolder.scrollRect = _local1; listHolder.cacheAsBitmap = useBitmapScrolling; _local2 = Math.floor((_verticalScrollPosition / rowHeight)); _local3 = Math.min(length, ((_local2 + rowCount) + 1)); _local7 = (renderedItems = new Dictionary(true)); _local4 = _local2; while (_local4 < _local3) { _local7[_dataProvider.getItemAt(_local4)] = true; _local4++; }; _local8 = new Dictionary(true); while (activeCellRenderers.length > 0) { _local6 = (activeCellRenderers.pop() as ICellRenderer); _local5 = _local6.data; if ((((_local7[_local5] == null)) || ((invalidItems[_local5] == true)))){ availableCellRenderers.push(_local6); } else { _local8[_local5] = _local6; invalidItems[_local5] = true; }; list.removeChild((_local6 as DisplayObject)); }; invalidItems = new Dictionary(true); _local4 = _local2; while (_local4 < _local3) { _local9 = false; _local5 = _dataProvider.getItemAt(_local4); if (_local8[_local5] != null){ _local9 = true; _local6 = _local8[_local5]; delete _local8[_local5]; } else { if (availableCellRenderers.length > 0){ _local6 = (availableCellRenderers.pop() as ICellRenderer); } else { _local6 = (getDisplayObjectInstance(getStyleValue("cellRenderer")) as ICellRenderer); _local12 = (_local6 as Sprite); if (_local12 != null){ _local12.addEventListener(MouseEvent.CLICK, handleCellRendererClick, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OVER, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OUT, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(Event.CHANGE, handleCellRendererChange, false, 0, true); _local12.doubleClickEnabled = true; _local12.addEventListener(MouseEvent.DOUBLE_CLICK, handleCellRendererDoubleClick, false, 0, true); if (_local12["setStyle"] != null){ for (_local13 in rendererStyles) { var _local16 = _local12; _local16["setStyle"](_local13, rendererStyles[_local13]); }; }; }; }; }; list.addChild((_local6 as Sprite)); activeCellRenderers.push(_local6); _local6.y = (rowHeight * (_local4 - _local2)); _local6.setSize((availableWidth + _maxHorizontalScrollPosition), rowHeight); _local10 = itemToLabel(_local5); _local11 = null; if (_iconFunction != null){ _local11 = _iconFunction(_local5); } else { if (_iconField != null){ _local11 = _local5[_iconField]; }; }; if (!_local9){ _local6.data = _local5; }; _local6.listData = new ListData(_local10, _local11, this, _local4, _local4, 0); _local6.selected = !((_selectedIndices.indexOf(_local4) == -1)); if ((_local6 is UIComponent)){ (_local6 as UIComponent).drawNow(); }; _local4++; }; } public function get iconFunction():Function{ return (_iconFunction); } public function set iconField(_arg1:String):void{ if (_arg1 == _iconField){ return; }; _iconField = _arg1; invalidate(InvalidationType.DATA); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.SPACE: if (caretIndex == -1){ caretIndex = 0; }; doKeySelection(caretIndex, _arg1.shiftKey, _arg1.ctrlKey); scrollToSelected(); break; default: _local2 = getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), selectedIndex); if (_local2 > -1){ selectedIndex = _local2; scrollToSelected(); }; break; }; _arg1.stopPropagation(); } override public function itemToLabel(_arg1:Object):String{ if (_labelFunction != null){ return (String(_labelFunction(_arg1))); }; return (((_arg1[_labelField])!=null) ? String(_arg1[_labelField]) : ""); } public function get labelField():String{ return (_labelField); } override protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:int; _local4 = Math.max(Math.floor((calculateAvailableHeight() / rowHeight)), 1); _local5 = -1; _local6 = 0; switch (_arg1){ case Keyboard.UP: if (caretIndex > 0){ _local5 = (caretIndex - 1); }; break; case Keyboard.DOWN: if (caretIndex < (length - 1)){ _local5 = (caretIndex + 1); }; break; case Keyboard.PAGE_UP: if (caretIndex > 0){ _local5 = Math.max((caretIndex - _local4), 0); }; break; case Keyboard.PAGE_DOWN: if (caretIndex < (length - 1)){ _local5 = Math.min((caretIndex + _local4), (length - 1)); }; break; case Keyboard.HOME: if (caretIndex > 0){ _local5 = 0; }; break; case Keyboard.END: if (caretIndex < (length - 1)){ _local5 = (length - 1); }; break; }; if (_local5 >= 0){ doKeySelection(_local5, _arg2, _arg3); scrollToSelected(); }; } public function set labelField(_arg1:String):void{ if (_arg1 == _labelField){ return; }; _labelField = _arg1; invalidate(InvalidationType.DATA); } public function set rowCount(_arg1:uint):void{ var _local2:Number; var _local3:Number; _local2 = Number(getStyleValue("contentPadding")); _local3 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0; height = (((rowHeight * _arg1) + (2 * _local2)) + _local3); } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ list.x = -(_arg1); super.setHorizontalScrollPosition(_arg1, true); } public function set iconFunction(_arg1:Function):void{ if (_iconFunction == _arg1){ return; }; _iconFunction = _arg1; invalidate(InvalidationType.DATA); } public function get labelFunction():Function{ return (_labelFunction); } override protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ invalidate(InvalidationType.SCROLL); super.setVerticalScrollPosition(_arg1, true); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return (((height - (_local1 * 2)) - ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0)); } override protected function draw():void{ var _local1:Boolean; _local1 = !((contentHeight == (rowHeight * length))); contentHeight = (rowHeight * length); if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; if (_cellRenderer != getStyleValue("cellRenderer")){ _invalidateList(); _cellRenderer = getStyleValue("cellRenderer"); }; }; if (((isInvalid(InvalidationType.SIZE, InvalidationType.STATE)) || (_local1))){ drawLayout(); }; if (isInvalid(InvalidationType.RENDERER_STYLES)){ updateRendererStyles(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.SCROLL, InvalidationType.SELECTED)){ drawList(); }; updateChildren(); validate(); } override protected function configUI():void{ useFixedHorizontalScrolling = true; _horizontalScrollPolicy = ScrollPolicy.AUTO; _verticalScrollPolicy = ScrollPolicy.AUTO; super.configUI(); } override public function get rowCount():uint{ return (Math.ceil((calculateAvailableHeight() / rowHeight))); } override protected function initializeAccessibility():void{ if (List.createAccessibilityImplementation != null){ List.createAccessibilityImplementation(this); }; } override public function scrollToIndex(_arg1:int):void{ var _local2:uint; var _local3:uint; drawNow(); _local2 = (Math.floor(((_verticalScrollPosition + availableHeight) / rowHeight)) - 1); _local3 = Math.ceil((_verticalScrollPosition / rowHeight)); if (_arg1 < _local3){ verticalScrollPosition = (_arg1 * rowHeight); } else { if (_arg1 > _local2){ verticalScrollPosition = (((_arg1 + 1) * rowHeight) - availableHeight); }; }; } public function get rowHeight():Number{ return (_rowHeight); } public function set labelFunction(_arg1:Function):void{ if (_labelFunction == _arg1){ return; }; _labelFunction = _arg1; invalidate(InvalidationType.DATA); } public function set rowHeight(_arg1:Number):void{ _rowHeight = _arg1; invalidate(InvalidationType.SIZE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, SelectableList.getStyleDefinition())); } } }//package fl.controls
Section 172
//NumericStepper (fl.controls.NumericStepper) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.ui.*; public class NumericStepper extends UIComponent implements IFocusManagerComponent { protected var upArrow:BaseButton; protected var _stepSize:Number;// = 1 protected var downArrow:BaseButton; protected var _value:Number;// = 1 protected var _minimum:Number;// = 0 protected var _maximum:Number;// = 10 protected var _precision:Number; protected var inputField:TextInput; protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const TEXT_INPUT_STYLES:Object = {upSkin:"upSkin", disabledSkin:"disabledSkin", textPadding:"textPadding", textFormat:"textFormat", disabledTextFormat:"disabledTextFormat", embedFonts:"embedFonts"}; protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {downArrowDisabledSkin:"NumericStepperDownArrow_disabledSkin", downArrowDownSkin:"NumericStepperDownArrow_downSkin", downArrowOverSkin:"NumericStepperDownArrow_overSkin", downArrowUpSkin:"NumericStepperDownArrow_upSkin", upArrowDisabledSkin:"NumericStepperUpArrow_disabledSkin", upArrowDownSkin:"NumericStepperUpArrow_downSkin", upArrowOverSkin:"NumericStepperUpArrow_overSkin", upArrowUpSkin:"NumericStepperUpArrow_upSkin", upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRect:null, focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35, embedFonts:false}; public function NumericStepper(){ _maximum = 10; _minimum = 0; _value = 1; _stepSize = 1; super(); setStyles(); stepSize = _stepSize; } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); }; } public function get minimum():Number{ return (_minimum); } public function set imeMode(_arg1:String):void{ inputField.imeMode = _arg1; } public function set minimum(_arg1:Number):void{ _minimum = _arg1; if (_value < _minimum){ setValue(_minimum, false); }; } public function get maximum():Number{ return (_maximum); } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == inputField)) || (super.isOurFocus(_arg1)))); } public function get nextValue():Number{ var _local1:Number; _local1 = (_value + _stepSize); return ((inRange(_local1)) ? _local1 : _value); } public function set maximum(_arg1:Number):void{ _maximum = _arg1; if (_value > _maximum){ setValue(_maximum, false); }; } protected function setValue(_arg1:Number, _arg2:Boolean=true):void{ var _local3:Number; if (_arg1 == _value){ return; }; _local3 = _value; _value = getValidValue(_arg1); inputField.text = _value.toString(); if (_arg2){ dispatchEvent(new Event(Event.CHANGE, true)); }; } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:Number; if (!enabled){ return; }; _arg1.stopImmediatePropagation(); _local2 = Number(inputField.text); switch (_arg1.keyCode){ case Keyboard.END: setValue(maximum); break; case Keyboard.HOME: setValue(minimum); break; case Keyboard.UP: setValue(nextValue); break; case Keyboard.DOWN: setValue(previousValue); break; case Keyboard.ENTER: setValue(_local2); break; }; } override public function set enabled(_arg1:Boolean):void{ if (_arg1 == enabled){ return; }; super.enabled = _arg1; upArrow.enabled = (downArrow.enabled = (inputField.enabled = _arg1)); } protected function onTextChange(_arg1:Event):void{ _arg1.stopImmediatePropagation(); } public function get previousValue():Number{ var _local1:Number; _local1 = (_value - _stepSize); return ((inRange(_local1)) ? _local1 : _value); } protected function getValidValue(_arg1:Number):Number{ var _local2:Number; if (isNaN(_arg1)){ return (_value); }; _local2 = Number((_stepSize * Math.round((_arg1 / _stepSize))).toFixed(_precision)); if (_local2 > maximum){ return (maximum); }; if (_local2 < minimum){ return (minimum); }; return (_local2); } public function set value(_arg1:Number):void{ setValue(_arg1, false); } public function get stepSize():Number{ return (_stepSize); } protected function passEvent(_arg1:Event):void{ dispatchEvent(_arg1); } public function get imeMode():String{ return (inputField.imeMode); } protected function stepperPressHandler(_arg1:ComponentEvent):void{ setValue(Number(inputField.text), false); switch (_arg1.currentTarget){ case upArrow: setValue(nextValue); break; case downArrow: setValue(previousValue); }; inputField.setFocus(); inputField.textField.setSelection(0, 0); } override protected function focusOutHandler(_arg1:FocusEvent):void{ if (_arg1.eventPhase == 3){ setValue(Number(inputField.text)); }; super.focusOutHandler(_arg1); } protected function inRange(_arg1:Number):Boolean{ return ((((_arg1 >= _minimum)) && ((_arg1 <= _maximum)))); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ setStyles(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; validate(); } override protected function configUI():void{ super.configUI(); upArrow = new BaseButton(); copyStylesToChild(upArrow, UP_ARROW_STYLES); upArrow.autoRepeat = true; upArrow.setSize(21, 12); upArrow.focusEnabled = false; addChild(upArrow); downArrow = new BaseButton(); copyStylesToChild(downArrow, DOWN_ARROW_STYLES); downArrow.autoRepeat = true; downArrow.setSize(21, 12); downArrow.focusEnabled = false; addChild(downArrow); inputField = new TextInput(); copyStylesToChild(inputField, TEXT_INPUT_STYLES); inputField.restrict = "0-9\\-\\.\\,"; inputField.text = _value.toString(); inputField.setSize(21, 24); inputField.focusTarget = (this as IFocusManagerComponent); inputField.focusEnabled = false; inputField.addEventListener(FocusEvent.FOCUS_IN, passEvent); inputField.addEventListener(FocusEvent.FOCUS_OUT, passEvent); addChild(inputField); inputField.addEventListener(Event.CHANGE, onTextChange, false, 0, true); upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, stepperPressHandler, false, 0, true); downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, stepperPressHandler, false, 0, true); } public function get value():Number{ return (_value); } protected function inStep(_arg1:Number):Boolean{ return ((((_arg1 - _minimum) % _stepSize) == 0)); } protected function drawLayout():void{ var _local1:Number; var _local2:Number; _local1 = (width - upArrow.width); _local2 = (height / 2); inputField.setSize(_local1, height); upArrow.height = _local2; downArrow.height = Math.floor(_local2); downArrow.move(_local1, _local2); upArrow.move(_local1, 0); downArrow.drawNow(); upArrow.drawNow(); inputField.drawNow(); } override public function setFocus():void{ if (stage){ stage.focus = inputField.textField; }; } protected function getPrecision():Number{ var _local1:String; _local1 = _stepSize.toString(); if (_local1.indexOf(".") == -1){ return (0); }; return (_local1.split(".").pop().length); } public function get textField():TextInput{ return (inputField); } public function set stepSize(_arg1:Number):void{ _stepSize = _arg1; _precision = getPrecision(); setValue(_value); } protected function setStyles():void{ copyStylesToChild(downArrow, DOWN_ARROW_STYLES); copyStylesToChild(upArrow, UP_ARROW_STYLES); copyStylesToChild(inputField, TEXT_INPUT_STYLES); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 173
//ScrollBar (fl.controls.ScrollBar) package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; public class ScrollBar extends UIComponent { private var _direction:String;// = "vertical" protected var inDrag:Boolean;// = false protected var upArrow:BaseButton; private var _pageScrollSize:Number;// = 0 protected var downArrow:BaseButton; private var _pageSize:Number;// = 10 private var thumbScrollOffset:Number; private var _maxScrollPosition:Number;// = 0 private var _scrollPosition:Number;// = 0 protected var track:BaseButton; private var _minScrollPosition:Number;// = 0 private var _lineScrollSize:Number;// = 1 protected var thumb:LabelButton; protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0}; public static const WIDTH:Number = 15; protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35}; public function ScrollBar(){ _pageSize = 10; _pageScrollSize = 0; _lineScrollSize = 1; _minScrollPosition = 0; _maxScrollPosition = 0; _scrollPosition = 0; _direction = ScrollBarDirection.VERTICAL; inDrag = false; super(); setStyles(); focusEnabled = false; } public function get minScrollPosition():Number{ return (_minScrollPosition); } public function set minScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _arg1, _maxScrollPosition); } public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{ var _local3:Number; _local3 = scrollPosition; _scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1)); if (_local3 == _scrollPosition){ return; }; if (_arg2){ dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition)); }; updateThumb(); } public function set scrollPosition(_arg1:Number):void{ setScrollPosition(_arg1, true); } public function get pageScrollSize():Number{ return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize); } public function set pageSize(_arg1:Number):void{ if (_arg1 > 0){ _pageSize = _arg1; }; } public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ this.pageSize = _arg1; _minScrollPosition = _arg2; _maxScrollPosition = _arg3; if (_arg4 >= 0){ _pageScrollSize = _arg4; }; enabled = (_maxScrollPosition > _minScrollPosition); setScrollPosition(_scrollPosition, false); updateThumb(); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition)))))); updateThumb(); } protected function updateThumb():void{ var _local1:Number; _local1 = ((_maxScrollPosition - _minScrollPosition) + _pageSize); if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){ thumb.height = 12; thumb.visible = false; } else { thumb.height = Math.max(13, ((_pageSize / _local1) * track.height)); thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition)))); thumb.visible = enabled; }; } protected function thumbPressHandler(_arg1:MouseEvent):void{ inDrag = true; thumbScrollOffset = (mouseY - thumb.y); thumb.mouseStateLocked = true; mouseChildren = false; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true); } protected function thumbReleaseHandler(_arg1:MouseEvent):void{ inDrag = false; mouseChildren = true; thumb.mouseStateLocked = false; stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag); stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler); } public function set pageScrollSize(_arg1:Number):void{ if (_arg1 >= 0){ _pageScrollSize = _arg1; }; } protected function handleThumbDrag(_arg1:MouseEvent):void{ var _local2:Number; _local2 = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset))); setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition)); } public function set direction(_arg1:String):void{ var _local2:Boolean; if (_direction == _arg1){ return; }; _direction = _arg1; if (isLivePreview){ return; }; setScaleY(1); _local2 = (_direction == ScrollBarDirection.HORIZONTAL); if (((_local2) && (componentInspectorSetting))){ if (rotation == 90){ return; }; setScaleX(-1); rotation = -90; }; if (!componentInspectorSetting){ if (((_local2) && ((rotation == 0)))){ rotation = -90; setScaleX(-1); } else { if (((!(_local2)) && ((rotation == -90)))){ rotation = 0; setScaleX(1); }; }; }; invalidate(InvalidationType.SIZE); } public function set lineScrollSize(_arg1:Number):void{ if (_arg1 > 0){ _lineScrollSize = _arg1; }; } override public function get height():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height); } protected function scrollPressHandler(_arg1:ComponentEvent):void{ var _local2:Number; var _local3:Number; _arg1.stopImmediatePropagation(); if (_arg1.currentTarget == upArrow){ setScrollPosition((_scrollPosition - _lineScrollSize)); } else { if (_arg1.currentTarget == downArrow){ setScrollPosition((_scrollPosition + _lineScrollSize)); } else { _local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition); _local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize; if (_scrollPosition < _local2){ setScrollPosition(Math.min(_local2, (_scrollPosition + _local3))); } else { if (_scrollPosition > _local2){ setScrollPosition(Math.max(_local2, (_scrollPosition - _local3))); }; }; }; }; } public function get pageSize():Number{ return (_pageSize); } public function set maxScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _minScrollPosition, _arg1); } public function get scrollPosition():Number{ return (_scrollPosition); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ var _local1:Number; if (isInvalid(InvalidationType.SIZE)){ _local1 = super.height; downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height))); track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height)))); updateThumb(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ setStyles(); }; downArrow.drawNow(); upArrow.drawNow(); track.drawNow(); thumb.drawNow(); validate(); } override protected function configUI():void{ super.configUI(); track = new BaseButton(); track.move(0, 14); track.useHandCursor = false; track.autoRepeat = true; track.focusEnabled = false; addChild(track); thumb = new LabelButton(); thumb.label = ""; thumb.setSize(WIDTH, 15); thumb.move(0, 15); thumb.focusEnabled = false; addChild(thumb); downArrow = new BaseButton(); downArrow.setSize(WIDTH, 14); downArrow.autoRepeat = true; downArrow.focusEnabled = false; addChild(downArrow); upArrow = new BaseButton(); upArrow.setSize(WIDTH, 14); upArrow.move(0, 0); upArrow.autoRepeat = true; upArrow.focusEnabled = false; addChild(upArrow); upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true); enabled = false; } public function get direction():String{ return (_direction); } public function get lineScrollSize():Number{ return (_lineScrollSize); } override public function setSize(_arg1:Number, _arg2:Number):void{ if (_direction == ScrollBarDirection.HORIZONTAL){ super.setSize(_arg2, _arg1); } else { super.setSize(_arg1, _arg2); }; } public function get maxScrollPosition():Number{ return (_maxScrollPosition); } override public function get width():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width); } protected function setStyles():void{ copyStylesToChild(downArrow, DOWN_ARROW_STYLES); copyStylesToChild(thumb, THUMB_STYLES); copyStylesToChild(track, TRACK_STYLES); copyStylesToChild(upArrow, UP_ARROW_STYLES); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 174
//ScrollBarDirection (fl.controls.ScrollBarDirection) package fl.controls { public class ScrollBarDirection { public static const HORIZONTAL:String = "horizontal"; public static const VERTICAL:String = "vertical"; } }//package fl.controls
Section 175
//ScrollPolicy (fl.controls.ScrollPolicy) package fl.controls { public class ScrollPolicy { public static const OFF:String = "off"; public static const ON:String = "on"; public static const AUTO:String = "auto"; } }//package fl.controls
Section 176
//SelectableList (fl.controls.SelectableList) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.data.*; import fl.managers.*; import fl.events.*; import flash.utils.*; import fl.containers.*; import flash.ui.*; public class SelectableList extends BaseScrollPane implements IFocusManagerComponent { protected var invalidItems:Dictionary; protected var renderedItems:Dictionary; protected var listHolder:Sprite; protected var _allowMultipleSelection:Boolean;// = false protected var lastCaretIndex:int;// = -1 protected var _selectedIndices:Array; protected var availableCellRenderers:Array; protected var list:Sprite; protected var caretIndex:int;// = -1 protected var updatedRendererStyles:Object; protected var preChangeItems:Array; protected var activeCellRenderers:Array; protected var rendererStyles:Object; protected var _verticalScrollPosition:Number; protected var _dataProvider:DataProvider; protected var _horizontalScrollPosition:Number; private var collectionItemImport:SimpleCollectionItem; protected var _selectable:Boolean;// = true private static var defaultStyles:Object = {skin:"List_skin", cellRenderer:CellRenderer, contentPadding:null, disabledAlpha:null}; public static var createAccessibilityImplementation:Function; public function SelectableList(){ _allowMultipleSelection = false; _selectable = true; caretIndex = -1; lastCaretIndex = -1; super(); activeCellRenderers = []; availableCellRenderers = []; invalidItems = new Dictionary(true); renderedItems = new Dictionary(true); _selectedIndices = []; if (dataProvider == null){ dataProvider = new DataProvider(); }; verticalScrollPolicy = ScrollPolicy.AUTO; rendererStyles = {}; updatedRendererStyles = {}; } protected function drawList():void{ } public function set allowMultipleSelection(_arg1:Boolean):void{ if (_arg1 == _allowMultipleSelection){ return; }; _allowMultipleSelection = _arg1; if (((!(_arg1)) && ((_selectedIndices.length > 1)))){ _selectedIndices = [_selectedIndices.pop()]; invalidate(InvalidationType.DATA); }; } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (_dataProvider.sortOn(_arg1, _arg2)); } public function removeItemAt(_arg1:uint):Object{ return (_dataProvider.removeItemAt(_arg1)); } public function get selectedItem():Object{ return (((_selectedIndices.length)==0) ? null : _dataProvider.getItemAt(selectedIndex)); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; }; } public function get selectable():Boolean{ return (_selectable); } public function itemToCellRenderer(_arg1:Object):ICellRenderer{ var _local2:*; var _local3:ICellRenderer; if (_arg1 != null){ for (_local2 in activeCellRenderers) { _local3 = (activeCellRenderers[_local2] as ICellRenderer); if (_local3.data == _arg1){ return (_local3); }; }; }; return (null); } public function getNextIndexAtLetter(_arg1:String, _arg2:int=-1):int{ var _local3:int; var _local4:Number; var _local5:Number; var _local6:Object; var _local7:String; if (length == 0){ return (-1); }; _arg1 = _arg1.toUpperCase(); _local3 = (length - 1); _local4 = 0; while (_local4 < _local3) { _local5 = ((_arg2 + 1) + _local4); if (_local5 > (length - 1)){ _local5 = (_local5 - length); }; _local6 = getItemAt(_local5); if (_local6 == null){ break; }; _local7 = itemToLabel(_local6); if (_local7 == null){ } else { if (_local7.charAt(0).toUpperCase() == _arg1){ return (_local5); }; }; _local4++; }; return (-1); } public function invalidateList():void{ _invalidateList(); invalidate(InvalidationType.DATA); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; list.mouseChildren = _enabled; } public function get selectedIndices():Array{ return (_selectedIndices.concat()); } public function set selectable(_arg1:Boolean):void{ if (_arg1 == _selectable){ return; }; if (!_arg1){ selectedIndices = []; }; _selectable = _arg1; } public function itemToLabel(_arg1:Object):String{ return (_arg1["label"]); } public function addItemAt(_arg1:Object, _arg2:uint):void{ _dataProvider.addItemAt(_arg1, _arg2); invalidateList(); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (_dataProvider.replaceItemAt(_arg1, _arg2)); } protected function handleDataChange(_arg1:DataChangeEvent):void{ var _local2:int; var _local3:int; var _local4:String; var _local5:uint; _local2 = _arg1.startIndex; _local3 = _arg1.endIndex; _local4 = _arg1.changeType; if (_local4 == DataChangeType.INVALIDATE_ALL){ clearSelection(); invalidateList(); } else { if (_local4 == DataChangeType.INVALIDATE){ _local5 = 0; while (_local5 < _arg1.items.length) { invalidateItem(_arg1.items[_local5]); _local5++; }; } else { if (_local4 == DataChangeType.ADD){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ _selectedIndices[_local5] = (_selectedIndices[_local5] + (_local2 - _local3)); }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ if (_selectedIndices[_local5] <= _local3){ delete _selectedIndices[_local5]; } else { _selectedIndices[_local5] = (_selectedIndices[_local5] - ((_local2 - _local3) + 1)); }; }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE_ALL){ clearSelection(); } else { if (_local4 == DataChangeType.REPLACE){ } else { selectedItems = preChangeItems; preChangeItems = null; }; }; }; }; }; }; invalidate(InvalidationType.DATA); } protected function _invalidateList():void{ availableCellRenderers = []; while (activeCellRenderers.length > 0) { list.removeChild((activeCellRenderers.pop() as DisplayObject)); }; } protected function updateRendererStyles():void{ var _local1:Array; var _local2:uint; var _local3:uint; var _local4:String; _local1 = availableCellRenderers.concat(activeCellRenderers); _local2 = _local1.length; _local3 = 0; while (_local3 < _local2) { if (_local1[_local3].setStyle == null){ } else { for (_local4 in updatedRendererStyles) { _local1[_local3].setStyle(_local4, updatedRendererStyles[_local4]); }; _local1[_local3].drawNow(); }; _local3++; }; updatedRendererStyles = {}; } public function set selectedItem(_arg1:Object):void{ var _local2:int; _local2 = _dataProvider.getItemIndex(_arg1); selectedIndex = _local2; } public function sortItems(... _args){ return (_dataProvider.sort.apply(_dataProvider, _args)); } public function removeAll():void{ _dataProvider.removeAll(); } protected function handleCellRendererChange(_arg1:Event):void{ var _local2:ICellRenderer; var _local3:uint; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; _dataProvider.invalidateItemAt(_local3); } protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _horizontalScrollPosition){ return; }; _local3 = (_arg1 - _horizontalScrollPosition); _horizontalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.HORIZONTAL, _local3, _arg1)); }; } public function scrollToSelected():void{ scrollToIndex(selectedIndex); } public function invalidateItem(_arg1:Object):void{ if (renderedItems[_arg1] == null){ return; }; invalidItems[_arg1] = true; invalidate(InvalidationType.DATA); } protected function handleCellRendererClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; var _local4:int; var _local5:int; var _local6:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; if (((!(dispatchEvent(new ListEvent(ListEvent.ITEM_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)))) || (!(_selectable)))){ return; }; _local4 = selectedIndices.indexOf(_local3); if (!_allowMultipleSelection){ if (_local4 != -1){ return; }; _local2.selected = true; _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); } else { if (_arg1.shiftKey){ _local6 = ((_selectedIndices.length)>0) ? _selectedIndices[0] : _local3; _selectedIndices = []; if (_local6 > _local3){ _local5 = _local6; while (_local5 >= _local3) { _selectedIndices.push(_local5); _local5--; }; } else { _local5 = _local6; while (_local5 <= _local3) { _selectedIndices.push(_local5); _local5++; }; }; caretIndex = _local3; } else { if (_arg1.ctrlKey){ if (_local4 != -1){ _local2.selected = false; _selectedIndices.splice(_local4, 1); } else { _local2.selected = true; _selectedIndices.push(_local3); }; caretIndex = _local3; } else { _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); }; }; }; dispatchEvent(new Event(Event.CHANGE)); invalidate(InvalidationType.DATA); } public function get length():uint{ return (_dataProvider.length); } public function get allowMultipleSelection():Boolean{ return (_allowMultipleSelection); } protected function onPreChange(_arg1:DataChangeEvent):void{ switch (_arg1.changeType){ case DataChangeType.REMOVE: case DataChangeType.ADD: case DataChangeType.INVALIDATE: case DataChangeType.REMOVE_ALL: case DataChangeType.REPLACE: case DataChangeType.INVALIDATE_ALL: break; default: preChangeItems = selectedItems; break; }; } public function getRendererStyle(_arg1:String, _arg2:int=-1):Object{ return (rendererStyles[_arg1]); } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _verticalScrollPosition){ return; }; _local3 = (_arg1 - _verticalScrollPosition); _verticalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _local3, _arg1)); }; } protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } public function set selectedIndices(_arg1:Array):void{ if (!_selectable){ return; }; _selectedIndices = ((_arg1)==null) ? [] : _arg1.concat(); invalidate(InvalidationType.SELECTED); } public function get selectedIndex():int{ return (((_selectedIndices.length)==0) ? -1 : _selectedIndices[(_selectedIndices.length - 1)]); } override protected function draw():void{ super.draw(); } override protected function configUI():void{ super.configUI(); listHolder = new Sprite(); addChild(listHolder); listHolder.scrollRect = contentScrollRect; list = new Sprite(); listHolder.addChild(list); } public function addItem(_arg1:Object):void{ _dataProvider.addItem(_arg1); invalidateList(); } protected function handleCellRendererMouseEvent(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:String; _local2 = (_arg1.target as ICellRenderer); _local3 = ((_arg1.type)==MouseEvent.ROLL_OVER) ? ListEvent.ITEM_ROLL_OVER : ListEvent.ITEM_ROLL_OUT; dispatchEvent(new ListEvent(_local3, false, false, _local2.listData.column, _local2.listData.row, _local2.listData.index, _local2.data)); } public function clearRendererStyle(_arg1:String, _arg2:int=-1):void{ delete rendererStyles[_arg1]; updatedRendererStyles[_arg1] = null; invalidate(InvalidationType.RENDERER_STYLES); } protected function handleCellRendererDoubleClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; dispatchEvent(new ListEvent(ListEvent.ITEM_DOUBLE_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)); } public function get rowCount():uint{ return (0); } public function isItemSelected(_arg1:Object):Boolean{ return ((selectedItems.indexOf(_arg1) > -1)); } public function set dataProvider(_arg1:DataProvider):void{ if (_dataProvider != null){ _dataProvider.removeEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange); _dataProvider.removeEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange); }; _dataProvider = _arg1; _dataProvider.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); _dataProvider.addEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange, false, 0, true); clearSelection(); invalidateList(); } override protected function drawLayout():void{ super.drawLayout(); contentScrollRect = listHolder.scrollRect; contentScrollRect.width = availableWidth; contentScrollRect.height = availableHeight; listHolder.scrollRect = contentScrollRect; } public function getItemAt(_arg1:uint):Object{ return (_dataProvider.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (SelectableList.createAccessibilityImplementation != null){ SelectableList.createAccessibilityImplementation(this); }; } public function scrollToIndex(_arg1:int):void{ } public function removeItem(_arg1:Object):Object{ return (_dataProvider.removeItem(_arg1)); } public function get dataProvider():DataProvider{ return (_dataProvider); } public function set maxHorizontalScrollPosition(_arg1:Number):void{ _maxHorizontalScrollPosition = _arg1; invalidate(InvalidationType.SIZE); } public function setRendererStyle(_arg1:String, _arg2:Object, _arg3:uint=0):void{ if (rendererStyles[_arg1] == _arg2){ return; }; updatedRendererStyles[_arg1] = _arg2; rendererStyles[_arg1] = _arg2; invalidate(InvalidationType.RENDERER_STYLES); } public function invalidateItemAt(_arg1:uint):void{ var _local2:Object; _local2 = _dataProvider.getItemAt(_arg1); if (_local2 != null){ invalidateItem(_local2); }; } public function set selectedItems(_arg1:Array):void{ var _local2:Array; var _local3:uint; var _local4:int; if (_arg1 == null){ selectedIndices = null; return; }; _local2 = []; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _dataProvider.getItemIndex(_arg1[_local3]); if (_local4 != -1){ _local2.push(_local4); }; _local3++; }; selectedIndices = _local2; } public function clearSelection():void{ selectedIndex = -1; } override public function get maxHorizontalScrollPosition():Number{ return (_maxHorizontalScrollPosition); } public function get selectedItems():Array{ var _local1:Array; var _local2:uint; _local1 = []; _local2 = 0; while (_local2 < _selectedIndices.length) { _local1.push(_dataProvider.getItemAt(_selectedIndices[_local2])); _local2++; }; return (_local1); } public function set selectedIndex(_arg1:int):void{ selectedIndices = ((_arg1)==-1) ? null : [_arg1]; } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseScrollPane.getStyleDefinition())); } } }//package fl.controls
Section 177
//Slider (fl.controls.Slider) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.ui.*; public class Slider extends UIComponent implements IFocusManagerComponent { protected var _direction:String; protected var _liveDragging:Boolean;// = false protected var _value:Number;// = 0 protected var _snapInterval:Number;// = 0 protected var _minimum:Number;// = 0 protected var _maximum:Number;// = 10 protected var track:BaseButton; protected var _tickInterval:Number;// = 0 protected var tickContainer:Sprite; protected var thumb:BaseButton; protected static const TICK_STYLES:Object = {upSkin:"tickSkin"}; protected static const TRACK_STYLES:Object = {upSkin:"sliderTrackSkin", overSkin:"sliderTrackSkin", downSkin:"sliderTrackSkin", disabledSkin:"sliderTrackDisabledSkin"}; protected static const THUMB_STYLES:Object = {upSkin:"thumbUpSkin", overSkin:"thumbOverSkin", downSkin:"thumbDownSkin", disabledSkin:"thumbDisabledSkin"}; protected static var defaultStyles:Object = {thumbUpSkin:"SliderThumb_upSkin", thumbOverSkin:"SliderThumb_overSkin", thumbDownSkin:"SliderThumb_downSkin", thumbDisabledSkin:"SliderThumb_disabledSkin", sliderTrackSkin:"SliderTrack_skin", sliderTrackDisabledSkin:"SliderTrack_disabledSkin", tickSkin:"SliderTick_skin", focusRectSkin:null, focusRectPadding:null}; public function Slider(){ _direction = SliderDirection.HORIZONTAL; _minimum = 0; _maximum = 10; _value = 0; _tickInterval = 0; _snapInterval = 0; _liveDragging = false; super(); setStyles(); } public function get minimum():Number{ return (_minimum); } public function set minimum(_arg1:Number):void{ _minimum = _arg1; this.value = Math.max(_arg1, this.value); invalidate(InvalidationType.DATA); } public function get maximum():Number{ return (_maximum); } protected function positionThumb():void{ thumb.x = ((((_direction)==SliderDirection.VERTICAL) ? ((maximum - minimum) - value) : (value - minimum) / (maximum - minimum)) * _width); } protected function clearTicks():void{ if (((!(tickContainer)) || (!(tickContainer.parent)))){ return; }; removeChild(tickContainer); } protected function onTrackClick(_arg1:MouseEvent):void{ calculateValue(track.mouseX, InteractionInputType.MOUSE, SliderEventClickTarget.TRACK); if (!liveDragging){ dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, SliderEventClickTarget.TRACK, InteractionInputType.MOUSE)); }; } public function set maximum(_arg1:Number):void{ _maximum = _arg1; this.value = Math.min(_arg1, this.value); invalidate(InvalidationType.DATA); } public function get liveDragging():Boolean{ return (_liveDragging); } protected function doDrag(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Number; _local2 = (_width / snapInterval); _local3 = track.mouseX; calculateValue(_local3, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB); dispatchEvent(new SliderEvent(SliderEvent.THUMB_DRAG, value, SliderEventClickTarget.THUMB, InteractionInputType.MOUSE)); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:uint; var _local3:Number; var _local4:Boolean; if (!enabled){ return; }; _local2 = ((snapInterval)>0) ? snapInterval : 1; _local4 = (direction == SliderDirection.HORIZONTAL); if ((((((_arg1.keyCode == Keyboard.DOWN)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.LEFT)) && (_local4))))){ _local3 = (value - _local2); } else { if ((((((_arg1.keyCode == Keyboard.UP)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.RIGHT)) && (_local4))))){ _local3 = (value + _local2); } else { if ((((((_arg1.keyCode == Keyboard.PAGE_DOWN)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.HOME)) && (_local4))))){ _local3 = minimum; } else { if ((((((_arg1.keyCode == Keyboard.PAGE_UP)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.END)) && (_local4))))){ _local3 = maximum; }; }; }; }; if (!isNaN(_local3)){ _arg1.stopPropagation(); doSetValue(_local3, InteractionInputType.KEYBOARD, null, _arg1.keyCode); }; } override public function set enabled(_arg1:Boolean):void{ if (enabled == _arg1){ return; }; super.enabled = _arg1; track.enabled = (thumb.enabled = _arg1); } protected function thumbPressHandler(_arg1:MouseEvent):void{ stage.addEventListener(MouseEvent.MOUSE_MOVE, doDrag, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true); dispatchEvent(new SliderEvent(SliderEvent.THUMB_PRESS, value, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB)); } public function get snapInterval():Number{ return (_snapInterval); } protected function thumbReleaseHandler(_arg1:MouseEvent):void{ stage.removeEventListener(MouseEvent.MOUSE_MOVE, doDrag); stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler); dispatchEvent(new SliderEvent(SliderEvent.THUMB_RELEASE, value, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB)); dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, SliderEventClickTarget.THUMB, InteractionInputType.MOUSE)); } public function set liveDragging(_arg1:Boolean):void{ _liveDragging = _arg1; } public function set value(_arg1:Number):void{ doSetValue(_arg1); } public function set direction(_arg1:String):void{ var _local2:Boolean; _direction = _arg1; _local2 = (_direction == SliderDirection.VERTICAL); if (isLivePreview){ if (_local2){ setScaleY(-1); y = track.height; } else { setScaleY(1); y = 0; }; positionThumb(); return; }; if (((_local2) && (componentInspectorSetting))){ if ((rotation % 90) == 0){ setScaleY(-1); }; }; if (!componentInspectorSetting){ rotation = (_local2) ? 90 : 0; }; } public function set tickInterval(_arg1:Number):void{ _tickInterval = _arg1; invalidate(InvalidationType.SIZE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES)){ setStyles(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ track.setSize(_width, track.height); track.drawNow(); thumb.drawNow(); }; if (tickInterval > 0){ drawTicks(); } else { clearTicks(); }; positionThumb(); super.draw(); } override protected function configUI():void{ super.configUI(); thumb = new BaseButton(); thumb.setSize(13, 13); thumb.autoRepeat = false; addChild(thumb); thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true); track = new BaseButton(); track.move(0, 0); track.setSize(80, 4); track.autoRepeat = false; track.useHandCursor = false; track.addEventListener(MouseEvent.CLICK, onTrackClick, false, 0, true); addChildAt(track, 0); } public function set snapInterval(_arg1:Number):void{ _snapInterval = _arg1; } public function get value():Number{ return (_value); } public function get direction():String{ return (_direction); } public function get tickInterval():Number{ return (_tickInterval); } override public function setSize(_arg1:Number, _arg2:Number):void{ if ((((_direction == SliderDirection.VERTICAL)) && (!(isLivePreview)))){ super.setSize(_arg2, _arg1); } else { super.setSize(_arg1, _arg2); }; invalidate(InvalidationType.SIZE); } protected function drawTicks():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:uint; var _local5:DisplayObject; clearTicks(); tickContainer = new Sprite(); _local1 = ((maximum)<1) ? (tickInterval / 100) : tickInterval; _local2 = ((maximum - minimum) / _local1); _local3 = (_width / _local2); _local4 = 0; while (_local4 <= _local2) { _local5 = getDisplayObjectInstance(getStyleValue("tickSkin")); _local5.x = (_local3 * _local4); _local5.y = ((track.y - _local5.height) - 2); tickContainer.addChild(_local5); _local4++; }; addChild(tickContainer); } protected function calculateValue(_arg1:Number, _arg2:String, _arg3:String, _arg4:int=undefined):void{ var _local5:Number; _local5 = ((_arg1 / _width) * (maximum - minimum)); if (_direction == SliderDirection.VERTICAL){ _local5 = (maximum - _local5); } else { _local5 = (minimum + _local5); }; doSetValue(_local5, _arg2, _arg3, _arg4); } protected function getPrecision(_arg1:Number):Number{ var _local2:String; _local2 = _arg1.toString(); if (_local2.indexOf(".") == -1){ return (0); }; return (_local2.split(".").pop().length); } protected function doSetValue(_arg1:Number, _arg2:String=null, _arg3:String=null, _arg4:int=undefined):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local5 = _value; if (((!((_snapInterval == 0))) && (!((_snapInterval == 1))))){ _local6 = Math.pow(10, getPrecision(snapInterval)); _local7 = (_snapInterval * _local6); _local8 = Math.round((_arg1 * _local6)); _local9 = (Math.round((_local8 / _local7)) * _local7); _arg1 = (_local9 / _local6); _value = Math.max(minimum, Math.min(maximum, _arg1)); } else { _value = Math.max(minimum, Math.min(maximum, Math.round(_arg1))); }; if (((!((_local5 == _value))) && (((((liveDragging) && (!((_arg3 == null))))) || ((_arg2 == InteractionInputType.KEYBOARD)))))){ dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, _arg3, _arg2, _arg4)); }; positionThumb(); } protected function setStyles():void{ copyStylesToChild(thumb, THUMB_STYLES); copyStylesToChild(track, TRACK_STYLES); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 178
//SliderDirection (fl.controls.SliderDirection) package fl.controls { public class SliderDirection { public static var HORIZONTAL:String = "horizontal"; public static var VERTICAL:String = "vertical"; } }//package fl.controls
Section 179
//TextArea (fl.controls.TextArea) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; import flash.system.*; public class TextArea extends UIComponent implements IFocusManagerComponent { protected var _html:Boolean;// = false protected var _verticalScrollBar:UIScrollBar; protected var _savedHTML:String; protected var background:DisplayObject; protected var _horizontalScrollBar:UIScrollBar; protected var _horizontalScrollPolicy:String;// = "auto" protected var _editable:Boolean;// = true protected var textHasChanged:Boolean;// = false public var textField:TextField; protected var _wordWrap:Boolean;// = true protected var _verticalScrollPolicy:String;// = "auto" protected static const SCROLL_BAR_STYLES:Object = {downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {upSkin:"TextArea_upSkin", disabledSkin:"TextArea_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function TextArea(){ _editable = true; _wordWrap = true; _horizontalScrollPolicy = ScrollPolicy.AUTO; _verticalScrollPolicy = ScrollPolicy.AUTO; _html = false; textHasChanged = false; super(); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } protected function handleWheel(_arg1:MouseEvent):void{ if (((!(enabled)) || (!(_verticalScrollBar.visible)))){ return; }; _verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * _verticalScrollBar.lineScrollSize)); dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, (_arg1.delta * _verticalScrollBar.lineScrollSize), _verticalScrollBar.scrollPosition)); } public function get verticalScrollPosition():Number{ return (textField.scrollV); } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } public function set verticalScrollPosition(_arg1:Number):void{ drawNow(); textField.scrollV = _arg1; } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function set text(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ return; }; textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); textHasChanged = true; } protected function updateTextFieldType():void{ textField.type = (((enabled) && (_editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; textField.wordWrap = _wordWrap; textField.multiline = true; } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; setIMEMode(true); if (_arg1.target == this){ stage.focus = textField; }; _local2 = focusManager; if (_local2){ if (editable){ _local2.showFocusIndicator = true; }; _local2.defaultButtonEnabled = false; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get wordWrap():Boolean{ return (_wordWrap); } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } public function get horizontalScrollBar():UIScrollBar{ return (_horizontalScrollBar); } public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseChildren = enabled; invalidate(InvalidationType.STATE); } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function get horizontalScrollPosition():Number{ return (textField.scrollH); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; invalidate(InvalidationType.DATA); } public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } public function get maxVerticalScrollPosition():int{ return (textField.maxScrollV); } public function set horizontalScrollPosition(_arg1:Number):void{ drawNow(); textField.scrollH = _arg1; } public function get textHeight():Number{ drawNow(); return (textField.textHeight); } public function get textWidth():Number{ drawNow(); return (textField.textWidth); } public function get restrict():String{ return (textField.restrict); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; invalidate(InvalidationType.STATE); } protected function updateScrollBars(){ _horizontalScrollBar.update(); _verticalScrollBar.update(); _verticalScrollBar.enabled = enabled; _horizontalScrollBar.enabled = enabled; _horizontalScrollBar.drawNow(); _verticalScrollBar.drawNow(); } public function get maxChars():int{ return (textField.maxChars); } public function get length():Number{ return (textField.text.length); } public function set wordWrap(_arg1:Boolean):void{ _wordWrap = _arg1; invalidate(InvalidationType.STATE); } public function get verticalScrollPolicy():String{ return (_verticalScrollPolicy); } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } public function get imeMode():String{ return (IME.conversionMode); } protected function handleScroll(_arg1:ScrollEvent):void{ dispatchEvent(_arg1); } override protected function focusOutHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; _local2 = focusManager; if (_local2){ _local2.defaultButtonEnabled = true; }; setSelection(0, 0); super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } protected function delayedLayoutUpdate(_arg1:Event):void{ if (textHasChanged){ textHasChanged = false; drawLayout(); return; }; removeEventListener(Event.ENTER_FRAME, delayedLayoutUpdate); } public function set htmlText(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ return; }; if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); textHasChanged = true; } public function get text():String{ return (textField.text); } public function get verticalScrollBar():UIScrollBar{ return (_verticalScrollBar); } override public function get enabled():Boolean{ return (super.enabled); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function set horizontalScrollPolicy(_arg1:String):void{ _horizontalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } override protected function draw():void{ if (isInvalid(InvalidationType.STATE)){ updateTextFieldType(); }; if (isInvalid(InvalidationType.STYLES)){ setStyles(); setEmbedFont(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA)){ drawLayout(); }; super.draw(); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text)); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); _verticalScrollBar = new UIScrollBar(); _verticalScrollBar.name = "V"; _verticalScrollBar.visible = false; _verticalScrollBar.focusEnabled = false; copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); _verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); addChild(_verticalScrollBar); _horizontalScrollBar = new UIScrollBar(); _horizontalScrollBar.name = "H"; _horizontalScrollBar.visible = false; _horizontalScrollBar.focusEnabled = false; _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL; copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); addChild(_horizontalScrollBar); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true); textField.addEventListener(Event.CHANGE, handleChange, false, 0, true); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true); _horizontalScrollBar.scrollTarget = textField; _verticalScrollBar.scrollTarget = textField; addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true); } protected function setTextSize(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Number; _local4 = (_arg1 - (_arg3 * 2)); _local5 = (_arg2 - (_arg3 * 2)); if (_local4 != textField.width){ textField.width = _local4; }; if (_local5 != textField.height){ textField.height = _local5; }; } public function appendText(_arg1:String):void{ textField.appendText(_arg1); invalidate(InvalidationType.DATA); } protected function needVScroll():Boolean{ if (_verticalScrollPolicy == ScrollPolicy.OFF){ return (false); }; if (_verticalScrollPolicy == ScrollPolicy.ON){ return (true); }; return ((textField.maxScrollV > 1)); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } public function get htmlText():String{ return (textField.htmlText); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } protected function drawBackground():void{ var _local1:DisplayObject; var _local2:String; _local1 = background; _local2 = (enabled) ? "upSkin" : "disabledSkin"; background = getDisplayObjectInstance(getStyleValue(_local2)); if (background != null){ addChildAt(background, 0); }; if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){ removeChild(_local1); }; } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Boolean; var _local4:Number; var _local5:Boolean; _local1 = Number(getStyleValue("textPadding")); textField.x = (textField.y = _local1); background.width = width; background.height = height; _local2 = height; _local3 = needVScroll(); _local4 = (width - (_local3) ? _verticalScrollBar.width : 0); _local5 = needHScroll(); if (_local5){ _local2 = (_local2 - _horizontalScrollBar.height); }; setTextSize(_local4, _local2, _local1); if (((((_local5) && (!(_local3)))) && (needVScroll()))){ _local3 = true; _local4 = (_local4 - _verticalScrollBar.width); setTextSize(_local4, _local2, _local1); }; if (_local3){ _verticalScrollBar.visible = true; _verticalScrollBar.x = (width - _verticalScrollBar.width); _verticalScrollBar.height = _local2; _verticalScrollBar.visible = true; _verticalScrollBar.enabled = enabled; } else { _verticalScrollBar.visible = false; }; if (_local5){ _horizontalScrollBar.visible = true; _horizontalScrollBar.y = (height - _horizontalScrollBar.height); _horizontalScrollBar.width = _local4; _horizontalScrollBar.visible = true; _horizontalScrollBar.enabled = enabled; } else { _horizontalScrollBar.visible = false; }; updateScrollBars(); addEventListener(Event.ENTER_FRAME, delayedLayoutUpdate, false, 0, true); } protected function setStyles():void{ copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); } protected function needHScroll():Boolean{ if (_horizontalScrollPolicy == ScrollPolicy.OFF){ return (false); }; if (_horizontalScrollPolicy == ScrollPolicy.ON){ return (true); }; return ((textField.maxScrollH > 0)); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); if (_html){ textField.htmlText = _savedHTML; }; } public function set verticalScrollPolicy(_arg1:String):void{ _verticalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); invalidate(InvalidationType.DATA); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.controls
Section 180
//TextInput (fl.controls.TextInput) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class TextInput extends UIComponent implements IFocusManagerComponent { protected var _html:Boolean;// = false protected var _savedHTML:String; protected var background:DisplayObject; protected var _editable:Boolean;// = true public var textField:TextField; private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function TextInput(){ _editable = true; _html = false; super(); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function set text(_arg1:String):void{ textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } protected function updateTextFieldType():void{ textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (_arg1.target == this){ stage.focus = textField; }; _local2 = focusManager; if (((editable) && (_local2))){ _local2.showFocusIndicator = true; if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){ setSelection(0, textField.length); }; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; updateTextFieldType(); } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function get horizontalScrollPosition():int{ return (textField.scrollH); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } public function set horizontalScrollPosition(_arg1:int):void{ textField.scrollH = _arg1; } public function get restrict():String{ return (textField.restrict); } public function get textWidth():Number{ return (textField.textWidth); } public function get textHeight():Number{ return (textField.textHeight); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; updateTextFieldType(); } public function get maxChars():int{ return (textField.maxChars); } public function get length():int{ return (textField.length); } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } public function get imeMode():String{ return (_imeMode); } override protected function focusOutHandler(_arg1:FocusEvent):void{ super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } public function set htmlText(_arg1:String):void{ if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } public function get text():String{ return (textField.text); } override public function get enabled():Boolean{ return (super.enabled); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } override protected function draw():void{ var _local1:Object; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text)); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true); textField.addEventListener(Event.CHANGE, handleChange, false, 0, true); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } public function appendText(_arg1:String):void{ textField.appendText(_arg1); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } public function get htmlText():String{ return (textField.htmlText); } protected function drawBackground():void{ var _local1:DisplayObject; var _local2:String; _local1 = background; _local2 = (enabled) ? "upSkin" : "disabledSkin"; background = getDisplayObjectInstance(getStyleValue(_local2)); if (background == null){ return; }; addChildAt(background, 0); if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){ removeChild(_local1); }; } override public function setFocus():void{ stage.focus = textField; } protected function drawLayout():void{ var _local1:Number; _local1 = Number(getStyleValue("textPadding")); if (background != null){ background.width = width; background.height = height; }; textField.width = (width - (2 * _local1)); textField.height = (height - (2 * _local1)); textField.x = (textField.y = _local1); } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); if (_html){ textField.htmlText = _savedHTML; }; } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 181
//UIScrollBar (fl.controls.UIScrollBar) package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; import flash.text.*; public class UIScrollBar extends ScrollBar { protected var inScroll:Boolean;// = false protected var _scrollTarget:TextField; protected var inEdit:Boolean;// = false private static var defaultStyles:Object = {}; public function UIScrollBar(){ inEdit = false; inScroll = false; super(); } protected function handleTargetScroll(_arg1:Event):void{ if (inDrag){ return; }; if (!enabled){ return; }; inEdit = true; updateScrollTargetProperties(); scrollPosition = ((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV; inEdit = false; } override public function set minScrollPosition(_arg1:Number):void{ super.minScrollPosition = ((_arg1)<0) ? 0 : _arg1; } override public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{ super.setScrollPosition(_arg1, _arg2); if (!_scrollTarget){ inScroll = false; return; }; updateTargetScroll(); } override public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ var _local5:Number; var _local6:Number; _local5 = _arg3; _local6 = ((_arg2)<0) ? 0 : _arg2; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local5 = ((_arg3)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local5; } else { _local5 = ((_arg3)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local5; }; }; super.setScrollProperties(_arg1, _local6, _local5, _arg4); } public function get scrollTargetName():String{ return (_scrollTarget.name); } public function get scrollTarget():TextField{ return (_scrollTarget); } protected function updateScrollTargetProperties():void{ var _local1:Boolean; var _local2:Number; if (_scrollTarget == null){ setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize); scrollPosition = 0; } else { _local1 = (direction == ScrollBarDirection.HORIZONTAL); _local2 = (_local1) ? _scrollTarget.width : 10; setScrollProperties(_local2, (_local1) ? 0 : 1, (_local1) ? _scrollTarget.maxScrollH : _scrollTarget.maxScrollV, pageScrollSize); scrollPosition = (_local1) ? _scrollTarget.scrollH : _scrollTarget.scrollV; }; } public function update():void{ inEdit = true; updateScrollTargetProperties(); inEdit = false; } public function set scrollTargetName(_arg1:String):void{ var target = _arg1; try { scrollTarget = (parent.getChildByName(target) as TextField); } catch(error:Error) { throw (new Error("ScrollTarget not found, or is not a TextField")); }; } override public function set direction(_arg1:String):void{ if (isLivePreview){ return; }; super.direction = _arg1; updateScrollTargetProperties(); } protected function handleTargetChange(_arg1:Event):void{ inEdit = true; setScrollPosition(((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV, true); updateScrollTargetProperties(); inEdit = false; } override public function set maxScrollPosition(_arg1:Number):void{ var _local2:Number; _local2 = _arg1; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local2 = ((_local2)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local2; } else { _local2 = ((_local2)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local2; }; }; super.maxScrollPosition = _local2; } protected function updateTargetScroll(_arg1:ScrollEvent=null):void{ if (inEdit){ return; }; if (direction == ScrollBarDirection.HORIZONTAL){ _scrollTarget.scrollH = scrollPosition; } else { _scrollTarget.scrollV = scrollPosition; }; } override protected function draw():void{ if (isInvalid(InvalidationType.DATA)){ updateScrollTargetProperties(); }; super.draw(); } public function set scrollTarget(_arg1:TextField):void{ if (_scrollTarget != null){ _scrollTarget.removeEventListener(Event.CHANGE, handleTargetChange, false); _scrollTarget.removeEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false); _scrollTarget.removeEventListener(Event.SCROLL, handleTargetScroll, false); removeEventListener(ScrollEvent.SCROLL, updateTargetScroll, false); }; _scrollTarget = _arg1; if (_scrollTarget != null){ _scrollTarget.addEventListener(Event.CHANGE, handleTargetChange, false, 0, true); _scrollTarget.addEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false, 0, true); _scrollTarget.addEventListener(Event.SCROLL, handleTargetScroll, false, 0, true); addEventListener(ScrollEvent.SCROLL, updateTargetScroll, false, 0, true); }; invalidate(InvalidationType.DATA); } override public function get direction():String{ return (super.direction); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.controls
Section 182
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 183
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 184
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.utils.*; import flash.system.*; public class UIComponent extends Sprite { protected var _enabled:Boolean;// = true private var _mouseFocusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String;// = null protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String;// = "3.0.0.15" protected var isFocused:Boolean;// = false protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean;// = true private var tempText:TextField; protected var invalidateFlag:Boolean;// = false protected var _inspector:Boolean;// = false protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; _local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var classDef:Object; var skin = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 185
//DataProvider (fl.data.DataProvider) package fl.data { import flash.events.*; import fl.events.*; public class DataProvider extends EventDispatcher { protected var data:Array; public function DataProvider(_arg1:Object=null){ if (_arg1 == null){ data = []; } else { data = getDataFromObject(_arg1); }; } protected function dispatchPreChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.PRE_DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } public function invalidateItemAt(_arg1:int):void{ checkIndex(_arg1, (data.length - 1)); dispatchChangeEvent(DataChangeType.INVALIDATE, [data[_arg1]], _arg1, _arg1); } public function getItemIndex(_arg1:Object):int{ return (data.indexOf(_arg1)); } protected function getDataFromObject(_arg1:Object):Array{ var _local2:Array; var _local3:Array; var _local4:uint; var _local5:Object; var _local6:XML; var _local7:XMLList; var _local8:XML; var _local9:XMLList; var _local10:XML; var _local11:XMLList; var _local12:XML; if ((_arg1 is Array)){ _local3 = (_arg1 as Array); if (_local3.length > 0){ if ((((_local3[0] is String)) || ((_local3[0] is Number)))){ _local2 = []; _local4 = 0; while (_local4 < _local3.length) { _local5 = {label:String(_local3[_local4]), data:_local3[_local4]}; _local2.push(_local5); _local4++; }; return (_local2); }; }; return (_arg1.concat()); //unresolved jump }; if ((_arg1 is DataProvider)){ return (_arg1.toArray()); }; if ((_arg1 is XML)){ _local6 = (_arg1 as XML); _local2 = []; _local7 = _local6.*; for each (_local8 in _local7) { _arg1 = {}; _local9 = _local8.attributes(); for each (_local10 in _local9) { _arg1[_local10.localName()] = _local10.toString(); }; _local11 = _local8.*; for each (_local12 in _local11) { if (_local12.hasSimpleContent()){ _arg1[_local12.localName()] = _local12.toString(); }; }; _local2.push(_arg1); }; return (_local2); //unresolved jump }; throw (new TypeError((("Error: Type Coercion failed: cannot convert " + _arg1) + " to Array or DataProvider."))); } public function removeItemAt(_arg1:uint):Object{ var _local2:Array; checkIndex(_arg1, (data.length - 1)); dispatchPreChangeEvent(DataChangeType.REMOVE, data.slice(_arg1, (_arg1 + 1)), _arg1, _arg1); _local2 = data.splice(_arg1, 1); dispatchChangeEvent(DataChangeType.REMOVE, _local2, _arg1, _arg1); return (_local2[0]); } public function addItem(_arg1:Object):void{ dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); data.push(_arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); } public function sortOn(_arg1:Object, _arg2:Object=null){ var _local3:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local3 = data.sortOn(_arg1, _arg2); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local3); } public function sort(... _args){ var _local2:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local2 = data.sort.apply(data, _args); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local2); } public function addItems(_arg1:Object):void{ addItemsAt(_arg1, data.length); } public function concat(_arg1:Object):void{ addItems(_arg1); } public function clone():DataProvider{ return (new DataProvider(data)); } public function toArray():Array{ return (data.concat()); } public function get length():uint{ return (data.length); } public function addItemAt(_arg1:Object, _arg2:uint):void{ checkIndex(_arg2, data.length); dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); data.splice(_arg2, 0, _arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); } public function getItemAt(_arg1:uint):Object{ checkIndex(_arg1, (data.length - 1)); return (data[_arg1]); } override public function toString():String{ return ((("DataProvider [" + data.join(" , ")) + "]")); } public function invalidateItem(_arg1:Object):void{ var _local2:uint; _local2 = getItemIndex(_arg1); if (_local2 == -1){ return; }; invalidateItemAt(_local2); } protected function dispatchChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } protected function checkIndex(_arg1:int, _arg2:int):void{ if ((((_arg1 > _arg2)) || ((_arg1 < 0)))){ throw (new RangeError((((("DataProvider index (" + _arg1) + ") is not in acceptable range (0 - ") + _arg2) + ")"))); }; } public function addItemsAt(_arg1:Object, _arg2:uint):void{ var _local3:Array; checkIndex(_arg2, data.length); _local3 = getDataFromObject(_arg1); dispatchPreChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); data.splice.apply(data, [_arg2, 0].concat(_local3)); dispatchChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); } public function replaceItem(_arg1:Object, _arg2:Object):Object{ var _local3:int; _local3 = getItemIndex(_arg2); if (_local3 != -1){ return (replaceItemAt(_arg1, _local3)); }; return (null); } public function removeItem(_arg1:Object):Object{ var _local2:int; _local2 = getItemIndex(_arg1); if (_local2 != -1){ return (removeItemAt(_local2)); }; return (null); } public function merge(_arg1:Object):void{ var _local2:Array; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:Object; _local2 = getDataFromObject(_arg1); _local3 = _local2.length; _local4 = data.length; dispatchPreChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); _local5 = 0; while (_local5 < _local3) { _local6 = _local2[_local5]; if (getItemIndex(_local6) == -1){ data.push(_local6); }; _local5++; }; if (data.length > _local4){ dispatchChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); } else { dispatchChangeEvent(DataChangeType.ADD, [], -1, -1); }; } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ var _local3:Array; checkIndex(_arg2, (data.length - 1)); _local3 = [data[_arg2]]; dispatchPreChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); data[_arg2] = _arg1; dispatchChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); return (_local3[0]); } public function invalidate():void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, DataChangeType.INVALIDATE_ALL, data.concat(), 0, data.length)); } public function removeAll():void{ var _local1:Array; _local1 = data.concat(); dispatchPreChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); data = []; dispatchChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); } } }//package fl.data
Section 186
//SimpleCollectionItem (fl.data.SimpleCollectionItem) package fl.data { public dynamic class SimpleCollectionItem { public var label:String; public var data:String; public function toString():String{ return ((((("[SimpleCollectionItem: " + label) + ",") + data) + "]")); } } }//package fl.data
Section 187
//ColorPickerEvent (fl.events.ColorPickerEvent) package fl.events { import flash.events.*; public class ColorPickerEvent extends Event { protected var _color:uint; public static const ITEM_ROLL_OUT:String = "itemRollOut"; public static const ITEM_ROLL_OVER:String = "itemRollOver"; public static const CHANGE:String = "change"; public static const ENTER:String = "enter"; public function ColorPickerEvent(_arg1:String, _arg2:uint){ super(_arg1, true); _color = _arg2; } override public function toString():String{ return (formatToString("ColorPickerEvent", "type", "bubbles", "cancelable", "color")); } public function get color():uint{ return (_color); } override public function clone():Event{ return (new ColorPickerEvent(type, color)); } } }//package fl.events
Section 188
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 189
//DataChangeEvent (fl.events.DataChangeEvent) package fl.events { import flash.events.*; public class DataChangeEvent extends Event { protected var _items:Array; protected var _endIndex:uint; protected var _changeType:String; protected var _startIndex:uint; public static const PRE_DATA_CHANGE:String = "preDataChange"; public static const DATA_CHANGE:String = "dataChange"; public function DataChangeEvent(_arg1:String, _arg2:String, _arg3:Array, _arg4:int=-1, _arg5:int=-1):void{ super(_arg1); _changeType = _arg2; _startIndex = _arg4; _items = _arg3; _endIndex = ((_arg5)==-1) ? _startIndex : _arg5; } public function get changeType():String{ return (_changeType); } public function get startIndex():uint{ return (_startIndex); } public function get items():Array{ return (_items); } override public function clone():Event{ return (new DataChangeEvent(type, _changeType, _items, _startIndex, _endIndex)); } override public function toString():String{ return (formatToString("DataChangeEvent", "type", "changeType", "startIndex", "endIndex", "bubbles", "cancelable")); } public function get endIndex():uint{ return (_endIndex); } } }//package fl.events
Section 190
//DataChangeType (fl.events.DataChangeType) package fl.events { public class DataChangeType { public static const ADD:String = "add"; public static const REMOVE:String = "remove"; public static const REMOVE_ALL:String = "removeAll"; public static const CHANGE:String = "change"; public static const REPLACE:String = "replace"; public static const INVALIDATE:String = "invalidate"; public static const INVALIDATE_ALL:String = "invalidateAll"; public static const SORT:String = "sort"; } }//package fl.events
Section 191
//InteractionInputType (fl.events.InteractionInputType) package fl.events { public class InteractionInputType { public static const MOUSE:String = "mouse"; public static const KEYBOARD:String = "keyboard"; } }//package fl.events
Section 192
//ListEvent (fl.events.ListEvent) package fl.events { import flash.events.*; public class ListEvent extends Event { protected var _index:int; protected var _item:Object; protected var _columnIndex:int; protected var _rowIndex:int; public static const ITEM_DOUBLE_CLICK:String = "itemDoubleClick"; public static const ITEM_ROLL_OUT:String = "itemRollOut"; public static const ITEM_ROLL_OVER:String = "itemRollOver"; public static const ITEM_CLICK:String = "itemClick"; public function ListEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:int=-1, _arg7:Object=null){ super(_arg1, _arg2, _arg3); _rowIndex = _arg5; _columnIndex = _arg4; _index = _arg6; _item = _arg7; } public function get rowIndex():Object{ return (_rowIndex); } public function get index():int{ return (_index); } public function get item():Object{ return (_item); } public function get columnIndex():int{ return (_columnIndex); } override public function clone():Event{ return (new ListEvent(type, bubbles, cancelable, _columnIndex, _rowIndex)); } override public function toString():String{ return (formatToString("ListEvent", "type", "bubbles", "cancelable", "columnIndex", "rowIndex", "index", "item")); } } }//package fl.events
Section 193
//ScrollEvent (fl.events.ScrollEvent) package fl.events { import flash.events.*; public class ScrollEvent extends Event { private var _position:Number; private var _direction:String; private var _delta:Number; public static const SCROLL:String = "scroll"; public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){ super(ScrollEvent.SCROLL, false, false); _direction = _arg1; _delta = _arg2; _position = _arg3; } override public function clone():Event{ return (new ScrollEvent(_direction, _delta, _position)); } public function get position():Number{ return (_position); } override public function toString():String{ return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position")); } public function get delta():Number{ return (_delta); } public function get direction():String{ return (_direction); } } }//package fl.events
Section 194
//SliderEvent (fl.events.SliderEvent) package fl.events { import flash.events.*; public class SliderEvent extends Event { protected var _triggerEvent:String; protected var _keyCode:Number; protected var _value:Number; protected var _clickTarget:String; public static const CHANGE:String = "change"; public static const THUMB_PRESS:String = "thumbPress"; public static const THUMB_DRAG:String = "thumbDrag"; public static const THUMB_RELEASE:String = "thumbRelease"; public function SliderEvent(_arg1:String, _arg2:Number, _arg3:String, _arg4:String, _arg5:int=0){ _value = _arg2; _keyCode = _arg5; _triggerEvent = _arg4; _clickTarget = _arg3; super(_arg1); } public function get clickTarget():String{ return (_clickTarget); } override public function clone():Event{ return (new SliderEvent(type, _value, _clickTarget, _triggerEvent, _keyCode)); } override public function toString():String{ return (formatToString("SliderEvent", "type", "value", "bubbles", "cancelable", "keyCode", "triggerEvent", "clickTarget")); } public function get triggerEvent():String{ return (_triggerEvent); } public function get value():Number{ return (_value); } public function get keyCode():Number{ return (_keyCode); } } }//package fl.events
Section 195
//SliderEventClickTarget (fl.events.SliderEventClickTarget) package fl.events { public class SliderEventClickTarget { public static const TRACK:String = "track"; public static const THUMB:String = "thumb"; } }//package fl.events
Section 196
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject; _local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true; _local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers
Section 197
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function setFocus(_arg1:InteractiveObject):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function hideFocus():void; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 198
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 199
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; function get groupName():String; function get selected():Boolean; } }//package fl.managers
Section 200
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.text.*; import flash.utils.*; public class StyleManager { private var globalStyles:Object; private var classToDefaultStylesDict:Dictionary; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToInstancesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:StyleManager; var classDef:Class; var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers
Section 201
//BrakeEffect (BrakeEffect) package { import flash.media.*; public dynamic class BrakeEffect extends Sound { } }//package
Section 202
//BushEffectA (BushEffectA) package { import flash.media.*; public dynamic class BushEffectA extends Sound { } }//package
Section 203
//BushEffectB (BushEffectB) package { import flash.media.*; public dynamic class BushEffectB extends Sound { } }//package
Section 204
//Button_disabledSkin (Button_disabledSkin) package { import flash.display.*; public dynamic class Button_disabledSkin extends MovieClip { } }//package
Section 205
//Button_downSkin (Button_downSkin) package { import flash.display.*; public dynamic class Button_downSkin extends MovieClip { } }//package
Section 206
//Button_emphasizedSkin (Button_emphasizedSkin) package { import flash.display.*; public dynamic class Button_emphasizedSkin extends MovieClip { } }//package
Section 207
//Button_overSkin (Button_overSkin) package { import flash.display.*; public dynamic class Button_overSkin extends MovieClip { } }//package
Section 208
//Button_selectedDisabledSkin (Button_selectedDisabledSkin) package { import flash.display.*; public dynamic class Button_selectedDisabledSkin extends MovieClip { } }//package
Section 209
//Button_selectedDownSkin (Button_selectedDownSkin) package { import flash.display.*; public dynamic class Button_selectedDownSkin extends MovieClip { } }//package
Section 210
//Button_selectedOverSkin (Button_selectedOverSkin) package { import flash.display.*; public dynamic class Button_selectedOverSkin extends MovieClip { } }//package
Section 211
//Button_selectedUpSkin (Button_selectedUpSkin) package { import flash.display.*; public dynamic class Button_selectedUpSkin extends MovieClip { } }//package
Section 212
//Button_upSkin (Button_upSkin) package { import flash.display.*; public dynamic class Button_upSkin extends MovieClip { } }//package
Section 213
//ButtonOverEffect (ButtonOverEffect) package { import flash.media.*; public dynamic class ButtonOverEffect extends Sound { } }//package
Section 214
//Cabin (Cabin) package { import flash.display.*; public dynamic class Cabin extends MovieClip { } }//package
Section 215
//CarHornEffect (CarHornEffect) package { import flash.media.*; public dynamic class CarHornEffect extends Sound { } }//package
Section 216
//CellRenderer_disabledSkin (CellRenderer_disabledSkin) package { import flash.display.*; public dynamic class CellRenderer_disabledSkin extends MovieClip { } }//package
Section 217
//CellRenderer_downSkin (CellRenderer_downSkin) package { import flash.display.*; public dynamic class CellRenderer_downSkin extends MovieClip { } }//package
Section 218
//CellRenderer_overSkin (CellRenderer_overSkin) package { import flash.display.*; public dynamic class CellRenderer_overSkin extends MovieClip { } }//package
Section 219
//CellRenderer_selectedDisabledSkin (CellRenderer_selectedDisabledSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDisabledSkin extends MovieClip { } }//package
Section 220
//CellRenderer_selectedDownSkin (CellRenderer_selectedDownSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDownSkin extends MovieClip { } }//package
Section 221
//CellRenderer_selectedOverSkin (CellRenderer_selectedOverSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedOverSkin extends MovieClip { } }//package
Section 222
//CellRenderer_selectedUpSkin (CellRenderer_selectedUpSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedUpSkin extends MovieClip { } }//package
Section 223
//CellRenderer_upSkin (CellRenderer_upSkin) package { import flash.display.*; public dynamic class CellRenderer_upSkin extends MovieClip { } }//package
Section 224
//CheckBox_disabledIcon (CheckBox_disabledIcon) package { import flash.display.*; public dynamic class CheckBox_disabledIcon extends MovieClip { } }//package
Section 225
//CheckBox_downIcon (CheckBox_downIcon) package { import flash.display.*; public dynamic class CheckBox_downIcon extends MovieClip { } }//package
Section 226
//CheckBox_overIcon (CheckBox_overIcon) package { import flash.display.*; public dynamic class CheckBox_overIcon extends MovieClip { } }//package
Section 227
//CheckBox_selectedDisabledIcon (CheckBox_selectedDisabledIcon) package { import flash.display.*; public dynamic class CheckBox_selectedDisabledIcon extends MovieClip { } }//package
Section 228
//CheckBox_selectedDownIcon (CheckBox_selectedDownIcon) package { import flash.display.*; public dynamic class CheckBox_selectedDownIcon extends MovieClip { } }//package
Section 229
//CheckBox_selectedOverIcon (CheckBox_selectedOverIcon) package { import flash.display.*; public dynamic class CheckBox_selectedOverIcon extends MovieClip { } }//package
Section 230
//CheckBox_selectedUpIcon (CheckBox_selectedUpIcon) package { import flash.display.*; public dynamic class CheckBox_selectedUpIcon extends MovieClip { } }//package
Section 231
//CheckBox_upIcon (CheckBox_upIcon) package { import flash.display.*; public dynamic class CheckBox_upIcon extends MovieClip { } }//package
Section 232
//Coin (Coin) package { import com.objects.gameplay.special.*; public dynamic class Coin extends Coin { public function Coin(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); parent.removeChild(this); } function frame1(){ stop(); } } }//package
Section 233
//CoinCollect (CoinCollect) package { import flash.media.*; public dynamic class CoinCollect extends Sound { } }//package
Section 234
//CoinText (CoinText) package { import flash.display.*; public dynamic class CoinText extends MovieClip { public function CoinText(){ addFrameScript(23, frame24); } function frame24(){ stop(); parent.removeChild(this); } } }//package
Section 235
//ColorPicker_backgroundSkin (ColorPicker_backgroundSkin) package { import flash.display.*; public dynamic class ColorPicker_backgroundSkin extends MovieClip { } }//package
Section 236
//ColorPicker_colorWell (ColorPicker_colorWell) package { import flash.display.*; public dynamic class ColorPicker_colorWell extends MovieClip { } }//package
Section 237
//ColorPicker_disabledSkin (ColorPicker_disabledSkin) package { import flash.display.*; public dynamic class ColorPicker_disabledSkin extends MovieClip { } }//package
Section 238
//ColorPicker_downSkin (ColorPicker_downSkin) package { import flash.display.*; public dynamic class ColorPicker_downSkin extends MovieClip { } }//package
Section 239
//ColorPicker_overSkin (ColorPicker_overSkin) package { import flash.display.*; public dynamic class ColorPicker_overSkin extends MovieClip { } }//package
Section 240
//ColorPicker_swatchSelectedSkin (ColorPicker_swatchSelectedSkin) package { import flash.display.*; public dynamic class ColorPicker_swatchSelectedSkin extends MovieClip { } }//package
Section 241
//ColorPicker_swatchSkin (ColorPicker_swatchSkin) package { import flash.display.*; public dynamic class ColorPicker_swatchSkin extends Sprite { } }//package
Section 242
//ColorPicker_textFieldSkin (ColorPicker_textFieldSkin) package { import flash.display.*; public dynamic class ColorPicker_textFieldSkin extends MovieClip { } }//package
Section 243
//ColorPicker_upSkin (ColorPicker_upSkin) package { import flash.display.*; public dynamic class ColorPicker_upSkin extends MovieClip { } }//package
Section 244
//ComboBox_disabledSkin (ComboBox_disabledSkin) package { import flash.display.*; public dynamic class ComboBox_disabledSkin extends MovieClip { } }//package
Section 245
//ComboBox_downSkin (ComboBox_downSkin) package { import flash.display.*; public dynamic class ComboBox_downSkin extends MovieClip { } }//package
Section 246
//ComboBox_overSkin (ComboBox_overSkin) package { import flash.display.*; public dynamic class ComboBox_overSkin extends MovieClip { } }//package
Section 247
//ComboBox_upSkin (ComboBox_upSkin) package { import flash.display.*; public dynamic class ComboBox_upSkin extends MovieClip { } }//package
Section 248
//ControlsButton (ControlsButton) package { import com.buttons.*; public dynamic class ControlsButton extends TextFieldButton { } }//package
Section 249
//Dirt (Dirt) package { import flash.display.*; public dynamic class Dirt extends BitmapData { public function Dirt(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 250
//DocumentClass (DocumentClass) package { import fl.controls.*; import flash.display.*; import com.micc.*; import Box2D.Dynamics.*; import flash.events.*; import com.sound.*; import flash.geom.*; import flash.text.*; import com.*; import flash.utils.*; import com.objects.gameplay.*; import com.debug.*; import com.buttons.*; import flash.net.*; import com.objects.*; import com.states.*; public class DocumentClass extends MovieClip { public var coins:Array; public var destination:Object; public var gameplayTime:Time; public var gameOverTruck:Truck_Placeholder; public var instructionsMc:MovieClip; public var Basics:GameplayBasicsButton; public var trackNodes:Array; public var t1:Truck_Placeholder; public var t2:Truck_Placeholder; public var t3:Truck_Placeholder; public var t4:Truck_Placeholder; public var t5:Truck_Placeholder; public var t6:Truck_Placeholder; public var gmc:MovieClip; public var bandits:Array; public var preloaderScreenButton:SimpleButton; public var __setPropDict:Dictionary; public var lock2:MovieClip; public var lock3:MovieClip; public var lock4:MovieClip; public var lock5:MovieClip; public var lock6:MovieClip; public var intro:MovieClip; public var truckSelectionTruck:Truck_Placeholder; public var mainMenuTruck:Truck_Placeholder; public var score:Number;// = 0 public var immigrants:Array; public var levelSelectTruck:Truck_Placeholder; public var transitionData:BitmapData; public var trackEditorSlot:Number;// = 1 public var __id3_:Button; public var savedData:SharedObject; public var spawnPoint:Point;// = null public var Controls:ControlsButton; public var scoreText:TextField; public var unlocked:Number;// = 1 public var transitionBitmap:Bitmap; public var soundEffectsEnabled:Boolean;// = true public var preloadExtraTime:Time; public var worldContactListener:GameContactListener; public var musicCheckbox:CheckBox; private var _activeGameState:GameState;// = null public var continueButtonLevelResults:SimpleButton; public var level1:LevelSelect; public var level2:LevelSelect; public var level3:LevelSelect; public var level4:LevelSelect; public var level5:LevelSelect; public var level6:LevelSelect; public var boosts:Array; public var updateButton:Button; public var musicEnabled:Boolean;// = true public var isTransitioning:Boolean;// = false public var musicSlider:Slider; public var editLevelButton:Button; public var gameOptionsTruck:Truck_Placeholder; public var level:Number;// = 1 public var skipButton:SimpleButton; public var world:b2World; public var musicVolume:Number;// = 1 public var all:Object; public var levelResultsTruck:Truck_Placeholder; public var truck1:SimpleButton; public var truck2:SimpleButton; public var truck3:SimpleButton; public var truck4:SimpleButton; public var truck5:SimpleButton; public var truck6:SimpleButton; public var truckIndex:Number;// = -1 public var soundEffectsSlider:Slider; public var timeElapsedText:TextField; public var trackArray:Array;// = null public var soundEffectsCheckbox:CheckBox; public var preloaderStartButton:SimpleButton; public var soundEffectsVolume:Number;// = 1 public var lastTrackNode:MovieClip; private static var _removeBodies:Array = new Array(); public static var instance:DocumentClass; public static var transitionAnimation:GarageAnimation = null; public function DocumentClass():void{ __setPropDict = new Dictionary(true); all = new Object(); worldContactListener = new GameContactListener(); immigrants = new Array(); boosts = new Array(); coins = new Array(); bandits = new Array(); trackNodes = new Array(); transitionData = new BitmapData(550, 400, false); super(); addFrameScript(0, frame1, 10, frame11, 19, frame20, 30, frame31, 41, frame42, 53, frame54, 105, frame106, 116, frame117, 125, frame126, 135, frame136, 145, frame146, 170, frame171, 184, frame185, 54, frame55, 55, frame56, 56, frame57, 57, frame58, 58, frame59, 59, frame60, 60, frame61, 61, frame62, 62, frame63, 63, frame64, 64, frame65, 126, frame127, 127, frame128, 128, frame129, 129, frame130, 130, frame131, 131, frame132, 132, frame133, 133, frame134, 134, frame135); instance = this; MochiBot.track(this, "a446410b"); DataTracer.disable(); savedData = SharedObject.getLocal("BorderServices"); if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; transitionBitmap = new Bitmap(transitionData); } function __setProp_soundEffectsCheckbox_Game_ContentA_53(){ try { soundEffectsCheckbox["componentInspectorSetting"] = true; } catch(e:Error) { }; soundEffectsCheckbox.enabled = true; soundEffectsCheckbox.label = "Sound Effects"; soundEffectsCheckbox.labelPlacement = "right"; soundEffectsCheckbox.selected = true; soundEffectsCheckbox.visible = true; try { soundEffectsCheckbox["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function event_clickPreloader(_arg1:Event):void{ navigateToURL(new URLRequest("http://www.i6.com/new-games.php?utm_source=games&utm_medium=borderservicespr"), "blank"); } public function event_selectTrackEditorSlot(_arg1:MouseEvent):void{ var _local2:String = DisplayObject(_arg1.currentTarget).name; var _local3:Number = new Number(_local2.charAt(5)); trackEditorSlot = _local3; startTransition("Track Editor"); } public function event_clickLevelButton(_arg1:MouseEvent):void{ var _local2:String = DisplayObject(_arg1.currentTarget).name; var _local3:Number = new Number(_local2.charAt(5)); trackArray = Levels.ALL_LEVELS[(_local3 - 1)]; level = _local3; trace("Level ", _local3, " chosen!!"); if (truckIndex == -1){ startTransition("Truck Select"); } else { startTransition("Gameplay"); }; } function frame171(){ gmc = new GarageAnimation(this); stage.addChild(gmc); } public function event_reEditTrack(_arg1:MouseEvent):void{ Gameplay(activeGameState).dispose(); startTransition("Track Editor"); } function frame11(){ skipButton.addEventListener("click", event_skipIntro, false, 0, true); SoundManager.stopBackgroundMusic(); } private function event_enterFrame(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Time; SoundManager.updateSoundManager(); if (activeGameState){ activeGameState.update(); }; switch (currentLabel){ case "Preloader": _local2 = Math.round(((stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal) * 100)); if (_local2 < 100){ intro.gauge.gotoAndStop(_local2); } else { if (intro.gauge.currentFrame == intro.gauge.totalFrames){ if (!preloadExtraTime){ preloadExtraTime = new Time(); } else { if (preloadExtraTime.currentElapsedTime >= 4000){ preloaderStartButton.visible = (preloaderStartButton.mouseEnabled = true); }; }; } else { intro.gauge.nextFrame(); }; }; break; case "Level Select": if (((((((((DataTracer.enabled) && (Key.isDown("control")))) && (Key.isDown("shift")))) && (Key.isDown("u")))) && ((unlocked < 7)))){ DataTracer.traceData("All Levels Unlocked"); unlocked = 7; savedData.data.unlocked = unlocked; savedData.flush(); }; if (this.lock2){ _local3 = 2; while (_local3 < 7) { this[("lock" + _local3)].mouseEnabled = (this[("lock" + _local3)].visible = (unlocked < _local3)); this[("level" + _local3)].mouseEnabled = (unlocked >= _local3); _local3++; }; }; case "Main Menu": if (!scoreText){ break; }; if (!isNaN(score)){ scoreText.text = (("Overall Player Score: " + score) + "Pts."); }; break; case "Game Options": if (((((((!(musicCheckbox)) || (!(soundEffectsCheckbox)))) || (!(musicSlider)))) || (!(soundEffectsSlider)))){ break; }; musicEnabled = CheckBox(musicCheckbox).selected; soundEffectsEnabled = CheckBox(soundEffectsCheckbox).selected; musicVolume = (Slider(musicSlider).value / 100); soundEffectsVolume = (Slider(soundEffectsSlider).value / 100); break; case "Gameplay": if (!Gameplay(activeGameState)){ return; }; Gameplay(activeGameState).number = level; if (Gameplay(activeGameState).best != -1){ _local4 = Gameplay(activeGameState).bestTime; Gameplay(activeGameState).bestTimeText.text = (((("Best Time: " + _local4.minutes) + "Min. ") + _local4.seconds) + "Sec."); } else { Gameplay(activeGameState).bestTimeText.text = "No Record Set!"; }; case "Test Track": if (!Gameplay(activeGameState)){ return; }; if (!Gameplay(activeGameState).player){ return; }; if (gameplayTime){ Gameplay(activeGameState).timeElapsedText.text = (((("Time Elapsed: " + gameplayTime.minutes) + "Min. ") + gameplayTime.seconds) + "Sec."); }; break; case "Final Level Results": case "Level Results": if (gameplayTime){ timeElapsedText.text = (((("Time Elapsed: " + gameplayTime.minutes) + "Min. ") + gameplayTime.seconds) + "Sec."); }; if (!isNaN(score)){ scoreText.text = (("Score: " + score) + "Pts."); }; break; }; } function frame185(){ stop(); } public function event_startNextLevel(_arg1:Event):void{ level++; trackArray = Levels.ALL_LEVELS[(level - 1)]; startTransition("Gameplay"); } function frame1(){ stop(); preloaderScreenButton.addEventListener("click", event_clickPreloader, false, 0, true); preloaderStartButton.addEventListener("click", event_continueFromPreloader, false, 0, true); preloaderStartButton.visible = (preloaderStartButton.mouseEnabled = false); } public function event_clickTruck(_arg1:MouseEvent):void{ var _local2:String = DisplayObject(_arg1.currentTarget).name; var _local3:Number = new Number(_local2.charAt(5)); DataTracer.traceData((("Truck " + _local3) + " chosen!!")); truckIndex = _local3; savedData.data.truckIndex = _local3; savedData.flush(); startTransition("Gameplay"); } function frame31(){ level1.addEventListener("click", event_clickLevelButton, false, 0, true); level2.addEventListener("click", event_clickLevelButton, false, 0, true); level3.addEventListener("click", event_clickLevelButton, false, 0, true); level4.addEventListener("click", event_clickLevelButton, false, 0, true); level5.addEventListener("click", event_clickLevelButton, false, 0, true); level6.addEventListener("click", event_clickLevelButton, false, 0, true); SoundManager.playSound(MenuMusic, SoundType.BACKGROUND_MUSIC, {transition:1000}); } function frame20(){ SoundManager.playSound(MenuMusic, SoundType.BACKGROUND_MUSIC, {transition:1000}); } public function event_continueFromPreloader(_arg1:Event):void{ _arg1.currentTarget.removeEventListener("click", event_continueFromPreloader); startTransition("Intro"); } function frame42(){ t1.stop(); t2.gotoAndStop(2); t3.gotoAndStop(3); t4.gotoAndStop(4); t5.gotoAndStop(5); t6.gotoAndStop(6); truck1.addEventListener("click", event_clickTruck, false, 0, true); truck2.addEventListener("click", event_clickTruck, false, 0, true); truck3.addEventListener("click", event_clickTruck, false, 0, true); truck4.addEventListener("click", event_clickTruck, false, 0, true); truck5.addEventListener("click", event_clickTruck, false, 0, true); truck6.addEventListener("click", event_clickTruck, false, 0, true); } public function set activeGameState(_arg1:GameState):void{ if (!_arg1){ return; }; _activeGameState = _arg1; _activeGameState.initGameState(); } public function event_skipIntro(_arg1:MouseEvent):void{ _arg1.currentTarget.removeEventListener("click", event_skipIntro); startTransition("Main Menu"); } function frame55(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame56(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame57(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame54(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; CheckBox(musicCheckbox).selected = SoundManager.musicEnabled; CheckBox(soundEffectsCheckbox).selected = SoundManager.soundEffectsEnabled; Slider(musicSlider).value = (SoundManager.musicVolume * 100); Slider(soundEffectsSlider).value = (SoundManager.soundEffectsVolume * 100); updateButton.addEventListener("click", saveGameData, false, 0, true); } function frame58(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame59(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame61(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame62(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame63(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame65(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame60(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } function frame64(){ if ((((__setPropDict[updateButton] == undefined)) || (!((((int(__setPropDict[updateButton]) >= 54)) && ((int(__setPropDict[updateButton]) <= 65))))))){ __setPropDict[updateButton] = currentFrame; __setProp_updateButton_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsCheckbox] == undefined)) || (!((((int(__setPropDict[soundEffectsCheckbox]) >= 54)) && ((int(__setPropDict[soundEffectsCheckbox]) <= 65))))))){ __setPropDict[soundEffectsCheckbox] = currentFrame; __setProp_soundEffectsCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[musicCheckbox] == undefined)) || (!((((int(__setPropDict[musicCheckbox]) >= 54)) && ((int(__setPropDict[musicCheckbox]) <= 65))))))){ __setPropDict[musicCheckbox] = currentFrame; __setProp_musicCheckbox_Game_ContentA_53(); }; if ((((__setPropDict[soundEffectsSlider] == undefined)) || (!((((int(__setPropDict[soundEffectsSlider]) >= 54)) && ((int(__setPropDict[soundEffectsSlider]) <= 65))))))){ __setPropDict[soundEffectsSlider] = currentFrame; __setProp_soundEffectsSlider_Game_ContentA_53(); }; if ((((__setPropDict[musicSlider] == undefined)) || (!((((int(__setPropDict[musicSlider]) >= 54)) && ((int(__setPropDict[musicSlider]) <= 65))))))){ __setPropDict[musicSlider] = currentFrame; __setProp_musicSlider_Game_ContentA_53(); }; } public function event_saveCustomTrack():void{ savedData.data[("saveSlot" + trackEditorSlot)] = TrackEditor(activeGameState).exportToArray(); savedData.data[(("slot" + trackEditorSlot) + "Date")] = new Date().toDateString(); savedData.flush(); } function __setProp_editLevelButton_Game_Content_125(){ try { editLevelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; editLevelButton.emphasized = false; editLevelButton.enabled = true; editLevelButton.label = "Edit Level"; editLevelButton.labelPlacement = "right"; editLevelButton.selected = false; editLevelButton.toggle = false; editLevelButton.visible = true; try { editLevelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_updateButton_Game_ContentA_53(){ try { updateButton["componentInspectorSetting"] = true; } catch(e:Error) { }; updateButton.emphasized = false; updateButton.enabled = true; updateButton.label = "Update"; updateButton.labelPlacement = "right"; updateButton.selected = false; updateButton.toggle = false; updateButton.visible = true; try { updateButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_musicSlider_Game_ContentA_53(){ try { musicSlider["componentInspectorSetting"] = true; } catch(e:Error) { }; musicSlider.direction = "horizontal"; musicSlider.enabled = true; musicSlider.liveDragging = false; musicSlider.maximum = 100; musicSlider.minimum = 0; musicSlider.snapInterval = 0; musicSlider.tickInterval = 0; musicSlider.value = 100; musicSlider.visible = true; try { musicSlider["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function event_clearSavedData(_arg1:MouseEvent):void{ } public function doesCustomTrackExist(_arg1:Number):Boolean{ return (((!((savedData.data[("saveSlot" + _arg1)] == null))) && (!((savedData.data[("saveSlot" + _arg1)] == undefined))))); } public function startTransition(_arg1:Object):void{ if (transitionAnimation){ return; }; if (this.destination == _arg1){ return; }; if (_arg1 == currentLabel){ return; }; if (this.currentLabel == "Transition"){ return; }; if (stage.contains(transitionBitmap)){ return; }; transitionData.draw(this); if (!stage.contains(transitionBitmap)){ stage.addChild(transitionBitmap); }; this.destination = _arg1; gotoAndStop("Transition"); } public function get activeGameState():GameState{ return (_activeGameState); } function __setProp_musicCheckbox_Game_ContentA_53(){ try { musicCheckbox["componentInspectorSetting"] = true; } catch(e:Error) { }; musicCheckbox.enabled = true; musicCheckbox.label = "BKG Music"; musicCheckbox.labelPlacement = "right"; musicCheckbox.selected = true; musicCheckbox.visible = true; try { musicCheckbox["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function saveGameData(_arg1:Event=null):void{ if (_arg1){ SoundManager.playSound(ButtonOverEffect, SoundType.SOUND_EFFECT); }; SoundManager.soundEffectsVolume = soundEffectsVolume; SoundManager.soundEffectsEnabled = soundEffectsEnabled; SoundManager.musicVolume = musicVolume; SoundManager.musicEnabled = musicEnabled; savedData.data.hasData = true; savedData.data.soundsEnabled = SoundManager.soundsEnabled; savedData.data.globalVolume = SoundManager.globalVolume; savedData.data.musicVolume = SoundManager.musicVolume; savedData.data.soundEffectsVolume = SoundManager.soundEffectsVolume; savedData.data.soundEffectsEnabled = SoundManager.soundEffectsEnabled; savedData.data.musicEnabled = SoundManager.musicEnabled; savedData.data.score = score; savedData.data.truckIndex = truckIndex; savedData.flush(); DataTracer.traceData("Sound Data Saved"); } function __setProp_soundEffectsSlider_Game_ContentA_53(){ try { soundEffectsSlider["componentInspectorSetting"] = true; } catch(e:Error) { }; soundEffectsSlider.direction = "horizontal"; soundEffectsSlider.enabled = true; soundEffectsSlider.liveDragging = false; soundEffectsSlider.maximum = 100; soundEffectsSlider.minimum = 0; soundEffectsSlider.snapInterval = 0; soundEffectsSlider.tickInterval = 0; soundEffectsSlider.value = 100; soundEffectsSlider.visible = true; try { soundEffectsSlider["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame106(){ SoundManager.playSound(TrackEditorMusic, SoundType.BACKGROUND_MUSIC, {volume:0.35}); } function frame117(){ SoundManager.playSound(GameplayMusicA, SoundType.BACKGROUND_MUSIC, {transition:1000}); } override public function gotoAndStop(_arg1:Object, _arg2:String=null):void{ if ((((currentLabel == "Transition")) && (!((_arg1 == "Transition"))))){ if (stage.contains(transitionBitmap)){ stage.removeChild(transitionBitmap); }; super.gotoAndStop(destination); return; }; if (currentLabel == "Game Options"){ saveGameData(); } else { if (currentLabel == "Gameplay"){ SoundManager.disposeOfCategory("gameplay"); }; }; super.gotoAndStop(_arg1, _arg2); } private function event_addedToStage(_arg1:Event):void{ if (_arg1){ removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); }; destination = currentLabel; if (savedData.data.hasData){ SoundManager.soundsEnabled = savedData.data.soundsEnabled; SoundManager.globalVolume = savedData.data.globalVolume; SoundManager.musicVolume = savedData.data.musicVolume; SoundManager.soundEffectsVolume = savedData.data.soundEffectsVolume; SoundManager.soundEffectsEnabled = savedData.data.soundEffectsEnabled; SoundManager.musicEnabled = savedData.data.musicEnabled; score = savedData.data.score; unlocked = savedData.data.unlocked; truckIndex = savedData.data.truckIndex; if (isNaN(score)){ score = 0; }; if (isNaN(unlocked)){ unlocked = 1; }; if (isNaN(truckIndex)){ truckIndex = -1; }; }; Key.setEventListeners(stage); DataTracer.traceData("Starting Game up!!"); this.addEventListener(Event.ENTER_FRAME, event_enterFrame, false, 0, true); } function frame127(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame129(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame126(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; editLevelButton.addEventListener("click", event_reEditTrack, false, 0, true); } function frame128(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame130(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame131(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame134(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame136(){ SoundManager.playSound(GameOverMusic, SoundType.BACKGROUND_MUSIC); } function frame132(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame133(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function frame135(){ if ((((__setPropDict[editLevelButton] == undefined)) || (!((((int(__setPropDict[editLevelButton]) >= 126)) && ((int(__setPropDict[editLevelButton]) <= 135))))))){ __setPropDict[editLevelButton] = currentFrame; __setProp_editLevelButton_Game_Content_125(); }; if ((((__setPropDict[__id3_] == undefined)) || (!((((int(__setPropDict[__id3_]) >= 126)) && ((int(__setPropDict[__id3_]) <= 135))))))){ __setPropDict[__id3_] = currentFrame; __setProp___id3__Game_Content_125(); }; } function __setProp___id3__Game_Content_125(){ try { __id3_["componentInspectorSetting"] = true; } catch(e:Error) { }; __id3_.emphasized = false; __id3_.enabled = true; __id3_.label = "Export Level"; __id3_.labelPlacement = "right"; __id3_.selected = false; __id3_.toggle = false; __id3_.visible = true; try { __id3_["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame146(){ continueButtonLevelResults.addEventListener("click", event_startNextLevel, false, 0, true); SoundManager.playSound(LevelCompleteMusic, SoundType.BACKGROUND_MUSIC); } public function event_loadCustomTrack():void{ var _local1:Array = savedData.data[("saveSlot" + trackEditorSlot)]; TrackEditor(activeGameState).buildFromArray(_local1); } public static function removeAllDeadBodies(_arg1:b2World):void{ var _local2:b2Body; for each (_local2 in _removeBodies) { _arg1.DestroyBody(_local2); }; _removeBodies = new Array(); } public static function addDeadBody(_arg1:b2Body){ _removeBodies.push(_arg1); } public static function get hasDeadBodies():Boolean{ return ((_removeBodies.length > 0)); } } }//package
Section 251
//DustEffect (DustEffect) package { import flash.display.*; public dynamic class DustEffect extends MovieClip { public function DustEffect(){ addFrameScript(0, frame1, 15, frame16); } function frame16(){ stop(); parent.removeChild(this); } function frame1(){ scaleX = (scaleY = (0.5 + Math.random())); alpha = (0.5 + (Math.random() * 0.5)); rotation = (-70 + (Math.random() * 25)); } } }//package
Section 252
//EngineEffect (EngineEffect) package { import flash.media.*; public dynamic class EngineEffect extends Sound { } }//package
Section 253
//EngineRevEffect (EngineRevEffect) package { import flash.media.*; public dynamic class EngineRevEffect extends Sound { } }//package
Section 254
//ExportMc (ExportMc) package { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.net.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class ExportMc extends MovieClip { public var closeButton:Button; public var exportCodeText:TextArea; public function ExportMc(){ addFrameScript(0, frame1); __setProp_closeButton_ExportMc_Layer1_0(); } public function closeMe(_arg1){ closeButton.removeEventListener("click", closeMe); parent.removeChild(this); } function __setProp_closeButton_ExportMc_Layer1_0(){ try { closeButton["componentInspectorSetting"] = true; } catch(e:Error) { }; closeButton.emphasized = false; closeButton.enabled = true; closeButton.label = "Close"; closeButton.labelPlacement = "right"; closeButton.selected = false; closeButton.toggle = false; closeButton.visible = true; try { closeButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame1(){ closeButton.addEventListener("click", closeMe, false, 0, true); exportCodeText.text = this.code; } } }//package
Section 255
//focusRectSkin (focusRectSkin) package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package
Section 256
//FullAnimation (FullAnimation) package { import flash.display.*; import flash.events.*; public dynamic class FullAnimation extends MovieClip { public var fargroundMc:MovieClip; public var immigrants:MovieClip; public var main:MovieClip; public function FullAnimation(){ addFrameScript(346, frame347, 351, frame352); } function frame347(){ MovieClip(root).dispatchEvent(new Event("showTruck")); } function frame352(){ stop(); } } }//package
Section 257
//GameOverMusic (GameOverMusic) package { import flash.media.*; public dynamic class GameOverMusic extends Sound { } }//package
Section 258
//GameplayBasicsButton (GameplayBasicsButton) package { import com.buttons.*; public dynamic class GameplayBasicsButton extends TextFieldButton { } }//package
Section 259
//GameplayMusicA (GameplayMusicA) package { import flash.media.*; public dynamic class GameplayMusicA extends Sound { } }//package
Section 260
//GameState (GameState) package { import flash.display.*; import flash.events.*; public class GameState extends MovieClip { private var _isPlaying:Boolean;// = false private var _navigationDictionary:Object; public function GameState():void{ _navigationDictionary = new Object(); super(); if (stage){ event_addedToStage(null); } else { this.addEventListener(Event.ADDED_TO_STAGE, event_addedToStage, false, 0, true); }; } override public function stop():void{ super.stop(); _isPlaying = false; } public function get isPlaying():Boolean{ return (_isPlaying); } private function event_addedToStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, event_addedToStage); DocumentClass(root).activeGameState = this; } public function update():void{ } public function initGameState():void{ } private function navigate(_arg1:Event):void{ var _local2:DisplayObject = (_arg1.currentTarget as DisplayObject); var _local3:Object = _navigationDictionary[_local2.name]; var _local4:MovieClip = _local3.target; var _local5:Object = _local3.destination; _navigationDictionary[_local2.name] = null; _local2.removeEventListener(MouseEvent.CLICK, navigate); _local4.gotoAndStop(_local5); } public function addNavigationObject(_arg1:DisplayObject, _arg2:MovieClip, _arg3:Object):void{ _navigationDictionary[_arg1.name] = {caller:_arg1, target:_arg2, destination:_arg3}; _arg1.addEventListener(MouseEvent.CLICK, navigate, false, 0, true); } override public function gotoAndStop(_arg1:Object, _arg2:String=null):void{ super.gotoAndStop(_arg1, _arg2); _isPlaying = false; } override public function gotoAndPlay(_arg1:Object, _arg2:String=null):void{ super.gotoAndPlay(_arg1, _arg2); _isPlaying = true; } override public function play():void{ super.play(); _isPlaying = true; } public function dispose():void{ _navigationDictionary = new Object(); } } }//package
Section 261
//GruntEffect (GruntEffect) package { import flash.media.*; public dynamic class GruntEffect extends Sound { } }//package
Section 262
//ImportMc (ImportMc) package { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import com.*; import flash.utils.*; import flash.net.*; import com.objects.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class ImportMc extends MovieClip { public var importCodeText:TextArea; public var cancelButton:Button; public var importButton:Button; public function ImportMc(){ addFrameScript(0, frame1); __setProp_cancelButton_ImportMc_Layer1_0(); __setProp_importButton_ImportMc_Layer1_0(); } function frame1(){ cancelButton.addEventListener("click", cancelImport, false, 0, true); importButton.addEventListener("click", executeImport, false, 0, true); } function __setProp_importButton_ImportMc_Layer1_0(){ try { importButton["componentInspectorSetting"] = true; } catch(e:Error) { }; importButton.emphasized = false; importButton.enabled = true; importButton.label = "Import"; importButton.labelPlacement = "right"; importButton.selected = false; importButton.toggle = false; importButton.visible = true; try { importButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function executeImport(_arg1){ TrackEditor(MovieClip(root).activeGameState).buildFromArray(importCodeText.text.split(",")); cancelButton.removeEventListener("click", cancelImport); importButton.removeEventListener("click", executeImport); parent.removeChild(this); } function __setProp_cancelButton_ImportMc_Layer1_0(){ try { cancelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; cancelButton.emphasized = false; cancelButton.enabled = true; cancelButton.label = "Cancel"; cancelButton.labelPlacement = "right"; cancelButton.selected = false; cancelButton.toggle = false; cancelButton.visible = true; try { cancelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function cancelImport(_arg1){ cancelButton.removeEventListener("click", cancelImport); importButton.removeEventListener("click", executeImport); parent.removeChild(this); } } }//package
Section 263
//IntroBeatWav (IntroBeatWav) package { import flash.media.*; public dynamic class IntroBeatWav extends Sound { } }//package
Section 264
//IntroLeafFlush (IntroLeafFlush) package { import flash.display.*; public dynamic class IntroLeafFlush extends MovieClip { public function IntroLeafFlush(){ addFrameScript(30, frame31); } function frame31(){ stop(); parent.removeChild(this); } } }//package
Section 265
//ItemsButton (ItemsButton) package { import com.buttons.*; public dynamic class ItemsButton extends TextFieldButton { } }//package
Section 266
//LevelCompleteMusic (LevelCompleteMusic) package { import flash.media.*; public dynamic class LevelCompleteMusic extends Sound { } }//package
Section 267
//List_skin (List_skin) package { import flash.display.*; public dynamic class List_skin extends MovieClip { } }//package
Section 268
//LoadCustomLevelMc (LoadCustomLevelMc) package { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import com.*; import flash.utils.*; import flash.net.*; import com.objects.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class LoadCustomLevelMc extends MovieClip { public var track3Button:Button; public var cancelButton:Button; public var track1Button:Button; public var track2Button:Button; public function LoadCustomLevelMc(){ addFrameScript(0, frame1); __setProp_cancelButton_LoadCustomLevelMc_Layer1_0(); __setProp_track1Button_LoadCustomLevelMc_Layer1_0(); __setProp_track2Button_LoadCustomLevelMc_Layer1_0(); __setProp_track3Button_LoadCustomLevelMc_Layer1_0(); } public function cancelLoad(_arg1){ cancelButton.removeEventListener("click", cancelLoad); track1Button.removeEventListener("click", executeLoad); track2Button.removeEventListener("click", executeLoad); track3Button.removeEventListener("click", executeLoad); parent.removeChild(this); } function frame1(){ if (!MovieClip(root).doesCustomTrackExist(1)){ track1Button.alpha = 0.3; track1Button.mouseEnabled = false; track1Button.textField.text = "No Save Data"; }; if (!MovieClip(root).doesCustomTrackExist(2)){ track2Button.alpha = 0.3; track2Button.mouseEnabled = false; track2Button.textField.text = "No Save Data"; }; if (!MovieClip(root).doesCustomTrackExist(3)){ track3Button.alpha = 0.3; track3Button.mouseEnabled = false; track3Button.textField.text = "No Save Data"; }; track1Button.validateNow(); track2Button.validateNow(); track3Button.validateNow(); cancelButton.addEventListener("click", cancelLoad, false, 0, true); track1Button.addEventListener("click", executeLoad, false, 0, true); track2Button.addEventListener("click", executeLoad, false, 0, true); track3Button.addEventListener("click", executeLoad, false, 0, true); } function __setProp_cancelButton_LoadCustomLevelMc_Layer1_0(){ try { cancelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; cancelButton.emphasized = false; cancelButton.enabled = true; cancelButton.label = "Cancel"; cancelButton.labelPlacement = "right"; cancelButton.selected = false; cancelButton.toggle = false; cancelButton.visible = true; try { cancelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_track3Button_LoadCustomLevelMc_Layer1_0(){ try { track3Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track3Button.emphasized = false; track3Button.enabled = true; track3Button.label = "Track 3"; track3Button.labelPlacement = "right"; track3Button.selected = false; track3Button.toggle = false; track3Button.visible = true; try { track3Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_track2Button_LoadCustomLevelMc_Layer1_0(){ try { track2Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track2Button.emphasized = false; track2Button.enabled = true; track2Button.label = "Track 2"; track2Button.labelPlacement = "right"; track2Button.selected = false; track2Button.toggle = false; track2Button.visible = true; try { track2Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_track1Button_LoadCustomLevelMc_Layer1_0(){ try { track1Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track1Button.emphasized = false; track1Button.enabled = true; track1Button.label = "Track 1"; track1Button.labelPlacement = "right"; track1Button.selected = false; track1Button.toggle = false; track1Button.visible = true; try { track1Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function executeLoad(_arg1){ var _local2:MovieClip = MovieClip(_arg1.currentTarget); var _local3:Number = new Number(_local2.name.charAt(5)); MovieClip(root).trackEditorSlot = _local3; MovieClip(root).event_loadCustomTrack(); cancelButton.removeEventListener("click", cancelLoad); track1Button.removeEventListener("click", executeLoad); track2Button.removeEventListener("click", executeLoad); track3Button.removeEventListener("click", executeLoad); parent.removeChild(this); } } }//package
Section 269
//MenuMusic (MenuMusic) package { import flash.media.*; public dynamic class MenuMusic extends Sound { } }//package
Section 270
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 271
//NumericStepperDownArrow_disabledSkin (NumericStepperDownArrow_disabledSkin) package { import flash.display.*; public dynamic class NumericStepperDownArrow_disabledSkin extends MovieClip { } }//package
Section 272
//NumericStepperDownArrow_downSkin (NumericStepperDownArrow_downSkin) package { import flash.display.*; public dynamic class NumericStepperDownArrow_downSkin extends MovieClip { } }//package
Section 273
//NumericStepperDownArrow_overSkin (NumericStepperDownArrow_overSkin) package { import flash.display.*; public dynamic class NumericStepperDownArrow_overSkin extends MovieClip { } }//package
Section 274
//NumericStepperDownArrow_upSkin (NumericStepperDownArrow_upSkin) package { import flash.display.*; public dynamic class NumericStepperDownArrow_upSkin extends MovieClip { } }//package
Section 275
//NumericStepperUpArrow_disabledSkin (NumericStepperUpArrow_disabledSkin) package { import flash.display.*; public dynamic class NumericStepperUpArrow_disabledSkin extends MovieClip { } }//package
Section 276
//NumericStepperUpArrow_downSkin (NumericStepperUpArrow_downSkin) package { import flash.display.*; public dynamic class NumericStepperUpArrow_downSkin extends MovieClip { } }//package
Section 277
//NumericStepperUpArrow_overSkin (NumericStepperUpArrow_overSkin) package { import flash.display.*; public dynamic class NumericStepperUpArrow_overSkin extends MovieClip { } }//package
Section 278
//NumericStepperUpArrow_upSkin (NumericStepperUpArrow_upSkin) package { import flash.display.*; public dynamic class NumericStepperUpArrow_upSkin extends MovieClip { } }//package
Section 279
//Object_Placeholder (Object_Placeholder) package { import flash.display.*; import com.objects.gameplay.shapes.*; public dynamic class Object_Placeholder extends MovieClip { public var leftWheel:MovieClip; public var helper:Box; public var coinMc:MovieClip; public function Object_Placeholder(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 280
//PickupEffect (PickupEffect) package { import flash.display.*; public dynamic class PickupEffect extends MovieClip { public function PickupEffect(){ addFrameScript(32, frame33); } function frame33(){ stop(); parent.removeChild(this); } } }//package
Section 281
//Sand (Sand) package { import flash.display.*; public dynamic class Sand extends BitmapData { public function Sand(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 282
//SaveCustomLevelMc (SaveCustomLevelMc) package { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import com.*; import flash.utils.*; import flash.net.*; import com.objects.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class SaveCustomLevelMc extends MovieClip { public var track2Button:Button; public var cancelButton:Button; public var track1Button:Button; public var track3Button:Button; public function SaveCustomLevelMc(){ addFrameScript(0, frame1); __setProp_cancelButton_SaveCustomLevelMc_Layer1_0(); __setProp_track1Button_SaveCustomLevelMc_Layer1_0(); __setProp_track2Button_SaveCustomLevelMc_Layer1_0(); __setProp_track3Button_SaveCustomLevelMc_Layer1_0(); } function frame1(){ cancelButton.addEventListener("click", cancelSave, false, 0, true); track1Button.addEventListener("click", executeSave, false, 0, true); track2Button.addEventListener("click", executeSave, false, 0, true); track3Button.addEventListener("click", executeSave, false, 0, true); } function __setProp_track2Button_SaveCustomLevelMc_Layer1_0(){ try { track2Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track2Button.emphasized = false; track2Button.enabled = true; track2Button.label = "Track 2"; track2Button.labelPlacement = "right"; track2Button.selected = false; track2Button.toggle = false; track2Button.visible = true; try { track2Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_track3Button_SaveCustomLevelMc_Layer1_0(){ try { track3Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track3Button.emphasized = false; track3Button.enabled = true; track3Button.label = "Track 3"; track3Button.labelPlacement = "right"; track3Button.selected = false; track3Button.toggle = false; track3Button.visible = true; try { track3Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_track1Button_SaveCustomLevelMc_Layer1_0(){ try { track1Button["componentInspectorSetting"] = true; } catch(e:Error) { }; track1Button.emphasized = false; track1Button.enabled = true; track1Button.label = "Track 1"; track1Button.labelPlacement = "right"; track1Button.selected = false; track1Button.toggle = false; track1Button.visible = true; try { track1Button["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function executeSave(_arg1){ var _local2:MovieClip = MovieClip(_arg1.currentTarget); var _local3:Number = new Number(_local2.name.charAt(5)); MovieClip(root).trackEditorSlot = _local3; MovieClip(root).event_saveCustomTrack(); cancelButton.removeEventListener("click", cancelSave); track1Button.removeEventListener("click", executeSave); track2Button.removeEventListener("click", executeSave); track3Button.removeEventListener("click", executeSave); parent.removeChild(this); } public function cancelSave(_arg1){ cancelButton.removeEventListener("click", cancelSave); track1Button.removeEventListener("click", executeSave); track2Button.removeEventListener("click", executeSave); track3Button.removeEventListener("click", executeSave); parent.removeChild(this); } function __setProp_cancelButton_SaveCustomLevelMc_Layer1_0(){ try { cancelButton["componentInspectorSetting"] = true; } catch(e:Error) { }; cancelButton.emphasized = false; cancelButton.enabled = true; cancelButton.label = "Cancel"; cancelButton.labelPlacement = "right"; cancelButton.selected = false; cancelButton.toggle = false; cancelButton.visible = true; try { cancelButton["componentInspectorSetting"] = false; } catch(e:Error) { }; } } }//package
Section 283
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_disabledSkin extends MovieClip { } }//package
Section 284
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_downSkin extends MovieClip { } }//package
Section 285
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_overSkin extends MovieClip { } }//package
Section 286
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_upSkin extends MovieClip { } }//package
Section 287
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_disabledSkin extends MovieClip { } }//package
Section 288
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_downSkin extends MovieClip { } }//package
Section 289
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_overSkin extends MovieClip { } }//package
Section 290
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_upSkin extends MovieClip { } }//package
Section 291
//ScrollBar_thumbIcon (ScrollBar_thumbIcon) package { import flash.display.*; public dynamic class ScrollBar_thumbIcon extends MovieClip { } }//package
Section 292
//ScrollThumb_downSkin (ScrollThumb_downSkin) package { import flash.display.*; public dynamic class ScrollThumb_downSkin extends MovieClip { } }//package
Section 293
//ScrollThumb_overSkin (ScrollThumb_overSkin) package { import flash.display.*; public dynamic class ScrollThumb_overSkin extends MovieClip { } }//package
Section 294
//ScrollThumb_upSkin (ScrollThumb_upSkin) package { import flash.display.*; public dynamic class ScrollThumb_upSkin extends MovieClip { } }//package
Section 295
//ScrollTrack_skin (ScrollTrack_skin) package { import flash.display.*; public dynamic class ScrollTrack_skin extends MovieClip { } }//package
Section 296
//SliderThumb_disabledSkin (SliderThumb_disabledSkin) package { import flash.display.*; public dynamic class SliderThumb_disabledSkin extends MovieClip { } }//package
Section 297
//SliderThumb_downSkin (SliderThumb_downSkin) package { import flash.display.*; public dynamic class SliderThumb_downSkin extends MovieClip { } }//package
Section 298
//SliderThumb_overSkin (SliderThumb_overSkin) package { import flash.display.*; public dynamic class SliderThumb_overSkin extends MovieClip { } }//package
Section 299
//SliderThumb_upSkin (SliderThumb_upSkin) package { import flash.display.*; public dynamic class SliderThumb_upSkin extends MovieClip { } }//package
Section 300
//SliderTick_skin (SliderTick_skin) package { import flash.display.*; public dynamic class SliderTick_skin extends MovieClip { } }//package
Section 301
//SliderTrack_disabledSkin (SliderTrack_disabledSkin) package { import flash.display.*; public dynamic class SliderTrack_disabledSkin extends MovieClip { } }//package
Section 302
//SliderTrack_skin (SliderTrack_skin) package { import flash.display.*; public dynamic class SliderTrack_skin extends MovieClip { } }//package
Section 303
//SmokeEffect (SmokeEffect) package { import flash.display.*; public dynamic class SmokeEffect extends MovieClip { public function SmokeEffect(){ addFrameScript(10, frame11); } function frame11(){ stop(); parent.removeChild(this); } } }//package
Section 304
//StartSign (StartSign) package { import flash.display.*; public dynamic class StartSign extends MovieClip { } }//package
Section 305
//TelephonePole (TelephonePole) package { import flash.display.*; import com.objects.gameplay.shapes.*; public dynamic class TelephonePole extends MovieClip { public var base:MovieClip; public var left:Circle; public var right:Circle; } }//package
Section 306
//TextArea_disabledSkin (TextArea_disabledSkin) package { import flash.display.*; public dynamic class TextArea_disabledSkin extends MovieClip { } }//package
Section 307
//TextArea_upSkin (TextArea_upSkin) package { import flash.display.*; public dynamic class TextArea_upSkin extends MovieClip { } }//package
Section 308
//TextInput_disabledSkin (TextInput_disabledSkin) package { import flash.display.*; public dynamic class TextInput_disabledSkin extends MovieClip { } }//package
Section 309
//TextInput_upSkin (TextInput_upSkin) package { import flash.display.*; public dynamic class TextInput_upSkin extends MovieClip { } }//package
Section 310
//TrackEditorMusic (TrackEditorMusic) package { import flash.media.*; public dynamic class TrackEditorMusic extends Sound { } }//package
Section 311
//TrackObstaclesButton (TrackObstaclesButton) package { import com.buttons.*; public dynamic class TrackObstaclesButton extends TextFieldButton { } }//package
Section 312
//Truck_Placeholder (Truck_Placeholder) package { import flash.display.*; public dynamic class Truck_Placeholder extends MovieClip { public var immigrants:MovieClip; public var main:MovieClip; public function Truck_Placeholder(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 313
//TruckLandEffect (TruckLandEffect) package { import flash.media.*; public dynamic class TruckLandEffect extends Sound { } }//package
Section 314
//TruckSpawner (TruckSpawner) package { import flash.display.*; import flash.events.*; import flash.media.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.net.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class TruckSpawner extends MovieClip { public function TruckSpawner(){ addFrameScript(0, frame1); } function frame1(){ stop(); MovieClip(root).spawnPoint = this.localToGlobal(new Point(0, 0)); MovieClip(root).dispatchEvent(new Event("spawnTruck")); parent.removeChild(this); } } }//package

Library Items

Symbol 1 Sound {TruckLandEffect}
Symbol 2 Sound {LevelCompleteMusic}
Symbol 3 Sound {TrackEditorMusic}
Symbol 4 Sound {GameplayMusicA}
Symbol 5 Sound {MenuMusic}
Symbol 6 Sound {IntroBeatWav}
Symbol 7 Sound {GruntEffect}
Symbol 8 Sound {GameOverMusic}
Symbol 9 Sound {EngineRevEffect}
Symbol 10 Sound {EngineEffect}
Symbol 11 Sound {CoinCollect}
Symbol 12 Sound {CarHornEffect}
Symbol 13 Sound {ButtonOverEffect}
Symbol 14 Sound {BushEffectB}
Symbol 15 Sound {BushEffectA}
Symbol 16 Sound {BrakeEffect}
Symbol 17 Bitmap {Sand}
Symbol 18 Bitmap {Dirt}Used by:177
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:19Used by:45 46 68 258 302 303 384 393 426 441
Symbol 21 MovieClip {fl.core.ComponentShim}Used by:45 46 68 258 302 303 382 383 384 393 426 441
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClip {focusRectSkin}Uses:22Used by:45 46 258 302 303 383 384 393 426 441
Symbol 24 GraphicUsed by:26
Symbol 25 GraphicUsed by:26 28 30 32 34 36 38 40 278 281 285 295
Symbol 26 MovieClip {NumericStepperDownArrow_disabledSkin}Uses:24 25Used by:46
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClip {NumericStepperDownArrow_downSkin}Uses:27 25Used by:46
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClip {NumericStepperDownArrow_overSkin}Uses:29 25Used by:46
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClip {NumericStepperDownArrow_upSkin}Uses:31 25Used by:46
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClip {NumericStepperUpArrow_disabledSkin}Uses:33 25Used by:46
Symbol 35 GraphicUsed by:36
Symbol 36 MovieClip {NumericStepperUpArrow_downSkin}Uses:35 25Used by:46
Symbol 37 GraphicUsed by:38
Symbol 38 MovieClip {NumericStepperUpArrow_overSkin}Uses:37 25Used by:46
Symbol 39 GraphicUsed by:40
Symbol 40 MovieClip {NumericStepperUpArrow_upSkin}Uses:39 25Used by:46
Symbol 41 GraphicUsed by:42 273
Symbol 42 MovieClip {TextInput_disabledSkin}Uses:41Used by:45
Symbol 43 GraphicUsed by:44 274
Symbol 44 MovieClip {TextInput_upSkin}Uses:43Used by:45
Symbol 45 MovieClip {fl.controls.TextInput}Uses:20 21 42 44 23Used by:46
Symbol 46 MovieClip {fl.controls.NumericStepper}Uses:20 21 23 26 28 30 32 34 36 38 40 45
Symbol 47 GraphicUsed by:48
Symbol 48 MovieClip {ColorPicker_upSkin}Uses:47Used by:68
Symbol 49 GraphicUsed by:50
Symbol 50 MovieClip {ColorPicker_disabledSkin}Uses:49Used by:68
Symbol 51 GraphicUsed by:52
Symbol 52 MovieClip {ColorPicker_swatchSkin}Uses:51Used by:68
Symbol 53 GraphicUsed by:54
Symbol 54 MovieClipUses:53Used by:57 68
Symbol 55 GraphicUsed by:56
Symbol 56 MovieClipUses:55Used by:57 68
Symbol 57 MovieClip {ColorPicker_backgroundSkin}Uses:54 56Used by:68
Symbol 58 GraphicUsed by:59
Symbol 59 MovieClip {ColorPicker_downSkin}Uses:58Used by:68
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClip {ColorPicker_textFieldSkin}Uses:60Used by:68
Symbol 62 GraphicUsed by:63
Symbol 63 MovieClip {ColorPicker_overSkin}Uses:62Used by:68
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClip {ColorPicker_colorWell}Uses:64Used by:68
Symbol 66 GraphicUsed by:67
Symbol 67 MovieClip {ColorPicker_swatchSelectedSkin}Uses:66Used by:68
Symbol 68 MovieClip {fl.controls.ColorPicker}Uses:20 21 48 50 52 57 59 61 63 65 67 56 54
Symbol 69 GraphicUsed by:77 517
Symbol 70 GraphicUsed by:77
Symbol 71 GraphicUsed by:77
Symbol 72 GraphicUsed by:77
Symbol 73 GraphicUsed by:77
Symbol 74 GraphicUsed by:77
Symbol 75 GraphicUsed by:77
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClip {BorderServices_Fixed_fla.TruckBase_23}Uses:69 70 71 72 73 74 75 76Used by:81 89 208 236 466 490
Symbol 78 GraphicUsed by:81 208
Symbol 79 GraphicUsed by:81 208 236 490
Symbol 80 GraphicUsed by:81 90 138 165 167 236 466 490 517
Symbol 81 MovieClip {TruckSpawner}Uses:77 78 79 80
Symbol 82 GraphicUsed by:85 104 236 490 517
Symbol 83 GraphicUsed by:85 104 236 490 517
Symbol 84 GraphicUsed by:85
Symbol 85 MovieClip {BorderServices_Fixed_fla.ImmigrantHead_26}Uses:82 83 84Used by:87 236 490
Symbol 86 GraphicUsed by:87 104 196 236 490 517
Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31}Uses:85 86Used by:89 236 466 490
Symbol 88 GraphicUsed by:89 236 466 490 517
Symbol 89 MovieClip {BorderServices_Fixed_fla.TruckBase_32}Uses:77 87 88Used by:95 236 490
Symbol 90 MovieClipUses:80Used by:95 138 168
Symbol 91 GraphicUsed by:92 136
Symbol 92 MovieClip {com.objects.gameplay.shapes.Circle}Uses:91Used by:95 165 317
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}Uses:93Used by:95 138 165 331 332 333 334 336
Symbol 95 MovieClip {com.objects.gameplay.Truck}Uses:89 90 92 94
Symbol 96 GraphicUsed by:100
Symbol 97 FontUsed by:98
Symbol 98 TextUses:97Used by:100
Symbol 99 GraphicUsed by:100
Symbol 100 MovieClipUses:96 98 99Used by:101 138
Symbol 101 MovieClip {Coin}Uses:100
Symbol 102 GraphicUsed by:104
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:102 82 83 103 86Used by:105
Symbol 105 MovieClip {com.objects.gameplay.special.Immigrant}Uses:104
Symbol 106 GraphicUsed by:138
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClipUses:107Used by:138
Symbol 109 GraphicUsed by:138 165
Symbol 110 FontUsed by:111 112 113 217 221 223 225 226 238 239 265 501 502 503 504 505 506 542
Symbol 111 TextUses:110Used by:138 165
Symbol 112 TextUses:110Used by:138 165
Symbol 113 TextUses:110Used by:138 165
Symbol 114 GraphicUsed by:138 165
Symbol 115 GraphicUsed by:120
Symbol 116 GraphicUsed by:120
Symbol 117 GraphicUsed by:120
Symbol 118 GraphicUsed by:120
Symbol 119 GraphicUsed by:120
Symbol 120 MovieClipUses:115 116 117 118 119Used by:138 151
Symbol 121 GraphicUsed by:138 324
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClipUses:122Used by:138 332
Symbol 124 GraphicUsed by:138 333
Symbol 125 GraphicUsed by:138 333
Symbol 126 GraphicUsed by:138 334
Symbol 127 GraphicUsed by:138 335
Symbol 128 FontUsed by:129 130 139 146 157 159 216 218 309 310 312 313 320 339 340 342 343 354 355 357 358 402 403 405 406 408 409 442 443 448 449 451 452 454 455 457 458 460 461 463 464 551 552
Symbol 129 TextUses:128Used by:138 335
Symbol 130 TextUses:128Used by:138 335
Symbol 131 GraphicUsed by:136
Symbol 132 GraphicUsed by:133
Symbol 133 MovieClipUses:132Used by:136
Symbol 134 GraphicUsed by:135
Symbol 135 MovieClipUses:134Used by:136
Symbol 136 MovieClipUses:91 131 133 135Used by:138 155
Symbol 137 GraphicUsed by:138 336
Symbol 138 MovieClip {Object_Placeholder}Uses:106 108 100 109 111 112 113 114 80 120 121 123 94 124 125 126 127 129 130 136 90 137
Symbol 139 EditableTextUses:128Used by:140
Symbol 140 MovieClip {BorderServices_Fixed_fla.CoinTextBase_184}Uses:139Used by:141
Symbol 141 MovieClip {CoinText}Uses:140
Symbol 142 GraphicUsed by:150 327 331
Symbol 143 GraphicUsed by:150 327
Symbol 144 GraphicUsed by:150 327 331
Symbol 145 GraphicUsed by:150
Symbol 146 TextUses:128Used by:150
Symbol 147 FontUsed by:148 321
Symbol 148 TextUses:147Used by:150
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClip {StartSign}Uses:142 143 144 145 146 148 149
Symbol 151 MovieClip {com.objects.gameplay.special.Boost}Uses:120
Symbol 152 GraphicUsed by:153
Symbol 153 MovieClip {DustEffect}Uses:152
Symbol 154 GraphicUsed by:155
Symbol 155 MovieClip {com.objects.gameplay.special.Bandit}Uses:136 154
Symbol 156 GraphicUsed by:164
Symbol 157 TextUses:128Used by:158
Symbol 158 MovieClipUses:157Used by:164
Symbol 159 TextUses:128Used by:160
Symbol 160 MovieClipUses:159Used by:164
Symbol 161 GraphicUsed by:162 164
Symbol 162 MovieClipUses:161Used by:164
Symbol 163 GraphicUsed by:164
Symbol 164 MovieClip {PickupEffect}Uses:156 158 160 162 161 163
Symbol 165 MovieClip {com.objects.gameplay.special.cars.PoliceCar}Uses:109 111 112 113 114 80 92 94
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClip {com.objects.gameplay.special.cars.NormalCar}Uses:166 80
Symbol 168 MovieClip {com.objects.gameplay.special.Wheel}Uses:90
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClipUses:169Used by:171 172 198
Symbol 171 MovieClipUses:170Used by:172
Symbol 172 MovieClip {IntroLeafFlush}Uses:170 171
Symbol 173 GraphicUsed by:236 348 490
Symbol 174 GraphicUsed by:175
Symbol 175 MovieClipUses:174Used by:236 363 401 490
Symbol 176 GraphicUsed by:236 490
Symbol 177 GraphicUses:18Used by:236 490
Symbol 178 GraphicUsed by:236 490
Symbol 179 GraphicUsed by:236 490
Symbol 180 BitmapUsed by:181 210
Symbol 181 GraphicUses:180Used by:182
Symbol 182 MovieClipUses:181Used by:236 490
Symbol 183 GraphicUsed by:236 490
Symbol 184 FontUsed by:185 186 496
Symbol 185 TextUses:184Used by:236 490
Symbol 186 TextUses:184Used by:236 490
Symbol 187 GraphicUsed by:236 490
Symbol 188 GraphicUsed by:236 490
Symbol 189 GraphicUsed by:236 490
Symbol 190 GraphicUsed by:236 490
Symbol 191 GraphicUsed by:236 490
Symbol 192 GraphicUsed by:236 327 331 490
Symbol 193 GraphicUsed by:236 490
Symbol 194 GraphicUsed by:236 490
Symbol 195 GraphicUsed by:196
Symbol 196 MovieClipUses:195 86Used by:236 490
Symbol 197 GraphicUsed by:236 490
Symbol 198 MovieClip {BorderServices_Fixed_fla.IntroLeafFlushSpawner_24}Uses:170Used by:236 490
Symbol 199 GraphicUsed by:236 490
Symbol 200 GraphicUsed by:201
Symbol 201 MovieClipUses:200Used by:236 490
Symbol 202 GraphicUsed by:236 323 350 484 490
Symbol 203 GraphicUsed by:236 490
Symbol 204 GraphicUsed by:205
Symbol 205 MovieClipUses:204Used by:236 490
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClipUses:206Used by:236 490
Symbol 208 MovieClip {BorderServices_Fixed_fla.TruckBase_30}Uses:77 78 79Used by:236 490
Symbol 209 GraphicUsed by:228
Symbol 210 GraphicUses:180Used by:211
Symbol 211 MovieClipUses:210Used by:228
Symbol 212 GraphicUsed by:214
Symbol 213 GraphicUsed by:214
Symbol 214 MovieClipUses:212 213Used by:228
Symbol 215 GraphicUsed by:228
Symbol 216 TextUses:128Used by:219
Symbol 217 TextUses:110Used by:219
Symbol 218 TextUses:128Used by:219
Symbol 219 Button {com.buttons.PlayMoreGames}Uses:216 217 218Used by:228
Symbol 220 GraphicUsed by:224 227
Symbol 221 TextUses:110Used by:224
Symbol 222 GraphicUsed by:224 227
Symbol 223 TextUses:110Used by:224
Symbol 224 Button {com.buttons.QualityButton}Uses:220 221 222 223Used by:228
Symbol 225 TextUses:110Used by:227
Symbol 226 TextUses:110Used by:227
Symbol 227 Button {com.buttons.SoundButton}Uses:220 225 222 226Used by:228
Symbol 228 MovieClipUses:209 211 214 215 219 224 227Used by:230 353 396
Symbol 229 GraphicUsed by:230
Symbol 230 MovieClipUses:228 229Used by:236 264 269 304 308 490  Timeline
Symbol 231 GraphicUsed by:232
Symbol 232 MovieClipUses:231Used by:236 490  Timeline
Symbol 233 GraphicUsed by:234
Symbol 234 MovieClipUses:233Used by:235
Symbol 235 MovieClipUses:234Used by:236 490  Timeline
Symbol 236 MovieClip {FullAnimation}Uses:173 175 176 177 178 179 182 183 185 186 187 188 189 190 191 192 193 194 196 77 197 80 198 82 83 86 199 85 201 79 202 203 205 207 208 87 88 230 89 232 235
Symbol 237 GraphicUsed by:264 269 304 308
Symbol 238 TextUses:110Used by:264 269 304 308
Symbol 239 TextUses:110Used by:264
Symbol 240 GraphicUsed by:241
Symbol 241 MovieClip {Button_disabledSkin}Uses:240Used by:258
Symbol 242 GraphicUsed by:243
Symbol 243 MovieClip {Button_downSkin}Uses:242Used by:258
Symbol 244 GraphicUsed by:245
Symbol 245 MovieClip {Button_emphasizedSkin}Uses:244Used by:258
Symbol 246 GraphicUsed by:247
Symbol 247 MovieClip {Button_overSkin}Uses:246Used by:258
Symbol 248 GraphicUsed by:249
Symbol 249 MovieClip {Button_selectedDisabledSkin}Uses:248Used by:258
Symbol 250 GraphicUsed by:251
Symbol 251 MovieClip {Button_selectedDownSkin}Uses:250Used by:258
Symbol 252 GraphicUsed by:253
Symbol 253 MovieClip {Button_selectedOverSkin}Uses:252Used by:258
Symbol 254 GraphicUsed by:255
Symbol 255 MovieClip {Button_selectedUpSkin}Uses:254Used by:258
Symbol 256 GraphicUsed by:257
Symbol 257 MovieClip {Button_upSkin}Uses:256Used by:258
Symbol 258 MovieClip {fl.controls.Button}Uses:20 21 241 243 245 247 249 251 253 255 257 23Used by:264 269 304 308 401  Timeline
Symbol 259 FontUsed by:260 261 266 270 305 398 399 400 542
Symbol 260 TextUses:259Used by:264
Symbol 261 TextUses:259Used by:264 269
Symbol 262 GraphicUsed by:263
Symbol 263 MovieClipUses:262Used by:264
Symbol 264 MovieClip {LoadCustomLevelMc}Uses:237 230 238 239 258 260 261 263
Symbol 265 TextUses:110Used by:269
Symbol 266 TextUses:259Used by:269
Symbol 267 GraphicUsed by:268
Symbol 268 MovieClipUses:267Used by:269
Symbol 269 MovieClip {SaveCustomLevelMc}Uses:237 230 238 265 258 266 261 268
Symbol 270 TextUses:259Used by:304
Symbol 271 GraphicUsed by:272
Symbol 272 MovieClipUses:271Used by:304
Symbol 273 MovieClip {TextArea_disabledSkin}Uses:41Used by:303
Symbol 274 MovieClip {TextArea_upSkin}Uses:43Used by:303
Symbol 275 GraphicUsed by:276
Symbol 276 MovieClip {ScrollTrack_skin}Uses:275Used by:302 383
Symbol 277 GraphicUsed by:279
Symbol 278 MovieClipUses:25Used by:279 289 291
Symbol 279 MovieClip {ScrollArrowUp_downSkin}Uses:277 278Used by:302 383
Symbol 280 GraphicUsed by:281
Symbol 281 MovieClip {ScrollArrowDown_downSkin}Uses:280 25Used by:302 383
Symbol 282 GraphicUsed by:283
Symbol 283 MovieClip {ScrollThumb_downSkin}Uses:282Used by:302 383
Symbol 284 GraphicUsed by:285
Symbol 285 MovieClip {ScrollArrowDown_overSkin}Uses:284 25Used by:302 383
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClip {ScrollThumb_overSkin}Uses:286Used by:302 383
Symbol 288 GraphicUsed by:289
Symbol 289 MovieClip {ScrollArrowUp_overSkin}Uses:288 278Used by:302 383
Symbol 290 GraphicUsed by:291
Symbol 291 MovieClip {ScrollArrowUp_upSkin}Uses:290 278Used by:302 383
Symbol 292 GraphicUsed by:293
Symbol 293 MovieClip {ScrollThumb_upSkin}Uses:292Used by:302 383
Symbol 294 GraphicUsed by:295
Symbol 295 MovieClip {ScrollArrowDown_upSkin}Uses:294 25Used by:302 383
Symbol 296 GraphicUsed by:297
Symbol 297 MovieClip {ScrollArrowDown_disabledSkin}Uses:296Used by:302 383
Symbol 298 GraphicUsed by:299
Symbol 299 MovieClip {ScrollArrowUp_disabledSkin}Uses:298Used by:302 383
Symbol 300 GraphicUsed by:301
Symbol 301 MovieClip {ScrollBar_thumbIcon}Uses:300Used by:302 383
Symbol 302 MovieClip {fl.controls.UIScrollBar}Uses:20 21 23 276 279 281 283 285 287 289 291 293 295 297 299 301Used by:303
Symbol 303 MovieClip {fl.controls.TextArea}Uses:20 21 273 274 23 302Used by:304 308
Symbol 304 MovieClip {ImportMc}Uses:237 230 238 270 272 303 258
Symbol 305 TextUses:259Used by:308
Symbol 306 GraphicUsed by:307
Symbol 307 MovieClipUses:306Used by:308
Symbol 308 MovieClip {ExportMc}Uses:237 230 303 258 238 305 307
Symbol 309 TextUses:128Used by:311
Symbol 310 TextUses:128Used by:311
Symbol 311 Button {ItemsButton}Uses:309 310
Symbol 312 TextUses:128Used by:314
Symbol 313 TextUses:128Used by:314
Symbol 314 Button {TrackObstaclesButton}Uses:312 313
Symbol 315 GraphicUsed by:316
Symbol 316 MovieClipUses:315Used by:317
Symbol 317 MovieClip {TelephonePole}Uses:92 316
Symbol 318 GraphicUsed by:323
Symbol 319 GraphicUsed by:323
Symbol 320 TextUses:128Used by:323
Symbol 321 TextUses:147Used by:323
Symbol 322 GraphicUsed by:323
Symbol 323 MovieClip {com.micc.GarageAnimation}Uses:202 318 319 320 321 322
Symbol 324 MovieClip {com.objects.gameplay.special.Crate}Uses:121Used by:331
Symbol 325 GraphicUsed by:327
Symbol 326 GraphicUsed by:327
Symbol 327 MovieClip {Cabin}Uses:142 325 192 143 144 326Used by:331
Symbol 328 GraphicUsed by:331
Symbol 329 GraphicUsed by:331
Symbol 330 GraphicUsed by:331
Symbol 331 MovieClip {com.objects.gameplay.FinishLine}Uses:327 94 328 142 192 329 324 144 330
Symbol 332 MovieClip {com.objects.gameplay.special.BrokenBridge}Uses:123 94
Symbol 333 MovieClip {com.objects.gameplay.special.CrashedPlane}Uses:94 124 125
Symbol 334 MovieClip {com.objects.gameplay.special.LookoutPostB}Uses:126 94
Symbol 335 MovieClip {com.objects.gameplay.special.LookoutPostA}Uses:127 129 130
Symbol 336 MovieClip {com.objects.gameplay.special.Plank}Uses:94 137
Symbol 337 GraphicUsed by:338
Symbol 338 MovieClip {SmokeEffect}Uses:337
Symbol 339 TextUses:128Used by:341
Symbol 340 TextUses:128Used by:341
Symbol 341 Button {com.buttons.BackToLevelSelect}Uses:339 340Used by:Timeline
Symbol 342 TextUses:128Used by:344
Symbol 343 TextUses:128Used by:344
Symbol 344 Button {com.buttons.TryAgainButton}Uses:342 343Used by:Timeline
Symbol 345 GraphicUsed by:363
Symbol 346 GraphicUsed by:348
Symbol 347 GraphicUsed by:348
Symbol 348 MovieClip {BorderServices_Fixed_fla.Level_Background_91}Uses:346 347 173Used by:363 401
Symbol 349 GraphicUsed by:350 484
Symbol 350 MovieClip {BorderServices_Fixed_fla.White_92}Uses:349 202Used by:363 401
Symbol 351 GraphicUsed by:353 396
Symbol 352 GraphicUsed by:353
Symbol 353 MovieClipUses:351 228 352Used by:363
Symbol 354 TextUses:128Used by:356
Symbol 355 TextUses:128Used by:356
Symbol 356 ButtonUses:354 355Used by:363
Symbol 357 TextUses:128Used by:359
Symbol 358 TextUses:128Used by:359
Symbol 359 ButtonUses:357 358Used by:363
Symbol 360 FontUsed by:361 362 498 509 528 529 530 533 535 546 554 555 556 557 558
Symbol 361 EditableTextUses:360 497Used by:363
Symbol 362 EditableTextUses:360 497Used by:363
Symbol 363 MovieClip {com.states.Gameplay}Uses:345 348 175 350 353 356 359 361 362Used by:Timeline
Symbol 364 GraphicUsed by:365
Symbol 365 MovieClip {List_skin}Uses:364Used by:384
Symbol 366 GraphicUsed by:367
Symbol 367 MovieClip {CellRenderer_upSkin}Uses:366Used by:382
Symbol 368 GraphicUsed by:369
Symbol 369 MovieClip {CellRenderer_disabledSkin}Uses:368Used by:382
Symbol 370 GraphicUsed by:371
Symbol 371 MovieClip {CellRenderer_downSkin}Uses:370Used by:382
Symbol 372 GraphicUsed by:373
Symbol 373 MovieClip {CellRenderer_overSkin}Uses:372Used by:382
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClip {CellRenderer_selectedDisabledSkin}Uses:374Used by:382
Symbol 376 GraphicUsed by:377
Symbol 377 MovieClip {CellRenderer_selectedDownSkin}Uses:376Used by:382
Symbol 378 GraphicUsed by:379
Symbol 379 MovieClip {CellRenderer_selectedOverSkin}Uses:378Used by:382
Symbol 380 GraphicUsed by:381
Symbol 381 MovieClip {CellRenderer_selectedUpSkin}Uses:380Used by:382
Symbol 382 MovieClip {fl.controls.listClasses.CellRenderer}Uses:367 21 369 371 373 375 377 379 381Used by:384
Symbol 383 MovieClip {fl.controls.ScrollBar}Uses:276 21 23 279 281 283 285 287 289 291 293 295 297 299 301Used by:384
Symbol 384 MovieClip {fl.controls.List}Uses:20 21 365 382 23 383Used by:393
Symbol 385 GraphicUsed by:386
Symbol 386 MovieClip {ComboBox_upSkin}Uses:385Used by:393
Symbol 387 GraphicUsed by:388
Symbol 388 MovieClip {ComboBox_disabledSkin}Uses:387Used by:393
Symbol 389 GraphicUsed by:390
Symbol 390 MovieClip {ComboBox_overSkin}Uses:389Used by:393
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClip {ComboBox_downSkin}Uses:391Used by:393
Symbol 393 MovieClip {fl.controls.ComboBox}Uses:20 21 23 386 388 390 392 384Used by:401
Symbol 394 GraphicUsed by:395
Symbol 395 MovieClip {BorderServices_Fixed_fla.Level_Midground_90}Uses:394Used by:401
Symbol 396 MovieClipUses:351 228Used by:401
Symbol 397 GraphicUsed by:401
Symbol 398 TextUses:259Used by:401
Symbol 399 TextUses:259Used by:401
Symbol 400 EditableTextUses:259Used by:401
Symbol 401 MovieClip {com.objects.TrackEditor}Uses:395 348 175 350 396 397 393 398 399 400 258Used by:Timeline
Symbol 402 TextUses:128Used by:404
Symbol 403 TextUses:128Used by:404
Symbol 404 Button {com.buttons.BackToHowToPlay}Uses:402 403Used by:Timeline
Symbol 405 TextUses:128Used by:407
Symbol 406 TextUses:128Used by:407
Symbol 407 Button {ControlsButton}Uses:405 406Used by:Timeline
Symbol 408 TextUses:128Used by:410
Symbol 409 TextUses:128Used by:410
Symbol 410 Button {GameplayBasicsButton}Uses:408 409Used by:Timeline
Symbol 411 GraphicUsed by:412 421
Symbol 412 MovieClip {CheckBox_upIcon}Uses:411Used by:426
Symbol 413 GraphicUsed by:414 422
Symbol 414 MovieClip {CheckBox_overIcon}Uses:413Used by:426
Symbol 415 GraphicUsed by:416 423
Symbol 416 MovieClip {CheckBox_downIcon}Uses:415Used by:426
Symbol 417 GraphicUsed by:418
Symbol 418 MovieClip {CheckBox_disabledIcon}Uses:417Used by:426
Symbol 419 GraphicUsed by:420
Symbol 420 MovieClipUses:419Used by:421 422 423 425
Symbol 421 MovieClip {CheckBox_selectedUpIcon}Uses:411 420Used by:426
Symbol 422 MovieClip {CheckBox_selectedOverIcon}Uses:413 420Used by:426
Symbol 423 MovieClip {CheckBox_selectedDownIcon}Uses:415 420Used by:426
Symbol 424 GraphicUsed by:425
Symbol 425 MovieClip {CheckBox_selectedDisabledIcon}Uses:424 420Used by:426
Symbol 426 MovieClip {fl.controls.CheckBox}Uses:20 21 412 414 416 418 421 422 423 425 23Used by:Timeline
Symbol 427 GraphicUsed by:428
Symbol 428 MovieClip {SliderThumb_upSkin}Uses:427Used by:441
Symbol 429 GraphicUsed by:430
Symbol 430 MovieClip {SliderThumb_overSkin}Uses:429Used by:441
Symbol 431 GraphicUsed by:432
Symbol 432 MovieClip {SliderThumb_downSkin}Uses:431Used by:441
Symbol 433 GraphicUsed by:434
Symbol 434 MovieClip {SliderThumb_disabledSkin}Uses:433Used by:441
Symbol 435 GraphicUsed by:436
Symbol 436 MovieClip {SliderTrack_skin}Uses:435Used by:441
Symbol 437 GraphicUsed by:438
Symbol 438 MovieClip {SliderTick_skin}Uses:437Used by:441
Symbol 439 GraphicUsed by:440
Symbol 440 MovieClip {SliderTrack_disabledSkin}Uses:439Used by:441
Symbol 441 MovieClip {fl.controls.Slider}Uses:20 21 428 430 432 434 436 438 440 23Used by:Timeline
Symbol 442 TextUses:128Used by:444
Symbol 443 TextUses:128Used by:444
Symbol 444 Button {com.buttons.BackToMainMenu}Uses:442 443Used by:Timeline
Symbol 445 GraphicUsed by:447
Symbol 446 GraphicUsed by:447
Symbol 447 Button {com.buttons.LevelSelect}Uses:445 446Used by:Timeline
Symbol 448 TextUses:128Used by:450
Symbol 449 TextUses:128Used by:450
Symbol 450 Button {com.buttons.HowToPlay}Uses:448 449Used by:Timeline
Symbol 451 TextUses:128Used by:453
Symbol 452 TextUses:128Used by:453
Symbol 453 Button {com.buttons.GameOptions}Uses:451 452Used by:Timeline
Symbol 454 TextUses:128Used by:456
Symbol 455 TextUses:128Used by:456
Symbol 456 Button {com.buttons.TrackEditor}Uses:454 455Used by:Timeline
Symbol 457 TextUses:128Used by:459
Symbol 458 TextUses:128Used by:459
Symbol 459 Button {com.buttons.MusicCredits}Uses:457 458Used by:Timeline
Symbol 460 TextUses:128Used by:462
Symbol 461 TextUses:128Used by:462
Symbol 462 Button {com.buttons.FreeGamesForYourSite}Uses:460 461Used by:Timeline
Symbol 463 TextUses:128Used by:465
Symbol 464 TextUses:128Used by:465
Symbol 465 Button {com.buttons.PlayGame}Uses:463 464Used by:Timeline
Symbol 466 MovieClip {Truck_Placeholder}Uses:77 87 88 80Used by:517  Timeline
Symbol 467 GraphicUsed by:Timeline
Symbol 468 GraphicUsed by:473
Symbol 469 GraphicUsed by:470
Symbol 470 MovieClipUses:469Used by:473
Symbol 471 GraphicUsed by:472
Symbol 472 MovieClipUses:471Used by:473
Symbol 473 MovieClip {BorderServices_Fixed_fla.i6LOADER_2}Uses:468 470 472Used by:481
Symbol 474 GraphicUsed by:481 482
Symbol 475 GraphicUsed by:476
Symbol 476 MovieClipUses:475Used by:481 482
Symbol 477 GraphicUsed by:478
Symbol 478 MovieClipUses:477Used by:481 482
Symbol 479 GraphicUsed by:480
Symbol 480 MovieClipUses:479Used by:481 482
Symbol 481 MovieClipUses:473 474 476 478 480Used by:Timeline
Symbol 482 MovieClipUses:474 476 478 480Used by:Timeline
Symbol 483 GraphicUsed by:484
Symbol 484 ButtonUses:349 483 202Used by:Timeline
Symbol 485 GraphicUsed by:486 488
Symbol 486 MovieClipUses:485Used by:488
Symbol 487 GraphicUsed by:488
Symbol 488 ButtonUses:486 487 485Used by:Timeline
Symbol 489 GraphicUsed by:Timeline
Symbol 490 MovieClip {BorderServices_Fixed_fla.FullAnimation_19}Uses:173 175 176 177 178 179 182 183 185 186 187 188 189 190 191 192 193 194 196 77 197 80 202 198 82 83 86 199 85 201 79 203 205 207 208 87 88 230 89 232 235Used by:Timeline
Symbol 491 GraphicUsed by:492
Symbol 492 MovieClipUses:491Used by:494
Symbol 493 GraphicUsed by:494
Symbol 494 ButtonUses:492 493Used by:Timeline
Symbol 495 GraphicUsed by:Timeline
Symbol 496 TextUses:184Used by:Timeline
Symbol 497 FontUsed by:361 362 498 509 554 555 556 557
Symbol 498 EditableTextUses:360 497Used by:Timeline
Symbol 499 GraphicUsed by:500
Symbol 500 MovieClipUses:499Used by:Timeline
Symbol 501 TextUses:110Used by:Timeline
Symbol 502 TextUses:110Used by:Timeline
Symbol 503 TextUses:110Used by:Timeline
Symbol 504 TextUses:110Used by:Timeline
Symbol 505 TextUses:110Used by:Timeline
Symbol 506 TextUses:110Used by:Timeline
Symbol 507 FontUsed by:508 525 526 527 543 547 550
Symbol 508 TextUses:507Used by:Timeline
Symbol 509 EditableTextUses:360 497Used by:Timeline
Symbol 510 GraphicUsed by:511
Symbol 511 MovieClipUses:510Used by:Timeline
Symbol 512 GraphicUsed by:513
Symbol 513 MovieClipUses:512Used by:Timeline
Symbol 514 GraphicUsed by:515 517
Symbol 515 MovieClipUses:514Used by:516
Symbol 516 MovieClipUses:515Used by:517
Symbol 517 ButtonUses:466 516 69 82 83 86 88 80 514Used by:Timeline
Symbol 518 GraphicUsed by:519
Symbol 519 MovieClipUses:518Used by:Timeline
Symbol 520 FontUsed by:521 522 537
Symbol 521 TextUses:520Used by:Timeline
Symbol 522 TextUses:520Used by:Timeline
Symbol 523 GraphicUsed by:524
Symbol 524 MovieClipUses:523Used by:Timeline
Symbol 525 TextUses:507Used by:Timeline
Symbol 526 TextUses:507Used by:Timeline
Symbol 527 TextUses:507Used by:Timeline
Symbol 528 TextUses:360Used by:Timeline
Symbol 529 TextUses:360Used by:Timeline
Symbol 530 TextUses:360Used by:Timeline
Symbol 531 GraphicUsed by:532
Symbol 532 MovieClipUses:531Used by:Timeline
Symbol 533 TextUses:360Used by:Timeline
Symbol 534 GraphicUsed by:540
Symbol 535 TextUses:360Used by:540
Symbol 536 FontUsed by:537 559
Symbol 537 TextUses:520 536Used by:540
Symbol 538 FontUsed by:539
Symbol 539 TextUses:538Used by:540
Symbol 540 MovieClip {BorderServices_Fixed_fla.EditorInstructionsMc_125}Uses:534 535 537 539Used by:Timeline
Symbol 541 GraphicUsed by:Timeline
Symbol 542 TextUses:259 110Used by:Timeline
Symbol 543 TextUses:507Used by:Timeline
Symbol 544 GraphicUsed by:545
Symbol 545 MovieClipUses:544Used by:Timeline
Symbol 546 TextUses:360Used by:Timeline
Symbol 547 TextUses:507Used by:Timeline
Symbol 548 GraphicUsed by:549
Symbol 549 MovieClipUses:548Used by:Timeline
Symbol 550 TextUses:507Used by:Timeline
Symbol 551 TextUses:128Used by:553
Symbol 552 TextUses:128Used by:553
Symbol 553 ButtonUses:551 552Used by:Timeline
Symbol 554 EditableTextUses:360 497Used by:Timeline
Symbol 555 EditableTextUses:360 497Used by:Timeline
Symbol 556 EditableTextUses:360 497Used by:Timeline
Symbol 557 EditableTextUses:360 497Used by:Timeline
Symbol 558 TextUses:360Used by:Timeline
Symbol 559 TextUses:536Used by:Timeline

Instance Names

"intro"Frame 1Symbol 481 MovieClip
"preloaderScreenButton"Frame 1Symbol 484 Button
"preloaderStartButton"Frame 1Symbol 488 Button
"skipButton"Frame 11Symbol 494 Button
"mainMenuTruck"Frame 20Symbol 466 MovieClip {Truck_Placeholder}
"scoreText"Frame 20Symbol 498 EditableText
"level1"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"level2"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"level3"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"level4"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"level5"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"level6"Frame 31Symbol 447 Button {com.buttons.LevelSelect}
"levelSelectTruck"Frame 31Symbol 466 MovieClip {Truck_Placeholder}
"scoreText"Frame 31Symbol 509 EditableText
"lock2"Frame 31Symbol 511 MovieClip
"lock3"Frame 31Symbol 511 MovieClip
"lock4"Frame 31Symbol 511 MovieClip
"lock5"Frame 31Symbol 511 MovieClip
"lock6"Frame 31Symbol 511 MovieClip
"truckSelectionTruck"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"t1"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck1"Frame 42Symbol 517 Button
"t2"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck2"Frame 42Symbol 517 Button
"t3"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck3"Frame 42Symbol 517 Button
"t4"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck4"Frame 42Symbol 517 Button
"t5"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck5"Frame 42Symbol 517 Button
"t6"Frame 42Symbol 466 MovieClip {Truck_Placeholder}
"truck6"Frame 42Symbol 517 Button
"gameOptionsTruck"Frame 54Symbol 466 MovieClip {Truck_Placeholder}
"musicSlider"Frame 54Symbol 441 MovieClip {fl.controls.Slider}
"soundEffectsSlider"Frame 54Symbol 441 MovieClip {fl.controls.Slider}
"musicCheckbox"Frame 54Symbol 426 MovieClip {fl.controls.CheckBox}
"soundEffectsCheckbox"Frame 54Symbol 426 MovieClip {fl.controls.CheckBox}
"updateButton"Frame 54Symbol 258 MovieClip {fl.controls.Button}
"Basics"Frame 66Symbol 410 Button {GameplayBasicsButton}
"Controls"Frame 66Symbol 407 Button {ControlsButton}
"instructionsMc"Frame 106Symbol 540 MovieClip {BorderServices_Fixed_fla.EditorInstructionsMc_125}
"__id3_"Frame 126Symbol 258 MovieClip {fl.controls.Button}
"editLevelButton"Frame 126Symbol 258 MovieClip {fl.controls.Button}
"gameOverTruck"Frame 136Symbol 466 MovieClip {Truck_Placeholder}
"levelResultsTruck"Frame 146Symbol 466 MovieClip {Truck_Placeholder}
"continueButtonLevelResults"Frame 146Symbol 553 Button
"timeElapsedText"Frame 146Symbol 554 EditableText
"scoreText"Frame 146Symbol 555 EditableText
"timeElapsedText"Frame 157Symbol 556 EditableText
"scoreText"Frame 157Symbol 557 EditableText
"main"Symbol 89 MovieClip {BorderServices_Fixed_fla.TruckBase_32} Frame 1Symbol 77 MovieClip {BorderServices_Fixed_fla.TruckBase_23}
"immigrants"Symbol 89 MovieClip {BorderServices_Fixed_fla.TruckBase_32} Frame 1Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31}
"base"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 89 MovieClip {BorderServices_Fixed_fla.TruckBase_32}
"leftWheel"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 90 MovieClip
"rightWheel"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 90 MovieClip
"trailerJoint"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 92 MovieClip {com.objects.gameplay.shapes.Circle}
"baseMain"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"baseTop"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"baseBack"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"baseFront"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"axel1"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"axel2"Symbol 95 MovieClip {com.objects.gameplay.Truck} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"coinMc"Symbol 101 MovieClip {Coin} Frame 1Symbol 100 MovieClip
"coinMc"Symbol 138 MovieClip {Object_Placeholder} Frame 13Symbol 100 MovieClip
"helper"Symbol 138 MovieClip {Object_Placeholder} Frame 42Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"leftWheel"Symbol 138 MovieClip {Object_Placeholder} Frame 94Symbol 90 MovieClip
"textTF"Symbol 140 MovieClip {BorderServices_Fixed_fla.CoinTextBase_184} Frame 1Symbol 139 EditableText
"leftWheel"Symbol 168 MovieClip {com.objects.gameplay.special.Wheel} Frame 1Symbol 90 MovieClip
"fargroundMc"Symbol 236 MovieClip {FullAnimation} Frame 1Symbol 175 MovieClip
"main"Symbol 236 MovieClip {FullAnimation} Frame 398Symbol 77 MovieClip {BorderServices_Fixed_fla.TruckBase_23}
"immigrants"Symbol 236 MovieClip {FullAnimation} Frame 398Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31}
"cancelButton"Symbol 264 MovieClip {LoadCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track1Button"Symbol 264 MovieClip {LoadCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track2Button"Symbol 264 MovieClip {LoadCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track3Button"Symbol 264 MovieClip {LoadCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"cancelButton"Symbol 269 MovieClip {SaveCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track1Button"Symbol 269 MovieClip {SaveCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track2Button"Symbol 269 MovieClip {SaveCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"track3Button"Symbol 269 MovieClip {SaveCustomLevelMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"importCodeText"Symbol 304 MovieClip {ImportMc} Frame 1Symbol 303 MovieClip {fl.controls.TextArea}
"cancelButton"Symbol 304 MovieClip {ImportMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"importButton"Symbol 304 MovieClip {ImportMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"exportCodeText"Symbol 308 MovieClip {ExportMc} Frame 1Symbol 303 MovieClip {fl.controls.TextArea}
"closeButton"Symbol 308 MovieClip {ExportMc} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"left"Symbol 317 MovieClip {TelephonePole} Frame 1Symbol 92 MovieClip {com.objects.gameplay.shapes.Circle}
"right"Symbol 317 MovieClip {TelephonePole} Frame 1Symbol 92 MovieClip {com.objects.gameplay.shapes.Circle}
"base"Symbol 317 MovieClip {TelephonePole} Frame 1Symbol 316 MovieClip
"endWall"Symbol 331 MovieClip {com.objects.gameplay.FinishLine} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"helper"Symbol 332 MovieClip {com.objects.gameplay.special.BrokenBridge} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"helper"Symbol 333 MovieClip {com.objects.gameplay.special.CrashedPlane} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"helper"Symbol 334 MovieClip {com.objects.gameplay.special.LookoutPostB} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"helper2"Symbol 334 MovieClip {com.objects.gameplay.special.LookoutPostB} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"helper"Symbol 336 MovieClip {com.objects.gameplay.special.Plank} Frame 1Symbol 94 MovieClip {com.objects.gameplay.shapes.Box}
"backgroundMc"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 348 MovieClip {BorderServices_Fixed_fla.Level_Background_91}
"fargroundMc"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 175 MovieClip
"displayRectMc"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 350 MovieClip {BorderServices_Fixed_fla.White_92}
"pauseButton"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 356 Button
"quitButton"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 359 Button
"timeElapsedText"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 361 EditableText
"bestTimeText"Symbol 363 MovieClip {com.states.Gameplay} Frame 1Symbol 362 EditableText
"midgroundMc"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 395 MovieClip {BorderServices_Fixed_fla.Level_Midground_90}
"backgroundMc"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 348 MovieClip {BorderServices_Fixed_fla.Level_Background_91}
"fargroundMc"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 175 MovieClip
"displayRectMc"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 350 MovieClip {BorderServices_Fixed_fla.White_92}
"modeComboBox"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 393 MovieClip {fl.controls.ComboBox}
"levelSizeText"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 400 EditableText
"testLevelButton"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"clearLevelButton"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"quitButton"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"exportButton"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"importButton"Symbol 401 MovieClip {com.objects.TrackEditor} Frame 1Symbol 258 MovieClip {fl.controls.Button}
"main"Symbol 466 MovieClip {Truck_Placeholder} Frame 1Symbol 77 MovieClip {BorderServices_Fixed_fla.TruckBase_23}
"immigrants"Symbol 466 MovieClip {Truck_Placeholder} Frame 1Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31}
"bar"Symbol 473 MovieClip {BorderServices_Fixed_fla.i6LOADER_2} Frame 1Symbol 470 MovieClip
"bar"Symbol 473 MovieClip {BorderServices_Fixed_fla.i6LOADER_2} Frame 1Symbol 470 MovieClip
"bar"Symbol 473 MovieClip {BorderServices_Fixed_fla.i6LOADER_2} Frame 1Symbol 470 MovieClip
"gauge"Symbol 481 MovieClip Frame 1Symbol 473 MovieClip {BorderServices_Fixed_fla.i6LOADER_2}
"fargroundMc"Symbol 490 MovieClip {BorderServices_Fixed_fla.FullAnimation_19} Frame 1Symbol 175 MovieClip
"main"Symbol 490 MovieClip {BorderServices_Fixed_fla.FullAnimation_19} Frame 435Symbol 77 MovieClip {BorderServices_Fixed_fla.TruckBase_23}
"immigrants"Symbol 490 MovieClip {BorderServices_Fixed_fla.FullAnimation_19} Frame 435Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.

Labels

"Preloader"Frame 1
"Intro"Frame 11
"Main Menu"Frame 20
"Level Select"Frame 31
"Truck Select"Frame 42
"Game Options"Frame 54
"How to Play"Frame 66
"Controls"Frame 77
"Basics"Frame 86
"Music Credits"Frame 93
"Track Editor"Frame 106
"Gameplay"Frame 117
"Test Track"Frame 126
"Game Over"Frame 136
"Level Results"Frame 146
"Final Level Results"Frame 157
"Transition"Frame 171
"R0"Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31} Frame 1
"Loop"Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31} Frame 5
"Small A"Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31} Frame 10
"Small B"Symbol 87 MovieClip {BorderServices_Fixed_fla.TruckImmigrants_31} Frame 18
"Geoformation"Symbol 138 MovieClip {Object_Placeholder} Frame 1
"Coin"Symbol 138 MovieClip {Object_Placeholder} Frame 13
"Police Car"Symbol 138 MovieClip {Object_Placeholder} Frame 20
"Boost"Symbol 138 MovieClip {Object_Placeholder} Frame 29
"Crate"Symbol 138 MovieClip {Object_Placeholder} Frame 36
"Broken Bridge"Symbol 138 MovieClip {Object_Placeholder} Frame 42
"Crashed Plane"Symbol 138 MovieClip {Object_Placeholder} Frame 53
"Lookout Post B"Symbol 138 MovieClip {Object_Placeholder} Frame 64
"Lookout Post A"Symbol 138 MovieClip {Object_Placeholder} Frame 75
"Bandit"Symbol 138 MovieClip {Object_Placeholder} Frame 87
"Wheel"Symbol 138 MovieClip {Object_Placeholder} Frame 94
"Plank"Symbol 138 MovieClip {Object_Placeholder} Frame 101




http://swfchan.com/24/116756/info.shtml
Created: 8/3 -2019 12:12:05 Last modified: 8/3 -2019 12:12:05 Server time: 16/05 -2024 04:04:49