In some situation you would like to reassure that given Rectangle object have “top-down, left-right” order you can do it using following two snippets
this creates “normalized” copy of the given rectangle
/** * Takes rectangle as a parameter and returns new with sorted edges, i.e. (x=50, y=50, w=-100, h=-100) becomes (x=-50, y=-50, w=100, h=100). In other words it makes sure that rectangles top and left are smaller than bottom and right respectively. * * @param p_oRect * @return */ protected function normalizeRect(p_oRect:Rectangle):Rectangle { var nr:Rectangle = new Rectangle(); nr.top = Math.min(p_oRect.top, p_oRect.bottom); nr.bottom = Math.max(p_oRect.top, p_oRect.bottom); nr.left = Math.min(p_oRect.left, p_oRect.right); nr.right = Math.max(p_oRect.left, p_oRect.right); return nr; }
this modifies given rectangle directly
/** * Modifies the rectangle given in parameter and makes sure that edges are sorted, i.e. (x=50, y=50, w=-100, h=-100) becomes (x=-50, y=-50, w=100, h=100). In other words it makes sure that rectangles top and left are smaller than bottom and right respectively. * This method works directly on the object without making a copy. * @param p_oRectRef */ protected function normalizeRectV2(p_oRectRef:Rectangle):void { var _nSwap:Number; _nSwap = p_oRectRef.top; p_oRectRef.top = Math.min(_nSwap, p_oRectRef.bottom); p_oRectRef.bottom = Math.max(_nSwap, p_oRectRef.top); _nSwap = p_oRectRef.left; p_oRectRef.left = Math.min(_nSwap, p_oRectRef.right); p_oRectRef.right = Math.max(_nSwap, p_oRectRef.left); }