Panoramowanie i przewijanie obiektów wyświetlanychFlash 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 Zapisywanie obiektów wyświetlanych w pamięci podręcznej. |
|