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

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;