处理大小和缩放对象

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

有两种方式可测量和操作显示对象的大小:使用尺寸属性(widthheight)或缩放属性(scaleXscaleY)。

每个显示对象都有 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;

更改显示对象的 heightwidth 会导致缩放对象,这意味着对象内容将经过伸展或挤压以适合新区域的大小。如果显示对象仅包含矢量形状,将按新缩放比例重绘这些形状,而品质不变。此时将缩放显示对象中的所有位图图形元素,而不是重绘。例如,缩放图形时,如果数码照片的宽度和高度增加后超出图像中像素信息的实际大小,数码照片将被像素化,使数码照片显示带有锯齿。

当更改显示对象的 widthheight 属性时,Flash Player 和 AIR 也会更新对象的 scaleXscaleY 属性。

注: TextField 对象是此缩放行为的例外。文本字段需要调整自身大小,以适应文本自动换行和字体大小,因此文本字段在调整大小之后将其 scaleX 或 scaleY 值重置为 1。但是,如果调整 TextField 对象的 scaleX 或 scaleY 值,则宽度和高度值会更改,以适应您提供的缩放值。

这些属性表示显示对象与其原始大小相比的相对大小。scaleXscaleY 属性使用小数(十进制)值来表示百分比。例如,如果某个显示对象的 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,则其边长不再相同,它将是一个矩形而不是一个正方形。如果要更改显示对象的相对大小,则可以通过设置 scaleXscaleY 属性的值来调整该对象的大小,另一种方法是设置 widthheight 属性。例如,下面的代码将更改名为 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;