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
.