如果显示对象太大,不能在要显示它的区域中完全显示出来,则可以使用
scrollRect
属性定义显示对象的可查看区域。此外,通过更改
scrollRect
属性响应用户输入,可以使内容左右平移或上下滚动。
scrollRect
属性是 Rectangle 类的实例,Rectangle 类包括将矩形区域定义为单个对象所需的有关值。最初定义显示对象的可查看区域时,请创建一个新的 Rectangle 实例并为该实例分配显示对象的
scrollRect
属性。以后进行滚动或平移时,请将
scrollRect
属性读入单独的 Rectangle 变量,然后更改所需的属性(例如,更改 Rectangle 实例的
x
属性进行平移,或更改
y
属性进行滚动)。然后将该 Rectangle 实例重新分配给
scrollRect
属性,将更改的值通知显示对象。
例如,下面的代码定义名为
bigText
的 TextField 对象的可查看区域,该对象因太高而无法容纳在 SWF 文件的边界内。单击名为
up
和
down
的两个按钮时,它们调用的函数通过修改
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 就不必重绘显示对象的整个内容,而只需改用缓存的位图即可将所需部分直接呈示到屏幕上。有关详细信息,请参阅
缓存显示对象
。