Flash CS3 文档 |
|||
| ActionScript 3.0 编程 > 处理几何结构 > 使用 Rectangle 对象 | |||
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 对象的 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=30, y=20, w=70, h=30)
同样,如下面的示例所示,如果更改 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 的值作为参数。
可以使用 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 对象可用于以下方法和属性:
|
类 |
方法或属性 |
描述 |
|---|---|---|
|
BitmapData |
|
用作某些参数的类型以定义 BitmapData 对象的区域。 |
|
DisplayObject |
|
用作属性的数据类型或返回的数据类型。 |
|
PrintJob |
|
用于定义 |
|
Sprite |
|
用于定义 |
|
TextField |
|
用作返回值类型。 |
|
Transform |
|
用作数据类型。 |
Flash CS3
当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000187.html