使用 Rectangle 对象Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 Rectangle 对象定义一个矩形区域。Rectangle 对象有具体的位置,该位置由其左上角的 x 和 y 坐标以及 width 属性和 height 属性定义。您可以按照如下方式通过调用 Rectangle() 构造函数来为新 Rectangle 对象定义这些属性: import flash.geom.Rectangle; var rx:Number = 0; var ry:Number = 0; var rwidth:Number = 100; var rheight:Number = 50; var rect1:Rectangle = new Rectangle(rx, ry, rwidth, rheight); 调整 Rectangle 对象的大小和进行重新定位有多种方法调整 Rectangle 对象的大小和进行重新定位。 您可以通过更改 Rectangle 对象的 x 和 y 属性直接重新定位该对象。此更改不会影响 Rectangle 对象的宽度或高度。 import flash.geom.Rectangle; var x1:Number = 0; var y1:Number = 0; var width1:Number = 100; var height1:Number = 50; var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); trace(rect1) // (x=0, y=0, w=100, h=50) rect1.x = 20; rect1.y = 30; trace(rect1); // (x=20, y=30, w=100, h=50) 如下面的代码所示,当更改 Rectangle 对象的 left 或 top 属性时,将重新定位该矩形。矩形的 x 和 y 属性分别与 left 和 top 属性匹配。然而,Rectangle 对象的左下角的位置不发生改变,因此调整了该对象的大小。 import flash.geom.Rectangle; var x1:Number = 0; var y1:Number = 0; var width1:Number = 100; var height1:Number = 50; var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); trace(rect1) // (x=0, y=0, w=100, h=50) rect1.left = 20; rect1.top = 30; trace(rect1); // (x=20, y=30, w=80, h=20) 同样,如下面的示例所示,如果更改 Rectangle 对象的 bottom 或 right 属性,该对象左上角的位置不发生改变。矩形相应地调整了大小: import flash.geom.Rectangle; var x1:Number = 0; var y1:Number = 0; var width1:Number = 100; var height1:Number = 50; var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); trace(rect1) // (x=0, y=0, w=100, h=50) rect1.right = 60; trect1.bottom = 20; trace(rect1); // (x=0, y=0, w=60, h=20) 也可以使用 offset() 方法重新定位 Rectangle 对象,如下所示: import flash.geom.Rectangle; var x1:Number = 0; var y1:Number = 0; var width1:Number = 100; var height1:Number = 50; var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); trace(rect1) // (x=0, y=0, w=100, h=50) rect1.offset(20, 30); trace(rect1); // (x=20, y=30, w=100, h=50) offsetPt() 方法工作方式类似,只不过它是将 Point 对象作为参数,而不是将 x 和 y 偏移量值作为参数。 还可以使用 inflate() 方法调整 Rectangle 对象的大小,该方法包含两个参数,dx 和 dy。dx 参数表示矩形的左侧和右侧距离中心的像素数。dy 参数表示矩形的顶部和底部距离中心的像素数: import flash.geom.Rectangle; var x1:Number = 0; var y1:Number = 0; var width1:Number = 100; var height1:Number = 50; var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); trace(rect1) // (x=0, y=0, w=100, h=50) rect1.inflate(6,4); trace(rect1); // (x=-6, y=-4, w=112, h=58) inflatePt() 方法作方式类似,只不过它是将 Point 对象作为参数,而不是将 dx 和 dy 的值作为参数。 确定 Rectangle 对象的联合和交集可以使用 union() 方法来确定由两个矩形的边界形成的矩形区域: import flash.display.*; import flash.geom.Rectangle; var rect1:Rectangle = new Rectangle(0, 0, 100, 100); trace(rect1); // (x=0, y=0, w=100, h=100) var rect2:Rectangle = new Rectangle(120, 60, 100, 100); trace(rect2); // (x=120, y=60, w=100, h=100) trace(rect1.union(rect2)); // (x=0, y=0, w=220, h=160) 可以使用 intersection() 方法来确定由两个矩形重叠区域形成的矩形区域: import flash.display.*; import flash.geom.Rectangle; var rect1:Rectangle = new Rectangle(0, 0, 100, 100); trace(rect1); // (x=0, y=0, w=100, h=100) var rect2:Rectangle = new Rectangle(80, 60, 100, 100); trace(rect2); // (x=120, y=60, w=100, h=100) trace(rect1.intersection(rect2)); // (x=80, y=60, w=20, h=40) 使用 intersects() 方法查明两个矩形是否相交。也可以使用 intersects() 方法查明显示对象是否在舞台的某个区域中。对于下列代码示例,假设包含 circle 对象的显示对象容器的坐标空间与舞台的坐标空间相同。本示例说明如何使用 intersects() 方法来确定显示对象 circle 是否与由 target1 和 target2 Rectangle 对象定义的指定舞台区域相交: import flash.display.*; import flash.geom.Rectangle; var circle:Shape = new Shape(); circle.graphics.lineStyle(2, 0xFF0000); circle.graphics.drawCircle(250, 250, 100); addChild(circle); var circleBounds:Rectangle = circle.getBounds(stage); var target1:Rectangle = new Rectangle(0, 0, 100, 100); trace(circleBounds.intersects(target1)); // false var target2:Rectangle = new Rectangle(0, 0, 300, 300); trace(circleBounds.intersects(target2)); // true 同样,可以使用 intersects() 方法查明两个显示对象的边界矩形是否重叠。使用 DisplayObject 类的 getRect() 方法来包括显示对象的笔触添加到边界区域的其他任何空间。 Rectangle 对象的其他用法Rectangle 对象可用于以下方法和属性:
|
|