Panoramowanie i przewijanie obiektów wyświetlanych

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

Jeśli istnieje obiekt wyświetlany, który jest zbyt duży dla obszaru, w którym ma zostać wyświetlony, można użyć właściwości scrollRect w celu zdefiniowania widocznego obszaru obiektu wyświetlanego. Ponadto zmiana właściwości scrollRect w odpowiedzi na dane wprowadzone przez użytkownika umożliwia panoramowanie treści w lewo i w prawo lub przewijanie w górę i w dół.

Właściwość scrollRect jest instancją klasy Rectangle, która łączy w sobie wartości wymagane do zdefiniowania prostokąta w postaci pojedynczego obiektu. Aby wstępnie zdefiniować wyświetlany obszar obiektu wyświetlanego, należy utworzyć nową instancję Rectangle i przypisać ją do właściwości scrollRect obiektu wyświetlanego. W celu przewijania lub panoramowania należy wczytać właściwość scrollRect do osobnej zmiennej Rectangle i zmienić żądaną właściwość (np. zmienić właściwość x instancji Rectangle w celu panoramowania lub właściwość y w celu przewijania). Następnie należy ponownie przypisać instancję Rectangle do właściwości scrollRect w celu powiadomienia obiektu wyświetlanego o zmienionej wartości.

Przykład: poniższy kod definiuje obszar wyświetlany obiektu TextField o nazwie bigText , którego wysokość jest zbyt duża i dlatego obiekt nie może zostać dopasowany do krawędzi pliku SWF. Kliknięcie dwóch przycisków o nazwach up i down powoduje wywołanie funkcji, które powodują przewijanie treści obiektu TextField w górę lub w dół poprzez modyfikację właściwości y instancji scrollRect Rectangle.

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

Zgodnie z tym przykładem podczas pracy z właściwością scrollRect obiektu wyświetlanego najlepszą metodą postępowania jest określenie, że program Flash Player lub AIR powinien zapisać w pamięci podręcznej treść obiektu wyświetlanego jako bitmapę, wykorzystując w tym celu właściwość cacheAsBitmap . W takim przypadku program Flash Player lub AIR nie musi ponownie rysować całej treści obiektu wyświetlanego za każdym razem, gdy zostanie on przewinięty — zamiast tego program może użyć bitmapy zapisanej w pamięci podręcznej w celu renderowania żądanej części bezpośrednio na ekranie. Szczegółowe informacje zawiera sekcja Buforowanie obiektów ekranowych .