Если у вас есть экранный объект, который является слишком большим для области, в которой его требуется показать, можно воспользоваться свойством
scrollRect
для определения видимой области экранного объекта. Кроме того, путем изменения свойства
scrollRect
в ответ на данные, введенные пользователем, можно включить панорамирование содержимого влево или вправо, а также прокрутку вверх и вниз.
Свойство
scrollRect
является экземпляром класса Rectangle. В этом классе сочетаются значения, которые необходимы для определения прямоугольной области в качестве единичного объекта. Чтобы определить вначале видимую область экранного объекта, создайте новый экземпляр Rectangle и присвойте его свойству
scrollRect
экранного объекта. Впоследствии для панорамирования или прокрутки свойство
scrollRect
считывается и заносится в отдельную переменную Rectangle. Требуемое свойство изменяется (например, измените свойство
x
экземпляра Rectangle, чтобы выполнить панорамирование, или свойство
y
, чтобы выполнить прокрутку). Затем необходимо переназначить экземпляр Rectangle свойству
scrollRect
, чтобы сообщить объекту об изменении значения.
Например, следующий код определяет обозримую область для объекта TextField с именем
bigText
, который слишком высок, чтобы вместиться в границы SWF-файла. При нажатии двух кнопок (
up
и
down
) они вызывают функции, отвечающие за прокрутку содержимого объекта TextField вверх и вниз путем изменения свойства
y
экземпляра 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);
Как показано в этом примере, при работе со свойством
scrollRect
экранного объекта лучше всего указать, что Flash Player или AIR должны кэшировать содержимое объекта в качестве растрового изображения с помощью свойства
cacheAsBitmap
. При этом Flash Player и AIR не требуется повторно отрисовывать все содержимое экранного объекта после каждой прокрутки. Вместо этого можно использовать кэшированное растровое изображение, чтобы визуализировать необходимую часть напрямую на экран. Сведения см. в разделе «
Кэширование экранных объектов
».