Zmiana wielkości i skalowanie obiektów

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Wielkość obiektu wyświetlanego można mierzyć i modyfikować na dwa sposoby: korzystając z właściwości wymiary ( width i height ) lub właściwości skali ( scaleX i scaleY ).

Każdy obiekt wyświetlany ma właściwości width i height , które wstępnie są ustawione na wielkość obiektu w pikselach. Użytkownik może odczytać wartości tych właściwości w celu określenia wielkości obiektu wyświetlanego. Możliwe jest również określenie nowych wartości w celu zmiany wielkości obiektu w następujący sposób:

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

Zmiana właściwości height lub width obiektu wyświetlanego powoduje skalowanie obiektu, co oznacza, że jego treść zostaje rozszerzona lub ściśnięta w celu dostosowania jej do nowego obszaru. Jeśli obiekt wyświetlany zawiera tylko kształty wektorowe, te kształty zostaną narysowane ponownie w nowej skali bez utraty jakości. Elementy bitmapowe obiektu wyświetlanego będą skalowane, a nie rysowane ponownie. Dlatego na przykład zdjęcie cyfrowe, którego wysokość i szerokość zostaną powiększone ponad rzeczywiste wymiary informacji pikselowych na obrazie, nastąpi uwidocznienie poszczególnych pikseli zdjęcia.

Zmiana właściwości width lub height obiektu wyświetlanego powoduje, że program Flash Player lub AIR aktualizuje również właściwości scaleX i scaleY obiektu.

Uwaga: Obiekty TextField są wyjątkiem dla tego zachowania skalowania. Pola tekstowe mogą zmieniać wielkość w celu dostosowania do zawijania tekstu i dostosowania do rozmiarów czcionek, dlatego po zmianie wielkości resetują wartości scaleX lub scaleY do 1. Jeśli jednak wymagane jest dostosowanie wartości scaleX lub scaleY obiektu TextField, wówczas wartość wysokości i szerokości zmienia się w celu dostosowania do określonych wartości skali.

Te właściwości reprezentują względną wielkość obiektu w porównaniu z jego wielkością oryginalną. Właściwości scaleX i scaleY wykorzystują wartości ułamkowe (dziesiętne), które reprezentują wartości procentowe. Na przykład: jeśli wartość width obiektu wyświetlanego zostanie zmieniona w taki sposób, że jego szerokość będzie mniejsza o połowę od szerokości oryginalnej, wówczas właściwość scaleX obiektu będzie miała wartość .5 , czyli 50 procent. Jeśli wysokość obiektu zostanie podwojona, właściwość scaleY będzie miała wartość 2 , co oznacza 200 procent.

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

Zmiany wielkości nie odbywają się proporcjonalnie. Innymi słowy: jeśli zmieniona zostanie właściwość height kwadratu ale nie właściwość width , jego proporcje nie będą takie same, i będzie to prostokąt, a nie kwadrat. Jeśli wymagane jest wprowadzenie względnych zmian, wielkości obiektu wyświetlanego, można ustawić wartości właściwości scaleX i scaleY w celu zmiany wielkości obiektu, co stanowi alternatywę dla zmiany właściwości width i height . Na przykład: poniższy kod zmienia właściwość width obiektu wyświetlanego o nazwie square , a następnie modyfikuje skalę pionową ( scaleY ) w celu dostosowania jej do skali poziomej, dzięki czemu po zmianie rozmiaru kwadrat zachowa proporcje.

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