Изменение размера и масштабирование объектов

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 до единицы. Однако при изменении значений scaleX или scaleY объекта TextField значения width и height (ширина и высота) также изменяются, чтобы применить заданные значения масштабирования.

Эти свойства отражают относительный размер экранного объекта в сравнении с его исходным размером. Свойства 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 . Например, этот код изменяет свойство width экранного объекта square , а затем изменяет масштаб по вертикали ( 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;