处理大小和缩放对象Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 有两种方式可测量和操作显示对象的大小:使用尺寸属性(width 和 height)或缩放属性(scaleX 和 scaleY)。 每个显示对象都有 width 属性和 height 属性,它们最初设置为对象的大小,以像素为单位。您可以通过读取这些属性的值来确定显示对象的大小。还可以指定新值来更改对象的大小,如下所示: // Resize a display object. square.width = 420; square.height = 420; // Determine the radius of a circle display object. var radius:Number = circle.width / 2; 更改显示对象的 height 或 width 会导致缩放对象,这意味着对象内容将经过伸展或挤压以适合新区域的大小。如果显示对象仅包含矢量形状,将按新缩放比例重绘这些形状,而品质不变。此时将缩放显示对象中的所有位图图形元素,而不是重绘。例如,缩放图形时,如果数码照片的宽度和高度增加后超出图像中像素信息的实际大小,数码照片将被像素化,使数码照片显示带有锯齿。 当更改显示对象的 width 或 height 属性时,Flash Player 和 AIR 也会更新对象的 scaleX 和 scaleY 属性。 注: TextField 对象是此缩放行为的例外。文本字段需要调整自身大小,以适应文本自动换行和字体大小,因此文本字段在调整大小之后将其 scaleX 或 scaleY 值重置为 1。但是,如果调整 TextField 对象的 scaleX 或 scaleY 值,则宽度和高度值会更改,以适应您提供的缩放值。
这些属性表示显示对象与其原始大小相比的相对大小。scaleX 和 scaleY 属性使用小数(十进制)值来表示百分比。例如,如果某个显示对象的 width 已更改,其宽度是原始大小的一半,则该对象的 scaleX 属性的值为 .5,表示 50%。如果其高度加倍,则其 scaleY 属性的值为 2,表示 200%。 // circle is a display object whose width and height are 150 pixels. // At original size, scaleX and scaleY are 1 (100%). trace(circle.scaleX); // output: 1 trace(circle.scaleY); // output: 1 // When you change the width and height properties, // Flash Player changes the scaleX and scaleY properties accordingly. circle.width = 100; circle.height = 75; trace(circle.scaleX); // output: 0.6622516556291391 trace(circle.scaleY); // output: 0.4966887417218543 此时,大小更改不成比例。换句话说,如果更改一个正方形的 height 但不更改其 width,则其边长不再相同,它将是一个矩形而不是一个正方形。如果要更改显示对象的相对大小,则可以通过设置 scaleX 和 scaleY 属性的值来调整该对象的大小,另一种方法是设置 width 或 height 属性。例如,下面的代码将更改名为 square 的显示对象的 width,然后更改垂直缩放 (scaleY) 以匹配水平缩放,所以正方形的大小成比例。 // Change the width directly. square.width = 150; // Change the vertical scale to match the horizontal scale, // to keep the size proportional. square.scaleY = square.scaleX; |
|