English 中文(简体)
AS3 - bug in Rectangle.inflatePoint() - doesn t deal with negative coordinates well
原标题:

this seems a bit nutty:

var r:Rectangle = new Rectangle();
trace("initial rect: " + r);        // (x=0, y=0, w=0, h=0)

var p:Point = new Point(-5, -3);    // (x=-5, y=-3)
trace("point: " + p);

r.inflatePoint(p);
trace("inflated rect: " + r);       // (x=5, y=3, w=-10, h=-6)

i would expect the result to be (x=-5, y=-3, width=5, height=3).

here s an implementation that returns the expected result:

public static function inflateRectByPoint(r:Rectangle,p:Point):void
{
 var d:Number;

 d = p.x - r.x;
 if (d < 0)
 {
  r.x      += d;
  r.width  -= d;
 }
 else if (d > r.width)
 {
  r.width = d;
 }

 d = p.y - r.y;
 if (d < 0)
 {
  r.y      += d;
  r.height -= d;
 }
 else if (d > r.height)
 {
  r.height = d;
 }
}
问题回答

You re misunderstanding what inflatePoint does.

It s the same as inflate (except taking a Point argument rather than two coordinates) - enlarges the rectangle in every direction.

new Rectangle(0, 0, 2, 5).inflatePoint(new Point(2, 2))

Results in a Rectangle from -2, -2 to 4, 7.

Putting in negative numbers shrinks the rectangle - until it gets smaller than 0, at which point it inverts, as expected.





相关问题
Attaching a property to an event in Flex/AS3

I have a parameter that needs to be passed along with an event. After unsuccessful attempts to place it on the type by extending the class, I ve been advised in another SO question to write a custom ...

Sorting twodimensional Array in AS3

So, i have a two-dimensional Array of ID s and vote count - voteArray[i][0] = ID, voteArray[i][1] = vote count I want the top 3 voted items to be displayed in different colors, so i have a 2nd Array -...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

What s a good way of deserializing data into mock objects?

I m writing a mock backend service for my flex application. Because I will likely need to add/edit/modify the mock data over time, I d prefer not to generate the data in code like this: var mockData =...

AS3 try/catch out of memory

I m loading a few huge images on my flex/as3 app, but I can t manage to catch the error when the flash player runs out of memory. Here is the what I was thinking might work (I use ???? because i dont ...

热门标签