Manipulación del tamaño y ajuste de escala de los objetos

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

Hay dos formas posibles de medir y manipular el tamaño de un objeto de visualización: con las propiedades de dimensión ( width y height ) o las propiedades de escala ( scaleX y scaleY ).

Cada objeto de visualización tiene una propiedad width y una propiedad height , definidas inicialmente con el tamaño del objeto en píxeles. La lectura de los valores de estas propiedades permite medir el tamaño del objeto de visualización. También es posible especificar nuevos valores para cambiar el tamaño del objeto, como se indica a continuación:

// Resize a display object. 
square.width = 420; 
square.height = 420; 
 
// Determine the radius of a circle display object. 
var radius:Number = circle.width / 2;

Al cambiar la altura ( height ) o anchura ( width ) de un objeto de visualización, se ajusta la escala del objeto, de modo que el contenido del mismo se contrae o expande para ajustarse a la nueva área. Si el objeto de visualización solo contiene formas vectoriales, dichas formas volverán a dibujarse en la nueva escala sin perder la calidad. Los elementos gráficos de mapa de bits del objeto de visualización ajustarán su escala en lugar de dibujarse de nuevo. Así pues, por ejemplo, una foto digital cuya anchura y altura hayan aumentado más allá de las dimensiones reales de la información de píxeles de la imagen aparecerá pixelada y con bordes dentados.

Cuando se cambian las propiedades width o height de un objeto de visualización, Flash Player y AIR actualizan también las propiedades scaleX y scaleY del objeto.

Nota: los objetos TextField son una excepción a este comportamiento de escala. Los campos de texto deben ajustar su tamaño automáticamente para alojar el texto y los tamaños de fuente. Por ello, reajustan sus valores scaleX o scaleY a 1 tras el cambio de tamaño. Sin embargo, si se ajustan los valores scaleX o scaleY de un objeto TextField, los valores de anchura y altura cambian para escalar los valores proporcionados.

Estas propiedades representan el tamaño relativo del objeto de visualización con respecto a su tamaño original. Las propiedades scaleX y scaleY utilizan valores fraccionarios (decimales) para representar el porcentaje. Por ejemplo, si se cambia la anchura ( width ) de un objeto de visualización a la mitad de su tamaño original, la propiedad scaleX del objeto tendrá el valor .5 , que significa 50 por ciento. Si se duplica la altura, la propiedad scaleY tendrá el valor 2 , que significa 200 por ciento.

// 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

Los cambios de tamaño no son proporcionales. Dicho de otro modo, si se cambia la altura ( height ) de un cuadrado pero no la anchura ( width ), ya no tendrá las mismas proporciones y ya no será un cuadrado sino un rectángulo. Si se desea cambiar relativamente el tamaño de un objeto de visualización, se pueden definir los valores de las propiedades scaleX y scaleY para cambiar el tamaño del objeto, en lugar de definir las propiedades width o height . Por ejemplo, este código cambia la anchura ( width ) del objeto de visualización denominado square y luego modifica la escala vertical ( scaleY ) para que coincida con la escala horizontal, de modo que el tamaño del cuadrado siga siendo proporcional.

// 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;