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

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

orchad-defense.swf

This is the info page for
Flash #108068

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


ActionScript [AS3]
Section 1
//Pen (ascb.drawing.Pen) package ascb.drawing { import flash.display.*; import flash.geom.*; public class Pen { private var _bLineStyleSet:Boolean; private var _gTarget:Graphics; public function Pen(gTarget:Graphics){ super(); _gTarget = gTarget; } public function curveTo(nCtrlX:Number, nCtrlY:Number, nAnchorX:Number, nAnchorY:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY); } public function drawCurve(nX:Number, nY:Number, nCtrlX:Number, nCtrlY:Number, nAnchorX:Number, nAnchorY:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.moveTo(nX, nY); _gTarget.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY); } public function beginFill(nRGB:Number, nAlpha:Number=1):void{ _gTarget.beginFill(nRGB, nAlpha); } public function lineGradientStyle(sType:String, aColors:Array, aAlphas:Array, aRatios:Array, mtxTransform:Matrix=null, sMethod:String="pad", sInterpolation:String="rgb", nFocalPoint:Number=0):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.lineGradientStyle(sType, aColors, aAlphas, aRatios, mtxTransform, sMethod, sInterpolation, nFocalPoint); } public function lineTo(nX:Number, nY:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.lineTo(nX, nY); } public function get target():Graphics{ return (_gTarget); } public function clear():void{ _gTarget.clear(); _bLineStyleSet = false; } public function drawRect(nX:Number, nY:Number, nWidth:Number, nHeight:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.drawRect(nX, nY, nWidth, nHeight); } public function drawLine(nX0:Number, nY0:Number, nX1:Number, nY1:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.moveTo(nX0, nY0); _gTarget.lineTo(nX1, nY1); } public function beginBitmapFill(bmpData:BitmapData, mtxTransform:Matrix=null, bRepeat:Boolean=true, bSmooth:Boolean=false):void{ _gTarget.beginBitmapFill(bmpData, mtxTransform, bRepeat, bSmooth); } public function beginGradientFill(sFillType:String, aColors:Array, aAlphas:Array, aRatios:Array, mtxTransform:Matrix=null, sMethod:String="pad", sInterpolation:String="rgb", nFocalPoint:Number=0):void{ _gTarget.beginGradientFill(sFillType, aColors, aAlphas, aRatios, mtxTransform, sMethod, sInterpolation, nFocalPoint); } public function lineStyle(nThickness:Number=1, nRGB:Number=0, nAlpha:Number=1, bPixelHinting:Boolean=false, sScaleMode:String="normal", sCaps:String=null, sJoints:String=null, nMiterLimit:Number=3):void{ _gTarget.lineStyle(nThickness, nRGB, nAlpha, bPixelHinting, sScaleMode, sCaps, sJoints, nMiterLimit); _bLineStyleSet = true; } public function set target(gTarget:Graphics):void{ _gTarget = gTarget; } public function drawRoundRectComplex(nX:Number, nY:Number, nWidth:Number, nHeight:Number, nA:Number, nB:Number, nC:Number, nD:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.drawRoundRectComplex(nX, nY, nWidth, nHeight, nA, nB, nC, nD); } public function moveTo(nX:Number, nY:Number):void{ _gTarget.moveTo(nX, nY); } public function drawArc(nX:Number, nY:Number, nRadius:Number, nArc:Number, nStartingAngle:Number=0, bRadialLines:Boolean=false):void{ var nCtrlX:Number; var nCtrlY:Number; var nAnchorX:Number; var nAnchorY:Number; if (nArc > 360){ nArc = 360; }; nArc = ((Math.PI / 180) * nArc); var nAngleDelta:Number = (nArc / 8); var nCtrlDist:Number = (nRadius / Math.cos((nAngleDelta / 2))); nStartingAngle = (nStartingAngle * (Math.PI / 180)); var nAngle:Number = nStartingAngle; var nStartingX:Number = (nX + (Math.cos(nStartingAngle) * nRadius)); var nStartingY:Number = (nY + (Math.sin(nStartingAngle) * nRadius)); if (bRadialLines){ moveTo(nX, nY); lineTo(nStartingX, nStartingY); } else { moveTo(nStartingX, nStartingY); }; var i:Number = 0; while (i < 8) { nAngle = (nAngle + nAngleDelta); nCtrlX = (nX + (Math.cos((nAngle - (nAngleDelta / 2))) * nCtrlDist)); nCtrlY = (nY + (Math.sin((nAngle - (nAngleDelta / 2))) * nCtrlDist)); nAnchorX = (nX + (Math.cos(nAngle) * nRadius)); nAnchorY = (nY + (Math.sin(nAngle) * nRadius)); curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY); i++; }; if (bRadialLines){ lineTo(nX, nY); }; } public function drawRegularPolygon(nX:Number, nY:Number, nSides:Number, nLength:Number, nRotation:Number=0):void{ nRotation = ((nRotation * Math.PI) / 180); var nAngle:Number = ((2 * Math.PI) / nSides); var nRadius:Number = ((nLength / 2) / Math.sin((nAngle / 2))); var nPx:Number = ((Math.cos(nRotation) * nRadius) + nX); var nPy:Number = ((Math.sin(nRotation) * nRadius) + nY); moveTo(nPx, nPy); var i:Number = 1; while (i <= nSides) { nPx = ((Math.cos(((nAngle * i) + nRotation)) * nRadius) + nX); nPy = ((Math.sin(((nAngle * i) + nRotation)) * nRadius) + nY); lineTo(nPx, nPy); i++; }; } public function drawCircle(nX:Number, nY:Number, nRadius:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.drawCircle(nX, nY, nRadius); } public function drawRoundRect(nX:Number, nY:Number, nWidth:Number, nHeight:Number, nRadius:Number):void{ if (!_bLineStyleSet){ lineStyle(); }; _gTarget.drawRoundRect(nX, nY, nWidth, nHeight, nRadius); } public function drawStar(nX:Number, nY:Number, nPoints:Number, nInnerRadius:Number, nOuterRadius:Number, nRotation:Number=0):void{ if (nPoints < 3){ return; }; var nAngleDelta:Number = ((Math.PI * 2) / nPoints); nRotation = ((Math.PI * (nRotation - 90)) / 180); var nAngle:Number = nRotation; var nPenX:Number = (nX + (Math.cos((nAngle + (nAngleDelta / 2))) * nInnerRadius)); var nPenY:Number = (nY + (Math.sin((nAngle + (nAngleDelta / 2))) * nInnerRadius)); moveTo(nPenX, nPenY); nAngle = (nAngle + nAngleDelta); var i:Number = 0; while (i < nPoints) { nPenX = (nX + (Math.cos(nAngle) * nOuterRadius)); nPenY = (nY + (Math.sin(nAngle) * nOuterRadius)); lineTo(nPenX, nPenY); nPenX = (nX + (Math.cos((nAngle + (nAngleDelta / 2))) * nInnerRadius)); nPenY = (nY + (Math.sin((nAngle + (nAngleDelta / 2))) * nInnerRadius)); lineTo(nPenX, nPenY); nAngle = (nAngle + nAngleDelta); i++; }; } public function drawEllipse(nX:Number, nY:Number, nRadiusX:Number, nRadiusY:Number):void{ var nCtrlX:Number; var nCtrlY:Number; var nAnchorX:Number; var nAnchorY:Number; var nAngleDelta:Number = (Math.PI / 4); var nAngle:Number = 0; var nCtrlDistX:Number = (nRadiusX / Math.cos((nAngleDelta / 2))); var nCtrlDistY:Number = (nRadiusY / Math.cos((nAngleDelta / 2))); moveTo((nX + nRadiusX), nY); var i:Number = 0; while (i < 8) { nAngle = (nAngle + nAngleDelta); nCtrlX = (nX + (Math.cos((nAngle - (nAngleDelta / 2))) * nCtrlDistX)); nCtrlY = (nY + (Math.sin((nAngle - (nAngleDelta / 2))) * nCtrlDistY)); nAnchorX = (nX + (Math.cos(nAngle) * nRadiusX)); nAnchorY = (nY + (Math.sin(nAngle) * nRadiusY)); this.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY); i++; }; } public function drawTriangle(nX:Number, nY:Number, nAB:Number, nAC:Number, nAngle:Number, nRotation:Number=0):void{ nRotation = ((nRotation * Math.PI) / 180); nAngle = ((nAngle * Math.PI) / 180); var nBx:Number = (Math.cos((nAngle - nRotation)) * nAB); var nBy:Number = (Math.sin((nAngle - nRotation)) * nAB); var nCx:Number = (Math.cos(-(nRotation)) * nAC); var nCy:Number = (Math.sin(-(nRotation)) * nAC); var nCentroidX:Number = 0; var nCentroidY:Number = 0; drawLine((-(nCentroidX) + nX), (-(nCentroidY) + nY), ((nCx - nCentroidX) + nX), ((nCy - nCentroidY) + nY)); lineTo(((nBx - nCentroidX) + nX), ((nBy - nCentroidY) + nY)); lineTo((-(nCentroidX) + nX), (-(nCentroidY) + nY)); } public function drawSlice(nArc:Number, nRadius:Number, nStartingAngle:Number, nX:Number, nY:Number):void{ drawArc(nX, nY, nRadius, nArc, nStartingAngle, true); } public function endFill():void{ _gTarget.endFill(); } } }//package ascb.drawing
Section 2
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 3
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(def:b2ShapeDef){ m_localPosition = new b2Vec2(); super(def); var circleDef:b2CircleDef = (def as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(circleDef.localPosition); m_radius = circleDef.radius; } override public function TestSegment(transform:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{ var sY:Number; var tMat:b2Mat22 = transform.R; var positionX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y))); var positionY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y))); var sX:Number = (segment.p1.x - positionX); sY = (segment.p1.y - positionY); var b:Number = (((sX * sX) + (sY * sY)) - (m_radius * m_radius)); if (b < 0){ return (false); }; var rX:Number = (segment.p2.x - segment.p1.x); var rY:Number = (segment.p2.y - segment.p1.y); var c:Number = ((sX * rX) + (sY * rY)); var rr:Number = ((rX * rX) + (rY * rY)); var sigma:Number = ((c * c) - (rr * b)); if ((((sigma < 0)) || ((rr < Number.MIN_VALUE)))){ return (false); }; var a:Number = -((c + Math.sqrt(sigma))); if ((((0 <= a)) && ((a <= (maxLambda * rr))))){ a = (a / rr); lambda[0] = a; normal.x = (sX + (a * rX)); normal.y = (sY + (a * rY)); normal.Normalize(); return (true); }; return (false); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeSweptAABB(aabb:b2AABB, transform1:b2XForm, transform2:b2XForm):void{ var tMat:b2Mat22; tMat = transform1.R; var p1X:Number = (transform1.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y))); var p1Y:Number = (transform1.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y))); tMat = transform2.R; var p2X:Number = (transform2.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y))); var p2Y:Number = (transform2.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y))); aabb.lowerBound.Set((((p1X < p2X)) ? p1X : p2X - m_radius), (((p1Y < p2Y)) ? p1Y : p2Y - m_radius)); aabb.upperBound.Set((((p1X > p2X)) ? p1X : p2X + m_radius), (((p1Y > p2Y)) ? p1Y : p2Y + m_radius)); } override public function ComputeMass(massData:b2MassData):void{ massData.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); massData.center.SetV(m_localPosition); massData.I = (massData.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function UpdateSweepRadius(center:b2Vec2):void{ var dX:Number = (m_localPosition.x - center.x); var dY:Number = (m_localPosition.y - center.y); dX = Math.sqrt(((dX * dX) + (dY * dY))); m_sweepRadius = ((dX + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(aabb:b2AABB, transform:b2XForm):void{ var tMat:b2Mat22 = transform.R; var pX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y))); var pY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y))); aabb.lowerBound.Set((pX - m_radius), (pY - m_radius)); aabb.upperBound.Set((pX + m_radius), (pY + m_radius)); } override public function TestPoint(transform:b2XForm, p:b2Vec2):Boolean{ var tMat:b2Mat22 = transform.R; var dX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y))); var dY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y))); dX = (p.x - dX); dY = (p.y - dY); return ((((dX * dX) + (dY * dY)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 4
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ super(); } public function Copy():b2FilterData{ var copy:b2FilterData = new b2FilterData(); copy.categoryBits = categoryBits; copy.maskBits = maskBits; copy.groupIndex = groupIndex; return (copy); } } }//package Box2D.Collision.Shapes
Section 5
//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 6
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var i:int; while (i < b2Settings.b2_maxPolygonVertices) { vertices[i] = new b2Vec2(); i++; }; } public function SetAsOrientedBox(hx:Number, hy:Number, center:b2Vec2=null, angle:Number=0):void{ var xfPosition:b2Vec2; var xfR:b2Mat22; var i:int; vertexCount = 4; vertices[0].Set(-(hx), -(hy)); vertices[1].Set(hx, -(hy)); vertices[2].Set(hx, hy); vertices[3].Set(-(hx), hy); if (center){ xfPosition = center; xfR = s_mat; xfR.Set(angle); i = 0; while (i < vertexCount) { center = vertices[i]; hx = (xfPosition.x + ((xfR.col1.x * center.x) + (xfR.col2.x * center.y))); center.y = (xfPosition.y + ((xfR.col1.y * center.x) + (xfR.col2.y * center.y))); center.x = hx; i++; }; }; } public function SetAsBox(hx:Number, hy:Number):void{ vertexCount = 4; vertices[0].Set(-(hx), -(hy)); vertices[1].Set(hx, -(hy)); vertices[2].Set(hx, hy); vertices[3].Set(-(hx), hy); } } }//package Box2D.Collision.Shapes
Section 7
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(def:b2ShapeDef){ var i:int; var edgeX:Number; var edgeY:Number; var len:Number; var n1X:Number; var n1Y:Number; var n2X:Number; var n2Y:Number; var vX:Number; var vY:Number; var dX:Number; var dY:Number; var det:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(def); m_type = e_polygonShape; var poly:b2PolygonDef = (def as b2PolygonDef); m_vertexCount = poly.vertexCount; var i1:int = i; var i2:int = i; i = 0; while (i < m_vertexCount) { m_vertices[i] = poly.vertices[i].Copy(); i++; }; i = 0; while (i < m_vertexCount) { i1 = i; i2 = (((i + 1) < m_vertexCount)) ? (i + 1) : 0; edgeX = (m_vertices[i2].x - m_vertices[i1].x); edgeY = (m_vertices[i2].y - m_vertices[i1].y); len = Math.sqrt(((edgeX * edgeX) + (edgeY * edgeY))); m_normals[i] = new b2Vec2((edgeY / len), (-(edgeX) / len)); i++; }; m_centroid = ComputeCentroid(poly.vertices, poly.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); i = 0; while (i < m_vertexCount) { i1 = (((i - 1) >= 0)) ? (i - 1) : (m_vertexCount - 1); i2 = i; n1X = m_normals[i1].x; n1Y = m_normals[i1].y; n2X = m_normals[i2].x; n2Y = m_normals[i2].y; vX = (m_vertices[i].x - m_centroid.x); vY = (m_vertices[i].y - m_centroid.y); dX = (((n1X * vX) + (n1Y * vY)) - b2Settings.b2_toiSlop); dY = (((n2X * vX) + (n2Y * vY)) - b2Settings.b2_toiSlop); det = (1 / ((n1X * n2Y) - (n1Y * n2X))); m_coreVertices[i] = new b2Vec2(((det * ((n2Y * dX) - (n1Y * dY))) + m_centroid.x), ((det * ((n1X * dY) - (n2X * dX))) + m_centroid.y)); i++; }; } override public function ComputeSweptAABB(aabb:b2AABB, transform1:b2XForm, transform2:b2XForm):void{ var aabb1:b2AABB = s_sweptAABB1; var aabb2:b2AABB = s_sweptAABB2; ComputeAABB(aabb1, transform1); ComputeAABB(aabb2, transform2); aabb.lowerBound.Set(((aabb1.lowerBound.x < aabb2.lowerBound.x)) ? aabb1.lowerBound.x : aabb2.lowerBound.x, ((aabb1.lowerBound.y < aabb2.lowerBound.y)) ? aabb1.lowerBound.y : aabb2.lowerBound.y); aabb.upperBound.Set(((aabb1.upperBound.x > aabb2.upperBound.x)) ? aabb1.upperBound.x : aabb2.upperBound.x, ((aabb1.upperBound.y > aabb2.upperBound.y)) ? aabb1.upperBound.y : aabb2.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(xf:b2XForm):b2Vec2{ return (b2Math.b2MulX(xf, m_coreVertices[0])); } public function Centroid(xf:b2XForm):b2Vec2{ return (b2Math.b2MulX(xf, m_centroid)); } override public function TestSegment(xf:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{ var tX:Number; var tY:Number; var tMat:b2Mat22; var tVec:b2Vec2; var numerator:Number; var denominator:Number; var lower:Number = 0; var upper:Number = maxLambda; tX = (segment.p1.x - xf.position.x); tY = (segment.p1.y - xf.position.y); tMat = xf.R; var p1X:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y)); var p1Y:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y)); tX = (segment.p2.x - xf.position.x); tY = (segment.p2.y - xf.position.y); tMat = xf.R; var p2X:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y)); var p2Y:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y)); var dX:Number = (p2X - p1X); var dY:Number = (p2Y - p1Y); var index = -1; var i:int; while (i < m_vertexCount) { tVec = m_vertices[i]; tX = (tVec.x - p1X); tY = (tVec.y - p1Y); tVec = m_normals[i]; numerator = ((tVec.x * tX) + (tVec.y * tY)); denominator = ((tVec.x * dX) + (tVec.y * dY)); if ((((denominator < 0)) && ((numerator < (lower * denominator))))){ lower = (numerator / denominator); index = i; } else { if ((((denominator > 0)) && ((numerator < (upper * denominator))))){ upper = (numerator / denominator); }; }; if (upper < lower){ return (false); }; i++; }; if (index >= 0){ lambda[0] = lower; tMat = xf.R; tVec = m_normals[index]; normal.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); normal.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); return (true); }; return (false); } override public function ComputeMass(massData:b2MassData):void{ var p2:b2Vec2; var p3:b2Vec2; var e1X:Number; var e1Y:Number; var e2X:Number; var e2Y:Number; var D:Number; var triangleArea:Number; var px:Number; var py:Number; var ex1:Number; var ey1:Number; var ex2:Number; var ey2:Number; var intx2:Number; var inty2:Number; var centerX:Number = 0; var centerY:Number = 0; var area:Number = 0; var I:Number = 0; var p1X:Number = 0; var p1Y:Number = 0; var k_inv3:Number = (1 / 3); var i:int; while (i < m_vertexCount) { p2 = m_vertices[i]; p3 = (((i + 1) < m_vertexCount)) ? m_vertices[int((i + 1))] : m_vertices[0]; e1X = (p2.x - p1X); e1Y = (p2.y - p1Y); e2X = (p3.x - p1X); e2Y = (p3.y - p1Y); D = ((e1X * e2Y) - (e1Y * e2X)); triangleArea = (0.5 * D); area = (area + triangleArea); centerX = (centerX + ((triangleArea * k_inv3) * ((p1X + p2.x) + p3.x))); centerY = (centerY + ((triangleArea * k_inv3) * ((p1Y + p2.y) + p3.y))); px = p1X; py = p1Y; ex1 = e1X; ey1 = e1Y; ex2 = e2X; ey2 = e2Y; intx2 = ((k_inv3 * ((0.25 * (((ex1 * ex1) + (ex2 * ex1)) + (ex2 * ex2))) + ((px * ex1) + (px * ex2)))) + ((0.5 * px) * px)); inty2 = ((k_inv3 * ((0.25 * (((ey1 * ey1) + (ey2 * ey1)) + (ey2 * ey2))) + ((py * ey1) + (py * ey2)))) + ((0.5 * py) * py)); I = (I + (D * (intx2 + inty2))); i++; }; massData.mass = (m_density * area); centerX = (centerX * (1 / area)); centerY = (centerY * (1 / area)); massData.center.Set(centerX, centerY); massData.I = (m_density * I); } public function GetNormals():Array{ return (m_normals); } public function Support(xf:b2XForm, dX:Number, dY:Number):b2Vec2{ var tVec:b2Vec2; var tMat:b2Mat22; var value:Number; tMat = xf.R; var dLocalX:Number = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); var dLocalY:Number = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); var bestIndex:int; tVec = m_coreVertices[0]; var bestValue:Number = ((tVec.x * dLocalX) + (tVec.y * dLocalY)); var i = 1; while (i < m_vertexCount) { tVec = m_coreVertices[i]; value = ((tVec.x * dLocalX) + (tVec.y * dLocalY)); if (value > bestValue){ bestIndex = i; bestValue = value; }; i++; }; tMat = xf.R; tVec = m_coreVertices[bestIndex]; s_supportVec.x = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); s_supportVec.y = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(aabb:b2AABB, xf:b2XForm):void{ var tMat:b2Mat22; var tVec:b2Vec2; var R:b2Mat22 = s_computeMat; tMat = xf.R; tVec = m_obb.R.col1; R.col1.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); R.col1.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tVec = m_obb.R.col2; R.col2.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); R.col2.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); R.Abs(); var absR:b2Mat22 = R; tVec = m_obb.extents; var hX:Number = ((absR.col1.x * tVec.x) + (absR.col2.x * tVec.y)); var hY:Number = ((absR.col1.y * tVec.x) + (absR.col2.y * tVec.y)); tMat = xf.R; tVec = m_obb.center; var positionX:Number = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var positionY:Number = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); aabb.lowerBound.Set((positionX - hX), (positionY - hY)); aabb.upperBound.Set((positionX + hX), (positionY + hY)); } override public function UpdateSweepRadius(center:b2Vec2):void{ var tVec:b2Vec2; var dX:Number; var dY:Number; m_sweepRadius = 0; var i:int; while (i < m_vertexCount) { tVec = m_coreVertices[i]; dX = (tVec.x - center.x); dY = (tVec.y - center.y); dX = Math.sqrt(((dX * dX) + (dY * dY))); if (dX > m_sweepRadius){ m_sweepRadius = dX; }; i++; }; } override public function TestPoint(xf:b2XForm, p:b2Vec2):Boolean{ var tVec:b2Vec2; var dot:Number; var tMat:b2Mat22 = xf.R; var tX:Number = (p.x - xf.position.x); var tY:Number = (p.y - xf.position.y); var pLocalX:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y)); var pLocalY:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y)); var i:int; while (i < m_vertexCount) { tVec = m_vertices[i]; tX = (pLocalX - tVec.x); tY = (pLocalY - tVec.y); tVec = m_normals[i]; dot = ((tVec.x * tX) + (tVec.y * tY)); if (dot > 0){ return (false); }; i++; }; return (true); } public static function ComputeCentroid(vs:Array, count:int):b2Vec2{ var c:b2Vec2; var inv3:Number; var p2:b2Vec2; var p3:b2Vec2; var e1X:Number; var e1Y:Number; var e2X:Number; var e2Y:Number; var D:Number; var triangleArea:Number; c = new b2Vec2(); var area:Number = 0; var p1X:Number = 0; var p1Y:Number = 0; inv3 = (1 / 3); var i:int; while (i < count) { p2 = vs[i]; p3 = (((i + 1) < count)) ? vs[int((i + 1))] : vs[0]; e1X = (p2.x - p1X); e1Y = (p2.y - p1Y); e2X = (p3.x - p1X); e2Y = (p3.y - p1Y); D = ((e1X * e2Y) - (e1Y * e2X)); triangleArea = (0.5 * D); area = (area + triangleArea); c.x = (c.x + ((triangleArea * inv3) * ((p1X + p2.x) + p3.x))); c.y = (c.y + ((triangleArea * inv3) * ((p1Y + p2.y) + p3.y))); i++; }; c.x = (c.x * (1 / area)); c.y = (c.y * (1 / area)); return (c); } public static function ComputeOBB(obb:b2OBB, vs:Array, count:int):void{ var i:int; var root:b2Vec2; var uxX:Number; var uxY:Number; var length:Number; var uyX:Number; var uyY:Number; var lowerX:Number; var lowerY:Number; var upperX:Number; var upperY:Number; var j:int; var area:Number; var dX:Number; var dY:Number; var rX:Number; var rY:Number; var centerX:Number; var centerY:Number; var tMat:b2Mat22; var p:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); i = 0; while (i < count) { p[i] = vs[i]; i++; }; p[count] = p[0]; var minArea:Number = Number.MAX_VALUE; i = 1; while (i <= count) { root = p[int((i - 1))]; uxX = (p[i].x - root.x); uxY = (p[i].y - root.y); length = Math.sqrt(((uxX * uxX) + (uxY * uxY))); uxX = (uxX / length); uxY = (uxY / length); uyX = -(uxY); uyY = uxX; lowerX = Number.MAX_VALUE; lowerY = Number.MAX_VALUE; upperX = -(Number.MAX_VALUE); upperY = -(Number.MAX_VALUE); j = 0; while (j < count) { dX = (p[j].x - root.x); dY = (p[j].y - root.y); rX = ((uxX * dX) + (uxY * dY)); rY = ((uyX * dX) + (uyY * dY)); if (rX < lowerX){ lowerX = rX; }; if (rY < lowerY){ lowerY = rY; }; if (rX > upperX){ upperX = rX; }; if (rY > upperY){ upperY = rY; }; j++; }; area = ((upperX - lowerX) * (upperY - lowerY)); if (area < (0.95 * minArea)){ minArea = area; obb.R.col1.x = uxX; obb.R.col1.y = uxY; obb.R.col2.x = uyX; obb.R.col2.y = uyY; centerX = (0.5 * (lowerX + upperX)); centerY = (0.5 * (lowerY + upperY)); tMat = obb.R; obb.center.x = (root.x + ((tMat.col1.x * centerX) + (tMat.col2.x * centerY))); obb.center.y = (root.y + ((tMat.col1.y * centerX) + (tMat.col2.y * centerY))); obb.extents.x = (0.5 * (upperX - lowerX)); obb.extents.y = (0.5 * (upperY - lowerY)); }; i++; }; } } }//package Box2D.Collision.Shapes
Section 8
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Shape { public var m_next:b2Shape; public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_isSensor:Boolean; public var m_restitution:Number; public var m_userData; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(def:b2ShapeDef){ super(); m_userData = def.userData; m_friction = def.friction; m_restitution = def.restitution; m_density = def.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = def.filter.Copy(); m_isSensor = def.isSensor; } public function SetUserData(data):void{ m_userData = data; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(aabb:b2AABB, xf1:b2XForm, xf2:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(xf:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{ return (false); } public function RefilterProxy(broadPhase:b2BroadPhase, transform:b2XForm):void{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; broadPhase.DestroyProxy(m_proxyId); var aabb:b2AABB = s_resetAABB; ComputeAABB(aabb, transform); var inRange:Boolean = broadPhase.InRange(aabb); if (inRange){ m_proxyId = broadPhase.CreateProxy(aabb, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(filter:b2FilterData):void{ m_filter = filter.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(broadPhase:b2BroadPhase, transform1:b2XForm, transform2:b2XForm):Boolean{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var aabb:b2AABB = s_syncAABB; ComputeSweptAABB(aabb, transform1, transform2); if (broadPhase.InRange(aabb)){ broadPhase.MoveProxy(m_proxyId, aabb); return (true); }; return (false); } public function ComputeMass(massData:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(broadPhase:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ broadPhase.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(center:b2Vec2):void{ } public function ComputeAABB(aabb:b2AABB, xf:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(broadPhase:b2BroadPhase, transform:b2XForm):void{ var aabb:b2AABB = s_proxyAABB; ComputeAABB(aabb, transform); var inRange:Boolean = broadPhase.InRange(aabb); if (inRange){ m_proxyId = broadPhase.CreateProxy(aabb, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function TestPoint(xf:b2XForm, p:b2Vec2):Boolean{ return (false); } public static function Destroy(shape:b2Shape, allocator):void{ } public static function Create(def:b2ShapeDef, allocator):b2Shape{ switch (def.type){ case e_circleShape: return (new b2CircleShape(def)); case e_polygonShape: return (new b2PolygonShape(def)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 9
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 10
//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 IsValid():Boolean{ var dX:Number = (upperBound.x - lowerBound.x); var dY:Number = (upperBound.y - lowerBound.y); var valid:Boolean = (((dX >= 0)) && ((dY >= 0))); valid = ((((valid) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (valid); } } }//package Box2D.Collision
Section 11
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function b2Bound(){ super(); } public function Swap(b:b2Bound):void{ var tempValue:uint = value; var tempProxyId:uint = proxyId; var tempStabbingCount:uint = stabbingCount; value = b.value; proxyId = b.proxyId; stabbingCount = b.stabbingCount; b.value = tempValue; b.proxyId = tempProxyId; b.stabbingCount = tempStabbingCount; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 12
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 13
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = 0xFFFF; public static const b2_invalid:uint = 0xFFFF; public static var s_validate:Boolean = false; public function b2BroadPhase(worldAABB:b2AABB, callback:b2PairCallback){ var i:int; var dY:Number; var tProxy:b2Proxy; var j:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, callback); m_worldAABB = worldAABB; m_proxyCount = 0; i = 0; while (i < b2Settings.b2_maxProxies) { m_queryResults[i] = 0; i++; }; m_bounds = new Array(2); i = 0; while (i < 2) { m_bounds[i] = new Array((2 * b2Settings.b2_maxProxies)); j = 0; while (j < (2 * b2Settings.b2_maxProxies)) { m_bounds[i][j] = new b2Bound(); j++; }; i++; }; var dX:Number = (worldAABB.upperBound.x - worldAABB.lowerBound.x); dY = (worldAABB.upperBound.y - worldAABB.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / dX); m_quantizationFactor.y = (b2Settings.USHRT_MAX / dY); i = 0; while (i < (b2Settings.b2_maxProxies - 1)) { tProxy = new b2Proxy(); m_proxyPool[i] = tProxy; tProxy.SetNext((i + 1)); tProxy.timeStamp = 0; tProxy.overlapCount = b2_invalid; tProxy.userData = null; i++; }; tProxy = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = tProxy; tProxy.SetNext(b2Pair.b2_nullProxy); tProxy.timeStamp = 0; tProxy.overlapCount = b2_invalid; tProxy.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(aabb:b2AABB, userData, maxCount:int):int{ var lowerIndex:uint; var upperIndex:uint; var proxy:b2Proxy; var lowerValues:Array = new Array(); var upperValues:Array = new Array(); ComputeBounds(lowerValues, upperValues, aabb); var lowerIndexOut:Array = [lowerIndex]; var upperIndexOut:Array = [upperIndex]; Query(lowerIndexOut, upperIndexOut, lowerValues[0], upperValues[0], m_bounds[0], (2 * m_proxyCount), 0); Query(lowerIndexOut, upperIndexOut, lowerValues[1], upperValues[1], m_bounds[1], (2 * m_proxyCount), 1); var count:int; var i:int; while ((((i < m_queryResultCount)) && ((count < maxCount)))) { proxy = m_proxyPool[m_queryResults[i]]; userData[i] = proxy.userData; i++; count++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (count); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(proxyId:int):b2Proxy{ var proxy:b2Proxy = m_proxyPool[proxyId]; if ((((proxyId == b2Pair.b2_nullProxy)) || ((proxy.IsValid() == false)))){ return (null); }; return (proxy); } private function IncrementTimeStamp():void{ var i:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ i = 0; while (i < b2Settings.b2_maxProxies) { (m_proxyPool[i] as b2Proxy).timeStamp = 0; i++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(lowerQueryOut:Array, upperQueryOut:Array, lowerValue:uint, upperValue:uint, bounds:Array, boundCount:uint, axis:int):void{ var bound:b2Bound; var i:int; var s:int; var proxy:b2Proxy; var lowerQuery:uint = BinarySearch(bounds, boundCount, lowerValue); var upperQuery:uint = BinarySearch(bounds, boundCount, upperValue); var j:uint = lowerQuery; while (j < upperQuery) { bound = bounds[j]; if (bound.IsLower()){ IncrementOverlapCount(bound.proxyId); }; j++; }; if (lowerQuery > 0){ i = (lowerQuery - 1); bound = bounds[i]; s = bound.stabbingCount; while (s) { bound = bounds[i]; if (bound.IsLower()){ proxy = m_proxyPool[bound.proxyId]; if (lowerQuery <= proxy.upperBounds[axis]){ IncrementOverlapCount(bound.proxyId); s--; }; }; i--; }; }; lowerQueryOut[0] = lowerQuery; upperQueryOut[0] = upperQuery; } private function TestOverlapValidate(p1:b2Proxy, p2:b2Proxy):Boolean{ var bounds:Array; var bound1:b2Bound; var bound2:b2Bound; var axis:int; while (axis < 2) { bounds = m_bounds[axis]; bound1 = bounds[p1.lowerBounds[axis]]; bound2 = bounds[p2.upperBounds[axis]]; if (bound1.value > bound2.value){ return (false); }; bound1 = bounds[p1.upperBounds[axis]]; bound2 = bounds[p2.lowerBounds[axis]]; if (bound1.value < bound2.value){ return (false); }; axis++; }; return (true); } private function ComputeBounds(lowerValues:Array, upperValues:Array, aabb:b2AABB):void{ var minVertexX:Number = aabb.lowerBound.x; var minVertexY:Number = aabb.lowerBound.y; minVertexX = b2Math.b2Min(minVertexX, m_worldAABB.upperBound.x); minVertexY = b2Math.b2Min(minVertexY, m_worldAABB.upperBound.y); minVertexX = b2Math.b2Max(minVertexX, m_worldAABB.lowerBound.x); minVertexY = b2Math.b2Max(minVertexY, m_worldAABB.lowerBound.y); var maxVertexX:Number = aabb.upperBound.x; var maxVertexY:Number = aabb.upperBound.y; maxVertexX = b2Math.b2Min(maxVertexX, m_worldAABB.upperBound.x); maxVertexY = b2Math.b2Min(maxVertexY, m_worldAABB.upperBound.y); maxVertexX = b2Math.b2Max(maxVertexX, m_worldAABB.lowerBound.x); maxVertexY = b2Math.b2Max(maxVertexY, m_worldAABB.lowerBound.y); lowerValues[0] = (uint((m_quantizationFactor.x * (minVertexX - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); upperValues[0] = ((uint((m_quantizationFactor.x * (maxVertexX - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); lowerValues[1] = (uint((m_quantizationFactor.y * (minVertexY - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); upperValues[1] = ((uint((m_quantizationFactor.y * (maxVertexY - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(aabb:b2AABB, userData):uint{ var index:uint; var proxy:b2Proxy; var bounds:Array; var lowerIndex:uint; var upperIndex:uint; var lowerIndexOut:Array; var upperIndexOut:Array; var tArr:Array; var j:int; var tEnd:int; var tBound1:b2Bound; var tBound2:b2Bound; var tBoundAS3:b2Bound; var tIndex:int; var proxy2:b2Proxy; var proxyId:uint = m_freeProxy; proxy = m_proxyPool[proxyId]; m_freeProxy = proxy.GetNext(); proxy.overlapCount = 0; proxy.userData = userData; var boundCount:uint = (2 * m_proxyCount); var lowerValues:Array = new Array(); var upperValues:Array = new Array(); ComputeBounds(lowerValues, upperValues, aabb); var axis:int; while (axis < 2) { bounds = m_bounds[axis]; lowerIndexOut = [lowerIndex]; upperIndexOut = [upperIndex]; Query(lowerIndexOut, upperIndexOut, lowerValues[axis], upperValues[axis], bounds, boundCount, axis); lowerIndex = lowerIndexOut[0]; upperIndex = upperIndexOut[0]; tArr = new Array(); tEnd = (boundCount - upperIndex); j = 0; while (j < tEnd) { tArr[j] = new b2Bound(); tBound1 = tArr[j]; tBound2 = bounds[int((upperIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tEnd = tArr.length; tIndex = (upperIndex + 2); j = 0; while (j < tEnd) { tBound2 = tArr[j]; tBound1 = bounds[int((tIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tArr = new Array(); tEnd = (upperIndex - lowerIndex); j = 0; while (j < tEnd) { tArr[j] = new b2Bound(); tBound1 = tArr[j]; tBound2 = bounds[int((lowerIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tEnd = tArr.length; tIndex = (lowerIndex + 1); j = 0; while (j < tEnd) { tBound2 = tArr[j]; tBound1 = bounds[int((tIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; upperIndex++; tBound1 = bounds[lowerIndex]; tBound2 = bounds[upperIndex]; tBound1.value = lowerValues[axis]; tBound1.proxyId = proxyId; tBound2.value = upperValues[axis]; tBound2.proxyId = proxyId; tBoundAS3 = bounds[int((lowerIndex - 1))]; tBound1.stabbingCount = ((lowerIndex == 0)) ? 0 : tBoundAS3.stabbingCount; tBoundAS3 = bounds[int((upperIndex - 1))]; tBound2.stabbingCount = tBoundAS3.stabbingCount; index = lowerIndex; while (index < upperIndex) { tBoundAS3 = bounds[index]; tBoundAS3.stabbingCount++; index++; }; index = lowerIndex; while (index < (boundCount + 2)) { tBound1 = bounds[index]; proxy2 = m_proxyPool[tBound1.proxyId]; if (tBound1.IsLower()){ proxy2.lowerBounds[axis] = index; } else { proxy2.upperBounds[axis] = index; }; index++; }; axis++; }; m_proxyCount++; var i:int; while (i < m_queryResultCount) { m_pairManager.AddBufferedPair(proxyId, m_queryResults[i]); i++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (proxyId); } public function DestroyProxy(proxyId:uint):void{ var tBound1:b2Bound; var tBound2:b2Bound; var bounds:Array; var lowerIndex:uint; var upperIndex:uint; var lowerValue:uint; var upperValue:uint; var tArr:Array; var j:int; var tEnd:int; var tIndex:int; var index:uint; var index2:int; var proxy2:b2Proxy; var proxy:b2Proxy = m_proxyPool[proxyId]; var boundCount:int = (2 * m_proxyCount); var axis:int; while (axis < 2) { bounds = m_bounds[axis]; lowerIndex = proxy.lowerBounds[axis]; upperIndex = proxy.upperBounds[axis]; tBound1 = bounds[lowerIndex]; lowerValue = tBound1.value; tBound2 = bounds[upperIndex]; upperValue = tBound2.value; tArr = new Array(); tEnd = ((upperIndex - lowerIndex) - 1); j = 0; while (j < tEnd) { tArr[j] = new b2Bound(); tBound1 = tArr[j]; tBound2 = bounds[int(((lowerIndex + 1) + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tEnd = tArr.length; tIndex = lowerIndex; j = 0; while (j < tEnd) { tBound2 = tArr[j]; tBound1 = bounds[int((tIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tArr = new Array(); tEnd = ((boundCount - upperIndex) - 1); j = 0; while (j < tEnd) { tArr[j] = new b2Bound(); tBound1 = tArr[j]; tBound2 = bounds[int(((upperIndex + 1) + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tEnd = tArr.length; tIndex = (upperIndex - 1); j = 0; while (j < tEnd) { tBound2 = tArr[j]; tBound1 = bounds[int((tIndex + j))]; tBound1.value = tBound2.value; tBound1.proxyId = tBound2.proxyId; tBound1.stabbingCount = tBound2.stabbingCount; j++; }; tEnd = (boundCount - 2); index = lowerIndex; while (index < tEnd) { tBound1 = bounds[index]; proxy2 = m_proxyPool[tBound1.proxyId]; if (tBound1.IsLower()){ proxy2.lowerBounds[axis] = index; } else { proxy2.upperBounds[axis] = index; }; index++; }; tEnd = (upperIndex - 1); index2 = lowerIndex; while (index2 < tEnd) { tBound1 = bounds[index2]; tBound1.stabbingCount--; index2++; }; Query([0], [0], lowerValue, upperValue, bounds, (boundCount - 2), axis); axis++; }; var i:int; while (i < m_queryResultCount) { m_pairManager.RemoveBufferedPair(proxyId, m_queryResults[i]); i++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); proxy.userData = null; proxy.overlapCount = b2_invalid; proxy.lowerBounds[0] = b2_invalid; proxy.lowerBounds[1] = b2_invalid; proxy.upperBounds[0] = b2_invalid; proxy.upperBounds[1] = b2_invalid; proxy.SetNext(m_freeProxy); m_freeProxy = proxyId; m_proxyCount--; } public function TestOverlap(b:b2BoundValues, p:b2Proxy):Boolean{ var bounds:Array; var bound:b2Bound; var axis:int; while (axis < 2) { bounds = m_bounds[axis]; bound = bounds[p.upperBounds[axis]]; if (b.lowerValues[axis] > bound.value){ return (false); }; bound = bounds[p.lowerBounds[axis]]; if (b.upperValues[axis] < bound.value){ return (false); }; axis++; }; return (true); } public function Validate():void{ var pair:b2Pair; var proxy1:b2Proxy; var proxy2:b2Proxy; var overlap:Boolean; var bounds:b2Bound; var boundCount:uint; var stabbingCount:uint; var i:uint; var bound:b2Bound; var axis:int; while (axis < 2) { bounds = m_bounds[axis]; boundCount = (2 * m_proxyCount); stabbingCount = 0; i = 0; while (i < boundCount) { bound = bounds[i]; if (bound.IsLower() == true){ stabbingCount++; } else { stabbingCount--; }; i++; }; axis++; }; } private function IncrementOverlapCount(proxyId:uint):void{ var proxy:b2Proxy = m_proxyPool[proxyId]; if (proxy.timeStamp < m_timeStamp){ proxy.timeStamp = m_timeStamp; proxy.overlapCount = 1; } else { proxy.overlapCount = 2; m_queryResults[m_queryResultCount] = proxyId; m_queryResultCount++; }; } public function InRange(aabb:b2AABB):Boolean{ var dX:Number; var dY:Number; var d2X:Number; var d2Y:Number; dX = aabb.lowerBound.x; dY = aabb.lowerBound.y; dX = (dX - m_worldAABB.upperBound.x); dY = (dY - m_worldAABB.upperBound.y); d2X = m_worldAABB.lowerBound.x; d2Y = m_worldAABB.lowerBound.y; d2X = (d2X - aabb.upperBound.x); d2Y = (d2Y - aabb.upperBound.y); dX = b2Math.b2Max(dX, d2X); dY = b2Math.b2Max(dY, d2Y); return ((b2Math.b2Max(dX, dY) < 0)); } public function MoveProxy(proxyId:uint, aabb:b2AABB):void{ var as3arr:Array; var as3int:int; var axis:uint; var index:uint; var bound:b2Bound; var prevBound:b2Bound; var nextBound:b2Bound; var nextProxyId:uint; var nextProxy:b2Proxy; var bounds:Array; var lowerIndex:uint; var upperIndex:uint; var lowerValue:uint; var upperValue:uint; var deltaLower:int; var deltaUpper:int; var prevProxyId:uint; var prevProxy:b2Proxy; if ((((proxyId == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= proxyId)))){ return; }; if (aabb.IsValid() == false){ return; }; var boundCount:uint = (2 * m_proxyCount); var proxy:b2Proxy = m_proxyPool[proxyId]; var newValues:b2BoundValues = new b2BoundValues(); ComputeBounds(newValues.lowerValues, newValues.upperValues, aabb); var oldValues:b2BoundValues = new b2BoundValues(); axis = 0; while (axis < 2) { bound = m_bounds[axis][proxy.lowerBounds[axis]]; oldValues.lowerValues[axis] = bound.value; bound = m_bounds[axis][proxy.upperBounds[axis]]; oldValues.upperValues[axis] = bound.value; axis++; }; axis = 0; while (axis < 2) { bounds = m_bounds[axis]; lowerIndex = proxy.lowerBounds[axis]; upperIndex = proxy.upperBounds[axis]; lowerValue = newValues.lowerValues[axis]; upperValue = newValues.upperValues[axis]; bound = bounds[lowerIndex]; deltaLower = (lowerValue - bound.value); bound.value = lowerValue; bound = bounds[upperIndex]; deltaUpper = (upperValue - bound.value); bound.value = upperValue; if (deltaLower < 0){ index = lowerIndex; while ((((index > 0)) && ((lowerValue < (bounds[int((index - 1))] as b2Bound).value)))) { bound = bounds[index]; prevBound = bounds[int((index - 1))]; prevProxyId = prevBound.proxyId; prevProxy = m_proxyPool[prevBound.proxyId]; prevBound.stabbingCount++; if (prevBound.IsUpper() == true){ if (TestOverlap(newValues, prevProxy)){ m_pairManager.AddBufferedPair(proxyId, prevProxyId); }; as3arr = prevProxy.upperBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.stabbingCount++; } else { as3arr = prevProxy.lowerBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.stabbingCount--; }; as3arr = proxy.lowerBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.Swap(prevBound); index--; }; }; if (deltaUpper > 0){ index = upperIndex; while ((((index < (boundCount - 1))) && (((bounds[int((index + 1))] as b2Bound).value <= upperValue)))) { bound = bounds[index]; nextBound = bounds[int((index + 1))]; nextProxyId = nextBound.proxyId; nextProxy = m_proxyPool[nextProxyId]; nextBound.stabbingCount++; if (nextBound.IsLower() == true){ if (TestOverlap(newValues, nextProxy)){ m_pairManager.AddBufferedPair(proxyId, nextProxyId); }; as3arr = nextProxy.lowerBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.stabbingCount++; } else { as3arr = nextProxy.upperBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.stabbingCount--; }; as3arr = proxy.upperBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.Swap(nextBound); index++; }; }; if (deltaLower > 0){ index = lowerIndex; while ((((index < (boundCount - 1))) && (((bounds[int((index + 1))] as b2Bound).value <= lowerValue)))) { bound = bounds[index]; nextBound = bounds[int((index + 1))]; nextProxyId = nextBound.proxyId; nextProxy = m_proxyPool[nextProxyId]; nextBound.stabbingCount--; if (nextBound.IsUpper()){ if (TestOverlap(oldValues, nextProxy)){ m_pairManager.RemoveBufferedPair(proxyId, nextProxyId); }; as3arr = nextProxy.upperBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.stabbingCount--; } else { as3arr = nextProxy.lowerBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.stabbingCount++; }; as3arr = proxy.lowerBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.Swap(nextBound); index++; }; }; if (deltaUpper < 0){ index = upperIndex; while ((((index > 0)) && ((upperValue < (bounds[int((index - 1))] as b2Bound).value)))) { bound = bounds[index]; prevBound = bounds[int((index - 1))]; prevProxyId = prevBound.proxyId; prevProxy = m_proxyPool[prevProxyId]; prevBound.stabbingCount--; if (prevBound.IsLower() == true){ if (TestOverlap(oldValues, prevProxy)){ m_pairManager.RemoveBufferedPair(proxyId, prevProxyId); }; as3arr = prevProxy.lowerBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.stabbingCount--; } else { as3arr = prevProxy.upperBounds; as3int = as3arr[axis]; as3int++; as3arr[axis] = as3int; bound.stabbingCount++; }; as3arr = proxy.upperBounds; as3int = as3arr[axis]; as3int--; as3arr[axis] = as3int; bound.Swap(prevBound); index--; }; }; axis++; }; } public static function BinarySearch(bounds:Array, count:int, value:uint):uint{ var mid:int; var bound:b2Bound; var low:int; var high:int = (count - 1); while (low <= high) { mid = ((low + high) / 2); bound = bounds[mid]; if (bound.value > value){ high = (mid - 1); } else { if (bound.value < value){ low = (mid + 1); } else { return (uint(mid)); }; }; }; return (uint(low)); } } }//package Box2D.Collision
Section 14
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; public function b2BufferedPair(){ super(); } } }//package Box2D.Collision
Section 15
//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(); public function b2Collision(){ super(); } public static function EdgeSeparation(poly1:b2PolygonShape, xf1:b2XForm, edge1:int, poly2:b2PolygonShape, xf2:b2XForm):Number{ var tMat:b2Mat22; var tVec:b2Vec2; var dot:Number; var count1:int = poly1.m_vertexCount; var vertices1:Array = poly1.m_vertices; var normals1:Array = poly1.m_normals; var count2:int = poly2.m_vertexCount; var vertices2:Array = poly2.m_vertices; tMat = xf1.R; tVec = normals1[edge1]; var normal1WorldX:Number = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); var normal1WorldY:Number = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tMat = xf2.R; var normal1X:Number = ((tMat.col1.x * normal1WorldX) + (tMat.col1.y * normal1WorldY)); var normal1Y:Number = ((tMat.col2.x * normal1WorldX) + (tMat.col2.y * normal1WorldY)); var index:int; var minDot:Number = Number.MAX_VALUE; var i:int; while (i < count2) { tVec = vertices2[i]; dot = ((tVec.x * normal1X) + (tVec.y * normal1Y)); if (dot < minDot){ minDot = dot; index = i; }; i++; }; tVec = vertices1[edge1]; tMat = xf1.R; var v1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var v1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tVec = vertices2[index]; tMat = xf2.R; var v2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var v2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); v2X = (v2X - v1X); v2Y = (v2Y - v1Y); var separation:Number = ((v2X * normal1WorldX) + (v2Y * normal1WorldY)); return (separation); } public static function b2TestOverlap(a:b2AABB, b:b2AABB):Boolean{ var t1:b2Vec2 = b.lowerBound; var t2:b2Vec2 = a.upperBound; var d1X:Number = (t1.x - t2.x); var d1Y:Number = (t1.y - t2.y); t1 = a.lowerBound; t2 = b.upperBound; var d2X:Number = (t1.x - t2.x); var d2Y:Number = (t1.y - t2.y); if ((((d1X > 0)) || ((d1Y > 0)))){ return (false); }; if ((((d2X > 0)) || ((d2Y > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(c:Array, poly1:b2PolygonShape, xf1:b2XForm, edge1:int, poly2:b2PolygonShape, xf2:b2XForm):void{ var tMat:b2Mat22; var tVec:b2Vec2; var tClip:ClipVertex; var dot:Number; var count1:int = poly1.m_vertexCount; var normals1:Array = poly1.m_normals; var count2:int = poly2.m_vertexCount; var vertices2:Array = poly2.m_vertices; var normals2:Array = poly2.m_normals; tMat = xf1.R; tVec = normals1[edge1]; var normal1X:Number = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); var normal1Y:Number = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tMat = xf2.R; var tX:Number = ((tMat.col1.x * normal1X) + (tMat.col1.y * normal1Y)); normal1Y = ((tMat.col2.x * normal1X) + (tMat.col2.y * normal1Y)); normal1X = tX; var index:int; var minDot:Number = Number.MAX_VALUE; var i:int; while (i < count2) { tVec = normals2[i]; dot = ((normal1X * tVec.x) + (normal1Y * tVec.y)); if (dot < minDot){ minDot = dot; index = i; }; i++; }; var i1:int = index; var i2:int = (((i1 + 1) < count2)) ? (i1 + 1) : 0; tClip = c[0]; tVec = vertices2[i1]; tMat = xf2.R; tClip.v.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); tClip.v.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tClip.id.features.referenceEdge = edge1; tClip.id.features.incidentEdge = i1; tClip.id.features.incidentVertex = 0; tClip = c[1]; tVec = vertices2[i2]; tMat = xf2.R; tClip.v.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); tClip.v.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tClip.id.features.referenceEdge = edge1; tClip.id.features.incidentEdge = i2; tClip.id.features.incidentVertex = 1; } public static function b2CollidePolygons(manifold:b2Manifold, polyA:b2PolygonShape, xfA:b2XForm, polyB:b2PolygonShape, xfB:b2XForm):void{ var cv:ClipVertex; var poly1:b2PolygonShape; var poly2:b2PolygonShape; var edge1:int; var flip:uint; var np:int; var v12:b2Vec2; var separation:Number; var cp:b2ManifoldPoint; manifold.pointCount = 0; var edgeA:int; var edgeAO:Array = [edgeA]; var separationA:Number = FindMaxSeparation(edgeAO, polyA, xfA, polyB, xfB); edgeA = edgeAO[0]; if (separationA > 0){ return; }; var edgeB:int; var edgeBO:Array = [edgeB]; var separationB:Number = FindMaxSeparation(edgeBO, polyB, xfB, polyA, xfA); edgeB = edgeBO[0]; if (separationB > 0){ return; }; var xf1:b2XForm = new b2XForm(); var xf2:b2XForm = new b2XForm(); var k_relativeTol:Number = 0.98; var k_absoluteTol:Number = 0.001; if (separationB > ((k_relativeTol * separationA) + k_absoluteTol)){ poly1 = polyB; poly2 = polyA; xf1.Set(xfB); xf2.Set(xfA); edge1 = edgeB; flip = 1; } else { poly1 = polyA; poly2 = polyB; xf1.Set(xfA); xf2.Set(xfB); edge1 = edgeA; flip = 0; }; var incidentEdge:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); var count1:int = poly1.m_vertexCount; var vertices1:Array = poly1.m_vertices; var tVec:b2Vec2 = vertices1[edge1]; var v11:b2Vec2 = tVec.Copy(); if ((edge1 + 1) < count1){ tVec = vertices1[int((edge1 + 1))]; v12 = tVec.Copy(); } else { tVec = vertices1[0]; v12 = tVec.Copy(); }; var dv:b2Vec2 = b2Math.SubtractVV(v12, v11); var sideNormal:b2Vec2 = b2Math.b2MulMV(xf1.R, b2Math.SubtractVV(v12, v11)); sideNormal.Normalize(); var frontNormal:b2Vec2 = b2Math.b2CrossVF(sideNormal, 1); v11 = b2Math.b2MulX(xf1, v11); v12 = b2Math.b2MulX(xf1, v12); var frontOffset:Number = b2Math.b2Dot(frontNormal, v11); var sideOffset1:Number = -(b2Math.b2Dot(sideNormal, v11)); var sideOffset2:Number = b2Math.b2Dot(sideNormal, v12); var clipPoints1:Array = [new ClipVertex(), new ClipVertex()]; var clipPoints2:Array = [new ClipVertex(), new ClipVertex()]; np = ClipSegmentToLine(clipPoints1, incidentEdge, sideNormal.Negative(), sideOffset1); if (np < 2){ return; }; np = ClipSegmentToLine(clipPoints2, clipPoints1, sideNormal, sideOffset2); if (np < 2){ return; }; manifold.normal = (flip) ? frontNormal.Negative() : frontNormal.Copy(); var pointCount:int; var i:int; while (i < b2Settings.b2_maxManifoldPoints) { cv = clipPoints2[i]; separation = (b2Math.b2Dot(frontNormal, cv.v) - frontOffset); if (separation <= 0){ cp = manifold.points[pointCount]; cp.separation = separation; cp.localPoint1 = b2Math.b2MulXT(xfA, cv.v); cp.localPoint2 = b2Math.b2MulXT(xfB, cv.v); cp.id.key = cv.id._key; cp.id.features.flip = flip; pointCount++; }; i++; }; manifold.pointCount = pointCount; } public static function FindMaxSeparation(edgeIndex:Array, poly1:b2PolygonShape, xf1:b2XForm, poly2:b2PolygonShape, xf2:b2XForm):Number{ var tVec:b2Vec2; var tMat:b2Mat22; var bestEdge:int; var bestSeparation:Number; var increment:int; var dot:Number; var count1:int = poly1.m_vertexCount; var normals1:Array = poly1.m_normals; tMat = xf2.R; tVec = poly2.m_centroid; var dX:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var dY:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tMat = xf1.R; tVec = poly1.m_centroid; dX = (dX - (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)))); dY = (dY - (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)))); var dLocal1X:Number = ((dX * xf1.R.col1.x) + (dY * xf1.R.col1.y)); var dLocal1Y:Number = ((dX * xf1.R.col2.x) + (dY * xf1.R.col2.y)); var edge:int; var maxDot:Number = -(Number.MAX_VALUE); var i:int; while (i < count1) { tVec = normals1[i]; dot = ((tVec.x * dLocal1X) + (tVec.y * dLocal1Y)); if (dot > maxDot){ maxDot = dot; edge = i; }; i++; }; var s:Number = EdgeSeparation(poly1, xf1, edge, poly2, xf2); if (s > 0){ return (s); }; var prevEdge:int = (((edge - 1) >= 0)) ? (edge - 1) : (count1 - 1); var sPrev:Number = EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2); if (sPrev > 0){ return (sPrev); }; var nextEdge:int = (((edge + 1) < count1)) ? (edge + 1) : 0; var sNext:Number = EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2); if (sNext > 0){ return (sNext); }; if ((((sPrev > s)) && ((sPrev > sNext)))){ increment = -1; bestEdge = prevEdge; bestSeparation = sPrev; } else { if (sNext > s){ increment = 1; bestEdge = nextEdge; bestSeparation = sNext; } else { edgeIndex[0] = edge; return (s); }; }; while (true) { if (increment == -1){ edge = (((bestEdge - 1) >= 0)) ? (bestEdge - 1) : (count1 - 1); } else { edge = (((bestEdge + 1) < count1)) ? (bestEdge + 1) : 0; }; s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); if (s > 0){ return (s); }; if (s > bestSeparation){ bestEdge = edge; bestSeparation = s; } else { break; }; }; edgeIndex[0] = bestEdge; return (bestSeparation); } public static function ClipSegmentToLine(vOut:Array, vIn:Array, normal:b2Vec2, offset:Number):int{ var cv:ClipVertex; var numOut:int; var vIn0:b2Vec2; var vIn1:b2Vec2; var distance0:Number; var interp:Number; var tVec:b2Vec2; var cv2:ClipVertex; numOut = 0; cv = vIn[0]; vIn0 = cv.v; cv = vIn[1]; vIn1 = cv.v; distance0 = (b2Math.b2Dot(normal, vIn0) - offset); var distance1:Number = (b2Math.b2Dot(normal, vIn1) - offset); if (distance0 <= 0){ var _temp1 = numOut; numOut = (numOut + 1); var _local14 = _temp1; vOut[_local14] = vIn[0]; }; if (distance1 <= 0){ var _temp2 = numOut; numOut = (numOut + 1); _local14 = _temp2; vOut[_local14] = vIn[1]; }; if ((distance0 * distance1) < 0){ interp = (distance0 / (distance0 - distance1)); cv = vOut[numOut]; tVec = cv.v; tVec.x = (vIn0.x + (interp * (vIn1.x - vIn0.x))); tVec.y = (vIn0.y + (interp * (vIn1.y - vIn0.y))); cv = vOut[numOut]; if (distance0 > 0){ cv2 = vIn[0]; cv.id = cv2.id; } else { cv2 = vIn[1]; cv.id = cv2.id; }; numOut++; }; return (numOut); } public static function b2CollideCircles(manifold:b2Manifold, circle1:b2CircleShape, xf1:b2XForm, circle2:b2CircleShape, xf2:b2XForm):void{ var tMat:b2Mat22; var tVec:b2Vec2; var separation:Number; var dist:Number; var a:Number; manifold.pointCount = 0; tMat = xf1.R; tVec = circle1.m_localPosition; var p1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var p1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tMat = xf2.R; tVec = circle2.m_localPosition; var p2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var p2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); var dX:Number = (p2X - p1X); var dY:Number = (p2Y - p1Y); var distSqr:Number = ((dX * dX) + (dY * dY)); var r1:Number = circle1.m_radius; var r2:Number = circle2.m_radius; var radiusSum:Number = (r1 + r2); if (distSqr > (radiusSum * radiusSum)){ return; }; if (distSqr < Number.MIN_VALUE){ separation = -(radiusSum); manifold.normal.Set(0, 1); } else { dist = Math.sqrt(distSqr); separation = (dist - radiusSum); a = (1 / dist); manifold.normal.x = (a * dX); manifold.normal.y = (a * dY); }; manifold.pointCount = 1; var tPoint:b2ManifoldPoint = manifold.points[0]; tPoint.id.key = 0; tPoint.separation = separation; p1X = (p1X + (r1 * manifold.normal.x)); p1Y = (p1Y + (r1 * manifold.normal.y)); p2X = (p2X - (r2 * manifold.normal.x)); p2Y = (p2Y - (r2 * manifold.normal.y)); var pX:Number = (0.5 * (p1X + p2X)); var pY:Number = (0.5 * (p1Y + p2Y)); var tX:Number = (pX - xf1.position.x); var tY:Number = (pY - xf1.position.y); tPoint.localPoint1.x = ((tX * xf1.R.col1.x) + (tY * xf1.R.col1.y)); tPoint.localPoint1.y = ((tX * xf1.R.col2.x) + (tY * xf1.R.col2.y)); tX = (pX - xf2.position.x); tY = (pY - xf2.position.y); tPoint.localPoint2.x = ((tX * xf2.R.col1.x) + (tY * xf2.R.col1.y)); tPoint.localPoint2.y = ((tX * xf2.R.col2.x) + (tY * xf2.R.col2.y)); } public static function b2CollidePolygonAndCircle(manifold:b2Manifold, polygon:b2PolygonShape, xf1:b2XForm, circle:b2CircleShape, xf2:b2XForm):void{ var tPoint:b2ManifoldPoint; var dX:Number; var dY:Number; var positionX:Number; var positionY:Number; var tVec:b2Vec2; var tMat:b2Mat22; var dist:Number; var pX:Number; var pY:Number; var s:Number; manifold.pointCount = 0; tMat = xf2.R; tVec = circle.m_localPosition; var cX:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var cY:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); dX = (cX - xf1.position.x); dY = (cY - xf1.position.y); tMat = xf1.R; var cLocalX:Number = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); var cLocalY:Number = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); var normalIndex:int; var separation:Number = -(Number.MAX_VALUE); var radius:Number = circle.m_radius; var vertexCount:int = polygon.m_vertexCount; var vertices:Array = polygon.m_vertices; var normals:Array = polygon.m_normals; var i:int; while (i < vertexCount) { tVec = vertices[i]; dX = (cLocalX - tVec.x); dY = (cLocalY - tVec.y); tVec = normals[i]; s = ((tVec.x * dX) + (tVec.y * dY)); if (s > radius){ return; }; if (s > separation){ separation = s; normalIndex = i; }; i++; }; if (separation < Number.MIN_VALUE){ manifold.pointCount = 1; tVec = normals[normalIndex]; tMat = xf1.R; manifold.normal.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); manifold.normal.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tPoint = manifold.points[0]; tPoint.id.features.incidentEdge = normalIndex; tPoint.id.features.incidentVertex = b2_nullFeature; tPoint.id.features.referenceEdge = 0; tPoint.id.features.flip = 0; positionX = (cX - (radius * manifold.normal.x)); positionY = (cY - (radius * manifold.normal.y)); dX = (positionX - xf1.position.x); dY = (positionY - xf1.position.y); tMat = xf1.R; tPoint.localPoint1.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); tPoint.localPoint1.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); dX = (positionX - xf2.position.x); dY = (positionY - xf2.position.y); tMat = xf2.R; tPoint.localPoint2.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); tPoint.localPoint2.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); tPoint.separation = (separation - radius); return; }; var vertIndex1:int = normalIndex; var vertIndex2:int = (((vertIndex1 + 1) < vertexCount)) ? (vertIndex1 + 1) : 0; tVec = vertices[vertIndex1]; var tVec2:b2Vec2 = vertices[vertIndex2]; var eX:Number = (tVec2.x - tVec.x); var eY:Number = (tVec2.y - tVec.y); var length:Number = Math.sqrt(((eX * eX) + (eY * eY))); eX = (eX / length); eY = (eY / length); dX = (cLocalX - tVec.x); dY = (cLocalY - tVec.y); var u:Number = ((dX * eX) + (dY * eY)); tPoint = manifold.points[0]; if (u <= 0){ pX = tVec.x; pY = tVec.y; tPoint.id.features.incidentEdge = b2_nullFeature; tPoint.id.features.incidentVertex = vertIndex1; } else { if (u >= length){ pX = tVec2.x; pY = tVec2.y; tPoint.id.features.incidentEdge = b2_nullFeature; tPoint.id.features.incidentVertex = vertIndex2; } else { pX = ((eX * u) + tVec.x); pY = ((eY * u) + tVec.y); tPoint.id.features.incidentEdge = normalIndex; tPoint.id.features.incidentVertex = b2_nullFeature; }; }; dX = (cLocalX - pX); dY = (cLocalY - pY); dist = Math.sqrt(((dX * dX) + (dY * dY))); dX = (dX / dist); dY = (dY / dist); if (dist > radius){ return; }; manifold.pointCount = 1; tMat = xf1.R; manifold.normal.x = ((tMat.col1.x * dX) + (tMat.col2.x * dY)); manifold.normal.y = ((tMat.col1.y * dX) + (tMat.col2.y * dY)); positionX = (cX - (radius * manifold.normal.x)); positionY = (cY - (radius * manifold.normal.y)); dX = (positionX - xf1.position.x); dY = (positionY - xf1.position.y); tMat = xf1.R; tPoint.localPoint1.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); tPoint.localPoint1.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); dX = (positionX - xf2.position.x); dY = (positionY - xf2.position.y); tMat = xf2.R; tPoint.localPoint2.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y)); tPoint.localPoint2.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y)); tPoint.separation = (dist - radius); tPoint.id.features.referenceEdge = 0; tPoint.id.features.flip = 0; } } }//package Box2D.Collision
Section 16
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(id:b2ContactID):void{ key = id._key; } public function Copy():b2ContactID{ var id:b2ContactID = new b2ContactID(); id.key = key; return (id); } public function set key(value:uint):void{ _key = value; 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 17
//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 18
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public function b2Distance(){ super(); } public static function InPoints(w:b2Vec2, points:Array, pointCount:int):Boolean{ var points_i:b2Vec2; var dX:Number; var dY:Number; var mX:Number; var mY:Number; var k_tolerance:Number = (100 * Number.MIN_VALUE); var i:int; while (i < pointCount) { points_i = points[i]; dX = Math.abs((w.x - points_i.x)); dY = Math.abs((w.y - points_i.y)); mX = Math.max(Math.abs(w.x), Math.abs(points_i.x)); mY = Math.max(Math.abs(w.y), Math.abs(points_i.y)); if ((((dX < (k_tolerance * (mX + 1)))) && ((dY < (k_tolerance * (mY + 1)))))){ return (true); }; i++; }; return (false); } public static function DistanceGeneric(x1:b2Vec2, x2:b2Vec2, shape1, xf1:b2XForm, shape2, xf2:b2XForm):Number{ var tVec:b2Vec2; var vX:Number; var vY:Number; var w1:b2Vec2; var w2:b2Vec2; var wX:Number; var wY:Number; var vw:Number; var maxSqr:Number; var i:int; var p1s:Array = s_p1s; var p2s:Array = s_p2s; var points:Array = s_points; var pointCount:int; x1.SetV(shape1.GetFirstVertex(xf1)); x2.SetV(shape2.GetFirstVertex(xf2)); var vSqr:Number = 0; var maxIterations = 20; var iter:int; while (iter < maxIterations) { vX = (x2.x - x1.x); vY = (x2.y - x1.y); w1 = shape1.Support(xf1, vX, vY); w2 = shape2.Support(xf2, -(vX), -(vY)); vSqr = ((vX * vX) + (vY * vY)); wX = (w2.x - w1.x); wY = (w2.y - w1.y); vw = ((vX * wX) + (vY * wY)); if ((vSqr - vw) <= (0.01 * vSqr)){ if (pointCount == 0){ x1.SetV(w1); x2.SetV(w2); }; g_GJK_Iterations = iter; return (Math.sqrt(vSqr)); }; switch (pointCount){ case 0: tVec = p1s[0]; tVec.SetV(w1); tVec = p2s[0]; tVec.SetV(w2); tVec = points[0]; tVec.x = wX; tVec.y = wY; x1.SetV(p1s[0]); x2.SetV(p2s[0]); pointCount++; break; case 1: tVec = p1s[1]; tVec.SetV(w1); tVec = p2s[1]; tVec.SetV(w2); tVec = points[1]; tVec.x = wX; tVec.y = wY; pointCount = ProcessTwo(x1, x2, p1s, p2s, points); break; case 2: tVec = p1s[2]; tVec.SetV(w1); tVec = p2s[2]; tVec.SetV(w2); tVec = points[2]; tVec.x = wX; tVec.y = wY; pointCount = ProcessThree(x1, x2, p1s, p2s, points); break; }; if (pointCount == 3){ g_GJK_Iterations = iter; return (0); }; maxSqr = -(Number.MAX_VALUE); i = 0; while (i < pointCount) { tVec = points[i]; maxSqr = b2Math.b2Max(maxSqr, ((tVec.x * tVec.x) + (tVec.y * tVec.y))); i++; }; if ((((pointCount == 3)) || ((vSqr <= ((100 * Number.MIN_VALUE) * maxSqr))))){ g_GJK_Iterations = iter; vX = (x2.x - x1.x); vY = (x2.y - x1.y); vSqr = ((vX * vX) + (vY * vY)); return (Math.sqrt(vSqr)); }; iter++; }; g_GJK_Iterations = maxIterations; return (Math.sqrt(vSqr)); } public static function DistanceCC(x1:b2Vec2, x2:b2Vec2, circle1:b2CircleShape, xf1:b2XForm, circle2:b2CircleShape, xf2:b2XForm):Number{ var tMat:b2Mat22; var tVec:b2Vec2; var dLen:Number; var distance:Number; tMat = xf1.R; tVec = circle1.m_localPosition; var p1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var p1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); tMat = xf2.R; tVec = circle2.m_localPosition; var p2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); var p2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); var dX:Number = (p2X - p1X); var dY:Number = (p2Y - p1Y); var dSqr:Number = ((dX * dX) + (dY * dY)); var r1:Number = (circle1.m_radius - b2Settings.b2_toiSlop); var r2:Number = (circle2.m_radius - b2Settings.b2_toiSlop); var r:Number = (r1 + r2); if (dSqr > (r * r)){ dLen = Math.sqrt(dSqr); dX = (dX / dLen); dY = (dY / dLen); distance = (dLen - r); x1.x = (p1X + (r1 * dX)); x1.y = (p1Y + (r1 * dY)); x2.x = (p2X - (r2 * dX)); x2.y = (p2Y - (r2 * dY)); return (distance); }; if (dSqr > (Number.MIN_VALUE * Number.MIN_VALUE)){ dLen = Math.sqrt(dSqr); dX = (dX / dLen); dY = (dY / dLen); x1.x = (p1X + (r1 * dX)); x1.y = (p1Y + (r1 * dY)); x2.x = x1.x; x2.y = x1.y; return (0); }; x1.x = p1X; x1.y = p1Y; x2.x = x1.x; x2.y = x1.y; return (0); } public static function ProcessThree(x1:b2Vec2, x2:b2Vec2, p1s:Array, p2s:Array, points:Array):int{ var points_0:b2Vec2; var points_1:b2Vec2; var points_2:b2Vec2; var p1s_0:b2Vec2; var p1s_1:b2Vec2; var p1s_2:b2Vec2; var p2s_0:b2Vec2; var p2s_1:b2Vec2; var lambda:Number; points_0 = points[0]; points_1 = points[1]; points_2 = points[2]; p1s_0 = p1s[0]; p1s_1 = p1s[1]; p1s_2 = p1s[2]; p2s_0 = p2s[0]; p2s_1 = p2s[1]; var p2s_2:b2Vec2 = p2s[2]; var aX:Number = points_0.x; var aY:Number = points_0.y; var bX:Number = points_1.x; var bY:Number = points_1.y; var cX:Number = points_2.x; var cY:Number = points_2.y; var abX:Number = (bX - aX); var abY:Number = (bY - aY); var acX:Number = (cX - aX); var acY:Number = (cY - aY); var bcX:Number = (cX - bX); var bcY:Number = (cY - bY); var sn:Number = -(((aX * abX) + (aY * abY))); var sd:Number = ((bX * abX) + (bY * abY)); var tn:Number = -(((aX * acX) + (aY * acY))); var td:Number = ((cX * acX) + (cY * acY)); var un:Number = -(((bX * bcX) + (bY * bcY))); var ud:Number = ((cX * bcX) + (cY * bcY)); if ((((td <= 0)) && ((ud <= 0)))){ x1.SetV(p1s_2); x2.SetV(p2s_2); p1s_0.SetV(p1s_2); p2s_0.SetV(p2s_2); points_0.SetV(points_2); return (1); }; var n:Number = ((abX * acY) - (abY * acX)); var vc:Number = (n * ((aX * bY) - (aY * bX))); var va:Number = (n * ((bX * cY) - (bY * cX))); if ((((((((va <= 0)) && ((un >= 0)))) && ((ud >= 0)))) && (((un + ud) > 0)))){ lambda = (un / (un + ud)); x1.x = (p1s_1.x + (lambda * (p1s_2.x - p1s_1.x))); x1.y = (p1s_1.y + (lambda * (p1s_2.y - p1s_1.y))); x2.x = (p2s_1.x + (lambda * (p2s_2.x - p2s_1.x))); x2.y = (p2s_1.y + (lambda * (p2s_2.y - p2s_1.y))); p1s_0.SetV(p1s_2); p2s_0.SetV(p2s_2); points_0.SetV(points_2); return (2); }; var vb:Number = (n * ((cX * aY) - (cY * aX))); if ((((((((vb <= 0)) && ((tn >= 0)))) && ((td >= 0)))) && (((tn + td) > 0)))){ lambda = (tn / (tn + td)); x1.x = (p1s_0.x + (lambda * (p1s_2.x - p1s_0.x))); x1.y = (p1s_0.y + (lambda * (p1s_2.y - p1s_0.y))); x2.x = (p2s_0.x + (lambda * (p2s_2.x - p2s_0.x))); x2.y = (p2s_0.y + (lambda * (p2s_2.y - p2s_0.y))); p1s_1.SetV(p1s_2); p2s_1.SetV(p2s_2); points_1.SetV(points_2); return (2); }; var denom:Number = ((va + vb) + vc); denom = (1 / denom); var u:Number = (va * denom); var v:Number = (vb * denom); var w:Number = ((1 - u) - v); x1.x = (((u * p1s_0.x) + (v * p1s_1.x)) + (w * p1s_2.x)); x1.y = (((u * p1s_0.y) + (v * p1s_1.y)) + (w * p1s_2.y)); x2.x = (((u * p2s_0.x) + (v * p2s_1.x)) + (w * p2s_2.x)); x2.y = (((u * p2s_0.y) + (v * p2s_1.y)) + (w * p2s_2.y)); return (3); } public static function DistancePC(x1:b2Vec2, x2:b2Vec2, polygon:b2PolygonShape, xf1:b2XForm, circle:b2CircleShape, xf2:b2XForm):Number{ var tMat:b2Mat22; var tVec:b2Vec2; var dX:Number; var dY:Number; var dLen:Number; var point:b2Point = gPoint; tVec = circle.m_localPosition; tMat = xf2.R; point.p.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); point.p.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); var distance:Number = DistanceGeneric(x1, x2, polygon, xf1, point, b2Math.b2XForm_identity); var r:Number = (circle.m_radius - b2Settings.b2_toiSlop); if (distance > r){ distance = (distance - r); dX = (x2.x - x1.x); dY = (x2.y - x1.y); dLen = Math.sqrt(((dX * dX) + (dY * dY))); dX = (dX / dLen); dY = (dY / dLen); x2.x = (x2.x - (r * dX)); x2.y = (x2.y - (r * dY)); } else { distance = 0; x2.x = x1.x; x2.y = x1.y; }; return (distance); } public static function Distance(x1:b2Vec2, x2:b2Vec2, shape1:b2Shape, xf1:b2XForm, shape2:b2Shape, xf2:b2XForm):Number{ var type1:int = shape1.m_type; var type2:int = shape2.m_type; if ((((type1 == b2Shape.e_circleShape)) && ((type2 == b2Shape.e_circleShape)))){ return (DistanceCC(x1, x2, (shape1 as b2CircleShape), xf1, (shape2 as b2CircleShape), xf2)); }; if ((((type1 == b2Shape.e_polygonShape)) && ((type2 == b2Shape.e_circleShape)))){ return (DistancePC(x1, x2, (shape1 as b2PolygonShape), xf1, (shape2 as b2CircleShape), xf2)); }; if ((((type1 == b2Shape.e_circleShape)) && ((type2 == b2Shape.e_polygonShape)))){ return (DistancePC(x2, x1, (shape2 as b2PolygonShape), xf2, (shape1 as b2CircleShape), xf1)); }; if ((((type1 == b2Shape.e_polygonShape)) && ((type2 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(x1, x2, (shape1 as b2PolygonShape), xf1, (shape2 as b2PolygonShape), xf2)); }; return (0); } public static function ProcessTwo(x1:b2Vec2, x2:b2Vec2, p1s:Array, p2s:Array, points:Array):int{ var p1s_1:b2Vec2; var p2s_0:b2Vec2; var p2s_1:b2Vec2; var lambda:Number; var points_0:b2Vec2 = points[0]; var points_1:b2Vec2 = points[1]; var p1s_0:b2Vec2 = p1s[0]; p1s_1 = p1s[1]; p2s_0 = p2s[0]; p2s_1 = p2s[1]; var rX:Number = -(points_1.x); var rY:Number = -(points_1.y); var dX:Number = (points_0.x - points_1.x); var dY:Number = (points_0.y - points_1.y); var length:Number = Math.sqrt(((dX * dX) + (dY * dY))); dX = (dX / length); dY = (dY / length); lambda = ((rX * dX) + (rY * dY)); if ((((lambda <= 0)) || ((length < Number.MIN_VALUE)))){ x1.SetV(p1s_1); x2.SetV(p2s_1); p1s_0.SetV(p1s_1); p2s_0.SetV(p2s_1); points_0.SetV(points_1); return (1); }; lambda = (lambda / length); x1.x = (p1s_1.x + (lambda * (p1s_0.x - p1s_1.x))); x1.y = (p1s_1.y + (lambda * (p1s_0.y - p1s_1.y))); x2.x = (p2s_1.x + (lambda * (p2s_0.x - p2s_1.x))); x2.y = (p2s_1.y + (lambda * (p2s_0.y - p2s_1.y))); return (2); } } }//package Box2D.Collision
Section 19
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ super(); points = new Array(b2Settings.b2_maxManifoldPoints); var i:int; while (i < b2Settings.b2_maxManifoldPoints) { points[i] = new b2ManifoldPoint(); i++; }; normal = new b2Vec2(); } public function Set(m:b2Manifold):void{ pointCount = m.pointCount; var i:int; while (i < b2Settings.b2_maxManifoldPoints) { (points[i] as b2ManifoldPoint).Set(m.points[i]); i++; }; normal.SetV(m.normal); } public function Reset():void{ var i:int; while (i < b2Settings.b2_maxManifoldPoints) { (points[i] as b2ManifoldPoint).Reset(); i++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 20
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(m:b2ManifoldPoint):void{ localPoint1.SetV(m.localPoint1); localPoint2.SetV(m.localPoint2); separation = m.separation; normalImpulse = m.normalImpulse; tangentImpulse = m.tangentImpulse; id.key = m.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 21
//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 22
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var proxyId1:uint; public var userData;// = null public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function b2Pair(){ super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 23
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function b2PairCallback(){ super(); } public function PairRemoved(proxyUserData1, proxyUserData2, pairUserData):void{ } public function PairAdded(proxyUserData1, proxyUserData2){ return (null); } } }//package Box2D.Collision
Section 24
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var i:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); i = 0; while (i < b2Pair.b2_tableCapacity) { m_hashTable[i] = b2Pair.b2_nullPair; i++; }; m_pairs = new Array(b2Settings.b2_maxPairs); i = 0; while (i < b2Settings.b2_maxPairs) { m_pairs[i] = new b2Pair(); i++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); i = 0; while (i < b2Settings.b2_maxPairs) { m_pairBuffer[i] = new b2BufferedPair(); i++; }; i = 0; while (i < b2Settings.b2_maxPairs) { m_pairs[i].proxyId1 = b2Pair.b2_nullProxy; m_pairs[i].proxyId2 = b2Pair.b2_nullProxy; m_pairs[i].userData = null; m_pairs[i].status = 0; m_pairs[i].next = (i + 1); i++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(proxyId1:uint, proxyId2:uint, hash:uint):b2Pair{ var pair:b2Pair; var index:uint = m_hashTable[hash]; pair = m_pairs[index]; while (((!((index == b2Pair.b2_nullPair))) && ((Equals(pair, proxyId1, proxyId2) == false)))) { index = pair.next; pair = m_pairs[index]; }; if (index == b2Pair.b2_nullPair){ return (null); }; return (pair); } private function Find(proxyId1:uint, proxyId2:uint):b2Pair{ var temp:uint; if (proxyId1 > proxyId2){ temp = proxyId1; proxyId1 = proxyId2; proxyId2 = temp; }; var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask); return (FindHash(proxyId1, proxyId2, hash)); } private function ValidateBuffer():void{ } public function Commit():void{ var bufferedPair:b2BufferedPair; var i:int; var pair:b2Pair; var proxy1:b2Proxy; var proxy2:b2Proxy; var removeCount:int; var proxies:Array = m_broadPhase.m_proxyPool; i = 0; while (i < m_pairBufferCount) { bufferedPair = m_pairBuffer[i]; pair = Find(bufferedPair.proxyId1, bufferedPair.proxyId2); pair.ClearBuffered(); proxy1 = proxies[pair.proxyId1]; proxy2 = proxies[pair.proxyId2]; if (pair.IsRemoved()){ if (pair.IsFinal() == true){ m_callback.PairRemoved(proxy1.userData, proxy2.userData, pair.userData); }; bufferedPair = m_pairBuffer[removeCount]; bufferedPair.proxyId1 = pair.proxyId1; bufferedPair.proxyId2 = pair.proxyId2; removeCount++; } else { if (pair.IsFinal() == false){ pair.userData = m_callback.PairAdded(proxy1.userData, proxy2.userData); pair.SetFinal(); }; }; i++; }; i = 0; while (i < removeCount) { bufferedPair = m_pairBuffer[i]; RemovePair(bufferedPair.proxyId1, bufferedPair.proxyId2); i++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(proxyId1:int, proxyId2:int):void{ var bufferedPair:b2BufferedPair; var pair:b2Pair = Find(proxyId1, proxyId2); if (pair == null){ return; }; if (pair.IsBuffered() == false){ pair.SetBuffered(); bufferedPair = m_pairBuffer[m_pairBufferCount]; bufferedPair.proxyId1 = pair.proxyId1; bufferedPair.proxyId2 = pair.proxyId2; m_pairBufferCount++; }; pair.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(proxyId1:uint, proxyId2:uint){ var pair:b2Pair; var temp:uint; var index:uint; var userData:*; if (proxyId1 > proxyId2){ temp = proxyId1; proxyId1 = proxyId2; proxyId2 = temp; }; var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask); var node:uint = m_hashTable[hash]; var pNode:b2Pair; while (node != b2Pair.b2_nullPair) { if (Equals(m_pairs[node], proxyId1, proxyId2)){ index = node; pair = m_pairs[node]; if (pNode){ pNode.next = pair.next; } else { m_hashTable[hash] = pair.next; }; pair = m_pairs[index]; userData = pair.userData; pair.next = m_freePair; pair.proxyId1 = b2Pair.b2_nullProxy; pair.proxyId2 = b2Pair.b2_nullProxy; pair.userData = null; pair.status = 0; m_freePair = index; m_pairCount--; return (userData); } else { pNode = m_pairs[node]; node = pNode.next; }; }; return (null); } public function Initialize(broadPhase:b2BroadPhase, callback:b2PairCallback):void{ m_broadPhase = broadPhase; m_callback = callback; } public function AddBufferedPair(proxyId1:int, proxyId2:int):void{ var bufferedPair:b2BufferedPair; var pair:b2Pair = AddPair(proxyId1, proxyId2); if (pair.IsBuffered() == false){ pair.SetBuffered(); bufferedPair = m_pairBuffer[m_pairBufferCount]; bufferedPair.proxyId1 = pair.proxyId1; bufferedPair.proxyId2 = pair.proxyId2; m_pairBufferCount++; }; pair.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(proxyId1:uint, proxyId2:uint):b2Pair{ var temp:uint; if (proxyId1 > proxyId2){ temp = proxyId1; proxyId1 = proxyId2; proxyId2 = temp; }; var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask); var pair = FindHash(proxyId1, proxyId2, hash); if (pair != null){ return (pair); }; var pIndex:uint = m_freePair; pair = m_pairs[pIndex]; m_freePair = pair.next; pair.proxyId1 = proxyId1; pair.proxyId2 = proxyId2; pair.status = 0; pair.userData = null; pair.next = m_hashTable[hash]; m_hashTable[hash] = pIndex; m_pairCount++; return (pair); } private function ValidateTable():void{ } public static function EqualsPair(pair1:b2BufferedPair, pair2:b2BufferedPair):Boolean{ return ((((pair1.proxyId1 == pair2.proxyId1)) && ((pair1.proxyId2 == pair2.proxyId2)))); } public static function Hash(proxyId1:uint, proxyId2:uint):uint{ var key:uint = (((proxyId2 << 16) & 4294901760) | proxyId1); key = (~(key) + ((key << 15) & 4294934528)); key = (key ^ ((key >> 12) & 1048575)); key = (key + ((key << 2) & 4294967292)); key = (key ^ ((key >> 4) & 268435455)); key = (key * 2057); key = (key ^ ((key >> 16) & 0xFFFF)); return (key); } public static function Equals(pair:b2Pair, proxyId1:uint, proxyId2:uint):Boolean{ return ((((pair.proxyId1 == proxyId1)) && ((pair.proxyId2 == proxyId2)))); } } }//package Box2D.Collision
Section 25
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(xf:b2XForm):b2Vec2{ return (p); } public function Support(xf:b2XForm, vX:Number, vY:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 26
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(next:uint):void{ lowerBounds[0] = (next & 0xFFFF); } } }//package Box2D.Collision
Section 27
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{ var bX:Number; var bY:Number; var a:Number; var mu2:Number; var nLen:Number; var s:b2Vec2 = segment.p1; var rX:Number = (segment.p2.x - s.x); var rY:Number = (segment.p2.y - s.y); var dX:Number = (p2.x - p1.x); var dY:Number = (p2.y - p1.y); var nX:Number = dY; var nY:Number = -(dX); var k_slop:Number = (100 * Number.MIN_VALUE); var denom:Number = -(((rX * nX) + (rY * nY))); if (denom > k_slop){ bX = (s.x - p1.x); bY = (s.y - p1.y); a = ((bX * nX) + (bY * nY)); if ((((0 <= a)) && ((a <= (maxLambda * denom))))){ mu2 = ((-(rX) * bY) + (rY * bX)); if (((((-(k_slop) * denom) <= mu2)) && ((mu2 <= (denom * (1 + k_slop)))))){ a = (a / denom); nLen = Math.sqrt(((nX * nX) + (nY * nY))); nX = (nX / nLen); nY = (nY / nLen); lambda[0] = a; normal.Set(nX, nY); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 28
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public function b2TimeOfImpact(){ super(); } public static function TimeOfImpact(shape1:b2Shape, sweep1:b2Sweep, shape2:b2Shape, sweep2:b2Sweep):Number{ var math1:Number; var math2:Number; var t:Number; var xf1:b2XForm; var xf2:b2XForm; var nLen:Number; var approachVelocityBound:Number; var dAlpha:Number; var newAlpha:Number; var r1:Number = shape1.m_sweepRadius; var r2:Number = shape2.m_sweepRadius; var t0:Number = sweep1.t0; var v1X:Number = (sweep1.c.x - sweep1.c0.x); var v1Y:Number = (sweep1.c.y - sweep1.c0.y); var v2X:Number = (sweep2.c.x - sweep2.c0.x); var v2Y:Number = (sweep2.c.y - sweep2.c0.y); var omega1:Number = (sweep1.a - sweep1.a0); var omega2:Number = (sweep2.a - sweep2.a0); var alpha:Number = 0; var p1:b2Vec2 = s_p1; var p2:b2Vec2 = s_p2; var k_maxIterations = 20; var iter:int; var normalX:Number = 0; var normalY:Number = 0; var distance:Number = 0; var targetDistance:Number = 0; while (true) { t = (((1 - alpha) * t0) + alpha); xf1 = s_xf1; xf2 = s_xf2; sweep1.GetXForm(xf1, t); sweep2.GetXForm(xf2, t); distance = b2Distance.Distance(p1, p2, shape1, xf1, shape2, xf2); if (iter == 0){ if (distance > (2 * b2Settings.b2_toiSlop)){ targetDistance = (1.5 * b2Settings.b2_toiSlop); } else { math1 = (0.05 * b2Settings.b2_toiSlop); math2 = (distance - (0.5 * b2Settings.b2_toiSlop)); targetDistance = ((math1 > math2)) ? math1 : math2; }; }; if (((((distance - targetDistance) < (0.05 * b2Settings.b2_toiSlop))) || ((iter == k_maxIterations)))){ break; }; normalX = (p2.x - p1.x); normalY = (p2.y - p1.y); nLen = Math.sqrt(((normalX * normalX) + (normalY * normalY))); normalX = (normalX / nLen); normalY = (normalY / nLen); approachVelocityBound = ((((normalX * (v1X - v2X)) + (normalY * (v1Y - v2Y))) + (((omega1 < 0)) ? -(omega1) : omega1 * r1)) + (((omega2 < 0)) ? -(omega2) : omega2 * r2)); if (approachVelocityBound == 0){ alpha = 1; break; }; dAlpha = ((distance - targetDistance) / approachVelocityBound); newAlpha = (alpha + dAlpha); if ((((newAlpha < 0)) || ((1 < newAlpha)))){ alpha = 1; break; }; if (newAlpha < ((1 + (100 * Number.MIN_VALUE)) * alpha)){ break; }; alpha = newAlpha; iter++; }; return (alpha); } } }//package Box2D.Collision
Section 29
//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(); } } }//package Box2D.Collision
Section 30
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function Features(){ super(); } public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(value:int):void{ _incidentVertex = value; _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(value:int):void{ _referenceEdge = value; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(value:int):void{ _flip = value; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(value:int):void{ _incidentEdge = value; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 31
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(angle:Number=0, c1:b2Vec2=null, c2:b2Vec2=null){ var c:Number; var s:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((c1 == null))) && (!((c2 == null))))){ col1.SetV(c1); col2.SetV(c2); } else { c = Math.cos(angle); s = Math.sin(angle); col1.x = c; col2.x = -(s); col1.y = s; col2.y = c; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(c1:b2Vec2, c2:b2Vec2):void{ col1.SetV(c1); col2.SetV(c2); } public function Set(angle:Number):void{ var c:Number; c = Math.cos(angle); var s:Number = Math.sin(angle); col1.x = c; col2.x = -(s); col1.y = s; col2.y = c; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(m:b2Mat22):void{ col1.SetV(m.col1); col2.SetV(m.col2); } public function AddM(m:b2Mat22):void{ col1.x = (col1.x + m.col1.x); col1.y = (col1.y + m.col1.y); col2.x = (col2.x + m.col2.x); col2.y = (col2.y + m.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(out:b2Mat22):b2Mat22{ var a:Number; var c:Number; var det:Number; a = col1.x; var b:Number = col2.x; c = col1.y; var d:Number = col2.y; det = ((a * d) - (b * c)); det = (1 / det); out.col1.x = (det * d); out.col2.x = (-(det) * b); out.col1.y = (-(det) * c); out.col2.y = (det * a); return (out); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(out:b2Vec2, bX:Number, bY:Number):b2Vec2{ var a11:Number = col1.x; var a12:Number = col2.x; var a21:Number = col1.y; var a22:Number = col2.y; var det:Number = ((a11 * a22) - (a12 * a21)); det = (1 / det); out.x = (det * ((a22 * bX) - (a12 * bY))); out.y = (det * ((a11 * bY) - (a21 * bX))); return (out); } } }//package Box2D.Common.Math
Section 32
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public function b2Math(){ super(); } public static function b2CrossVF(a:b2Vec2, s:Number):b2Vec2{ var v:b2Vec2 = new b2Vec2((s * a.y), (-(s) * a.x)); return (v); } public static function AddVV(a:b2Vec2, b:b2Vec2):b2Vec2{ var v:b2Vec2 = new b2Vec2((a.x + b.x), (a.y + b.y)); return (v); } public static function b2IsValid(x:Number):Boolean{ return (isFinite(x)); } public static function b2MinV(a:b2Vec2, b:b2Vec2):b2Vec2{ var c:b2Vec2 = new b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y)); return (c); } public static function b2MulX(T:b2XForm, v:b2Vec2):b2Vec2{ var a:b2Vec2; a = b2MulMV(T.R, v); a.x = (a.x + T.position.x); a.y = (a.y + T.position.y); return (a); } public static function b2DistanceSquared(a:b2Vec2, b:b2Vec2):Number{ var cX:Number = (a.x - b.x); var cY:Number = (a.y - b.y); return (((cX * cX) + (cY * cY))); } public static function b2Swap(a:Array, b:Array):void{ var tmp:* = a[0]; a[0] = b[0]; b[0] = tmp; } public static function b2AbsM(A:b2Mat22):b2Mat22{ var B:b2Mat22 = new b2Mat22(0, b2AbsV(A.col1), b2AbsV(A.col2)); return (B); } public static function SubtractVV(a:b2Vec2, b:b2Vec2):b2Vec2{ var v:b2Vec2 = new b2Vec2((a.x - b.x), (a.y - b.y)); return (v); } public static function b2MulXT(T:b2XForm, v:b2Vec2):b2Vec2{ var a:b2Vec2; var tX:Number; a = SubtractVV(v, T.position); tX = ((a.x * T.R.col1.x) + (a.y * T.R.col1.y)); a.y = ((a.x * T.R.col2.x) + (a.y * T.R.col2.y)); a.x = tX; return (a); } public static function b2Abs(a:Number):Number{ return (((a > 0)) ? a : -(a)); } public static function b2Clamp(a:Number, low:Number, high:Number):Number{ return (b2Max(low, b2Min(a, high))); } public static function b2AbsV(a:b2Vec2):b2Vec2{ var b:b2Vec2 = new b2Vec2(b2Abs(a.x), b2Abs(a.y)); return (b); } public static function MulFV(s:Number, a:b2Vec2):b2Vec2{ var v:b2Vec2 = new b2Vec2((s * a.x), (s * a.y)); return (v); } public static function b2CrossVV(a:b2Vec2, b:b2Vec2):Number{ return (((a.x * b.y) - (a.y * b.x))); } public static function b2Dot(a:b2Vec2, b:b2Vec2):Number{ return (((a.x * b.x) + (a.y * b.y))); } public static function b2CrossFV(s:Number, a:b2Vec2):b2Vec2{ var v:b2Vec2 = new b2Vec2((-(s) * a.y), (s * a.x)); return (v); } public static function AddMM(A:b2Mat22, B:b2Mat22):b2Mat22{ var C:b2Mat22 = new b2Mat22(0, AddVV(A.col1, B.col1), AddVV(A.col2, B.col2)); return (C); } public static function b2Distance(a:b2Vec2, b:b2Vec2):Number{ var cX:Number = (a.x - b.x); var cY:Number = (a.y - b.y); return (Math.sqrt(((cX * cX) + (cY * cY)))); } public static function b2MulTMM(A:b2Mat22, B:b2Mat22):b2Mat22{ var c1:b2Vec2 = new b2Vec2(b2Dot(A.col1, B.col1), b2Dot(A.col2, B.col1)); var c2:b2Vec2 = new b2Vec2(b2Dot(A.col1, B.col2), b2Dot(A.col2, B.col2)); var C:b2Mat22 = new b2Mat22(0, c1, c2); return (C); } public static function b2MaxV(a:b2Vec2, b:b2Vec2):b2Vec2{ var c:b2Vec2 = new b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y)); return (c); } public static function b2IsPowerOfTwo(x:uint):Boolean{ var result:Boolean = (((x > 0)) && (((x & (x - 1)) == 0))); return (result); } public static function b2ClampV(a:b2Vec2, low:b2Vec2, high:b2Vec2):b2Vec2{ return (b2MaxV(low, b2MinV(a, high))); } public static function b2RandomRange(lo:Number, hi:Number):Number{ var r:Number = Math.random(); r = (((hi - lo) * r) + lo); return (r); } public static function b2MulTMV(A:b2Mat22, v:b2Vec2):b2Vec2{ var u:b2Vec2 = new b2Vec2(b2Dot(v, A.col1), b2Dot(v, A.col2)); return (u); } public static function b2Min(a:Number, b:Number):Number{ return (((a < b)) ? a : b); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(A:b2Mat22, B:b2Mat22):b2Mat22{ var C:b2Mat22 = new b2Mat22(0, b2MulMV(A, B.col1), b2MulMV(A, B.col2)); return (C); } public static function b2NextPowerOfTwo(x:uint):uint{ x = (x | ((x >> 1) & 2147483647)); x = (x | ((x >> 2) & 1073741823)); x = (x | ((x >> 4) & 268435455)); x = (x | ((x >> 8) & 0xFFFFFF)); x = (x | ((x >> 16) & 0xFFFF)); return ((x + 1)); } public static function b2Max(a:Number, b:Number):Number{ return (((a > b)) ? a : b); } public static function b2MulMV(A:b2Mat22, v:b2Vec2):b2Vec2{ var u:b2Vec2 = new b2Vec2(((A.col1.x * v.x) + (A.col2.x * v.y)), ((A.col1.y * v.x) + (A.col2.y * v.y))); return (u); } } }//package Box2D.Common.Math
Section 33
//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 a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(t:Number):void{ var alpha:Number; if ((((t0 < t)) && (((1 - t0) > Number.MIN_VALUE)))){ alpha = ((t - t0) / (1 - t0)); c0.x = (((1 - alpha) * c0.x) + (alpha * c.x)); c0.y = (((1 - alpha) * c0.y) + (alpha * c.y)); a0 = (((1 - alpha) * a0) + (alpha * a)); t0 = t; }; } public function GetXForm(xf:b2XForm, t:Number):void{ var alpha:Number; var angle:Number; if ((1 - t0) > Number.MIN_VALUE){ alpha = ((t - t0) / (1 - t0)); xf.position.x = (((1 - alpha) * c0.x) + (alpha * c.x)); xf.position.y = (((1 - alpha) * c0.y) + (alpha * c.y)); angle = (((1 - alpha) * a0) + (alpha * a)); xf.R.Set(angle); } else { xf.position.SetV(c); xf.R.Set(a); }; var tMat:b2Mat22 = xf.R; xf.position.x = (xf.position.x - ((tMat.col1.x * localCenter.x) + (tMat.col2.x * localCenter.y))); xf.position.y = (xf.position.y - ((tMat.col1.y * localCenter.x) + (tMat.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 34
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(x_:Number=0, y_:Number=0):void{ super(); x = x_; y = y_; } public function Add(v:b2Vec2):void{ x = (x + v.x); y = (y + v.y); } public function Set(x_:Number=0, y_:Number=0):void{ x = x_; y = y_; } public function Multiply(a:Number):void{ x = (x * a); y = (y * a); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(A:b2Mat22):void{ var tX:Number = x; x = ((A.col1.x * tX) + (A.col2.x * y)); y = ((A.col1.y * tX) + (A.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(b:b2Vec2):void{ x = ((x < b.x)) ? x : b.x; y = ((y < b.y)) ? y : b.y; } public function Normalize():Number{ var length:Number = Math.sqrt(((x * x) + (y * y))); if (length < Number.MIN_VALUE){ return (0); }; var invLength:Number = (1 / length); x = (x * invLength); y = (y * invLength); return (length); } public function CrossVF(s:Number):void{ var tX:Number = x; x = (s * y); y = (-(s) * tX); } public function MaxV(b:b2Vec2):void{ x = ((x > b.x)) ? x : b.x; y = ((y > b.y)) ? y : b.y; } public function SetV(v:b2Vec2):void{ x = v.x; y = v.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(s:Number):void{ var tX:Number = x; x = (-(s) * y); y = (s * tX); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(v:b2Vec2):void{ x = (x - v.x); y = (y - v.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(A:b2Mat22):void{ var tX:Number = b2Math.b2Dot(this, A.col1); y = b2Math.b2Dot(this, A.col2); x = tX; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(x_:Number, y_:Number):b2Vec2{ return (new b2Vec2(x_, y_)); } } }//package Box2D.Common.Math
Section 35
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(pos:b2Vec2=null, r:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (pos){ position.SetV(pos); R.SetM(r); }; } public function Initialize(pos:b2Vec2, r:b2Mat22):void{ position.SetV(pos); R.SetM(r); } public function Set(x:b2XForm):void{ position.SetV(x.position); R.SetM(x.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 36
//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(rr:Number, gg:Number, bb:Number){ super(); _r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1))); } public function Set(rr:Number, gg:Number, bb:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1))); } public function set b(bb:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(rr:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1))); } public function set g(gg:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1))); } } }//package Box2D.Common
Section 37
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public function b2Settings(){ super(); } public static function b2Assert(a:Boolean):void{ var nullVec:b2Vec2; if (!a){ nullVec.x++; }; } } }//package Box2D.Common
Section 38
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(shape1:b2Shape, shape2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(shape1, shape2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var point:b2ManifoldPoint = m_manifold.points[0]; point.normalImpulse = 0; point.tangentImpulse = 0; } override public function Evaluate(listener:b2ContactListener):void{ var v1:b2Vec2; var v2:b2Vec2; var mp0:b2ManifoldPoint; var mp:b2ManifoldPoint; var b1:b2Body = m_shape1.m_body; var b2:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), b1.m_xf, (m_shape2 as b2CircleShape), b2.m_xf); var cp:b2ContactPoint = s_evalCP; cp.shape1 = m_shape1; cp.shape2 = m_shape2; cp.friction = m_friction; cp.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; mp = m_manifold.points[0]; if (m0.pointCount == 0){ mp.normalImpulse = 0; mp.tangentImpulse = 0; if (listener){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = mp.id._key; listener.Add(cp); }; } else { mp0 = m0.points[0]; mp.normalImpulse = mp0.normalImpulse; mp.tangentImpulse = mp0.tangentImpulse; if (listener){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = mp.id._key; listener.Persist(cp); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (listener))){ mp0 = m0.points[0]; cp.position = b1.GetWorldPoint(mp0.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m0.normal); cp.separation = mp0.separation; cp.id.key = mp0.id._key; listener.Remove(cp); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(contact:b2Contact, allocator):void{ } public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{ return (new b2CircleContact(shape1, shape2)); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(s1:b2Shape=null, s2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(s1)) || (!(s2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((s1.IsSensor()) || (s2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = s1; m_shape2 = s2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Update(listener:b2ContactListener):void{ var oldCount:int = m_manifoldCount; Evaluate(listener); var newCount:int = m_manifoldCount; var body1:b2Body = m_shape1.m_body; var body2:b2Body = m_shape2.m_body; if ((((newCount == 0)) && ((oldCount > 0)))){ body1.WakeUp(); body2.WakeUp(); }; if (((((((body1.IsStatic()) || (body1.IsBullet()))) || (body2.IsStatic()))) || (body2.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(listener:b2ContactListener):void{ } public static function InitializeRegisters():void{ var j:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var i:int; while (i < b2Shape.e_shapeTypeCount) { s_registers[i] = new Array(b2Shape.e_shapeTypeCount); j = 0; while (j < b2Shape.e_shapeTypeCount) { s_registers[i][j] = new b2ContactRegister(); j++; }; i++; }; 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); } public static function Destroy(contact:b2Contact, allocator):void{ if (contact.m_manifoldCount > 0){ contact.m_shape1.m_body.WakeUp(); contact.m_shape2.m_body.WakeUp(); }; var type1:int = contact.m_shape1.m_type; var type2:int = contact.m_shape2.m_type; var reg:b2ContactRegister = s_registers[type1][type2]; var destroyFcn:Function = reg.destroyFcn; destroyFcn(contact, allocator); } public static function AddType(createFcn:Function, destroyFcn:Function, type1:int, type2:int):void{ s_registers[type1][type2].createFcn = createFcn; s_registers[type1][type2].destroyFcn = destroyFcn; s_registers[type1][type2].primary = true; if (type1 != type2){ s_registers[type2][type1].createFcn = createFcn; s_registers[type2][type1].destroyFcn = destroyFcn; s_registers[type2][type1].primary = false; }; } public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{ var c:b2Contact; var i:int; var m:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var type1:int = shape1.m_type; var type2:int = shape2.m_type; var reg:b2ContactRegister = s_registers[type1][type2]; var createFcn:Function = reg.createFcn; if (createFcn != null){ if (reg.primary){ return (createFcn(shape1, shape2, allocator)); }; c = createFcn(shape2, shape1, allocator); i = 0; while (i < c.m_manifoldCount) { m = c.GetManifolds()[i]; m.normal = m.normal.Negative(); i++; }; return (c); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var i:int; while (i < b2Settings.b2_maxManifoldPoints) { points[i] = new b2ContactConstraintPoint(); i++; }; } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentMass:Number; public var equalizedMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 42
//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; public function b2ContactEdge(){ super(); } } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; public function b2ContactRegister(){ super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 45
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(step:b2TimeStep, contacts:Array, contactCount:int, allocator){ var contact:b2Contact; var i:int; var tVec:b2Vec2; var tMat:b2Mat22; var b1:b2Body; var b2:b2Body; var manifoldCount:int; var manifolds:Array; var friction:Number; var restitution:Number; var v1X:Number; var v1Y:Number; var v2X:Number; var v2Y:Number; var w1:Number; var w2:Number; var j:int; var manifold:b2Manifold; var normalX:Number; var normalY:Number; var c:b2ContactConstraint; var k:uint; var cp:b2ManifoldPoint; var ccp:b2ContactConstraintPoint; var tX:Number; var tY:Number; var r1X:Number; var r1Y:Number; var r2X:Number; var r2Y:Number; var r1Sqr:Number; var r2Sqr:Number; var rn1:Number; var rn2:Number; var kNormal:Number; var kEqualized:Number; var tangentX:Number; var tangentY:Number; var rt1:Number; var rt2:Number; var kTangent:Number; var vRel:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = step.dt; m_step.inv_dt = step.inv_dt; m_step.maxIterations = step.maxIterations; m_allocator = allocator; m_constraintCount = 0; i = 0; while (i < contactCount) { contact = contacts[i]; m_constraintCount = (m_constraintCount + contact.m_manifoldCount); i++; }; i = 0; while (i < m_constraintCount) { m_constraints[i] = new b2ContactConstraint(); i++; }; var count:int; i = 0; while (i < contactCount) { contact = contacts[i]; b1 = contact.m_shape1.m_body; b2 = contact.m_shape2.m_body; manifoldCount = contact.m_manifoldCount; manifolds = contact.GetManifolds(); friction = contact.m_friction; restitution = contact.m_restitution; v1X = b1.m_linearVelocity.x; v1Y = b1.m_linearVelocity.y; v2X = b2.m_linearVelocity.x; v2Y = b2.m_linearVelocity.y; w1 = b1.m_angularVelocity; w2 = b2.m_angularVelocity; j = 0; while (j < manifoldCount) { manifold = manifolds[j]; normalX = manifold.normal.x; normalY = manifold.normal.y; c = m_constraints[count]; c.body1 = b1; c.body2 = b2; c.manifold = manifold; c.normal.x = normalX; c.normal.y = normalY; c.pointCount = manifold.pointCount; c.friction = friction; c.restitution = restitution; k = 0; while (k < c.pointCount) { cp = manifold.points[k]; ccp = c.points[k]; ccp.normalImpulse = cp.normalImpulse; ccp.tangentImpulse = cp.tangentImpulse; ccp.separation = cp.separation; ccp.positionImpulse = 0; ccp.localAnchor1.SetV(cp.localPoint1); ccp.localAnchor2.SetV(cp.localPoint2); tMat = b1.m_xf.R; r1X = (cp.localPoint1.x - b1.m_sweep.localCenter.x); r1Y = (cp.localPoint1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; ccp.r1.Set(r1X, r1Y); tMat = b2.m_xf.R; r2X = (cp.localPoint2.x - b2.m_sweep.localCenter.x); r2Y = (cp.localPoint2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; ccp.r2.Set(r2X, r2Y); r1Sqr = ((r1X * r1X) + (r1Y * r1Y)); r2Sqr = ((r2X * r2X) + (r2Y * r2Y)); rn1 = ((r1X * normalX) + (r1Y * normalY)); rn2 = ((r2X * normalX) + (r2Y * normalY)); kNormal = (b1.m_invMass + b2.m_invMass); kNormal = (kNormal + ((b1.m_invI * (r1Sqr - (rn1 * rn1))) + (b2.m_invI * (r2Sqr - (rn2 * rn2))))); ccp.normalMass = (1 / kNormal); kEqualized = ((b1.m_mass * b1.m_invMass) + (b2.m_mass * b2.m_invMass)); kEqualized = (kEqualized + (((b1.m_mass * b1.m_invI) * (r1Sqr - (rn1 * rn1))) + ((b2.m_mass * b2.m_invI) * (r2Sqr - (rn2 * rn2))))); ccp.equalizedMass = (1 / kEqualized); tangentX = normalY; tangentY = -(normalX); rt1 = ((r1X * tangentX) + (r1Y * tangentY)); rt2 = ((r2X * tangentX) + (r2Y * tangentY)); kTangent = (b1.m_invMass + b2.m_invMass); kTangent = (kTangent + ((b1.m_invI * (r1Sqr - (rt1 * rt1))) + (b2.m_invI * (r2Sqr - (rt2 * rt2))))); ccp.tangentMass = (1 / kTangent); ccp.velocityBias = 0; if (ccp.separation > 0){ ccp.velocityBias = (-60 * ccp.separation); }; tX = (((v2X + (-(w2) * r2Y)) - v1X) - (-(w1) * r1Y)); tY = (((v2Y + (w2 * r2X)) - v1Y) - (w1 * r1X)); vRel = ((c.normal.x * tX) + (c.normal.y * tY)); if (vRel < -(b2Settings.b2_velocityThreshold)){ ccp.velocityBias = (ccp.velocityBias + (-(c.restitution) * vRel)); }; k++; }; count++; j++; }; i++; }; } public function InitVelocityConstraints(step:b2TimeStep):void{ var tVec:b2Vec2; var tVec2:b2Vec2; var tMat:b2Mat22; var c:b2ContactConstraint; var b1:b2Body; var b2:b2Body; var invMass1:Number; var invI1:Number; var invMass2:Number; var invI2:Number; var normalX:Number; var normalY:Number; var tangentX:Number; var tangentY:Number; var tX:Number; var j:int; var tCount:int; var ccp:b2ContactConstraintPoint; var PX:Number; var PY:Number; var ccp2:b2ContactConstraintPoint; var i:int; while (i < m_constraintCount) { c = m_constraints[i]; b1 = c.body1; b2 = c.body2; invMass1 = b1.m_invMass; invI1 = b1.m_invI; invMass2 = b2.m_invMass; invI2 = b2.m_invI; normalX = c.normal.x; normalY = c.normal.y; tangentX = normalY; tangentY = -(normalX); if (step.warmStarting){ tCount = c.pointCount; j = 0; while (j < tCount) { ccp = c.points[j]; ccp.normalImpulse = (ccp.normalImpulse * step.dtRatio); ccp.tangentImpulse = (ccp.tangentImpulse * step.dtRatio); PX = ((ccp.normalImpulse * normalX) + (ccp.tangentImpulse * tangentX)); PY = ((ccp.normalImpulse * normalY) + (ccp.tangentImpulse * tangentY)); b1.m_angularVelocity = (b1.m_angularVelocity - (invI1 * ((ccp.r1.x * PY) - (ccp.r1.y * PX)))); b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (invMass1 * PX)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (invMass1 * PY)); b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * ((ccp.r2.x * PY) - (ccp.r2.y * PX)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (invMass2 * PX)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (invMass2 * PY)); j++; }; } else { tCount = c.pointCount; j = 0; while (j < tCount) { ccp2 = c.points[j]; ccp2.normalImpulse = 0; ccp2.tangentImpulse = 0; j++; }; }; i++; }; } public function SolvePositionConstraints(baumgarte:Number):Boolean{ var tMat:b2Mat22; var tVec:b2Vec2; var c:b2ContactConstraint; var b1:b2Body; var b2:b2Body; var b1_sweep_c:b2Vec2; var b1_sweep_a:Number; var b2_sweep_c:b2Vec2; var b2_sweep_a:Number; var invMass1:Number; var invI1:Number; var invMass2:Number; var invI2:Number; var normalX:Number; var normalY:Number; var tCount:int; var j:int; var ccp:b2ContactConstraintPoint; var r1X:Number; var r1Y:Number; var r2X:Number; var r2Y:Number; var tX:Number; var p1X:Number; var p1Y:Number; var p2X:Number; var p2Y:Number; var dpX:Number; var dpY:Number; var separation:Number; var C:Number; var dImpulse:Number; var impulse0:Number; var impulseX:Number; var impulseY:Number; var minSeparation:Number = 0; var i:int; while (i < m_constraintCount) { c = m_constraints[i]; b1 = c.body1; b2 = c.body2; b1_sweep_c = b1.m_sweep.c; b1_sweep_a = b1.m_sweep.a; b2_sweep_c = b2.m_sweep.c; b2_sweep_a = b2.m_sweep.a; invMass1 = (b1.m_mass * b1.m_invMass); invI1 = (b1.m_mass * b1.m_invI); invMass2 = (b2.m_mass * b2.m_invMass); invI2 = (b2.m_mass * b2.m_invI); normalX = c.normal.x; normalY = c.normal.y; tCount = c.pointCount; j = 0; while (j < tCount) { ccp = c.points[j]; tMat = b1.m_xf.R; tVec = b1.m_sweep.localCenter; r1X = (ccp.localAnchor1.x - tVec.x); r1Y = (ccp.localAnchor1.y - tVec.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; tVec = b2.m_sweep.localCenter; r2X = (ccp.localAnchor2.x - tVec.x); r2Y = (ccp.localAnchor2.y - tVec.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; p1X = (b1_sweep_c.x + r1X); p1Y = (b1_sweep_c.y + r1Y); p2X = (b2_sweep_c.x + r2X); p2Y = (b2_sweep_c.y + r2Y); dpX = (p2X - p1X); dpY = (p2Y - p1Y); separation = (((dpX * normalX) + (dpY * normalY)) + ccp.separation); minSeparation = b2Math.b2Min(minSeparation, separation); C = (baumgarte * b2Math.b2Clamp((separation + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); dImpulse = (-(ccp.equalizedMass) * C); impulse0 = ccp.positionImpulse; ccp.positionImpulse = b2Math.b2Max((impulse0 + dImpulse), 0); dImpulse = (ccp.positionImpulse - impulse0); impulseX = (dImpulse * normalX); impulseY = (dImpulse * normalY); b1_sweep_c.x = (b1_sweep_c.x - (invMass1 * impulseX)); b1_sweep_c.y = (b1_sweep_c.y - (invMass1 * impulseY)); b1_sweep_a = (b1_sweep_a - (invI1 * ((r1X * impulseY) - (r1Y * impulseX)))); b1.m_sweep.a = b1_sweep_a; b1.SynchronizeTransform(); b2_sweep_c.x = (b2_sweep_c.x + (invMass2 * impulseX)); b2_sweep_c.y = (b2_sweep_c.y + (invMass2 * impulseY)); b2_sweep_a = (b2_sweep_a + (invI2 * ((r2X * impulseY) - (r2Y * impulseX)))); b2.m_sweep.a = b2_sweep_a; b2.SynchronizeTransform(); j++; }; i++; }; return ((minSeparation >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var j:int; var ccp:b2ContactConstraintPoint; var r1X:Number; var r1Y:Number; var r2X:Number; var r2Y:Number; var dvX:Number; var dvY:Number; var vn:Number; var vt:Number; var lambda_n:Number; var lambda_t:Number; var newImpulse_n:Number; var newImpulse_t:Number; var PX:Number; var PY:Number; var tMat:b2Mat22; var tVec:b2Vec2; var c:b2ContactConstraint; var b1:b2Body; var b2:b2Body; var w1:Number; var w2:Number; var v1:b2Vec2; var v2:b2Vec2; var invMass1:Number; var invI1:Number; var invMass2:Number; var invI2:Number; var normalX:Number; var normalY:Number; var tangentX:Number; var tangentY:Number; var friction:Number; var tX:Number; var tCount:int; var maxFriction:Number; var i:int; while (i < m_constraintCount) { c = m_constraints[i]; b1 = c.body1; b2 = c.body2; w1 = b1.m_angularVelocity; w2 = b2.m_angularVelocity; v1 = b1.m_linearVelocity; v2 = b2.m_linearVelocity; invMass1 = b1.m_invMass; invI1 = b1.m_invI; invMass2 = b2.m_invMass; invI2 = b2.m_invI; normalX = c.normal.x; normalY = c.normal.y; tangentX = normalY; tangentY = -(normalX); friction = c.friction; tCount = c.pointCount; j = 0; while (j < tCount) { ccp = c.points[j]; dvX = (((v2.x + (-(w2) * ccp.r2.y)) - v1.x) - (-(w1) * ccp.r1.y)); dvY = (((v2.y + (w2 * ccp.r2.x)) - v1.y) - (w1 * ccp.r1.x)); vn = ((dvX * normalX) + (dvY * normalY)); lambda_n = (-(ccp.normalMass) * (vn - ccp.velocityBias)); vt = ((dvX * tangentX) + (dvY * tangentY)); lambda_t = (ccp.tangentMass * -(vt)); newImpulse_n = b2Math.b2Max((ccp.normalImpulse + lambda_n), 0); lambda_n = (newImpulse_n - ccp.normalImpulse); maxFriction = (friction * ccp.normalImpulse); newImpulse_t = b2Math.b2Clamp((ccp.tangentImpulse + lambda_t), -(maxFriction), maxFriction); lambda_t = (newImpulse_t - ccp.tangentImpulse); PX = ((lambda_n * normalX) + (lambda_t * tangentX)); PY = ((lambda_n * normalY) + (lambda_t * tangentY)); v1.x = (v1.x - (invMass1 * PX)); v1.y = (v1.y - (invMass1 * PY)); w1 = (w1 - (invI1 * ((ccp.r1.x * PY) - (ccp.r1.y * PX)))); v2.x = (v2.x + (invMass2 * PX)); v2.y = (v2.y + (invMass2 * PY)); w2 = (w2 + (invI2 * ((ccp.r2.x * PY) - (ccp.r2.y * PX)))); ccp.normalImpulse = newImpulse_n; ccp.tangentImpulse = newImpulse_t; j++; }; b1.m_angularVelocity = w1; b2.m_angularVelocity = w2; i++; }; } public function FinalizeVelocityConstraints():void{ var c:b2ContactConstraint; var m:b2Manifold; var j:int; var point1:b2ManifoldPoint; var point2:b2ContactConstraintPoint; var i:int; while (i < m_constraintCount) { c = m_constraints[i]; m = c.manifold; j = 0; while (j < c.pointCount) { point1 = m.points[j]; point2 = c.points[j]; point1.normalImpulse = point2.normalImpulse; point1.tangentImpulse = point2.tangentImpulse; j++; }; i++; }; } } }//package Box2D.Dynamics.Contacts
Section 46
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { public function b2NullContact(){ super(); } override public function Evaluate(l:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(shape1:b2Shape, shape2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(shape1, shape2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var point:b2ManifoldPoint = m_manifold.points[0]; point.normalImpulse = 0; point.tangentImpulse = 0; } override public function Evaluate(listener:b2ContactListener):void{ var i:int; var v1:b2Vec2; var v2:b2Vec2; var mp0:b2ManifoldPoint; var mp:b2ManifoldPoint; var found:Boolean; var idKey:uint; var j:int; var b1:b2Body = m_shape1.m_body; var b2:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), b1.m_xf, (m_shape2 as b2CircleShape), b2.m_xf); var persisted:Array = [false, false]; var cp:b2ContactPoint = s_evalCP; cp.shape1 = m_shape1; cp.shape2 = m_shape2; cp.friction = m_friction; cp.restitution = m_restitution; if (m_manifold.pointCount > 0){ i = 0; while (i < m_manifold.pointCount) { mp = m_manifold.points[i]; mp.normalImpulse = 0; mp.tangentImpulse = 0; found = false; idKey = mp.id._key; j = 0; while (j < m0.pointCount) { if (persisted[j] == true){ } else { mp0 = m0.points[j]; if (mp0.id._key == idKey){ persisted[j] = true; mp.normalImpulse = mp0.normalImpulse; mp.tangentImpulse = mp0.tangentImpulse; found = true; if (listener != null){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = idKey; listener.Persist(cp); }; break; }; }; j++; }; if ((((found == false)) && (!((listener == null))))){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = idKey; listener.Add(cp); }; i++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (listener == null){ return; }; i = 0; while (i < m0.pointCount) { if (persisted[i]){ } else { mp0 = m0.points[i]; cp.position = b1.GetWorldPoint(mp0.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m0.normal); cp.separation = mp0.separation; cp.id.key = mp0.id._key; listener.Remove(cp); }; i++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(contact:b2Contact, allocator):void{ } public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{ return (new b2PolyAndCircleContact(shape1, shape2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(shape1:b2Shape, shape2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(shape1, shape2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function Evaluate(listener:b2ContactListener):void{ var v1:b2Vec2; var v2:b2Vec2; var mp0:b2ManifoldPoint; var cp:b2ContactPoint; var i:int; var mp:b2ManifoldPoint; var found:Boolean; var idKey:uint; var j:int; var b1:b2Body = m_shape1.m_body; var b2:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), b1.m_xf, (m_shape2 as b2PolygonShape), b2.m_xf); var persisted:Array = [false, false]; cp = s_evalCP; cp.shape1 = m_shape1; cp.shape2 = m_shape2; cp.friction = m_friction; cp.restitution = m_restitution; if (m_manifold.pointCount > 0){ i = 0; while (i < m_manifold.pointCount) { mp = m_manifold.points[i]; mp.normalImpulse = 0; mp.tangentImpulse = 0; found = false; idKey = mp.id._key; j = 0; while (j < m0.pointCount) { if (persisted[j] == true){ } else { mp0 = m0.points[j]; if (mp0.id._key == idKey){ persisted[j] = true; mp.normalImpulse = mp0.normalImpulse; mp.tangentImpulse = mp0.tangentImpulse; found = true; if (listener != null){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = idKey; listener.Persist(cp); }; break; }; }; j++; }; if ((((found == false)) && (!((listener == null))))){ cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m_manifold.normal); cp.separation = mp.separation; cp.id.key = idKey; listener.Add(cp); }; i++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (listener == null){ return; }; i = 0; while (i < m0.pointCount) { if (persisted[i]){ } else { mp0 = m0.points[i]; cp.position = b1.GetWorldPoint(mp0.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.normal.SetV(m0.normal); cp.separation = mp0.separation; cp.id.key = mp0.id._key; listener.Remove(cp); }; i++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(contact:b2Contact, allocator):void{ } public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{ return (new b2PolygonContact(shape1, shape2)); } } }//package Box2D.Dynamics.Contacts
Section 49
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_length:Number; public function b2DistanceJoint(def:b2DistanceJointDef){ var tMat:b2Mat22; var tX:Number; var tY:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(def); m_localAnchor1.SetV(def.localAnchor1); m_localAnchor2.SetV(def.localAnchor2); m_length = def.length; m_frequencyHz = def.frequencyHz; m_dampingRatio = def.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var tX:Number; var b1:b2Body; var b2:b2Body; var r1X:Number; var r2X:Number; var C:Number; var omega:Number; var d:Number; var k:Number; var PX:Number; var PY:Number; m_inv_dt = step.inv_dt; b1 = m_body1; b2 = m_body2; tMat = b1.m_xf.R; r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; m_u.x = (((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x) - r1X); m_u.y = (((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y) - r1Y); var length:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (length > b2Settings.b2_linearSlop){ m_u.Multiply((1 / length)); } else { m_u.SetZero(); }; var cr1u:Number = ((r1X * m_u.y) - (r1Y * m_u.x)); var cr2u:Number = ((r2X * m_u.y) - (r2Y * m_u.x)); var invMass:Number = (((b1.m_invMass + ((b1.m_invI * cr1u) * cr1u)) + b2.m_invMass) + ((b2.m_invI * cr2u) * cr2u)); m_mass = (1 / invMass); if (m_frequencyHz > 0){ C = (length - m_length); omega = ((2 * Math.PI) * m_frequencyHz); d = (((2 * m_mass) * m_dampingRatio) * omega); k = ((m_mass * omega) * omega); m_gamma = (1 / (step.dt * (d + (step.dt * k)))); m_bias = (((C * step.dt) * k) * m_gamma); m_mass = (1 / (invMass + m_gamma)); }; if (step.warmStarting){ m_impulse = (m_impulse * step.dtRatio); PX = (m_impulse * m_u.x); PY = (m_impulse * m_u.y); b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY)); b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ var F:b2Vec2 = new b2Vec2(); F.SetV(m_u); F.Multiply((m_inv_dt * m_impulse)); return (F); } override public function SolvePositionConstraints():Boolean{ var tMat:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var dX:Number = (((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x) - r1X); var dY:Number = (((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y) - r1Y); var length:Number = Math.sqrt(((dX * dX) + (dY * dY))); dX = (dX / length); dY = (dY / length); var C:Number = (length - m_length); C = b2Math.b2Clamp(C, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var impulse:Number = (-(m_mass) * C); m_u.Set(dX, dY); var PX:Number = (impulse * m_u.x); var PY:Number = (impulse * m_u.y); b1.m_sweep.c.x = (b1.m_sweep.c.x - (b1.m_invMass * PX)); b1.m_sweep.c.y = (b1.m_sweep.c.y - (b1.m_invMass * PY)); b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * ((r1X * PY) - (r1Y * PX)))); b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * PX)); b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * PY)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * PY) - (r2Y * PX)))); b1.SynchronizeTransform(); b2.SynchronizeTransform(); return ((b2Math.b2Abs(C) < b2Settings.b2_linearSlop)); } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var v1X:Number = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y)); var v1Y:Number = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X)); var v2X:Number = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y)); var v2Y:Number = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X)); var Cdot:Number = ((m_u.x * (v2X - v1X)) + (m_u.y * (v2Y - v1Y))); var impulse:Number = (-(m_mass) * ((Cdot + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + impulse); var PX:Number = (impulse * m_u.x); var PY:Number = (impulse * m_u.y); b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY)); b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX)))); } } }//package Box2D.Dynamics.Joints
Section 50
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(b1:b2Body, b2:b2Body, anchor1:b2Vec2, anchor2:b2Vec2):void{ body1 = b1; body2 = b2; localAnchor1.SetV(body1.GetLocalPoint(anchor1)); localAnchor2.SetV(body2.GetLocalPoint(anchor2)); var dX:Number = (anchor2.x - anchor1.x); var dY:Number = (anchor2.y - anchor1.y); length = Math.sqrt(((dX * dX) + (dY * dY))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_ground2:b2Body; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(def:b2GearJointDef){ var coordinate1:Number; var coordinate2:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(def); var type1:int = def.joint1.m_type; var type2:int = def.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = def.joint1.m_body1; m_body1 = def.joint1.m_body2; if (type1 == b2Joint.e_revoluteJoint){ m_revolute1 = (def.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); coordinate1 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (def.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); coordinate1 = m_prismatic1.GetJointTranslation(); }; m_ground2 = def.joint2.m_body1; m_body2 = def.joint2.m_body2; if (type2 == b2Joint.e_revoluteJoint){ m_revolute2 = (def.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); coordinate2 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (def.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); coordinate2 = m_prismatic2.GetJointTranslation(); }; m_ratio = def.ratio; m_constant = (coordinate1 + (m_ratio * coordinate2)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var ugX:Number; var ugY:Number; var rX:Number; var rY:Number; var tMat:b2Mat22; var tVec:b2Vec2; var crug:Number; var tX:Number; var P:Number; var g1:b2Body = m_ground1; var g2:b2Body = m_ground2; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var K:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; K = (K + b1.m_invI); } else { tMat = g1.m_xf.R; tVec = m_prismatic1.m_localXAxis1; ugX = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); ugY = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tMat = b1.m_xf.R; rX = (m_localAnchor1.x - b1.m_sweep.localCenter.x); rY = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY)); rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY)); rX = tX; crug = ((rX * ugY) - (rY * ugX)); m_J.linear1.Set(-(ugX), -(ugY)); m_J.angular1 = -(crug); K = (K + (b1.m_invMass + ((b1.m_invI * crug) * crug))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); K = (K + ((m_ratio * m_ratio) * b2.m_invI)); } else { tMat = g2.m_xf.R; tVec = m_prismatic2.m_localXAxis1; ugX = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); ugY = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)); tMat = b2.m_xf.R; rX = (m_localAnchor2.x - b2.m_sweep.localCenter.x); rY = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY)); rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY)); rX = tX; crug = ((rX * ugY) - (rY * ugX)); m_J.linear2.Set((-(m_ratio) * ugX), (-(m_ratio) * ugY)); m_J.angular2 = (-(m_ratio) * crug); K = (K + ((m_ratio * m_ratio) * (b2.m_invMass + ((b2.m_invI * crug) * crug)))); }; m_mass = (1 / K); if (step.warmStarting){ P = (step.dt * m_force); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((b1.m_invMass * P) * m_J.linear1.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((b1.m_invMass * P) * m_J.linear1.y)); b1.m_angularVelocity = (b1.m_angularVelocity + ((b1.m_invI * P) * m_J.angular1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((b2.m_invMass * P) * m_J.linear2.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((b2.m_invMass * P) * m_J.linear2.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * P) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var tMat:b2Mat22 = m_body2.m_xf.R; var rX:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var rY:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * rX) + (tMat.col2.x * rY)); rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY)); rX = tX; tX = ((m_force * m_J.angular2) - ((rX * (m_force * m_J.linear2.y)) - (rY * (m_force * m_J.linear2.x)))); return (tX); } override public function GetReactionForce():b2Vec2{ var F:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (F); } override public function SolvePositionConstraints():Boolean{ var coordinate1:Number; var coordinate2:Number; var linearError:Number = 0; var b1:b2Body = m_body1; var b2:b2Body = m_body2; if (m_revolute1){ coordinate1 = m_revolute1.GetJointAngle(); } else { coordinate1 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ coordinate2 = m_revolute2.GetJointAngle(); } else { coordinate2 = m_prismatic2.GetJointTranslation(); }; var C:Number = (m_constant - (coordinate1 + (m_ratio * coordinate2))); var impulse:Number = (-(m_mass) * C); b1.m_sweep.c.x = (b1.m_sweep.c.x + ((b1.m_invMass * impulse) * m_J.linear1.x)); b1.m_sweep.c.y = (b1.m_sweep.c.y + ((b1.m_invMass * impulse) * m_J.linear1.y)); b1.m_sweep.a = (b1.m_sweep.a + ((b1.m_invI * impulse) * m_J.angular1)); b2.m_sweep.c.x = (b2.m_sweep.c.x + ((b2.m_invMass * impulse) * m_J.linear2.x)); b2.m_sweep.c.y = (b2.m_sweep.c.y + ((b2.m_invMass * impulse) * m_J.linear2.y)); b2.m_sweep.a = (b2.m_sweep.a + ((b2.m_invI * impulse) * m_J.angular2)); b1.SynchronizeTransform(); b2.SynchronizeTransform(); return ((linearError < b2Settings.b2_linearSlop)); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var b1:b2Body = m_body1; var b2:b2Body = m_body2; var Cdot:Number = m_J.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity); var force:Number = ((-(step.inv_dt) * m_mass) * Cdot); m_force = (m_force + force); var P:Number = (step.dt * force); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((b1.m_invMass * P) * m_J.linear1.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((b1.m_invMass * P) * m_J.linear1.y)); b1.m_angularVelocity = (b1.m_angularVelocity + ((b1.m_invI * P) * m_J.angular1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((b2.m_invMass * P) * m_J.linear2.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((b2.m_invMass * P) * m_J.linear2.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * P) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 52
//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(){ super(); type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 53
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(x1:b2Vec2, a1:Number, x2:b2Vec2, a2:Number):void{ linear1.SetV(x1); angular1 = a1; linear2.SetV(x2); angular2 = a2; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(x1:b2Vec2, a1:Number, x2:b2Vec2, a2:Number):Number{ return ((((((linear1.x * x1.x) + (linear1.y * x1.y)) + (angular1 * a1)) + ((linear2.x * x2.x) + (linear2.y * x2.y))) + (angular2 * a2))); } } }//package Box2D.Dynamics.Joints
Section 54
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(def:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = def.type; m_prev = null; m_next = null; m_body1 = def.body1; m_body2 = def.body2; m_collideConnected = def.collideConnected; m_islandFlag = false; m_userData = def.userData; } public function GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(step:b2TimeStep):void{ } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(data):void{ m_userData = data; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(step:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(joint:b2Joint, allocator):void{ } public static function Create(def:b2JointDef, allocator):b2Joint{ var joint:b2Joint; switch (def.type){ case e_distanceJoint: joint = new b2DistanceJoint((def as b2DistanceJointDef)); break; case e_mouseJoint: joint = new b2MouseJoint((def as b2MouseJointDef)); break; case e_prismaticJoint: joint = new b2PrismaticJoint((def as b2PrismaticJointDef)); break; case e_revoluteJoint: joint = new b2RevoluteJoint((def as b2RevoluteJointDef)); break; case e_pulleyJoint: joint = new b2PulleyJoint((def as b2PulleyJointDef)); break; case e_gearJoint: joint = new b2GearJoint((def as b2GearJointDef)); break; default: break; }; return (joint); } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ super(); type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 56
//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; public function b2JointEdge(){ super(); } } }//package Box2D.Dynamics.Joints
Section 57
//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 K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(def:b2MouseJointDef){ var tY:Number; 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(def); m_target.SetV(def.target); var tX:Number = (m_target.x - m_body2.m_xf.position.x); tY = (m_target.y - m_body2.m_xf.position.y); var tMat:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((tX * tMat.col1.x) + (tY * tMat.col1.y)); m_localAnchor.y = ((tX * tMat.col2.x) + (tY * tMat.col2.y)); m_maxForce = def.maxForce; m_impulse.SetZero(); var mass:Number = m_body2.m_mass; var omega:Number = ((2 * b2Settings.b2_pi) * def.frequencyHz); var d:Number = (((2 * mass) * def.dampingRatio) * omega); var k:Number = ((def.timeStep * mass) * (omega * omega)); m_gamma = (1 / (d + k)); m_beta = (k / (d + k)); } public function SetTarget(target:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = target; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var b:b2Body; var tMat:b2Mat22; var rX:Number; var rY:Number; var invMass:Number; var invI:Number; b = m_body2; tMat = b.m_xf.R; rX = (m_localAnchor.x - b.m_sweep.localCenter.x); rY = (m_localAnchor.y - b.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * rX) + (tMat.col2.x * rY)); rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY)); rX = tX; invMass = b.m_invMass; invI = b.m_invI; K1.col1.x = invMass; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = invMass; K2.col1.x = ((invI * rY) * rY); K2.col2.x = ((-(invI) * rX) * rY); K2.col1.y = ((-(invI) * rX) * rY); K2.col2.y = ((invI * rX) * rX); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((b.m_sweep.c.x + rX) - m_target.x); m_C.y = ((b.m_sweep.c.y + rY) - m_target.y); b.m_angularVelocity = (b.m_angularVelocity * 0.98); var PX:Number = (step.dt * m_impulse.x); var PY:Number = (step.dt * m_impulse.y); b.m_linearVelocity.x = (b.m_linearVelocity.x + (invMass * PX)); b.m_linearVelocity.y = (b.m_linearVelocity.y + (invMass * PY)); b.m_angularVelocity = (b.m_angularVelocity + (invI * ((rX * PY) - (rY * PX)))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var tX:Number; var tY:Number; var b:b2Body = m_body2; tMat = b.m_xf.R; var rX:Number = (m_localAnchor.x - b.m_sweep.localCenter.x); var rY:Number = (m_localAnchor.y - b.m_sweep.localCenter.y); tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY)); rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY)); rX = tX; var CdotX:Number = (b.m_linearVelocity.x + (-(b.m_angularVelocity) * rY)); var CdotY:Number = (b.m_linearVelocity.y + (b.m_angularVelocity * rX)); tMat = m_mass; tX = ((CdotX + ((m_beta * step.inv_dt) * m_C.x)) + ((m_gamma * step.dt) * m_impulse.x)); tY = ((CdotY + ((m_beta * step.inv_dt) * m_C.y)) + ((m_gamma * step.dt) * m_impulse.y)); var forceX:Number = (-(step.inv_dt) * ((tMat.col1.x * tX) + (tMat.col2.x * tY))); var forceY:Number = (-(step.inv_dt) * ((tMat.col1.y * tX) + (tMat.col2.y * tY))); var oldForceX:Number = m_impulse.x; var oldForceY:Number = m_impulse.y; m_impulse.x = (m_impulse.x + forceX); m_impulse.y = (m_impulse.y + forceY); var forceMagnitude:Number = m_impulse.Length(); if (forceMagnitude > m_maxForce){ m_impulse.Multiply((m_maxForce / forceMagnitude)); }; forceX = (m_impulse.x - oldForceX); forceY = (m_impulse.y - oldForceY); var PX:Number = (step.dt * forceX); var PY:Number = (step.dt * forceY); b.m_linearVelocity.x = (b.m_linearVelocity.x + (b.m_invMass * PX)); b.m_linearVelocity.y = (b.m_linearVelocity.y + (b.m_invMass * PY)); b.m_angularVelocity = (b.m_angularVelocity + (b.m_invI * ((rX * PY) - (rY * PX)))); } } }//package Box2D.Dynamics.Joints
Section 58
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var timeStep:Number; 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; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(def:b2PrismaticJointDef){ var tMat:b2Mat22; var tX:Number; var tY:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(def); m_localAnchor1.SetV(def.localAnchor1); m_localAnchor2.SetV(def.localAnchor2); m_localXAxis1.SetV(def.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = def.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = def.lowerTranslation; m_upperTranslation = def.upperTranslation; m_maxMotorForce = def.maxMotorForce; m_motorSpeed = def.motorSpeed; m_enableLimit = def.enableLimit; m_enableMotor = def.enableMotor; } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var oldLimitForce:Number; var motorCdot:Number; var motorForce:Number; var oldMotorForce:Number; var limitCdot:Number; var limitForce:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var invMass1:Number = b1.m_invMass; var invMass2:Number = b2.m_invMass; var invI1:Number = b1.m_invI; var invI2:Number = b2.m_invI; var linearCdot:Number = m_linearJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity); var force:Number = ((-(step.inv_dt) * m_linearMass) * linearCdot); m_force = (m_force + force); var P:Number = (step.dt * force); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_linearJacobian.linear1.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_linearJacobian.linear1.y)); b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_linearJacobian.angular1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_linearJacobian.linear2.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_linearJacobian.linear2.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_linearJacobian.angular2)); var angularCdot:Number = (b2.m_angularVelocity - b1.m_angularVelocity); var torque:Number = ((-(step.inv_dt) * m_angularMass) * angularCdot); m_torque = (m_torque + torque); var L:Number = (step.dt * torque); b1.m_angularVelocity = (b1.m_angularVelocity - (invI1 * L)); b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * L)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ motorCdot = (m_motorJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity) - m_motorSpeed); motorForce = ((-(step.inv_dt) * m_motorMass) * motorCdot); oldMotorForce = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + motorForce), -(m_maxMotorForce), m_maxMotorForce); motorForce = (m_motorForce - oldMotorForce); P = (step.dt * motorForce); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_motorJacobian.linear1.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_motorJacobian.linear1.y)); b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_motorJacobian.angular1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_motorJacobian.linear2.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_motorJacobian.linear2.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ limitCdot = m_motorJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity); limitForce = ((-(step.inv_dt) * m_motorMass) * limitCdot); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + limitForce); } else { if (m_limitState == e_atLowerLimit){ oldLimitForce = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + limitForce), 0); limitForce = (m_limitForce - oldLimitForce); } else { if (m_limitState == e_atUpperLimit){ oldLimitForce = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + limitForce), 0); limitForce = (m_limitForce - oldLimitForce); }; }; }; P = (step.dt * limitForce); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_motorJacobian.linear1.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_motorJacobian.linear1.y)); b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_motorJacobian.angular1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_motorJacobian.linear2.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_motorJacobian.linear2.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_motorJacobian.angular2)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(flag:Boolean):void{ m_enableMotor = flag; } public function GetJointTranslation():Number{ var tMat:b2Mat22; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var p1:b2Vec2 = b1.GetWorldPoint(m_localAnchor1); var p2:b2Vec2 = b2.GetWorldPoint(m_localAnchor2); var dX:Number = (p2.x - p1.x); var dY:Number = (p2.y - p1.y); var axis:b2Vec2 = b1.GetWorldVector(m_localXAxis1); var translation:Number = ((axis.x * dX) + (axis.y * dY)); return (translation); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var tMat:b2Mat22 = m_body1.m_xf.R; var ax1X:Number = (m_limitForce * ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y))); var ax1Y:Number = (m_limitForce * ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y))); var ay1X:Number = (m_force * ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y))); var ay1Y:Number = (m_force * ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * ax1X) + (m_force * ay1X)), ((m_limitForce * ax1Y) + (m_force * ay1Y)))); } override public function SolvePositionConstraints():Boolean{ var limitC:Number; var oldLimitImpulse:Number; var tMat:b2Mat22; var tX:Number; var ax1X:Number; var ax1Y:Number; var translation:Number; var limitImpulse:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var invMass1:Number = b1.m_invMass; var invMass2:Number = b2.m_invMass; var invI1:Number = b1.m_invI; var invI2:Number = b2.m_invI; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var p1X:Number = (b1.m_sweep.c.x + r1X); var p1Y:Number = (b1.m_sweep.c.y + r1Y); var p2X:Number = (b2.m_sweep.c.x + r2X); var p2Y:Number = (b2.m_sweep.c.y + r2Y); var dX:Number = (p2X - p1X); var dY:Number = (p2Y - p1Y); tMat = b1.m_xf.R; var ay1X:Number = ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y)); var ay1Y:Number = ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y)); var linearC:Number = ((ay1X * dX) + (ay1Y * dY)); linearC = b2Math.b2Clamp(linearC, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var linearImpulse:Number = (-(m_linearMass) * linearC); b1.m_sweep.c.x = (b1.m_sweep.c.x + ((invMass1 * linearImpulse) * m_linearJacobian.linear1.x)); b1.m_sweep.c.y = (b1.m_sweep.c.y + ((invMass1 * linearImpulse) * m_linearJacobian.linear1.y)); b1.m_sweep.a = (b1.m_sweep.a + ((invI1 * linearImpulse) * m_linearJacobian.angular1)); b2.m_sweep.c.x = (b2.m_sweep.c.x + ((invMass2 * linearImpulse) * m_linearJacobian.linear2.x)); b2.m_sweep.c.y = (b2.m_sweep.c.y + ((invMass2 * linearImpulse) * m_linearJacobian.linear2.y)); b2.m_sweep.a = (b2.m_sweep.a + ((invI2 * linearImpulse) * m_linearJacobian.angular2)); var positionError:Number = b2Math.b2Abs(linearC); var angularC:Number = ((b2.m_sweep.a - b1.m_sweep.a) - m_refAngle); angularC = b2Math.b2Clamp(angularC, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var angularImpulse:Number = (-(m_angularMass) * angularC); b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * angularImpulse)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * angularImpulse)); b1.SynchronizeTransform(); b2.SynchronizeTransform(); var angularError:Number = b2Math.b2Abs(angularC); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ tMat = b1.m_xf.R; r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x); r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x); r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; p1X = (b1.m_sweep.c.x + r1X); p1Y = (b1.m_sweep.c.y + r1Y); p2X = (b2.m_sweep.c.x + r2X); p2Y = (b2.m_sweep.c.y + r2Y); dX = (p2X - p1X); dY = (p2Y - p1Y); tMat = b1.m_xf.R; ax1X = ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y)); ax1Y = ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y)); translation = ((ax1X * dX) + (ax1Y * dY)); limitImpulse = 0; if (m_limitState == e_equalLimits){ limitC = b2Math.b2Clamp(translation, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); limitImpulse = (-(m_motorMass) * limitC); positionError = b2Math.b2Max(positionError, b2Math.b2Abs(angularC)); } else { if (m_limitState == e_atLowerLimit){ limitC = (translation - m_lowerTranslation); positionError = b2Math.b2Max(positionError, -(limitC)); limitC = b2Math.b2Clamp((limitC + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); limitImpulse = (-(m_motorMass) * limitC); oldLimitImpulse = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + limitImpulse), 0); limitImpulse = (m_limitPositionImpulse - oldLimitImpulse); } else { if (m_limitState == e_atUpperLimit){ limitC = (translation - m_upperTranslation); positionError = b2Math.b2Max(positionError, limitC); limitC = b2Math.b2Clamp((limitC - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); limitImpulse = (-(m_motorMass) * limitC); oldLimitImpulse = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + limitImpulse), 0); limitImpulse = (m_limitPositionImpulse - oldLimitImpulse); }; }; }; b1.m_sweep.c.x = (b1.m_sweep.c.x + ((invMass1 * limitImpulse) * m_motorJacobian.linear1.x)); b1.m_sweep.c.y = (b1.m_sweep.c.y + ((invMass1 * limitImpulse) * m_motorJacobian.linear1.y)); b1.m_sweep.a = (b1.m_sweep.a + ((invI1 * limitImpulse) * m_motorJacobian.angular1)); b2.m_sweep.c.x = (b2.m_sweep.c.x + ((invMass2 * limitImpulse) * m_motorJacobian.linear2.x)); b2.m_sweep.c.y = (b2.m_sweep.c.y + ((invMass2 * limitImpulse) * m_motorJacobian.linear2.y)); b2.m_sweep.a = (b2.m_sweep.a + ((invI2 * limitImpulse) * m_motorJacobian.angular2)); b1.SynchronizeTransform(); b2.SynchronizeTransform(); }; return ((((positionError <= b2Settings.b2_linearSlop)) && ((angularError <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(speed:Number):void{ m_motorSpeed = speed; } public function GetJointSpeed():Number{ var tMat:b2Mat22; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var p1X:Number = (b1.m_sweep.c.x + r1X); var p1Y:Number = (b1.m_sweep.c.y + r1Y); var p2X:Number = (b2.m_sweep.c.x + r2X); var p2Y:Number = (b2.m_sweep.c.y + r2Y); var dX:Number = (p2X - p1X); var dY:Number = (p2Y - p1Y); var axis:b2Vec2 = b1.GetWorldVector(m_localXAxis1); var v1:b2Vec2 = b1.m_linearVelocity; var v2:b2Vec2 = b2.m_linearVelocity; var w1:Number = b1.m_angularVelocity; var w2:Number = b2.m_angularVelocity; var speed:Number = (((dX * (-(w1) * axis.y)) + (dY * (w1 * axis.x))) + ((axis.x * (((v2.x + (-(w2) * r2Y)) - v1.x) - (-(w1) * r1Y))) + (axis.y * (((v2.y + (w2 * r2X)) - v1.y) - (w1 * r1X))))); return (speed); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var tX:Number; var ax1X:Number; var ax1Y:Number; var dX:Number; var dY:Number; var jointTranslation:Number; var P1X:Number; var P1Y:Number; var P2X:Number; var P2Y:Number; var L1:Number; var L2:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var invMass1:Number = b1.m_invMass; var invMass2:Number = b2.m_invMass; var invI1:Number = b1.m_invI; var invI2:Number = b2.m_invI; tMat = b1.m_xf.R; var ay1X:Number = ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y)); var ay1Y:Number = ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y)); var eX:Number = ((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x); var eY:Number = ((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y); m_linearJacobian.linear1.x = -(ay1X); m_linearJacobian.linear1.y = -(ay1Y); m_linearJacobian.linear2.x = ay1X; m_linearJacobian.linear2.y = ay1Y; m_linearJacobian.angular1 = -(((eX * ay1Y) - (eY * ay1X))); m_linearJacobian.angular2 = ((r2X * ay1Y) - (r2Y * ay1X)); m_linearMass = (((invMass1 + ((invI1 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + invMass2) + ((invI2 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (invI1 + invI2); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ tMat = b1.m_xf.R; ax1X = ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y)); ax1Y = ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(ax1X); m_motorJacobian.linear1.y = -(ax1Y); m_motorJacobian.linear2.x = ax1X; m_motorJacobian.linear2.y = ax1Y; m_motorJacobian.angular1 = -(((eX * ax1Y) - (eY * ax1X))); m_motorJacobian.angular2 = ((r2X * ax1Y) - (r2Y * ax1X)); m_motorMass = (((invMass1 + ((invI1 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + invMass2) + ((invI2 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ dX = (eX - r1X); dY = (eY - r1Y); jointTranslation = ((ax1X * dX) + (ax1Y * dY)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (jointTranslation <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (jointTranslation >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (step.warmStarting){ P1X = (step.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); P1Y = (step.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); P2X = (step.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); P2Y = (step.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); L1 = (step.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); L2 = (step.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (invMass1 * P1X)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (invMass1 * P1Y)); b1.m_angularVelocity = (b1.m_angularVelocity + (invI1 * L1)); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (invMass2 * P2X)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (invMass2 * P2Y)); b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * L2)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function EnableLimit(flag:Boolean):void{ m_enableLimit = flag; } public function SetMaxMotorForce(force:Number):void{ m_maxMotorForce = force; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(lower:Number, upper:Number):void{ m_lowerTranslation = lower; m_upperTranslation = upper; } } }//package Box2D.Dynamics.Joints
Section 60
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(b1:b2Body, b2:b2Body, anchor:b2Vec2, axis:b2Vec2):void{ body1 = b1; body2 = b2; localAnchor1 = body1.GetLocalPoint(anchor); localAnchor2 = body2.GetLocalPoint(anchor); localAxis1 = body1.GetLocalVector(axis); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(def:b2PulleyJointDef){ var tMat:b2Mat22; var tX:Number; var tY: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(def); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (def.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (def.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (def.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (def.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(def.localAnchor1); m_localAnchor2.SetV(def.localAnchor2); m_ratio = def.ratio; m_constant = (def.length1 + (m_ratio * def.length2)); m_maxLength1 = b2Math.b2Min(def.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(def.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var a:b2Vec2 = m_ground.m_xf.position.Copy(); a.Add(m_groundAnchor2); return (a); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var F:b2Vec2 = m_u2.Copy(); F.Multiply(m_force); return (F); } override public function SolvePositionConstraints():Boolean{ var tMat:b2Mat22; var r1X:Number; var r1Y:Number; var r2X:Number; var r2Y:Number; var p1X:Number; var p1Y:Number; var p2X:Number; var p2Y:Number; var length1:Number; var length2:Number; var C:Number; var impulse:Number; var oldImpulse:Number; var oldLimitPositionImpulse:Number; var tX:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var s1X:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var s1Y:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var s2X:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var s2Y:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var linearError:Number = 0; if (m_state == e_atUpperLimit){ tMat = b1.m_xf.R; r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x); r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x); r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; p1X = (b1.m_sweep.c.x + r1X); p1Y = (b1.m_sweep.c.y + r1Y); p2X = (b2.m_sweep.c.x + r2X); p2Y = (b2.m_sweep.c.y + r2Y); m_u1.Set((p1X - s1X), (p1Y - s1Y)); m_u2.Set((p2X - s2X), (p2Y - s2Y)); length1 = m_u1.Length(); length2 = m_u2.Length(); if (length1 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / length1)); } else { m_u1.SetZero(); }; if (length2 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / length2)); } else { m_u2.SetZero(); }; C = ((m_constant - length1) - (m_ratio * length2)); linearError = b2Math.b2Max(linearError, -(C)); C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); impulse = (-(m_pulleyMass) * C); oldImpulse = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + impulse)); impulse = (m_positionImpulse - oldImpulse); p1X = (-(impulse) * m_u1.x); p1Y = (-(impulse) * m_u1.y); p2X = ((-(m_ratio) * impulse) * m_u2.x); p2Y = ((-(m_ratio) * impulse) * m_u2.y); b1.m_sweep.c.x = (b1.m_sweep.c.x + (b1.m_invMass * p1X)); b1.m_sweep.c.y = (b1.m_sweep.c.y + (b1.m_invMass * p1Y)); b1.m_sweep.a = (b1.m_sweep.a + (b1.m_invI * ((r1X * p1Y) - (r1Y * p1X)))); b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * p2X)); b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * p2Y)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * p2Y) - (r2Y * p2X)))); b1.SynchronizeTransform(); b2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ tMat = b1.m_xf.R; r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x); r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; p1X = (b1.m_sweep.c.x + r1X); p1Y = (b1.m_sweep.c.y + r1Y); m_u1.Set((p1X - s1X), (p1Y - s1Y)); length1 = m_u1.Length(); if (length1 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / length1)); m_u1.y = (m_u1.y * (1 / length1)); } else { m_u1.SetZero(); }; C = (m_maxLength1 - length1); linearError = b2Math.b2Max(linearError, -(C)); C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); impulse = (-(m_limitMass1) * C); oldLimitPositionImpulse = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + impulse)); impulse = (m_limitPositionImpulse1 - oldLimitPositionImpulse); p1X = (-(impulse) * m_u1.x); p1Y = (-(impulse) * m_u1.y); b1.m_sweep.c.x = (b1.m_sweep.c.x + (b1.m_invMass * p1X)); b1.m_sweep.c.y = (b1.m_sweep.c.y + (b1.m_invMass * p1Y)); b1.m_sweep.a = (b1.m_sweep.a + (b1.m_invI * ((r1X * p1Y) - (r1Y * p1X)))); b1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ tMat = b2.m_xf.R; r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x); r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; p2X = (b2.m_sweep.c.x + r2X); p2Y = (b2.m_sweep.c.y + r2Y); m_u2.Set((p2X - s2X), (p2Y - s2Y)); length2 = m_u2.Length(); if (length2 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / length2)); m_u2.y = (m_u2.y * (1 / length2)); } else { m_u2.SetZero(); }; C = (m_maxLength2 - length2); linearError = b2Math.b2Max(linearError, -(C)); C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); impulse = (-(m_limitMass2) * C); oldLimitPositionImpulse = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + impulse)); impulse = (m_limitPositionImpulse2 - oldLimitPositionImpulse); p2X = (-(impulse) * m_u2.x); p2Y = (-(impulse) * m_u2.y); b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * p2X)); b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * p2Y)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * p2Y) - (r2Y * p2X)))); b2.SynchronizeTransform(); }; return ((linearError < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var P1X:Number; var P1Y:Number; var P2X:Number; var P2Y:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var p1X:Number = (b1.m_sweep.c.x + r1X); var p1Y:Number = (b1.m_sweep.c.y + r1Y); var p2X:Number = (b2.m_sweep.c.x + r2X); var p2Y:Number = (b2.m_sweep.c.y + r2Y); var s1X:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var s1Y:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var s2X:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var s2Y:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((p1X - s1X), (p1Y - s1Y)); m_u2.Set((p2X - s2X), (p2Y - s2Y)); var length1:Number = m_u1.Length(); var length2:Number = m_u2.Length(); if (length1 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / length1)); } else { m_u1.SetZero(); }; if (length2 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / length2)); } else { m_u2.SetZero(); }; var C:Number = ((m_constant - length1) - (m_ratio * length2)); if (C > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (length1 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (length2 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; var cr1u1:Number = ((r1X * m_u1.y) - (r1Y * m_u1.x)); var cr2u2:Number = ((r2X * m_u2.y) - (r2Y * m_u2.x)); m_limitMass1 = (b1.m_invMass + ((b1.m_invI * cr1u1) * cr1u1)); m_limitMass2 = (b2.m_invMass + ((b2.m_invI * cr2u2) * cr2u2)); 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 (step.warmStarting){ P1X = ((step.dt * (-(m_force) - m_limitForce1)) * m_u1.x); P1Y = ((step.dt * (-(m_force) - m_limitForce1)) * m_u1.y); P2X = ((step.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); P2Y = ((step.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y)); b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var v1X:Number; var v1Y:Number; var v2X:Number; var v2Y:Number; var P1X:Number; var P1Y:Number; var P2X:Number; var P2Y:Number; var Cdot:Number; var force:Number; var oldForce:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; if (m_state == e_atUpperLimit){ v1X = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y)); v1Y = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X)); v2X = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y)); v2Y = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X)); Cdot = (-(((m_u1.x * v1X) + (m_u1.y * v1Y))) - (m_ratio * ((m_u2.x * v2X) + (m_u2.y * v2Y)))); force = ((-(step.inv_dt) * m_pulleyMass) * Cdot); oldForce = m_force; m_force = b2Math.b2Max(0, (m_force + force)); force = (m_force - oldForce); P1X = ((-(step.dt) * force) * m_u1.x); P1Y = ((-(step.dt) * force) * m_u1.y); P2X = (((-(step.dt) * m_ratio) * force) * m_u2.x); P2Y = (((-(step.dt) * m_ratio) * force) * m_u2.y); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y)); b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X)))); }; if (m_limitState1 == e_atUpperLimit){ v1X = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y)); v1Y = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X)); Cdot = -(((m_u1.x * v1X) + (m_u1.y * v1Y))); force = ((-(step.inv_dt) * m_limitMass1) * Cdot); oldForce = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + force)); force = (m_limitForce1 - oldForce); P1X = ((-(step.dt) * force) * m_u1.x); P1Y = ((-(step.dt) * force) * m_u1.y); b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y)); b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X)))); }; if (m_limitState2 == e_atUpperLimit){ v2X = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y)); v2Y = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X)); Cdot = -(((m_u2.x * v2X) + (m_u2.y * v2Y))); force = ((-(step.inv_dt) * m_limitMass2) * Cdot); oldForce = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + force)); force = (m_limitForce2 - oldForce); P2X = ((-(step.dt) * force) * m_u2.x); P2Y = ((-(step.dt) * force) * m_u2.y); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X)))); }; } public function GetLength1():Number{ var p:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var sX:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var sY:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var dX:Number = (p.x - sX); var dY:Number = (p.y - sY); return (Math.sqrt(((dX * dX) + (dY * dY)))); } public function GetLength2():Number{ var p:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var sX:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var sY:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var dX:Number = (p.x - sX); var dY:Number = (p.y - sY); return (Math.sqrt(((dX * dX) + (dY * dY)))); } public function GetGroundAnchor1():b2Vec2{ var a:b2Vec2 = m_ground.m_xf.position.Copy(); a.Add(m_groundAnchor1); return (a); } } }//package Box2D.Dynamics.Joints
Section 62
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(b1:b2Body, b2:b2Body, ga1:b2Vec2, ga2:b2Vec2, anchor1:b2Vec2, anchor2:b2Vec2, r:Number):void{ body1 = b1; body2 = b2; groundAnchor1.SetV(ga1); groundAnchor2.SetV(ga2); localAnchor1 = body1.GetLocalPoint(anchor1); localAnchor2 = body2.GetLocalPoint(anchor2); var d1X:Number = (anchor1.x - ga1.x); var d1Y:Number = (anchor1.y - ga1.y); length1 = Math.sqrt(((d1X * d1X) + (d1Y * d1Y))); var d2X:Number = (anchor2.x - ga2.x); var d2Y:Number = (anchor2.y - ga2.y); length2 = Math.sqrt(((d2X * d2X) + (d2Y * d2Y))); ratio = r; var C:Number = (length1 + (ratio * length2)); maxLength1 = (C - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((C - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_pivotMass:b2Mat22; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(def:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(def); m_localAnchor1.SetV(def.localAnchor1); m_localAnchor2.SetV(def.localAnchor2); m_referenceAngle = def.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = def.lowerAngle; m_upperAngle = def.upperAngle; m_maxMotorTorque = def.maxMotorTorque; m_motorSpeed = def.motorSpeed; m_enableLimit = def.enableLimit; m_enableMotor = def.enableMotor; } override public function SolveVelocityConstraints(step:b2TimeStep):void{ var tMat:b2Mat22; var tX:Number; var oldLimitForce:Number; var PY:Number; var motorCdot:Number; var motorForce:Number; var oldMotorForce:Number; var limitCdot:Number; var limitForce:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var pivotCdotX:Number = (((b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y)) - b1.m_linearVelocity.x) - (-(b1.m_angularVelocity) * r1Y)); var pivotCdotY:Number = (((b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X)) - b1.m_linearVelocity.y) - (b1.m_angularVelocity * r1X)); var pivotForceX:Number = (-(step.inv_dt) * ((m_pivotMass.col1.x * pivotCdotX) + (m_pivotMass.col2.x * pivotCdotY))); var pivotForceY:Number = (-(step.inv_dt) * ((m_pivotMass.col1.y * pivotCdotX) + (m_pivotMass.col2.y * pivotCdotY))); m_pivotForce.x = (m_pivotForce.x + pivotForceX); m_pivotForce.y = (m_pivotForce.y + pivotForceY); var PX:Number = (step.dt * pivotForceX); PY = (step.dt * pivotForceY); b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY)); b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX)))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY)); b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ motorCdot = ((b2.m_angularVelocity - b1.m_angularVelocity) - m_motorSpeed); motorForce = ((-(step.inv_dt) * m_motorMass) * motorCdot); oldMotorForce = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + motorForce), -(m_maxMotorTorque), m_maxMotorTorque); motorForce = (m_motorForce - oldMotorForce); b1.m_angularVelocity = (b1.m_angularVelocity - ((b1.m_invI * step.dt) * motorForce)); b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * step.dt) * motorForce)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ limitCdot = (b2.m_angularVelocity - b1.m_angularVelocity); limitForce = ((-(step.inv_dt) * m_motorMass) * limitCdot); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + limitForce); } else { if (m_limitState == e_atLowerLimit){ oldLimitForce = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + limitForce), 0); limitForce = (m_limitForce - oldLimitForce); } else { if (m_limitState == e_atUpperLimit){ oldLimitForce = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + limitForce), 0); limitForce = (m_limitForce - oldLimitForce); }; }; }; b1.m_angularVelocity = (b1.m_angularVelocity - ((b1.m_invI * step.dt) * limitForce)); b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * step.dt) * limitForce)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(flag:Boolean):void{ m_enableMotor = flag; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var oldLimitImpulse:Number; var limitC:Number; var tMat:b2Mat22; var angle:Number; var limitImpulse:Number; var b1:b2Body = m_body1; var b2:b2Body = m_body2; var positionError:Number = 0; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y); var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var p1X:Number = (b1.m_sweep.c.x + r1X); var p1Y:Number = (b1.m_sweep.c.y + r1Y); var p2X:Number = (b2.m_sweep.c.x + r2X); var p2Y:Number = (b2.m_sweep.c.y + r2Y); var ptpCX:Number = (p2X - p1X); var ptpCY:Number = (p2Y - p1Y); positionError = Math.sqrt(((ptpCX * ptpCX) + (ptpCY * ptpCY))); var invMass1:Number = b1.m_invMass; var invMass2:Number = b2.m_invMass; var invI1:Number = b1.m_invI; var invI2:Number = b2.m_invI; K1.col1.x = (invMass1 + invMass2); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (invMass1 + invMass2); K2.col1.x = ((invI1 * r1Y) * r1Y); K2.col2.x = ((-(invI1) * r1X) * r1Y); K2.col1.y = ((-(invI1) * r1X) * r1Y); K2.col2.y = ((invI1 * r1X) * r1X); K3.col1.x = ((invI2 * r2Y) * r2Y); K3.col2.x = ((-(invI2) * r2X) * r2Y); K3.col1.y = ((-(invI2) * r2X) * r2Y); K3.col2.y = ((invI2 * r2X) * r2X); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(ptpCX), -(ptpCY)); var impulseX:Number = tImpulse.x; var impulseY:Number = tImpulse.y; b1.m_sweep.c.x = (b1.m_sweep.c.x - (b1.m_invMass * impulseX)); b1.m_sweep.c.y = (b1.m_sweep.c.y - (b1.m_invMass * impulseY)); b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * ((r1X * impulseY) - (r1Y * impulseX)))); b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * impulseX)); b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * impulseY)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * impulseY) - (r2Y * impulseX)))); b1.SynchronizeTransform(); b2.SynchronizeTransform(); var angularError:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ angle = ((b2.m_sweep.a - b1.m_sweep.a) - m_referenceAngle); limitImpulse = 0; if (m_limitState == e_equalLimits){ limitC = b2Math.b2Clamp(angle, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); limitImpulse = (-(m_motorMass) * limitC); angularError = b2Math.b2Abs(limitC); } else { if (m_limitState == e_atLowerLimit){ limitC = (angle - m_lowerAngle); angularError = b2Math.b2Max(0, -(limitC)); limitC = b2Math.b2Clamp((limitC + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); limitImpulse = (-(m_motorMass) * limitC); oldLimitImpulse = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + limitImpulse), 0); limitImpulse = (m_limitPositionImpulse - oldLimitImpulse); } else { if (m_limitState == e_atUpperLimit){ limitC = (angle - m_upperAngle); angularError = b2Math.b2Max(0, limitC); limitC = b2Math.b2Clamp((limitC - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); limitImpulse = (-(m_motorMass) * limitC); oldLimitImpulse = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + limitImpulse), 0); limitImpulse = (m_limitPositionImpulse - oldLimitImpulse); }; }; }; b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * limitImpulse)); b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * limitImpulse)); b1.SynchronizeTransform(); b2.SynchronizeTransform(); }; return ((((positionError <= b2Settings.b2_linearSlop)) && ((angularError <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(speed:Number):void{ m_motorSpeed = speed; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(torque:Number):void{ m_maxMotorTorque = torque; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(step:b2TimeStep):void{ var b1:b2Body; var b2:b2Body; var tMat:b2Mat22; var tX:Number; var r1Y:Number; var jointAngle:Number; b1 = m_body1; b2 = m_body2; tMat = b1.m_xf.R; var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x); r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y); tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y)); r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y)); r1X = tX; tMat = b2.m_xf.R; var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x); var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y); tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y)); r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y)); r2X = tX; var invMass1:Number = b1.m_invMass; var invMass2:Number = b2.m_invMass; var invI1:Number = b1.m_invI; var invI2:Number = b2.m_invI; K1.col1.x = (invMass1 + invMass2); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (invMass1 + invMass2); K2.col1.x = ((invI1 * r1Y) * r1Y); K2.col2.x = ((-(invI1) * r1X) * r1Y); K2.col1.y = ((-(invI1) * r1X) * r1Y); K2.col2.y = ((invI1 * r1X) * r1X); K3.col1.x = ((invI2 * r2Y) * r2Y); K3.col2.x = ((-(invI2) * r2X) * r2Y); K3.col1.y = ((-(invI2) * r2X) * r2Y); K3.col2.y = ((invI2 * r2X) * r2X); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (invI1 + invI2)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ jointAngle = ((b2.m_sweep.a - b1.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (jointAngle <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (jointAngle >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (step.warmStarting){ b1.m_linearVelocity.x = (b1.m_linearVelocity.x - ((step.dt * invMass1) * m_pivotForce.x)); b1.m_linearVelocity.y = (b1.m_linearVelocity.y - ((step.dt * invMass1) * m_pivotForce.y)); b1.m_angularVelocity = (b1.m_angularVelocity - ((step.dt * invI1) * ((((r1X * m_pivotForce.y) - (r1Y * m_pivotForce.x)) + m_motorForce) + m_limitForce))); b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((step.dt * invMass2) * m_pivotForce.x)); b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((step.dt * invMass2) * m_pivotForce.y)); b2.m_angularVelocity = (b2.m_angularVelocity + ((step.dt * invI2) * ((((r2X * m_pivotForce.y) - (r2Y * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(flag:Boolean):void{ m_enableLimit = flag; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(lower:Number, upper:Number):void{ m_lowerAngle = lower; m_upperAngle = upper; } } }//package Box2D.Dynamics.Joints
Section 64
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(b1:b2Body, b2:b2Body, anchor:b2Vec2):void{ body1 = b1; body2 = b2; localAnchor1 = body1.GetLocalPoint(anchor); localAnchor2 = body2.GetLocalPoint(anchor); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 65
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; public var m_xf:b2XForm; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_type:int; public var m_linearDamping:Number; public var m_shapeCount:int; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(bd:b2BodyDef, world:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (bd.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (bd.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (bd.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (bd.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = world; m_xf.position.SetV(bd.position); m_xf.R.Set(bd.angle); m_sweep.localCenter.SetV(bd.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = bd.angle); var tMat:b2Mat22 = m_xf.R; var tVec:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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_contactList = null; m_prev = null; m_next = null; m_linearDamping = bd.linearDamping; m_angularDamping = bd.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = bd.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = bd.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = bd.userData; m_shapeList = null; m_shapeCount = 0; } public function GetLinearVelocityFromWorldPoint(worldPoint:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (worldPoint.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (worldPoint.x - m_sweep.c.x))))); } public function SetLinearVelocity(v:b2Vec2):void{ m_linearVelocity.SetV(v); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function ApplyTorque(torque:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + torque); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var tMat:b2Mat22 = m_xf.R; var tVec:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); m_xf.position.y = (m_sweep.c.y - ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); } public function GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SetMassFromShapes():void{ var s:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var centerX:Number = 0; var centerY:Number = 0; var massData:b2MassData = s_massData; s = m_shapeList; while (s) { s.ComputeMass(massData); m_mass = (m_mass + massData.mass); centerX = (centerX + (massData.mass * massData.center.x)); centerY = (centerY + (massData.mass * massData.center.y)); m_I = (m_I + massData.I); s = s.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); centerX = (centerX * m_invMass); centerY = (centerY * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((centerX * centerX) + (centerY * centerY)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(centerX, centerY); var tMat:b2Mat22 = m_xf.R; var tVec:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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); s = m_shapeList; while (s) { s.UpdateSweepRadius(m_sweep.localCenter); s = s.m_next; }; var oldType:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (oldType != m_type){ s = m_shapeList; while (s) { s.RefilterProxy(m_world.m_broadPhase, m_xf); s = s.m_next; }; }; } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function GetJointList():b2JointEdge{ return (m_jointList); } public function SetXForm(position:b2Vec2, angle:Number):Boolean{ var s:b2Shape; var inRange:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(angle); m_xf.position.SetV(position); var tMat:b2Mat22 = m_xf.R; var tVec:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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 = angle); var freeze:Boolean; s = m_shapeList; while (s) { inRange = s.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (inRange == false){ freeze = true; break; }; s = s.m_next; }; if (freeze == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; s = m_shapeList; while (s) { s.DestroyProxy(m_world.m_broadPhase); s = s.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetLocalPoint(worldPoint:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, worldPoint)); } public function ApplyForce(force:b2Vec2, point:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + force.x); m_force.y = (m_force.y + force.y); m_torque = (m_torque + (((point.x - m_sweep.c.x) * force.y) - ((point.y - m_sweep.c.y) * force.x))); } public function SynchronizeShapes():Boolean{ var s:b2Shape; var xf1:b2XForm = s_xf1; xf1.R.Set(m_sweep.a0); var tMat:b2Mat22 = xf1.R; var tVec:b2Vec2 = m_sweep.localCenter; xf1.position.x = (m_sweep.c0.x - ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); xf1.position.y = (m_sweep.c0.y - ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); var inRange:Boolean; s = m_shapeList; while (s) { inRange = s.Synchronize(m_world.m_broadPhase, xf1, m_xf); if (inRange == false){ break; }; s = s.m_next; }; if (inRange == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; s = m_shapeList; while (s) { s.DestroyProxy(m_world.m_broadPhase); s = s.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function GetLinearVelocityFromLocalPoint(localPoint:b2Vec2):b2Vec2{ var A:b2Mat22 = m_xf.R; var worldPoint:b2Vec2 = new b2Vec2(((A.col1.x * localPoint.x) + (A.col2.x * localPoint.y)), ((A.col1.y * localPoint.x) + (A.col2.y * localPoint.y))); worldPoint.x = (worldPoint.x + m_xf.position.x); worldPoint.y = (worldPoint.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (worldPoint.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (worldPoint.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function ApplyImpulse(impulse:b2Vec2, point:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * impulse.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * impulse.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((point.x - m_sweep.c.x) * impulse.y) - ((point.y - m_sweep.c.y) * impulse.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(omega:Number):void{ m_angularVelocity = omega; } public function SetMass(massData:b2MassData):void{ var s:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(massData.center); var tMat:b2Mat22 = m_xf.R; var tVec:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)); m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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); s = m_shapeList; while (s) { s.UpdateSweepRadius(m_sweep.localCenter); s = s.m_next; }; var oldType:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (oldType != m_type){ s = m_shapeList; while (s) { s.RefilterProxy(m_world.m_broadPhase, m_xf); s = s.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(localVector:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, localVector)); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function Advance(t:Number):void{ m_sweep.Advance(t); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(flag:Boolean):void{ if (flag){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(def:b2ShapeDef):b2Shape{ var s:b2Shape; if (m_world.m_lock == true){ return (null); }; s = b2Shape.Create(def, m_world.m_blockAllocator); s.m_next = m_shapeList; m_shapeList = s; m_shapeCount++; s.m_body = this; s.CreateProxy(m_world.m_broadPhase, m_xf); s.UpdateSweepRadius(m_sweep.localCenter); return (s); } public function IsConnected(other:b2Body):Boolean{ var jn:b2JointEdge = m_jointList; while (jn) { if (jn.other == other){ return ((jn.joint.m_collideConnected == false)); }; jn = jn.next; }; return (false); } public function DestroyShape(s:b2Shape):void{ if (m_world.m_lock == true){ return; }; s.DestroyProxy(m_world.m_broadPhase); var node:b2Shape = m_shapeList; var ppS:b2Shape; var found:Boolean; while (node != null) { if (node == s){ if (ppS){ ppS.m_next = s.m_next; } else { m_shapeList = s.m_next; }; found = true; break; }; ppS = node; node = node.m_next; }; s.m_body = null; s.m_next = null; m_shapeCount--; b2Shape.Destroy(s, m_world.m_blockAllocator); } public function GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(flag:Boolean):void{ if (flag){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(data):void{ m_userData = data; } public function GetLocalVector(worldVector:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, worldVector)); } public function GetWorldPoint(localPoint:b2Vec2):b2Vec2{ var A:b2Mat22 = m_xf.R; var u:b2Vec2 = new b2Vec2(((A.col1.x * localPoint.x) + (A.col2.x * localPoint.y)), ((A.col1.y * localPoint.x) + (A.col2.y * localPoint.y))); u.x = (u.x + m_xf.position.x); u.y = (u.y + m_xf.position.y); return (u); } public function GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 66
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 67
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function b2BoundaryListener(){ super(); } public function Violation(body:b2Body):void{ } } }//package Box2D.Dynamics
Section 68
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function b2ContactFilter(){ super(); } public function ShouldCollide(shape1:b2Shape, shape2:b2Shape):Boolean{ var filter1:b2FilterData = shape1.GetFilterData(); var filter2:b2FilterData = shape2.GetFilterData(); if ((((filter1.groupIndex == filter2.groupIndex)) && (!((filter1.groupIndex == 0))))){ return ((filter1.groupIndex > 0)); }; var collide:Boolean = ((!(((filter1.maskBits & filter2.categoryBits) == 0))) && (!(((filter1.categoryBits & filter2.maskBits) == 0)))); return (collide); } } }//package Box2D.Dynamics
Section 69
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function b2ContactListener(){ super(); } public function Add(point:b2ContactPoint):void{ } public function Remove(point:b2ContactPoint):void{ } public function Persist(point:b2ContactPoint):void{ } public function Result(point:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 70
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairRemoved(proxyUserData1, proxyUserData2, pairUserData):void{ if (pairUserData == null){ return; }; var c:b2Contact = (pairUserData as b2Contact); if (c == m_nullContact){ return; }; Destroy(c); } public function Destroy(c:b2Contact):void{ var b1:b2Body; var b2:b2Body; var manifolds:Array; var cp:b2ContactPoint; var i:int; var manifold:b2Manifold; var j:int; var mp:b2ManifoldPoint; var v1:b2Vec2; var v2:b2Vec2; var shape1:b2Shape = c.m_shape1; var shape2:b2Shape = c.m_shape2; var manifoldCount:int = c.m_manifoldCount; if ((((manifoldCount > 0)) && (m_world.m_contactListener))){ b1 = shape1.m_body; b2 = shape2.m_body; manifolds = c.GetManifolds(); cp = s_evalCP; cp.shape1 = c.m_shape1; cp.shape2 = c.m_shape2; cp.friction = c.m_friction; cp.restitution = c.m_restitution; i = 0; while (i < manifoldCount) { manifold = manifolds[i]; cp.normal.SetV(manifold.normal); j = 0; while (j < manifold.pointCount) { mp = manifold.points[j]; cp.position = b1.GetWorldPoint(mp.localPoint1); v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1); v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2); cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y)); cp.separation = mp.separation; cp.id.key = mp.id._key; m_world.m_contactListener.Remove(cp); j++; }; i++; }; }; if (c.m_prev){ c.m_prev.m_next = c.m_next; }; if (c.m_next){ c.m_next.m_prev = c.m_prev; }; if (c == m_world.m_contactList){ m_world.m_contactList = c.m_next; }; var body1:b2Body = shape1.m_body; var body2:b2Body = shape2.m_body; if (c.m_node1.prev){ c.m_node1.prev.next = c.m_node1.next; }; if (c.m_node1.next){ c.m_node1.next.prev = c.m_node1.prev; }; if (c.m_node1 == body1.m_contactList){ body1.m_contactList = c.m_node1.next; }; if (c.m_node2.prev){ c.m_node2.prev.next = c.m_node2.next; }; if (c.m_node2.next){ c.m_node2.next.prev = c.m_node2.prev; }; if (c.m_node2 == body2.m_contactList){ body2.m_contactList = c.m_node2.next; }; b2Contact.Destroy(c, m_world.m_blockAllocator); m_world.m_contactCount--; } override public function PairAdded(proxyUserData1, proxyUserData2){ var shape1:b2Shape = (proxyUserData1 as b2Shape); var shape2:b2Shape = (proxyUserData2 as b2Shape); var body1:b2Body = shape1.m_body; var body2:b2Body = shape2.m_body; if (((body1.IsStatic()) && (body2.IsStatic()))){ return (m_nullContact); }; if (shape1.m_body == shape2.m_body){ return (m_nullContact); }; if (body2.IsConnected(body1)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(shape1, shape2) == false)))){ return (m_nullContact); }; var c:b2Contact = b2Contact.Create(shape1, shape2, m_world.m_blockAllocator); if (c == null){ return (m_nullContact); }; shape1 = c.m_shape1; shape2 = c.m_shape2; body1 = shape1.m_body; body2 = shape2.m_body; c.m_prev = null; c.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = c; }; m_world.m_contactList = c; c.m_node1.contact = c; c.m_node1.other = body2; c.m_node1.prev = null; c.m_node1.next = body1.m_contactList; if (body1.m_contactList != null){ body1.m_contactList.prev = c.m_node1; }; body1.m_contactList = c.m_node1; c.m_node2.contact = c; c.m_node2.other = body1; c.m_node2.prev = null; c.m_node2.next = body2.m_contactList; if (body2.m_contactList != null){ body2.m_contactList.prev = c.m_node2; }; body2.m_contactList = c.m_node2; m_world.m_contactCount++; return (c); } public function Collide():void{ var body1:b2Body; var body2:b2Body; var c:b2Contact = m_world.m_contactList; while (c) { body1 = c.m_shape1.m_body; body2 = c.m_shape2.m_body; if (((body1.IsSleeping()) && (body2.IsSleeping()))){ } else { c.Update(m_world.m_contactListener); }; c = c.m_next; }; } } }//package Box2D.Dynamics
Section 71
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_drawFlags:uint; public var m_lineThickness:Number;// = 1 public var m_drawScale:Number;// = 1 public var m_sprite:Sprite; public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ super(); m_drawFlags = 0; } public function ClearFlags(flags:uint):void{ m_drawFlags = (m_drawFlags & ~(flags)); } public function SetFlags(flags:uint):void{ m_drawFlags = flags; } public function AppendFlags(flags:uint):void{ m_drawFlags = (m_drawFlags | flags); } public function DrawSegment(p1:b2Vec2, p2:b2Vec2, color:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha); m_sprite.graphics.moveTo((p1.x * m_drawScale), (p1.y * m_drawScale)); m_sprite.graphics.lineTo((p2.x * m_drawScale), (p2.y * m_drawScale)); } public function DrawSolidPolygon(vertices:Array, vertexCount:int, color:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha); m_sprite.graphics.moveTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale)); m_sprite.graphics.beginFill(color.color, m_fillAlpha); var i = 1; while (i < vertexCount) { m_sprite.graphics.lineTo((vertices[i].x * m_drawScale), (vertices[i].y * m_drawScale)); i++; }; m_sprite.graphics.lineTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(center:b2Vec2, radius:Number, color:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha); m_sprite.graphics.drawCircle((center.x * m_drawScale), (center.y * m_drawScale), (radius * m_drawScale)); } public function DrawPolygon(vertices:Array, vertexCount:int, color:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha); m_sprite.graphics.moveTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale)); var i = 1; while (i < vertexCount) { m_sprite.graphics.lineTo((vertices[i].x * m_drawScale), (vertices[i].y * m_drawScale)); i++; }; m_sprite.graphics.lineTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale)); } public function DrawSolidCircle(center:b2Vec2, radius:Number, axis:b2Vec2, color:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(color.color, m_fillAlpha); m_sprite.graphics.drawCircle((center.x * m_drawScale), (center.y * m_drawScale), (radius * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((center.x * m_drawScale), (center.y * m_drawScale)); m_sprite.graphics.lineTo(((center.x + (axis.x * radius)) * m_drawScale), ((center.y + (axis.y * radius)) * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawXForm(xf:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((xf.position.x * m_drawScale), (xf.position.y * m_drawScale)); m_sprite.graphics.lineTo(((xf.position.x + (m_xformScale * xf.R.col1.x)) * m_drawScale), ((xf.position.y + (m_xformScale * xf.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((xf.position.x * m_drawScale), (xf.position.y * m_drawScale)); m_sprite.graphics.lineTo(((xf.position.x + (m_xformScale * xf.R.col2.x)) * m_drawScale), ((xf.position.y + (m_xformScale * xf.R.col2.y)) * m_drawScale)); } } }//package Box2D.Dynamics
Section 72
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; public class b2DestructionListener { public function b2DestructionListener(){ super(); } public function SayGoodbyeShape(shape:b2Shape):void{ } public function SayGoodbyeJoint(joint:b2Joint):void{ } } }//package Box2D.Dynamics
Section 73
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(bodyCapacity:int, contactCapacity:int, jointCapacity:int, allocator, listener:b2ContactListener){ var i:int; super(); m_bodyCapacity = bodyCapacity; m_contactCapacity = contactCapacity; m_jointCapacity = jointCapacity; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = allocator; m_listener = listener; m_bodies = new Array(bodyCapacity); i = 0; while (i < bodyCapacity) { m_bodies[i] = null; i++; }; m_contacts = new Array(contactCapacity); i = 0; while (i < contactCapacity) { m_contacts[i] = null; i++; }; m_joints = new Array(jointCapacity); i = 0; while (i < jointCapacity) { m_joints[i] = null; i++; }; m_positionIterationCount = 0; } public function AddBody(body:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = body; } public function AddJoint(joint:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = joint; } public function Report(constraints:Array):void{ var tMat:b2Mat22; var tVec:b2Vec2; var c:b2Contact; var cc:b2ContactConstraint; var cr:b2ContactResult; var b1:b2Body; var manifoldCount:int; var manifolds:Array; var j:int; var manifold:b2Manifold; var k:int; var point:b2ManifoldPoint; var ccp:b2ContactConstraintPoint; if (m_listener == null){ return; }; var i:int; while (i < m_contactCount) { c = m_contacts[i]; cc = constraints[i]; cr = s_reportCR; cr.shape1 = c.m_shape1; cr.shape2 = c.m_shape2; b1 = cr.shape1.m_body; manifoldCount = c.m_manifoldCount; manifolds = c.GetManifolds(); j = 0; while (j < manifoldCount) { manifold = manifolds[j]; cr.normal.SetV(manifold.normal); k = 0; while (k < manifold.pointCount) { point = manifold.points[k]; ccp = cc.points[k]; cr.position = b1.GetWorldPoint(point.localPoint1); cr.normalImpulse = ccp.normalImpulse; cr.tangentImpulse = ccp.tangentImpulse; cr.id.key = point.id.key; m_listener.Result(cr); k++; }; j++; }; i++; }; } public function AddContact(contact:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = contact; } public function Solve(step:b2TimeStep, gravity:b2Vec2, correctPositions:Boolean, allowSleep:Boolean):void{ var i:int; var b:b2Body; var joint:b2Joint; var j:int; var contactsOkay:Boolean; var jointsOkay:Boolean; var jointOkay:Boolean; var minSleepTime:Number; var linTolSqr:Number; var angTolSqr:Number; i = 0; while (i < m_bodyCount) { b = m_bodies[i]; if (b.IsStatic()){ } else { b.m_linearVelocity.x = (b.m_linearVelocity.x + (step.dt * (gravity.x + (b.m_invMass * b.m_force.x)))); b.m_linearVelocity.y = (b.m_linearVelocity.y + (step.dt * (gravity.y + (b.m_invMass * b.m_force.y)))); b.m_angularVelocity = (b.m_angularVelocity + ((step.dt * b.m_invI) * b.m_torque)); b.m_force.SetZero(); b.m_torque = 0; b.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (step.dt * b.m_linearDamping)), 0, 1)); b.m_angularVelocity = (b.m_angularVelocity * b2Math.b2Clamp((1 - (step.dt * b.m_angularDamping)), 0, 1)); if (b.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ b.m_linearVelocity.Normalize(); b.m_linearVelocity.x = (b.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); b.m_linearVelocity.y = (b.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((b.m_angularVelocity * b.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (b.m_angularVelocity < 0){ b.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { b.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; i++; }; var contactSolver:b2ContactSolver = new b2ContactSolver(step, m_contacts, m_contactCount, m_allocator); contactSolver.InitVelocityConstraints(step); i = 0; while (i < m_jointCount) { joint = m_joints[i]; joint.InitVelocityConstraints(step); i++; }; i = 0; while (i < step.maxIterations) { contactSolver.SolveVelocityConstraints(); j = 0; while (j < m_jointCount) { joint = m_joints[j]; joint.SolveVelocityConstraints(step); j++; }; i++; }; contactSolver.FinalizeVelocityConstraints(); i = 0; while (i < m_bodyCount) { b = m_bodies[i]; if (b.IsStatic()){ } else { b.m_sweep.c0.SetV(b.m_sweep.c); b.m_sweep.a0 = b.m_sweep.a; b.m_sweep.c.x = (b.m_sweep.c.x + (step.dt * b.m_linearVelocity.x)); b.m_sweep.c.y = (b.m_sweep.c.y + (step.dt * b.m_linearVelocity.y)); b.m_sweep.a = (b.m_sweep.a + (step.dt * b.m_angularVelocity)); b.SynchronizeTransform(); }; i++; }; if (correctPositions){ i = 0; while (i < m_jointCount) { joint = m_joints[i]; joint.InitPositionConstraints(); i++; }; m_positionIterationCount = 0; while (m_positionIterationCount < step.maxIterations) { contactsOkay = contactSolver.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); jointsOkay = true; i = 0; while (i < m_jointCount) { joint = m_joints[i]; jointOkay = joint.SolvePositionConstraints(); jointsOkay = ((jointsOkay) && (jointOkay)); i++; }; if (((contactsOkay) && (jointsOkay))){ break; }; m_positionIterationCount++; }; }; Report(contactSolver.m_constraints); if (allowSleep){ minSleepTime = Number.MAX_VALUE; linTolSqr = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); angTolSqr = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); i = 0; while (i < m_bodyCount) { b = m_bodies[i]; if (b.m_invMass == 0){ } else { if ((b.m_flags & b2Body.e_allowSleepFlag) == 0){ b.m_sleepTime = 0; minSleepTime = 0; }; if (((((((b.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((b.m_angularVelocity * b.m_angularVelocity) > angTolSqr)))) || ((b2Math.b2Dot(b.m_linearVelocity, b.m_linearVelocity) > linTolSqr)))){ b.m_sleepTime = 0; minSleepTime = 0; } else { b.m_sleepTime = (b.m_sleepTime + step.dt); minSleepTime = b2Math.b2Min(minSleepTime, b.m_sleepTime); }; }; i++; }; if (minSleepTime >= b2Settings.b2_timeToSleep){ i = 0; while (i < m_bodyCount) { b = m_bodies[i]; b.m_flags = (b.m_flags | b2Body.e_sleepFlag); b.m_linearVelocity.SetZero(); b.m_angularVelocity = 0; i++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(subStep:b2TimeStep):void{ var i:int; var b:b2Body; var contactsOkay:Boolean; var contactSolver:b2ContactSolver = new b2ContactSolver(subStep, m_contacts, m_contactCount, m_allocator); i = 0; while (i < subStep.maxIterations) { contactSolver.SolveVelocityConstraints(); i++; }; i = 0; while (i < m_bodyCount) { b = m_bodies[i]; if (b.IsStatic()){ } else { b.m_sweep.c0.SetV(b.m_sweep.c); b.m_sweep.a0 = b.m_sweep.a; b.m_sweep.c.x = (b.m_sweep.c.x + (subStep.dt * b.m_linearVelocity.x)); b.m_sweep.c.y = (b.m_sweep.c.y + (subStep.dt * b.m_linearVelocity.y)); b.m_sweep.a = (b.m_sweep.a + (subStep.dt * b.m_angularVelocity)); b.SynchronizeTransform(); }; i++; }; var k_toiBaumgarte:Number = 0.75; i = 0; while (i < subStep.maxIterations) { contactsOkay = contactSolver.SolvePositionConstraints(k_toiBaumgarte); if (contactsOkay){ break; }; i++; }; Report(contactSolver.m_constraints); } } }//package Box2D.Dynamics
Section 74
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; public function b2TimeStep(){ super(); } } }//package Box2D.Dynamics
Section 75
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(worldAABB:b2AABB, gravity:b2Vec2, doSleep:Boolean){ m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = doSleep; m_gravity = gravity; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(worldAABB, m_contactManager); var bd:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(bd); } public function DrawJoint(joint:b2Joint):void{ var pulley:b2PulleyJoint; var s1:b2Vec2; var s2:b2Vec2; var b1:b2Body = joint.m_body1; var b2:b2Body = joint.m_body2; var xf1:b2XForm = b1.m_xf; var xf2:b2XForm = b2.m_xf; var x1:b2Vec2 = xf1.position; var x2:b2Vec2 = xf2.position; var p1:b2Vec2 = joint.GetAnchor1(); var p2:b2Vec2 = joint.GetAnchor2(); var color:b2Color = s_jointColor; switch (joint.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(p1, p2, color); break; case b2Joint.e_pulleyJoint: pulley = (joint as b2PulleyJoint); s1 = pulley.GetGroundAnchor1(); s2 = pulley.GetGroundAnchor2(); m_debugDraw.DrawSegment(s1, p1, color); m_debugDraw.DrawSegment(s2, p2, color); m_debugDraw.DrawSegment(s1, s2, color); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(p1, p2, color); break; default: if (b1 != m_groundBody){ m_debugDraw.DrawSegment(x1, p1, color); }; m_debugDraw.DrawSegment(p1, p2, color); if (b2 != m_groundBody){ m_debugDraw.DrawSegment(x2, p2, color); }; }; } public function Refilter(shape:b2Shape):void{ shape.RefilterProxy(m_broadPhase, shape.m_body.m_xf); } public function SetDebugDraw(debugDraw:b2DebugDraw):void{ m_debugDraw = debugDraw; } public function SetContinuousPhysics(flag:Boolean):void{ m_continuousPhysics = flag; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var i:int; var b:b2Body; var s:b2Shape; var j:b2Joint; var bp:b2BroadPhase; var xf:b2XForm; var core:Boolean; var index:uint; var pair:b2Pair; var p1:b2Proxy; var p2:b2Proxy; var worldLower:b2Vec2; var worldUpper:b2Vec2; var p:b2Proxy; var poly:b2PolygonShape; var obb:b2OBB; var h:b2Vec2; var tMat:b2Mat22; var tVec:b2Vec2; var tX:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var flags:uint = m_debugDraw.GetFlags(); var invQ:b2Vec2 = new b2Vec2(); var x1:b2Vec2 = new b2Vec2(); var x2:b2Vec2 = new b2Vec2(); var color:b2Color = new b2Color(0, 0, 0); var b1:b2AABB = new b2AABB(); var b2:b2AABB = new b2AABB(); var vs:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((flags & b2DebugDraw.e_shapeBit)){ core = ((flags & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); b = m_bodyList; while (b) { xf = b.m_xf; s = b.GetShapeList(); while (s) { if (b.IsStatic()){ DrawShape(s, xf, new b2Color(0.5, 0.9, 0.5), core); } else { if (b.IsSleeping()){ DrawShape(s, xf, new b2Color(0.5, 0.5, 0.9), core); } else { DrawShape(s, xf, new b2Color(0.9, 0.9, 0.9), core); }; }; s = s.m_next; }; b = b.m_next; }; }; if ((flags & b2DebugDraw.e_jointBit)){ j = m_jointList; while (j) { DrawJoint(j); j = j.m_next; }; }; if ((flags & b2DebugDraw.e_pairBit)){ bp = m_broadPhase; invQ.Set((1 / bp.m_quantizationFactor.x), (1 / bp.m_quantizationFactor.y)); color.Set(0.9, 0.9, 0.3); i = 0; while (i < b2Pair.b2_tableCapacity) { index = bp.m_pairManager.m_hashTable[i]; while (index != b2Pair.b2_nullPair) { pair = bp.m_pairManager.m_pairs[index]; p1 = bp.m_proxyPool[pair.proxyId1]; p2 = bp.m_proxyPool[pair.proxyId2]; b1.lowerBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p1.lowerBounds[0]].value)); b1.lowerBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p1.lowerBounds[1]].value)); b1.upperBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p1.upperBounds[0]].value)); b1.upperBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p1.upperBounds[1]].value)); b2.lowerBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p2.lowerBounds[0]].value)); b2.lowerBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p2.lowerBounds[1]].value)); b2.upperBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p2.upperBounds[0]].value)); b2.upperBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p2.upperBounds[1]].value)); x1.x = (0.5 * (b1.lowerBound.x + b1.upperBound.x)); x1.y = (0.5 * (b1.lowerBound.y + b1.upperBound.y)); x2.x = (0.5 * (b2.lowerBound.x + b2.upperBound.x)); x2.y = (0.5 * (b2.lowerBound.y + b2.upperBound.y)); m_debugDraw.DrawSegment(x1, x2, color); index = pair.next; }; i++; }; }; if ((flags & b2DebugDraw.e_aabbBit)){ bp = m_broadPhase; worldLower = bp.m_worldAABB.lowerBound; worldUpper = bp.m_worldAABB.upperBound; invQ.Set((1 / bp.m_quantizationFactor.x), (1 / bp.m_quantizationFactor.y)); color.Set(0.9, 0.3, 0.9); i = 0; while (i < b2Settings.b2_maxProxies) { p = bp.m_proxyPool[i]; if (p.IsValid() == false){ } else { b1.lowerBound.x = (worldLower.x + (invQ.x * bp.m_bounds[0][p.lowerBounds[0]].value)); b1.lowerBound.y = (worldLower.y + (invQ.y * bp.m_bounds[1][p.lowerBounds[1]].value)); b1.upperBound.x = (worldLower.x + (invQ.x * bp.m_bounds[0][p.upperBounds[0]].value)); b1.upperBound.y = (worldLower.y + (invQ.y * bp.m_bounds[1][p.upperBounds[1]].value)); vs[0].Set(b1.lowerBound.x, b1.lowerBound.y); vs[1].Set(b1.upperBound.x, b1.lowerBound.y); vs[2].Set(b1.upperBound.x, b1.upperBound.y); vs[3].Set(b1.lowerBound.x, b1.upperBound.y); m_debugDraw.DrawPolygon(vs, 4, color); }; i++; }; vs[0].Set(worldLower.x, worldLower.y); vs[1].Set(worldUpper.x, worldLower.y); vs[2].Set(worldUpper.x, worldUpper.y); vs[3].Set(worldLower.x, worldUpper.y); m_debugDraw.DrawPolygon(vs, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((flags & b2DebugDraw.e_obbBit)){ color.Set(0.5, 0.3, 0.5); b = m_bodyList; while (b) { xf = b.m_xf; s = b.GetShapeList(); while (s) { if (s.m_type != b2Shape.e_polygonShape){ } else { poly = (s as b2PolygonShape); obb = poly.GetOBB(); h = obb.extents; vs[0].Set(-(h.x), -(h.y)); vs[1].Set(h.x, -(h.y)); vs[2].Set(h.x, h.y); vs[3].Set(-(h.x), h.y); i = 0; while (i < 4) { tMat = obb.R; tVec = vs[i]; tX = (obb.center.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); vs[i].y = (obb.center.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); vs[i].x = tX; tMat = xf.R; tX = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))); vs[i].y = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))); vs[i].x = tX; i++; }; m_debugDraw.DrawPolygon(vs, 4, color); }; s = s.m_next; }; b = b.m_next; }; }; if ((flags & b2DebugDraw.e_centerOfMassBit)){ b = m_bodyList; while (b) { xf = s_xf; xf.R = b.m_xf.R; xf.position = b.GetWorldCenter(); m_debugDraw.DrawXForm(xf); b = b.m_next; }; }; } public function DestroyBody(b:b2Body):void{ var jn0:b2JointEdge; var s0:b2Shape; if (m_lock == true){ return; }; var jn:b2JointEdge = b.m_jointList; while (jn) { jn0 = jn; jn = jn.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(jn0.joint); }; DestroyJoint(jn0.joint); }; var s:b2Shape = b.m_shapeList; while (s) { s0 = s; s = s.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(s0); }; s0.DestroyProxy(m_broadPhase); b2Shape.Destroy(s0, m_blockAllocator); }; if (b.m_prev){ b.m_prev.m_next = b.m_next; }; if (b.m_next){ b.m_next.m_prev = b.m_prev; }; if (b == m_bodyList){ m_bodyList = b.m_next; }; m_bodyCount--; } public function SetContactFilter(filter:b2ContactFilter):void{ m_contactFilter = filter; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(shape:b2Shape, xf:b2XForm, color:b2Color, core:Boolean):void{ var circle:b2CircleShape; var center:b2Vec2; var radius:Number; var axis:b2Vec2; var i:int; var poly:b2PolygonShape; var vertexCount:int; var localVertices:Array; var vertices:Array; var localCoreVertices:Array; var coreColor:b2Color = s_coreColor; switch (shape.m_type){ case b2Shape.e_circleShape: circle = (shape as b2CircleShape); center = b2Math.b2MulX(xf, circle.m_localPosition); radius = circle.m_radius; axis = xf.R.col1; m_debugDraw.DrawSolidCircle(center, radius, axis, color); if (core){ m_debugDraw.DrawCircle(center, (radius - b2Settings.b2_toiSlop), coreColor); }; break; case b2Shape.e_polygonShape: poly = (shape as b2PolygonShape); vertexCount = poly.GetVertexCount(); localVertices = poly.GetVertices(); vertices = new Array(b2Settings.b2_maxPolygonVertices); i = 0; while (i < vertexCount) { vertices[i] = b2Math.b2MulX(xf, localVertices[i]); i++; }; m_debugDraw.DrawSolidPolygon(vertices, vertexCount, color); if (core){ localCoreVertices = poly.GetCoreVertices(); i = 0; while (i < vertexCount) { vertices[i] = b2Math.b2MulX(xf, localCoreVertices[i]); i++; }; m_debugDraw.DrawPolygon(vertices, vertexCount, coreColor); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(step:b2TimeStep):void{ var b:b2Body; var stackCount:int; var i:int; var other:b2Body; var cn:b2ContactEdge; var jn:b2JointEdge; var inRange:Boolean; m_positionIterationCount = 0; var island:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); b = m_bodyList; while (b) { b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag)); b = b.m_next; }; var c:b2Contact = m_contactList; while (c) { c.m_flags = (c.m_flags & ~(b2Contact.e_islandFlag)); c = c.m_next; }; var j:b2Joint = m_jointList; while (j) { j.m_islandFlag = false; j = j.m_next; }; var stackSize:int = m_bodyCount; var stack:Array = new Array(stackSize); var seed:b2Body = m_bodyList; while (seed) { if ((seed.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (seed.IsStatic()){ } else { island.Clear(); stackCount = 0; var _temp1 = stackCount; stackCount = (stackCount + 1); var _local15 = _temp1; stack[_local15] = seed; seed.m_flags = (seed.m_flags | b2Body.e_islandFlag); while (stackCount > 0) { --stackCount; b = stack[stackCount]; island.AddBody(b); b.m_flags = (b.m_flags & ~(b2Body.e_sleepFlag)); if (b.IsStatic()){ } else { cn = b.m_contactList; while (cn) { if ((cn.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (cn.contact.m_manifoldCount == 0){ } else { island.AddContact(cn.contact); cn.contact.m_flags = (cn.contact.m_flags | b2Contact.e_islandFlag); other = cn.other; if ((other.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = stackCount; stackCount = (stackCount + 1); var _local16 = _temp2; stack[_local16] = other; other.m_flags = (other.m_flags | b2Body.e_islandFlag); }; }; }; cn = cn.next; }; jn = b.m_jointList; while (jn) { if (jn.joint.m_islandFlag == true){ } else { island.AddJoint(jn.joint); jn.joint.m_islandFlag = true; other = jn.other; if ((other.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = stackCount; stackCount = (stackCount + 1); _local16 = _temp3; stack[_local16] = other; other.m_flags = (other.m_flags | b2Body.e_islandFlag); }; }; jn = jn.next; }; }; }; island.Solve(step, m_gravity, m_positionCorrection, m_allowSleep); if (island.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = island.m_positionIterationCount; }; i = 0; while (i < island.m_bodyCount) { b = island.m_bodies[i]; if (b.IsStatic()){ b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag)); }; i++; }; }; }; seed = seed.m_next; }; b = m_bodyList; while (b) { if ((b.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (b.IsStatic()){ } else { inRange = b.SynchronizeShapes(); if ((((inRange == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(b); }; }; }; b = b.m_next; }; m_broadPhase.Commit(); } public function Query(aabb:b2AABB, shapes:Array, maxCount:int):int{ var results:Array = new Array(maxCount); var count:int = m_broadPhase.QueryAABB(aabb, results, maxCount); var i:int; while (i < count) { shapes[i] = results[i]; i++; }; return (count); } public function SetGravity(gravity:b2Vec2):void{ m_gravity = gravity; } public function SolveTOI(step:b2TimeStep):void{ var b:b2Body; var s1:b2Shape; var s2:b2Shape; var b1:b2Body; var b2:b2Body; var cn:b2ContactEdge; var c:b2Contact; var minContact:b2Contact; var minTOI:Number; var seed:b2Body; var stackCount:int; var subStep:b2TimeStep; var i:int; var toi:Number; var t0:Number; var other:b2Body; var inRange:Boolean; var island:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); var stackSize:int = m_bodyCount; var stack:Array = new Array(stackSize); b = m_bodyList; while (b) { b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag)); b.m_sweep.t0 = 0; b = b.m_next; }; c = m_contactList; while (c) { c.m_flags = (c.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); c = c.m_next; }; while (true) { minContact = null; minTOI = 1; c = m_contactList; for (;c;(c = c.m_next)) { if ((c.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { toi = 1; if ((c.m_flags & b2Contact.e_toiFlag)){ toi = c.m_toi; } else { s1 = c.m_shape1; s2 = c.m_shape2; b1 = s1.m_body; b2 = s2.m_body; if (((((b1.IsStatic()) || (b1.IsSleeping()))) && (((b2.IsStatic()) || (b2.IsSleeping()))))){ continue; }; t0 = b1.m_sweep.t0; if (b1.m_sweep.t0 < b2.m_sweep.t0){ t0 = b2.m_sweep.t0; b1.m_sweep.Advance(t0); } else { if (b2.m_sweep.t0 < b1.m_sweep.t0){ t0 = b1.m_sweep.t0; b2.m_sweep.Advance(t0); }; }; toi = b2TimeOfImpact.TimeOfImpact(c.m_shape1, b1.m_sweep, c.m_shape2, b2.m_sweep); if ((((toi > 0)) && ((toi < 1)))){ toi = (((1 - toi) * t0) + toi); if (toi > 1){ toi = 1; }; }; c.m_toi = toi; c.m_flags = (c.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < toi)) && ((toi < minTOI)))){ minContact = c; minTOI = toi; }; }; }; if ((((minContact == null)) || (((1 - (100 * Number.MIN_VALUE)) < minTOI)))){ break; }; s1 = minContact.m_shape1; s2 = minContact.m_shape2; b1 = s1.m_body; b2 = s2.m_body; b1.Advance(minTOI); b2.Advance(minTOI); minContact.Update(m_contactListener); minContact.m_flags = (minContact.m_flags & ~(b2Contact.e_toiFlag)); if (minContact.m_manifoldCount == 0){ } else { seed = b1; if (seed.IsStatic()){ seed = b2; }; island.Clear(); stackCount = 0; var _temp1 = stackCount; stackCount = (stackCount + 1); var _local22 = _temp1; stack[_local22] = seed; seed.m_flags = (seed.m_flags | b2Body.e_islandFlag); while (stackCount > 0) { --stackCount; b = stack[stackCount]; island.AddBody(b); b.m_flags = (b.m_flags & ~(b2Body.e_sleepFlag)); if (b.IsStatic()){ } else { cn = b.m_contactList; while (cn) { if (island.m_contactCount == island.m_contactCapacity){ } else { if ((cn.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (cn.contact.m_manifoldCount == 0){ } else { island.AddContact(cn.contact); cn.contact.m_flags = (cn.contact.m_flags | b2Contact.e_islandFlag); other = cn.other; if ((other.m_flags & b2Body.e_islandFlag)){ } else { if (other.IsStatic() == false){ other.Advance(minTOI); other.WakeUp(); }; var _temp2 = stackCount; stackCount = (stackCount + 1); var _local23 = _temp2; stack[_local23] = other; other.m_flags = (other.m_flags | b2Body.e_islandFlag); }; }; }; }; cn = cn.next; }; }; }; subStep = new b2TimeStep(); subStep.dt = ((1 - minTOI) * step.dt); subStep.inv_dt = (1 / subStep.dt); subStep.maxIterations = step.maxIterations; island.SolveTOI(subStep); i = 0; while (i < island.m_bodyCount) { b = island.m_bodies[i]; b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag)); if ((b.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (b.IsStatic()){ } else { inRange = b.SynchronizeShapes(); if ((((inRange == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(b); }; cn = b.m_contactList; while (cn) { cn.contact.m_flags = (cn.contact.m_flags & ~(b2Contact.e_toiFlag)); cn = cn.next; }; }; }; i++; }; i = 0; while (i < island.m_contactCount) { c = island.m_contacts[i]; c.m_flags = (c.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); i++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function Validate():void{ m_broadPhase.Validate(); } public function SetWarmStarting(flag:Boolean):void{ m_warmStarting = flag; } public function SetPositionCorrection(flag:Boolean):void{ m_positionCorrection = flag; } public function CreateJoint(def:b2JointDef):b2Joint{ var b:b2Body; var s:b2Shape; var j:b2Joint = b2Joint.Create(def, m_blockAllocator); j.m_prev = null; j.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = j; }; m_jointList = j; m_jointCount++; j.m_node1.joint = j; j.m_node1.other = j.m_body2; j.m_node1.prev = null; j.m_node1.next = j.m_body1.m_jointList; if (j.m_body1.m_jointList){ j.m_body1.m_jointList.prev = j.m_node1; }; j.m_body1.m_jointList = j.m_node1; j.m_node2.joint = j; j.m_node2.other = j.m_body1; j.m_node2.prev = null; j.m_node2.next = j.m_body2.m_jointList; if (j.m_body2.m_jointList){ j.m_body2.m_jointList.prev = j.m_node2; }; j.m_body2.m_jointList = j.m_node2; if (def.collideConnected == false){ b = ((def.body1.m_shapeCount < def.body2.m_shapeCount)) ? def.body1 : def.body2; s = b.m_shapeList; while (s) { s.RefilterProxy(m_broadPhase, b.m_xf); s = s.m_next; }; }; return (j); } public function DestroyJoint(j:b2Joint):void{ var b:b2Body; var s:b2Shape; var collideConnected:Boolean = j.m_collideConnected; if (j.m_prev){ j.m_prev.m_next = j.m_next; }; if (j.m_next){ j.m_next.m_prev = j.m_prev; }; if (j == m_jointList){ m_jointList = j.m_next; }; var body1:b2Body = j.m_body1; var body2:b2Body = j.m_body2; body1.WakeUp(); body2.WakeUp(); if (j.m_node1.prev){ j.m_node1.prev.next = j.m_node1.next; }; if (j.m_node1.next){ j.m_node1.next.prev = j.m_node1.prev; }; if (j.m_node1 == body1.m_jointList){ body1.m_jointList = j.m_node1.next; }; j.m_node1.prev = null; j.m_node1.next = null; if (j.m_node2.prev){ j.m_node2.prev.next = j.m_node2.next; }; if (j.m_node2.next){ j.m_node2.next.prev = j.m_node2.prev; }; if (j.m_node2 == body2.m_jointList){ body2.m_jointList = j.m_node2.next; }; j.m_node2.prev = null; j.m_node2.next = null; b2Joint.Destroy(j, m_blockAllocator); m_jointCount--; if (collideConnected == false){ b = ((body1.m_shapeCount < body2.m_shapeCount)) ? body1 : body2; s = b.m_shapeList; while (s) { s.RefilterProxy(m_broadPhase, b.m_xf); s = s.m_next; }; }; } public function SetContactListener(listener:b2ContactListener):void{ m_contactListener = listener; } public function CreateBody(def:b2BodyDef):b2Body{ if (m_lock == true){ return (null); }; var b:b2Body = new b2Body(def, this); b.m_prev = null; b.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = b; }; m_bodyList = b; m_bodyCount++; return (b); } public function SetBoundaryListener(listener:b2BoundaryListener):void{ m_boundaryListener = listener; } public function SetDestructionListener(listener:b2DestructionListener):void{ m_destructionListener = listener; } public function Step(dt:Number, iterations:int):void{ m_lock = true; var step:b2TimeStep = new b2TimeStep(); step.dt = dt; step.maxIterations = iterations; if (dt > 0){ step.inv_dt = (1 / dt); } else { step.inv_dt = 0; }; step.dtRatio = (m_inv_dt0 * dt); step.positionCorrection = m_positionCorrection; step.warmStarting = m_warmStarting; m_contactManager.Collide(); if (step.dt > 0){ Solve(step); }; if (((m_continuousPhysics) && ((step.dt > 0)))){ SolveTOI(step); }; DrawDebugData(); m_inv_dt0 = step.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 76
//Aim_Data (Engine.Sprites.aim.Aim_Data) package Engine.Sprites.aim { import flash.display.*; import flash.text.*; import flash.filters.*; public class Aim_Data extends Sprite { public var Power_text:TextField; public var Angle_text:TextField; public function Aim_Data(){ Power_text = new TextField(); Angle_text = new TextField(); super(); var format2:TextFormat = new TextFormat(); format2.font = "CooperStdBlack"; format2.color = 16769386; format2.size = 16; Power_text.embedFonts = true; Power_text.antiAliasType = AntiAliasType.ADVANCED; Power_text.autoSize = TextFieldAutoSize.LEFT; Power_text.defaultTextFormat = format2; Power_text.selectable = false; Power_text.mouseEnabled = false; Power_text.x = 0; Power_text.y = -20; var glow:GlowFilter = new GlowFilter(0, 1, 2, 2, 5, BitmapFilterQuality.HIGH); var shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH); var bevel:BevelFilter = new BevelFilter(); Power_text.filters = [glow, shadow]; Power_text.visible = true; super.addChild(Power_text); Angle_text.embedFonts = true; Angle_text.antiAliasType = AntiAliasType.ADVANCED; Angle_text.autoSize = TextFieldAutoSize.LEFT; Angle_text.defaultTextFormat = format2; Angle_text.selectable = false; Angle_text.mouseEnabled = false; Angle_text.x = -2; Angle_text.y = 0; Angle_text.filters = [glow, shadow]; Angle_text.visible = true; super.addChild(Angle_text); } public function showAimData():void{ Power_text.visible = true; } public function hideAimData():void{ Power_text.visible = false; } } }//package Engine.Sprites.aim
Section 77
//AimSprite (Engine.Sprites.aim.AimSprite) package Engine.Sprites.aim { import flash.display.*; import flash.geom.*; import ascb.drawing.*; public class AimSprite extends Sprite { public var _color:uint;// = 15146520 public function AimSprite(){ super(); var colors:Array = [_color, 0xFFFFFF]; var alphas:Array = [100, 0]; var rations:Array = [0, 160]; var matrix:Matrix = new Matrix(); matrix.createGradientBox(50, 30, 0, 0, 0); this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix); this.graphics.drawRect(-20, -15, 50, 30); this.graphics.endFill(); this.visible = true; var mypen:Pen = new Pen(this.graphics); mypen.lineStyle(1, 0xFFFFFF, 0); mypen.beginFill(_color, 1); mypen.drawRegularPolygon(-37, 0, 3, 60, 180); } public function _set_aim_rect(offset:Number):void{ this.graphics.clear(); var colors:Array = [_color, _color]; var alphas:Array = [100, 0]; var rations:Array = [0, 160]; var matrix:Matrix = new Matrix(); matrix.createGradientBox(offset, 30, 0, 0, 0); this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix); this.graphics.drawRect(-20, -15, offset, 30); this.graphics.endFill(); var mypen:Pen = new Pen(this.graphics); mypen.lineStyle(1, 0xFFFFFF, 0); mypen.beginFill(_color, 1); mypen.drawRegularPolygon(-37, 0, 3, 60, 180); } } }//package Engine.Sprites.aim
Section 78
//Animal1 (Engine.Sprites.Aminals.Animal1) package Engine.Sprites.Aminals { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class Animal1 extends Sprite { public var Bit_Ant_T3_F1_R_F4:CharacterFrame; public var Frame_5_left:BitmapAsset; public var Bit_Ant_T3_E_R_F1:CharacterFrame; public var Bit_Ant_T3_E_R_F2:CharacterFrame; public var Bit_Ant_T3_E_R_F3:CharacterFrame; public var Bit_Ant_T3_E_R_F4:CharacterFrame; public var Bit_Ant_T3_E_R_F5:CharacterFrame; public var Bit_Ant_T3_E_R_F6:CharacterFrame; private var Frame_1_left_Asset:Class; public var Loading:Number;// = 0 public var Frame_3_right:BitmapAsset; public var Frame_2_left:BitmapAsset; private var Frame_4_left_Asset:Class; private var Apple_1_Asset:Class; public var AnimationTimer:Timer; public var Direction:Number;// = -1 public var AnimationVelocity:Number;// = 0 public var Frame_4_left:BitmapAsset; public var Frame_4_right:BitmapAsset; public var Apple_1:BitmapAsset; private var Frame_1_right_Asset:Class; private var Frame_3_right_Asset:Class; private var Frame_5_right_Asset:Class; private var Frame_2_left_Asset:Class; public var Frame_1_left:BitmapAsset; private var Frame_5_left_Asset:Class; public var CurrentFrame:Number;// = 1 public var Frame_1_right:BitmapAsset; public var Frame_5_right:BitmapAsset; public var Frame_6_left:BitmapAsset; public var Frame_3_left:BitmapAsset; public var Bit_Ant_T3_E_L_F1:CharacterFrame; public var Bit_Ant_T3_E_L_F2:CharacterFrame; public var Bit_Ant_T3_E_L_F3:CharacterFrame; public var StarsAnimationTimer:Timer; public var Bit_Ant_T3_E_L_F5:CharacterFrame; public var Bit_Ant_T3_E_L_F6:CharacterFrame; private var Frame_3_left_Asset:Class; public var Frame_2_right:BitmapAsset; public var Frame_6_right:BitmapAsset; public var Bit_Ant_T3_E_L_F4:CharacterFrame; private var Frame_4_right_Asset:Class; private var Frame_6_left_Asset:Class; private var Frame_2_right_Asset:Class; public var Bit_Ant_T3_F1_R_F2:CharacterFrame; public var Bit_Ant_T3_F1_R_F3:CharacterFrame; private var Frame_6_right_Asset:Class; public var Bit_Ant_T3_F1_R_F5:CharacterFrame; public var Bit_Ant_T3_F1_R_F6:CharacterFrame; public var Bit_Ant_T3_F1_R_F1:CharacterFrame; public function Animal1(type:Number, velocity:Number):void{ Frame_1_left_Asset = Animal1_Frame_1_left_Asset; Frame_2_left_Asset = Animal1_Frame_2_left_Asset; Frame_3_left_Asset = Animal1_Frame_3_left_Asset; Frame_1_right_Asset = Animal1_Frame_1_right_Asset; Frame_2_right_Asset = Animal1_Frame_2_right_Asset; Frame_3_right_Asset = Animal1_Frame_3_right_Asset; Frame_4_left_Asset = Animal1_Frame_4_left_Asset; Frame_5_left_Asset = Animal1_Frame_5_left_Asset; Frame_6_left_Asset = Animal1_Frame_6_left_Asset; Frame_4_right_Asset = Animal1_Frame_4_right_Asset; Frame_5_right_Asset = Animal1_Frame_5_right_Asset; Frame_6_right_Asset = Animal1_Frame_6_right_Asset; Apple_1_Asset = Animal1_Apple_1_Asset; AnimationTimer = new Timer(40, 0); StarsAnimationTimer = new Timer(100); Bit_Ant_T3_E_L_F1 = new CharacterFrame(); Bit_Ant_T3_E_L_F2 = new CharacterFrame(); Bit_Ant_T3_E_L_F3 = new CharacterFrame(); Bit_Ant_T3_E_R_F1 = new CharacterFrame(); Bit_Ant_T3_E_R_F2 = new CharacterFrame(); Bit_Ant_T3_E_R_F3 = new CharacterFrame(); Bit_Ant_T3_F1_R_F1 = new CharacterFrame(); Bit_Ant_T3_F1_R_F2 = new CharacterFrame(); Bit_Ant_T3_F1_R_F3 = new CharacterFrame(); Bit_Ant_T3_E_L_F4 = new CharacterFrame(); Bit_Ant_T3_E_L_F5 = new CharacterFrame(); Bit_Ant_T3_E_L_F6 = new CharacterFrame(); Bit_Ant_T3_E_R_F4 = new CharacterFrame(); Bit_Ant_T3_E_R_F5 = new CharacterFrame(); Bit_Ant_T3_E_R_F6 = new CharacterFrame(); Bit_Ant_T3_F1_R_F4 = new CharacterFrame(); Bit_Ant_T3_F1_R_F5 = new CharacterFrame(); Bit_Ant_T3_F1_R_F6 = new CharacterFrame(); super(); var Frame_1_left_bitmap:BitmapAsset = new Frame_1_left_Asset(); var Frame_2_left_bitmap:BitmapAsset = new Frame_2_left_Asset(); var Frame_3_left_bitmap:BitmapAsset = new Frame_3_left_Asset(); var Frame_4_left_bitmap:BitmapAsset = new Frame_4_left_Asset(); var Frame_5_left_bitmap:BitmapAsset = new Frame_5_left_Asset(); var Frame_6_left_bitmap:BitmapAsset = new Frame_6_left_Asset(); var Frame_1_right_bitmap:BitmapAsset = new Frame_1_right_Asset(); var Frame_2_right_bitmap:BitmapAsset = new Frame_2_right_Asset(); var Frame_3_right_bitmap:BitmapAsset = new Frame_3_right_Asset(); var Frame_4_right_bitmap:BitmapAsset = new Frame_4_right_Asset(); var Frame_5_right_bitmap:BitmapAsset = new Frame_5_right_Asset(); var Frame_6_right_bitmap:BitmapAsset = new Frame_6_right_Asset(); var Frame_1_right_bitmap1:BitmapAsset = new Frame_1_right_Asset(); var Frame_2_right_bitmap1:BitmapAsset = new Frame_2_right_Asset(); var Frame_3_right_bitmap1:BitmapAsset = new Frame_3_right_Asset(); var Frame_4_right_bitmap1:BitmapAsset = new Frame_4_right_Asset(); var Frame_5_right_bitmap1:BitmapAsset = new Frame_5_right_Asset(); var Frame_6_right_bitmap1:BitmapAsset = new Frame_6_right_Asset(); var Apple_1_bitmap1:BitmapAsset = new Apple_1_Asset(); var Apple_1_bitmap2:BitmapAsset = new Apple_1_Asset(); var Apple_1_bitmap3:BitmapAsset = new Apple_1_Asset(); var Apple_1_bitmap4:BitmapAsset = new Apple_1_Asset(); var Apple_1_bitmap5:BitmapAsset = new Apple_1_Asset(); var Apple_1_bitmap6:BitmapAsset = new Apple_1_Asset(); Frame_1_left_bitmap.smoothing = true; Frame_2_left_bitmap.smoothing = true; Frame_3_left_bitmap.smoothing = true; Frame_4_left_bitmap.smoothing = true; Frame_5_left_bitmap.smoothing = true; Frame_6_left_bitmap.smoothing = true; Frame_1_right_bitmap.smoothing = true; Frame_2_right_bitmap.smoothing = true; Frame_3_right_bitmap.smoothing = true; Frame_4_right_bitmap.smoothing = true; Frame_5_right_bitmap.smoothing = true; Frame_6_right_bitmap.smoothing = true; Frame_1_right_bitmap1.smoothing = true; Frame_2_right_bitmap1.smoothing = true; Frame_3_right_bitmap1.smoothing = true; Frame_4_right_bitmap1.smoothing = true; Frame_5_right_bitmap1.smoothing = true; Frame_6_right_bitmap1.smoothing = true; Apple_1_bitmap1.smoothing = true; Apple_1_bitmap2.smoothing = true; Apple_1_bitmap3.smoothing = true; Apple_1_bitmap4.smoothing = true; Apple_1_bitmap5.smoothing = true; Apple_1_bitmap6.smoothing = true; Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap); Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap); Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap); Bit_Ant_T3_E_L_F4.Frame.addChild(Frame_4_left_bitmap); Bit_Ant_T3_E_L_F5.Frame.addChild(Frame_5_left_bitmap); Bit_Ant_T3_E_L_F6.Frame.addChild(Frame_6_left_bitmap); Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap); Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap); Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap); Bit_Ant_T3_E_R_F4.Frame.addChild(Frame_4_right_bitmap); Bit_Ant_T3_E_R_F5.Frame.addChild(Frame_5_right_bitmap); Bit_Ant_T3_E_R_F6.Frame.addChild(Frame_6_right_bitmap); Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap1); Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap1); Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap1); Bit_Ant_T3_F1_R_F4.Frame.addChild(Frame_4_right_bitmap1); Bit_Ant_T3_F1_R_F5.Frame.addChild(Frame_5_right_bitmap1); Bit_Ant_T3_F1_R_F6.Frame.addChild(Frame_6_right_bitmap1); Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap1); Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap2); Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap3); Bit_Ant_T3_F1_R_F4.Apple.addChild(Apple_1_bitmap4); Bit_Ant_T3_F1_R_F5.Apple.addChild(Apple_1_bitmap5); Bit_Ant_T3_F1_R_F6.Apple.addChild(Apple_1_bitmap6); Bit_Ant_T3_F1_R_F1.Apple.y = (Bit_Ant_T3_F1_R_F1.Apple.y - 32); Bit_Ant_T3_F1_R_F2.Apple.y = (Bit_Ant_T3_F1_R_F2.Apple.y - 32); Bit_Ant_T3_F1_R_F3.Apple.y = (Bit_Ant_T3_F1_R_F3.Apple.y - 32); Bit_Ant_T3_F1_R_F4.Apple.y = (Bit_Ant_T3_F1_R_F4.Apple.y - 32); Bit_Ant_T3_F1_R_F5.Apple.y = (Bit_Ant_T3_F1_R_F5.Apple.y - 32); Bit_Ant_T3_F1_R_F6.Apple.y = (Bit_Ant_T3_F1_R_F6.Apple.y - 32); Bit_Ant_T3_F1_R_F1.Apple.x = (Bit_Ant_T3_F1_R_F1.Apple.x - 8); Bit_Ant_T3_F1_R_F2.Apple.x = (Bit_Ant_T3_F1_R_F2.Apple.x - 8); Bit_Ant_T3_F1_R_F3.Apple.x = (Bit_Ant_T3_F1_R_F3.Apple.x - 8); Bit_Ant_T3_F1_R_F4.Apple.x = (Bit_Ant_T3_F1_R_F4.Apple.x - 8); Bit_Ant_T3_F1_R_F5.Apple.x = (Bit_Ant_T3_F1_R_F5.Apple.x - 8); Bit_Ant_T3_F1_R_F6.Apple.x = (Bit_Ant_T3_F1_R_F6.Apple.x - 8); Bit_Ant_T3_E_L_F1.y = (Bit_Ant_T3_E_L_F1.y + 40); Bit_Ant_T3_E_L_F2.y = (Bit_Ant_T3_E_L_F2.y + 40); Bit_Ant_T3_E_L_F3.y = (Bit_Ant_T3_E_L_F3.y + 40); Bit_Ant_T3_E_L_F4.y = (Bit_Ant_T3_E_L_F4.y + 40); Bit_Ant_T3_E_L_F5.y = (Bit_Ant_T3_E_L_F5.y + 40); Bit_Ant_T3_E_L_F6.y = (Bit_Ant_T3_E_L_F6.y + 40); Bit_Ant_T3_E_R_F1.y = (Bit_Ant_T3_E_R_F1.y + 40); Bit_Ant_T3_E_R_F2.y = (Bit_Ant_T3_E_R_F2.y + 40); Bit_Ant_T3_E_R_F3.y = (Bit_Ant_T3_E_R_F3.y + 40); Bit_Ant_T3_E_R_F4.y = (Bit_Ant_T3_E_R_F4.y + 40); Bit_Ant_T3_E_R_F5.y = (Bit_Ant_T3_E_R_F5.y + 40); Bit_Ant_T3_E_R_F6.y = (Bit_Ant_T3_E_R_F6.y + 40); Bit_Ant_T3_F1_R_F1.y = (Bit_Ant_T3_F1_R_F1.y + 40); Bit_Ant_T3_F1_R_F2.y = (Bit_Ant_T3_F1_R_F2.y + 40); Bit_Ant_T3_F1_R_F3.y = (Bit_Ant_T3_F1_R_F3.y + 40); Bit_Ant_T3_F1_R_F4.y = (Bit_Ant_T3_F1_R_F4.y + 40); Bit_Ant_T3_F1_R_F5.y = (Bit_Ant_T3_F1_R_F5.y + 40); Bit_Ant_T3_F1_R_F6.y = (Bit_Ant_T3_F1_R_F6.y + 40); Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; super.addChild(Bit_Ant_T3_E_L_F1); super.addChild(Bit_Ant_T3_E_L_F2); super.addChild(Bit_Ant_T3_E_L_F3); super.addChild(Bit_Ant_T3_E_L_F4); super.addChild(Bit_Ant_T3_E_L_F5); super.addChild(Bit_Ant_T3_E_L_F6); super.addChild(Bit_Ant_T3_E_R_F1); super.addChild(Bit_Ant_T3_E_R_F2); super.addChild(Bit_Ant_T3_E_R_F3); super.addChild(Bit_Ant_T3_E_R_F4); super.addChild(Bit_Ant_T3_E_R_F5); super.addChild(Bit_Ant_T3_E_R_F6); super.addChild(Bit_Ant_T3_F1_R_F1); super.addChild(Bit_Ant_T3_F1_R_F2); super.addChild(Bit_Ant_T3_F1_R_F3); super.addChild(Bit_Ant_T3_F1_R_F4); super.addChild(Bit_Ant_T3_F1_R_F5); super.addChild(Bit_Ant_T3_F1_R_F6); AntType1(velocity); } public function newFrame_type_1(e:TimerEvent):void{ switch (CurrentFrame){ case 1: CurrentFrame = 2; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = true; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = true; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = true; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; break; case 2: CurrentFrame = 3; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = true; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = true; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; break; case 3: CurrentFrame = 4; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = true; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = true; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; break; case 4: CurrentFrame = 5; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = true; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = true; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = true; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; break; case 5: CurrentFrame = 6; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = true; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = true; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = true; Bit_Ant_T3_F1_R_F6.visible = false; }; break; case 6: CurrentFrame = 1; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = true; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = true; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_E_L_F4.visible = false; Bit_Ant_T3_E_L_F5.visible = false; Bit_Ant_T3_E_L_F6.visible = false; Bit_Ant_T3_E_R_F4.visible = false; Bit_Ant_T3_E_R_F5.visible = false; Bit_Ant_T3_E_R_F6.visible = false; Bit_Ant_T3_F1_R_F4.visible = false; Bit_Ant_T3_F1_R_F5.visible = false; Bit_Ant_T3_F1_R_F6.visible = true; }; break; }; } public function SetDirection(dir:Number):void{ Direction = dir; } public function StartAnimation():void{ AnimationTimer.start(); } public function SetAnimationVelocity(velocity:Number):void{ AnimationTimer.delay = velocity; } public function StopAnimation():void{ AnimationTimer.stop(); } public function SetLoading(loading:Number):void{ Loading = loading; } public function AntType1(velocity:Number):void{ AnimationVelocity = velocity; AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_1); } } }//package Engine.Sprites.Aminals
Section 79
//Animal1_Apple_1_Asset (Engine.Sprites.Aminals.Animal1_Apple_1_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Apple_1_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 80
//Animal1_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_1_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_1_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 81
//Animal1_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_1_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_1_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 82
//Animal1_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_2_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_2_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 83
//Animal1_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_2_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_2_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 84
//Animal1_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_3_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_3_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 85
//Animal1_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_3_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_3_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 86
//Animal1_Frame_4_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_4_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_4_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 87
//Animal1_Frame_4_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_4_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_4_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 88
//Animal1_Frame_5_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_5_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_5_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 89
//Animal1_Frame_5_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_5_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_5_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 90
//Animal1_Frame_6_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_6_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_6_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 91
//Animal1_Frame_6_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_6_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal1_Frame_6_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 92
//Animal2 (Engine.Sprites.Aminals.Animal2) package Engine.Sprites.Aminals { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class Animal2 extends Sprite { public var Bit_Ant_T3_F1_R_F2:CharacterFrame; public var Frame_1_left:BitmapAsset; public var Bit_Ant_T3_E_R_F1:CharacterFrame; public var Bit_Ant_T3_E_R_F2:CharacterFrame; public var Bit_Ant_T3_E_R_F3:CharacterFrame; public var CurrentFrame:Number;// = 1 public var Bit_Ant_T3_F2_R_F1:CharacterFrame; public var Bit_Ant_T3_F2_R_F3:CharacterFrame; private var Frame_1_left_Asset:Class; public var Loading:Number;// = 0 public var Frame_3_right:BitmapAsset; public var Frame_1_right:BitmapAsset; public var Frame_2_left:BitmapAsset; public var Bit_Ant_T3_F2_R_F2:CharacterFrame; public var Bit_Ant_T3_F3_R_F1:CharacterFrame; public var Bit_Ant_T3_F3_R_F3:CharacterFrame; private var Apple_1_Asset:Class; public var AnimationTimer:Timer; public var Bit_Ant_T3_F3_R_F2:CharacterFrame; public var Frame_3_left:BitmapAsset; private var Health_1_left_Asset:Class; public var Health_1_right:BitmapAsset; public var Bit_Ant_T3_E_L_F1:CharacterFrame; public var Bit_Ant_T3_E_L_F2:CharacterFrame; public var Bit_Ant_T3_E_L_F3:CharacterFrame; public var Bit_Ant_T3_F4_R_F1:CharacterFrame; public var Bit_Ant_T3_F4_R_F2:CharacterFrame; public var Bit_Ant_T3_F4_R_F3:CharacterFrame; private var Frame_3_left_Asset:Class; public var Frame_2_right:BitmapAsset; public var Direction:Number;// = -1 private var Health_1_right_Asset:Class; public var AnimationVelocity:Number;// = 0 public var Apple_1:BitmapAsset; private var Frame_1_right_Asset:Class; private var Frame_3_right_Asset:Class; public var Apple_2:BitmapAsset; private var Frame_2_right_Asset:Class; public var Bit_Ant_T3_F1_R_F1:CharacterFrame; private var Frame_2_left_Asset:Class; public var Health_1_left:BitmapAsset; private var Apple_2_Asset:Class; public var Bit_Ant_T3_F1_R_F3:CharacterFrame; public function Animal2(type:Number, velocity:Number):void{ Frame_1_left_Asset = Animal2_Frame_1_left_Asset; Frame_2_left_Asset = Animal2_Frame_2_left_Asset; Frame_3_left_Asset = Animal2_Frame_3_left_Asset; Frame_1_right_Asset = Animal2_Frame_1_right_Asset; Frame_2_right_Asset = Animal2_Frame_2_right_Asset; Frame_3_right_Asset = Animal2_Frame_3_right_Asset; Apple_1_Asset = Animal2_Apple_1_Asset; Apple_2_Asset = Animal2_Apple_2_Asset; Health_1_right_Asset = Animal2_Health_1_right_Asset; Health_1_left_Asset = Animal2_Health_1_left_Asset; AnimationTimer = new Timer(60, 0); Bit_Ant_T3_E_L_F1 = new CharacterFrame(); Bit_Ant_T3_E_L_F2 = new CharacterFrame(); Bit_Ant_T3_E_L_F3 = new CharacterFrame(); Bit_Ant_T3_E_R_F1 = new CharacterFrame(); Bit_Ant_T3_E_R_F2 = new CharacterFrame(); Bit_Ant_T3_E_R_F3 = new CharacterFrame(); Bit_Ant_T3_F1_R_F1 = new CharacterFrame(); Bit_Ant_T3_F1_R_F2 = new CharacterFrame(); Bit_Ant_T3_F1_R_F3 = new CharacterFrame(); Bit_Ant_T3_F2_R_F1 = new CharacterFrame(); Bit_Ant_T3_F2_R_F2 = new CharacterFrame(); Bit_Ant_T3_F2_R_F3 = new CharacterFrame(); Bit_Ant_T3_F3_R_F1 = new CharacterFrame(); Bit_Ant_T3_F3_R_F2 = new CharacterFrame(); Bit_Ant_T3_F3_R_F3 = new CharacterFrame(); Bit_Ant_T3_F4_R_F1 = new CharacterFrame(); Bit_Ant_T3_F4_R_F2 = new CharacterFrame(); Bit_Ant_T3_F4_R_F3 = new CharacterFrame(); super(); var Frame_1_left_bitmap1:BitmapAsset = new Frame_1_left_Asset(); var Health_1_left_bitmap2:BitmapAsset = new Health_1_left_Asset(); var Frame_2_left_bitmap3:BitmapAsset = new Frame_2_left_Asset(); var Health_1_left_bitmap4:BitmapAsset = new Health_1_left_Asset(); var Frame_3_left_bitmap5:BitmapAsset = new Frame_3_left_Asset(); var Health_1_left_bitmap6:BitmapAsset = new Health_1_left_Asset(); var Frame_1_right_bitmap7:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap8:BitmapAsset = new Health_1_right_Asset(); var Frame_2_right_bitmap9:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap10:BitmapAsset = new Health_1_right_Asset(); var Frame_3_right_bitmap11:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap12:BitmapAsset = new Health_1_right_Asset(); var Frame_1_right_bitmap13:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap14:BitmapAsset = new Health_1_right_Asset(); var Apple_1_bitmap15:BitmapAsset = new Apple_1_Asset(); var Frame_2_right_bitmap16:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap17:BitmapAsset = new Health_1_right_Asset(); var Apple_1_bitmap18:BitmapAsset = new Apple_1_Asset(); var Frame_3_right_bitmap19:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap20:BitmapAsset = new Health_1_right_Asset(); var Apple_1_bitmap21:BitmapAsset = new Apple_1_Asset(); var Frame_1_right_bitmap22:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap23:BitmapAsset = new Health_1_right_Asset(); var Apple_2_bitmap24:BitmapAsset = new Apple_2_Asset(); var Frame_2_right_bitmap25:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap26:BitmapAsset = new Health_1_right_Asset(); var Apple_2_bitmap27:BitmapAsset = new Apple_2_Asset(); var Frame_3_right_bitmap28:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap29:BitmapAsset = new Health_1_right_Asset(); var Apple_2_bitmap30:BitmapAsset = new Apple_2_Asset(); var Frame_1_right_bitmap31:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap32:BitmapAsset = new Health_1_right_Asset(); var Frame_2_right_bitmap33:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap34:BitmapAsset = new Health_1_right_Asset(); var Frame_3_right_bitmap35:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap36:BitmapAsset = new Health_1_right_Asset(); var Frame_1_right_bitmap37:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap38:BitmapAsset = new Health_1_right_Asset(); var Frame_2_right_bitmap39:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap40:BitmapAsset = new Health_1_right_Asset(); var Frame_3_right_bitmap41:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap42:BitmapAsset = new Health_1_right_Asset(); Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap1); Bit_Ant_T3_E_L_F1.Health_1.addChild(Health_1_left_bitmap2); Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap3); Bit_Ant_T3_E_L_F2.Health_1.addChild(Health_1_left_bitmap4); Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap5); Bit_Ant_T3_E_L_F3.Health_1.addChild(Health_1_left_bitmap6); Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap7); Bit_Ant_T3_E_R_F1.Health_1.addChild(Health_1_right_bitmap8); Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap9); Bit_Ant_T3_E_R_F2.Health_1.addChild(Health_1_right_bitmap10); Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap11); Bit_Ant_T3_E_R_F3.Health_1.addChild(Health_1_right_bitmap12); Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap13); Bit_Ant_T3_F1_R_F1.Health_1.addChild(Health_1_right_bitmap14); Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap15); Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap16); Bit_Ant_T3_F1_R_F2.Health_1.addChild(Health_1_right_bitmap17); Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap18); Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap19); Bit_Ant_T3_F1_R_F3.Health_1.addChild(Health_1_right_bitmap20); Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap21); Bit_Ant_T3_F2_R_F1.Frame.addChild(Frame_1_right_bitmap22); Bit_Ant_T3_F2_R_F1.Health_1.addChild(Health_1_right_bitmap23); Bit_Ant_T3_F2_R_F1.Apple.addChild(Apple_2_bitmap24); Bit_Ant_T3_F2_R_F2.Frame.addChild(Frame_2_right_bitmap25); Bit_Ant_T3_F2_R_F2.Health_1.addChild(Health_1_right_bitmap26); Bit_Ant_T3_F2_R_F2.Apple.addChild(Apple_2_bitmap27); Bit_Ant_T3_F2_R_F3.Frame.addChild(Frame_3_right_bitmap28); Bit_Ant_T3_F2_R_F3.Health_1.addChild(Health_1_right_bitmap29); Bit_Ant_T3_F2_R_F3.Apple.addChild(Apple_2_bitmap30); Bit_Ant_T3_F3_R_F1.Frame.addChild(Frame_1_right_bitmap31); Bit_Ant_T3_F3_R_F1.Health_1.addChild(Health_1_right_bitmap32); Bit_Ant_T3_F3_R_F2.Frame.addChild(Frame_2_right_bitmap33); Bit_Ant_T3_F3_R_F2.Health_1.addChild(Health_1_right_bitmap34); Bit_Ant_T3_F3_R_F3.Frame.addChild(Frame_3_right_bitmap35); Bit_Ant_T3_F3_R_F3.Health_1.addChild(Health_1_right_bitmap36); Bit_Ant_T3_F4_R_F1.Frame.addChild(Frame_1_right_bitmap37); Bit_Ant_T3_F4_R_F1.Health_1.addChild(Health_1_right_bitmap38); Bit_Ant_T3_F4_R_F2.Frame.addChild(Frame_2_right_bitmap39); Bit_Ant_T3_F4_R_F2.Health_1.addChild(Health_1_right_bitmap40); Bit_Ant_T3_F4_R_F3.Frame.addChild(Frame_3_right_bitmap41); Bit_Ant_T3_F4_R_F3.Health_1.addChild(Health_1_right_bitmap42); Frame_1_left_bitmap1.smoothing = true; Health_1_left_bitmap2.smoothing = true; Frame_2_left_bitmap3.smoothing = true; Health_1_left_bitmap4.smoothing = true; Frame_3_left_bitmap5.smoothing = true; Health_1_left_bitmap6.smoothing = true; Frame_1_right_bitmap7.smoothing = true; Health_1_right_bitmap8.smoothing = true; Frame_2_right_bitmap9.smoothing = true; Health_1_right_bitmap10.smoothing = true; Frame_3_right_bitmap11.smoothing = true; Health_1_right_bitmap12.smoothing = true; Frame_1_right_bitmap13.smoothing = true; Health_1_right_bitmap14.smoothing = true; Apple_1_bitmap15.smoothing = true; Frame_2_right_bitmap16.smoothing = true; Health_1_right_bitmap17.smoothing = true; Apple_1_bitmap18.smoothing = true; Frame_3_right_bitmap19.smoothing = true; Health_1_right_bitmap20.smoothing = true; Apple_1_bitmap21.smoothing = true; Frame_1_right_bitmap22.smoothing = true; Health_1_right_bitmap23.smoothing = true; Apple_2_bitmap24.smoothing = true; Frame_2_right_bitmap25.smoothing = true; Health_1_right_bitmap26.smoothing = true; Apple_2_bitmap27.smoothing = true; Frame_3_right_bitmap28.smoothing = true; Health_1_right_bitmap29.smoothing = true; Apple_2_bitmap30.smoothing = true; Frame_1_right_bitmap31.smoothing = true; Health_1_right_bitmap32.smoothing = true; Frame_2_right_bitmap33.smoothing = true; Health_1_right_bitmap34.smoothing = true; Frame_3_right_bitmap35.smoothing = true; Health_1_right_bitmap36.smoothing = true; Frame_1_right_bitmap37.smoothing = true; Health_1_right_bitmap38.smoothing = true; Frame_2_right_bitmap39.smoothing = true; Health_1_right_bitmap40.smoothing = true; Frame_3_right_bitmap41.smoothing = true; Health_1_right_bitmap42.smoothing = true; Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; super.addChild(Bit_Ant_T3_E_L_F1); super.addChild(Bit_Ant_T3_E_L_F2); super.addChild(Bit_Ant_T3_E_L_F3); super.addChild(Bit_Ant_T3_E_R_F1); super.addChild(Bit_Ant_T3_E_R_F2); super.addChild(Bit_Ant_T3_E_R_F3); super.addChild(Bit_Ant_T3_F1_R_F1); super.addChild(Bit_Ant_T3_F1_R_F2); super.addChild(Bit_Ant_T3_F1_R_F3); super.addChild(Bit_Ant_T3_F2_R_F1); super.addChild(Bit_Ant_T3_F2_R_F2); super.addChild(Bit_Ant_T3_F2_R_F3); super.addChild(Bit_Ant_T3_F3_R_F1); super.addChild(Bit_Ant_T3_F3_R_F2); super.addChild(Bit_Ant_T3_F3_R_F3); super.addChild(Bit_Ant_T3_F4_R_F1); super.addChild(Bit_Ant_T3_F4_R_F2); super.addChild(Bit_Ant_T3_F4_R_F3); AntType2(velocity); } public function SetAnimationVelocity(velocity:Number):void{ AnimationTimer.delay = velocity; } public function SetLoading(loading:Number):void{ Loading = loading; } public function StopAnimation():void{ AnimationTimer.stop(); } public function AntType2(velocity:Number):void{ AnimationVelocity = velocity; AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_2); } public function newFrame_type_2(e:TimerEvent):void{ switch (CurrentFrame){ case 1: CurrentFrame = 2; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = true; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = true; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = true; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = true; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; break; case 2: CurrentFrame = 3; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = true; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = true; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = true; Bit_Ant_T3_F2_R_F3.visible = false; }; break; case 3: CurrentFrame = 1; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = true; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = true; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = true; }; break; }; } public function StartAnimation():void{ AnimationTimer.start(); } public function SetDirection(dir:Number):void{ Direction = dir; } public function I2_MoveTo_h1():void{ Bit_Ant_T3_E_L_F1.Health_1.visible = true; Bit_Ant_T3_E_L_F2.Health_1.visible = true; Bit_Ant_T3_E_L_F3.Health_1.visible = true; Bit_Ant_T3_E_R_F1.Health_1.visible = true; Bit_Ant_T3_E_R_F2.Health_1.visible = true; Bit_Ant_T3_E_R_F3.Health_1.visible = true; Bit_Ant_T3_F1_R_F1.Health_1.visible = true; Bit_Ant_T3_F1_R_F2.Health_1.visible = true; Bit_Ant_T3_F1_R_F3.Health_1.visible = true; Bit_Ant_T3_F2_R_F1.Health_1.visible = true; Bit_Ant_T3_F2_R_F2.Health_1.visible = true; Bit_Ant_T3_F2_R_F3.Health_1.visible = true; Bit_Ant_T3_F3_R_F1.Health_1.visible = true; Bit_Ant_T3_F3_R_F2.Health_1.visible = true; Bit_Ant_T3_F3_R_F3.Health_1.visible = true; Bit_Ant_T3_F4_R_F1.Health_1.visible = true; Bit_Ant_T3_F4_R_F2.Health_1.visible = true; Bit_Ant_T3_F4_R_F3.Health_1.visible = true; } } }//package Engine.Sprites.Aminals
Section 93
//Animal2_Apple_1_Asset (Engine.Sprites.Aminals.Animal2_Apple_1_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Apple_1_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 94
//Animal2_Apple_2_Asset (Engine.Sprites.Aminals.Animal2_Apple_2_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Apple_2_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 95
//Animal2_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_1_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_1_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 96
//Animal2_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_1_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_1_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 97
//Animal2_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_2_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_2_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 98
//Animal2_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_2_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_2_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 99
//Animal2_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_3_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_3_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 100
//Animal2_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_3_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Frame_3_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 101
//Animal2_Health_1_left_Asset (Engine.Sprites.Aminals.Animal2_Health_1_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Health_1_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 102
//Animal2_Health_1_right_Asset (Engine.Sprites.Aminals.Animal2_Health_1_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal2_Health_1_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 103
//Animal3 (Engine.Sprites.Aminals.Animal3) package Engine.Sprites.Aminals { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class Animal3 extends Sprite { private var Apple_4_Asset:Class; public var Bit_Ant_T3_E_R_F1:CharacterFrame; public var Bit_Ant_T3_E_R_F2:CharacterFrame; public var Bit_Ant_T3_E_R_F3:CharacterFrame; public var Health_2_right:BitmapAsset; public var Health_2_left:BitmapAsset; public var Loading:Number;// = 0 public var Frame_3_right:BitmapAsset; private var Frame_1_left_Asset:Class; public var Frame_2_left:BitmapAsset; public var Bit_Ant_T3_F3_R_F1:CharacterFrame; public var Bit_Ant_T3_F3_R_F3:CharacterFrame; private var Apple_1_Asset:Class; public var AnimationTimer:Timer; public var Bit_Ant_T3_F3_R_F2:CharacterFrame; private var Health_1_left_Asset:Class; private var Health_1_right_Asset:Class; public var Direction:Number;// = -1 public var AnimationVelocity:Number;// = 0 public var Apple_1:BitmapAsset; private var Frame_1_right_Asset:Class; public var Apple_3:BitmapAsset; private var Frame_3_right_Asset:Class; public var Apple_2:BitmapAsset; public var Apple_4:BitmapAsset; private var Frame_2_left_Asset:Class; public var Health_1_left:BitmapAsset; private var Apple_2_Asset:Class; public var Frame_1_left:BitmapAsset; public var CurrentFrame:Number;// = 1 public var Bit_Ant_T3_F2_R_F1:CharacterFrame; public var Bit_Ant_T3_F2_R_F3:CharacterFrame; public var Frame_1_right:BitmapAsset; public var Bit_Ant_T3_F2_R_F2:CharacterFrame; private var Health_2_left_Asset:Class; private var Apple_3_Asset:Class; public var Frame_3_left:BitmapAsset; public var Health_1_right:BitmapAsset; public var Bit_Ant_T3_E_L_F1:CharacterFrame; public var Bit_Ant_T3_E_L_F2:CharacterFrame; public var Bit_Ant_T3_E_L_F3:CharacterFrame; public var Bit_Ant_T3_F4_R_F1:CharacterFrame; public var Bit_Ant_T3_F4_R_F2:CharacterFrame; public var Bit_Ant_T3_F4_R_F3:CharacterFrame; private var Frame_3_left_Asset:Class; public var Frame_2_right:BitmapAsset; private var Health_2_right_Asset:Class; public var Bit_Ant_T3_F1_R_F1:CharacterFrame; public var Bit_Ant_T3_F1_R_F2:CharacterFrame; public var Bit_Ant_T3_F1_R_F3:CharacterFrame; private var Frame_2_right_Asset:Class; public function Animal3(type:Number, velocity:Number):void{ Frame_1_left_Asset = Animal3_Frame_1_left_Asset; Frame_2_left_Asset = Animal3_Frame_2_left_Asset; Frame_3_left_Asset = Animal3_Frame_3_left_Asset; Frame_1_right_Asset = Animal3_Frame_1_right_Asset; Frame_2_right_Asset = Animal3_Frame_2_right_Asset; Frame_3_right_Asset = Animal3_Frame_3_right_Asset; Apple_1_Asset = Animal3_Apple_1_Asset; Apple_2_Asset = Animal3_Apple_2_Asset; Apple_3_Asset = Animal3_Apple_3_Asset; Apple_4_Asset = Animal3_Apple_4_Asset; Health_1_right_Asset = Animal3_Health_1_right_Asset; Health_2_right_Asset = Animal3_Health_2_right_Asset; Health_1_left_Asset = Animal3_Health_1_left_Asset; Health_2_left_Asset = Animal3_Health_2_left_Asset; AnimationTimer = new Timer(60, 0); Bit_Ant_T3_E_L_F1 = new CharacterFrame(); Bit_Ant_T3_E_L_F2 = new CharacterFrame(); Bit_Ant_T3_E_L_F3 = new CharacterFrame(); Bit_Ant_T3_E_R_F1 = new CharacterFrame(); Bit_Ant_T3_E_R_F2 = new CharacterFrame(); Bit_Ant_T3_E_R_F3 = new CharacterFrame(); Bit_Ant_T3_F1_R_F1 = new CharacterFrame(); Bit_Ant_T3_F1_R_F2 = new CharacterFrame(); Bit_Ant_T3_F1_R_F3 = new CharacterFrame(); Bit_Ant_T3_F2_R_F1 = new CharacterFrame(); Bit_Ant_T3_F2_R_F2 = new CharacterFrame(); Bit_Ant_T3_F2_R_F3 = new CharacterFrame(); Bit_Ant_T3_F3_R_F1 = new CharacterFrame(); Bit_Ant_T3_F3_R_F2 = new CharacterFrame(); Bit_Ant_T3_F3_R_F3 = new CharacterFrame(); Bit_Ant_T3_F4_R_F1 = new CharacterFrame(); Bit_Ant_T3_F4_R_F2 = new CharacterFrame(); Bit_Ant_T3_F4_R_F3 = new CharacterFrame(); super(); var Frame_1_left_bitmap1:BitmapAsset = new Frame_1_left_Asset(); var Health_1_left_bitmap2:BitmapAsset = new Health_1_left_Asset(); var Health_2_left_bitmap3:BitmapAsset = new Health_2_left_Asset(); var Frame_2_left_bitmap4:BitmapAsset = new Frame_2_left_Asset(); var Health_1_left_bitmap5:BitmapAsset = new Health_1_left_Asset(); var Health_2_left_bitmap6:BitmapAsset = new Health_2_left_Asset(); var Frame_3_left_bitmap7:BitmapAsset = new Frame_3_left_Asset(); var Health_1_left_bitmap8:BitmapAsset = new Health_1_left_Asset(); var Health_2_left_bitmap9:BitmapAsset = new Health_2_left_Asset(); var Frame_1_right_bitmap10:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap11:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap12:BitmapAsset = new Health_2_right_Asset(); var Frame_2_right_bitmap13:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap14:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap15:BitmapAsset = new Health_2_right_Asset(); var Frame_3_right_bitmap16:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap17:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap18:BitmapAsset = new Health_2_right_Asset(); var Frame_1_right_bitmap19:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap20:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap21:BitmapAsset = new Health_2_right_Asset(); var Apple_1_bitmap22:BitmapAsset = new Apple_1_Asset(); var Frame_2_right_bitmap23:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap24:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap25:BitmapAsset = new Health_2_right_Asset(); var Apple_1_bitmap26:BitmapAsset = new Apple_1_Asset(); var Frame_3_right_bitmap27:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap28:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap29:BitmapAsset = new Health_2_right_Asset(); var Apple_1_bitmap30:BitmapAsset = new Apple_1_Asset(); var Frame_1_right_bitmap31:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap32:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap33:BitmapAsset = new Health_2_right_Asset(); var Apple_2_bitmap34:BitmapAsset = new Apple_2_Asset(); var Frame_2_right_bitmap35:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap36:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap37:BitmapAsset = new Health_2_right_Asset(); var Apple_2_bitmap38:BitmapAsset = new Apple_2_Asset(); var Frame_3_right_bitmap39:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap40:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap41:BitmapAsset = new Health_2_right_Asset(); var Apple_2_bitmap42:BitmapAsset = new Apple_2_Asset(); var Frame_1_right_bitmap43:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap44:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap45:BitmapAsset = new Health_2_right_Asset(); var Apple_3_bitmap46:BitmapAsset = new Apple_3_Asset(); var Frame_2_right_bitmap47:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap48:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap49:BitmapAsset = new Health_2_right_Asset(); var Apple_3_bitmap50:BitmapAsset = new Apple_3_Asset(); var Frame_3_right_bitmap51:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap52:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap53:BitmapAsset = new Health_2_right_Asset(); var Apple_3_bitmap54:BitmapAsset = new Apple_3_Asset(); var Frame_1_right_bitmap55:BitmapAsset = new Frame_1_right_Asset(); var Health_1_right_bitmap56:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap57:BitmapAsset = new Health_2_right_Asset(); var Apple_4_bitmap58:BitmapAsset = new Apple_4_Asset(); var Frame_2_right_bitmap59:BitmapAsset = new Frame_2_right_Asset(); var Health_1_right_bitmap60:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap61:BitmapAsset = new Health_2_right_Asset(); var Apple_4_bitmap62:BitmapAsset = new Apple_4_Asset(); var Frame_3_right_bitmap63:BitmapAsset = new Frame_3_right_Asset(); var Health_1_right_bitmap64:BitmapAsset = new Health_1_right_Asset(); var Health_2_right_bitmap65:BitmapAsset = new Health_2_right_Asset(); var Apple_4_bitmap66:BitmapAsset = new Apple_4_Asset(); Frame_1_left_bitmap1.smoothing = true; Health_1_left_bitmap2.smoothing = true; Health_2_left_bitmap3.smoothing = true; Frame_2_left_bitmap4.smoothing = true; Health_1_left_bitmap5.smoothing = true; Health_2_left_bitmap6.smoothing = true; Frame_3_left_bitmap7.smoothing = true; Health_1_left_bitmap8.smoothing = true; Health_2_left_bitmap9.smoothing = true; Frame_1_right_bitmap10.smoothing = true; Health_1_right_bitmap11.smoothing = true; Health_2_right_bitmap12.smoothing = true; Frame_2_right_bitmap13.smoothing = true; Health_1_right_bitmap14.smoothing = true; Health_2_right_bitmap15.smoothing = true; Frame_3_right_bitmap16.smoothing = true; Health_1_right_bitmap17.smoothing = true; Health_2_right_bitmap18.smoothing = true; Frame_1_right_bitmap19.smoothing = true; Health_1_right_bitmap20.smoothing = true; Health_2_right_bitmap21.smoothing = true; Apple_1_bitmap22.smoothing = true; Frame_2_right_bitmap23.smoothing = true; Health_1_right_bitmap24.smoothing = true; Health_2_right_bitmap25.smoothing = true; Apple_1_bitmap26.smoothing = true; Frame_3_right_bitmap27.smoothing = true; Health_1_right_bitmap28.smoothing = true; Health_2_right_bitmap29.smoothing = true; Apple_1_bitmap30.smoothing = true; Frame_1_right_bitmap31.smoothing = true; Health_1_right_bitmap32.smoothing = true; Health_2_right_bitmap33.smoothing = true; Apple_2_bitmap34.smoothing = true; Frame_2_right_bitmap35.smoothing = true; Health_1_right_bitmap36.smoothing = true; Health_2_right_bitmap37.smoothing = true; Apple_2_bitmap38.smoothing = true; Frame_3_right_bitmap39.smoothing = true; Health_1_right_bitmap40.smoothing = true; Health_2_right_bitmap41.smoothing = true; Apple_2_bitmap42.smoothing = true; Frame_1_right_bitmap43.smoothing = true; Health_1_right_bitmap44.smoothing = true; Health_2_right_bitmap45.smoothing = true; Apple_3_bitmap46.smoothing = true; Frame_2_right_bitmap47.smoothing = true; Health_1_right_bitmap48.smoothing = true; Health_2_right_bitmap49.smoothing = true; Apple_3_bitmap50.smoothing = true; Frame_3_right_bitmap51.smoothing = true; Health_1_right_bitmap52.smoothing = true; Health_2_right_bitmap53.smoothing = true; Apple_3_bitmap54.smoothing = true; Frame_1_right_bitmap55.smoothing = true; Health_1_right_bitmap56.smoothing = true; Health_2_right_bitmap57.smoothing = true; Apple_4_bitmap58.smoothing = true; Frame_2_right_bitmap59.smoothing = true; Health_1_right_bitmap60.smoothing = true; Health_2_right_bitmap61.smoothing = true; Apple_4_bitmap62.smoothing = true; Frame_3_right_bitmap63.smoothing = true; Health_1_right_bitmap64.smoothing = true; Health_2_right_bitmap65.smoothing = true; Apple_4_bitmap66.smoothing = true; Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap1); Bit_Ant_T3_E_L_F1.Health_1.addChild(Health_1_left_bitmap2); Bit_Ant_T3_E_L_F1.Health_2.addChild(Health_2_left_bitmap3); Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap4); Bit_Ant_T3_E_L_F2.Health_1.addChild(Health_1_left_bitmap5); Bit_Ant_T3_E_L_F2.Health_2.addChild(Health_2_left_bitmap6); Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap7); Bit_Ant_T3_E_L_F3.Health_1.addChild(Health_1_left_bitmap8); Bit_Ant_T3_E_L_F3.Health_2.addChild(Health_2_left_bitmap9); Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap10); Bit_Ant_T3_E_R_F1.Health_1.addChild(Health_1_right_bitmap11); Bit_Ant_T3_E_R_F1.Health_2.addChild(Health_2_right_bitmap12); Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap13); Bit_Ant_T3_E_R_F2.Health_1.addChild(Health_1_right_bitmap14); Bit_Ant_T3_E_R_F2.Health_2.addChild(Health_2_right_bitmap15); Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap16); Bit_Ant_T3_E_R_F3.Health_1.addChild(Health_1_right_bitmap17); Bit_Ant_T3_E_R_F3.Health_2.addChild(Health_2_right_bitmap18); Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap19); Bit_Ant_T3_F1_R_F1.Health_1.addChild(Health_1_right_bitmap20); Bit_Ant_T3_F1_R_F1.Health_2.addChild(Health_2_right_bitmap21); Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap22); Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap23); Bit_Ant_T3_F1_R_F2.Health_1.addChild(Health_1_right_bitmap24); Bit_Ant_T3_F1_R_F2.Health_2.addChild(Health_2_right_bitmap25); Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap26); Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap27); Bit_Ant_T3_F1_R_F3.Health_1.addChild(Health_1_right_bitmap28); Bit_Ant_T3_F1_R_F3.Health_2.addChild(Health_2_right_bitmap29); Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap30); Bit_Ant_T3_F2_R_F1.Frame.addChild(Frame_1_right_bitmap31); Bit_Ant_T3_F2_R_F1.Health_1.addChild(Health_1_right_bitmap32); Bit_Ant_T3_F2_R_F1.Health_2.addChild(Health_2_right_bitmap33); Bit_Ant_T3_F2_R_F1.Apple.addChild(Apple_2_bitmap34); Bit_Ant_T3_F2_R_F2.Frame.addChild(Frame_2_right_bitmap35); Bit_Ant_T3_F2_R_F2.Health_1.addChild(Health_1_right_bitmap36); Bit_Ant_T3_F2_R_F2.Health_2.addChild(Health_2_right_bitmap37); Bit_Ant_T3_F2_R_F2.Apple.addChild(Apple_2_bitmap38); Bit_Ant_T3_F2_R_F3.Frame.addChild(Frame_3_right_bitmap39); Bit_Ant_T3_F2_R_F3.Health_1.addChild(Health_1_right_bitmap40); Bit_Ant_T3_F2_R_F3.Health_2.addChild(Health_2_right_bitmap41); Bit_Ant_T3_F2_R_F3.Apple.addChild(Apple_2_bitmap42); Bit_Ant_T3_F3_R_F1.Frame.addChild(Frame_1_right_bitmap43); Bit_Ant_T3_F3_R_F1.Health_1.addChild(Health_1_right_bitmap44); Bit_Ant_T3_F3_R_F1.Health_2.addChild(Health_2_right_bitmap45); Bit_Ant_T3_F3_R_F1.Apple.addChild(Apple_3_bitmap46); Bit_Ant_T3_F3_R_F2.Frame.addChild(Frame_2_right_bitmap47); Bit_Ant_T3_F3_R_F2.Health_1.addChild(Health_1_right_bitmap48); Bit_Ant_T3_F3_R_F2.Health_2.addChild(Health_2_right_bitmap49); Bit_Ant_T3_F3_R_F2.Apple.addChild(Apple_3_bitmap50); Bit_Ant_T3_F3_R_F3.Frame.addChild(Frame_3_right_bitmap51); Bit_Ant_T3_F3_R_F3.Health_1.addChild(Health_1_right_bitmap52); Bit_Ant_T3_F3_R_F3.Health_2.addChild(Health_2_right_bitmap53); Bit_Ant_T3_F3_R_F3.Apple.addChild(Apple_3_bitmap54); Bit_Ant_T3_F4_R_F1.Frame.addChild(Frame_1_right_bitmap55); Bit_Ant_T3_F4_R_F1.Health_1.addChild(Health_1_right_bitmap56); Bit_Ant_T3_F4_R_F1.Health_2.addChild(Health_2_right_bitmap57); Bit_Ant_T3_F4_R_F1.Apple.addChild(Apple_4_bitmap58); Bit_Ant_T3_F4_R_F2.Frame.addChild(Frame_2_right_bitmap59); Bit_Ant_T3_F4_R_F2.Health_1.addChild(Health_1_right_bitmap60); Bit_Ant_T3_F4_R_F2.Health_2.addChild(Health_2_right_bitmap61); Bit_Ant_T3_F4_R_F2.Apple.addChild(Apple_4_bitmap62); Bit_Ant_T3_F4_R_F3.Frame.addChild(Frame_3_right_bitmap63); Bit_Ant_T3_F4_R_F3.Health_1.addChild(Health_1_right_bitmap64); Bit_Ant_T3_F4_R_F3.Health_2.addChild(Health_2_right_bitmap65); Bit_Ant_T3_F4_R_F3.Apple.addChild(Apple_4_bitmap66); Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; super.addChild(Bit_Ant_T3_E_L_F1); super.addChild(Bit_Ant_T3_E_L_F2); super.addChild(Bit_Ant_T3_E_L_F3); super.addChild(Bit_Ant_T3_E_R_F1); super.addChild(Bit_Ant_T3_E_R_F2); super.addChild(Bit_Ant_T3_E_R_F3); super.addChild(Bit_Ant_T3_F1_R_F1); super.addChild(Bit_Ant_T3_F1_R_F2); super.addChild(Bit_Ant_T3_F1_R_F3); super.addChild(Bit_Ant_T3_F2_R_F1); super.addChild(Bit_Ant_T3_F2_R_F2); super.addChild(Bit_Ant_T3_F2_R_F3); super.addChild(Bit_Ant_T3_F3_R_F1); super.addChild(Bit_Ant_T3_F3_R_F2); super.addChild(Bit_Ant_T3_F3_R_F3); super.addChild(Bit_Ant_T3_F4_R_F1); super.addChild(Bit_Ant_T3_F4_R_F2); super.addChild(Bit_Ant_T3_F4_R_F3); AntType3(velocity); } public function newFrame_type_3(e:TimerEvent):void{ switch (CurrentFrame){ case 1: CurrentFrame = 2; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = true; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = true; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = true; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = true; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 3){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = true; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 4){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = true; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; break; case 2: CurrentFrame = 3; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = true; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = true; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = true; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 3){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = true; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 4){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = true; Bit_Ant_T3_F4_R_F3.visible = false; }; break; case 3: CurrentFrame = 1; if (Loading == 0){ if (Direction < 0){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = true; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; } else { Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_E_R_F3.visible = true; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; }; if (Loading == 1){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = true; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 2){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = true; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 3){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = true; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = false; }; if (Loading == 4){ Bit_Ant_T3_E_L_F1.visible = false; Bit_Ant_T3_E_L_F2.visible = false; Bit_Ant_T3_E_L_F3.visible = false; Bit_Ant_T3_E_R_F1.visible = false; Bit_Ant_T3_E_R_F2.visible = false; Bit_Ant_T3_F1_R_F1.visible = false; Bit_Ant_T3_F1_R_F2.visible = false; Bit_Ant_T3_F1_R_F3.visible = false; Bit_Ant_T3_F2_R_F1.visible = false; Bit_Ant_T3_F2_R_F2.visible = false; Bit_Ant_T3_F2_R_F3.visible = false; Bit_Ant_T3_F3_R_F1.visible = false; Bit_Ant_T3_F3_R_F2.visible = false; Bit_Ant_T3_F3_R_F3.visible = false; Bit_Ant_T3_F4_R_F1.visible = false; Bit_Ant_T3_F4_R_F2.visible = false; Bit_Ant_T3_F4_R_F3.visible = true; }; break; }; } public function SetDirection(dir:Number):void{ Direction = dir; } public function StartAnimation():void{ AnimationTimer.start(); } public function SetAnimationVelocity(velocity:Number):void{ AnimationTimer.delay = velocity; } public function StopAnimation():void{ AnimationTimer.stop(); } public function SetLoading(loading:Number):void{ Loading = loading; } public function I3_MoveTo_h1():void{ Bit_Ant_T3_E_L_F1.Health_1.visible = true; Bit_Ant_T3_E_L_F2.Health_1.visible = true; Bit_Ant_T3_E_L_F3.Health_1.visible = true; Bit_Ant_T3_E_R_F1.Health_1.visible = true; Bit_Ant_T3_E_R_F2.Health_1.visible = true; Bit_Ant_T3_E_R_F3.Health_1.visible = true; Bit_Ant_T3_F1_R_F1.Health_1.visible = true; Bit_Ant_T3_F1_R_F2.Health_1.visible = true; Bit_Ant_T3_F1_R_F3.Health_1.visible = true; Bit_Ant_T3_F2_R_F1.Health_1.visible = true; Bit_Ant_T3_F2_R_F2.Health_1.visible = true; Bit_Ant_T3_F2_R_F3.Health_1.visible = true; Bit_Ant_T3_F3_R_F1.Health_1.visible = true; Bit_Ant_T3_F3_R_F2.Health_1.visible = true; Bit_Ant_T3_F3_R_F3.Health_1.visible = true; Bit_Ant_T3_F4_R_F1.Health_1.visible = true; Bit_Ant_T3_F4_R_F2.Health_1.visible = true; Bit_Ant_T3_F4_R_F3.Health_1.visible = true; } public function AntType3(velocity:Number):void{ AnimationVelocity = velocity; AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_3); } public function I3_MoveTo_h2():void{ Bit_Ant_T3_E_L_F1.Health_1.visible = false; Bit_Ant_T3_E_L_F2.Health_1.visible = false; Bit_Ant_T3_E_L_F3.Health_1.visible = false; Bit_Ant_T3_E_R_F1.Health_1.visible = false; Bit_Ant_T3_E_R_F2.Health_1.visible = false; Bit_Ant_T3_E_R_F3.Health_1.visible = false; Bit_Ant_T3_F1_R_F1.Health_1.visible = false; Bit_Ant_T3_F1_R_F2.Health_1.visible = false; Bit_Ant_T3_F1_R_F3.Health_1.visible = false; Bit_Ant_T3_F2_R_F1.Health_1.visible = false; Bit_Ant_T3_F2_R_F2.Health_1.visible = false; Bit_Ant_T3_F2_R_F3.Health_1.visible = false; Bit_Ant_T3_F3_R_F1.Health_1.visible = false; Bit_Ant_T3_F3_R_F2.Health_1.visible = false; Bit_Ant_T3_F3_R_F3.Health_1.visible = false; Bit_Ant_T3_F4_R_F1.Health_1.visible = false; Bit_Ant_T3_F4_R_F2.Health_1.visible = false; Bit_Ant_T3_F4_R_F3.Health_1.visible = false; Bit_Ant_T3_E_L_F1.Health_2.visible = true; Bit_Ant_T3_E_L_F2.Health_2.visible = true; Bit_Ant_T3_E_L_F3.Health_2.visible = true; Bit_Ant_T3_E_R_F1.Health_2.visible = true; Bit_Ant_T3_E_R_F2.Health_2.visible = true; Bit_Ant_T3_E_R_F3.Health_2.visible = true; Bit_Ant_T3_F1_R_F1.Health_2.visible = true; Bit_Ant_T3_F1_R_F2.Health_2.visible = true; Bit_Ant_T3_F1_R_F3.Health_2.visible = true; Bit_Ant_T3_F2_R_F1.Health_2.visible = true; Bit_Ant_T3_F2_R_F2.Health_2.visible = true; Bit_Ant_T3_F2_R_F3.Health_2.visible = true; Bit_Ant_T3_F3_R_F1.Health_2.visible = true; Bit_Ant_T3_F3_R_F2.Health_2.visible = true; Bit_Ant_T3_F3_R_F3.Health_2.visible = true; Bit_Ant_T3_F4_R_F1.Health_2.visible = true; Bit_Ant_T3_F4_R_F2.Health_2.visible = true; Bit_Ant_T3_F4_R_F3.Health_2.visible = true; } } }//package Engine.Sprites.Aminals
Section 104
//Animal3_Apple_1_Asset (Engine.Sprites.Aminals.Animal3_Apple_1_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Apple_1_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 105
//Animal3_Apple_2_Asset (Engine.Sprites.Aminals.Animal3_Apple_2_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Apple_2_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 106
//Animal3_Apple_3_Asset (Engine.Sprites.Aminals.Animal3_Apple_3_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Apple_3_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 107
//Animal3_Apple_4_Asset (Engine.Sprites.Aminals.Animal3_Apple_4_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Apple_4_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 108
//Animal3_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_1_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_1_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 109
//Animal3_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_1_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_1_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 110
//Animal3_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_2_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_2_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 111
//Animal3_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_2_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_2_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 112
//Animal3_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_3_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_3_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 113
//Animal3_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_3_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Frame_3_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 114
//Animal3_Health_1_left_Asset (Engine.Sprites.Aminals.Animal3_Health_1_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Health_1_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 115
//Animal3_Health_1_right_Asset (Engine.Sprites.Aminals.Animal3_Health_1_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Health_1_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 116
//Animal3_Health_2_left_Asset (Engine.Sprites.Aminals.Animal3_Health_2_left_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Health_2_left_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 117
//Animal3_Health_2_right_Asset (Engine.Sprites.Aminals.Animal3_Health_2_right_Asset) package Engine.Sprites.Aminals { import mx.core.*; public class Animal3_Health_2_right_Asset extends BitmapAsset { } }//package Engine.Sprites.Aminals
Section 118
//CharacterFrame (Engine.Sprites.Aminals.CharacterFrame) package Engine.Sprites.Aminals { import flash.display.*; public class CharacterFrame extends Sprite { public var Apple:Sprite; public var Health_1:Sprite; public var Frame:Sprite; public var Health_2:Sprite; public function CharacterFrame(){ Frame = new Sprite(); Health_1 = new Sprite(); Health_2 = new Sprite(); Apple = new Sprite(); super(); super.addChild(Frame); Health_1.visible = false; Health_2.visible = false; super.addChild(Health_1); super.addChild(Health_2); super.addChild(Apple); } } }//package Engine.Sprites.Aminals
Section 119
//AppleCrushClip (Engine.Sprites.apples.AppleCrushClip) package Engine.Sprites.apples { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class AppleCrushClip extends Sprite { private var Frame_1_bitmapData:BitmapAsset; private var AnimationTimer:Timer; private var Frame:Array; private var Frame_2_Asset:Class; public var currentFrame:Number;// = 1 private var Frame_3_bitmapData:BitmapAsset; private var Frame_2_bitmapData:BitmapAsset; private var Frame_3_Asset:Class; private var Frame_1_Asset:Class; public function AppleCrushClip(){ Frame_1_Asset = AppleCrushClip_Frame_1_Asset; Frame_2_Asset = AppleCrushClip_Frame_2_Asset; Frame_3_Asset = AppleCrushClip_Frame_3_Asset; AnimationTimer = new Timer(20, 2); Frame = new Array(); super(); Frame.push(new Frame_1_Asset()); Frame.push(new Frame_2_Asset()); Frame.push(new Frame_3_Asset()); var t:int; while (t < 3) { Frame[t].visible = false; Frame[t].smoothing = true; super.addChild(Frame[t]); t++; }; Frame[0].visible = true; AnimationTimer.addEventListener(TimerEvent.TIMER, onTime); AnimationTimer.start(); } public function onTime(e:TimerEvent):void{ if (currentFrame == 1){ switch_to_2(); return; }; if (currentFrame == 2){ switch_to_3(); AnimationTimer.stop(); return; }; } public function switch_to_2():void{ Frame[0].visible = false; Frame[1].visible = true; currentFrame = 2; } public function switch_to_3():void{ Frame[1].visible = false; Frame[2].visible = true; currentFrame = 3; } } }//package Engine.Sprites.apples
Section 120
//AppleCrushClip_Frame_1_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_1_Asset) package Engine.Sprites.apples { import mx.core.*; public class AppleCrushClip_Frame_1_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 121
//AppleCrushClip_Frame_2_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_2_Asset) package Engine.Sprites.apples { import mx.core.*; public class AppleCrushClip_Frame_2_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 122
//AppleCrushClip_Frame_3_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_3_Asset) package Engine.Sprites.apples { import mx.core.*; public class AppleCrushClip_Frame_3_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 123
//CAppleSprite (Engine.Sprites.apples.CAppleSprite) package Engine.Sprites.apples { import flash.display.*; import mx.core.*; public class CAppleSprite extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function CAppleSprite(X:Number, Y:Number, R:Number){ AppleSimpl_Asset = CAppleSprite_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(16716049); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); _bitmapData.x = (-(R) - 2); _bitmapData.y = (-(R) - 6); _bitmapData.smoothing = true; var temp1:Sprite = new Sprite(); _bitmapData.smoothing = true; temp1.addChild(_bitmapData); super.addChild(temp1); } } }//package Engine.Sprites.apples
Section 124
//CAppleSprite_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite_AppleSimpl_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 125
//CAppleSprite_type2 (Engine.Sprites.apples.CAppleSprite_type2) package Engine.Sprites.apples { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class CAppleSprite_type2 extends Sprite { private var FrameFaster_1_Asset:Class; private var AnimationTimer:Timer; private var Frame:Array; private var FrameFaster_3_Asset:Class; private var Frame_2_bitmapData:BitmapAsset; public var currentFrame:Number;// = 0 private var Frame_3_bitmapData:BitmapAsset; private var FrameFaster_0_Asset:Class; private var Frame_1_bitmapData:BitmapAsset; private var FrameFaster_2_Asset:Class; public function CAppleSprite_type2(){ FrameFaster_0_Asset = CAppleSprite_type2_FrameFaster_0_Asset; FrameFaster_1_Asset = CAppleSprite_type2_FrameFaster_1_Asset; FrameFaster_2_Asset = CAppleSprite_type2_FrameFaster_2_Asset; FrameFaster_3_Asset = CAppleSprite_type2_FrameFaster_3_Asset; AnimationTimer = new Timer(200); Frame = new Array(); super(); Frame.push(new FrameFaster_0_Asset()); Frame.push(new FrameFaster_1_Asset()); Frame.push(new FrameFaster_2_Asset()); Frame.push(new FrameFaster_3_Asset()); var t:int; while (t < 4) { Frame[t].visible = false; Frame[t].x = (-12.5 - 2); Frame[t].y = (-12.5 - 6); Frame[t].smoothing = true; super.addChild(Frame[t]); t++; }; Frame[0].visible = true; AnimationTimer.addEventListener(TimerEvent.TIMER, onTime); AnimationTimer.start(); } public function onTime(e:TimerEvent):void{ if (currentFrame == 0){ switch_to_1(); return; }; if (currentFrame == 1){ switch_to_2(); return; }; if (currentFrame == 2){ switch_to_3(); return; }; if (currentFrame == 3){ switch_to_0(); return; }; } public function switch_to_0():void{ Frame[1].visible = false; Frame[2].visible = false; Frame[3].visible = false; Frame[0].visible = true; currentFrame = 0; } public function switch_to_1():void{ Frame[0].visible = false; Frame[1].visible = true; Frame[2].visible = false; Frame[3].visible = false; currentFrame = 1; } public function switch_to_2():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = true; Frame[3].visible = false; currentFrame = 2; } public function switch_to_3():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = false; Frame[3].visible = true; currentFrame = 3; } } }//package Engine.Sprites.apples
Section 126
//CAppleSprite_type2_FrameFaster_0_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_0_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type2_FrameFaster_0_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 127
//CAppleSprite_type2_FrameFaster_1_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_1_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type2_FrameFaster_1_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 128
//CAppleSprite_type2_FrameFaster_2_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_2_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type2_FrameFaster_2_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 129
//CAppleSprite_type2_FrameFaster_3_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_3_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type2_FrameFaster_3_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 130
//CAppleSprite_type3 (Engine.Sprites.apples.CAppleSprite_type3) package Engine.Sprites.apples { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class CAppleSprite_type3 extends Sprite { private var AnimationTimer:Timer; private var Frame:Array; public var currentFrame:Number;// = 0 private var Frame_3_bitmapData:BitmapAsset; private var Frame_2_bitmapData:BitmapAsset; private var Frame_1_bitmapData:BitmapAsset; private var FrameSlower_1_Asset:Class; private var FrameSlower_2_Asset:Class; public function CAppleSprite_type3(){ FrameSlower_1_Asset = CAppleSprite_type3_FrameSlower_1_Asset; FrameSlower_2_Asset = CAppleSprite_type3_FrameSlower_2_Asset; AnimationTimer = new Timer(270); Frame = new Array(); super(); Frame.push(new FrameSlower_1_Asset()); Frame.push(new FrameSlower_2_Asset()); var t:int; while (t < 2) { Frame[t].visible = false; Frame[t].x = (-12.5 - 2); Frame[t].y = (-12.5 - 6); Frame[t].smoothing = true; super.addChild(Frame[t]); t++; }; Frame[0].visible = true; AnimationTimer.addEventListener(TimerEvent.TIMER, onTime); AnimationTimer.start(); } public function switch_to_2():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = true; Frame[3].visible = false; currentFrame = 2; } public function switch_to_0():void{ Frame[1].visible = false; Frame[0].visible = true; currentFrame = 0; } public function switch_to_1():void{ Frame[0].visible = false; Frame[1].visible = true; currentFrame = 1; } public function switch_to_3():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = false; Frame[3].visible = true; currentFrame = 3; } public function onTime(e:TimerEvent):void{ if (currentFrame == 0){ switch_to_1(); return; }; if (currentFrame == 1){ switch_to_0(); return; }; } } }//package Engine.Sprites.apples
Section 131
//CAppleSprite_type3_FrameSlower_1_Asset (Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_1_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type3_FrameSlower_1_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 132
//CAppleSprite_type3_FrameSlower_2_Asset (Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_2_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type3_FrameSlower_2_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 133
//CAppleSprite_type4 (Engine.Sprites.apples.CAppleSprite_type4) package Engine.Sprites.apples { import flash.display.*; import mx.core.*; public class CAppleSprite_type4 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function CAppleSprite_type4(X:Number, Y:Number, R:Number){ AppleSimpl_Asset = CAppleSprite_type4_AppleSimpl_Asset; super(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(1179409); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.x = (-(R) - 2); _bitmapData.y = (-(R) - 6); _bitmapData.smoothing = true; super.addChild(_bitmapData); } } }//package Engine.Sprites.apples
Section 134
//CAppleSprite_type4_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite_type4_AppleSimpl_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type4_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 135
//CAppleSprite_type5 (Engine.Sprites.apples.CAppleSprite_type5) package Engine.Sprites.apples { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; public class CAppleSprite_type5 extends Sprite { private var AnimationTimer:Timer; private var Frame:Array; public var currentFrame:Number;// = 0 private var FrameDie_1_Asset:Class; private var Frame_3_bitmapData:BitmapAsset; private var Frame_2_bitmapData:BitmapAsset; private var Frame_1_bitmapData:BitmapAsset; private var FrameDie_2_Asset:Class; public function CAppleSprite_type5(){ FrameDie_1_Asset = CAppleSprite_type5_FrameDie_1_Asset; FrameDie_2_Asset = CAppleSprite_type5_FrameDie_2_Asset; AnimationTimer = new Timer(220); Frame = new Array(); super(); Frame.push(new FrameDie_1_Asset()); Frame.push(new FrameDie_2_Asset()); var t:int; while (t < 2) { Frame[t].visible = false; Frame[t].x = (-12.5 - 2); Frame[t].y = (-12.5 - 6); Frame[t].smoothing = true; super.addChild(Frame[t]); t++; }; Frame[0].visible = true; AnimationTimer.addEventListener(TimerEvent.TIMER, onTime); AnimationTimer.start(); } public function switch_to_2():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = true; Frame[3].visible = false; currentFrame = 2; } public function switch_to_0():void{ Frame[1].visible = false; Frame[0].visible = true; currentFrame = 0; } public function switch_to_3():void{ Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = false; Frame[3].visible = true; currentFrame = 3; } public function onTime(e:TimerEvent):void{ if (currentFrame == 0){ switch_to_1(); return; }; if (currentFrame == 1){ switch_to_0(); return; }; } public function switch_to_1():void{ Frame[0].visible = false; Frame[1].visible = true; currentFrame = 1; } } }//package Engine.Sprites.apples
Section 136
//CAppleSprite_type5_FrameDie_1_Asset (Engine.Sprites.apples.CAppleSprite_type5_FrameDie_1_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type5_FrameDie_1_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 137
//CAppleSprite_type5_FrameDie_2_Asset (Engine.Sprites.apples.CAppleSprite_type5_FrameDie_2_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite_type5_FrameDie_2_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 138
//CAppleSprite_type6 (Engine.Sprites.apples.CAppleSprite_type6) package Engine.Sprites.apples { import flash.display.*; public class CAppleSprite_type6 extends Sprite { public function CAppleSprite_type6(X:Number, Y:Number, R:Number){ super(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(0xFF0099); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); super.addChild(one_more_sprite); } } }//package Engine.Sprites.apples
Section 139
//CAppleSprite_type7 (Engine.Sprites.apples.CAppleSprite_type7) package Engine.Sprites.apples { import flash.display.*; public class CAppleSprite_type7 extends Sprite { public function CAppleSprite_type7(X:Number, Y:Number, R:Number){ super(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(0xFF0099); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); super.addChild(one_more_sprite); } } }//package Engine.Sprites.apples
Section 140
//CAppleSprite1 (Engine.Sprites.apples.CAppleSprite1) package Engine.Sprites.apples { import flash.display.*; import mx.core.*; public class CAppleSprite1 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function CAppleSprite1(X:Number, Y:Number, R:Number){ AppleSimpl_Asset = CAppleSprite1_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(16716049); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); _bitmapData.x = (-(R) - 5); _bitmapData.y = (-(R) - 10); _bitmapData.smoothing = true; super.addChild(_bitmapData); } } }//package Engine.Sprites.apples
Section 141
//CAppleSprite1_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite1_AppleSimpl_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite1_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 142
//CAppleSprite2 (Engine.Sprites.apples.CAppleSprite2) package Engine.Sprites.apples { import flash.display.*; import mx.core.*; public class CAppleSprite2 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function CAppleSprite2(X:Number, Y:Number, R:Number){ AppleSimpl_Asset = CAppleSprite2_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(16716049); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); _bitmapData.x = (-(R) - 2); _bitmapData.y = (-(R) - 6); _bitmapData.smoothing = true; super.addChild(_bitmapData); } } }//package Engine.Sprites.apples
Section 143
//CAppleSprite2_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite2_AppleSimpl_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite2_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 144
//CAppleSprite3 (Engine.Sprites.apples.CAppleSprite3) package Engine.Sprites.apples { import flash.display.*; import mx.core.*; public class CAppleSprite3 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function CAppleSprite3(X:Number, Y:Number, R:Number){ AppleSimpl_Asset = CAppleSprite3_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); var one_more_sprite:Sprite = new Sprite(); one_more_sprite.graphics.beginFill(16716049); one_more_sprite.graphics.drawCircle(X, Y, R); one_more_sprite.graphics.endFill(); _bitmapData.x = (-(R) - 2); _bitmapData.y = (-(R) - 6); _bitmapData.smoothing = true; super.addChild(_bitmapData); } } }//package Engine.Sprites.apples
Section 145
//CAppleSprite3_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite3_AppleSimpl_Asset) package Engine.Sprites.apples { import mx.core.*; public class CAppleSprite3_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.apples
Section 146
//BoxWithApples (Engine.Sprites.Objects.BoxWithApples) package Engine.Sprites.Objects { import flash.display.*; import mx.core.*; public class BoxWithApples extends Sprite { public var Bit_Box:BitmapAsset; public var Bit_Apple:BitmapAsset; public var apples_in_the_box:Number;// = 20 private var Apple_Asset:Class; public var Bit_Box_Top:BitmapAsset; private var Box_Top_Asset:Class; public var apples_array:Array; private var Box_Asset:Class; public function BoxWithApples(apples:Number){ Apple_Asset = BoxWithApples_Apple_Asset; Box_Asset = BoxWithApples_Box_Asset; Box_Top_Asset = BoxWithApples_Box_Top_Asset; apples_array = new Array(); super(); apples_in_the_box = apples; Bit_Box_Top = new Box_Top_Asset(); Bit_Box_Top.smoothing = true; Bit_Box_Top.y = (Bit_Box_Top.y - 8); super.addChild(Bit_Box_Top); var i:Number = 0; while (i < apples_in_the_box) { apples_array.push(new Apple_Asset()); i++; }; apples_array[0].x = 5; apples_array[0].y = 35; apples_array[1].x = 16; apples_array[1].y = 35; apples_array[2].x = 27; apples_array[2].y = 35; apples_array[3].x = 38; apples_array[3].y = 35; apples_array[4].x = 49; apples_array[4].y = 35; apples_array[5].x = 60; apples_array[5].y = 35; apples_array[6].x = 10; apples_array[6].y = 25; apples_array[7].x = 21; apples_array[7].y = 25; apples_array[8].x = 32; apples_array[8].y = 25; apples_array[9].x = 43; apples_array[9].y = 25; apples_array[10].x = 54; apples_array[10].y = 25; apples_array[11].x = 16; apples_array[11].y = 15; apples_array[12].x = 27; apples_array[12].y = 15; apples_array[13].x = 38; apples_array[13].y = 15; apples_array[14].x = 49; apples_array[14].y = 15; apples_array[15].x = 21; apples_array[15].y = 5; apples_array[16].x = 32; apples_array[16].y = 5; apples_array[17].x = 43; apples_array[17].y = 5; apples_array[18].x = 27; apples_array[18].y = -5; apples_array[19].x = 38; apples_array[19].y = -5; var t = 19; while (t > -1) { apples_array[t].y = (apples_array[t].y - 38); apples_array[t].x = (apples_array[t].x - 2); super.addChild(apples_array[t]); t--; }; Bit_Box = new Box_Asset(); Bit_Box.smoothing = true; super.addChild(Bit_Box); } public function Increase(count:Number):void{ var i:Number = 0; while (i < count) { apples_array[apples_in_the_box].visible = true; apples_in_the_box++; i++; }; } public function Decrease(count:Number):void{ var i:Number = 0; while (i < count) { apples_array[(apples_in_the_box - 1)].visible = false; apples_in_the_box--; i++; }; } } }//package Engine.Sprites.Objects
Section 147
//BoxWithApples_Apple_Asset (Engine.Sprites.Objects.BoxWithApples_Apple_Asset) package Engine.Sprites.Objects { import mx.core.*; public class BoxWithApples_Apple_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 148
//BoxWithApples_Box_Asset (Engine.Sprites.Objects.BoxWithApples_Box_Asset) package Engine.Sprites.Objects { import mx.core.*; public class BoxWithApples_Box_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 149
//BoxWithApples_Box_Top_Asset (Engine.Sprites.Objects.BoxWithApples_Box_Top_Asset) package Engine.Sprites.Objects { import mx.core.*; public class BoxWithApples_Box_Top_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 150
//GroundSprite (Engine.Sprites.Objects.GroundSprite) package Engine.Sprites.Objects { import flash.display.*; public class GroundSprite extends Sprite { public function GroundSprite(hx:Number, hy:Number, ss:Number){ super(); } } }//package Engine.Sprites.Objects
Section 151
//MushroomSprite (Engine.Sprites.Objects.MushroomSprite) package Engine.Sprites.Objects { import flash.display.*; import mx.core.*; public class MushroomSprite extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function MushroomSprite(){ AppleSimpl_Asset = MushroomSprite_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -35; _bitmapData.y = -35; super.addChild(_bitmapData); } } }//package Engine.Sprites.Objects
Section 152
//MushroomSprite_2 (Engine.Sprites.Objects.MushroomSprite_2) package Engine.Sprites.Objects { import flash.display.*; import mx.core.*; public class MushroomSprite_2 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function MushroomSprite_2(){ AppleSimpl_Asset = MushroomSprite_2_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -37.5; _bitmapData.y = -37.5; super.addChild(_bitmapData); } } }//package Engine.Sprites.Objects
Section 153
//MushroomSprite_2_AppleSimpl_Asset (Engine.Sprites.Objects.MushroomSprite_2_AppleSimpl_Asset) package Engine.Sprites.Objects { import mx.core.*; public class MushroomSprite_2_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 154
//MushroomSprite_AppleSimpl_Asset (Engine.Sprites.Objects.MushroomSprite_AppleSimpl_Asset) package Engine.Sprites.Objects { import mx.core.*; public class MushroomSprite_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 155
//NestSprite (Engine.Sprites.Objects.NestSprite) package Engine.Sprites.Objects { import flash.display.*; import mx.core.*; public class NestSprite extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function NestSprite(){ AppleSimpl_Asset = NestSprite_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -30; _bitmapData.y = -20; super.addChild(_bitmapData); } } }//package Engine.Sprites.Objects
Section 156
//NestSprite_AppleSimpl_Asset (Engine.Sprites.Objects.NestSprite_AppleSimpl_Asset) package Engine.Sprites.Objects { import mx.core.*; public class NestSprite_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Objects
Section 157
//OldMan (Engine.Sprites.oldman.OldMan) package Engine.Sprites.oldman { import flash.events.*; import flash.display.*; import flash.utils.*; import mx.core.*; import flash.filters.*; public class OldMan extends Sprite { private var AnimationTimer:Timer; private var Frame_2_s0_Asset:Class; private var Frame_2_s1_Asset:Class; private var Frame_2_s2_Asset:Class; private var Frame_2_s3_Asset:Class; private var Frame_2_s4_Asset:Class; private var Frame_3_Asset:Class; private var Frame_2_s6_Asset:Class; private var Frame:Array; private var Frame_2_bitmapData:BitmapAsset; private var Frame_2_s5_Asset:Class; private var Frame_1_s0_Asset:Class; private var Frame_1_s1_Asset:Class; private var Frame_1_s3_Asset:Class; private var Frame_1_s4_Asset:Class; private var Frame_1_s5_Asset:Class; private var Frame_1_s6_Asset:Class; private var Frame_3_bitmapData:BitmapAsset; private var Frame_1_bitmapData:BitmapAsset; private var currentFrame:Number;// = 1 private var Frame_1_s2_Asset:Class; public function OldMan(){ Frame_3_Asset = OldMan_Frame_3_Asset; Frame_1_s0_Asset = OldMan_Frame_1_s0_Asset; Frame_1_s1_Asset = OldMan_Frame_1_s1_Asset; Frame_1_s2_Asset = OldMan_Frame_1_s2_Asset; Frame_1_s3_Asset = OldMan_Frame_1_s3_Asset; Frame_1_s4_Asset = OldMan_Frame_1_s4_Asset; Frame_1_s5_Asset = OldMan_Frame_1_s5_Asset; Frame_1_s6_Asset = OldMan_Frame_1_s6_Asset; Frame_2_s0_Asset = OldMan_Frame_2_s0_Asset; Frame_2_s1_Asset = OldMan_Frame_2_s1_Asset; Frame_2_s2_Asset = OldMan_Frame_2_s2_Asset; Frame_2_s3_Asset = OldMan_Frame_2_s3_Asset; Frame_2_s4_Asset = OldMan_Frame_2_s4_Asset; Frame_2_s5_Asset = OldMan_Frame_2_s5_Asset; Frame_2_s6_Asset = OldMan_Frame_2_s6_Asset; AnimationTimer = new Timer(100, 0); Frame = new Array(); super(); this.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)]; AnimationTimer.addEventListener(TimerEvent.TIMER, onTimer); } private function switchFrame(frameID:Number):void{ currentFrame = frameID; Frame[0].visible = false; Frame[1].visible = false; Frame[2].visible = false; Frame[(frameID - 1)].visible = true; } public function AnimateDrop():void{ AnimationTimer.start(); } private function onTimer(e:TimerEvent):void{ switch (currentFrame){ case 1: switchFrame(2); break; case 2: switchFrame(3); break; case 3: switchFrame(1); AnimationTimer.stop(); break; }; } public function SwithTool(tool_id:Number):void{ var tt:int; if (Frame.length){ tt = 0; while (tt < Frame.length) { super.removeChild(Frame[tt]); tt++; }; }; Frame = new Array(); switch (tool_id){ case 0: Frame.push(new Frame_1_s0_Asset()); Frame.push(new Frame_2_s0_Asset()); break; case 1: Frame.push(new Frame_1_s1_Asset()); Frame.push(new Frame_2_s1_Asset()); break; case 2: Frame.push(new Frame_1_s2_Asset()); Frame.push(new Frame_2_s2_Asset()); break; case 3: Frame.push(new Frame_1_s3_Asset()); Frame.push(new Frame_2_s3_Asset()); break; case 4: Frame.push(new Frame_1_s4_Asset()); Frame.push(new Frame_2_s4_Asset()); break; case 5: Frame.push(new Frame_1_s5_Asset()); Frame.push(new Frame_2_s5_Asset()); break; case 6: Frame.push(new Frame_1_s6_Asset()); Frame.push(new Frame_2_s6_Asset()); break; }; Frame.push(new Frame_3_Asset()); Frame[0].smoothing = true; super.addChild(Frame[0]); var t = 1; while (t < Frame.length) { Frame[t].visible = false; Frame[t].smoothing = true; super.addChild(Frame[t]); t++; }; } } }//package Engine.Sprites.oldman
Section 158
//OldMan_Frame_1_s0_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s0_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s0_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 159
//OldMan_Frame_1_s1_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s1_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s1_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 160
//OldMan_Frame_1_s2_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s2_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s2_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 161
//OldMan_Frame_1_s3_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s3_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s3_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 162
//OldMan_Frame_1_s4_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s4_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s4_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 163
//OldMan_Frame_1_s5_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s5_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s5_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 164
//OldMan_Frame_1_s6_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s6_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_1_s6_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 165
//OldMan_Frame_2_s0_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s0_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s0_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 166
//OldMan_Frame_2_s1_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s1_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s1_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 167
//OldMan_Frame_2_s2_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s2_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s2_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 168
//OldMan_Frame_2_s3_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s3_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s3_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 169
//OldMan_Frame_2_s4_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s4_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s4_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 170
//OldMan_Frame_2_s5_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s5_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s5_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 171
//OldMan_Frame_2_s6_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s6_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_2_s6_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 172
//OldMan_Frame_3_Asset (Engine.Sprites.oldman.OldMan_Frame_3_Asset) package Engine.Sprites.oldman { import mx.core.*; public class OldMan_Frame_3_Asset extends BitmapAsset { } }//package Engine.Sprites.oldman
Section 173
//EngineSound (Engine.Sprites.Sound.EngineSound) package Engine.Sprites.Sound { import flash.display.*; import flash.media.*; public class EngineSound extends Sprite { public var level_theme_voice:Sound; public var ant_applebox_voice:Sound; public var level_failed_voice:Sound; public var SoundON:Boolean;// = true public var apple_groun_voice:Sound; public var garage_voice:Sound; private var l_f_Cls:Class; private var l_t_Cls:Class; private var l_p_Cls:Class; public var animal_die_voice:Sound; private var g_Cls:Class; public var garage_no_voice:Sound; private var a_a_Cls:Class; private var a_d_Cls:Class; public var sndChannel:SoundChannel; private var a_g_Cls:Class; public var stick_apple_voice:Sound; private var s_a_Cls:Class; private var g_n_Cls:Class; public var win_game_voice:Sound; private var w_g_Cls:Class; public var level_passed_voice:Sound; public function EngineSound(){ l_f_Cls = EngineSound_l_f_Cls; level_failed_voice = new l_f_Cls(); l_p_Cls = EngineSound_l_p_Cls; level_passed_voice = new l_p_Cls(); g_n_Cls = EngineSound_g_n_Cls; garage_no_voice = new g_n_Cls(); w_g_Cls = EngineSound_w_g_Cls; win_game_voice = new w_g_Cls(); a_g_Cls = EngineSound_a_g_Cls; apple_groun_voice = new a_g_Cls(); l_t_Cls = EngineSound_l_t_Cls; level_theme_voice = new l_t_Cls(); s_a_Cls = EngineSound_s_a_Cls; stick_apple_voice = new s_a_Cls(); a_d_Cls = EngineSound_a_d_Cls; animal_die_voice = new a_d_Cls(); a_a_Cls = EngineSound_a_a_Cls; ant_applebox_voice = new a_a_Cls(); g_Cls = EngineSound_g_Cls; garage_voice = new g_Cls(); super(); } public function ant_applebox():void{ if (SoundON){ ant_applebox_voice.play(); }; } public function apple_ground(command:Number, position:Number):void{ switch (command){ case 1: if (SoundON){ apple_groun_voice.play(position); }; break; }; } public function garage():void{ if (SoundON){ garage_voice.play(); }; } public function level_passed():void{ if (SoundON){ level_passed_voice.play(); }; } public function animal_die():void{ if (SoundON){ animal_die_voice.play(); }; } public function level_theme(command:Number, position:Number):Number{ var _pos:Number; switch (command){ case 1: if (SoundON){ sndChannel = level_theme_voice.play(position, 999); }; break; case 2: _pos = sndChannel.position; sndChannel.stop(); return (_pos); }; return (0); } public function garage_no():void{ if (SoundON){ garage_no_voice.play(); }; } public function level_failed():void{ if (SoundON){ level_failed_voice.play(); }; } public function stick_apple():void{ if (SoundON){ stick_apple_voice.play(60); }; } public function win_game():void{ if (SoundON){ win_game_voice.play(); }; } } }//package Engine.Sprites.Sound
Section 174
//EngineSound_a_a_Cls (Engine.Sprites.Sound.EngineSound_a_a_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_a_a_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 175
//EngineSound_a_d_Cls (Engine.Sprites.Sound.EngineSound_a_d_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_a_d_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 176
//EngineSound_a_g_Cls (Engine.Sprites.Sound.EngineSound_a_g_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_a_g_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 177
//EngineSound_g_Cls (Engine.Sprites.Sound.EngineSound_g_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_g_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 178
//EngineSound_g_n_Cls (Engine.Sprites.Sound.EngineSound_g_n_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_g_n_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 179
//EngineSound_l_f_Cls (Engine.Sprites.Sound.EngineSound_l_f_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_l_f_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 180
//EngineSound_l_p_Cls (Engine.Sprites.Sound.EngineSound_l_p_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_l_p_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 181
//EngineSound_l_t_Cls (Engine.Sprites.Sound.EngineSound_l_t_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_l_t_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 182
//EngineSound_s_a_Cls (Engine.Sprites.Sound.EngineSound_s_a_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_s_a_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 183
//EngineSound_w_g_Cls (Engine.Sprites.Sound.EngineSound_w_g_Cls) package Engine.Sprites.Sound { import mx.core.*; public class EngineSound_w_g_Cls extends SoundAsset { } }//package Engine.Sprites.Sound
Section 184
//StickSprite_type1 (Engine.Sprites.Sticks.StickSprite_type1) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class StickSprite_type1 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function StickSprite_type1(X:Number, Y:Number){ AppleSimpl_Asset = StickSprite_type1_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -17.5; _bitmapData.y = -15; super.addChild(_bitmapData); } } }//package Engine.Sprites.Sticks
Section 185
//StickSprite_type1_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type1_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class StickSprite_type1_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 186
//StickSprite_type2 (Engine.Sprites.Sticks.StickSprite_type2) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class StickSprite_type2 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function StickSprite_type2(X:Number, Y:Number){ AppleSimpl_Asset = StickSprite_type2_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -40; _bitmapData.y = -15; var oneS:Sprite = new Sprite(); oneS.rotation = 60; oneS.addChild(_bitmapData); super.addChild(oneS); } } }//package Engine.Sprites.Sticks
Section 187
//StickSprite_type2_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type2_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class StickSprite_type2_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 188
//StickSprite_type3 (Engine.Sprites.Sticks.StickSprite_type3) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class StickSprite_type3 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function StickSprite_type3(X:Number, Y:Number){ AppleSimpl_Asset = StickSprite_type3_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -23; _bitmapData.y = -50; var oneS:Sprite = new Sprite(); oneS.rotation = -210; oneS.addChild(_bitmapData); super.addChild(oneS); } } }//package Engine.Sprites.Sticks
Section 189
//StickSprite_type3_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type3_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class StickSprite_type3_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 190
//StickSprite_type4 (Engine.Sprites.Sticks.StickSprite_type4) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class StickSprite_type4 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function StickSprite_type4(){ AppleSimpl_Asset = StickSprite_type4_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -38; _bitmapData.y = -55; super.addChild(_bitmapData); } } }//package Engine.Sprites.Sticks
Section 191
//StickSprite_type4_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type4_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class StickSprite_type4_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 192
//StickSprite_type6 (Engine.Sprites.Sticks.StickSprite_type6) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class StickSprite_type6 extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function StickSprite_type6(X:Number, Y:Number){ AppleSimpl_Asset = StickSprite_type6_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -14.5; _bitmapData.y = -12.5; super.addChild(_bitmapData); } } }//package Engine.Sprites.Sticks
Section 193
//StickSprite_type6_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type6_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class StickSprite_type6_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 194
//Tube (Engine.Sprites.Sticks.Tube) package Engine.Sprites.Sticks { import flash.display.*; import mx.core.*; public class Tube extends Sprite { private var _bitmapData:BitmapAsset; private var AppleSimpl_Asset:Class; public function Tube(){ AppleSimpl_Asset = Tube_AppleSimpl_Asset; super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -49; _bitmapData.y = -46; super.addChild(_bitmapData); } } }//package Engine.Sprites.Sticks
Section 195
//Tube_AppleSimpl_Asset (Engine.Sprites.Sticks.Tube_AppleSimpl_Asset) package Engine.Sprites.Sticks { import mx.core.*; public class Tube_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites.Sticks
Section 196
//TheSky (Engine.Sprites.TheSky) package Engine.Sprites { import flash.display.*; import flash.geom.*; public class TheSky extends Sprite { public var _color:uint;// = 9034231 public function TheSky(){ super(); var colors:Array = [_color, 15596030]; var alphas:Array = [100, 0]; var rations:Array = [16, 0xFF]; var matrix:Matrix = new Matrix(); matrix.createGradientBox(800, 800, 0, 0, 0); this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix); this.graphics.drawRect(0, 0, 800, 800); this.graphics.endFill(); this.rotation = 90; this.x = 800; } } }//package Engine.Sprites
Section 197
//TheTree (Engine.Sprites.TheTree) package Engine.Sprites { import flash.events.*; import flash.display.*; import Interface.Sprites.*; import flash.net.*; import mx.core.*; import flash.filters.*; public class TheTree extends Sprite { private var buttonOFF_selected_BA:BitmapAsset; public var SoundON_button:SimpleButton; private var buttonRetry_BA:BitmapAsset; private var AppleSimpl_Asset:Class; private var SponsorLink_off_PNG:Class; private var _sky1:TheSky; private var SponsorLink_BTN:SimpleButton; private var SponsorLink_on_BIT:BitmapAsset; private var buttonON_selected_Asset:Class; private var buttonExit_selected_BA:BitmapAsset; private var _bitmapData:BitmapAsset; public var dispatcher:InterfaceEventsDispatcher; private var buttonON_BA:BitmapAsset; private var buttonON_Asset:Class; private var buttonON_selected_BA:BitmapAsset; private var buttonRetry_selected_BA:BitmapAsset; private var SponsorLink_on_PNG:Class; private var buttonExit_Asset:Class; public var Retry_button:SimpleButton; private var buttonOFF_selected_Asset:Class; public var SoundOFF_button:SimpleButton; public var Exit_button:SimpleButton; private var buttonExit_selected_Asset:Class; private var buttonOFF_BA:BitmapAsset; private var buttonRetry_Asset:Class; private var buttonOFF_Asset:Class; private var SponsorLink_off_BIT:BitmapAsset; private var buttonRetry_selected_Asset:Class; private var buttonExit_BA:BitmapAsset; public function TheTree(){ AppleSimpl_Asset = TheTree_AppleSimpl_Asset; SponsorLink_off_PNG = TheTree_SponsorLink_off_PNG; SponsorLink_on_PNG = TheTree_SponsorLink_on_PNG; buttonON_Asset = TheTree_buttonON_Asset; buttonON_selected_Asset = TheTree_buttonON_selected_Asset; buttonOFF_Asset = TheTree_buttonOFF_Asset; buttonOFF_selected_Asset = TheTree_buttonOFF_selected_Asset; buttonExit_Asset = TheTree_buttonExit_Asset; buttonExit_selected_Asset = TheTree_buttonExit_selected_Asset; buttonRetry_Asset = TheTree_buttonRetry_Asset; buttonRetry_selected_Asset = TheTree_buttonRetry_selected_Asset; dispatcher = new InterfaceEventsDispatcher(); _sky1 = new TheSky(); super(); _bitmapData = new AppleSimpl_Asset(); _bitmapData.smoothing = true; _bitmapData.x = -15; _bitmapData.y = 5; super.addChild(_sky1); super.addChild(_bitmapData); buttonON_BA = new buttonON_Asset(); buttonON_BA.smoothing = true; buttonON_selected_BA = new buttonON_selected_Asset(); buttonON_selected_BA.smoothing = true; buttonOFF_selected_BA = new buttonOFF_selected_Asset(); buttonOFF_selected_BA.smoothing = true; buttonOFF_BA = new buttonOFF_Asset(); buttonOFF_BA.smoothing = true; buttonExit_selected_BA = new buttonExit_selected_Asset(); buttonExit_selected_BA.smoothing = true; buttonExit_BA = new buttonExit_Asset(); buttonExit_BA.smoothing = true; buttonRetry_selected_BA = new buttonRetry_selected_Asset(); buttonRetry_BA = new buttonRetry_Asset(); buttonRetry_selected_BA.smoothing = true; buttonRetry_BA.smoothing = true; buttonRetry_BA.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)]; SoundON_button = new SimpleButton(buttonON_BA, buttonON_selected_BA, buttonON_selected_BA, buttonON_selected_BA); SoundON_button.addEventListener(MouseEvent.CLICK, SoundOn_click); SoundOFF_button = new SimpleButton(buttonOFF_BA, buttonOFF_selected_BA, buttonOFF_selected_BA, buttonOFF_selected_BA); SoundOFF_button.addEventListener(MouseEvent.CLICK, SoundOff_click); Exit_button = new SimpleButton(buttonExit_BA, buttonExit_selected_BA, buttonExit_selected_BA, buttonExit_selected_BA); Exit_button.addEventListener(MouseEvent.CLICK, Exit_click); Retry_button = new SimpleButton(buttonRetry_BA, buttonRetry_selected_BA, buttonRetry_selected_BA, buttonRetry_selected_BA); Retry_button.addEventListener(MouseEvent.CLICK, Retry_click); SponsorLink_off_BIT = new SponsorLink_off_PNG(); SponsorLink_on_BIT = new SponsorLink_on_PNG(); SponsorLink_off_BIT.smoothing = true; SponsorLink_on_BIT.smoothing = true; SponsorLink_BTN = new SimpleButton(SponsorLink_off_BIT, SponsorLink_on_BIT, SponsorLink_on_BIT, SponsorLink_on_BIT); SponsorLink_BTN.addEventListener(MouseEvent.CLICK, clickOnSponsorLink); SoundON_button.x = 650; SoundON_button.y = 550; SoundOFF_button.x = 650; SoundOFF_button.y = 550; Exit_button.x = 0; Exit_button.y = 550; SoundON_button.visible = false; Retry_button.x = 120; Retry_button.y = 550; SponsorLink_BTN.x = 330; SponsorLink_BTN.y = 562; super.addChild(Retry_button); super.addChild(SoundON_button); super.addChild(SoundOFF_button); super.addChild(Exit_button); super.addChild(SponsorLink_BTN); } public function Retry_click(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.RETRY)); } public function SoundOff_click(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_SOFF)); } private function clickOnSponsorLink(e:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank"); } public function SoundOn_click(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_SON)); } public function Exit_click(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_EXIT)); } } }//package Engine.Sprites
Section 198
//TheTree_AppleSimpl_Asset (Engine.Sprites.TheTree_AppleSimpl_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_AppleSimpl_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 199
//TheTree_buttonExit_Asset (Engine.Sprites.TheTree_buttonExit_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonExit_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 200
//TheTree_buttonExit_selected_Asset (Engine.Sprites.TheTree_buttonExit_selected_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonExit_selected_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 201
//TheTree_buttonOFF_Asset (Engine.Sprites.TheTree_buttonOFF_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonOFF_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 202
//TheTree_buttonOFF_selected_Asset (Engine.Sprites.TheTree_buttonOFF_selected_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonOFF_selected_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 203
//TheTree_buttonON_Asset (Engine.Sprites.TheTree_buttonON_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonON_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 204
//TheTree_buttonON_selected_Asset (Engine.Sprites.TheTree_buttonON_selected_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonON_selected_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 205
//TheTree_buttonRetry_Asset (Engine.Sprites.TheTree_buttonRetry_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonRetry_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 206
//TheTree_buttonRetry_selected_Asset (Engine.Sprites.TheTree_buttonRetry_selected_Asset) package Engine.Sprites { import mx.core.*; public class TheTree_buttonRetry_selected_Asset extends BitmapAsset { } }//package Engine.Sprites
Section 207
//TheTree_SponsorLink_off_PNG (Engine.Sprites.TheTree_SponsorLink_off_PNG) package Engine.Sprites { import mx.core.*; public class TheTree_SponsorLink_off_PNG extends BitmapAsset { } }//package Engine.Sprites
Section 208
//TheTree_SponsorLink_on_PNG (Engine.Sprites.TheTree_SponsorLink_on_PNG) package Engine.Sprites { import mx.core.*; public class TheTree_SponsorLink_on_PNG extends BitmapAsset { } }//package Engine.Sprites
Section 209
//_glideUserData (Engine._glideUserData) package Engine { import flash.display.*; public class _glideUserData extends Sprite { public var type:Number;// = 0 public var status:Number;// = 0 public var IsInWorld:Boolean;// = true public var sprite:Sprite; public var not_tuched:Boolean;// = true public function _glideUserData(){ sprite = new Sprite(); super(); } } }//package Engine
Section 210
//ContactListener (Engine.ContactListener) package Engine { import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Contacts.*; public class ContactListener extends b2ContactListener { public var MyContactPoint:b2ContactPoint; public var contactStack:Array; public function ContactListener(){ MyContactPoint = new b2ContactPoint(); contactStack = new Array(); super(); } override public function Add(point:b2ContactPoint):void{ } override public function Result(point:b2ContactResult):void{ if ((point.shape1.GetBody().m_userData is _glideUserData)){ if (point.shape1.GetBody().m_userData.type == 3){ if ((point.shape2.GetBody().m_userData is _glideUserData)){ point.shape2.GetBody().m_userData.status = 2; }; } else { if (point.shape1.GetBody().m_userData.type == 4){ if ((point.shape2.GetBody().m_userData is _glideUserData)){ point.shape2.GetBody().m_userData.status = 1; }; }; }; if ((point.shape2.GetBody().m_userData is _glideUserData)){ if (point.shape2.GetBody().m_userData.type == 3){ point.shape1.GetBody().m_userData.status = 2; } else { if (point.shape2.GetBody().m_userData.type == 4){ point.shape1.GetBody().m_userData.status = 1; }; }; }; }; } } }//package Engine
Section 211
//Engine (Engine.Engine) package Engine { import flash.events.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import flash.display.*; import Engine.Sprites.Objects.*; import Engine.Sprites.aim.*; import Engine.Sprites.*; import flash.utils.*; import Levels.*; import Engine.Sprites.Sound.*; import Interface.Sprites.*; import flash.text.*; import Engine.Sprites.oldman.*; import flash.net.*; import Engine.Sprites.Sticks.*; import Engine.Sprites.apples.*; import flash.media.*; import Engine.Sprites.Aminals.*; import flash.filters.*; public class Engine extends Sprite { private var boxBox:b2Body; private var Drug_started:Boolean;// = false private var boxGravity:b2Vec2; private var boxApples:Array; private var boxboxSprite:BoxWithApples; private var boxStatic:Array; public var AimDataSprite:Aim_Data; private var Aim_sprite:AimSprite; public var TreeSprite:TheTree; private var AppleCrushTimer:Timer; private var boxGround:b2Body; private var LeveL:Levels; public var EngineSounds:EngineSound; private var Drop_started:Boolean;// = false private var AntCrushTimersArray:Array; public var gameStat:GameStat; private var Can_start_grug:Boolean;// = true public var TutorialDialog:AS_Tutorial; private var AntCrushTimer:Timer; private var Stick_sprite:Sprite; private var DropTimer:Timer; private var boxStick:b2Body; private var boxWorld:b2World; private var AppleCrushesArray:Array; private var dbgDraw:b2DebugDraw; public var instructions_text:TextField; private var AntCrushesArray:Array; private var myContactListener:ContactListener; private var boxAABB:b2AABB; private var boxDoSleep:Boolean;// = true private var AppleCrushTimersArray:Array; private var dbgSprite:Sprite; private var oldman:OldMan; public var _sharedObject:SharedObject; private var StageInterface:UserInterface; public function Engine(){ boxAABB = new b2AABB(); boxApples = new Array(); boxStatic = new Array(); myContactListener = new ContactListener(); instructions_text = new TextField(); gameStat = new GameStat(); AppleCrushTimer = new Timer(4000, 1); AppleCrushesArray = new Array(); AppleCrushTimersArray = new Array(); DropTimer = new Timer(200, 0); AntCrushTimer = new Timer(4000, 1); AntCrushesArray = new Array(); AntCrushTimersArray = new Array(); StageInterface = new UserInterface(); oldman = new OldMan(); dbgDraw = new b2DebugDraw(); dbgSprite = new Sprite(); EngineSounds = new EngineSound(); TreeSprite = new TheTree(); TutorialDialog = new AS_Tutorial(); AimDataSprite = new Aim_Data(); super(); _sharedObject = SharedObject.getLocal("AS_payer_data"); _sharedObject.data.test = 10; } private function _appleAntCollision(i:Number):void{ if (LeveL.Ants[i].health == 10){ EngineSounds.animal_die(); if (LeveL.Ants[i].withApple){ LeveL.Ants[i].withApple = false; LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox + LeveL.Ants[i].applesOnTheBack); boxboxSprite.Increase(LeveL.Ants[i].applesOnTheBack); LeveL.Ants[i].applesOnTheBack = 0; }; this.removeChild(LeveL.Ants[i].sprite); LeveL.Ants.splice(i, 1); } else { LeveL.Ants[i].health = (LeveL.Ants[i].health - 10); switch (LeveL.Ants[i].type){ case 2: LeveL.Ants[i].sprite.I2_MoveTo_h1(); break; case 3: switch (LeveL.Ants[i].health){ case 10: LeveL.Ants[i].sprite.I3_MoveTo_h2(); break; case 20: LeveL.Ants[i].sprite.I3_MoveTo_h1(); break; }; break; }; }; if ((((LeveL.Ants.length == 0)) && ((LeveL.ApplesInTheBox > 0)))){ LeveL.level_status = "Passed"; instructions_text.text = ((((((("Apples in box: " + LeveL.ApplesInTheBox) + "\n") + "Level status: ") + LeveL.level_status) + "\n") + "Earned apples: ") + gameStat.EarnedApples); }; } private function _createNewStick():void{ var appl_obj:int; var apple_body:b2BodyDef; var apple_shape:b2CircleDef; var boxStick_body:b2BodyDef; var boxStick_shape:b2CircleDef; var boxStick_body2:b2BodyDef; var boxStick_shape2:b2PolygonDef; var boxStick_body3:b2BodyDef; var boxStick_shape3:b2PolygonDef; var boxStick_body4:b2BodyDef; var boxStick_shape4_1_1:b2PolygonDef; var boxStick_shape4_1_2:b2CircleDef; var boxStick_shape4_3:b2PolygonDef; var boxStick_shape4_4:b2CircleDef; var boxStick_shape4_2:b2CircleDef; var boxStick_shape4_2_1:b2CircleDef; var boxStick_body5:b2BodyDef; var boxStick_shape5:b2CircleDef; if (gameStat.LevelIsLoaded){ while (appl_obj < LeveL.Apples.length) { if (LeveL.Apples[appl_obj].type == 1){ switch (LeveL.Apples[appl_obj].stat){ case 0: LeveL.Apples[appl_obj].sprite = new CAppleSprite1(0, 0, 12.5); LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX; LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY; this.addChild(LeveL.Apples[appl_obj].sprite); LeveL.Apples[appl_obj].stat++; break; case 1: this.removeChild(LeveL.Apples[appl_obj].sprite); LeveL.Apples[appl_obj].sprite = new CAppleSprite2(0, 0, 12.5); LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX; LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY; this.addChild(LeveL.Apples[appl_obj].sprite); LeveL.Apples[appl_obj].stat++; break; case 2: this.removeChild(LeveL.Apples[appl_obj].sprite); LeveL.Apples[appl_obj].sprite = new CAppleSprite3(0, 0, 12.5); LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX; LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY; this.addChild(LeveL.Apples[appl_obj].sprite); LeveL.Apples[appl_obj].stat++; break; case 3: this.removeChild(LeveL.Apples[appl_obj].sprite); apple_body = new b2BodyDef(); apple_shape = new b2CircleDef(); apple_shape.density = 1; apple_shape.friction = 0.0001; apple_shape.restitution = -100; apple_shape.filter.categoryBits = 2; apple_shape.filter.maskBits = 29; apple_shape.radius = (12.5 / 100); LeveL.Apples[appl_obj].sprite = new CAppleSprite(0, 0, 12.5); apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[appl_obj].sprite; apple_body.userData.sprite.x = LeveL.Apples[appl_obj].positionX; apple_body.userData.sprite.y = LeveL.Apples[appl_obj].positionY; this.addChild(apple_body.userData.sprite); apple_body.position.Set((LeveL.Apples[appl_obj].positionX / 100), (LeveL.Apples[appl_obj].positionY / 100)); boxApples[appl_obj] = boxWorld.CreateBody(apple_body); boxApples[appl_obj].CreateShape(apple_shape); boxApples[appl_obj].SetMassFromShapes(); boxApples[appl_obj].PutToSleep(); LeveL.Apples[appl_obj].stat++; break; }; }; appl_obj++; }; }; switch (gameStat.StickType){ case 1: boxStick_body = new b2BodyDef(); boxStick_shape = new b2CircleDef(); boxStick_shape.radius = (12.5 / 100); boxStick_body.position.Set(1.3, 4.6); boxStick_body.userData = new _glideUserData(); boxStick_body.userData.type = 4; boxStick_body.userData.sprite = new StickSprite_type1(0, 0); boxStick_body.userData.sprite.x = 130; boxStick_body.userData.sprite.y = 460; boxStick_shape.density = 3; boxStick_shape.friction = 0.9; boxStick_shape.restitution = 0.3; boxStick_shape.filter.categoryBits = 1; boxStick_shape.filter.maskBits = 18; boxStick = null; boxStick = boxWorld.CreateBody(boxStick_body); boxStick.CreateShape(boxStick_shape); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); this.addChild(boxStick_body.userData.sprite); break; case 2: boxStick_body2 = new b2BodyDef(); boxStick_shape2 = new b2PolygonDef(); boxStick_body2.position.Set(1.3, 4.6); boxStick_body2.userData = new _glideUserData(); boxStick_body2.userData.type = 4; boxStick_body2.userData.sprite = new StickSprite_type2(0.2, 0.05); boxStick_body2.userData.sprite.x = 140; boxStick_body2.userData.sprite.y = 450; boxStick_shape2.SetAsOrientedBox(0.31, 0.04, new b2Vec2(), (60 / (180 / Math.PI))); boxStick_shape2.density = 3; boxStick_shape2.friction = 0.9; boxStick_shape2.restitution = 0.3; boxStick_shape2.filter.categoryBits = 1; boxStick_shape2.filter.maskBits = 18; boxStick = boxWorld.CreateBody(boxStick_body2); boxStick.CreateShape(boxStick_shape2); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); this.addChild(boxStick_body2.userData.sprite); break; case 3: boxStick_body3 = new b2BodyDef(); boxStick_shape3 = new b2PolygonDef(); boxStick_body3.position.Set(1.3, 4.6); boxStick_body3.userData = new _glideUserData(); boxStick_body3.userData.type = 4; boxStick_body3.userData.sprite = new StickSprite_type3(0, 0); boxStick_body3.userData.sprite.x = 130; boxStick_body3.userData.sprite.y = 460; this.addChild(boxStick_body3.userData.sprite); boxStick_shape3.SetAsOrientedBox(0.42, 0.04, new b2Vec2(0, 0), (60 / (180 / Math.PI))); boxStick_shape3.density = 1.5; boxStick_shape3.friction = 0.9; boxStick_shape3.restitution = 0.3; boxStick_shape3.filter.categoryBits = 1; boxStick_shape3.filter.maskBits = 18; boxStick = boxWorld.CreateBody(boxStick_body3); boxStick.CreateShape(boxStick_shape3); boxStick_shape3.SetAsOrientedBox(0.2, 0.05, new b2Vec2(0.21, 0.33), (-34 / (180 / Math.PI))); boxStick_shape3.density = 0.2; boxStick.CreateShape(boxStick_shape3); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); break; case 4: boxStick_body4 = new b2BodyDef(); boxStick_shape4_1_1 = new b2PolygonDef(); boxStick_shape4_1_2 = new b2CircleDef(); boxStick_shape4_3 = new b2PolygonDef(); boxStick_shape4_4 = new b2CircleDef(); boxStick_shape4_2 = new b2CircleDef(); boxStick_shape4_2_1 = new b2CircleDef(); boxStick_body4.position.Set(1.3, 4.6); boxStick_shape4_3.SetAsOrientedBox(0.2, 0.22, new b2Vec2(0, 0), (0 / (180 / Math.PI))); boxStick_shape4_3.density = 1; boxStick_shape4_3.friction = 0.9; boxStick_shape4_3.restitution = 0.3; boxStick_shape4_3.filter.categoryBits = 1; boxStick_shape4_3.filter.maskBits = 18; boxStick_shape4_1_1.SetAsOrientedBox(0.2, 0.05, new b2Vec2(0.28, -0.05), (-55 / (180 / Math.PI))); boxStick_shape4_1_1.density = 0.2; boxStick_shape4_1_1.friction = 0.9; boxStick_shape4_1_1.restitution = 0.3; boxStick_shape4_1_1.filter.categoryBits = 1; boxStick_shape4_1_1.filter.maskBits = 18; boxStick_shape4_1_2.radius = 0.07; boxStick_shape4_1_2.localPosition.x = 0.42; boxStick_shape4_1_2.localPosition.y = -0.24; boxStick_shape4_1_2.density = 0.2; boxStick_shape4_1_2.friction = 0.9; boxStick_shape4_1_2.restitution = 0.3; boxStick_shape4_1_2.filter.categoryBits = 1; boxStick_shape4_1_2.filter.maskBits = 18; boxStick_shape4_2.radius = 0.2; boxStick_shape4_2.localPosition.x = 0; boxStick_shape4_2.localPosition.y = -0.15; boxStick_shape4_2.density = 0.2; boxStick_shape4_2.friction = 0.9; boxStick_shape4_2.restitution = 0.3; boxStick_shape4_2.filter.categoryBits = 1; boxStick_shape4_2.filter.maskBits = 18; boxStick_shape4_2_1.radius = 0.08; boxStick_shape4_2_1.localPosition.x = 0; boxStick_shape4_2_1.localPosition.y = -0.36; boxStick_shape4_2_1.density = 0.2; boxStick_shape4_2_1.friction = 0.9; boxStick_shape4_2_1.restitution = 0.3; boxStick_shape4_2_1.filter.categoryBits = 1; boxStick_shape4_2_1.filter.maskBits = 18; boxStick_shape4_4.radius = 0.2; boxStick_shape4_4.localPosition.x = -0.13; boxStick_shape4_4.localPosition.y = -0.07; boxStick_shape4_4.density = 0.2; boxStick_shape4_4.friction = 0.9; boxStick_shape4_4.restitution = 0.3; boxStick_shape4_4.filter.categoryBits = 1; boxStick_shape4_4.filter.maskBits = 18; boxStick_body4.userData = new _glideUserData(); boxStick_body4.userData.type = 4; boxStick_body4.userData.sprite = new StickSprite_type4(); boxStick_body4.userData.sprite.x = 130; boxStick_body4.userData.sprite.y = 460; boxStick = boxWorld.CreateBody(boxStick_body4); boxStick.CreateShape(boxStick_shape4_1_1); boxStick.CreateShape(boxStick_shape4_1_2); boxStick.CreateShape(boxStick_shape4_2); boxStick.CreateShape(boxStick_shape4_2_1); boxStick.CreateShape(boxStick_shape4_3); boxStick.CreateShape(boxStick_shape4_4); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); this.addChild(boxStick_body4.userData.sprite); break; case 5: boxStick_body5 = new b2BodyDef(); boxStick_shape5 = new b2CircleDef(); boxStick_shape5.radius = (40 / 100); boxStick_body5.position.Set(1.3, 4.6); boxStick_body5.userData = new _glideUserData(); boxStick_body5.userData.type = 4; boxStick_body5.userData.sprite = new Tube(); boxStick_body5.userData.sprite.x = 130; boxStick_body5.userData.sprite.y = 460; boxStick_shape5.density = 0.4; boxStick_shape5.friction = 0.9; boxStick_shape5.restitution = 0.3; boxStick_shape5.filter.categoryBits = 1; boxStick_shape5.filter.maskBits = 18; boxStick = boxWorld.CreateBody(boxStick_body5); boxStick.CreateShape(boxStick_shape5); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); this.addChild(boxStick_body5.userData.sprite); break; case 6: boxStick_body = new b2BodyDef(); boxStick_shape = new b2CircleDef(); boxStick_shape.radius = (11 / 100); boxStick_body.position.Set(1.3, 4.6); boxStick_body.userData = new _glideUserData(); boxStick_body.userData.type = 4; boxStick_body.userData.sprite = new StickSprite_type6(0, 0); boxStick_body.userData.sprite.x = 130; boxStick_body.userData.sprite.y = 460; boxStick_shape.density = 3; boxStick_shape.friction = 0.9; boxStick_shape.restitution = 0.3; boxStick_shape.filter.categoryBits = 1; boxStick_shape.filter.maskBits = 18; boxStick = null; boxStick = boxWorld.CreateBody(boxStick_body); boxStick.CreateShape(boxStick_shape); boxStick.SetMassFromShapes(); boxStick.PutToSleep(); boxStick.SetBullet(true); this.addChild(boxStick_body.userData.sprite); break; }; } private function UI_OpenHelp(e:Event):void{ trace("UI_OpenHelp"); this.addChild(TutorialDialog.Tutorial_screen); TutorialDialog.ShowTutorial(); } private function _dropTimer(e:TimerEvent):void{ oldman.SwithTool(0); _createNewStick(); if (gameStat.StickType < 4){ boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 2), ((boxStick.GetPosition().y - (mouseY / 100)) * 2)), new b2Vec2((boxStick.GetPosition().x - 0.01), (boxStick.GetPosition().y - 0.01))); } else { if (gameStat.StickType == 6){ boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 1.5), ((boxStick.GetPosition().y - (mouseY / 100)) * 1.5)), new b2Vec2((boxStick.GetPosition().x - 0.005), (boxStick.GetPosition().y - 0.005))); } else { boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 3), ((boxStick.GetPosition().y - (mouseY / 100)) * 3)), new b2Vec2((boxStick.GetPosition().x - 0.01), (boxStick.GetPosition().y - 0.01))); }; }; Drug_started = false; Drop_started = true; Can_start_grug = false; DropTimer.stop(); } private function UI_GotoGarage(e:Event):void{ EngineSounds.garage(); StageInterface.ChooseLevel_dialog.visible = false; StageInterface.showDialog("Garage"); } private function _levelFailed():void{ this.removeChild(Aim_sprite); //unresolved jump var _slot1 = error; trace("failed to delete aim sprite - LEVEL FAILED"); this.removeChild(AimDataSprite); //unresolved jump var _slot1 = error; trace("failed to delete aim data sprite - LEVEL FAILED"); gameStat.DrawAim = false; Drug_started = false; gameStat.VoicePosition = EngineSounds.level_theme(2, 0); _deleteOldLevelData(); this.setChildIndex(StageInterface, (this.numChildren - 1)); saveGamestat(); if (LeveL.levelID == 1){ StageInterface.showChooseLevel(1, 0); } else { StageInterface.showChooseLevel((LeveL.levelID + 1), -1); }; EngineSounds.level_failed(); } private function UI_wingame(e:Event):void{ this.removeChild(StageInterface.WinGame_dialog); SoundMixer.stopAll(); saveGamestat(); this.setChildIndex(StageInterface, (this.numChildren - 1)); StageInterface.showDialog("MainMenu"); } private function UI_NewLevel(e:Event):void{ gameStat.EarnedApples = 0; gameStat.InitiallyEarned = 0; gameStat.StickType = 6; StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); StageInterface.removeChild(StageInterface.ChooseLevel_dialog); _loadLevel(1); } private function _refreshFrame(e:Event):void{ var LL8:Number; var i:int; var i2i:int; boxWorld.Step((1 / 50), 10); var bb:b2Body = boxWorld.m_bodyList; while (bb) { if ((bb.m_userData is _glideUserData)){ bb.m_userData.sprite.x = (bb.GetPosition().x * 100); bb.m_userData.sprite.y = (bb.GetPosition().y * 100); bb.m_userData.sprite.rotation = (bb.GetAngle() * (180 / Math.PI)); }; bb = bb.m_next; }; if (gameStat.LevelIsLoaded){ LL8 = LeveL.Ants.length; i = 0; while (i < LL8) { if (LeveL.Ants[i].direction == -1){ LeveL.Ants[i].sprite.x = (LeveL.Ants[i].sprite.x - LeveL.Ants[i].velocity); if (LeveL.Ants[i].sprite.x < 240){ _antBoxCollision(i); }; }; if (LeveL.Ants[i].direction == 1){ LeveL.Ants[i].sprite.x = (LeveL.Ants[i].sprite.x + LeveL.Ants[i].velocity); if (LeveL.Ants[i].sprite.x > 680){ _antAntHomeCollision(i); }; }; i++; }; i2i = 0; while (i2i < boxApples.length) { if (LeveL.Apples[i2i].stat == 4){ if (boxApples[i2i].m_userData.status == 2){ _appleGroundCollision(i2i, (boxApples[i2i].GetPosition().x * 100), (boxApples[i2i].GetPosition().y * 100)); } else { if (boxApples[i2i].m_userData.status == 1){ _stickAppleCollision(i2i); }; }; }; if (boxApples[i2i]){ if (boxApples[i2i].IsFrozen()){ this.removeChild(boxApples[i2i].m_userData.sprite); boxWorld.DestroyBody(boxApples[i2i]); boxApples[i2i] = null; LeveL.Apples[i2i].stat = 0; }; }; i2i++; }; if (Drop_started){ if (((boxStick.IsSleeping()) || (boxStick.IsFrozen()))){ Drop_started = false; _deleteOldStick(); oldman.SwithTool(gameStat.StickType); Can_start_grug = true; }; }; }; } private function UI_MainMenu(e:Event):void{ _loadLevel(0); } private function UI_TreeExit(e:Event):void{ SoundMixer.stopAll(); saveGamestat(); this.setChildIndex(StageInterface, (this.numChildren - 1)); _deleteOldLevelData(); StageInterface.showDialog("MainMenu"); trace("LeveL Exit works fine"); } private function UI_helpExit(e:Event):void{ this.removeChild(TutorialDialog.Tutorial_screen); } private function UI_SoundOff(e:Event):void{ EngineSounds.SoundON = false; SoundMixer.stopAll(); TreeSprite.SoundOFF_button.visible = false; TreeSprite.SoundON_button.visible = true; } private function UI_NextLevel(e:Event):void{ gameStat.InitiallyEarned = gameStat.EarnedApples; StageInterface.removeChild(StageInterface.ChooseLevel_dialog); _loadLevel((LeveL.levelID + 1)); StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); } private function _drugStick(e:MouseEvent):void{ var offset_x:Number; var offset_y:Number; var offset:Number; var rotation_ang:Number; var _p1:int; var _p2:int; var _p3:int; trace("drag stick wwww"); if (Can_start_grug){ Drug_started = true; gameStat.DrawAim = true; Aim_sprite = new AimSprite(); Aim_sprite.x = 130; Aim_sprite.y = 460; offset_x = (mouseX - 130); if (offset_x < 0){ offset_x = (offset_x * -1); }; offset_y = (mouseY - 460); if (offset_y < 0){ offset_y = (offset_y * -1); }; offset = Math.sqrt(((offset_x * offset_x) + (offset_y * offset_y))); Aim_sprite._set_aim_rect(((offset * 1.5) + 10)); rotation_ang = (Math.atan2(-((mouseX - 130)), (mouseY - 460)) * (180 / Math.PI)); Aim_sprite.rotation = (rotation_ang + 90); AimDataSprite.x = (mouseX + 10); AimDataSprite.y = (mouseY - 15); _p1 = ((offset * 1.5) + 10); _p2 = (_p1 / 10); _p3 = (_p1 - (_p2 * 10)); AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3); AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°"); this.addChild(Aim_sprite); this.addChild(AimDataSprite); }; } private function _levelPassed():void{ this.removeChild(Aim_sprite); //unresolved jump var _slot1 = error; trace("failed to delete aim sprite - LEVEL PASSED"); this.removeChild(AimDataSprite); //unresolved jump var _slot1 = error; trace("failed to delete aim data sprite - LEVEL PASSED"); gameStat.DrawAim = false; Drug_started = false; gameStat.VoicePosition = EngineSounds.level_theme(2, 0); _deleteOldLevelData(); this.setChildIndex(StageInterface, (this.numChildren - 1)); StageInterface.fresh_apples = gameStat.EarnedApples; saveGamestat(); trace("LEVEL PASSED, levelID = ", LeveL.levelID); if (LeveL.levelID == 24){ StageInterface.showWinGame(); EngineSounds.win_game(); this.addChild(StageInterface.WinGame_dialog); } else { StageInterface.showChooseLevel((LeveL.levelID + 1), 1); EngineSounds.level_passed(); }; } private function _mouseUP_OBSOLETE(e:MouseEvent):void{ } private function _dropStick(e:MouseEvent):void{ var e = e; if (gameStat.LevelIsLoaded){ this.removeChild(Aim_sprite); //unresolved jump var _slot1 = error; trace("failed to delete aim sprite"); this.removeChild(AimDataSprite); //unresolved jump var _slot1 = error; trace("failed to delete aim data sprite"); gameStat.DrawAim = false; if (Drug_started){ oldman.AnimateDrop(); DropTimer.start(); }; }; } private function UI_RetryLevel(e:Event):void{ SoundMixer.stopAll(); trace("gameStat.EarnedApples", gameStat.EarnedApples); trace("gameStat.InitiallyEarned", gameStat.InitiallyEarned); gameStat.EarnedApples = gameStat.InitiallyEarned; StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); _deleteOldLevelData(); _loadLevel(LeveL.levelID); } private function _createListeners():void{ this.addEventListener(Event.ENTER_FRAME, _refreshFrame); this.addEventListener(MouseEvent.MOUSE_UP, _dropStick); AppleCrushTimer.addEventListener(TimerEvent.TIMER_COMPLETE, AppleCrushTimerEvent); this.addEventListener(KeyboardEvent.KEY_DOWN, _keyPress); this.addEventListener(MouseEvent.MOUSE_MOVE, _aimMove); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEW_GAME, UI_NewGame); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.CONT_GAME, UI_ContGame); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEXT_LEVEL, UI_NextLevel); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.MAIN_MENU, UI_MainMenu); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.TRY_AGAIN, UI_TryAgain); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.GOTO_GARAGE, UI_GotoGarage); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.BUY_AN_EXIT, UI_buy_exit); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEW_LEVEL, UI_NewLevel); TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.RETRY, UI_RetryLevel); TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_EXIT, UI_TreeExit); TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_SOFF, UI_SoundOff); TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_SON, UI_SoundOn); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.WIN_GAME, UI_wingame); TutorialDialog.dispatcher.addEventListener(InterfaceEventsDispatcher.HELP_EXIT, UI_helpExit); StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.MM_HELP, UI_OpenHelp); oldman.addEventListener(MouseEvent.MOUSE_DOWN, _drugStick); DropTimer.addEventListener(TimerEvent.TIMER, _dropTimer); } private function _aimMove(e:MouseEvent):void{ var offset_x:Number; var offset_y:Number; var offset:Number; var rotation_ang:Number; var _p2:int; var _p3:int; var _p1:int; if (gameStat.DrawAim){ offset_x = (mouseX - 130); if (offset_x < 0){ offset_x = (offset_x * -1); }; offset_y = (mouseY - 460); if (offset_y < 0){ offset_y = (offset_y * -1); }; offset = Math.sqrt(((offset_x * offset_x) + (offset_y * offset_y))); rotation_ang = (Math.atan2(-((mouseX - 130)), (mouseY - 460)) * (180 / Math.PI)); Aim_sprite.rotation = (rotation_ang + 90); if (offset < 100){ Aim_sprite._set_aim_rect(((offset * 1.5) + 10)); if ((gameStat.StickType < 4)){ _p1 = (offset * 2); } else { _p1 = (offset * 4); if (gameStat.StickType == 6){ _p1 = (offset * 1.5); }; }; _p2 = (_p1 / 10); _p3 = (_p1 - (_p2 * 10)); AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3); AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°"); AimDataSprite.x = (mouseX + 10); AimDataSprite.y = (mouseY - 20); } else { if ((gameStat.StickType < 4)){ _p1 = (100 * 2); } else { _p1 = (100 * 4); if (gameStat.StickType == 6){ _p1 = (100 * 1.5); }; }; trace(_p1); _p2 = (_p1 / 10); _p3 = (_p1 - (_p2 * 10)); AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3); AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°"); AimDataSprite.x = (130 + (100 * Math.cos(((rotation_ang + 90) * (Math.PI / 180))))); AimDataSprite.y = (460 + (100 * Math.sin(((rotation_ang + 90) * (Math.PI / 180))))); }; }; } private function _initGame():void{ var boxGround_sprite:GroundSprite; boxAABB.lowerBound.Set(-10, -10); boxAABB.upperBound.Set(10, 10); boxGravity = new b2Vec2(0, 10); boxWorld = new b2World(boxAABB, boxGravity, true); boxWorld.SetContactListener(myContactListener); var boxGround_body:b2BodyDef = new b2BodyDef(); var boxGround_shape:b2PolygonDef = new b2PolygonDef(); boxGround_body.position.Set(4, 6); boxGround_shape.SetAsBox(4, 0.5); boxGround_shape.density = 1; boxGround_shape.friction = 0.1; boxGround_shape.restitution = 0.1; boxGround_shape.filter.categoryBits = 4; boxGround_shape.filter.maskBits = 10; boxGround_sprite = new GroundSprite(4, 0.5, 100); boxGround_body.userData = new _glideUserData(); boxGround_body.userData.sprite = boxGround_sprite; boxGround_body.userData.type = 3; addChild(boxGround_body.userData.sprite); boxGround = boxWorld.CreateBody(boxGround_body); boxGround.CreateShape(boxGround_shape); this.addChild(TreeSprite); this.addChild(StageInterface); _createListeners(); } private function UI_SoundOn(e:Event):void{ EngineSounds.SoundON = true; TreeSprite.SoundOFF_button.visible = true; TreeSprite.SoundON_button.visible = false; EngineSounds.level_theme(1, 0); } private function UI_buy_exit(e:Event):void{ trace("selected tool so far:", gameStat.StickType); gameStat.StickType = StageInterface.bought_tool; StageInterface.Garage_dialog.visible = false; StageInterface.ChooseLevel_dialog.visible = true; } private function _mouseDown_OBSOLETE(e:MouseEvent):void{ if (gameStat.LevelIsLoaded){ gameStat.DrawAim = true; Aim_sprite = new AimSprite(); Aim_sprite.x = 130; Aim_sprite.y = 600; this.addChild(Aim_sprite); AimDataSprite.showAimData(); }; } private function _keyPress(e:KeyboardEvent):void{ } private function _deleteOldStick():void{ this.removeChild(boxStick.m_userData.sprite); //unresolved jump var _slot1 = error; trace("Error while deleting stick sprite! ----- no sprite but deleting body"); if (boxStick.m_userData.IsInWorld){ boxWorld.DestroyBody(boxStick); boxStick.m_userData.IsInWorld = false; }; //unresolved jump var _slot1 = error; trace("error -delete old stick"); } public function _startEngine():void{ _initGame(); } private function _appleGroundCollision(i:Number, hitX:Number, hitY:Number):void{ EngineSounds.apple_ground(1, 0); boxWorld.DestroyBody(boxApples[i]); this.removeChild(LeveL.Apples[i].sprite); boxApples[i] = null; LeveL.Apples[i].stat = 0; var AppleCrushSprite:Sprite = new AppleCrushClip(); AppleCrushSprite.x = (hitX - 40); AppleCrushSprite.y = (hitY - 20); this.addChild(AppleCrushSprite); AppleCrushTimersArray.push(new Timer(300, 1)); AppleCrushTimersArray[(AppleCrushTimersArray.length - 1)].addEventListener(TimerEvent.TIMER, AppleCrushTimerEvent); AppleCrushesArray.push(AppleCrushSprite); AppleCrushTimersArray[(AppleCrushTimersArray.length - 1)].start(); var ai:int; while (ai < LeveL.Ants.length) { if (AppleCrushSprite.hitTestObject(LeveL.Ants[ai].sprite)){ _appleAntCollision(ai); }; ai++; }; } private function UI_ContGame(e:Event):void{ _sharedObject = SharedObject.getLocal("AS_GameStat"); LeveL = new Levels(0); trace("_sharedObject.data.levelID", _sharedObject.data.levelID); LeveL.levelID = (_sharedObject.data.levelID - 1); if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){ gameStat.EarnedApples = _sharedObject.data.EarnedApples; StageInterface.fresh_apples = gameStat.EarnedApples; gameStat.StickType = _sharedObject.data.Stick; StageInterface.showChooseLevel((LeveL.levelID + 1), 1); StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); } else { StageInterface.fresh_apples = 0; gameStat.EarnedApples = 0; gameStat.StickType = 6; StageInterface.showChooseLevel(1, 0); StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); }; } private function _antAntHomeCollision(i:Number):void{ var ApplesInTheStage:Boolean; var LL7:Number; var ai:int; LeveL.Ants[i].direction = -1; LeveL.Ants[i].sprite.SetDirection(-1); if (LeveL.Ants[i].withApple){ switch (LeveL.Ants[i].type){ case 1: LeveL.Ants[i].sprite.SetLoading(0); LeveL.Ants[i].withApple = false; break; case 2: LeveL.Ants[i].sprite.SetLoading(0); LeveL.Ants[i].withApple = false; break; case 3: LeveL.Ants[i].sprite.SetLoading(0); LeveL.Ants[i].withApple = false; break; }; }; if (LeveL.ApplesInTheBox == 0){ ApplesInTheStage = false; LL7 = LeveL.Ants.length; ai = 0; while (ai < LL7) { if (LeveL.Ants[ai].withApple){ ApplesInTheStage = true; }; ai++; }; if (!ApplesInTheStage){ _levelFailed(); }; }; } private function onFlushStatus(event:NetStatusEvent):void{ switch (event.info.code){ case "SharedObject.Flush.Success": trace("User granted permission -- value saved.\n"); break; case "SharedObject.Flush.Failed": trace("User denied permission -- value not saved.\n"); break; }; _sharedObject.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); } public function _loadLevel(levelID:Number):void{ var boxStatic_body_0:b2BodyDef; var boxStatic_shape1_0:b2PolygonDef; var boxStatic_shape2_0:b2PolygonDef; var boxStatic_shape3_0:b2PolygonDef; var boxStatic_body_1:b2BodyDef; var boxStatic_shape1_1:b2PolygonDef; var boxStatic_shape2_1:b2PolygonDef; var boxStatic_shape3_1:b2PolygonDef; var boxStatic_body:b2BodyDef; var boxStatic_shape3:b2CircleDef; var boxStatic_shape4:b2CircleDef; var boxStatic_shape5:b2CircleDef; var apple_body:b2BodyDef; var apple_shape:b2CircleDef; var apple_sprite:Sprite; var apple_sprite2:CAppleSprite_type3; var apple_sprite3:CAppleSprite_type2; var apple_sprite4:Sprite; var apple_sprite5:Sprite; var apple_sprite6:Sprite; var apple_sprite7:Sprite; EngineSounds.level_theme(1, 0); LeveL = new Levels(levelID); if (!LeveL.levelID){ gameStat.EarnedApples = 0; gameStat.LevelIsLoaded = false; StageInterface.showDialog("MainMenu"); return; }; boxboxSprite = new BoxWithApples(20); boxboxSprite.x = 175; boxboxSprite.y = 536; this.addChild(boxboxSprite); var so:int; while (so < LeveL.StaticObjects.length) { switch (LeveL.StaticObjects[so].type){ case 1: boxStatic_body_0 = new b2BodyDef(); boxStatic_shape1_0 = new b2PolygonDef(); boxStatic_shape2_0 = new b2PolygonDef(); boxStatic_shape3_0 = new b2PolygonDef(); boxStatic_body_0.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100)); boxStatic_shape1_0.SetAsOrientedBox(0.05, 0.2, new b2Vec2(-0.15, -0.2), (65 / (180 / Math.PI))); boxStatic_shape2_0.SetAsOrientedBox(0.06, 0.13, new b2Vec2(0.21, -0.19), (-30 / (180 / Math.PI))); boxStatic_shape3_0.SetAsOrientedBox(0.15, 0.31, new b2Vec2(0, 0), (0 / (180 / Math.PI))); boxStatic_shape1_0.filter.categoryBits = 8; boxStatic_shape1_0.filter.maskBits = 2; boxStatic_shape2_0.filter.categoryBits = 8; boxStatic_shape2_0.filter.maskBits = 2; boxStatic_shape3_0.filter.categoryBits = 8; boxStatic_shape3_0.filter.maskBits = 2; boxStatic_shape1_0.density = 1; boxStatic_shape1_0.friction = 0.1; boxStatic_shape1_0.restitution = 0.5; boxStatic_shape2_0.density = 1; boxStatic_shape2_0.friction = 0.1; boxStatic_shape2_0.restitution = 0.7; boxStatic_shape3_0.density = 1; boxStatic_shape3_0.friction = 0.1; boxStatic_shape3_0.restitution = 0.7; boxStatic_body_0.userData = new _glideUserData(); boxStatic_body_0.userData.sprite = new MushroomSprite(); boxStatic_body_0.userData.sprite.x = LeveL.StaticObjects[so].positionX; boxStatic_body_0.userData.sprite.y = LeveL.StaticObjects[so].positionY; this.addChild(boxStatic_body_0.userData.sprite); boxStatic.push(boxWorld.CreateBody(boxStatic_body_0)); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape1_0); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape2_0); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3_0); break; case 2: boxStatic_body_1 = new b2BodyDef(); boxStatic_shape1_1 = new b2PolygonDef(); boxStatic_shape2_1 = new b2PolygonDef(); boxStatic_shape3_1 = new b2PolygonDef(); boxStatic_body_1.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100)); boxStatic_shape1_1.SetAsOrientedBox(0.1, 0.15, new b2Vec2(-0.13, -0.2), (50 / (180 / Math.PI))); boxStatic_shape2_1.SetAsOrientedBox(0.1, 0.15, new b2Vec2(0.13, -0.2), (-48 / (180 / Math.PI))); boxStatic_shape3_1.SetAsOrientedBox(0.1, 0.37, new b2Vec2(0, 0), (0 / (180 / Math.PI))); boxStatic_shape1_1.filter.categoryBits = 8; boxStatic_shape1_1.filter.maskBits = 2; boxStatic_shape2_1.filter.categoryBits = 8; boxStatic_shape2_1.filter.maskBits = 2; boxStatic_shape3_1.filter.categoryBits = 8; boxStatic_shape3_1.filter.maskBits = 2; boxStatic_shape1_1.density = 1; boxStatic_shape1_1.friction = 0.1; boxStatic_shape1_1.restitution = 0.5; boxStatic_shape2_1.density = 1; boxStatic_shape2_1.friction = 0.1; boxStatic_shape2_1.restitution = 0.7; boxStatic_shape3_1.density = 1; boxStatic_shape3_1.friction = 0.1; boxStatic_shape3_1.restitution = 0.7; boxStatic_body_1.userData = new _glideUserData(); boxStatic_body_1.userData.sprite = new MushroomSprite_2(); boxStatic_body_1.userData.sprite.x = LeveL.StaticObjects[so].positionX; boxStatic_body_1.userData.sprite.y = LeveL.StaticObjects[so].positionY; this.addChild(boxStatic_body_1.userData.sprite); boxStatic.push(boxWorld.CreateBody(boxStatic_body_1)); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape1_1); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape2_1); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3_1); break; case 3: boxStatic_body = new b2BodyDef(); boxStatic_shape3 = new b2CircleDef(); boxStatic_shape4 = new b2CircleDef(); boxStatic_shape5 = new b2CircleDef(); boxStatic_body.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100)); boxStatic_shape5.localPosition.x = 0.03; boxStatic_shape3.localPosition.x = -0.18; boxStatic_shape4.localPosition.x = 0.24; boxStatic_shape3.localPosition.y = 0.01; boxStatic_shape4.localPosition.y = 0.01; boxStatic_shape3.radius = 0.1; boxStatic_shape4.radius = 0.1; boxStatic_shape5.radius = 0.18; boxStatic_shape5.filter.categoryBits = 16; boxStatic_shape5.filter.maskBits = 3; boxStatic_shape3.filter.categoryBits = 16; boxStatic_shape3.filter.maskBits = 3; boxStatic_shape4.filter.categoryBits = 16; boxStatic_shape4.filter.maskBits = 3; boxStatic_shape5.density = 1; boxStatic_shape5.friction = 0.1; boxStatic_shape5.restitution = 0.5; boxStatic_shape3.density = 1; boxStatic_shape3.friction = 0.1; boxStatic_shape3.restitution = 0.5; boxStatic_shape4.density = 1; boxStatic_shape4.friction = 0.1; boxStatic_shape4.restitution = 0.5; boxStatic_body.userData = new _glideUserData(); boxStatic_body.userData.sprite = new NestSprite(); boxStatic_body.userData.sprite.x = LeveL.StaticObjects[so].positionX; boxStatic_body.userData.sprite.y = LeveL.StaticObjects[so].positionY; this.addChild(boxStatic_body.userData.sprite); boxStatic.push(boxWorld.CreateBody(boxStatic_body)); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape5); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3); boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape4); break; }; so++; }; var LAL:Number = LeveL.Apples.length; var i:int; while (i < LAL) { apple_body = new b2BodyDef(); apple_shape = new b2CircleDef(); apple_shape.density = 1; apple_shape.friction = 0.0001; apple_shape.restitution = -100; apple_shape.filter.categoryBits = 2; apple_shape.filter.maskBits = 29; switch (LeveL.Apples[i].type){ case 1: apple_shape.radius = (12.5 / 100); apple_sprite = new CAppleSprite(0, 0, 12.5); LeveL.Apples[i].sprite = apple_sprite; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 2: apple_shape.radius = (12.5 / 100); apple_sprite2 = new CAppleSprite_type3(); LeveL.Apples[i].sprite = apple_sprite2; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 3: apple_shape.radius = (12.5 / 100); apple_sprite3 = new CAppleSprite_type2(); LeveL.Apples[i].sprite = apple_sprite3; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 4: apple_shape.radius = (12.5 / 100); apple_sprite4 = new CAppleSprite_type4(0, 0, 12.5); LeveL.Apples[i].sprite = apple_sprite4; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 5: apple_shape.radius = (12.5 / 100); apple_sprite5 = new CAppleSprite_type5(); LeveL.Apples[i].sprite = apple_sprite5; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 6: apple_shape.radius = (16 / 100); apple_sprite6 = new CAppleSprite_type6(0, 0, 16); LeveL.Apples[i].sprite = apple_sprite6; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; case 7: apple_shape.radius = (19 / 100); apple_sprite7 = new CAppleSprite_type7(0, 0, 19); LeveL.Apples[i].sprite = apple_sprite7; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[i].sprite; this.addChild(apple_body.userData.sprite); break; }; apple_body.position.Set((LeveL.Apples[i].positionX / 100), (LeveL.Apples[i].positionY / 100)); boxApples.push(boxWorld.CreateBody(apple_body)); boxApples[i].CreateShape(apple_shape); boxApples[i].SetMassFromShapes(); boxApples[i].PutToSleep(); i++; }; var LAnL:Number = LeveL.Ants.length; var ai:int; while (ai < LAnL) { switch (LeveL.Ants[ai].type){ case 1: LeveL.Ants[ai].sprite = new Animal1(1, 1); LeveL.Ants[ai].sprite.StartAnimation(); LeveL.Ants[ai].sprite.x = 700; LeveL.Ants[ai].sprite.y = 500; this.addChild(LeveL.Ants[ai].sprite); break; case 2: LeveL.Ants[ai].sprite = new Animal2(2, 1); LeveL.Ants[ai].sprite.StartAnimation(); LeveL.Ants[ai].sprite.x = 700; LeveL.Ants[ai].sprite.y = 515; this.addChild(LeveL.Ants[ai].sprite); break; case 3: LeveL.Ants[ai].sprite = new Animal3(3, 1); LeveL.Ants[ai].sprite.StartAnimation(); LeveL.Ants[ai].sprite.x = 700; LeveL.Ants[ai].sprite.y = 508; this.addChild(LeveL.Ants[ai].sprite); LeveL.Ants[ai].sprite.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)]; break; }; ai++; }; oldman.x = 0; oldman.y = 370; oldman.SwithTool(gameStat.StickType); this.addChild(oldman); Can_start_grug = true; StageInterface.showBackground(levelID, 0); gameStat.LevelIsLoaded = true; } private function UI_TryAgain(e:Event):void{ gameStat.EarnedApples = gameStat.InitiallyEarned; StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); StageInterface.removeChild(StageInterface.ChooseLevel_dialog); _loadLevel((LeveL.levelID - 1)); } public function _deleteOldLevelData():void{ gameStat.LevelIsLoaded = false; this.removeChild(oldman); _deleteOldStick(); this.removeChild(boxboxSprite); var i3:Number = 0; while (i3 < boxStatic.length) { this.removeChild(boxStatic[i3].m_userData.sprite); boxWorld.DestroyBody(boxStatic[i3]); i3 = (i3 + 1); }; while (boxStatic.length) { boxStatic.pop(); }; var i2:int; for (;i2 < boxApples.length;(i2 = (i2 + 1))) { if (boxApples[i2]){ this.removeChild(boxApples[i2].m_userData.sprite); if (boxApples[i2] != null){ boxWorld.DestroyBody(boxApples[i2]); }; }; this.removeChild(LeveL.Apples[i2].sprite); continue; var _slot1 = error; }; var n1:Number = LeveL.Ants.length; var i1:int; while (i1 < n1) { this.removeChild(LeveL.Ants[i1].sprite); i1 = (i1 + 1); }; boxApples = new Array(); } private function AppleCrushTimerEvent(e:TimerEvent):void{ this.removeChild(AppleCrushesArray.shift()); AppleCrushTimersArray.shift(); if (!AppleCrushesArray.length){ if (gameStat.LevelIsLoaded){ if (LeveL.level_status == "Passed"){ _levelPassed(); }; }; }; } private function UI_NewGame(e:Event):void{ StageInterface.showChooseLevel(1, 0); } private function _stickAppleCollision(i:Number):void{ var LL1:Number; var ai:int; var LL2:Number; var aii:int; var tempar:Array; var di:int; var apple_body:b2BodyDef; var apple_shape:b2CircleDef; var apple_sprite:Sprite; var fi:int; var i = i; switch (LeveL.Apples[i].type){ case 1: if (boxApples[i].m_userData.not_tuched){ boxApples[i].m_userData.not_tuched = false; EngineSounds.stick_apple(); gameStat.EarnedApples++; StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples); this.setChildIndex(boxApples[i].m_userData.sprite, (this.numChildren - 1)); }; break; case 2: boxWorld.DestroyBody(boxApples[i]); this.removeChild(LeveL.Apples[i].sprite); boxApples.splice(i, 1); LeveL.Apples.splice(i, 1); LL1 = LeveL.Ants.length; ai = 0; while (ai < LL1) { LeveL.Ants[ai].velocity = (LeveL.Ants[ai].velocity / 2); LeveL.Ants[ai].sprite.AnimationTimer.delay = (LeveL.Ants[ai].sprite.AnimationTimer.delay * 2); ai = (ai + 1); }; break; case 3: boxWorld.DestroyBody(boxApples[i]); this.removeChild(LeveL.Apples[i].sprite); boxApples.splice(i, 1); LeveL.Apples.splice(i, 1); LL2 = LeveL.Ants.length; aii = 0; while (aii < LL2) { LeveL.Ants[aii].velocity = (LeveL.Ants[aii].velocity * 2); LeveL.Ants[aii].sprite.AnimationTimer.delay = (LeveL.Ants[aii].sprite.AnimationTimer.delay / 2); aii = (aii + 1); }; break; case 4: boxWorld.DestroyBody(boxApples[i]); this.removeChild(LeveL.Apples[i].sprite); boxApples.splice(i, 1); LeveL.Apples.splice(i, 1); tempar = new Array(); tempar = LeveL.Apples_alts.pop(); di = 0; while (di < tempar.length) { apple_body = new b2BodyDef(); apple_shape = new b2CircleDef(); apple_shape.radius = (12.5 / 100); apple_shape.density = 1; apple_shape.friction = 0.0001; apple_shape.restitution = -100; apple_shape.filter.categoryBits = 2; apple_shape.filter.maskBits = 29; LeveL.Apples.push(tempar[di]); if (LeveL.Apples[(LeveL.Apples.length - 1)].type == 4){ apple_sprite = new CAppleSprite_type4(0, 0, 12.5); } else { apple_sprite = new CAppleSprite(0, 0, 12.5); }; LeveL.Apples[(LeveL.Apples.length - 1)].sprite = apple_sprite; apple_body.userData = new _glideUserData(); apple_body.userData.sprite = LeveL.Apples[(LeveL.Apples.length - 1)].sprite; apple_body.position.Set((LeveL.Apples[(LeveL.Apples.length - 1)].positionX / 100), (LeveL.Apples[(LeveL.Apples.length - 1)].positionY / 100)); boxApples.push(boxWorld.CreateBody(apple_body)); boxApples[(boxApples.length - 1)].CreateShape(apple_shape); boxApples[(boxApples.length - 1)].SetMassFromShapes(); boxApples[(boxApples.length - 1)].PutToSleep(); apple_body.userData.sprite.x = -20; apple_body.userData.sprite.y = -20; this.addChild(apple_body.userData.sprite); di = (di + 1); }; LeveL.AltsLoaded++; break; case 5: boxWorld.DestroyBody(boxApples[i]); this.removeChild(LeveL.Apples[i].sprite); boxApples.splice(i, 1); LeveL.Apples.splice(i, 1); fi = 0; for (;fi < boxApples.length;boxApples.splice(fi, 1), LeveL.Apples.splice(fi, 1), (fi = (fi + 1))) { //unresolved if if (boxApples[fi]){ boxWorld.DestroyBody(boxApples[fi]); }; this.removeChild(LeveL.Apples[fi].sprite); continue; var _slot1 = error; trace("my error -- ", _slot1.message); }; break; }; } private function saveGamestat():void{ _sharedObject = SharedObject.getLocal("AS_GameStat"); _sharedObject.data.levelID = LeveL.levelID; _sharedObject.data.Stick = gameStat.StickType; _sharedObject.data.EarnedApples = gameStat.InitiallyEarned; var flushStatus:String; flushStatus = _sharedObject.flush(((20 * 0x0400) * 10)); //unresolved jump var _slot1 = error; trace("Error...Could not write SharedObject to disk\n"); if (flushStatus != null){ switch (flushStatus){ case SharedObjectFlushStatus.PENDING: trace("Requesting permission to save object...\n"); _sharedObject.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: trace("Value flushed to disk.\n"); break; }; }; } private function _antBoxCollision(i:Number):void{ LeveL.Ants[i].direction = 1; LeveL.Ants[i].sprite.SetDirection(1); if (LeveL.ApplesInTheBox > 0){ LeveL.Ants[i].withApple = true; EngineSounds.ant_applebox(); switch (LeveL.Ants[i].type){ case 1: LeveL.ApplesInTheBox--; boxboxSprite.Decrease(1); LeveL.Ants[i].sprite.SetLoading(1); LeveL.Ants[i].applesOnTheBack = 1; break; case 2: if (LeveL.ApplesInTheBox > 1){ LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 2); boxboxSprite.Decrease(2); LeveL.Ants[i].sprite.SetLoading(2); LeveL.Ants[i].applesOnTheBack = 2; break; }; if (LeveL.ApplesInTheBox == 1){ LeveL.ApplesInTheBox--; boxboxSprite.Decrease(1); LeveL.Ants[i].sprite.SetLoading(2); LeveL.Ants[i].applesOnTheBack = 1; break; }; break; case 3: if (LeveL.ApplesInTheBox > 3){ LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 4); boxboxSprite.Decrease(4); LeveL.Ants[i].sprite.SetLoading(4); LeveL.Ants[i].applesOnTheBack = 4; break; }; if (LeveL.ApplesInTheBox > 2){ LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 3); boxboxSprite.Decrease(3); LeveL.Ants[i].sprite.SetLoading(3); LeveL.Ants[i].applesOnTheBack = 3; break; }; if (LeveL.ApplesInTheBox > 1){ LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 2); boxboxSprite.Decrease(2); LeveL.Ants[i].sprite.SetLoading(2); LeveL.Ants[i].applesOnTheBack = 2; break; }; if (LeveL.ApplesInTheBox == 1){ LeveL.ApplesInTheBox--; boxboxSprite.Decrease(1); LeveL.Ants[i].sprite.SetLoading(1); LeveL.Ants[i].applesOnTheBack = 1; break; }; break; }; }; } } }//package Engine
Section 212
//GameStat (Engine.GameStat) package Engine { import flash.display.*; import flash.geom.*; public class GameStat extends Sprite { public var DrawAim:Boolean;// = false public var LastCubePoint:Point; public var InitiallyEarned:Number;// = 0 public var ChooseLevel_EarnedApples:Number;// = 0 public var StickType:Number; public var ChooseLevel_LevelID:Number;// = 1 public var EarnedApples:Number;// = 0 public var LevelIsLoaded:Boolean;// = false public var ChooseLevel_StickType:Number;// = 1 public var VoicePosition:Number;// = 0 public function GameStat(){ LastCubePoint = new Point(0, 0); super(); StickType = 1; } } }//package Engine
Section 213
//AS_Tutorial (Interface.Sprites.AS_Tutorial) package Interface.Sprites { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import mx.core.*; public class AS_Tutorial extends Sprite { private var WGFrame_3_Asset:Class; private var WGFrame_7_Asset:Class; private var WGFrame_3_Asset_bitmap:BitmapAsset; public var TutorialExitButton:SimpleButton; private var EmptyFrame_Asset:Class; private var WGFrame_0_4_Asset_bitmap:BitmapAsset; private var TutorialNextButtonOFF_Asset:Class; private var Dissolve_timer:Timer; private var WGFrame_12_Asset_bitmap:BitmapAsset; public var TutorialNextButton:SimpleButton; private var WGFrame_8_Asset_bitmap:BitmapAsset; private var EmptyFrame_Asset_bitmap:BitmapAsset; private var WGFrame_0_Asset_bitmap:BitmapAsset; private var WGFrame_0_2_Asset:Class; private var current_frame:Number;// = 1 private var Stage2_back:Sprite; private var WGFrame_0_Asset:Class; private var ExitFromFirtScreen:Boolean;// = true public var TutorialExitButton_2:SimpleButton; private var WGFrame_4_Asset:Class; private var Tutorial_timer:Timer; private var WGFrame_8_Asset:Class; private var WGFrame_5_Asset_bitmap:BitmapAsset; public var _seed:Number; private var WGFrame_10_Asset:Class; private var TutorialExitButtonON_bitmap:BitmapAsset; public var Tutorial_screen:Sprite; private var WGFrame_2_Asset_bitmap:BitmapAsset; private var Stage4_back:Sprite; private var WGFrame_0_3_Asset:Class; private var WGFrame_11_Asset_bitmap:BitmapAsset; private var TutorialExitButtonON_Asset:Class; public var BlinkBool:Boolean;// = true private var WGFrame_1_Asset:Class; private var WGFrame_5_Asset:Class; private var WGFrame_7_Asset_bitmap:BitmapAsset; private var TutorialNextButtonOFF_bitmap:BitmapAsset; private var WGFrame_11_Asset:Class; private var WGFrame_9_Asset:Class; private var TutorialExitButtonOFF_Asset:Class; private var TutorialNextButtonON_Asset:Class; public var ButtonsBlinkTimer:Timer; private var WGFrame_0_3_Asset_bitmap:BitmapAsset; public var _bit1:BitmapData; public var _bit2:BitmapData; public var dispatcher:InterfaceEventsDispatcher; private var WGFrame_4_Asset_bitmap:BitmapAsset; private var TutorialExitButtonOFF_bitmap:BitmapAsset; private var WGFrame_0_4_Asset:Class; private var WGFrame_13_Asset_bitmap:BitmapAsset; private var WGFrame_12_Asset:Class; private var WGFrame_2_Asset:Class; private var WGFrame_6_Asset:Class; private var WGFrame_9_Asset_bitmap:BitmapAsset; public var _pixelCount:int;// = 0 private var TutorialNextButtonON_bitmap:BitmapAsset; private var Frames:Array; private var WGFrame_1_Asset_bitmap:BitmapAsset; private var Stage3_back:Sprite; private var WGFrame_0_2_Asset_bitmap:BitmapAsset; private var WGFrame_10_Asset_bitmap:BitmapAsset; private var WGFrame_6_Asset_bitmap:BitmapAsset; private var WGFrame_13_Asset:Class; public function AS_Tutorial(){ _bit1 = new BitmapData(800, 600); _bit2 = new BitmapData(800, 600); TutorialNextButton = new SimpleButton(); TutorialExitButton = new SimpleButton(); TutorialExitButton_2 = new SimpleButton(); dispatcher = new InterfaceEventsDispatcher(); TutorialNextButtonON_Asset = AS_Tutorial_TutorialNextButtonON_Asset; TutorialNextButtonOFF_Asset = AS_Tutorial_TutorialNextButtonOFF_Asset; TutorialExitButtonON_Asset = AS_Tutorial_TutorialExitButtonON_Asset; TutorialExitButtonOFF_Asset = AS_Tutorial_TutorialExitButtonOFF_Asset; EmptyFrame_Asset = AS_Tutorial_EmptyFrame_Asset; WGFrame_0_Asset = AS_Tutorial_WGFrame_0_Asset; WGFrame_0_2_Asset = AS_Tutorial_WGFrame_0_2_Asset; Stage2_back = new Sprite(); WGFrame_0_3_Asset = AS_Tutorial_WGFrame_0_3_Asset; Stage3_back = new Sprite(); WGFrame_0_4_Asset = AS_Tutorial_WGFrame_0_4_Asset; Stage4_back = new Sprite(); WGFrame_1_Asset = AS_Tutorial_WGFrame_1_Asset; WGFrame_2_Asset = AS_Tutorial_WGFrame_2_Asset; WGFrame_3_Asset = AS_Tutorial_WGFrame_3_Asset; WGFrame_4_Asset = AS_Tutorial_WGFrame_4_Asset; WGFrame_5_Asset = AS_Tutorial_WGFrame_5_Asset; WGFrame_6_Asset = AS_Tutorial_WGFrame_6_Asset; WGFrame_7_Asset = AS_Tutorial_WGFrame_7_Asset; WGFrame_8_Asset = AS_Tutorial_WGFrame_8_Asset; WGFrame_9_Asset = AS_Tutorial_WGFrame_9_Asset; WGFrame_10_Asset = AS_Tutorial_WGFrame_10_Asset; WGFrame_11_Asset = AS_Tutorial_WGFrame_11_Asset; WGFrame_12_Asset = AS_Tutorial_WGFrame_12_Asset; WGFrame_13_Asset = AS_Tutorial_WGFrame_13_Asset; Tutorial_screen = new Sprite(); Tutorial_timer = new Timer(3000); Dissolve_timer = new Timer(5); Frames = new Array(); ButtonsBlinkTimer = new Timer(200); super(); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); WGFrame_0_Asset_bitmap = new WGFrame_0_Asset(); WGFrame_0_2_Asset_bitmap = new WGFrame_0_2_Asset(); WGFrame_0_3_Asset_bitmap = new WGFrame_0_3_Asset(); WGFrame_0_4_Asset_bitmap = new WGFrame_0_4_Asset(); WGFrame_1_Asset_bitmap = new WGFrame_1_Asset(); WGFrame_2_Asset_bitmap = new WGFrame_2_Asset(); WGFrame_3_Asset_bitmap = new WGFrame_3_Asset(); WGFrame_4_Asset_bitmap = new WGFrame_4_Asset(); WGFrame_5_Asset_bitmap = new WGFrame_5_Asset(); WGFrame_6_Asset_bitmap = new WGFrame_6_Asset(); WGFrame_7_Asset_bitmap = new WGFrame_7_Asset(); WGFrame_8_Asset_bitmap = new WGFrame_8_Asset(); WGFrame_9_Asset_bitmap = new WGFrame_9_Asset(); WGFrame_10_Asset_bitmap = new WGFrame_10_Asset(); WGFrame_11_Asset_bitmap = new WGFrame_11_Asset(); WGFrame_12_Asset_bitmap = new WGFrame_12_Asset(); WGFrame_13_Asset_bitmap = new WGFrame_13_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; WGFrame_0_Asset_bitmap.smoothing = true; WGFrame_0_2_Asset_bitmap.smoothing = true; WGFrame_0_3_Asset_bitmap.smoothing = true; WGFrame_0_4_Asset_bitmap.smoothing = true; WGFrame_1_Asset_bitmap.smoothing = true; WGFrame_2_Asset_bitmap.smoothing = true; WGFrame_3_Asset_bitmap.smoothing = true; WGFrame_4_Asset_bitmap.smoothing = true; WGFrame_5_Asset_bitmap.smoothing = true; WGFrame_6_Asset_bitmap.smoothing = true; WGFrame_7_Asset_bitmap.smoothing = true; WGFrame_8_Asset_bitmap.smoothing = true; WGFrame_9_Asset_bitmap.smoothing = true; WGFrame_10_Asset_bitmap.smoothing = true; WGFrame_11_Asset_bitmap.smoothing = true; WGFrame_12_Asset_bitmap.smoothing = true; WGFrame_13_Asset_bitmap.smoothing = true; Frames.push(WGFrame_0_Asset_bitmap); Frames.push(WGFrame_1_Asset_bitmap); Frames.push(WGFrame_2_Asset_bitmap); Frames.push(WGFrame_3_Asset_bitmap); Frames.push(WGFrame_4_Asset_bitmap); Frames.push(WGFrame_5_Asset_bitmap); Frames.push(WGFrame_6_Asset_bitmap); Frames.push(WGFrame_7_Asset_bitmap); Frames.push(WGFrame_8_Asset_bitmap); Frames.push(WGFrame_9_Asset_bitmap); Frames.push(WGFrame_10_Asset_bitmap); Frames.push(WGFrame_11_Asset_bitmap); Frames.push(WGFrame_12_Asset_bitmap); Frames.push(WGFrame_13_Asset_bitmap); Tutorial_screen.addChild(Frames[0]); Stage2_back.addChild(WGFrame_0_2_Asset_bitmap); Stage2_back.visible = false; Tutorial_screen.addChild(Stage2_back); Stage3_back.addChild(WGFrame_0_3_Asset_bitmap); Stage3_back.visible = false; Tutorial_screen.addChild(Stage3_back); Stage4_back.addChild(WGFrame_0_4_Asset_bitmap); Stage4_back.visible = false; Tutorial_screen.addChild(Stage4_back); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; Tutorial_screen.addChild(EmptyFrame_Asset_bitmap); Tutorial_timer.addEventListener(TimerEvent.TIMER, _onTimer); Dissolve_timer.addEventListener(TimerEvent.TIMER, _onDissolve); ButtonsBlinkTimer.addEventListener(TimerEvent.TIMER, _onButtonsBlink); TutorialNextButtonON_bitmap = new TutorialNextButtonON_Asset(); TutorialNextButtonOFF_bitmap = new TutorialNextButtonOFF_Asset(); TutorialExitButtonON_bitmap = new TutorialExitButtonON_Asset(); TutorialExitButtonOFF_bitmap = new TutorialExitButtonOFF_Asset(); TutorialNextButtonON_bitmap.smoothing = true; TutorialNextButtonOFF_bitmap.smoothing = true; TutorialExitButtonON_bitmap.smoothing = true; TutorialExitButtonOFF_bitmap.smoothing = true; TutorialExitButton.upState = TutorialExitButtonOFF_bitmap; TutorialExitButton.downState = TutorialExitButtonON_bitmap; TutorialExitButton.overState = TutorialExitButtonON_bitmap; TutorialExitButton.hitTestState = TutorialExitButtonON_bitmap; TutorialNextButton.upState = TutorialNextButtonOFF_bitmap; TutorialNextButton.downState = TutorialNextButtonON_bitmap; TutorialNextButton.overState = TutorialNextButtonON_bitmap; TutorialNextButton.hitTestState = TutorialNextButtonON_bitmap; TutorialExitButton.visible = false; TutorialNextButton.visible = false; TutorialExitButton.addEventListener(MouseEvent.CLICK, _onExitClick); TutorialNextButton.addEventListener(MouseEvent.CLICK, _onNextClick); } private function _onDissolve(e:TimerEvent):void{ _seed = _bit1.pixelDissolve(_bit2, _bit1.rect, new Point(), _seed, 20000); _pixelCount = (_pixelCount + 20000); if (_pixelCount > (800 * 600)){ Dissolve_timer.stop(); _pixelCount = 0; }; } public function _onExitClick(e:MouseEvent):void{ ButtonsBlinkTimer.stop(); Tutorial_screen.removeChild(TutorialExitButton); if (ExitFromFirtScreen){ Tutorial_screen.removeChild(TutorialNextButton); }; Stage2_back.visible = false; Stage3_back.visible = false; Stage4_back.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.HELP_EXIT)); } private function _onTimer(e:TimerEvent):void{ trace("current_ frame is ", current_frame); switch (current_frame){ case 0: Frames[0].visible = true; current_frame++; break; case 1: Tutorial_timer.delay = 3000; _seed = (Math.random() * 100000); _bit1 = EmptyFrame_Asset_bitmap.bitmapData; _bit2 = Frames[1].bitmapData; Dissolve_timer.start(); current_frame++; break; case 2: _seed = (Math.random() * 100000); _bit2 = Frames[2].bitmapData; Dissolve_timer.start(); current_frame++; break; case 3: _seed = (Math.random() * 100000); _bit2 = Frames[3].bitmapData; Dissolve_timer.start(); current_frame++; break; case 4: _seed = (Math.random() * 100000); _bit2 = Frames[4].bitmapData; Dissolve_timer.start(); current_frame++; break; case 5: _seed = (Math.random() * 100000); _bit2 = Frames[5].bitmapData; Dissolve_timer.start(); current_frame++; break; case 6: Tutorial_timer.stop(); TutorialExitButton.x = 400; TutorialExitButton.y = 500; TutorialExitButton.visible = true; TutorialNextButton.x = 600; TutorialNextButton.y = 500; TutorialNextButton.visible = true; Tutorial_screen.addChild(TutorialExitButton); Tutorial_screen.addChild(TutorialNextButton); ExitFromFirtScreen = true; ButtonsBlinkTimer.start(); break; case 7: Tutorial_timer.delay = 3000; _seed = (Math.random() * 100000); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; Tutorial_screen.addChild(EmptyFrame_Asset_bitmap); _bit1 = EmptyFrame_Asset_bitmap.bitmapData; _bit2 = Frames[6].bitmapData; Dissolve_timer.start(); current_frame++; break; case 8: _seed = (Math.random() * 100000); _bit2 = Frames[7].bitmapData; Dissolve_timer.start(); current_frame++; break; case 9: _seed = (Math.random() * 100000); _bit2 = Frames[8].bitmapData; Dissolve_timer.start(); current_frame++; break; case 10: _seed = (Math.random() * 100000); _bit2 = Frames[9].bitmapData; Dissolve_timer.start(); current_frame++; break; case 11: _seed = (Math.random() * 100000); _bit2 = Frames[10].bitmapData; Dissolve_timer.start(); current_frame++; break; case 12: Tutorial_timer.stop(); TutorialExitButton.x = 400; TutorialExitButton.y = 500; TutorialExitButton.visible = true; TutorialNextButton.x = 600; TutorialNextButton.y = 500; TutorialNextButton.visible = true; ExitFromFirtScreen = false; ButtonsBlinkTimer.start(); break; case 13: Tutorial_timer.delay = 3000; _seed = (Math.random() * 100000); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; Tutorial_screen.addChild(EmptyFrame_Asset_bitmap); _bit1 = EmptyFrame_Asset_bitmap.bitmapData; _bit2 = Frames[11].bitmapData; Dissolve_timer.start(); current_frame++; break; case 14: Tutorial_timer.delay = 500; _seed = (Math.random() * 100000); Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; Tutorial_screen.addChild(EmptyFrame_Asset_bitmap); Stage3_back.visible = false; Stage4_back.visible = true; current_frame++; break; case 15: Tutorial_timer.delay = 3000; _seed = (Math.random() * 100000); _bit1 = EmptyFrame_Asset_bitmap.bitmapData; _bit2 = Frames[12].bitmapData; Dissolve_timer.start(); current_frame++; break; case 16: _seed = (Math.random() * 100000); _bit2 = Frames[13].bitmapData; Dissolve_timer.start(); current_frame++; break; case 17: Tutorial_timer.stop(); current_frame = 1; TutorialExitButton.x = 600; TutorialExitButton.y = 370; TutorialExitButton.visible = true; ExitFromFirtScreen = false; ButtonsBlinkTimer.start(); break; }; } public function _onNextClick(e:MouseEvent):void{ trace("current frame = ", current_frame); switch (current_frame){ case 6: Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap); TutorialExitButton.visible = false; TutorialNextButton.visible = false; Stage2_back.visible = true; ButtonsBlinkTimer.stop(); current_frame = 7; Tutorial_timer.delay = 500; Tutorial_timer.start(); break; case 12: Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap); TutorialExitButton.visible = false; TutorialNextButton.visible = false; Stage2_back.visible = false; Stage3_back.visible = true; ButtonsBlinkTimer.stop(); current_frame = 13; Tutorial_timer.delay = 500; Tutorial_timer.start(); break; }; } public function ShowTutorial():void{ Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap); EmptyFrame_Asset_bitmap = new EmptyFrame_Asset(); EmptyFrame_Asset_bitmap.smoothing = true; Tutorial_screen.addChild(EmptyFrame_Asset_bitmap); Frames[0].visible = true; trace("tutorial timer started"); Tutorial_timer.delay = 500; Tutorial_timer.start(); } public function _onButtonsBlink(e:TimerEvent):void{ BlinkBool = !(BlinkBool); trace("buttons blink timer", BlinkBool); if (BlinkBool){ TutorialExitButton.upState = TutorialExitButtonOFF_bitmap; TutorialNextButton.upState = TutorialNextButtonOFF_bitmap; } else { TutorialExitButton.upState = TutorialExitButtonON_bitmap; TutorialNextButton.upState = TutorialNextButtonON_bitmap; }; } } }//package Interface.Sprites
Section 214
//AS_Tutorial_EmptyFrame_Asset (Interface.Sprites.AS_Tutorial_EmptyFrame_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_EmptyFrame_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 215
//AS_Tutorial_TutorialExitButtonOFF_Asset (Interface.Sprites.AS_Tutorial_TutorialExitButtonOFF_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_TutorialExitButtonOFF_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 216
//AS_Tutorial_TutorialExitButtonON_Asset (Interface.Sprites.AS_Tutorial_TutorialExitButtonON_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_TutorialExitButtonON_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 217
//AS_Tutorial_TutorialNextButtonOFF_Asset (Interface.Sprites.AS_Tutorial_TutorialNextButtonOFF_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_TutorialNextButtonOFF_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 218
//AS_Tutorial_TutorialNextButtonON_Asset (Interface.Sprites.AS_Tutorial_TutorialNextButtonON_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_TutorialNextButtonON_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 219
//AS_Tutorial_WGFrame_0_2_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_2_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_0_2_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 220
//AS_Tutorial_WGFrame_0_3_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_3_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_0_3_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 221
//AS_Tutorial_WGFrame_0_4_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_4_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_0_4_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 222
//AS_Tutorial_WGFrame_0_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_0_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 223
//AS_Tutorial_WGFrame_1_Asset (Interface.Sprites.AS_Tutorial_WGFrame_1_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_1_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 224
//AS_Tutorial_WGFrame_10_Asset (Interface.Sprites.AS_Tutorial_WGFrame_10_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_10_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 225
//AS_Tutorial_WGFrame_11_Asset (Interface.Sprites.AS_Tutorial_WGFrame_11_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_11_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 226
//AS_Tutorial_WGFrame_12_Asset (Interface.Sprites.AS_Tutorial_WGFrame_12_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_12_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 227
//AS_Tutorial_WGFrame_13_Asset (Interface.Sprites.AS_Tutorial_WGFrame_13_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_13_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 228
//AS_Tutorial_WGFrame_2_Asset (Interface.Sprites.AS_Tutorial_WGFrame_2_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_2_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 229
//AS_Tutorial_WGFrame_3_Asset (Interface.Sprites.AS_Tutorial_WGFrame_3_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_3_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 230
//AS_Tutorial_WGFrame_4_Asset (Interface.Sprites.AS_Tutorial_WGFrame_4_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_4_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 231
//AS_Tutorial_WGFrame_5_Asset (Interface.Sprites.AS_Tutorial_WGFrame_5_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_5_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 232
//AS_Tutorial_WGFrame_6_Asset (Interface.Sprites.AS_Tutorial_WGFrame_6_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_6_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 233
//AS_Tutorial_WGFrame_7_Asset (Interface.Sprites.AS_Tutorial_WGFrame_7_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_7_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 234
//AS_Tutorial_WGFrame_8_Asset (Interface.Sprites.AS_Tutorial_WGFrame_8_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_8_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 235
//AS_Tutorial_WGFrame_9_Asset (Interface.Sprites.AS_Tutorial_WGFrame_9_Asset) package Interface.Sprites { import mx.core.*; public class AS_Tutorial_WGFrame_9_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 236
//InterfaceEventsDispatcher (Interface.Sprites.InterfaceEventsDispatcher) package Interface.Sprites { import flash.events.*; public class InterfaceEventsDispatcher extends EventDispatcher { public static var MM_HELP:String = "mh"; public static var GOTO_GARAGE:String = "gg"; public static var RETRY:String = "rl"; public static var TREE_SON:String = "tn"; public static var WIN_GAME:String = "wg"; public static var BUY_AN_EXIT:String = "be"; public static var NEW_GAME:String = "ng"; public static var TRY_AGAIN:String = "ta"; public static var TREE_SOFF:String = "tf"; public static var CONT_GAME:String = "cg"; public static var HELP_EXIT:String = "he"; public static var MAIN_MENU:String = "mm"; public static var TREE_EXIT:String = "te"; public static var NEXT_LEVEL:String = "nl"; public static var NEW_LEVEL:String = "nel"; public function InterfaceEventsDispatcher(target:IEventDispatcher=null){ super(); } } }//package Interface.Sprites
Section 237
//UserInterface (Interface.Sprites.UserInterface) package Interface.Sprites { import flash.events.*; import flash.display.*; import flash.utils.*; import Levels.*; import Engine.Sprites.Sound.*; import flash.text.*; import flash.net.*; import mx.core.*; import flash.filters.*; public class UserInterface extends Sprite { public var MainMenu_LINK1_off:Sprite; public var apples_count_text:TextField; private var Garage_button_Stick_6_selected_Asset:Class; public var Garage_button_Stick_6_bitmap:BitmapAsset; public var Garage_button_Stick_1:Sprite; public var Garage_button_Stick_3:Sprite; public var Garage_button_Stick_4:Sprite; public var Garage_button_Stick_5:Sprite; public var MainMenu_LINK1_off_disabled_bitmap:BitmapAsset; public var ChooseLevel_GARAGE_bitmap:BitmapAsset; private var level_id_text:TextField; public var ChooseLevel_GARAGE:Sprite; private var Garage_button_Stick_1_Asset:Class; public var MainMenu_LINK2_on_bitmap:BitmapAsset; private var ChooseLevel_GO_glow_Asset:Class; private var Garage_button_Stick_4_Asset:Class; public var ChooseLevel_apple:Sprite; private var ChooseLevel_lafler_Asset:Class; public var Garage_button_Stick_6_selected:Sprite; public var Garage_button_Stick_2:Sprite; public var ChooseLevel_GO_bitmap:BitmapAsset; public var ChooseLevel_dialog:Sprite; private var Garage_button_Stick_4_selected_Asset:Class; public var ChooseLevel_GO_glow_bitmap:BitmapAsset; public var Garage_button_Stick_6:Sprite; public var Garage_button_Stick_4_bitmap:BitmapAsset; private var Garage_button_Stick_5_selected_Asset:Class; public var ChooseLevel_NEXT_bitmap:BitmapAsset; public var MainMenu_LINK1_off_bitmap:BitmapAsset; public var Garage_button_Exit_selected_bitmap:BitmapAsset; public var MainMenu_PLAY_on:Sprite; public var ChooseLevel_NEXT:Sprite; private var Garage_button_Buy_selected_Asset:Class; private var Garage_button_Stick_6_Asset:Class; public var Garage_button_Stick_1_HA:Sprite; public var bought_tool:Number;// = 6 private var ChooseLevel_NEXT_Asset:Class; private var Garage_button_Stick_2_selected_Asset:Class; private var Garage_button_Stick_3_selected_Asset:Class; private var MainMenu_LINK1_on_Asset:Class; public var MainMenu_PLAY_off_bitmap:BitmapAsset; public var Garage_button_Stick_2_bitmap:BitmapAsset; public var fresh_apples:Number;// = 0 public var MainMenu_PLAY_on_bitmap:BitmapAsset; public var Garage_button_Stick_1_selected:Sprite; public var MainMenu_dialog:Sprite; private var MainMenu_LINK2_off_Asset:Class; public var fresh_apples_left:Number;// = 0 private var Garage_button_Stick_1_selected_Asset:Class; private var Garage_button_Stick_3_Asset:Class; public var B_apples_set_bitmap:BitmapAsset; public var dispatcher:InterfaceEventsDispatcher; private var MainMenu_Sponsor_on_Asset:Class; private var upgrade_link_BlinkTimer:Timer; public var selected_tool:Number;// = 0 private var Garage_button_Exit_selected_Asset:Class; private var B_apples_set_Asset:Class; private var Garage_button_Exit_Asset:Class; public var Garage_button_Stick_3_selected:Sprite; public var GarageBlinkTimerIteration:Number;// = 1 public var WinGame_dialog:Sprite; public var ChooseLevel_GO:Sprite; public var MainMenu_dialog_bitmap:BitmapAsset; private var Garage_button_Buy_Asset:Class; public var MainMenu_Sponsor_on_bitmap:BitmapAsset; public var Garage_button_Buy_selected_bitmap:BitmapAsset; public var ChooseLevel_GARAGE_glow_bitmap:BitmapAsset; private var MainMenu_PLAY_off_Asset:Class; private var upgrade_link_PNG:Class; public var Garage_button_Stick_5_selected:Sprite; public var MainMenu_Sponsor_on:Sprite; public var Garage_dialog_bitmap:BitmapAsset; private var Garage_dialog_Asset:Class; public var Garage_button_Stick_5_bitmap:BitmapAsset; private var MainMenu_dialog_Asset:Class; public var Garage_button_Stick_1_selected_bitmap:BitmapAsset; public var Garage_button_Stick_2_selected_bitmap:BitmapAsset; public var Garage_button_Stick_3_selected_bitmap:BitmapAsset; public var Garage_button_Stick_5_selected_bitmap:BitmapAsset; public var ChooseLevel_apple_bitmap:BitmapAsset; public var ChooseLevel_NEXT_glow:Sprite; private var ChooseLevel_GARAGE_Asset:Class; public var MainMenu_Sponsor_off_bitmap:BitmapAsset; public var Garage_Stick_3:SimpleButton; public var Garage_button_Stick_6_selected_bitmap:BitmapAsset; public var upgrade_shown:Boolean;// = false public var Garage_Stick_6:SimpleButton; private var Garage_button_Stick_5_Asset:Class; private var ChooseLevel_GO_Asset:Class; public var Garage_button_Stick_4_selected_bitmap:BitmapAsset; public var ChooseLevel_lafler_bitmap:BitmapAsset; public var MainMenu_LINK1_on:Sprite; public var Garage_Stick_1:SimpleButton; public var Garage_Stick_2:SimpleButton; public var Garage_Stick_5:SimpleButton; public var Garage_dialog:Sprite; private var LeveL:Levels; public var garage_text:TextField; public var ChooseLevel_NEXT_glow_bitmap:BitmapAsset; private var bee_swf:Class; private var MainMenu_Sponsor_off_Asset:Class; public var WinGame_dialog_bitmap:BitmapAsset; public var Background_dialog:Sprite; public var level_marker:Number;// = 0 public var label_array:Array; private var Garage_button_Stick_2_Asset:Class; public var MainMenu_LINK1_on_bitmap:BitmapAsset; public var pic_array:Array; public var Garage_button_Stick_3_bitmap:BitmapAsset; public var BlinkTimer:Timer; private var ChooseLevel_back_Asset:Class; public var MainMenu_PLAY_off:Sprite; private var MainMenu_LINK1_off_disabled_Asset:Class; public var Garage_Stick_4:SimpleButton; public var Garage_button_Buy_bitmap:BitmapAsset; public var Garage_button_Exit:SimpleButton; private var Garage_button_Buy_disabled_Asset:Class; public var LINK1:SimpleButton; public var MainMenu_LINK2_off:Sprite; public var Garage_button_Stick_1_HA_bitmap:BitmapAsset; private var ChooseLevel_GARAGE_glow_Asset:Class; public var MainMenu_LINK2_on:Sprite; private var MainMenu_LINK2_on_Asset:Class; public var Garage_button_Stick_1_bitmap:BitmapAsset; public var passing_stat:Number;// = 0 public var Garage_button_Stick_2_selected:Sprite; public var MainMenu_LINK2_off_bitmap:BitmapAsset; private var ChooseLevel_NEXT_glow_Asset:Class; public var MainMenu_Sponsor_off:Sprite; private var MainMenu_LINK1_off_Asset:Class; public var ChooseLevel_GO_glow:Sprite; public var Garage_button_Exit_bitmap:BitmapAsset; public var ChooseLevel_back_bitmap:BitmapAsset; public var Garage_button_Buy:SimpleButton; public var MainMenu_LINK1_off_disabled:Sprite; public var ChooseLevel_lafler:Sprite; public var _sharedObject:SharedObject; public var Garage_button_Buy_disabled_bitmap:BitmapAsset; private var WinGame_dialog_Asset:Class; private var upgrade_link_BIT:BitmapAsset; private var engineSound:EngineSound; public var GarageBlinkTimer:Timer; public var Garage_button_Stick_4_selected:Sprite; public var ChooseLevel_GARAGE_glow:Sprite; private var MainMenu_PLAY_on_Asset:Class; public var LevelNumArray:Array; private var ChooseLevel_apple_Asset:Class; public var upgrade_never_shown:Boolean;// = true private var Garage_button_Stick_1_HA_Asset:Class; public function UserInterface(){ engineSound = new EngineSound(); dispatcher = new InterfaceEventsDispatcher(); garage_text = new TextField(); level_id_text = new TextField(); apples_count_text = new TextField(); LevelNumArray = new Array(); pic_array = new Array(); label_array = new Array(); BlinkTimer = new Timer(300, 4); GarageBlinkTimer = new Timer(100); Background_dialog = new Sprite(); WinGame_dialog = new Sprite(); WinGame_dialog_Asset = UserInterface_WinGame_dialog_Asset; bee_swf = UserInterface_bee_swf; MainMenu_dialog = new Sprite(); MainMenu_dialog_Asset = UserInterface_MainMenu_dialog_Asset; MainMenu_PLAY_on = new Sprite(); MainMenu_PLAY_on_Asset = UserInterface_MainMenu_PLAY_on_Asset; MainMenu_PLAY_off = new Sprite(); MainMenu_PLAY_off_Asset = UserInterface_MainMenu_PLAY_off_Asset; MainMenu_LINK1_on = new Sprite(); MainMenu_LINK1_on_Asset = UserInterface_MainMenu_LINK1_on_Asset; MainMenu_LINK1_off_disabled = new Sprite(); MainMenu_LINK1_off_disabled_Asset = UserInterface_MainMenu_LINK1_off_disabled_Asset; MainMenu_LINK1_off = new Sprite(); MainMenu_LINK1_off_Asset = UserInterface_MainMenu_LINK1_off_Asset; MainMenu_LINK2_on = new Sprite(); MainMenu_LINK2_on_Asset = UserInterface_MainMenu_LINK2_on_Asset; MainMenu_LINK2_off = new Sprite(); MainMenu_LINK2_off_Asset = UserInterface_MainMenu_LINK2_off_Asset; MainMenu_Sponsor_on = new Sprite(); MainMenu_Sponsor_on_Asset = UserInterface_MainMenu_Sponsor_on_Asset; MainMenu_Sponsor_off = new Sprite(); MainMenu_Sponsor_off_Asset = UserInterface_MainMenu_Sponsor_off_Asset; upgrade_link_PNG = UserInterface_upgrade_link_PNG; upgrade_link_BlinkTimer = new Timer(300); ChooseLevel_dialog = new Sprite(); ChooseLevel_back_Asset = UserInterface_ChooseLevel_back_Asset; ChooseLevel_apple = new Sprite(); ChooseLevel_apple_Asset = UserInterface_ChooseLevel_apple_Asset; ChooseLevel_lafler = new Sprite(); ChooseLevel_lafler_Asset = UserInterface_ChooseLevel_lafler_Asset; ChooseLevel_GO = new Sprite(); ChooseLevel_GO_Asset = UserInterface_ChooseLevel_GO_Asset; ChooseLevel_NEXT = new Sprite(); ChooseLevel_NEXT_Asset = UserInterface_ChooseLevel_NEXT_Asset; ChooseLevel_GARAGE = new Sprite(); ChooseLevel_GARAGE_Asset = UserInterface_ChooseLevel_GARAGE_Asset; ChooseLevel_GO_glow = new Sprite(); ChooseLevel_GO_glow_Asset = UserInterface_ChooseLevel_GO_glow_Asset; ChooseLevel_NEXT_glow = new Sprite(); ChooseLevel_NEXT_glow_Asset = UserInterface_ChooseLevel_NEXT_glow_Asset; ChooseLevel_GARAGE_glow = new Sprite(); ChooseLevel_GARAGE_glow_Asset = UserInterface_ChooseLevel_GARAGE_glow_Asset; Garage_dialog = new Sprite(); Garage_dialog_Asset = UserInterface_Garage_dialog_Asset; Garage_button_Stick_1_HA = new Sprite(); Garage_button_Stick_1_HA_Asset = UserInterface_Garage_button_Stick_1_HA_Asset; Garage_button_Stick_1 = new Sprite(); Garage_button_Stick_1_Asset = UserInterface_Garage_button_Stick_1_Asset; Garage_button_Stick_1_selected = new Sprite(); Garage_button_Stick_1_selected_Asset = UserInterface_Garage_button_Stick_1_selected_Asset; Garage_button_Stick_2 = new Sprite(); Garage_button_Stick_2_Asset = UserInterface_Garage_button_Stick_2_Asset; Garage_button_Stick_2_selected = new Sprite(); Garage_button_Stick_2_selected_Asset = UserInterface_Garage_button_Stick_2_selected_Asset; Garage_button_Stick_3 = new Sprite(); Garage_button_Stick_3_Asset = UserInterface_Garage_button_Stick_3_Asset; Garage_button_Stick_3_selected = new Sprite(); Garage_button_Stick_3_selected_Asset = UserInterface_Garage_button_Stick_3_selected_Asset; Garage_button_Stick_4 = new Sprite(); Garage_button_Stick_4_Asset = UserInterface_Garage_button_Stick_4_Asset; Garage_button_Stick_4_selected = new Sprite(); Garage_button_Stick_4_selected_Asset = UserInterface_Garage_button_Stick_4_selected_Asset; Garage_button_Stick_5 = new Sprite(); Garage_button_Stick_5_Asset = UserInterface_Garage_button_Stick_5_Asset; Garage_button_Stick_5_selected = new Sprite(); Garage_button_Stick_5_selected_Asset = UserInterface_Garage_button_Stick_5_selected_Asset; Garage_button_Stick_6 = new Sprite(); Garage_button_Stick_6_Asset = UserInterface_Garage_button_Stick_6_Asset; Garage_button_Stick_6_selected = new Sprite(); Garage_button_Stick_6_selected_Asset = UserInterface_Garage_button_Stick_6_selected_Asset; Garage_button_Buy = new SimpleButton(); Garage_button_Buy_Asset = UserInterface_Garage_button_Buy_Asset; Garage_button_Buy_bitmap = new Garage_button_Buy_Asset(); Garage_button_Buy_selected_Asset = UserInterface_Garage_button_Buy_selected_Asset; Garage_button_Buy_selected_bitmap = new Garage_button_Buy_selected_Asset(); Garage_button_Buy_disabled_Asset = UserInterface_Garage_button_Buy_disabled_Asset; Garage_button_Buy_disabled_bitmap = new Garage_button_Buy_disabled_Asset(); Garage_button_Exit = new SimpleButton(); Garage_button_Exit_Asset = UserInterface_Garage_button_Exit_Asset; Garage_button_Exit_selected_Asset = UserInterface_Garage_button_Exit_selected_Asset; B_apples_set_Asset = UserInterface_B_apples_set_Asset; LINK1 = new SimpleButton(); super(); _createMainMenu(); _createGarage(); _createBackground(); } public function showBackground(level_id:Number, apples_count:Number):void{ level_id_text.text = (" Level " + level_id); Background_dialog.visible = true; } private function _stick_5_out(e:MouseEvent):void{ if (selected_tool != 5){ Garage_button_Stick_5_selected.visible = false; Garage_button_Stick_5.visible = true; }; } public function onGarageBlinkTimerComplete(e:TimerEvent):void{ garage_text.textColor = 0x444444; } public function showWinGame():void{ WinGame_dialog_bitmap = new WinGame_dialog_Asset(); WinGame_dialog_bitmap.smoothing = true; WinGame_dialog.addChild(WinGame_dialog_bitmap); WinGame_dialog.addEventListener(MouseEvent.CLICK, _clickOnWingame); WinGame_dialog.visible = true; } private function _stick_4_over(e:MouseEvent):void{ Garage_button_Stick_4.visible = false; Garage_button_Stick_4_selected.visible = true; } public function showChooseLevel(level_id:Number, stat:Number):void{ var _mod:Number; var apples_text:TextField; var choose_level_go_bitmap:BitmapAsset; var choose_level_go_glow_bitmap:BitmapAsset; var go_button:SimpleButton; passing_stat = stat; level_marker = level_id; ChooseLevel_dialog = new Sprite(); pic_array = new Array(); label_array = new Array(); BlinkTimer = new Timer(200, 6); BlinkTimer.addEventListener(TimerEvent.TIMER, BlinkTimerEvent); BlinkTimer.addEventListener(TimerEvent.TIMER_COMPLETE, BlinkTimer_CompleteEvent); ChooseLevel_dialog.graphics.beginFill(0xFFFFFF, 0.7); ChooseLevel_dialog.graphics.drawRect(0, 0, 800, 640); ChooseLevel_dialog.graphics.endFill(); ChooseLevel_back_bitmap = new ChooseLevel_back_Asset(); ChooseLevel_back_bitmap.smoothing = true; ChooseLevel_dialog.addChild(ChooseLevel_back_bitmap); super.addChild(ChooseLevel_dialog); ChooseLevel_dialog.visible = true; var _x:Number = 180; var _y:Number = 100; var _glow:GlowFilter = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH); var _shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH); var format2:TextFormat = new TextFormat(); format2.font = "CooperStdBlack"; format2.color = 29238; format2.size = 26; var i:int; while (i < 24) { _mod = Math.floor((i / 6)); if (i < (level_id - 2)){ pic_array.push(new ChooseLevel_lafler_Asset()); pic_array[(pic_array.length - 1)].smoothing = true; pic_array[(pic_array.length - 1)].y = ((_y + (_mod * 80)) + 10); pic_array[(pic_array.length - 1)].x = ((_x + ((i - (_mod * 6)) * 85)) + 10); } else { pic_array.push(new ChooseLevel_apple_Asset()); pic_array[(pic_array.length - 1)].smoothing = true; pic_array[(pic_array.length - 1)].y = (_y + (_mod * 80)); pic_array[(pic_array.length - 1)].x = (_x + ((i - (_mod * 6)) * 85)); apples_text = new TextField(); apples_text.embedFonts = true; apples_text.antiAliasType = AntiAliasType.ADVANCED; apples_text.autoSize = TextFieldAutoSize.LEFT; apples_text.defaultTextFormat = format2; apples_text.text = ("" + (i + 1)); apples_text.selectable = false; apples_text.mouseEnabled = false; if ((i + 1) < 10){ apples_text.x = (pic_array[(pic_array.length - 1)].x + 22); } else { apples_text.x = (pic_array[(pic_array.length - 1)].x + 17); }; apples_text.y = (pic_array[(pic_array.length - 1)].y + 26); apples_text.filters = [_glow, _shadow]; label_array.push(apples_text); }; ChooseLevel_dialog.addChild(pic_array[i]); i++; }; if (!passing_stat){ choose_level_go_bitmap = new ChooseLevel_GO_Asset(); choose_level_go_bitmap.smoothing = true; ChooseLevel_GO.addChild(choose_level_go_bitmap); choose_level_go_glow_bitmap = new ChooseLevel_GO_glow_Asset(); choose_level_go_glow_bitmap.smoothing = true; ChooseLevel_GO_glow.addChild(choose_level_go_glow_bitmap); go_button = new SimpleButton(ChooseLevel_GO, ChooseLevel_GO_glow, ChooseLevel_GO, ChooseLevel_GO); go_button.x = 600; go_button.y = 460; ChooseLevel_dialog.addChild(go_button); go_button.addEventListener(MouseEvent.CLICK, clickOnGo); } else { BlinkTimer.start(); }; var ai:int; while (ai < label_array.length) { ChooseLevel_dialog.addChild(label_array[ai]); ai++; }; } private function _stick_5_click(e:MouseEvent):void{ Garage_Stick_5.upState = Garage_button_Stick_5_selected; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_1.upState = Garage_button_Stick_1; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 5; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } private function _stick_1_out(e:MouseEvent):void{ if (selected_tool != 1){ Garage_button_Stick_1_selected.visible = false; Garage_button_Stick_1.visible = true; }; } public function _showGarage():void{ Garage_button_Buy.enabled = false; Garage_button_Buy.upState = Garage_button_Buy_disabled_bitmap; Garage_Stick_1.upState = Garage_button_Stick_1; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 0; Garage_dialog.visible = true; } public function BlinkTimer_CompleteEvent(e:TimerEvent):void{ var _mod:Number; var _glow:GlowFilter; var _shadow:DropShadowFilter; var format2:TextFormat; var apples_text:TextField; trace("level marker = ", level_marker); var _x:Number = 180; var _y:Number = 100; _mod = Math.floor(((level_marker - 2) / 6)); if (passing_stat > 0){ ChooseLevel_dialog.removeChild(pic_array[(level_marker - 2)]); ChooseLevel_dialog.removeChild(label_array[0]); pic_array[(level_marker - 2)] = new ChooseLevel_lafler_Asset(); pic_array[(level_marker - 2)].smoothing = true; ChooseLevel_dialog.addChild(pic_array[(level_marker - 2)]); pic_array[(level_marker - 2)].y = ((_y + (_mod * 80)) + 10); pic_array[(level_marker - 2)].x = ((_x + (((level_marker - 2) - (_mod * 6)) * 85)) + 10); pic_array[(level_marker - 2)].visible = true; } else { _mod = Math.floor(((level_marker - 3) / 6)); ChooseLevel_dialog.removeChild(pic_array[(level_marker - 3)]); pic_array[(level_marker - 3)] = new ChooseLevel_apple_Asset(); pic_array[(level_marker - 3)].smoothing = true; ChooseLevel_dialog.addChild(pic_array[(level_marker - 3)]); pic_array[(level_marker - 3)].y = (_y + (_mod * 80)); pic_array[(level_marker - 3)].x = (_x + (((level_marker - 3) - (_mod * 6)) * 85)); pic_array[(level_marker - 3)].visible = true; _glow = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH); _shadow = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH); format2 = new TextFormat(); format2.font = "CooperStdBlack"; format2.color = 29238; format2.size = 26; apples_text = new TextField(); apples_text.embedFonts = true; apples_text.antiAliasType = AntiAliasType.ADVANCED; apples_text.autoSize = TextFieldAutoSize.LEFT; apples_text.defaultTextFormat = format2; apples_text.text = ("" + (level_marker - 2)); apples_text.selectable = false; apples_text.mouseEnabled = false; if ((level_marker - 2) < 10){ apples_text.x = ((_x + (((level_marker - 3) - (_mod * 6)) * 85)) + 22); } else { apples_text.x = ((_x + (((level_marker - 3) - (_mod * 6)) * 85)) + 17); }; apples_text.y = ((_y + (_mod * 80)) + 26); apples_text.filters = [_glow, _shadow]; label_array.push(apples_text); ChooseLevel_dialog.addChild(label_array[(label_array.length - 1)]); }; var choose_level_next_bitmap:BitmapAsset = new ChooseLevel_NEXT_Asset(); choose_level_next_bitmap.smoothing = true; ChooseLevel_NEXT.addChild(choose_level_next_bitmap); var choose_level_next_glow_bitmap:BitmapAsset = new ChooseLevel_NEXT_glow_Asset(); choose_level_next_glow_bitmap.smoothing = true; ChooseLevel_NEXT_glow.addChild(choose_level_next_glow_bitmap); var next_button:SimpleButton = new SimpleButton(ChooseLevel_NEXT, ChooseLevel_NEXT_glow, ChooseLevel_NEXT, ChooseLevel_NEXT); next_button.x = 580; next_button.y = 460; ChooseLevel_dialog.addChild(next_button); next_button.addEventListener(MouseEvent.CLICK, clickOnNext); var choose_level_garage_bitmap:BitmapAsset = new ChooseLevel_GARAGE_Asset(); choose_level_garage_bitmap.smoothing = true; ChooseLevel_GARAGE.addChild(choose_level_garage_bitmap); var choose_level_garage_glow_bitmap:BitmapAsset = new ChooseLevel_GARAGE_glow_Asset(); choose_level_garage_glow_bitmap.smoothing = true; ChooseLevel_GARAGE_glow.addChild(choose_level_garage_glow_bitmap); var garage_button:SimpleButton = new SimpleButton(ChooseLevel_GARAGE, ChooseLevel_GARAGE_glow, ChooseLevel_GARAGE, ChooseLevel_GARAGE); garage_button.x = 300; garage_button.y = 10; ChooseLevel_dialog.addChild(garage_button); garage_button.addEventListener(MouseEvent.CLICK, clickOnGarage); if ((((level_marker == 2)) && (upgrade_never_shown))){ upgrade_link_BIT = new upgrade_link_PNG(); upgrade_link_BIT.smoothing = true; upgrade_link_BIT.x = 490; upgrade_link_BIT.y = 70; ChooseLevel_dialog.addChild(upgrade_link_BIT); upgrade_link_BlinkTimer.addEventListener(TimerEvent.TIMER, upgrade_linkOnBlink); upgrade_link_BlinkTimer.start(); upgrade_shown = true; upgrade_never_shown = false; }; } private function _stick_1_over(e:MouseEvent):void{ Garage_button_Stick_1.visible = false; Garage_button_Stick_1_selected.visible = true; } public function _clickOnWingame(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.WIN_GAME)); } public function _showMM():void{ _sharedObject = SharedObject.getLocal("AS_GameStat"); LeveL = new Levels(0); LeveL.levelID = (_sharedObject.data.levelID - 1); if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){ LINK1.upState = MainMenu_LINK1_off_bitmap; LINK1.hitTestState = MainMenu_LINK1_on_bitmap; } else { LINK1.upState = MainMenu_LINK1_off_disabled_bitmap; LINK1.hitTestState = null; }; MainMenu_dialog.visible = true; } private function _stick_2_click(e:MouseEvent):void{ Garage_Stick_2.upState = Garage_button_Stick_2_selected; Garage_Stick_1.upState = Garage_button_Stick_1; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 2; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } public function showDialog(name:String):void{ Background_dialog.visible = false; switch (name){ case "MainMenu": _showMM(); break; case "Garage": garage_text.text = ("" + fresh_apples); _showGarage(); break; }; } private function _stick_4_out(e:MouseEvent):void{ if (selected_tool != 4){ Garage_button_Stick_4_selected.visible = false; Garage_button_Stick_4.visible = true; }; } public function _Exit_click_garage(e:MouseEvent):void{ Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } public function BlinkTimerEvent(e:TimerEvent):void{ if (passing_stat > 0){ label_array[0].visible = !(label_array[0].visible); pic_array[(level_marker - 2)].visible = !(pic_array[(level_marker - 2)].visible); } else { pic_array[(level_marker - 3)].visible = !(pic_array[(level_marker - 3)].visible); }; } public function clickOnGo(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEW_LEVEL)); } private function _newGameClick(e:MouseEvent):void{ MainMenu_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEW_GAME)); } private function _createChooseLevel():void{ ChooseLevel_dialog.graphics.beginFill(0xFFFFFF, 0.7); ChooseLevel_dialog.graphics.drawRect(0, 0, 800, 640); ChooseLevel_dialog.graphics.endFill(); ChooseLevel_back_bitmap = new ChooseLevel_back_Asset(); ChooseLevel_back_bitmap.smoothing = true; ChooseLevel_dialog.addChild(ChooseLevel_back_bitmap); ChooseLevel_dialog.visible = false; super.addChild(ChooseLevel_dialog); } private function _tutorialClick(e:MouseEvent):void{ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.MM_HELP)); } private function _Buy_click(e:MouseEvent):void{ if (Garage_button_Buy.enabled){ switch (selected_tool){ case 1: if (fresh_apples > 4){ fresh_apples_left = fresh_apples; bought_tool = 1; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; case 2: if (fresh_apples > 49){ fresh_apples_left = fresh_apples; bought_tool = 2; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; case 3: if (fresh_apples > 99){ fresh_apples_left = fresh_apples; bought_tool = 3; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; case 4: if (fresh_apples > 199){ fresh_apples_left = fresh_apples; bought_tool = 4; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; case 5: if (fresh_apples > 499){ fresh_apples_left = fresh_apples; bought_tool = 5; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; case 6: if (fresh_apples > 0){ fresh_apples_left = fresh_apples; bought_tool = 6; Garage_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT)); } else { GarageBlinkTimerIteration = 1; GarageBlinkTimer.start(); engineSound.garage_no(); }; break; }; }; } private function _stick_5_over(e:MouseEvent):void{ Garage_button_Stick_5.visible = false; Garage_button_Stick_5_selected.visible = true; } private function _stick_4_click(e:MouseEvent):void{ Garage_Stick_4.upState = Garage_button_Stick_4_selected; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_1.upState = Garage_button_Stick_1; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 4; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } private function _stick_3_out(e:MouseEvent):void{ if (selected_tool != 3){ Garage_button_Stick_3_selected.visible = false; Garage_button_Stick_3.visible = true; }; } private function _stick_2_over(e:MouseEvent):void{ Garage_button_Stick_2.visible = false; Garage_button_Stick_2_selected.visible = true; } private function _continueGameClick(e:MouseEvent):void{ MainMenu_dialog.visible = false; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.CONT_GAME)); } private function _stick_1_click(e:MouseEvent):void{ Garage_Stick_1.upState = Garage_button_Stick_1_selected; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 1; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } public function _createGarage():void{ Garage_button_Buy_bitmap.smoothing = true; Garage_button_Buy_selected_bitmap.smoothing = true; Garage_button_Buy_disabled_bitmap.smoothing = true; GarageBlinkTimer.addEventListener(TimerEvent.TIMER, onGarageBlinkTimer); GarageBlinkTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onGarageBlinkTimerComplete); Garage_dialog_bitmap = new Garage_dialog_Asset(); Garage_dialog_bitmap.smoothing = true; Garage_dialog.addChild(Garage_dialog_bitmap); Garage_dialog.visible = false; super.addChild(Garage_dialog); Garage_button_Stick_1_bitmap = new Garage_button_Stick_1_Asset(); Garage_button_Stick_1_bitmap.smoothing = true; Garage_button_Stick_1.addChild(Garage_button_Stick_1_bitmap); Garage_button_Stick_1_HA_bitmap = new Garage_button_Stick_1_HA_Asset(); Garage_button_Stick_1_HA_bitmap.smoothing = true; Garage_button_Stick_1_HA_bitmap.rotation = 30; Garage_button_Stick_1_HA_bitmap.x = (Garage_button_Stick_1_HA_bitmap.x + 80); Garage_button_Stick_1_HA.addChild(Garage_button_Stick_1_HA_bitmap); Garage_button_Stick_1_selected_bitmap = new Garage_button_Stick_1_selected_Asset(); Garage_button_Stick_1_selected_bitmap.smoothing = true; Garage_button_Stick_1_selected.addChild(Garage_button_Stick_1_selected_bitmap); Garage_Stick_1 = new SimpleButton(Garage_button_Stick_1, Garage_button_Stick_1_selected, Garage_button_Stick_1_selected, Garage_button_Stick_1_HA); Garage_Stick_1.addEventListener(MouseEvent.CLICK, _stick_1_click); Garage_Stick_1.x = 210; Garage_Stick_1.y = 373; Garage_button_Stick_2_bitmap = new Garage_button_Stick_2_Asset(); Garage_button_Stick_2_bitmap.smoothing = true; Garage_button_Stick_2.addChild(Garage_button_Stick_2_bitmap); Garage_button_Stick_2_selected_bitmap = new Garage_button_Stick_2_selected_Asset(); Garage_button_Stick_2_selected_bitmap.smoothing = true; Garage_button_Stick_2_selected.addChild(Garage_button_Stick_2_selected_bitmap); Garage_Stick_2 = new SimpleButton(Garage_button_Stick_2, Garage_button_Stick_2_selected, Garage_button_Stick_2_selected, Garage_button_Stick_2_selected); Garage_Stick_2.addEventListener(MouseEvent.CLICK, _stick_2_click); Garage_Stick_2.x = 147; Garage_Stick_2.y = 344; Garage_dialog.addChild(Garage_Stick_2); Garage_button_Stick_3_bitmap = new Garage_button_Stick_3_Asset(); Garage_button_Stick_3_bitmap.smoothing = true; Garage_button_Stick_3.addChild(Garage_button_Stick_3_bitmap); Garage_button_Stick_3_selected_bitmap = new Garage_button_Stick_3_selected_Asset(); Garage_button_Stick_3_selected_bitmap.smoothing = true; Garage_button_Stick_3_selected.addChild(Garage_button_Stick_3_selected_bitmap); Garage_Stick_3 = new SimpleButton(Garage_button_Stick_3, Garage_button_Stick_3_selected, Garage_button_Stick_3_selected, Garage_button_Stick_3_selected); Garage_Stick_3.addEventListener(MouseEvent.CLICK, _stick_3_click); Garage_Stick_3.x = 312; Garage_Stick_3.y = 223; Garage_dialog.addChild(Garage_Stick_3); Garage_button_Stick_4_bitmap = new Garage_button_Stick_4_Asset(); Garage_button_Stick_4_bitmap.smoothing = true; Garage_button_Stick_4.addChild(Garage_button_Stick_4_bitmap); Garage_button_Stick_4_selected_bitmap = new Garage_button_Stick_4_selected_Asset(); Garage_button_Stick_4_selected_bitmap.smoothing = true; Garage_button_Stick_4_selected.addChild(Garage_button_Stick_4_selected_bitmap); Garage_Stick_4 = new SimpleButton(Garage_button_Stick_4, Garage_button_Stick_4_selected, Garage_button_Stick_4_selected, Garage_button_Stick_4_selected); Garage_Stick_4.addEventListener(MouseEvent.CLICK, _stick_4_click); Garage_Stick_4.x = 477; Garage_Stick_4.y = 370; Garage_dialog.addChild(Garage_Stick_4); Garage_button_Stick_5_bitmap = new Garage_button_Stick_5_Asset(); Garage_button_Stick_5_bitmap.smoothing = true; Garage_button_Stick_5.addChild(Garage_button_Stick_5_bitmap); Garage_button_Stick_5_selected_bitmap = new Garage_button_Stick_5_selected_Asset(); Garage_button_Stick_5_selected_bitmap.smoothing = true; Garage_button_Stick_5_selected.addChild(Garage_button_Stick_5_selected_bitmap); Garage_Stick_5 = new SimpleButton(Garage_button_Stick_5, Garage_button_Stick_5_selected, Garage_button_Stick_5_selected, Garage_button_Stick_5_selected); Garage_Stick_5.addEventListener(MouseEvent.CLICK, _stick_5_click); Garage_Stick_5.x = 145; Garage_Stick_5.y = 130; Garage_dialog.addChild(Garage_Stick_5); Garage_button_Stick_6_bitmap = new Garage_button_Stick_6_Asset(); Garage_button_Stick_6_bitmap.smoothing = true; Garage_button_Stick_6.addChild(Garage_button_Stick_6_bitmap); Garage_button_Stick_6_selected_bitmap = new Garage_button_Stick_6_selected_Asset(); Garage_button_Stick_6_selected_bitmap.smoothing = true; Garage_button_Stick_6_selected.addChild(Garage_button_Stick_6_selected_bitmap); Garage_Stick_6 = new SimpleButton(Garage_button_Stick_6, Garage_button_Stick_6_selected, Garage_button_Stick_6_selected, Garage_button_Stick_6_selected); Garage_Stick_6.addEventListener(MouseEvent.CLICK, _stick_6_click); Garage_Stick_6.x = 157; Garage_Stick_6.y = 535; Garage_dialog.addChild(Garage_Stick_6); Garage_dialog.addChild(Garage_Stick_1); Garage_button_Buy.enabled = false; Garage_button_Buy.upState = Garage_button_Buy_disabled_bitmap; Garage_button_Buy.overState = Garage_button_Buy_selected_bitmap; Garage_button_Buy.downState = Garage_button_Buy_selected_bitmap; Garage_button_Buy.hitTestState = Garage_button_Buy_selected_bitmap; Garage_button_Buy.x = 540; Garage_button_Buy.y = 20; Garage_button_Buy.addEventListener(MouseEvent.CLICK, _Buy_click); Garage_dialog.addChild(Garage_button_Buy); Garage_button_Exit_bitmap = new Garage_button_Exit_Asset(); Garage_button_Exit_bitmap.smoothing = true; Garage_button_Exit_selected_bitmap = new Garage_button_Exit_selected_Asset(); Garage_button_Exit_selected_bitmap.smoothing = true; Garage_button_Exit.upState = Garage_button_Exit_bitmap; Garage_button_Exit.overState = Garage_button_Exit_selected_bitmap; Garage_button_Exit.downState = Garage_button_Exit_selected_bitmap; Garage_button_Exit.hitTestState = Garage_button_Exit_selected_bitmap; Garage_button_Exit.x = 50; Garage_button_Exit.y = 20; Garage_button_Exit.addEventListener(MouseEvent.CLICK, _Exit_click_garage); Garage_dialog.addChild(Garage_button_Exit); var _glow:GlowFilter = new GlowFilter(0xF0F0F0, 1, 2, 2, 15, BitmapFilterQuality.HIGH); var _shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH); var format2:TextFormat = new TextFormat(); format2.font = "CooperStdBlack"; format2.color = 0x444444; format2.size = 26; garage_text.filters = [_glow]; var _local2 = garage_text; with (_local2) { embedFonts = true; antiAliasType = AntiAliasType.ADVANCED; autoSize = TextFieldAutoSize.LEFT; defaultTextFormat = format2; selectable = false; mouseEnabled = false; x = 565; y = 175; width = 495; height = 61; }; Garage_dialog.addChild(garage_text); } public function clickOnNext(e:MouseEvent):void{ if (upgrade_shown){ upgrade_shown = false; ChooseLevel_dialog.removeChild(upgrade_link_BIT); upgrade_link_BlinkTimer.stop(); upgrade_link_BlinkTimer.removeEventListener(TimerEvent.TIMER, upgrade_linkOnBlink); }; if (passing_stat > 0){ dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEXT_LEVEL)); } else { dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TRY_AGAIN)); }; } public function showLevelNum(level_num:Number):void{ var n100:Number = Math.round((level_num / 100)); var n10:Number = Math.round((level_num / 10)); var n1:Number = Math.round((level_num / 1)); if (n100){ }; } public function clickOnGarage(e:MouseEvent):void{ if (upgrade_shown){ upgrade_shown = false; ChooseLevel_dialog.removeChild(upgrade_link_BIT); upgrade_link_BlinkTimer.stop(); upgrade_link_BlinkTimer.removeEventListener(TimerEvent.TIMER, upgrade_linkOnBlink); }; dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.GOTO_GARAGE)); } private function _stick_6_click(e:MouseEvent):void{ Garage_Stick_6.upState = Garage_button_Stick_6_selected; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_3.upState = Garage_button_Stick_3; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_1.upState = Garage_button_Stick_1; selected_tool = 6; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } private function clickOnSponsor(e:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank"); } private function _stick_6_out(e:MouseEvent):void{ if (selected_tool != 6){ Garage_button_Stick_6_selected.visible = false; Garage_button_Stick_6.visible = true; }; } private function _stick_2_out(e:MouseEvent):void{ if (selected_tool != 2){ Garage_button_Stick_2_selected.visible = false; Garage_button_Stick_2.visible = true; }; } private function _createBackground():void{ B_apples_set_bitmap = new B_apples_set_Asset(); B_apples_set_bitmap.smoothing = true; B_apples_set_bitmap.x = 705; B_apples_set_bitmap.y = 15; var format:TextFormat = new TextFormat(); format.font = "CooperStdBlack"; format.color = 10931769; format.size = 30; level_id_text.embedFonts = true; level_id_text.autoSize = TextFieldAutoSize.LEFT; level_id_text.antiAliasType = AntiAliasType.ADVANCED; level_id_text.defaultTextFormat = format; level_id_text.selectable = false; level_id_text.mouseEnabled = false; var _local2 = level_id_text; with (_local2) { x = 10; y = 10; }; var format2:TextFormat = new TextFormat(); format2.font = "CooperStdBlack"; format2.color = 0; format2.size = 24; apples_count_text.embedFonts = true; apples_count_text.antiAliasType = AntiAliasType.ADVANCED; apples_count_text.autoSize = TextFieldAutoSize.LEFT; apples_count_text.defaultTextFormat = format2; apples_count_text.text = " 0"; apples_count_text.selectable = false; apples_count_text.mouseEnabled = false; apples_count_text.x = 740; apples_count_text.y = 17; var glow:GlowFilter = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH); var shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH); level_id_text.filters = [glow, shadow]; apples_count_text.filters = [glow, shadow]; B_apples_set_bitmap.filters = [shadow]; Background_dialog.visible = false; Background_dialog.addChild(apples_count_text); Background_dialog.addChild(level_id_text); Background_dialog.addChild(B_apples_set_bitmap); super.addChild(Background_dialog); } private function _stick_6_over(e:MouseEvent):void{ Garage_button_Stick_6.visible = false; Garage_button_Stick_6_selected.visible = true; } private function upgrade_linkOnBlink(e:TimerEvent):void{ upgrade_link_BIT.visible = !(upgrade_link_BIT.visible); } private function _stick_3_over(e:MouseEvent):void{ Garage_button_Stick_3.visible = false; Garage_button_Stick_3_selected.visible = true; } public function onGarageBlinkTimer(e:TimerEvent):void{ switch (GarageBlinkTimerIteration){ case 1: garage_text.textColor = 0xFF0000; GarageBlinkTimerIteration++; break; case 2: garage_text.textColor = 0x444444; GarageBlinkTimerIteration++; break; case 3: garage_text.textColor = 0xFF0000; GarageBlinkTimerIteration++; break; case 4: garage_text.textColor = 0x444444; GarageBlinkTimerIteration = 1; GarageBlinkTimer.stop(); break; }; } private function _stick_3_click(e:MouseEvent):void{ Garage_Stick_3.upState = Garage_button_Stick_3_selected; Garage_Stick_2.upState = Garage_button_Stick_2; Garage_Stick_1.upState = Garage_button_Stick_1; Garage_Stick_4.upState = Garage_button_Stick_4; Garage_Stick_5.upState = Garage_button_Stick_5; Garage_Stick_6.upState = Garage_button_Stick_6; selected_tool = 3; Garage_button_Buy.enabled = true; Garage_button_Buy.upState = Garage_button_Buy_bitmap; } private function _createMainMenu():void{ MainMenu_dialog.graphics.beginFill(0xFFFFFF, 0.7); MainMenu_dialog.graphics.drawRect(0, 0, 800, 640); MainMenu_dialog.graphics.endFill(); MainMenu_dialog_bitmap = new MainMenu_dialog_Asset(); MainMenu_dialog_bitmap.smoothing = true; MainMenu_dialog.addChild(MainMenu_dialog_bitmap); super.addChild(MainMenu_dialog); MainMenu_PLAY_on_bitmap = new MainMenu_PLAY_on_Asset(); MainMenu_PLAY_on_bitmap.smoothing = true; MainMenu_PLAY_off_bitmap = new MainMenu_PLAY_off_Asset(); MainMenu_PLAY_off_bitmap.smoothing = true; var play:SimpleButton = new SimpleButton(); play.useHandCursor = true; play.x = 380; play.y = 265; play.upState = MainMenu_PLAY_off_bitmap; play.overState = MainMenu_PLAY_on_bitmap; play.downState = MainMenu_PLAY_on_bitmap; play.hitTestState = MainMenu_PLAY_on_bitmap; play.addEventListener(MouseEvent.CLICK, _newGameClick); MainMenu_dialog.addChild(play); MainMenu_LINK1_on_bitmap = new MainMenu_LINK1_on_Asset(); MainMenu_LINK1_on_bitmap.smoothing = true; MainMenu_LINK1_off_bitmap = new MainMenu_LINK1_off_Asset(); MainMenu_LINK1_off_bitmap.smoothing = true; MainMenu_LINK1_off_disabled_bitmap = new MainMenu_LINK1_off_disabled_Asset(); MainMenu_LINK1_off_disabled_bitmap.smoothing = true; LINK1.useHandCursor = true; LINK1.x = 245; LINK1.y = 205; _sharedObject = SharedObject.getLocal("AS_GameStat"); LeveL = new Levels(0); LeveL.levelID = (_sharedObject.data.levelID - 1); if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){ LINK1.upState = MainMenu_LINK1_off_bitmap; LINK1.hitTestState = MainMenu_LINK1_on_bitmap; } else { LINK1.upState = MainMenu_LINK1_off_disabled_bitmap; LINK1.hitTestState = null; }; LINK1.overState = MainMenu_LINK1_on_bitmap; LINK1.downState = MainMenu_LINK1_on_bitmap; LINK1.addEventListener(MouseEvent.CLICK, _continueGameClick); MainMenu_dialog.addChild(LINK1); MainMenu_LINK2_on_bitmap = new MainMenu_LINK2_on_Asset(); MainMenu_LINK2_on_bitmap.smoothing = true; MainMenu_LINK2_off_bitmap = new MainMenu_LINK2_off_Asset(); MainMenu_LINK2_off_bitmap.smoothing = true; var LINK2:SimpleButton = new SimpleButton(); LINK2.useHandCursor = true; LINK2.x = 275; LINK2.y = 330; LINK2.upState = MainMenu_LINK2_off_bitmap; LINK2.overState = MainMenu_LINK2_on_bitmap; LINK2.downState = MainMenu_LINK2_on_bitmap; LINK2.hitTestState = MainMenu_LINK2_on_bitmap; LINK2.addEventListener(MouseEvent.CLICK, _tutorialClick); MainMenu_dialog.addChild(LINK2); MainMenu_Sponsor_on_bitmap = new MainMenu_Sponsor_off_Asset(); MainMenu_Sponsor_on_bitmap.smoothing = true; MainMenu_Sponsor_off_bitmap = new MainMenu_Sponsor_on_Asset(); MainMenu_Sponsor_off_bitmap.smoothing = true; var Sponsor:SimpleButton = new SimpleButton(); Sponsor.useHandCursor = true; Sponsor.x = 325; Sponsor.y = 400; Sponsor.upState = MainMenu_Sponsor_off_bitmap; Sponsor.overState = MainMenu_Sponsor_on_bitmap; Sponsor.downState = MainMenu_Sponsor_on_bitmap; Sponsor.hitTestState = MainMenu_Sponsor_on_bitmap; Sponsor.addEventListener(MouseEvent.CLICK, clickOnSponsor); MainMenu_dialog.addChild(Sponsor); var temp_swf:MovieClip = new MovieClip(); temp_swf = new bee_swf(); temp_swf.scaleX = 0.2; temp_swf.scaleY = 0.2; temp_swf.x = 490; temp_swf.y = 390; MainMenu_dialog.addChild(temp_swf); } } }//package Interface.Sprites
Section 238
//UserInterface_B_apples_set_Asset (Interface.Sprites.UserInterface_B_apples_set_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_B_apples_set_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 239
//UserInterface_bee_swf (Interface.Sprites.UserInterface_bee_swf) package Interface.Sprites { import mx.core.*; public class UserInterface_bee_swf extends MovieClipAsset { } }//package Interface.Sprites
Section 240
//UserInterface_ChooseLevel_apple_Asset (Interface.Sprites.UserInterface_ChooseLevel_apple_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_apple_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 241
//UserInterface_ChooseLevel_back_Asset (Interface.Sprites.UserInterface_ChooseLevel_back_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_back_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 242
//UserInterface_ChooseLevel_GARAGE_Asset (Interface.Sprites.UserInterface_ChooseLevel_GARAGE_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_GARAGE_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 243
//UserInterface_ChooseLevel_GARAGE_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_GARAGE_glow_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_GARAGE_glow_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 244
//UserInterface_ChooseLevel_GO_Asset (Interface.Sprites.UserInterface_ChooseLevel_GO_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_GO_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 245
//UserInterface_ChooseLevel_GO_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_GO_glow_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_GO_glow_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 246
//UserInterface_ChooseLevel_lafler_Asset (Interface.Sprites.UserInterface_ChooseLevel_lafler_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_lafler_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 247
//UserInterface_ChooseLevel_NEXT_Asset (Interface.Sprites.UserInterface_ChooseLevel_NEXT_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_NEXT_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 248
//UserInterface_ChooseLevel_NEXT_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_NEXT_glow_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_ChooseLevel_NEXT_glow_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 249
//UserInterface_Garage_button_Buy_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Buy_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 250
//UserInterface_Garage_button_Buy_disabled_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_disabled_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Buy_disabled_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 251
//UserInterface_Garage_button_Buy_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Buy_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 252
//UserInterface_Garage_button_Exit_Asset (Interface.Sprites.UserInterface_Garage_button_Exit_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Exit_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 253
//UserInterface_Garage_button_Exit_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Exit_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Exit_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 254
//UserInterface_Garage_button_Stick_1_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_1_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 255
//UserInterface_Garage_button_Stick_1_HA_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_HA_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_1_HA_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 256
//UserInterface_Garage_button_Stick_1_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_1_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 257
//UserInterface_Garage_button_Stick_2_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_2_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_2_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 258
//UserInterface_Garage_button_Stick_2_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_2_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_2_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 259
//UserInterface_Garage_button_Stick_3_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_3_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_3_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 260
//UserInterface_Garage_button_Stick_3_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_3_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_3_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 261
//UserInterface_Garage_button_Stick_4_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_4_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_4_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 262
//UserInterface_Garage_button_Stick_4_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_4_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_4_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 263
//UserInterface_Garage_button_Stick_5_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_5_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_5_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 264
//UserInterface_Garage_button_Stick_5_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_5_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_5_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 265
//UserInterface_Garage_button_Stick_6_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_6_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_6_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 266
//UserInterface_Garage_button_Stick_6_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_6_selected_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_button_Stick_6_selected_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 267
//UserInterface_Garage_dialog_Asset (Interface.Sprites.UserInterface_Garage_dialog_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_Garage_dialog_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 268
//UserInterface_MainMenu_dialog_Asset (Interface.Sprites.UserInterface_MainMenu_dialog_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_dialog_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 269
//UserInterface_MainMenu_LINK1_off_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_off_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_LINK1_off_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 270
//UserInterface_MainMenu_LINK1_off_disabled_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_off_disabled_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_LINK1_off_disabled_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 271
//UserInterface_MainMenu_LINK1_on_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_on_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_LINK1_on_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 272
//UserInterface_MainMenu_LINK2_off_Asset (Interface.Sprites.UserInterface_MainMenu_LINK2_off_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_LINK2_off_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 273
//UserInterface_MainMenu_LINK2_on_Asset (Interface.Sprites.UserInterface_MainMenu_LINK2_on_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_LINK2_on_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 274
//UserInterface_MainMenu_PLAY_off_Asset (Interface.Sprites.UserInterface_MainMenu_PLAY_off_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_PLAY_off_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 275
//UserInterface_MainMenu_PLAY_on_Asset (Interface.Sprites.UserInterface_MainMenu_PLAY_on_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_PLAY_on_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 276
//UserInterface_MainMenu_Sponsor_off_Asset (Interface.Sprites.UserInterface_MainMenu_Sponsor_off_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_Sponsor_off_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 277
//UserInterface_MainMenu_Sponsor_on_Asset (Interface.Sprites.UserInterface_MainMenu_Sponsor_on_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_MainMenu_Sponsor_on_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 278
//UserInterface_upgrade_link_PNG (Interface.Sprites.UserInterface_upgrade_link_PNG) package Interface.Sprites { import mx.core.*; public class UserInterface_upgrade_link_PNG extends BitmapAsset { } }//package Interface.Sprites
Section 279
//UserInterface_WinGame_dialog_Asset (Interface.Sprites.UserInterface_WinGame_dialog_Asset) package Interface.Sprites { import mx.core.*; public class UserInterface_WinGame_dialog_Asset extends BitmapAsset { } }//package Interface.Sprites
Section 280
//LevelObj_Ant (Levels.LevelObj_Ant) package Levels { import flash.display.*; public class LevelObj_Ant extends Sprite { public var applesOnTheBack:Number;// = 0 public var justAdded:Boolean;// = false public var sprite:Sprite; public var JustHitByApple:Boolean;// = false public var StoppedByApple:Boolean;// = false public var type:Number;// = 0 public var withApple:Boolean;// = false public var health:Number; public var velocity:Number; public var direction:Number; public function LevelObj_Ant(_type:Number, _health:Number, _velocity:Number, _direction:Number){ super(); type = _type; health = _health; velocity = _velocity; direction = _direction; } } }//package Levels
Section 281
//LevelObj_Apple (Levels.LevelObj_Apple) package Levels { import flash.display.*; public class LevelObj_Apple extends Sprite { public var sprite:Sprite; public var damage:Number; public var positionY:Number; public var positionX:Number; public var type:Number; public var stat:Number; public var bonus:Number; public function LevelObj_Apple(_type:Number, _damage:Number, _bonus:Number, _positionX:Number, _positionY:Number, _stat:Number){ super(); type = _type; damage = _damage; bonus = _bonus; positionX = _positionX; positionY = _positionY; stat = _stat; } } }//package Levels
Section 282
//Levels (Levels.Levels) package Levels { import flash.display.*; public class Levels extends Sprite { public var mashroom:Boolean;// = false public var StickType:Number; public var level_status:String;// = "in progress" public var Ants:Array; public var nest:Boolean;// = false public var tree:Boolean;// = false public var StaticObjects:Array; public var levelID:Number;// = 0 public var AltsLoaded:Number;// = 0 public var Apples_alts:Array; public var ApplesInTheBox:Number;// = 0 public var Apples:Array; public function Levels(_levelID:Number):void{ var tempar:Array; var tempar_2:Array; var tempar_1:Array; Apples = new Array(); Apples_alts = new Array(); Ants = new Array(); StaticObjects = new Array(); super(); levelID = _levelID; switch (levelID){ case 0: trace("Invalid level ID - 0"); break; case 1: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 580, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 610, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 235, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 325, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 505, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 595, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 325, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 505, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 415, 50, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 90, 4)); Ants.push(new LevelObj_Ant(1, 10, 3, -1)); break; case 3: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 240, 146, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 270, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 510, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 480, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 540, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 510, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 570, 150, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 220, 240, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 600, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 200, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 200, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.7, -1)); break; case 2: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 280, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 70, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 230, 110, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 600, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 290, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 510, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 190, 4)); Ants.push(new LevelObj_Ant(2, 20, 2.5, -1)); break; case 4: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 420, 270, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 254, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 290, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 450, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 270, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 400, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 125, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 80, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 200, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 200, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); break; case 5: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(4, 20, 0, 400, 130, 4)); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 254, 136, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 284, 100, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 550, 130, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 520, 100, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 460, 220, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 340, 220, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 240, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 290, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 140, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 90, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 460, 70, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 340, 70, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 490, 280, 4)); Apples_alts.push(tempar); StaticObjects.push(new StaticObj(3, 250, 250)); Ants.push(new LevelObj_Ant(1, 10, 2, -1)); break; case 6: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 310, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 450, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 480, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 450, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 405, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 405, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 450, 290, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 310, 360, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 540, 370, 4)); StaticObjects.push(new StaticObj(3, 270, 190)); Ants.push(new LevelObj_Ant(2, 20, 2.2, -1)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); break; case 7: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 440, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 480, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 480, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 450, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 200, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 560, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 510, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 610, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 405, 40, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 290, 100, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 530, 100, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 400, 290, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 280, 250, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 550, 250, 4)); StaticObjects.push(new StaticObj(3, 405, 170)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 8: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 400, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 127, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 560, 190, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 250, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 250, 4)); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 230, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 270, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 500, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 540, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 580, 280, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 250, 240, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 290, 240, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 525, 239, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 560, 240, 4)); Apples_alts.push(tempar); StaticObjects.push(new StaticObj(3, 400, 285)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.8, -1)); break; case 9: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 220, 4)); StaticObjects.push(new StaticObj(3, 390, 260)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); break; case 10: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 120, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 450, 130, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 350, 130, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 400, 210, 4)); StaticObjects.push(new StaticObj(3, 400, 170)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2, -1)); break; case 11: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(4, 20, 0, 250, 180, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 280, 140, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 310, 100, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 340, 60, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 290, 200, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 330, 180, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 370, 160, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 420, 140, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 460, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 460, 120, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 300, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 340, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 380, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 510, 100, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 420, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 560, 230, 4)); Apples.push(new LevelObj_Apple(4, 20, 0, 510, 230, 4)); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 216, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 260, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 300, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 340, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 380, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 430, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 470, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 510, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 590, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 550, 280, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 480, 360, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 510, 340, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 550, 350, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 520, 380, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 300, 340, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 490, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 530, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 570, 190, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 510, 160, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4)); Apples_alts.push(tempar); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 530, 130, 4)); Apples_alts.push(tempar); StaticObjects.push(new StaticObj(3, 250, 240)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.4, -1)); break; case 12: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 280, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 140, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 140, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 530, 170, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 80, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 80, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 250, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 370, 80, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 430, 80, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 400, 130, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 370, 260, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 430, 260, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 400, 220, 4)); StaticObjects.push(new StaticObj(3, 400, 170)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2.8, -1)); break; case 13: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 210, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 290, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 230, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 270, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 540, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 580, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 560, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 540, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 390, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 80, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 80, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 390, 50, 4)); StaticObjects.push(new StaticObj(3, 330, 230)); StaticObjects.push(new StaticObj(3, 480, 230)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 14: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 280, 193, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 252, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 279, 128, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 313, 104, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 343, 132, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 398, 192, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 367, 159, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 344, 248, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 460, 280, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 490, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 219, 190, 4)); StaticObjects.push(new StaticObj(3, 310, 350)); StaticObjects.push(new StaticObj(3, 490, 120)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.3, -1)); break; case 15: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 410, 40, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 70, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 320, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 320, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 90, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 230, 110, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 200, 170, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 220, 230, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 260, 280, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 600, 110, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 630, 170, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 610, 230, 4)); Apples.push(new LevelObj_Apple(3, 20, 0, 560, 280, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 310, 350, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 520, 350, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 350, 290, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 470, 290, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 550, 110, 4)); Apples.push(new LevelObj_Apple(2, 20, 0, 280, 110, 4)); StaticObjects.push(new StaticObj(3, 300, 170)); StaticObjects.push(new StaticObj(3, 530, 170)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 16: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 300, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 270, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 60, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 60, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 530, 150, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 570, 200, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 540, 290, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 230, 200, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 260, 290, 4)); StaticObjects.push(new StaticObj(3, 400, 210)); StaticObjects.push(new StaticObj(2, 530, 520)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(2, 20, 2.2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 17: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(4, 20, 0, 410, 210, 4)); tempar = new Array(); tempar.push(new LevelObj_Apple(1, 20, 0, 249, 219, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 219, 192, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 280, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 340, 130, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 380, 120, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 430, 120, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 470, 130, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 500, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 530, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 610, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 190, 160, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 380, 70, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 430, 70, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 440, 250, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 380, 180, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 430, 180, 4)); tempar.push(new LevelObj_Apple(1, 20, 0, 380, 250, 4)); Apples_alts.push(tempar); StaticObjects.push(new StaticObj(3, 330, 230)); StaticObjects.push(new StaticObj(3, 490, 230)); StaticObjects.push(new StaticObj(2, 530, 522)); StaticObjects.push(new StaticObj(1, 320, 530)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.7, -1)); break; case 18: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 260, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 260, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 290, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 320, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 590, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 560, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 530, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 230, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 320, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 380, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 560, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 470, 280, 4)); StaticObjects.push(new StaticObj(3, 250, 290)); StaticObjects.push(new StaticObj(3, 580, 290)); StaticObjects.push(new StaticObj(2, 530, 522)); StaticObjects.push(new StaticObj(1, 320, 530)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(2, 20, 2.2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 19: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(5, 20, 0, 490, 300, 4)); Apples.push(new LevelObj_Apple(5, 20, 0, 330, 300, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 410, 210, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 440, 140, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 300, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 270, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 260, 140, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 270, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 350, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 140, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 360, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 500, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 120, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 540, 180, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 390, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 240, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 110, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 560, 150, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 90, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 390, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 280, 4)); StaticObjects.push(new StaticObj(3, 320, 150)); StaticObjects.push(new StaticObj(3, 510, 150)); StaticObjects.push(new StaticObj(2, 530, 522)); StaticObjects.push(new StaticObj(1, 320, 530)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 2, -1)); Ants.push(new LevelObj_Ant(2, 20, 2.2, -1)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; case 20: ApplesInTheBox = 20; StickType = 1; tempar_2 = new Array(); tempar_2.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 372, 192, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 341, 160, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 460, 250, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 520, 250, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 580, 250, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 490, 220, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4)); tempar_2.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4)); Apples_alts.push(tempar_2); Apples.push(new LevelObj_Apple(4, 20, 0, 360, 240, 4)); tempar_1 = new Array(); tempar_1.push(new LevelObj_Apple(4, 20, 0, 560, 120, 4)); Apples_alts.push(tempar_1); StaticObjects.push(new StaticObj(3, 290, 250)); StaticObjects.push(new StaticObj(3, 490, 130)); StaticObjects.push(new StaticObj(2, 530, 522)); StaticObjects.push(new StaticObj(1, 320, 530)); Ants.push(new LevelObj_Ant(3, 40, 1.5, -1)); break; case 21: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 285, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 495, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 490, 250, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 70, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); Ants.push(new LevelObj_Ant(3, 30, 1.5, -1)); break; case 22: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 340, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 220, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 280, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 460, 100, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(2, 20, 1.8, -1)); break; case 23: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); Ants.push(new LevelObj_Ant(1, 10, 2, -1)); break; case 24: ApplesInTheBox = 20; StickType = 1; Apples.push(new LevelObj_Apple(1, 20, 0, 250, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 400, 130, 4)); Apples.push(new LevelObj_Apple(1, 20, 0, 550, 130, 4)); Ants.push(new LevelObj_Ant(1, 10, 2.5, -1)); break; }; } } }//package Levels
Section 283
//StaticObj (Levels.StaticObj) package Levels { import flash.display.*; public class StaticObj extends Sprite { public var positionY:Number;// = 0 public var sprite:Sprite; public var type:Number;// = 0 public var positionX:Number;// = 0 public function StaticObj(_type:Number, _x:Number, _y:Number){ sprite = new Sprite(); super(); type = _type; positionX = _x; positionY = _y; } } }//package Levels
Section 284
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.2.0.3958"; public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ super(bitmapData, pixelSnapping, smoothing); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(newWidth:Number, newHeight:Number):void{ width = newWidth; height = newHeight; } public function move(x:Number, y:Number):void{ this.x = x; this.y = y; } } }//package mx.core
Section 285
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.2.0.3958"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(left:Number=0, top:Number=0, right:Number=0, bottom:Number=0){ super(); this.left = left; this.top = top; this.right = right; this.bottom = bottom; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 286
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.2.0.3958"; public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ var bitmapData = bitmapData; var pixelSnapping = pixelSnapping; var smoothing = smoothing; super(bitmapData, pixelSnapping, smoothing); name = NameUtil.createUniqueName(this); //unresolved jump var _slot1 = e; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 287
//FlexMovieClip (mx.core.FlexMovieClip) package mx.core { import flash.display.*; import mx.utils.*; public class FlexMovieClip extends MovieClip { mx_internal static const VERSION:String = "3.2.0.3958"; public function FlexMovieClip(){ super(); name = NameUtil.createUniqueName(this); //unresolved jump var _slot1 = e; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 288
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; public function FontAsset(){ super(); } } }//package mx.core
Section 289
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 290
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 291
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(void:Point):Point; function get name():String; function set width(flash.display:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(flash.display:String):void; function set scaleX(flash.display:Number):void; function set scaleY(flash.display:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(flash.display:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(void:Point):Point; function get height():Number; function set blendMode(flash.display:String):void; function get parent():DisplayObjectContainer; function getBounds(String:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(flash.display:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(flash.display:Number):void; function set accessibilityProperties(flash.display:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(flash.display:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(flash.display:Number):void; function set mask(flash.display:DisplayObject):void; function getRect(String:DisplayObject):Rectangle; function get alpha():Number; function set transform(flash.display:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean; function set opaqueBackground(flash.display:Object):void; function set visible(flash.display:Boolean):void; function get mask():DisplayObject; function set x(flash.display:Number):void; function set y(flash.display:Number):void; function get transform():Transform; function set filters(flash.display:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(flash.display:Number):void; function get stage():Stage; } }//package mx.core
Section 292
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get isDocument():Boolean; function set repeaters(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function initializeRepeaterArrays(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 293
//MovieClipAsset (mx.core.MovieClipAsset) package mx.core { public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.2.0.3958"; public function MovieClipAsset(){ super(); _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(newWidth:Number, newHeight:Number):void{ width = newWidth; height = newHeight; } public function move(x:Number, y:Number):void{ this.x = x; this.y = y; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 294
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 295
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; public function SoundAsset(){ super(); } } }//package mx.core
Section 296
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.2.0.3958"; private static var counter:int = 0; public function NameUtil(){ super(); } public static function displayObjectToString(displayObject:DisplayObject):String{ var result:String; var o:DisplayObject; var s:String; var indices:Array; var displayObject = displayObject; o = displayObject; while (o != null) { if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ break; }; s = o.name; if ((o is IRepeaterClient)){ indices = IRepeaterClient(o).instanceIndices; if (indices){ s = (s + (("[" + indices.join("][")) + "]")); }; }; result = ((result == null)) ? s : ((s + ".") + result); o = o.parent; }; //unresolved jump var _slot1 = e; return (result); } public static function createUniqueName(object:Object):String{ if (!object){ return (null); }; var name:String = getQualifiedClassName(object); var index:int = name.indexOf("::"); if (index != -1){ name = name.substr((index + 2)); }; var charCode:int = name.charCodeAt((name.length - 1)); if ((((charCode >= 48)) && ((charCode <= 57)))){ name = (name + "_"); }; return ((name + counter++)); } } }//package mx.utils
Section 297
//AS_09 (AS_09) package { import Engine.*; public class AS_09 extends Engine { public var font1:String;// = "AS_09_font1" public var font2:String;// = "AS_09_font2" public function AS_09(){ super(); this.scaleX = 0.8; this.scaleY = 0.8; _startEngine(); } } }//package
Section 298
//AS_09_font1 (AS_09_font1) package { import mx.core.*; public class AS_09_font1 extends FontAsset { } }//package
Section 299
//AS_09_font2 (AS_09_font2) package { import mx.core.*; public class AS_09_font2 extends FontAsset { } }//package
Section 300
//MyFactory (MyFactory) package { import flash.events.*; import flash.display.*; import mx.core.*; import flash.utils.*; import flash.net.*; public class MyFactory extends MovieClip { private var sponsorLable_BIT:BitmapAsset; public var logoclip:MovieClip; private var GameName_PNG:Class; private var LoadingImage_BIT:BitmapAsset; private var mailto_off_BIT:BitmapAsset; private var sponsorLable_PNG:Class; private var IntroLogo:Class; public var LogoButton:SimpleButton; public var MailTOButton:SimpleButton; private var LoadingImage_PNG:Class; private var GameName_BIT:BitmapAsset; private var mailto_off_PNG:Class; private var logo_timer:Timer; private var mailto_on_PNG:Class; private var mailto_on_BIT:BitmapAsset; public function MyFactory(){ IntroLogo = MyFactory_IntroLogo; logo_timer = new Timer(4000, 1); GameName_PNG = MyFactory_GameName_PNG; LoadingImage_PNG = MyFactory_LoadingImage_PNG; mailto_off_PNG = MyFactory_mailto_off_PNG; mailto_on_PNG = MyFactory_mailto_on_PNG; sponsorLable_PNG = MyFactory_sponsorLable_PNG; logoclip = new MovieClip(); super(); stop(); logo_timer.addEventListener(TimerEvent.TIMER_COMPLETE, intro_on_time); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; addEventListener(Event.ENTER_FRAME, onEnterFrame); GameName_BIT = new GameName_PNG(); GameName_BIT.smoothing = true; GameName_BIT.x = 40; GameName_BIT.y = 50; addChild(GameName_BIT); LoadingImage_BIT = new LoadingImage_PNG(); LoadingImage_BIT.smoothing = true; LoadingImage_BIT.x = 10; LoadingImage_BIT.y = 200; addChild(LoadingImage_BIT); sponsorLable_BIT = new sponsorLable_PNG(); sponsorLable_BIT.smoothing = true; LogoButton = new SimpleButton(sponsorLable_BIT, sponsorLable_BIT, sponsorLable_BIT, sponsorLable_BIT); LogoButton.x = 65; LogoButton.y = 270; addChild(LogoButton); LogoButton.addEventListener(MouseEvent.CLICK, clickOnSponsor); mailto_off_BIT = new mailto_off_PNG(); mailto_off_BIT.smoothing = true; mailto_on_BIT = new mailto_on_PNG(); mailto_on_BIT.smoothing = true; MailTOButton = new SimpleButton(mailto_off_BIT, mailto_on_BIT, mailto_on_BIT, mailto_on_BIT); MailTOButton.addEventListener(MouseEvent.CLICK, clickOmMailTO); MailTOButton.x = 400; MailTOButton.y = 110; addChild(MailTOButton); graphics.beginFill(13118257); graphics.drawRect(0, ((stage.stageHeight / 2) - 10), stage.stageWidth, 20); graphics.endFill(); } public function onEnterFrame(event:Event):void{ var percent:Number; graphics.clear(); if (framesLoaded == totalFrames){ LogoButton.removeEventListener(MouseEvent.CLICK, clickOnSponsor); removeChild(LogoButton); MailTOButton.removeEventListener(MouseEvent.CLICK, clickOmMailTO); removeChild(MailTOButton); removeChild(GameName_BIT); removeChild(LoadingImage_BIT); removeEventListener(Event.ENTER_FRAME, onEnterFrame); nextFrame(); logoinit(); } else { percent = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal); graphics.beginFill(13118257); graphics.drawRect(0, ((stage.stageHeight / 2) - 10), (stage.stageWidth * percent), 20); graphics.endFill(); }; } private function logoinit():void{ logoclip = new IntroLogo(); logoclip.x = -190; logoclip.y = 200; addChild(logoclip); logo_timer.start(); } private function clickOnSponsor(e:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank"); } private function clickOmMailTO(e:MouseEvent):void{ navigateToURL(new URLRequest("mailto:sunglide@gmail.com"), "_blank"); } private function intro_on_time(e:TimerEvent):void{ removeChild(logoclip); nextFrame(); init(); } private function logo_idle(e:Event):void{ } private function init():void{ var app:Object; var mainClass:Class = Class(getDefinitionByName("AS_09")); if (mainClass){ app = new (mainClass); addChild((app as DisplayObject)); }; } } }//package
Section 301
//MyFactory_GameName_PNG (MyFactory_GameName_PNG) package { import mx.core.*; public class MyFactory_GameName_PNG extends BitmapAsset { } }//package
Section 302
//MyFactory_IntroLogo (MyFactory_IntroLogo) package { import mx.core.*; public class MyFactory_IntroLogo extends MovieClipAsset { } }//package
Section 303
//MyFactory_LoadingImage_PNG (MyFactory_LoadingImage_PNG) package { import mx.core.*; public class MyFactory_LoadingImage_PNG extends BitmapAsset { } }//package
Section 304
//MyFactory_mailto_off_PNG (MyFactory_mailto_off_PNG) package { import mx.core.*; public class MyFactory_mailto_off_PNG extends BitmapAsset { } }//package
Section 305
//MyFactory_mailto_on_PNG (MyFactory_mailto_on_PNG) package { import mx.core.*; public class MyFactory_mailto_on_PNG extends BitmapAsset { } }//package
Section 306
//MyFactory_sponsorLable_PNG (MyFactory_sponsorLable_PNG) package { import mx.core.*; public class MyFactory_sponsorLable_PNG extends BitmapAsset { } }//package

Library Items

Symbol 1 GraphicUsed by:35 36
Symbol 2 GraphicUsed by:5 35
Symbol 3 GraphicUsed by:5
Symbol 4 GraphicUsed by:5
Symbol 5 MovieClipUses:2 3 4Used by:31 56
Symbol 6 GraphicUsed by:9 35
Symbol 7 GraphicUsed by:9 35
Symbol 8 GraphicUsed by:9
Symbol 9 MovieClipUses:6 7 8Used by:31 56
Symbol 10 GraphicUsed by:14 35
Symbol 11 GraphicUsed by:14 35
Symbol 12 GraphicUsed by:14
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClipUses:10 11 12 13Used by:31 56
Symbol 15 GraphicUsed by:17 35
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:15 16Used by:21
Symbol 18 GraphicUsed by:20 35
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:18 19Used by:21
Symbol 21 MovieClipUses:17 20Used by:31 56
Symbol 22 GraphicUsed by:26 35
Symbol 23 GraphicUsed by:26 35
Symbol 24 GraphicUsed by:26
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:22 23 24 25Used by:31 56
Symbol 27 ShapeTweeningUsed by:31 35
Symbol 28 ShapeTweeningUsed by:31
Symbol 29 GraphicUsed by:31
Symbol 30 GraphicUsed by:31
Symbol 31 MovieClipUses:5 9 14 21 26 27 28 29 30Used by:35 36
Symbol 32 GraphicUsed by:36
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClipUses:33Used by:36
Symbol 35 ButtonUses:1 31 2 6 7 10 11 15 18 22 23 27Used by:36
Symbol 36 MovieClip {MyFactory_IntroLogo} [AdMovie]Uses:1 31 32 34 35
Symbol 37 Bitmap {MyFactory_mailto_off_PNG}
Symbol 38 Bitmap {MyFactory_GameName_PNG}
Symbol 39 Bitmap {MyFactory_LoadingImage_PNG}
Symbol 40 Bitmap {MyFactory_mailto_on_PNG}
Symbol 41 Bitmap {MyFactory_sponsorLable_PNG}
Symbol 42 Sound {Engine.Sprites.Sound.EngineSound_l_p_Cls} [Engine.Sprites.Sound.EngineSound_l_p_Cls]
Symbol 43 Sound {Engine.Sprites.Sound.EngineSound_g_Cls} [Engine.Sprites.Sound.EngineSound_g_Cls]
Symbol 44 Sound {Engine.Sprites.Sound.EngineSound_a_g_Cls} [Engine.Sprites.Sound.EngineSound_a_g_Cls]
Symbol 45 Sound {Engine.Sprites.Sound.EngineSound_l_f_Cls} [Engine.Sprites.Sound.EngineSound_l_f_Cls]
Symbol 46 Sound {Engine.Sprites.Sound.EngineSound_g_n_Cls} [Engine.Sprites.Sound.EngineSound_g_n_Cls]
Symbol 47 Sound {Engine.Sprites.Sound.EngineSound_a_a_Cls} [Engine.Sprites.Sound.EngineSound_a_a_Cls]
Symbol 48 Sound {Engine.Sprites.Sound.EngineSound_s_a_Cls} [Engine.Sprites.Sound.EngineSound_s_a_Cls]
Symbol 49 Sound {Engine.Sprites.Sound.EngineSound_a_d_Cls} [Engine.Sprites.Sound.EngineSound_a_d_Cls]
Symbol 50 Sound {Engine.Sprites.Sound.EngineSound_w_g_Cls} [Engine.Sprites.Sound.EngineSound_w_g_Cls]
Symbol 51 Sound {Engine.Sprites.Sound.EngineSound_l_t_Cls} [Engine.Sprites.Sound.EngineSound_l_t_Cls]
Symbol 52 ShapeTweeningUsed by:56
Symbol 53 ShapeTweeningUsed by:56
Symbol 54 GraphicUsed by:56
Symbol 55 GraphicUsed by:56
Symbol 56 MovieClip {Interface.Sprites.UserInterface_bee_swf} [GameBeeAd]Uses:5 9 14 21 26 52 53 54 55
Symbol 57 Bitmap {Engine.Sprites.Objects.MushroomSprite_2_AppleSimpl_Asset}
Symbol 58 Bitmap {Engine.Sprites.Sticks.StickSprite_type4_AppleSimpl_Asset}
Symbol 59 Bitmap {Interface.Sprites.UserInterface_Garage_button_Exit_selected_Asset}
Symbol 60 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s4_Asset}
Symbol 61 Bitmap {Engine.Sprites.Aminals.Animal3_Health_2_right_Asset}
Symbol 62 Bitmap {Interface.Sprites.UserInterface_MainMenu_LINK2_off_Asset}
Symbol 63 Bitmap {Engine.Sprites.Aminals.Animal3_Apple_1_Asset}
Symbol 64 Bitmap {Engine.Sprites.TheTree_buttonRetry_selected_Asset}
Symbol 65 Bitmap {Engine.Sprites.apples.AppleCrushClip_Frame_1_Asset}
Symbol 66 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_NEXT_Asset}
Symbol 67 Bitmap {Engine.Sprites.TheTree_buttonRetry_Asset}
Symbol 68 Bitmap {Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_3_Asset}
Symbol 69 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_9_Asset}
Symbol 70 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_1_selected_Asset}
Symbol 71 Bitmap {Interface.Sprites.UserInterface_MainMenu_LINK1_off_Asset}
Symbol 72 Bitmap {Engine.Sprites.Aminals.Animal2_Apple_2_Asset}
Symbol 73 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_3_left_Asset}
Symbol 74 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_1_left_Asset}
Symbol 75 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_6_Asset}
Symbol 76 Bitmap {Interface.Sprites.UserInterface_MainMenu_dialog_Asset}
Symbol 77 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_6_left_Asset}
Symbol 78 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_NEXT_glow_Asset}
Symbol 79 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_0_4_Asset}
Symbol 80 Bitmap {Engine.Sprites.Objects.NestSprite_AppleSimpl_Asset}
Symbol 81 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_2_left_Asset}
Symbol 82 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_apple_Asset}
Symbol 83 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_GO_glow_Asset}
Symbol 84 Bitmap {Engine.Sprites.Aminals.Animal2_Health_1_right_Asset}
Symbol 85 Bitmap {Engine.Sprites.TheTree_buttonON_Asset}
Symbol 86 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s3_Asset}
Symbol 87 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_3_Asset}
Symbol 88 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s5_Asset}
Symbol 89 Bitmap {Engine.Sprites.apples.CAppleSprite_AppleSimpl_Asset}
Symbol 90 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_1_Asset}
Symbol 91 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_11_Asset}
Symbol 92 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_4_Asset}
Symbol 93 Bitmap {Interface.Sprites.AS_Tutorial_TutorialNextButtonOFF_Asset}
Symbol 94 Font {AS_09_font1}
Symbol 95 Bitmap {Engine.Sprites.TheTree_buttonExit_Asset}
Symbol 96 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_1_left_Asset}
Symbol 97 Bitmap {Engine.Sprites.Sticks.Tube_AppleSimpl_Asset}
Symbol 98 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_5_selected_Asset}
Symbol 99 Bitmap {Interface.Sprites.UserInterface_Garage_button_Buy_selected_Asset}
Symbol 100 Bitmap {Interface.Sprites.UserInterface_MainMenu_PLAY_on_Asset}
Symbol 101 Bitmap {Interface.Sprites.UserInterface_MainMenu_LINK2_on_Asset}
Symbol 102 Bitmap {Interface.Sprites.UserInterface_Garage_dialog_Asset}
Symbol 103 Bitmap {Engine.Sprites.Aminals.Animal3_Apple_2_Asset}
Symbol 104 Bitmap {Engine.Sprites.Sticks.StickSprite_type1_AppleSimpl_Asset}
Symbol 105 Bitmap {Engine.Sprites.apples.CAppleSprite_type5_FrameDie_1_Asset}
Symbol 106 Bitmap {Engine.Sprites.Aminals.Animal3_Apple_3_Asset}
Symbol 107 Bitmap {Engine.Sprites.apples.CAppleSprite2_AppleSimpl_Asset}
Symbol 108 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s4_Asset}
Symbol 109 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_2_right_Asset}
Symbol 110 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_8_Asset}
Symbol 111 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_10_Asset}
Symbol 112 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_0_Asset}
Symbol 113 Bitmap {Engine.Sprites.Aminals.Animal3_Apple_4_Asset}
Symbol 114 Bitmap {Engine.Sprites.apples.AppleCrushClip_Frame_3_Asset}
Symbol 115 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_13_Asset}
Symbol 116 Bitmap {Engine.Sprites.TheTree_buttonON_selected_Asset}
Symbol 117 Bitmap {Interface.Sprites.UserInterface_MainMenu_Sponsor_off_Asset}
Symbol 118 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s0_Asset}
Symbol 119 Bitmap {Engine.Sprites.apples.CAppleSprite_type4_AppleSimpl_Asset}
Symbol 120 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_0_2_Asset}
Symbol 121 Bitmap {Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_2_Asset}
Symbol 122 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_3_Asset}
Symbol 123 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_5_right_Asset}
Symbol 124 Bitmap {Interface.Sprites.UserInterface_WinGame_dialog_Asset}
Symbol 125 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_1_right_Asset}
Symbol 126 Font {AS_09_font2}
Symbol 127 Bitmap {Interface.Sprites.UserInterface_MainMenu_LINK1_on_Asset}
Symbol 128 Bitmap {Engine.Sprites.Aminals.Animal2_Health_1_left_Asset}
Symbol 129 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_2_selected_Asset}
Symbol 130 Bitmap {Engine.Sprites.TheTree_buttonExit_selected_Asset}
Symbol 131 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_1_HA_Asset}
Symbol 132 Bitmap {Engine.Sprites.Aminals.Animal3_Health_1_left_Asset}
Symbol 133 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_GARAGE_glow_Asset}
Symbol 134 Bitmap {Engine.Sprites.TheTree_buttonOFF_Asset}
Symbol 135 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_GO_Asset}
Symbol 136 Bitmap {Engine.Sprites.Objects.BoxWithApples_Apple_Asset}
Symbol 137 Bitmap {Interface.Sprites.UserInterface_Garage_button_Buy_Asset}
Symbol 138 Bitmap {Interface.Sprites.UserInterface_MainMenu_PLAY_off_Asset}
Symbol 139 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_7_Asset}
Symbol 140 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_4_Asset}
Symbol 141 Bitmap {Engine.Sprites.Objects.BoxWithApples_Box_Asset}
Symbol 142 Bitmap {Engine.Sprites.apples.CAppleSprite1_AppleSimpl_Asset}
Symbol 143 Bitmap {Engine.Sprites.oldman.OldMan_Frame_3_Asset}
Symbol 144 Bitmap {Engine.Sprites.TheTree_SponsorLink_off_PNG}
Symbol 145 Bitmap {Interface.Sprites.AS_Tutorial_EmptyFrame_Asset}
Symbol 146 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s1_Asset}
Symbol 147 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_2_right_Asset}
Symbol 148 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_0_3_Asset}
Symbol 149 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_6_Asset}
Symbol 150 Bitmap {Interface.Sprites.UserInterface_upgrade_link_PNG}
Symbol 151 Bitmap {Engine.Sprites.apples.CAppleSprite_type5_FrameDie_2_Asset}
Symbol 152 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_4_right_Asset}
Symbol 153 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_3_right_Asset}
Symbol 154 Bitmap {Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_1_Asset}
Symbol 155 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s0_Asset}
Symbol 156 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_GARAGE_Asset}
Symbol 157 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_2_Asset}
Symbol 158 Bitmap {Engine.Sprites.apples.CAppleSprite3_AppleSimpl_Asset}
Symbol 159 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_12_Asset}
Symbol 160 Bitmap {Engine.Sprites.Aminals.Animal3_Health_2_left_Asset}
Symbol 161 Bitmap {Interface.Sprites.UserInterface_MainMenu_LINK1_off_disabled_Asset}
Symbol 162 Bitmap {Engine.Sprites.Sticks.StickSprite_type3_AppleSimpl_Asset}
Symbol 163 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_back_Asset}
Symbol 164 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_4_left_Asset}
Symbol 165 Bitmap {Engine.Sprites.TheTree_buttonOFF_selected_Asset}
Symbol 166 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_1_right_Asset}
Symbol 167 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_2_right_Asset}
Symbol 168 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s5_Asset}
Symbol 169 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_3_right_Asset}
Symbol 170 Bitmap {Interface.Sprites.UserInterface_Garage_button_Buy_disabled_Asset}
Symbol 171 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_2_Asset}
Symbol 172 Bitmap {Engine.Sprites.Objects.MushroomSprite_AppleSimpl_Asset}
Symbol 173 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s6_Asset}
Symbol 174 Bitmap {Engine.Sprites.Sticks.StickSprite_type6_AppleSimpl_Asset}
Symbol 175 Bitmap {Interface.Sprites.UserInterface_ChooseLevel_lafler_Asset}
Symbol 176 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s3_Asset}
Symbol 177 Bitmap {Engine.Sprites.Aminals.Animal1_Apple_1_Asset}
Symbol 178 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_1_right_Asset}
Symbol 179 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_6_right_Asset}
Symbol 180 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s1_Asset}
Symbol 181 Bitmap {Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_2_Asset}
Symbol 182 Bitmap {Engine.Sprites.Aminals.Animal3_Health_1_right_Asset}
Symbol 183 Bitmap {Engine.Sprites.TheTree_SponsorLink_on_PNG}
Symbol 184 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_3_right_Asset}
Symbol 185 Bitmap {Interface.Sprites.UserInterface_Garage_button_Exit_Asset}
Symbol 186 Bitmap {Engine.Sprites.Aminals.Animal3_Frame_3_left_Asset}
Symbol 187 Bitmap {Engine.Sprites.Sticks.StickSprite_type2_AppleSimpl_Asset}
Symbol 188 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_2_left_Asset}
Symbol 189 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_1_Asset}
Symbol 190 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_2_left_Asset}
Symbol 191 Bitmap {Engine.Sprites.oldman.OldMan_Frame_1_s2_Asset}
Symbol 192 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_1_left_Asset}
Symbol 193 Bitmap {Interface.Sprites.UserInterface_MainMenu_Sponsor_on_Asset}
Symbol 194 Bitmap {Engine.Sprites.Aminals.Animal2_Frame_3_left_Asset}
Symbol 195 Bitmap {Interface.Sprites.AS_Tutorial_TutorialNextButtonON_Asset}
Symbol 196 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_5_Asset}
Symbol 197 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_4_selected_Asset}
Symbol 198 Bitmap {Engine.Sprites.Objects.BoxWithApples_Box_Top_Asset}
Symbol 199 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_3_selected_Asset}
Symbol 200 Bitmap {Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_1_Asset}
Symbol 201 Bitmap {Engine.Sprites.TheTree_AppleSimpl_Asset}
Symbol 202 Bitmap {Engine.Sprites.apples.AppleCrushClip_Frame_2_Asset}
Symbol 203 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s6_Asset}
Symbol 204 Bitmap {Engine.Sprites.oldman.OldMan_Frame_2_s2_Asset}
Symbol 205 Bitmap {Interface.Sprites.UserInterface_Garage_button_Stick_6_selected_Asset}
Symbol 206 Bitmap {Interface.Sprites.AS_Tutorial_TutorialExitButtonON_Asset}
Symbol 207 Bitmap {Engine.Sprites.Aminals.Animal1_Frame_5_left_Asset}
Symbol 208 Bitmap {Interface.Sprites.AS_Tutorial_TutorialExitButtonOFF_Asset}
Symbol 209 Bitmap {Interface.Sprites.AS_Tutorial_WGFrame_5_Asset}

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1459 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 36 as "AdMovie"
ExportAssets (56)Timeline Frame 2Symbol 42 as "Engine.Sprites.Sound.EngineSound_l_p_Cls"
ExportAssets (56)Timeline Frame 2Symbol 43 as "Engine.Sprites.Sound.EngineSound_g_Cls"
ExportAssets (56)Timeline Frame 2Symbol 44 as "Engine.Sprites.Sound.EngineSound_a_g_Cls"
ExportAssets (56)Timeline Frame 2Symbol 45 as "Engine.Sprites.Sound.EngineSound_l_f_Cls"
ExportAssets (56)Timeline Frame 2Symbol 46 as "Engine.Sprites.Sound.EngineSound_g_n_Cls"
ExportAssets (56)Timeline Frame 2Symbol 47 as "Engine.Sprites.Sound.EngineSound_a_a_Cls"
ExportAssets (56)Timeline Frame 2Symbol 48 as "Engine.Sprites.Sound.EngineSound_s_a_Cls"
ExportAssets (56)Timeline Frame 2Symbol 49 as "Engine.Sprites.Sound.EngineSound_a_d_Cls"
ExportAssets (56)Timeline Frame 2Symbol 50 as "Engine.Sprites.Sound.EngineSound_w_g_Cls"
ExportAssets (56)Timeline Frame 2Symbol 51 as "Engine.Sprites.Sound.EngineSound_l_t_Cls"
ExportAssets (56)Timeline Frame 2Symbol 56 as "GameBeeAd"
EnableDebugger2 (64)Timeline Frame 131 bytes "u.$1$0X$1saeFZSfJbIm6DtJcgjGA.."
DebugMX1 (63)Timeline Frame 1
SerialNumber (41)Timeline Frame 1

Labels

"MyFactory"Frame 1
"AS_09"Frame 2




http://swfchan.com/22/108068/info.shtml
Created: 10/8 -2019 11:49:41 Last modified: 10/8 -2019 11:49:41 Server time: 14/11 -2024 17:31:27