滚动位图

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

设想您创建了一个街道图应用程序,每次用户移动该图时,都需要您更新视图(即使该图只移动了几个像素)。

创建此功能的一种方式是,每次用户移动街道图时,均重新呈示包含更新的街道图视图的新图像。或者,创建一个大型图像,并使用 scroll() 方法。

scroll() 方法可以复制屏幕上的位图,然后将它粘贴到由 (x, y) 参数指定的新偏移位置。如果位图的一部分恰巧在舞台以外,则会产生图像发生移位的效果。与计时器函数(或 enterFrame 事件)配合使用时,可以使图像呈示动画或滚动效果。

以下示例采用前面的 Perlin 杂点示例并生成较大的位图图像(其四分之三呈示在舞台外面)。然后应用 scroll() 方法和一个 enterFrame 事件侦听器,使图像在对角线向下方向偏移一个像素。每次进入帧时均会调用此方法,因此,随着图像向下滚动,图像位于屏幕以外的部分会呈现在舞台上。

import flash.display.Bitmap; 
import flash.display.BitmapData; 
 
var myBitmapDataObject:BitmapData = new BitmapData(1000, 1000, false, 0x00FF0000); 
var seed:Number = Math.floor(Math.random() * 100); 
var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE; 
myBitmapDataObject.perlinNoise(100, 80, 6, seed, false, true, channels, false, null); 
 
var myBitmap:Bitmap = new Bitmap(myBitmapDataObject); 
myBitmap.x = -750; 
myBitmap.y = -750; 
addChild(myBitmap); 
 
addEventListener(Event.ENTER_FRAME, scrollBitmap); 
 
function scrollBitmap(event:Event):void 
{ 
    myBitmapDataObject.scroll(1, 1); 
}