0

これは少しおかしいようです:

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)

結果は(x = -5、y = -3、幅= 5、高さ= 3)になると思います。

期待される結果を返す実装は次のとおりです。

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;
 }
}
4

1 に答える 1

3

あなたは何をするのか誤解してinflatePointいます。

inflateこれは(2 つの座標ではなく Point 引数を取ることを除いて)と同じです - 四角形をあらゆる方向に拡大します。

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

-2, -2からまでの Rectangle になり4, 7ます。

負の数を入力すると、四角形が縮小されます - 0 より小さくなるまで、期待どおりに反転します。

于 2010-01-25T22:13:23.523 に答える