平移和滚动显示对象

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

如果显示对象太大,不能在要显示它的区域中完全显示出来,则可以使用 scrollRect 属性定义显示对象的可查看区域。此外,通过更改 scrollRect 属性响应用户输入,可以使内容左右平移或上下滚动。

scrollRect 属性是 Rectangle 类的实例,Rectangle 类包括将矩形区域定义为单个对象所需的有关值。最初定义显示对象的可查看区域时,请创建一个新的 Rectangle 实例并为该实例分配显示对象的 scrollRect 属性。以后进行滚动或平移时,请将 scrollRect 属性读入单独的 Rectangle 变量,然后更改所需的属性(例如,更改 Rectangle 实例的 x 属性进行平移,或更改 y 属性进行滚动)。然后将该 Rectangle 实例重新分配给 scrollRect 属性,将更改的值通知显示对象。

例如,下面的代码定义名为 bigText 的 TextField 对象的可查看区域,该对象因太高而无法容纳在 SWF 文件的边界内。单击名为 updown 的两个按钮时,它们调用的函数通过修改 scrollRect Rectangle 实例的 y 属性而使 TextField 对象的内容向上或向下滚动。

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 就不必重绘显示对象的整个内容,而只需改用缓存的位图即可将所需部分直接呈示到屏幕上。有关详细信息,请参阅缓存显示对象