Weergaveobjecten pannen en schuiven

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Als u een weergaveobject hebt dat te groot is voor het gebied waarin u het wilt weergeven, kunt u de eigenschap scrollRect gebruiken om het zichtbare gebied van het weergaveobject te definiëren. Als u de eigenschap scrollRect wijzigt als reactie op de gebruikersuitvoer, kunt u bovendien zorgen dat de inhoud naar links en rechts pant of naar boven en beneden schuift.

De eigenschap scrollRect is een instantie van de klasse Rectangle; dit is een klasse die de waarden combineert die nodig zijn om een rechthoekig gebied als een enkel object te definiëren. Als u het zichtbare gebied van het weergaveobject wilt definiëren, maakt u een nieuwe instantie Rectangle en wijst u deze toe aan de eigenschap scrollRect van het weergaveobject. Als u later wilt schuiven of pannen, leest u de eigenschap scrollRect in een aparte variabele Rectangle in, waarna u de gewenste eigenschap wijzigt (wijzig bijvoorbeeld de eigenschap x van de instantie Rectangle om te pannen of de eigenschap y om te schuiven). Vervolgens wijst u die instantie Rectangle toe aan de eigenschap scrollRect om de gewijzigde waarde aan het weergaveobject te melden.

Met de volgende code wordt bijvoorbeeld het zichtbare gebied gedefinieerd van een object TextField met de naam bigText dat te lang is om tussen de grenzen van het SWF-bestand te passen. Wanneer op de twee knoppen met de naam up en down wordt geklikt, roepen zij functies aan die ervoor zorgen dat de inhoud van het object TextField naar boven of naar beneden schuift door de eigenschap y van de Rectangle-instantie scrollRect te wijzigen.

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

Dit voorbeeld demonstreert dat wanneer u met de eigenschap scrollRect van een weergaveobject werkt, het raadzaam is op te geven dat Flash Player of AIR de inhoud van het weergaveobject met behulp van de eigenschap cacheAsBitmap als bitmap in cache plaatst. Als u dit doet, hoeft Flash Player of AIR niet de gehele inhoud van het weergaveobject opnieuw te tekenen wanneer het object wordt verschoven en kan in plaats hiervan de bitmap in cache worden gebruikt om het benodigde gedeelte direct op het scherm te renderen. Zie Weergaveobjecten in cache plaatsen voor meer informatie.