Manipolazione delle dimensioni e modifica in scala degli oggetti

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Potete misurare e manipolare le dimensioni di un oggetto di visualizzazione in due diversi modi, mediante le proprietà delle dimensioni ( width e height ) o le proprietà delle modifiche in scala ( scaleX e scaleY ).

Ogni oggetto di visualizzazione presenta una proprietà width e una proprietà height , inizialmente impostate sulle dimensioni dell'oggetto in pixel. È possibile leggere i valori di tali proprietà per misurare le dimensioni dell'oggetto di visualizzazione. Potete, inoltre, specificare nuovi valori e modificare le dimensioni dell'oggetto, come segue:

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

La modifica di altezza o larghezza di un oggetto di visualizzazione provoca una variazione in scala dell'oggetto; in altre parole, il contenuto viene ristretto o allargato per rientrare nella nuova area definita. Se l'oggetto di visualizzazione contiene solo forme vettoriali, tali forme vengono ridisegnate in base alla nuova scala, senza alcun peggioramento della qualità. Tutti gli elementi delle immagini bitmap dell'oggetto di visualizzazione vengono modificati in scala, anziché ridisegnati. Di conseguenza, ad esempio, una foto digitale la cui larghezza e altezza vengono incrementate oltre le effettive dimensioni in pixel dell'immagine, viene “pixelizzata” e i suoi contorni risultano irregolari.

Se le proprietà width e height di un oggetto di visualizzazione vengono modificate, Flash Player e AIR aggiornano automaticamente le proprietà scaleX e scaleY dell'oggetto.

Nota: gli oggetti TextField costituiscono un'eccezione a questo comportamento di modifica in scala. I campi di testo devono ridimensionarsi automaticamente per adattarsi alla dimensione del carattere e ai ritorni a capo del testo. Per questo motivo, dopo il ridimensionamento, i valori scaleX e scaleX vengono reimpostati su 1. Se però modificate i valori scaleX e scaleY di un oggetto TextField, i valori relativi a larghezza e altezza vengono modificati per adattarsi ai valori che specificate.

Tali proprietà rappresentano le dimensioni relative dell'oggetto di visualizzazione rispetto alle sue dimensioni originali. Le proprietà scaleX e scaleY impiegano cifre decimali per rappresentare valori percentuali. Se, ad esempio, la proprietà width di un oggetto di visualizzazione viene ridotta della metà rispetto alla sua dimensione originale, la proprietà scaleX dell'oggetto avrà un valore pari a 0,5 , a indicare il 50 percento. Se invece l'altezza viene raddoppiata, la proprietà scaleY avrà il valore 2 , a indicare il 200 percento.

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

Le variazioni delle dimensioni non sono proporzionali. In altre parole, modificando il valore height di un quadrato senza modificare il valore width , le proporzioni della figura non vengono mantenute e il quadrato si trasforma in un rettangolo. Per effettuare modifiche relative alle dimensioni di un oggetto di visualizzazione, impostare i valori delle proprietà scaleX e scaleY per ridimensionare l'oggetto, invece di impostare le proprietà width e height . Il codice seguente, ad esempio, consente di modificare la proprietà width dell'oggetto denominato square , quindi di alterare la scala verticale ( scaleY ) per farla corrispondere a quella orizzontale, in modo da mantenere le corrette proporzioni dell'oggetto.

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