Панорамирование и прокрутка экранных объектов

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Если у вас есть экранный объект, который является слишком большим для области, в которой его требуется показать, можно воспользоваться свойством 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 не требуется повторно отрисовывать все содержимое экранного объекта после каждой прокрутки. Вместо этого можно использовать кэшированное растровое изображение, чтобы визуализировать необходимую часть напрямую на экран. Сведения см. в разделе « Кэширование экранных объектов ».