Se un oggetto di visualizzazione è troppo grande per l'area in cui deve essere visualizzato, potete utilizzare la proprietà
scrollRect
per definire l'area visualizzabile dell'oggetto. Inoltre, modificando la proprietà
scrollRect
in risposta a un input dell'utente, potete fare scorrere il contenuto visualizzato orizzontalmente e verticalmente.
La proprietà
scrollRect
è un'istanza della classe Rectangle, in grado di combinare i valori necessari per definire un'area rettangolare come singolo oggetto. Per definire inizialmente l'area visualizzabile dell'oggetto, create una nuova istanza di Rectangle e assegnatela alla proprietà
scrollRect
dell'oggetto di visualizzazione. Quindi, per fare scorrere l'oggetto, leggete la proprietà
scrollRect
in una variabile Rectangle separata e modificare la proprietà desiderata (ad esempio, modificate la proprietà
x
dell'istanza Rectangle per lo scorrimento orizzontale e la proprietà
y
per lo scorrimento verticale). Infine, riassegnate l'istanza di Rectangle alla proprietà
scrollRect
per notificare all'oggetto di visualizzazione l'avvenuta modifica del valore.
Il codice seguente, ad esempio, definisce l'area visualizzabile di un oggetto TextField denominato
bigText
, troppo grande per rientrare nei limiti fisici del SWF. Quando i due pulsanti denominati
up
e
down
vengono selezionati, essi chiamano funzioni che provocano lo scorrimento dell'oggetto TextField verso l'alto o verso il basso, mediante la modifica della proprietà
y
dell'istanza di Rectangle
scrollRect
.
import flash.events.MouseEvent;
import flash.geom.Rectangle;
// Define the initial viewable area of the TextField instance:
// left: 0, top: 0, width: TextField's width, height: 350 pixels.
bigText.scrollRect = new Rectangle(0, 0, bigText.width, 350);
// Cache the TextField as a bitmap to improve performance.
bigText.cacheAsBitmap = true;
// called when the "up" button is clicked
function scrollUp(event:MouseEvent):void
{
// Get access to the current scroll rectangle.
var rect:Rectangle = bigText.scrollRect;
// Decrease the y value of the rectangle by 20, effectively
// shifting the rectangle down by 20 pixels.
rect.y -= 20;
// Reassign the rectangle to the TextField to "apply" the change.
bigText.scrollRect = rect;
}
// called when the "down" button is clicked
function scrollDown(event:MouseEvent):void
{
// Get access to the current scroll rectangle.
var rect:Rectangle = bigText.scrollRect;
// Increase the y value of the rectangle by 20, effectively
// shifting the rectangle up by 20 pixels.
rect.y += 20;
// Reassign the rectangle to the TextField to "apply" the change.
bigText.scrollRect = rect;
}
up.addEventListener(MouseEvent.CLICK, scrollUp);
down.addEventListener(MouseEvent.CLICK, scrollDown);
Come dimostra l'esempio, quando si lavora con la proprietà
scrollRect
di un oggetto di visualizzazione, è consigliabile fare in modo che Flash Player o AIR memorizzino nella cache il contenuto dell'oggetto di visualizzazione come bitmap, utilizzando la proprietà
cacheAsBitmap.
In tal modo, Flash Player o AIR non devono ridisegnare l'intero contenuto dell'oggetto di visualizzazione ogni volta che viene fatto scorrere e possono invece utilizzare la bitmap memorizzata nella cache per eseguire il rendering della porzione necessaria direttamente sullo schermo. Per maggiori dettagli, vedete la sezione
Memorizzazione nella cache di oggetti di visualizzazione
.