Desplazamiento lateral y vertical de objetos de visualización

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

Si un objeto de visualización es demasiado grande para el área donde se desea mostrar, se puede utilizar la propiedad scrollRect para definir el área visualizable del objeto de visualización. Además, si se cambia la propiedad scrollRect como respuesta a la entrada del usuario, se puede desplazar el contenido horizontal o verticalmente.

La propiedad scrollRect es una instancia de la clase Rectangle, que es una clase que combina los valores necesarios para definir un área rectangular como un solo objeto. Para definir inicialmente el área visualizable del objeto de visualización, se debe crear una nueva instancia de Rectangle y asignarla a la propiedad scrollRect del objeto de visualización. Posteriormente, para el desplazamiento vertical u horizontal, se lee la propiedad scrollRect en una variable Rectangle independiente y se cambia la propiedad deseada (por ejemplo, la propiedad x de la instancia de Rectangle para el desplazamiento horizontal o la propiedad y para el desplazamiento vertical). A continuación, se reasigna dicha instancia de Rectangle a la propiedad scrollRect para notificar el valor cambiado al objeto de visualización.

Por ejemplo, el código siguiente define el área visualizable de un objeto TextField denominado bigText que es demasiado alto para los límites del archivo SWF. Cuando se hace clic en dos botones denominados up y down , se llama a funciones que desplazan verticalmente el contenido del objeto TextField a través de la modificación de la propiedad y de la instancia de 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);

Tal y como se ilustra en este ejemplo, cuando se trabaja con la propiedad scrollRect de un objeto de visualización, es mejor especificar que Flash Player o AIR deben almacenar en caché el contenido del objeto de visualización como un mapa de bits, usando para ello la propiedad cacheAsBitmap . De este modo, Flash Player o AIR no tienen que volver a dibujar todo el contenido del objeto de visualización cada vez que se desplaza verticalmente y, en su lugar, pueden utilizar el mapa de bits almacenado en caché para representar la parte necesaria directamente en pantalla. Para obtener más información, consulte Almacenamiento en caché de los objetos de visualización .